Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
7f3f2da702 | |||
1e60ab375b | |||
98fa607c43 | |||
12b1672e58 | |||
9fca2c3aa4 | |||
5b7d822cfc | |||
ce57478e39 | |||
292c2699ea | |||
afb7fa8e89 | |||
e2c3005a08 |
22813
package-lock.json
generated
22813
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
34
package.json
34
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartfile",
|
"name": "@pushrocks/smartfile",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "8.0.6",
|
"version": "8.0.11",
|
||||||
"description": "offers smart ways to work with files in nodejs",
|
"description": "offers smart ways to work with files in nodejs",
|
||||||
"main": "dist_ts/index.js",
|
"main": "dist_ts/index.js",
|
||||||
"typings": "dist_ts/index.d.ts",
|
"typings": "dist_ts/index.d.ts",
|
||||||
@ -25,25 +25,25 @@
|
|||||||
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@pushrocks/smartfile-interfaces": "^1.0.7",
|
"@pushrocks/smartfile-interfaces": "^1.0.7",
|
||||||
"@pushrocks/smarthash": "^2.1.6",
|
"@pushrocks/smarthash": "^2.1.10",
|
||||||
"@pushrocks/smartjson": "^4.0.3",
|
"@pushrocks/smartjson": "^4.0.6",
|
||||||
"@pushrocks/smartmime": "^1.0.3",
|
"@pushrocks/smartmime": "^1.0.5",
|
||||||
"@pushrocks/smartpath": "^4.0.3",
|
"@pushrocks/smartpath": "^4.0.3",
|
||||||
"@pushrocks/smartpromise": "^3.0.6",
|
"@pushrocks/smartpromise": "^3.1.6",
|
||||||
"@pushrocks/smartrequest": "^1.1.51",
|
"@pushrocks/smartrequest": "^1.1.52",
|
||||||
"@types/fs-extra": "^9.0.1",
|
"@types/fs-extra": "^9.0.13",
|
||||||
"@types/glob": "^7.1.3",
|
"@types/glob": "^7.2.0",
|
||||||
"@types/js-yaml": "^3.12.5",
|
"@types/js-yaml": "^4.0.5",
|
||||||
"fs-extra": "^9.0.1",
|
"fs-extra": "^10.0.0",
|
||||||
"glob": "^7.1.6",
|
"glob": "^7.2.0",
|
||||||
"js-yaml": "^3.14.0"
|
"js-yaml": "^4.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gitzone/tsbuild": "^2.1.25",
|
"@gitzone/tsbuild": "^2.1.28",
|
||||||
"@gitzone/tsrun": "^1.2.12",
|
"@gitzone/tsrun": "^1.2.18",
|
||||||
"@gitzone/tstest": "^1.0.52",
|
"@gitzone/tstest": "^1.0.60",
|
||||||
"@pushrocks/tapbundle": "^3.2.9",
|
"@pushrocks/tapbundle": "^3.2.14",
|
||||||
"@types/node": "^14.11.2",
|
"@types/node": "^16.11.11",
|
||||||
"gulp-function": "^2.2.14",
|
"gulp-function": "^2.2.14",
|
||||||
"tslint": "^6.1.3",
|
"tslint": "^6.1.3",
|
||||||
"tslint-config-prettier": "^1.18.0"
|
"tslint-config-prettier": "^1.18.0"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import * as smartfile from '../ts/index';
|
import * as smartfile from '../ts/index';
|
||||||
import path = require('path');
|
import * as path from 'path';
|
||||||
|
|
||||||
import { expect, tap } from '@pushrocks/tapbundle';
|
import { expect, tap } from '@pushrocks/tapbundle';
|
||||||
|
|
||||||
@ -8,7 +8,9 @@ import { expect, tap } from '@pushrocks/tapbundle';
|
|||||||
// ---------------------------
|
// ---------------------------
|
||||||
|
|
||||||
tap.test('.fs.fileExistsSync -> should return an accurate boolean', async () => {
|
tap.test('.fs.fileExistsSync -> should return an accurate boolean', async () => {
|
||||||
|
// tslint:disable-next-line: no-unused-expression
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/mytest.json')).to.be.true;
|
expect(smartfile.fs.fileExistsSync('./test/testassets/mytest.json')).to.be.true;
|
||||||
|
// tslint:disable-next-line: no-unused-expression
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/notthere.json')).be.false;
|
expect(smartfile.fs.fileExistsSync('./test/testassets/notthere.json')).be.false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
15
test/test.virtualdirectory.ts
Normal file
15
test/test.virtualdirectory.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { tap, expect } from '@pushrocks/tapbundle';
|
||||||
|
|
||||||
|
import * as smartfile from '../ts';
|
||||||
|
|
||||||
|
tap.test('should create a virtualdirectory', async () => {
|
||||||
|
const virtualDir = await smartfile.VirtualDirectory.fromFsDirPath('./test/testassets/testfolder');
|
||||||
|
expect(virtualDir.smartfileArray.length).to.equal(4);
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.test('should write to a directory', async () => {
|
||||||
|
const virtualDir = await smartfile.VirtualDirectory.fromFsDirPath('./test/testassets/testfolder');
|
||||||
|
virtualDir.saveToDisk('./test/testassets/test');
|
||||||
|
});
|
||||||
|
|
||||||
|
tap.start();
|
@ -0,0 +1 @@
|
|||||||
|
okidoks
|
1
test/testassets/test/subfolder/subtestfile.txt
Normal file
1
test/testassets/test/subfolder/subtestfile.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
hi
|
0
test/testassets/test/testfile1.txt
Normal file
0
test/testassets/test/testfile1.txt
Normal file
0
test/testassets/test/testfile2.txt
Normal file
0
test/testassets/test/testfile2.txt
Normal file
@ -4,7 +4,7 @@ import * as SmartfileInterpreter from './smartfile.interpreter';
|
|||||||
import * as SmartfileMemory from './smartfile.memory';
|
import * as SmartfileMemory from './smartfile.memory';
|
||||||
import * as SmartfileRemote from './smartfile.remote';
|
import * as SmartfileRemote from './smartfile.remote';
|
||||||
|
|
||||||
export { Smartfile } from './smartfile.classes.smartfile';
|
export { Smartfile, ISmartfileConstructorOptions } from './smartfile.classes.smartfile';
|
||||||
export { VirtualDirectory } from './smartfile.classes.virtualdirectory';
|
export { VirtualDirectory } from './smartfile.classes.virtualdirectory';
|
||||||
|
|
||||||
export let fs = SmartfileFs;
|
export let fs = SmartfileFs;
|
||||||
|
@ -53,6 +53,10 @@ export class Smartfile extends plugins.smartjson.Smartjson {
|
|||||||
return smartfile;
|
return smartfile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static async fromFoldedJson(foldedJsonArg: string) {
|
||||||
|
return new Smartfile(plugins.smartjson.parse(foldedJsonArg));
|
||||||
|
}
|
||||||
|
|
||||||
// ========
|
// ========
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
// ========
|
// ========
|
||||||
@ -113,19 +117,50 @@ export class Smartfile extends plugins.smartjson.Smartjson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* write file to disk
|
* write file to disk at its original location
|
||||||
* Behaviours:
|
* Behaviours:
|
||||||
* - no argument write to exactly where the file was picked up
|
* - no argument write to exactly where the file was picked up
|
||||||
*/
|
*/
|
||||||
public async write(pathArg?: string) {
|
public async write() {
|
||||||
const stringToWrite = this.contentBuffer.toString();
|
await memory.toFs(this.contentBuffer, this.path);
|
||||||
await memory.toFs(stringToWrite, this.path);
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* writes the file to path given as argument
|
||||||
|
* @param filePathArg
|
||||||
|
*/
|
||||||
|
public async writeToDiskAtPath(filePathArg: string) {
|
||||||
|
if (!plugins.path.isAbsolute(filePathArg)) {
|
||||||
|
filePathArg = plugins.path.join(process.cwd(), filePathArg);
|
||||||
|
}
|
||||||
|
await memory.toFs(this.contentBuffer, filePathArg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* writes the file to a directory combined with the relative path portion
|
||||||
|
* @param dirPathArg
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
public async writeToDir(dirPathArg: string) {
|
||||||
|
dirPathArg = plugins.smartpath.transform.toAbsolute(dirPathArg);
|
||||||
|
const filePath = plugins.path.join(dirPathArg, this.path);
|
||||||
|
await memory.toFs(this.contentBuffer, filePath);
|
||||||
|
return filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* read file from disk
|
* read file from disk
|
||||||
*/
|
*/
|
||||||
public async read() {}
|
public async read() {
|
||||||
|
this.contentBuffer = await fs.toBuffer(this.path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* deletes the file from disk at its original location
|
||||||
|
*/
|
||||||
|
public async delete() {
|
||||||
|
await fs.remove(this.path);
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------
|
// -----------------------------------------------
|
||||||
// vinyl compatibility
|
// vinyl compatibility
|
||||||
|
@ -24,16 +24,16 @@ export class VirtualDirectory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// INSTANCE
|
// INSTANCE
|
||||||
private fileArray: Smartfile[] = [];
|
public smartfileArray: Smartfile[] = [];
|
||||||
|
|
||||||
constructor() {}
|
constructor() {}
|
||||||
|
|
||||||
public addSmartfiles(smartfileArrayArg: Smartfile[]) {
|
public addSmartfiles(smartfileArrayArg: Smartfile[]) {
|
||||||
this.fileArray = this.fileArray.concat(smartfileArrayArg);
|
this.smartfileArray = this.smartfileArray.concat(smartfileArrayArg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getFileByPath(pathArg: string) {
|
public async getFileByPath(pathArg: string) {
|
||||||
for (const smartfile of this.fileArray) {
|
for (const smartfile of this.smartfileArray) {
|
||||||
if (smartfile.path === pathArg) {
|
if (smartfile.path === pathArg) {
|
||||||
return smartfile;
|
return smartfile;
|
||||||
}
|
}
|
||||||
@ -42,10 +42,20 @@ export class VirtualDirectory {
|
|||||||
|
|
||||||
public async toVirtualDirTransferableObject(): Promise<plugins.smartfileInterfaces.VirtualDirTransferableObject> {
|
public async toVirtualDirTransferableObject(): Promise<plugins.smartfileInterfaces.VirtualDirTransferableObject> {
|
||||||
return {
|
return {
|
||||||
files: this.fileArray.map(smartfileArg => smartfileArg.foldToJson())
|
files: this.smartfileArray.map(smartfileArg => smartfileArg.foldToJson())
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async saveToDisk(dirArg: string) {
|
||||||
|
console.log(`writing VirtualDirectory with ${this.smartfileArray.length} to directory:
|
||||||
|
--> ${dirArg}`);
|
||||||
|
for (const smartfileArg of this.smartfileArray) {
|
||||||
|
const filePath = await smartfileArg.writeToDir(dirArg);
|
||||||
|
console.log(`wrote ${smartfileArg.relative} to
|
||||||
|
--> ${filePath}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO implement root shifting to get subdirectories as new virtual directories
|
// TODO implement root shifting to get subdirectories as new virtual directories
|
||||||
// TODO implement root shifting to combine VirtualDirecotries in a parent virtual directory
|
// TODO implement root shifting to combine VirtualDirecotries in a parent virtual directory
|
||||||
}
|
}
|
||||||
|
@ -202,6 +202,10 @@ export const toStringSync = (filePath: string): string => {
|
|||||||
return fileString;
|
return fileString;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const toBuffer = async (filePath: string): Promise<Buffer> => {
|
||||||
|
return plugins.fsExtra.readFile(filePath);
|
||||||
|
};
|
||||||
|
|
||||||
export const toBufferSync = (filePath: string): Buffer => {
|
export const toBufferSync = (filePath: string): Buffer => {
|
||||||
return plugins.fsExtra.readFileSync(filePath);
|
return plugins.fsExtra.readFileSync(filePath);
|
||||||
};
|
};
|
||||||
@ -227,7 +231,7 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri
|
|||||||
if (plugins.path.isAbsolute(miniMatchFilter)) {
|
if (plugins.path.isAbsolute(miniMatchFilter)) {
|
||||||
dirPath = '/';
|
dirPath = '/';
|
||||||
} else {
|
} else {
|
||||||
dirPath = dirPathArg;
|
dirPath = plugins.smartpath.transform.toAbsolute(dirPathArg);
|
||||||
}
|
}
|
||||||
|
|
||||||
const fileTree = await listFileTree(dirPath, miniMatchFilter);
|
const fileTree = await listFileTree(dirPath, miniMatchFilter);
|
||||||
|
@ -10,7 +10,7 @@ export let objectFile = (fileStringArg: string, fileTypeArg) => {
|
|||||||
switch (fileTypeArg) {
|
switch (fileTypeArg) {
|
||||||
case 'yml':
|
case 'yml':
|
||||||
case 'yaml':
|
case 'yaml':
|
||||||
return plugins.yaml.safeLoad(fileStringArg);
|
return plugins.yaml.load(fileStringArg);
|
||||||
case 'json':
|
case 'json':
|
||||||
return JSON.parse(fileStringArg);
|
return JSON.parse(fileStringArg);
|
||||||
default:
|
default:
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
import plugins = require('./smartfile.plugins');
|
import * as plugins from './smartfile.plugins';
|
||||||
import { Smartfile } from './smartfile.classes.smartfile';
|
import { Smartfile } from './smartfile.classes.smartfile';
|
||||||
import * as smartfileFs from './smartfile.fs';
|
import * as smartfileFs from './smartfile.fs';
|
||||||
|
import * as interpreter from './smartfile.interpreter';
|
||||||
import SmartfileInterpreter = require('./smartfile.interpreter');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* converts file to Object
|
* converts file to Object
|
||||||
@ -10,8 +9,8 @@ import SmartfileInterpreter = require('./smartfile.interpreter');
|
|||||||
* @param fileTypeArg
|
* @param fileTypeArg
|
||||||
* @returns {any|any}
|
* @returns {any|any}
|
||||||
*/
|
*/
|
||||||
export let toObject = function (fileStringArg: string, fileTypeArg: string) {
|
export let toObject = (fileStringArg: string, fileTypeArg: string) => {
|
||||||
return SmartfileInterpreter.objectFile(fileStringArg, fileTypeArg);
|
return interpreter.objectFile(fileStringArg, fileTypeArg);
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface IToFsOptions {
|
export interface IToFsOptions {
|
||||||
|
Reference in New Issue
Block a user