Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
7f3f2da702 | |||
1e60ab375b | |||
98fa607c43 | |||
12b1672e58 | |||
9fca2c3aa4 | |||
5b7d822cfc | |||
ce57478e39 | |||
292c2699ea |
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",
|
||||
"private": false,
|
||||
"version": "8.0.7",
|
||||
"version": "8.0.11",
|
||||
"description": "offers smart ways to work with files in nodejs",
|
||||
"main": "dist_ts/index.js",
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
@ -25,25 +25,25 @@
|
||||
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
||||
"dependencies": {
|
||||
"@pushrocks/smartfile-interfaces": "^1.0.7",
|
||||
"@pushrocks/smarthash": "^2.1.6",
|
||||
"@pushrocks/smartjson": "^4.0.3",
|
||||
"@pushrocks/smartmime": "^1.0.3",
|
||||
"@pushrocks/smarthash": "^2.1.10",
|
||||
"@pushrocks/smartjson": "^4.0.6",
|
||||
"@pushrocks/smartmime": "^1.0.5",
|
||||
"@pushrocks/smartpath": "^4.0.3",
|
||||
"@pushrocks/smartpromise": "^3.0.6",
|
||||
"@pushrocks/smartrequest": "^1.1.51",
|
||||
"@types/fs-extra": "^9.0.1",
|
||||
"@types/glob": "^7.1.3",
|
||||
"@types/js-yaml": "^3.12.5",
|
||||
"fs-extra": "^9.0.1",
|
||||
"glob": "^7.1.6",
|
||||
"js-yaml": "^3.14.0"
|
||||
"@pushrocks/smartpromise": "^3.1.6",
|
||||
"@pushrocks/smartrequest": "^1.1.52",
|
||||
"@types/fs-extra": "^9.0.13",
|
||||
"@types/glob": "^7.2.0",
|
||||
"@types/js-yaml": "^4.0.5",
|
||||
"fs-extra": "^10.0.0",
|
||||
"glob": "^7.2.0",
|
||||
"js-yaml": "^4.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@gitzone/tsbuild": "^2.1.25",
|
||||
"@gitzone/tsrun": "^1.2.12",
|
||||
"@gitzone/tstest": "^1.0.52",
|
||||
"@pushrocks/tapbundle": "^3.2.9",
|
||||
"@types/node": "^14.11.2",
|
||||
"@gitzone/tsbuild": "^2.1.28",
|
||||
"@gitzone/tsrun": "^1.2.18",
|
||||
"@gitzone/tstest": "^1.0.60",
|
||||
"@pushrocks/tapbundle": "^3.2.14",
|
||||
"@types/node": "^16.11.11",
|
||||
"gulp-function": "^2.2.14",
|
||||
"tslint": "^6.1.3",
|
||||
"tslint-config-prettier": "^1.18.0"
|
||||
|
@ -1,5 +1,5 @@
|
||||
import * as smartfile from '../ts/index';
|
||||
import path = require('path');
|
||||
import * as path from 'path';
|
||||
|
||||
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 () => {
|
||||
// tslint:disable-next-line: no-unused-expression
|
||||
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;
|
||||
});
|
||||
|
||||
|
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 SmartfileRemote from './smartfile.remote';
|
||||
|
||||
export { Smartfile } from './smartfile.classes.smartfile';
|
||||
export { Smartfile, ISmartfileConstructorOptions } from './smartfile.classes.smartfile';
|
||||
export { VirtualDirectory } from './smartfile.classes.virtualdirectory';
|
||||
|
||||
export let fs = SmartfileFs;
|
||||
|
@ -53,6 +53,10 @@ export class Smartfile extends plugins.smartjson.Smartjson {
|
||||
return smartfile;
|
||||
}
|
||||
|
||||
public static async fromFoldedJson(foldedJsonArg: string) {
|
||||
return new Smartfile(plugins.smartjson.parse(foldedJsonArg));
|
||||
}
|
||||
|
||||
// ========
|
||||
// INSTANCE
|
||||
// ========
|
||||
@ -132,19 +136,31 @@ export class Smartfile extends plugins.smartjson.Smartjson {
|
||||
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) {
|
||||
if (!plugins.path.isAbsolute(dirPathArg)) {
|
||||
dirPathArg = plugins.path.join(process.cwd(), dirPathArg);
|
||||
}
|
||||
const relativePath = this.relative;
|
||||
const filePath = plugins.path.join(dirPathArg, relativePath);
|
||||
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
|
||||
*/
|
||||
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
|
||||
|
@ -24,16 +24,16 @@ export class VirtualDirectory {
|
||||
}
|
||||
|
||||
// INSTANCE
|
||||
private fileArray: Smartfile[] = [];
|
||||
public smartfileArray: Smartfile[] = [];
|
||||
|
||||
constructor() {}
|
||||
|
||||
public addSmartfiles(smartfileArrayArg: Smartfile[]) {
|
||||
this.fileArray = this.fileArray.concat(smartfileArrayArg);
|
||||
this.smartfileArray = this.smartfileArray.concat(smartfileArrayArg);
|
||||
}
|
||||
|
||||
public async getFileByPath(pathArg: string) {
|
||||
for (const smartfile of this.fileArray) {
|
||||
for (const smartfile of this.smartfileArray) {
|
||||
if (smartfile.path === pathArg) {
|
||||
return smartfile;
|
||||
}
|
||||
@ -42,13 +42,17 @@ export class VirtualDirectory {
|
||||
|
||||
public async toVirtualDirTransferableObject(): Promise<plugins.smartfileInterfaces.VirtualDirTransferableObject> {
|
||||
return {
|
||||
files: this.fileArray.map(smartfileArg => smartfileArg.foldToJson())
|
||||
files: this.smartfileArray.map(smartfileArg => smartfileArg.foldToJson())
|
||||
};
|
||||
}
|
||||
|
||||
public async saveToDisk() {
|
||||
for (const smartfileArg of this.fileArray) {
|
||||
|
||||
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}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -202,6 +202,10 @@ export const toStringSync = (filePath: string): string => {
|
||||
return fileString;
|
||||
};
|
||||
|
||||
export const toBuffer = async (filePath: string): Promise<Buffer> => {
|
||||
return plugins.fsExtra.readFile(filePath);
|
||||
};
|
||||
|
||||
export const toBufferSync = (filePath: string): Buffer => {
|
||||
return plugins.fsExtra.readFileSync(filePath);
|
||||
};
|
||||
@ -227,7 +231,7 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri
|
||||
if (plugins.path.isAbsolute(miniMatchFilter)) {
|
||||
dirPath = '/';
|
||||
} else {
|
||||
dirPath = dirPathArg;
|
||||
dirPath = plugins.smartpath.transform.toAbsolute(dirPathArg);
|
||||
}
|
||||
|
||||
const fileTree = await listFileTree(dirPath, miniMatchFilter);
|
||||
|
@ -10,7 +10,7 @@ export let objectFile = (fileStringArg: string, fileTypeArg) => {
|
||||
switch (fileTypeArg) {
|
||||
case 'yml':
|
||||
case 'yaml':
|
||||
return plugins.yaml.safeLoad(fileStringArg);
|
||||
return plugins.yaml.load(fileStringArg);
|
||||
case 'json':
|
||||
return JSON.parse(fileStringArg);
|
||||
default:
|
||||
|
Reference in New Issue
Block a user