Compare commits
25 Commits
Author | SHA1 | Date | |
---|---|---|---|
52f8fd2469 | |||
65dda3bcf1 | |||
d29dcc5a1c | |||
d22e0cde8f | |||
c8a21e8228 | |||
72bb3f33ac | |||
7694cc9c08 | |||
679c870229 | |||
30bc489822 | |||
5493d3cd5d | |||
bd50c122eb | |||
51f9d76a64 | |||
c2f809f9cf | |||
9f311984ac | |||
7515ecf9ce | |||
fb9766e93b | |||
9cfd147fdc | |||
18ff99aef7 | |||
46b1151201 | |||
8e19586e47 | |||
9fc581b866 | |||
dcc85a56b8 | |||
4899d454eb | |||
9d02fccc01 | |||
a5b24a7c33 |
38
dist/smartfile.classes.smartfile.d.ts
vendored
38
dist/smartfile.classes.smartfile.d.ts
vendored
@ -1,9 +1,10 @@
|
|||||||
/// <reference types="node" />
|
/// <reference types="node" />
|
||||||
|
import * as plugins from './smartfile.plugins';
|
||||||
export interface ISmartfileConstructorOptions {
|
export interface ISmartfileConstructorOptions {
|
||||||
path?: string;
|
path?: string;
|
||||||
contentString?: string;
|
contentString?: string;
|
||||||
contentBuffer?: Buffer;
|
contentBuffer?: Buffer;
|
||||||
cwd?: string;
|
base?: string;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* class Smartfile
|
* class Smartfile
|
||||||
@ -15,17 +16,18 @@ export declare class Smartfile {
|
|||||||
*/
|
*/
|
||||||
path: string;
|
path: string;
|
||||||
/**
|
/**
|
||||||
* gulp-compatibility: alias of this.contentBuffer
|
*
|
||||||
*/
|
*/
|
||||||
contents: Buffer;
|
parsedPath: plugins.path.ParsedPath;
|
||||||
/**
|
/**
|
||||||
* the content of the file as Buffer
|
* the content of the file as Buffer
|
||||||
*/
|
*/
|
||||||
contentBuffer: Buffer;
|
contentBuffer: Buffer;
|
||||||
/**
|
/**
|
||||||
* The current working directory of the file
|
* The current working directory of the file
|
||||||
|
* Note:this is similar to gulp and different from native node path base
|
||||||
*/
|
*/
|
||||||
cwd: string;
|
base: string;
|
||||||
/**
|
/**
|
||||||
* sync the file with disk
|
* sync the file with disk
|
||||||
*/
|
*/
|
||||||
@ -35,11 +37,6 @@ export declare class Smartfile {
|
|||||||
* @param optionsArg
|
* @param optionsArg
|
||||||
*/
|
*/
|
||||||
constructor(optionsArg: ISmartfileConstructorOptions);
|
constructor(optionsArg: ISmartfileConstructorOptions);
|
||||||
/**
|
|
||||||
* return relative path of file
|
|
||||||
* ->
|
|
||||||
*/
|
|
||||||
readonly relative: string;
|
|
||||||
/**
|
/**
|
||||||
* set contents from string
|
* set contents from string
|
||||||
* @param contentString
|
* @param contentString
|
||||||
@ -53,4 +50,27 @@ export declare class Smartfile {
|
|||||||
* read file from disk
|
* read file from disk
|
||||||
*/
|
*/
|
||||||
read(): Promise<void>;
|
read(): Promise<void>;
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility: alias of this.contentBuffer
|
||||||
|
*/
|
||||||
|
contents: Buffer;
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility
|
||||||
|
*/
|
||||||
|
readonly cwd: string;
|
||||||
|
/**
|
||||||
|
* return relative path of file
|
||||||
|
*/
|
||||||
|
readonly relative: string;
|
||||||
|
/**
|
||||||
|
* return truw when the file has content
|
||||||
|
*/
|
||||||
|
isNull(): boolean;
|
||||||
|
/**
|
||||||
|
* return true if contents are Buffer
|
||||||
|
*/
|
||||||
|
isBuffer(): boolean;
|
||||||
|
isDirectory(): boolean;
|
||||||
|
isStream(): boolean;
|
||||||
|
isSymbolic(): boolean;
|
||||||
}
|
}
|
||||||
|
68
dist/smartfile.classes.smartfile.js
vendored
68
dist/smartfile.classes.smartfile.js
vendored
@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const plugins = require("./smartfile.plugins");
|
||||||
/**
|
/**
|
||||||
* class Smartfile
|
* class Smartfile
|
||||||
* -> is vinyl file compatible
|
* -> is vinyl file compatible
|
||||||
@ -20,24 +21,16 @@ class Smartfile {
|
|||||||
constructor(optionsArg) {
|
constructor(optionsArg) {
|
||||||
if (optionsArg.contentBuffer) {
|
if (optionsArg.contentBuffer) {
|
||||||
this.contentBuffer = optionsArg.contentBuffer;
|
this.contentBuffer = optionsArg.contentBuffer;
|
||||||
this.contents = optionsArg.contentBuffer;
|
|
||||||
}
|
}
|
||||||
else if (optionsArg.contentString) {
|
else if (optionsArg.contentString) {
|
||||||
this.contentBuffer = optionsArg.contentBuffer;
|
this.setContentsFromString(optionsArg.contentString);
|
||||||
this.contents = Buffer.from(optionsArg.contentString);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
console.log('created empty Smartfile?');
|
console.log('created empty Smartfile?');
|
||||||
}
|
}
|
||||||
this.path = optionsArg.path;
|
this.path = optionsArg.path;
|
||||||
this.cwd = optionsArg.cwd;
|
this.parsedPath = plugins.path.parse(this.path);
|
||||||
}
|
this.base = optionsArg.base;
|
||||||
/**
|
|
||||||
* return relative path of file
|
|
||||||
* ->
|
|
||||||
*/
|
|
||||||
get relative() {
|
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* set contents from string
|
* set contents from string
|
||||||
@ -60,6 +53,57 @@ class Smartfile {
|
|||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
// -----------------------------------------------
|
||||||
|
// vinyl compatibility
|
||||||
|
// -----------------------------------------------
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility: alias of this.contentBuffer
|
||||||
|
*/
|
||||||
|
get contents() {
|
||||||
|
return this.contentBuffer;
|
||||||
|
}
|
||||||
|
set contents(contentsArg) {
|
||||||
|
this.contentBuffer = contentsArg;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility
|
||||||
|
*/
|
||||||
|
get cwd() {
|
||||||
|
return process.cwd();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* return relative path of file
|
||||||
|
*/
|
||||||
|
get relative() {
|
||||||
|
return plugins.path.relative(this.base, this.path);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* return truw when the file has content
|
||||||
|
*/
|
||||||
|
isNull() {
|
||||||
|
if (!this.contentBuffer) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* return true if contents are Buffer
|
||||||
|
*/
|
||||||
|
isBuffer() {
|
||||||
|
if (this.contents instanceof Buffer) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
isDirectory() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
isStream() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
isSymbolic() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
exports.Smartfile = Smartfile;
|
exports.Smartfile = Smartfile;
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFTQTs7O0dBR0c7QUFDSDtJQTBCRTs7O09BR0c7SUFDSCxZQUFhLFVBQXdDO1FBQ25ELEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQzdCLElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQTtZQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7UUFDMUMsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7WUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUN2RCxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDekMsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQTtRQUMzQixJQUFJLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUE7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sQ0FBQyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBR0Q7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsYUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztRQUVYLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0csSUFBSTs7UUFDVixDQUFDO0tBQUE7Q0FDRjtBQXpFRCw4QkF5RUMifQ==
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwrQ0FBOEM7QUFTOUM7OztHQUdHO0FBQ0g7SUEyQkU7OztPQUdHO0lBR0gsWUFBYSxVQUF3QztRQUNuRCxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUE7UUFDL0MsQ0FBQztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ3RELENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtRQUN6QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQy9DLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQTtJQUM3QixDQUFDO0lBR0Q7OztPQUdHO0lBQ0gscUJBQXFCLENBQUMsYUFBcUI7UUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDRyxLQUFLOztRQUVYLENBQUM7S0FBQTtJQUVEOztPQUVHO0lBQ0csSUFBSTs7UUFDVixDQUFDO0tBQUE7SUFFRCxrREFBa0Q7SUFDbEQsc0JBQXNCO0lBQ3RCLGtEQUFrRDtJQUNsRDs7T0FFRztJQUNILElBQUksUUFBUTtRQUNWLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzNCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBRSxXQUFXO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksR0FBRztRQUNMLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxRQUFRO1FBQ1YsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUE7UUFDYixDQUFDO1FBQ0QsTUFBTSxDQUFDLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxZQUFZLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEMsTUFBTSxDQUFDLElBQUksQ0FBQTtRQUNiLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFdBQVc7UUFDVCxNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLENBQUMsS0FBSyxDQUFBO0lBQ2QsQ0FBQztDQUNGO0FBOUhELDhCQThIQyJ9
|
30
dist/smartfile.fs.js
vendored
30
dist/smartfile.fs.js
vendored
File diff suppressed because one or more lines are too long
44
dist/smartfile.memory.d.ts
vendored
44
dist/smartfile.memory.d.ts
vendored
@ -1,10 +1,5 @@
|
|||||||
/// <reference types="node" />
|
|
||||||
import 'typings-global';
|
import 'typings-global';
|
||||||
export interface IVinylFile {
|
import { Smartfile } from './smartfile.classes.smartfile';
|
||||||
contents: Buffer;
|
|
||||||
base: string;
|
|
||||||
path: string;
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* converts file to Object
|
* converts file to Object
|
||||||
* @param fileStringArg
|
* @param fileStringArg
|
||||||
@ -12,35 +7,20 @@ export interface IVinylFile {
|
|||||||
* @returns {any|any}
|
* @returns {any|any}
|
||||||
*/
|
*/
|
||||||
export declare let toObject: (fileStringArg: string, fileTypeArg: string) => any;
|
export declare let toObject: (fileStringArg: string, fileTypeArg: string) => any;
|
||||||
/**
|
export interface IToFsOptions {
|
||||||
* takes a string and converts it to vinyl file
|
respectRelative?: boolean;
|
||||||
* @param fileArg
|
}
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
export declare let toVinylFileSync: (fileArg: string, optionsArg?: {
|
|
||||||
filename?: string;
|
|
||||||
base?: string;
|
|
||||||
relPath?: string;
|
|
||||||
}) => any;
|
|
||||||
/**
|
|
||||||
* takes a string array and some options and returns a vinylfile array
|
|
||||||
* @param arrayArg
|
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
export declare let toVinylArraySync: (arrayArg: string[], optionsArg?: {
|
|
||||||
filename?: string;
|
|
||||||
base?: string;
|
|
||||||
relPath?: string;
|
|
||||||
}) => any[];
|
|
||||||
/**
|
|
||||||
* takes a vinylFile object and converts it to String
|
|
||||||
*/
|
|
||||||
export declare let vinylToStringSync: (fileArg: IVinylFile) => string;
|
|
||||||
/**
|
/**
|
||||||
* writes string or vinyl file to disk.
|
* writes string or vinyl file to disk.
|
||||||
* @param fileArg
|
* @param fileArg
|
||||||
* @param fileNameArg
|
* @param fileNameArg
|
||||||
* @param fileBaseArg
|
* @param fileBaseArg
|
||||||
*/
|
*/
|
||||||
export declare let toFs: (fileContentArg: string | IVinylFile, filePathArg: any) => Promise<{}>;
|
export declare let toFs: (fileContentArg: string | Smartfile, filePathArg: any, optionsArg?: IToFsOptions) => Promise<{}>;
|
||||||
export declare let toFsSync: (fileArg: any, filePathArg: string) => void;
|
/**
|
||||||
|
* writes a string or a Smartfile to disk synchronously, only supports string
|
||||||
|
* @param fileArg
|
||||||
|
* @param filePathArg
|
||||||
|
*/
|
||||||
|
export declare let toFsSync: (fileArg: string, filePathArg: string) => void;
|
||||||
|
export declare let smartfileArrayToFs: (smartfileArrayArg: Smartfile[], dirArg: string) => Promise<void>;
|
||||||
|
85
dist/smartfile.memory.js
vendored
85
dist/smartfile.memory.js
vendored
@ -1,9 +1,18 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
require("typings-global");
|
require("typings-global");
|
||||||
const plugins = require("./smartfile.plugins");
|
const plugins = require("./smartfile.plugins");
|
||||||
|
const smartfile_classes_smartfile_1 = require("./smartfile.classes.smartfile");
|
||||||
|
const smartfileFs = require("./smartfile.fs");
|
||||||
const SmartfileInterpreter = require("./smartfile.interpreter");
|
const SmartfileInterpreter = require("./smartfile.interpreter");
|
||||||
let vinyl = require('vinyl');
|
|
||||||
/**
|
/**
|
||||||
* converts file to Object
|
* converts file to Object
|
||||||
* @param fileStringArg
|
* @param fileStringArg
|
||||||
@ -13,67 +22,45 @@ let vinyl = require('vinyl');
|
|||||||
exports.toObject = function (fileStringArg, fileTypeArg) {
|
exports.toObject = function (fileStringArg, fileTypeArg) {
|
||||||
return SmartfileInterpreter.objectFile(fileStringArg, fileTypeArg);
|
return SmartfileInterpreter.objectFile(fileStringArg, fileTypeArg);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* takes a string and converts it to vinyl file
|
|
||||||
* @param fileArg
|
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
exports.toVinylFileSync = function (fileArg, optionsArg) {
|
|
||||||
optionsArg ? void (0) : optionsArg = { filename: 'vinylfile', base: '/' };
|
|
||||||
optionsArg.filename ? void (0) : optionsArg.filename = 'vinylfile';
|
|
||||||
optionsArg.base ? void (0) : optionsArg.base = '/';
|
|
||||||
optionsArg.relPath ? void ('0') : optionsArg.relPath = '';
|
|
||||||
let vinylFile = new vinyl({
|
|
||||||
base: optionsArg.base,
|
|
||||||
path: plugins.path.join(optionsArg.base, optionsArg.relPath, optionsArg.filename),
|
|
||||||
contents: new Buffer(fileArg)
|
|
||||||
});
|
|
||||||
return vinylFile;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* takes a string array and some options and returns a vinylfile array
|
|
||||||
* @param arrayArg
|
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
exports.toVinylArraySync = function (arrayArg, optionsArg) {
|
|
||||||
let vinylArray = [];
|
|
||||||
for (let stringIndexArg in arrayArg) {
|
|
||||||
let myString = arrayArg[stringIndexArg];
|
|
||||||
vinylArray.push(exports.toVinylFileSync(myString, optionsArg));
|
|
||||||
}
|
|
||||||
return vinylArray;
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* takes a vinylFile object and converts it to String
|
|
||||||
*/
|
|
||||||
exports.vinylToStringSync = function (fileArg) {
|
|
||||||
return fileArg.contents.toString('utf8');
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
* writes string or vinyl file to disk.
|
* writes string or vinyl file to disk.
|
||||||
* @param fileArg
|
* @param fileArg
|
||||||
* @param fileNameArg
|
* @param fileNameArg
|
||||||
* @param fileBaseArg
|
* @param fileBaseArg
|
||||||
*/
|
*/
|
||||||
exports.toFs = function (fileContentArg, filePathArg) {
|
exports.toFs = (fileContentArg, filePathArg, optionsArg = {}) => __awaiter(this, void 0, void 0, function* () {
|
||||||
let done = plugins.q.defer();
|
let done = plugins.q.defer();
|
||||||
// function checks to abort if needed
|
// check args
|
||||||
if (!fileContentArg || !filePathArg) {
|
if (!fileContentArg || !filePathArg) {
|
||||||
throw new Error('expected valid arguments');
|
throw new Error('expected valid arguments');
|
||||||
}
|
}
|
||||||
// prepare actual write action
|
// prepare actual write action
|
||||||
let fileString;
|
let fileString;
|
||||||
let filePath = filePathArg;
|
let filePath = filePathArg;
|
||||||
if (vinyl.isVinyl(fileContentArg)) {
|
// handle Smartfile
|
||||||
|
if (fileContentArg instanceof smartfile_classes_smartfile_1.Smartfile) {
|
||||||
let fileContentArg2 = fileContentArg;
|
let fileContentArg2 = fileContentArg;
|
||||||
fileString = exports.vinylToStringSync(fileContentArg2);
|
fileString = fileContentArg.contentBuffer.toString();
|
||||||
|
// handle options
|
||||||
|
if (optionsArg.respectRelative) {
|
||||||
|
filePath = plugins.path.join(filePath, fileContentArg.path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (typeof fileContentArg === 'string') {
|
else if (typeof fileContentArg === 'string') {
|
||||||
fileString = fileContentArg;
|
fileString = fileContentArg;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
throw new Error('fileContent is neither string nor Smartfile');
|
||||||
|
}
|
||||||
|
yield smartfileFs.ensureDir(plugins.path.parse(filePath).dir);
|
||||||
plugins.fsExtra.writeFile(filePath, fileString, 'utf8', done.resolve);
|
plugins.fsExtra.writeFile(filePath, fileString, 'utf8', done.resolve);
|
||||||
return done.promise;
|
return yield done.promise;
|
||||||
};
|
});
|
||||||
|
/**
|
||||||
|
* writes a string or a Smartfile to disk synchronously, only supports string
|
||||||
|
* @param fileArg
|
||||||
|
* @param filePathArg
|
||||||
|
*/
|
||||||
exports.toFsSync = function (fileArg, filePathArg) {
|
exports.toFsSync = function (fileArg, filePathArg) {
|
||||||
// function checks to abort if needed
|
// function checks to abort if needed
|
||||||
if (!fileArg || !filePathArg) {
|
if (!fileArg || !filePathArg) {
|
||||||
@ -83,11 +70,19 @@ exports.toFsSync = function (fileArg, filePathArg) {
|
|||||||
let fileString;
|
let fileString;
|
||||||
let filePath = filePathArg;
|
let filePath = filePathArg;
|
||||||
if (typeof fileArg !== 'string') {
|
if (typeof fileArg !== 'string') {
|
||||||
fileString = exports.vinylToStringSync(fileArg);
|
throw new Error('fileArg is not of type String.');
|
||||||
}
|
}
|
||||||
else if (typeof fileArg === 'string') {
|
else if (typeof fileArg === 'string') {
|
||||||
fileString = fileArg;
|
fileString = fileArg;
|
||||||
}
|
}
|
||||||
plugins.fsExtra.writeFileSync(filePath, fileString, 'utf8');
|
plugins.fsExtra.writeFileSync(filePath, fileString, 'utf8');
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLm1lbW9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZmlsZS5tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFFdkIsK0NBQStDO0FBQy9DLGdFQUFnRTtBQUNoRSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUE7QUFRNUI7Ozs7O0dBS0c7QUFDUSxRQUFBLFFBQVEsR0FBRyxVQUFVLGFBQXFCLEVBQUUsV0FBbUI7SUFDeEUsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUE7QUFDcEUsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNRLFFBQUEsZUFBZSxHQUFHLFVBQVUsT0FBZSxFQUFFLFVBQW1FO0lBQ3pILFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxHQUFHLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUE7SUFDekUsVUFBVSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUE7SUFDbEUsVUFBVSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUE7SUFDbEQsVUFBVSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUE7SUFDekQsSUFBSSxTQUFTLEdBQUcsSUFBSSxLQUFLLENBQUM7UUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxD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
|
exports.smartfileArrayToFs = (smartfileArrayArg, dirArg) => __awaiter(this, void 0, void 0, function* () {
|
||||||
|
yield smartfileFs.ensureDir(dirArg);
|
||||||
|
for (let smartfile of smartfileArrayArg) {
|
||||||
|
yield exports.toFs(smartfile, dirArg, {
|
||||||
|
respectRelative: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLm1lbW9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZmlsZS5tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDBCQUF1QjtBQUV2QiwrQ0FBK0M7QUFDL0MsK0VBQXlEO0FBQ3pELDhDQUE2QztBQUc3QyxnRUFBZ0U7QUFFaEU7Ozs7O0dBS0c7QUFDUSxRQUFBLFFBQVEsR0FBRyxVQUFVLGFBQXFCLEVBQUUsV0FBbUI7SUFDeEUsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUE7QUFDcEUsQ0FBQyxDQUFBO0FBTUQ7Ozs7O0dBS0c7QUFDUSxRQUFBLElBQUksR0FBRyxDQUFPLGNBQWtDLEVBQUUsV0FBVyxFQUFFLGFBQTJCLEVBQUU7SUFDckcsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUU1QixhQUFhO0lBQ2IsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksVUFBa0IsQ0FBQTtJQUN0QixJQUFJLFFBQVEsR0FBVyxXQUFXLENBQUE7SUFFbEMsbUJBQW1CO0lBQ25CLEVBQUUsQ0FBQyxDQUFDLGNBQWMsWUFBWSx1Q0FBUyxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLGVBQWUsR0FBUSxjQUFjLENBQUE7UUFDekMsVUFBVSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDcEQsaUJBQWlCO1FBQ2pCLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQy9CLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sY0FBYyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDOUMsVUFBVSxHQUFHLGNBQWMsQ0FBQTtJQUM3QixDQUFDO0lBQUMsSUFBSSxDQUFDLENBQUM7UUFDTixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUNELE1BQU0sV0FBVyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUM3RCxPQUFPLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDckUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUMzQixDQUFDLENBQUEsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDUSxRQUFBLFFBQVEsR0FBRyxVQUFVLE9BQWUsRUFBRSxXQUFtQjtJQUNsRSxxQ0FBcUM7SUFDckMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBRUQsOEJBQThCO0lBQzlCLElBQUksVUFBa0IsQ0FBQTtJQUN0QixJQUFJLFFBQVEsR0FBVyxXQUFXLENBQUE7SUFFbEMsRUFBRSxDQUFDLENBQUMsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNoQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLFVBQVUsR0FBRyxPQUFPLENBQUE7SUFDdEIsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDN0QsQ0FBQyxDQUFBO0FBRVUsUUFBQSxrQkFBa0IsR0FBRyxDQUFPLGlCQUE4QixFQUFFLE1BQWM7SUFDbkYsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25DLEdBQUcsQ0FBQyxDQUFDLElBQUksU0FBUyxJQUFJLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNLFlBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO1lBQzVCLGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUEsQ0FBQSJ9
|
10
package.json
10
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "smartfile",
|
"name": "smartfile",
|
||||||
"version": "4.2.2",
|
"version": "4.2.14",
|
||||||
"description": "offers smart ways to work with files in nodejs",
|
"description": "offers smart ways to work with files in nodejs",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
"typings": "dist/index.d.ts",
|
"typings": "dist/index.d.ts",
|
||||||
@ -26,9 +26,9 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/fs-extra": "2.x.x",
|
"@types/fs-extra": "3.x.x",
|
||||||
"@types/vinyl": "^2.0.0",
|
"@types/vinyl": "^2.0.0",
|
||||||
"fs-extra": "^3.0.0",
|
"fs-extra": "^3.0.1",
|
||||||
"glob": "^7.1.1",
|
"glob": "^7.1.1",
|
||||||
"js-yaml": "^3.8.3",
|
"js-yaml": "^3.8.3",
|
||||||
"require-reload": "0.2.2",
|
"require-reload": "0.2.2",
|
||||||
@ -40,7 +40,7 @@
|
|||||||
"vinyl-file": "^3.0.0"
|
"vinyl-file": "^3.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"gulp-function": "^2.2.3",
|
"gulp-function": "^2.2.9",
|
||||||
"tapbundle": "^1.0.10"
|
"tapbundle": "^1.0.12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
88
test/test.ts
88
test/test.ts
@ -3,8 +3,6 @@ import path = require('path')
|
|||||||
|
|
||||||
import { expect, tap } from 'tapbundle'
|
import { expect, tap } from 'tapbundle'
|
||||||
|
|
||||||
import * as vinyl from 'vinyl'
|
|
||||||
|
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
// smartfile.fs
|
// smartfile.fs
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
@ -51,9 +49,10 @@ tap.test('.fs.listFileTree() -> should get a file tree', async () => {
|
|||||||
expect(folderArrayArg).to.not.deep.include('mytest.json')
|
expect(folderArrayArg).to.not.deep.include('mytest.json')
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('.fstoObjectFromFileTree -> should read a file tree into an Object', async () => {
|
tap.test('.fs.fileTreeToObject -> should read a file tree into an Object', async () => {
|
||||||
let fileArrayArg = await smartfile.fs.fileTreeToObject(path.resolve('./test/'), '**/*.txt')
|
let fileArrayArg = await smartfile.fs.fileTreeToObject(path.resolve('./test/'), '**/*.txt')
|
||||||
// expect(fileArrayArg[1]).to.be.instanceof(smartfile.Smartfile)
|
expect(fileArrayArg[ 0 ]).to.be.instanceof(smartfile.Smartfile)
|
||||||
|
expect(fileArrayArg[ 0 ].contents.toString()).to.equal(fileArrayArg[ 0 ].contentBuffer.toString())
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('.fs.copy() -> should copy a directory', async () => {
|
tap.test('.fs.copy() -> should copy a directory', async () => {
|
||||||
@ -72,36 +71,28 @@ tap.test('.fs.remove() -> should remove an entire directory', async () => {
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('smartfile.fs.remove -> should remove single files', async () => {
|
tap.test('.fs.remove -> should remove single files', async () => {
|
||||||
await expect(smartfile.fs.remove('./test/temp/mytestRenamed.yaml')).to.eventually.be.fulfilled
|
await expect(smartfile.fs.remove('./test/temp/mytestRenamed.yaml')).to.eventually.be.fulfilled
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('smartfile.fs.removeSync -> should remove single files synchronouly', async () => {
|
tap.test('.fs.removeSync -> should remove single files synchronouly', async () => {
|
||||||
smartfile.fs.removeSync('./test/temp/testfile1.txt')
|
smartfile.fs.removeSync('./test/temp/testfile1.txt')
|
||||||
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('smartfile.fs.removeMany -> should remove and array of files', async () => {
|
tap.test('.fs.removeMany -> should remove and array of files', async () => {
|
||||||
smartfile.fs.removeMany([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ]).then(() => {
|
smartfile.fs.removeMany([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ]).then(() => {
|
||||||
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
||||||
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
|
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('smartfile.fs.removeManySync -> should remove and array of single files synchronouly', async () => {
|
tap.test('.fs.removeManySync -> should remove and array of single files synchronouly', async () => {
|
||||||
smartfile.fs.removeManySync([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ])
|
smartfile.fs.removeManySync([ './test/temp/testfile1.txt', './test/temp/testfile2.txt' ])
|
||||||
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
|
||||||
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
|
expect(smartfile.fs.fileExistsSync('./test/temp/testfile2.txt')).to.be.false
|
||||||
})
|
})
|
||||||
|
|
||||||
// ---------------------------
|
|
||||||
// smartfile.interpreter
|
|
||||||
// ---------------------------
|
|
||||||
|
|
||||||
tap.test('.interpreter.filetype() -> should get the file type from a string', async () => {
|
|
||||||
expect(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
|
|
||||||
})
|
|
||||||
|
|
||||||
tap.test('.fs.toObjectSync() -> should read an ' + '.yaml' + ' file to an object', async () => {
|
tap.test('.fs.toObjectSync() -> should read an ' + '.yaml' + ' file to an object', async () => {
|
||||||
let testData = smartfile.fs.toObjectSync('./test/mytest.yaml')
|
let testData = smartfile.fs.toObjectSync('./test/mytest.yaml')
|
||||||
expect(testData).have.property('key1', 'this works')
|
expect(testData).have.property('key1', 'this works')
|
||||||
@ -124,36 +115,17 @@ tap.test('.fs.toStringSync() -> should read a file to a string', async () => {
|
|||||||
.to.equal('Some TestString &&%$')
|
.to.equal('Some TestString &&%$')
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('.fs.toVinylSync -> should read an ' + '.json OR .yaml' + ' file to an ' + 'vinyl file object', async () => {
|
// ---------------------------
|
||||||
let testData = smartfile.fs.toVinylSync('./test/mytest.json')
|
// smartfile.interpreter
|
||||||
expect(vinyl.isVinyl(testData)).to.be.true
|
// ---------------------------
|
||||||
|
|
||||||
|
tap.test('.interpreter.filetype() -> should get the file type from a string', async () => {
|
||||||
|
expect(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
|
||||||
})
|
})
|
||||||
|
|
||||||
tap.test('.memory.toVinylFileSync() -> should produce a vinylFile', async () => {
|
// ---------------------------
|
||||||
let localString = 'myString'
|
// smartfile.memory
|
||||||
let localOptions = { filename: 'vinylfile2', base: '/someDir' }
|
// ---------------------------
|
||||||
expect(smartfile.memory.toVinylFileSync(localString, localOptions) instanceof vinyl).to.be.true
|
|
||||||
})
|
|
||||||
|
|
||||||
tap.test('.memory.toVinylArraySync() -> should produce a an array of vinylfiles', async () => {
|
|
||||||
let localStringArray = [ 'string1', 'string2', 'string3' ]
|
|
||||||
let localOptions = { filename: 'vinylfile2', base: '/someDir' }
|
|
||||||
let testResult = smartfile.memory.toVinylArraySync(localStringArray, localOptions)
|
|
||||||
expect(testResult).to.be.a('array')
|
|
||||||
expect(testResult.length === 3).to.be.true
|
|
||||||
for (let myKey in testResult) {
|
|
||||||
expect(testResult[ myKey ] instanceof vinyl).to.be.true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
tap.test('.memory.vinylToStringSync() -> should produce a String from vinyl file', async () => {
|
|
||||||
let localString = smartfile.memory.vinylToStringSync(new vinyl({
|
|
||||||
base: '/',
|
|
||||||
path: '/test.txt',
|
|
||||||
contents: new Buffer('myString')
|
|
||||||
}))
|
|
||||||
expect(localString).equal('myString')
|
|
||||||
})
|
|
||||||
|
|
||||||
tap.test('.memory.toFs() -> should write a file to disk and return a promise', async () => {
|
tap.test('.memory.toFs() -> should write a file to disk and return a promise', async () => {
|
||||||
let localString = 'myString'
|
let localString = 'myString'
|
||||||
@ -183,4 +155,32 @@ tap.test('.remote.toString() -> should reject a Promise when the link is false',
|
|||||||
.to.eventually.be.rejected
|
.to.eventually.be.rejected
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ---------------------------
|
||||||
|
// smartfile.Smartfile
|
||||||
|
// ---------------------------
|
||||||
|
|
||||||
|
tap.test('.Smartfile -> should produce vinyl compatible files', async () => {
|
||||||
|
let smartfileArray = await smartfile.fs.fileTreeToObject(process.cwd(), './test/testfolder/**/*')
|
||||||
|
let localSmartfile = smartfileArray[ 0 ]
|
||||||
|
expect(localSmartfile).to.be.instanceof(smartfile.Smartfile)
|
||||||
|
expect(localSmartfile.contents).to.be.instanceof(Buffer)
|
||||||
|
// tslint:disable-next-line:no-unused-expression
|
||||||
|
expect(localSmartfile.isBuffer()).to.be.true
|
||||||
|
// tslint:disable-next-line:no-unused-expression
|
||||||
|
expect(localSmartfile.isDirectory()).to.be.false
|
||||||
|
// tslint:disable-next-line:no-unused-expression
|
||||||
|
expect(localSmartfile.isNull()).to.be.false
|
||||||
|
})
|
||||||
|
|
||||||
|
tap.test('should output a smartfile array to disk', async () => {
|
||||||
|
let smartfileArray = await smartfile.fs.fileTreeToObject('./test/testfolder/', '*')
|
||||||
|
for (let smartfile of smartfileArray) {
|
||||||
|
// console.log(smartfile.relative)
|
||||||
|
// console.log(smartfile.path)
|
||||||
|
// console.log(smartfile.base)
|
||||||
|
// console.log(smartfile.parsedPath)
|
||||||
|
}
|
||||||
|
await smartfile.memory.smartfileArrayToFs(smartfileArray, path.resolve('./test/temp/testoutput/'))
|
||||||
|
})
|
||||||
|
|
||||||
tap.start()
|
tap.start()
|
||||||
|
@ -0,0 +1 @@
|
|||||||
|
okidoks
|
1
test/testfolder/subfolder/subtestfile.txt
Normal file
1
test/testfolder/subfolder/subtestfile.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
hi
|
@ -4,7 +4,7 @@ export interface ISmartfileConstructorOptions {
|
|||||||
path?: string
|
path?: string
|
||||||
contentString?: string
|
contentString?: string
|
||||||
contentBuffer?: Buffer
|
contentBuffer?: Buffer
|
||||||
cwd?: string
|
base?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -18,9 +18,9 @@ export class Smartfile {
|
|||||||
path: string
|
path: string
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gulp-compatibility: alias of this.contentBuffer
|
*
|
||||||
*/
|
*/
|
||||||
contents: Buffer
|
parsedPath: plugins.path.ParsedPath
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the content of the file as Buffer
|
* the content of the file as Buffer
|
||||||
@ -29,8 +29,9 @@ export class Smartfile {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The current working directory of the file
|
* The current working directory of the file
|
||||||
|
* Note:this is similar to gulp and different from native node path base
|
||||||
*/
|
*/
|
||||||
cwd: string
|
base: string
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sync the file with disk
|
* sync the file with disk
|
||||||
@ -41,26 +42,19 @@ export class Smartfile {
|
|||||||
* the constructor of Smartfile
|
* the constructor of Smartfile
|
||||||
* @param optionsArg
|
* @param optionsArg
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
constructor (optionsArg: ISmartfileConstructorOptions) {
|
constructor (optionsArg: ISmartfileConstructorOptions) {
|
||||||
if (optionsArg.contentBuffer) {
|
if (optionsArg.contentBuffer) {
|
||||||
this.contentBuffer = optionsArg.contentBuffer
|
this.contentBuffer = optionsArg.contentBuffer
|
||||||
this.contents = optionsArg.contentBuffer
|
|
||||||
} else if (optionsArg.contentString) {
|
} else if (optionsArg.contentString) {
|
||||||
this.contentBuffer = optionsArg.contentBuffer
|
this.setContentsFromString(optionsArg.contentString)
|
||||||
this.contents = Buffer.from(optionsArg.contentString)
|
|
||||||
} else {
|
} else {
|
||||||
console.log('created empty Smartfile?')
|
console.log('created empty Smartfile?')
|
||||||
}
|
}
|
||||||
this.path = optionsArg.path
|
this.path = optionsArg.path
|
||||||
this.cwd = optionsArg.cwd
|
this.parsedPath = plugins.path.parse(this.path)
|
||||||
}
|
this.base = optionsArg.base
|
||||||
|
|
||||||
/**
|
|
||||||
* return relative path of file
|
|
||||||
* ->
|
|
||||||
*/
|
|
||||||
get relative () {
|
|
||||||
return ''
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -84,4 +78,63 @@ export class Smartfile {
|
|||||||
*/
|
*/
|
||||||
async read () {
|
async read () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------
|
||||||
|
// vinyl compatibility
|
||||||
|
// -----------------------------------------------
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility: alias of this.contentBuffer
|
||||||
|
*/
|
||||||
|
get contents (): Buffer {
|
||||||
|
return this.contentBuffer
|
||||||
|
}
|
||||||
|
set contents (contentsArg) {
|
||||||
|
this.contentBuffer = contentsArg
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* vinyl-compatibility
|
||||||
|
*/
|
||||||
|
get cwd () {
|
||||||
|
return process.cwd()
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return relative path of file
|
||||||
|
*/
|
||||||
|
get relative (): string {
|
||||||
|
return plugins.path.relative(this.base, this.path)
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return truw when the file has content
|
||||||
|
*/
|
||||||
|
isNull (): boolean {
|
||||||
|
if (!this.contentBuffer) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return true if contents are Buffer
|
||||||
|
*/
|
||||||
|
isBuffer (): boolean {
|
||||||
|
if (this.contents instanceof Buffer) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
isDirectory () {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
isStream () {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
isSymbolic () {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,11 @@ export let fileExists = function (filePath) {
|
|||||||
* Checks if given path points to an existing directory
|
* Checks if given path points to an existing directory
|
||||||
*/
|
*/
|
||||||
export let isDirectory = function (pathArg): boolean {
|
export let isDirectory = function (pathArg): boolean {
|
||||||
return plugins.fsExtra.statSync(pathArg).isDirectory()
|
try {
|
||||||
|
return plugins.fsExtra.statSync(pathArg).isDirectory()
|
||||||
|
} catch (err) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -203,20 +207,32 @@ export let toObjectSync = function (filePathArg, fileTypeArg?) {
|
|||||||
* @param filePath
|
* @param filePath
|
||||||
* @returns {string|Buffer|any}
|
* @returns {string|Buffer|any}
|
||||||
*/
|
*/
|
||||||
export let toStringSync = function (filePath: string) {
|
export let toStringSync = function (filePath: string): string {
|
||||||
let fileString = plugins.fsExtra.readFileSync(filePath, 'utf8')
|
let fileString: any = plugins.fsExtra.readFileSync(filePath, 'utf8')
|
||||||
return fileString
|
return fileString
|
||||||
}
|
}
|
||||||
|
|
||||||
export let fileTreeToObject = async (dirPathArg: string, miniMatchFilter: string) => {
|
export let fileTreeToObject = async (dirPathArg: string, miniMatchFilter: string) => {
|
||||||
let fileTree = await listFileTree(dirPathArg, miniMatchFilter)
|
// handle absolute miniMatchFilter
|
||||||
|
let dirPath: string
|
||||||
|
if (plugins.path.isAbsolute(miniMatchFilter)) {
|
||||||
|
dirPath = '/'
|
||||||
|
} else {
|
||||||
|
dirPath = dirPathArg
|
||||||
|
}
|
||||||
|
|
||||||
|
let fileTree = await listFileTree(dirPath, miniMatchFilter)
|
||||||
let smartfileArray: Smartfile[] = []
|
let smartfileArray: Smartfile[] = []
|
||||||
for (let filePath of fileTree) {
|
for (let filePath of fileTree) {
|
||||||
|
let fileContentString = toStringSync(
|
||||||
|
plugins.path.join(dirPath, filePath)
|
||||||
|
)
|
||||||
|
|
||||||
|
// push a read file as Smartfile
|
||||||
smartfileArray.push(new Smartfile({
|
smartfileArray.push(new Smartfile({
|
||||||
path: filePath,
|
contentBuffer: new Buffer(fileContentString),
|
||||||
contentBuffer: new Buffer(toStringSync(
|
base: dirPath,
|
||||||
plugins.path.join(dirPathArg, filePath)
|
path: filePath
|
||||||
))
|
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
return smartfileArray
|
return smartfileArray
|
||||||
@ -320,7 +336,7 @@ export let listAllItems = function (pathArg: string, regexFilter?: RegExp): Prom
|
|||||||
allItmesArray = allItmesArray.filter((fileItem) => {
|
allItmesArray = allItmesArray.filter((fileItem) => {
|
||||||
return regexFilter.test(fileItem)
|
return regexFilter.test(fileItem)
|
||||||
})
|
})
|
||||||
};
|
}
|
||||||
done.resolve(allItmesArray)
|
done.resolve(allItmesArray)
|
||||||
return done.promise
|
return done.promise
|
||||||
}
|
}
|
||||||
@ -359,7 +375,8 @@ export let listFileTree = (dirPathArg: string, miniMatchFilter: string): Promise
|
|||||||
}
|
}
|
||||||
|
|
||||||
let options = {
|
let options = {
|
||||||
cwd: dirPath
|
cwd: dirPath,
|
||||||
|
nodir: true
|
||||||
}
|
}
|
||||||
plugins.glob(miniMatchFilter, options, (err, files: string[]) => {
|
plugins.glob(miniMatchFilter, options, (err, files: string[]) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -1,14 +1,11 @@
|
|||||||
import 'typings-global'
|
import 'typings-global'
|
||||||
|
|
||||||
import plugins = require('./smartfile.plugins')
|
import plugins = require('./smartfile.plugins')
|
||||||
import SmartfileInterpreter = require('./smartfile.interpreter')
|
import { Smartfile } from './smartfile.classes.smartfile'
|
||||||
let vinyl = require('vinyl')
|
import * as smartfileFs from './smartfile.fs'
|
||||||
|
|
||||||
export interface IVinylFile {
|
|
||||||
contents: Buffer
|
import SmartfileInterpreter = require('./smartfile.interpreter')
|
||||||
base: string
|
|
||||||
path: string,
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* converts file to Object
|
* converts file to Object
|
||||||
@ -20,62 +17,20 @@ export let toObject = function (fileStringArg: string, fileTypeArg: string) {
|
|||||||
return SmartfileInterpreter.objectFile(fileStringArg, fileTypeArg)
|
return SmartfileInterpreter.objectFile(fileStringArg, fileTypeArg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
export interface IToFsOptions {
|
||||||
* takes a string and converts it to vinyl file
|
respectRelative?: boolean
|
||||||
* @param fileArg
|
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
export let toVinylFileSync = function (fileArg: string, optionsArg?: { filename?: string, base?: string, relPath?: string }) {
|
|
||||||
optionsArg ? void (0) : optionsArg = { filename: 'vinylfile', base: '/' }
|
|
||||||
optionsArg.filename ? void (0) : optionsArg.filename = 'vinylfile'
|
|
||||||
optionsArg.base ? void (0) : optionsArg.base = '/'
|
|
||||||
optionsArg.relPath ? void ('0') : optionsArg.relPath = ''
|
|
||||||
let vinylFile = new vinyl({
|
|
||||||
base: optionsArg.base,
|
|
||||||
path: plugins.path.join(optionsArg.base, optionsArg.relPath, optionsArg.filename),
|
|
||||||
contents: new Buffer(fileArg)
|
|
||||||
})
|
|
||||||
return vinylFile
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* takes a string array and some options and returns a vinylfile array
|
|
||||||
* @param arrayArg
|
|
||||||
* @param optionsArg
|
|
||||||
*/
|
|
||||||
export let toVinylArraySync = function (
|
|
||||||
arrayArg: string[],
|
|
||||||
optionsArg?: {
|
|
||||||
filename?: string,
|
|
||||||
base?: string,
|
|
||||||
relPath?: string
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
let vinylArray = []
|
|
||||||
for (let stringIndexArg in arrayArg) {
|
|
||||||
let myString = arrayArg[ stringIndexArg ]
|
|
||||||
vinylArray.push(toVinylFileSync(myString, optionsArg))
|
|
||||||
}
|
|
||||||
return vinylArray
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* takes a vinylFile object and converts it to String
|
|
||||||
*/
|
|
||||||
export let vinylToStringSync = function (fileArg: IVinylFile): string {
|
|
||||||
return fileArg.contents.toString('utf8')
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* writes string or vinyl file to disk.
|
* writes string or vinyl file to disk.
|
||||||
* @param fileArg
|
* @param fileArg
|
||||||
* @param fileNameArg
|
* @param fileNameArg
|
||||||
* @param fileBaseArg
|
* @param fileBaseArg
|
||||||
*/
|
*/
|
||||||
export let toFs = function (fileContentArg: string | IVinylFile, filePathArg) {
|
export let toFs = async (fileContentArg: string | Smartfile, filePathArg, optionsArg: IToFsOptions = {} ) => {
|
||||||
let done = plugins.q.defer()
|
let done = plugins.q.defer()
|
||||||
|
|
||||||
// function checks to abort if needed
|
// check args
|
||||||
if (!fileContentArg || !filePathArg) {
|
if (!fileContentArg || !filePathArg) {
|
||||||
throw new Error('expected valid arguments')
|
throw new Error('expected valid arguments')
|
||||||
}
|
}
|
||||||
@ -83,17 +38,31 @@ export let toFs = function (fileContentArg: string | IVinylFile, filePathArg) {
|
|||||||
// prepare actual write action
|
// prepare actual write action
|
||||||
let fileString: string
|
let fileString: string
|
||||||
let filePath: string = filePathArg
|
let filePath: string = filePathArg
|
||||||
if (vinyl.isVinyl(fileContentArg)) {
|
|
||||||
|
// handle Smartfile
|
||||||
|
if (fileContentArg instanceof Smartfile) {
|
||||||
let fileContentArg2: any = fileContentArg
|
let fileContentArg2: any = fileContentArg
|
||||||
fileString = vinylToStringSync(fileContentArg2)
|
fileString = fileContentArg.contentBuffer.toString()
|
||||||
|
// handle options
|
||||||
|
if (optionsArg.respectRelative) {
|
||||||
|
filePath = plugins.path.join(filePath, fileContentArg.path)
|
||||||
|
}
|
||||||
} else if (typeof fileContentArg === 'string') {
|
} else if (typeof fileContentArg === 'string') {
|
||||||
fileString = fileContentArg
|
fileString = fileContentArg
|
||||||
|
} else {
|
||||||
|
throw new Error('fileContent is neither string nor Smartfile')
|
||||||
}
|
}
|
||||||
|
await smartfileFs.ensureDir(plugins.path.parse(filePath).dir)
|
||||||
plugins.fsExtra.writeFile(filePath, fileString, 'utf8', done.resolve)
|
plugins.fsExtra.writeFile(filePath, fileString, 'utf8', done.resolve)
|
||||||
return done.promise
|
return await done.promise
|
||||||
}
|
}
|
||||||
|
|
||||||
export let toFsSync = function (fileArg, filePathArg: string) {
|
/**
|
||||||
|
* writes a string or a Smartfile to disk synchronously, only supports string
|
||||||
|
* @param fileArg
|
||||||
|
* @param filePathArg
|
||||||
|
*/
|
||||||
|
export let toFsSync = function (fileArg: string, filePathArg: string) {
|
||||||
// function checks to abort if needed
|
// function checks to abort if needed
|
||||||
if (!fileArg || !filePathArg) {
|
if (!fileArg || !filePathArg) {
|
||||||
throw new Error('expected a valid arguments')
|
throw new Error('expected a valid arguments')
|
||||||
@ -104,9 +73,18 @@ export let toFsSync = function (fileArg, filePathArg: string) {
|
|||||||
let filePath: string = filePathArg
|
let filePath: string = filePathArg
|
||||||
|
|
||||||
if (typeof fileArg !== 'string') {
|
if (typeof fileArg !== 'string') {
|
||||||
fileString = vinylToStringSync(fileArg)
|
throw new Error('fileArg is not of type String.')
|
||||||
} else if (typeof fileArg === 'string') {
|
} else if (typeof fileArg === 'string') {
|
||||||
fileString = fileArg
|
fileString = fileArg
|
||||||
}
|
}
|
||||||
plugins.fsExtra.writeFileSync(filePath, fileString, 'utf8')
|
plugins.fsExtra.writeFileSync(filePath, fileString, 'utf8')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export let smartfileArrayToFs = async (smartfileArrayArg: Smartfile[], dirArg: string) => {
|
||||||
|
await smartfileFs.ensureDir(dirArg)
|
||||||
|
for (let smartfile of smartfileArrayArg) {
|
||||||
|
await toFs(smartfile, dirArg, {
|
||||||
|
respectRelative: true
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
57
yarn.lock
57
yarn.lock
@ -19,25 +19,21 @@
|
|||||||
version "3.5.2"
|
version "3.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
|
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-3.5.2.tgz#c11cd2817d3a401b7ba0f5a420f35c56139b1c1e"
|
||||||
|
|
||||||
"@types/fs-extra@2.x.x":
|
"@types/fs-extra@3.x.x":
|
||||||
version "2.1.0"
|
version "3.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-2.1.0.tgz#8b350239c0455d92b8d3c626edac193860ff395f"
|
resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-3.0.0.tgz#13e5566e4d780618ba52bd55e0dc713d7a687e59"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/node" "*"
|
"@types/node" "*"
|
||||||
|
|
||||||
"@types/node@*":
|
"@types/node@*":
|
||||||
version "7.0.14"
|
version "7.0.18"
|
||||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.14.tgz#1470fa002a113316ac9d9ad163fc738c7a0de2a4"
|
resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.18.tgz#cd67f27d3dc0cfb746f0bdd5e086c4c5d55be173"
|
||||||
|
|
||||||
"@types/promises-a-plus@*":
|
"@types/promises-a-plus@*":
|
||||||
version "0.0.27"
|
version "0.0.27"
|
||||||
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
|
resolved "https://registry.yarnpkg.com/@types/promises-a-plus/-/promises-a-plus-0.0.27.tgz#c64651134614c84b8f5d7114ce8901d36a609780"
|
||||||
|
|
||||||
"@types/q@0.0.32":
|
"@types/through2@^2.0.32":
|
||||||
version "0.0.32"
|
|
||||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5"
|
|
||||||
|
|
||||||
"@types/through2@^2.0.31":
|
|
||||||
version "2.0.32"
|
version "2.0.32"
|
||||||
resolved "https://registry.yarnpkg.com/@types/through2/-/through2-2.0.32.tgz#470024450f1ab7640f19f9ebf42d3da574c26129"
|
resolved "https://registry.yarnpkg.com/@types/through2/-/through2-2.0.32.tgz#470024450f1ab7640f19f9ebf42d3da574c26129"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -78,7 +74,7 @@ bindings@^1.2.1:
|
|||||||
version "1.2.1"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
|
resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.2.1.tgz#14ad6113812d2d37d72e67b4cacb4bb726505f11"
|
||||||
|
|
||||||
brace-expansion@^1.0.0:
|
brace-expansion@^1.1.7:
|
||||||
version "1.1.7"
|
version "1.1.7"
|
||||||
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
|
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59"
|
||||||
dependencies:
|
dependencies:
|
||||||
@ -163,9 +159,9 @@ first-chunk-stream@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
readable-stream "^2.0.2"
|
readable-stream "^2.0.2"
|
||||||
|
|
||||||
fs-extra@^3.0.0:
|
fs-extra@^3.0.1:
|
||||||
version "3.0.0"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.0.tgz#244e0c4b0b8818f54040ec049d8a2bddc1202861"
|
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-3.0.1.tgz#3794f378c58b342ea7dbbb23095109c4b3b62291"
|
||||||
dependencies:
|
dependencies:
|
||||||
graceful-fs "^4.1.2"
|
graceful-fs "^4.1.2"
|
||||||
jsonfile "^3.0.0"
|
jsonfile "^3.0.0"
|
||||||
@ -190,15 +186,14 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
|||||||
version "4.1.11"
|
version "4.1.11"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
|
||||||
|
|
||||||
gulp-function@^2.2.3:
|
gulp-function@^2.2.9:
|
||||||
version "2.2.3"
|
version "2.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/gulp-function/-/gulp-function-2.2.3.tgz#8f62de74ce74de3fa91c48ba247472c1f56873bd"
|
resolved "https://registry.yarnpkg.com/gulp-function/-/gulp-function-2.2.9.tgz#de513103db9d817e94bb8aab45f30bf286f19ae5"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/q" "0.0.32"
|
"@types/through2" "^2.0.32"
|
||||||
"@types/through2" "^2.0.31"
|
smartq "^1.1.1"
|
||||||
q "^1.4.1"
|
through2 "^2.0.3"
|
||||||
through2 "^2.0.1"
|
typings-global "^1.0.16"
|
||||||
typings-global "^1.0.14"
|
|
||||||
|
|
||||||
home@^1.0.1:
|
home@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
@ -267,10 +262,10 @@ memwatch-next@^0.3.0:
|
|||||||
nan "^2.3.2"
|
nan "^2.3.2"
|
||||||
|
|
||||||
minimatch@^3.0.2:
|
minimatch@^3.0.2:
|
||||||
version "3.0.3"
|
version "3.0.4"
|
||||||
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
|
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
|
||||||
dependencies:
|
dependencies:
|
||||||
brace-expansion "^1.0.0"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimist@^1.2.0:
|
minimist@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
@ -310,10 +305,6 @@ process-nextick-args@^1.0.6, process-nextick-args@~1.0.6:
|
|||||||
version "1.0.7"
|
version "1.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
|
||||||
|
|
||||||
q@^1.4.1:
|
|
||||||
version "1.5.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.0.tgz#dd01bac9d06d30e6f219aecb8253ee9ebdc308f1"
|
|
||||||
|
|
||||||
readable-stream@^2.0.2, readable-stream@^2.1.5:
|
readable-stream@^2.0.2, readable-stream@^2.1.5:
|
||||||
version "2.2.9"
|
version "2.2.9"
|
||||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
|
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8"
|
||||||
@ -429,9 +420,9 @@ strip-bom@^2.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-utf8 "^0.2.0"
|
is-utf8 "^0.2.0"
|
||||||
|
|
||||||
tapbundle@^1.0.10:
|
tapbundle@^1.0.12:
|
||||||
version "1.0.10"
|
version "1.0.12"
|
||||||
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.10.tgz#36fd40036f6b5b738cbb9b5fc400df4c4031bc26"
|
resolved "https://registry.yarnpkg.com/tapbundle/-/tapbundle-1.0.12.tgz#71d29273aad280f5c4e15b2700430b2456a5d364"
|
||||||
dependencies:
|
dependencies:
|
||||||
early "^2.1.1"
|
early "^2.1.1"
|
||||||
leakage "^0.2.0"
|
leakage "^0.2.0"
|
||||||
@ -440,7 +431,7 @@ tapbundle@^1.0.10:
|
|||||||
smartq "^1.1.1"
|
smartq "^1.1.1"
|
||||||
typings-global "^1.0.16"
|
typings-global "^1.0.16"
|
||||||
|
|
||||||
through2@^2.0.1:
|
through2@^2.0.1, through2@^2.0.3:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
|
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
Reference in New Issue
Block a user