Compare commits

...

8 Commits

Author SHA1 Message Date
7f3f2da702 8.0.11 2021-11-30 16:34:36 +01:00
1e60ab375b fix(core): update 2021-11-30 16:34:35 +01:00
98fa607c43 8.0.10 2021-04-26 08:24:36 +00:00
12b1672e58 fix(core): update 2021-04-26 08:24:36 +00:00
9fca2c3aa4 8.0.9 2021-04-07 09:48:54 +00:00
5b7d822cfc fix(core): update 2021-04-07 09:48:54 +00:00
ce57478e39 8.0.8 2020-10-11 15:34:24 +00:00
292c2699ea fix(core): update 2020-10-11 15:34:24 +00:00
13 changed files with 19764 additions and 3160 deletions

22813
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -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"

View File

@ -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;
});

View 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();

View File

@ -0,0 +1 @@
okidoks

View File

@ -0,0 +1 @@
hi

View File

View File

View 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;

View File

@ -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

View File

@ -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}`);
}
}

View File

@ -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);

View File

@ -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: