Compare commits

..

2 Commits

Author SHA1 Message Date
bafc22403a 4.0.16 2016-09-17 23:10:34 +02:00
94303b76b3 update typings 2016-09-17 23:10:27 +02:00
30 changed files with 878 additions and 1024 deletions

2
.gitignore vendored
View File

@ -1,7 +1,7 @@
node_modules/ node_modules/
coverage/ coverage/
pages/ pages/
public/
test/temp/ test/temp/

View File

@ -3,8 +3,6 @@ image: hosttoday/ht-docker-node:npmts
stages: stages:
- test - test
- release - release
- trigger
- pages
testLEGACY: testLEGACY:
stage: test stage: test
@ -30,30 +28,10 @@ testSTABLE:
release: release:
stage: release stage: release
environment: npm_registry
script: script:
- npmci publish - npmci publish
only: only:
- tags - tags
tags: tags:
- docker - docker
trigger:
stage: trigger
script:
- npmci trigger
only:
- tags
tags:
- docker
pages:
image: hosttoday/ht-docker-node:npmpage
stage: pages
script:
- npmci command npmpage --publish gitlab
only:
- tags
artifacts:
expire_in: 1 week
paths:
- public

15
.travis.yml Normal file
View File

@ -0,0 +1,15 @@
language: node_js
node_js:
- 4
- stable
deploy:
provider: npm
email: npm@lossless.digital
api_key:
secure: wIOQHE7Jbck2j5lcv1Rc8T9/1wbHNGLxqJ6pttNZ+hG1+w77TYnjNYuGtM2xQCXitXSFDoogU8MpiYieOQHYypFgJ6Ns8MTeKIzNJSnlOWdCSN/lVptscT8pyC6qD4IBAyi8m5F2HoGQR+IzcdDBPjXLaPbH7jn8hc9rNY+LNktmYOXfOr37P40pxYrf16GLwrkjQIK8pbkdIbNA0D0k3apTGqw+HsneN2D/O/zAYaB3ojm40ttgPAGYF5PO5t6uqIbPFgIPkMWsO1HbV6I+vOAuIf0KYUqnR/YZd5yFcxFt3c+bfyc8/LP4vy5FyKMLXHe4IXIjXPYetOSiVHgMMYaxawU51OqwIKO+87FJ1TdaVmacMFO0wagl2QS0ceQBn8KBUhljHu/fDInK82uy15Iddk44EhnTx1MIxxgH5WMM6aQB2vuqnViPghs4nA0Y/Dz2U69267fhvmZvEWWUndz058EksHdZsIt5WCqQErI/dWLXMGom94CuZv6nkoVHCw8CO5dqVvfqUFL7Qyw59kRbiUPItFVoiV8ptLUX9tnQ5xBukNRkFX34ViM9YvBRlGt5e//f+cWjUpXFvbrwkqusXArplpxIaUSsQKh7XaMB5DcZ5jDDdjKzIMDf6QWsMTU1rjfQS5ZS3eV5LPy0UlfpDGK28oK2/o8fM+yydVk=
on:
tags: true
repo: pushrocks/smartfile
notifications:
slack:
secure: f5Uss0z9RPl/QcA/DroB8loyE93aOYI6bqCkrsiUscmZtlv/TVQtT4dxqGA6uvcG6iTQDBi3Ul88dQxWkRm4IqbhY35/iMaV2dHW4FVYMAh8GQMbsfL2sALCcufxD9blw47awv3iFcwhV1EeyesscjgL0JIjduk96v/7G/6QIO2838M1lzlgtj+kRUkim8qkaEs1je3gRrhMUIjLuAdscMXyUKYFMjWo9ACSjVUl30R/ZNemb18itIja6i92GotreBgcfEMczvy58ovDC7xdJUsY8LjMI01DwY+WPRnI0tAhsuI8moBwwcdM4e3bAjKjucQRjO33O5bMWRZ6QCiYd0DnCEFyCPQLJ4GSy/tkD00n8ijLHAOSV3AH1zNbdK1EAdSPQXDvlI36KJn/2hyQLoitGHVUPr76ujJWP82ypO2tgIp3XQU0dJVCxDuHnwJO2+hjdI+gCPqxNTpjeujHx3UdkTGNRjuuf9dlZ/D08fApjYxy2fxItTqo3QjP/nrqvBXUOPP8yPHpjIT4H2t5Pr4SJjBGI6X4qhKyFj6s9rA/Xu1rL+45zu1C3uC3z+u3T9UwrbzJ/cZM6r6UQvQmUvIfBNaMlg4I/diQCDIPL+Rhop2nylY3IcHmJnk2itn7kOqj1tohCpFEml5pRuSZy4udWywkdtyBAsHWFLF7oiQ=

View File

@ -1,38 +1,13 @@
# smartfile # smartfile
make files easily accessible for processing in javascript. make files easily accessible for processing in javascript.
## Availabililty ## Status
[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/smartfile)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/smartfile)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/smartfile)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/smartfile/)
## Status for master
[![build status](https://gitlab.com/pushrocks/smartfile/badges/master/build.svg)](https://gitlab.com/pushrocks/smartfile/commits/master) [![build status](https://gitlab.com/pushrocks/smartfile/badges/master/build.svg)](https://gitlab.com/pushrocks/smartfile/commits/master)
[![coverage report](https://gitlab.com/pushrocks/smartfile/badges/master/coverage.svg)](https://gitlab.com/pushrocks/smartfile/commits/master)
[![Dependency Status](https://david-dm.org/pushrocks/smartfile.svg)](https://david-dm.org/pushrocks/smartfile) [![Dependency Status](https://david-dm.org/pushrocks/smartfile.svg)](https://david-dm.org/pushrocks/smartfile)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartfile/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartfile/master/dependencies/npm) [![bitHound Dependencies](https://www.bithound.io/github/pushrocks/smartfile/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/smartfile/master/dependencies/npm)
[![bitHound Code](https://www.bithound.io/github/pushrocks/smartfile/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartfile) [![bitHound Code](https://www.bithound.io/github/pushrocks/smartfile/badges/code.svg)](https://www.bithound.io/github/pushrocks/smartfile)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/) [![codecov.io](https://codecov.io/github/pushrocks/smartfile/coverage.svg?branch=master)](https://codecov.io/github/pushrocks/smartfile?branch=master)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
## Usage ## Usage
smartfile is an approach of being one tool to handle files in diverse environments. smartfile is an approach of being one tool to handle files in diverse environments.
It can fetch files from remote locations, work with local disks and do pure memory operations.
### Smartfile Sections
smartfile thinks in sections:
section | description
--- | ---
fs | (object) gets data from fs to somewhere
memory | gets data from memory to somewhere
remote | gets data from remote locations to somewhere
interpreter | (object) handles yaml and json
smartfile | (class) a virtual representation of a file, alternative to vinyl file format
For further information read the linked docs at the top of this README.
> MIT licensed | **©** 2016 - 2017 [Lossless GmbH](https://lossless.gmbh)
[![npm](https://pushrocks.gitlab.io/assets/repo-header.svg)](https://push.rocks)

10
appveyor.yml Normal file
View File

@ -0,0 +1,10 @@
environment:
nodejs_version: "4"
install:
- ps: Install-Product node $env:nodejs_version
- npm install
test_script:
- node --version
- npm --version
- npm test
build: off

12
dist/index.d.ts vendored
View File

@ -1,9 +1,9 @@
import 'typings-global'; import "typings-global";
import * as SmartfileFs from './smartfile.fs'; import * as SmartfileFs from "./smartfile.fs";
import * as SmartfileInterpreter from './smartfile.interpreter'; 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 } from "./smartfile.classes.smartfile";
export declare let fs: typeof SmartfileFs; export declare let fs: typeof SmartfileFs;
export declare let interpreter: typeof SmartfileInterpreter; export declare let interpreter: typeof SmartfileInterpreter;
export declare let memory: typeof SmartfileMemory; export declare let memory: typeof SmartfileMemory;

2
dist/index.js vendored
View File

@ -11,4 +11,4 @@ exports.interpreter = SmartfileInterpreter;
exports.memory = SmartfileMemory; exports.memory = SmartfileMemory;
exports.remote = SmartfileRemote; exports.remote = SmartfileRemote;
exports.requireReload = SmartfileFs.requireReload; exports.requireReload = SmartfileFs.requireReload;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBR3ZCLDhDQUE2QztBQUM3QyxnRUFBK0Q7QUFDL0Qsc0RBQXFEO0FBQ3JELHNEQUFxRDtBQUVyRCw2RUFBdUQ7QUFBL0Msa0RBQUEsU0FBUyxDQUFBO0FBRU4sUUFBQSxFQUFFLEdBQUcsV0FBVyxDQUFBO0FBQ2hCLFFBQUEsV0FBVyxHQUFHLG9CQUFvQixDQUFBO0FBQ2xDLFFBQUEsTUFBTSxHQUFHLGVBQWUsQ0FBQTtBQUN4QixRQUFBLE1BQU0sR0FBRyxlQUFlLENBQUE7QUFDeEIsUUFBQSxhQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBR3hCLE1BQVksV0FBVyxXQUFNLGdCQUFnQixDQUFDLENBQUE7QUFDOUMsTUFBWSxvQkFBb0IsV0FBTSx5QkFDdEMsQ0FBQyxDQUQ4RDtBQUMvRCxNQUFZLGVBQWUsV0FBTSxvQkFBb0IsQ0FBQyxDQUFBO0FBQ3RELE1BQVksZUFBZSxXQUFNLG9CQUFvQixDQUFDLENBQUE7QUFFdEQsNENBQXdCLCtCQUErQixDQUFDO0FBQWhELDREQUFnRDtBQUU3QyxVQUFFLEdBQUcsV0FBVyxDQUFDO0FBQ2pCLG1CQUFXLEdBQUcsb0JBQW9CLENBQUM7QUFDbkMsY0FBTSxHQUFHLGVBQWUsQ0FBQztBQUN6QixjQUFNLEdBQUcsZUFBZSxDQUFDO0FBQ3pCLHFCQUFhLEdBQUcsV0FBVyxDQUFDLGFBQWEsQ0FBQyJ9

View File

@ -2,6 +2,7 @@
class Smartfile { class Smartfile {
constructor() { constructor() {
} }
;
} }
exports.Smartfile = Smartfile; exports.Smartfile = Smartfile;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUNJO0lBRUEsQ0FBQztDQUNKO0FBSkQsOEJBSUMifQ== //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmNsYXNzZXMuc21hcnRmaWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtJQUNJO0lBRUEsQ0FBQzs7QUFDTCxDQUFDO0FBSlksaUJBQVMsWUFJckIsQ0FBQSJ9

View File

@ -1,4 +1,6 @@
import 'typings-global'; /// <reference types="q" />
import "typings-global";
import plugins = require("./smartfile.plugins");
/** /**
* *
* @param filePath * @param filePath
@ -10,7 +12,7 @@ export declare let fileExistsSync: (filePath: any) => boolean;
* @param filePath * @param filePath
* @returns {any} * @returns {any}
*/ */
export declare let fileExists: (filePath: any) => Promise<{}>; export declare let fileExists: (filePath: any) => plugins.q.Promise<{}>;
/** /**
* Checks if given path points to an existing directory * Checks if given path points to an existing directory
*/ */
@ -19,64 +21,37 @@ export declare let isDirectory: (pathArg: any) => boolean;
* Checks if a given path points to an existing file * Checks if a given path points to an existing file
*/ */
export declare let isFile: (pathArg: any) => boolean; export declare let isFile: (pathArg: any) => boolean;
/**
* copies a file from A to B on the local disk
*/
export declare let copy: (fromArg: string, toArg: string) => Promise<{}>;
/**
* copies a file SYNCHRONOUSLY from A to B on the local disk
*/
export declare let copySync: (fromArg: string, toArg: string) => boolean;
/** /**
* ensures that a directory is in place * ensures that a directory is in place
*/ */
export declare let ensureDir: (dirPathArg: string) => Promise<{}>; export declare let ensureDir: (dirPathArg: string) => plugins.q.Promise<{}>;
/** /**
* ensures that a directory is in place * ensures that a directory is in place
*/ */
export declare let ensureDirSync: (dirPathArg: string) => void; export declare let ensureDirSync: (dirPathArg: string) => void;
/** /**
* ensure an empty directory * copies a file from A to B on the local disk
* @executes ASYNC
*/ */
export declare let ensureEmptyDir: (dirPathArg: string) => Promise<{}>; export declare let copy: (fromArg: string, toArg: string) => plugins.q.Promise<{}>;
/** /**
* ensure an empty directory * copies a file SYNCHRONOUSLY from A to B on the local disk
* @executes SYNC
*/ */
export declare let ensureEmptyDirSync: (dirPathArg: string) => void; export declare let copySync: (fromArg: string, toArg: string) => boolean;
/**
* ensures that a file is on disk
* @param filePath the filePath to ensureDir
* @param the fileContent to place into a new file in case it doesn't exist yet
* @returns Promise<void>
* @exec ASYNC
*/
export declare let ensureFile: (filePathArg: any, initFileStringArg: any) => Promise<void>;
/**
* ensures that a file is on disk
* @param filePath the filePath to ensureDir
* @param the fileContent to place into a new file in case it doesn't exist yet
* @returns Promise<void>
* @exec SYNC
*/
export declare let ensureFileSync: (filePathArg: string, initFileStringArg: string) => void;
/** /**
* removes a file or folder from local disk * removes a file or folder from local disk
*/ */
export declare let remove: (pathArg: string) => Promise<void>; export declare let remove: (pathArg: string) => plugins.q.Promise<{}>;
/** /**
* removes a file SYNCHRONOUSLY from local disk * removes a file SYNCHRONOUSLY from local disk
*/ */
export declare let removeSync: (pathArg: string) => boolean; export declare let removeSync: (pathArg: string) => boolean;
/** /**
* removes an array of filePaths from disk *
* @param filePathArg
* @returns {*}
*/ */
export declare let removeMany: (filePathArrayArg: string[]) => Promise<void[]>; export declare let toGulpStreamSync: (filePathArg: string) => any;
/** export declare let toGulpDestSync: (folderPathArg: string) => any;
* like removeFilePathArray but SYNCHRONOUSLY
*/
export declare let removeManySync: (filePathArrayArg: string[]) => void;
/** /**
* *
* @param filePathArg * @param filePathArg
@ -107,7 +82,7 @@ export declare let requireReload: (path: string) => any;
* lists Folders in a directory on local disk * lists Folders in a directory on local disk
* @returns Promise * @returns Promise
*/ */
export declare let listFolders: (pathArg: string, regexFilter?: RegExp) => Promise<{}>; export declare let listFolders: (pathArg: string, regexFilter?: RegExp) => plugins.q.Promise<{}>;
/** /**
* lists Folders SYNCHRONOUSLY in a directory on local disk * lists Folders SYNCHRONOUSLY in a directory on local disk
* @returns an array with the folder names as strings * @returns an array with the folder names as strings
@ -117,7 +92,7 @@ export declare let listFoldersSync: (pathArg: string, regexFilter?: RegExp) => s
* lists Files in a directory on local disk * lists Files in a directory on local disk
* @returns Promise * @returns Promise
*/ */
export declare let listFiles: (pathArg: string, regexFilter?: RegExp) => Promise<{}>; export declare let listFiles: (pathArg: string, regexFilter?: RegExp) => plugins.q.Promise<{}>;
/** /**
* lists Files SYNCHRONOUSLY in a directory on local disk * lists Files SYNCHRONOUSLY in a directory on local disk
* @returns an array with the folder names as strings * @returns an array with the folder names as strings
@ -127,7 +102,7 @@ export declare let listFilesSync: (pathArg: string, regexFilter?: RegExp) => str
* lists all items (folders AND files) in a directory on local disk * lists all items (folders AND files) in a directory on local disk
* @returns Promise<string[]> * @returns Promise<string[]>
*/ */
export declare let listAllItems: (pathArg: string, regexFilter?: RegExp) => Promise<string[]>; export declare let listAllItems: (pathArg: string, regexFilter?: RegExp) => plugins.q.Promise<string[]>;
/** /**
* lists all items (folders AND files) in a directory on local disk * lists all items (folders AND files) in a directory on local disk
* @returns an array with the folder names as strings * @returns an array with the folder names as strings
@ -136,7 +111,6 @@ export declare let listAllItems: (pathArg: string, regexFilter?: RegExp) => Prom
export declare let listAllItemsSync: (pathArg: string, regexFilter?: RegExp) => string[]; export declare let listAllItemsSync: (pathArg: string, regexFilter?: RegExp) => string[];
/** /**
* lists a file tree using a miniMatch filter * lists a file tree using a miniMatch filter
* note: if the miniMatch Filter is an absolute path, the cwdArg will be omitted
* @returns Promise<string[]> string array with the absolute paths of all matching files * @returns Promise<string[]> string array with the absolute paths of all matching files
*/ */
export declare let listFileTree: (dirPathArg: string, miniMatchFilter: string) => Promise<string[]>; export declare let listFileTree: (dirPath: string, miniMatchFilter: string) => plugins.q.Promise<string[]>;

120
dist/smartfile.fs.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,3 @@
import 'typings-global'; import "typings-global";
export declare let filetype: (pathArg: string) => string; export declare let filetype: (pathArg: string) => string;
export declare let objectFile: (fileStringArg: string, fileTypeArg: any) => any; export declare let objectFile: (fileStringArg: string, fileTypeArg: any) => any;

View File

@ -3,19 +3,19 @@ require("typings-global");
const plugins = require("./smartfile.plugins"); const plugins = require("./smartfile.plugins");
exports.filetype = (pathArg) => { exports.filetype = (pathArg) => {
let extName = plugins.path.extname(pathArg); let extName = plugins.path.extname(pathArg);
let fileType = extName.replace(/\.([a-z]*)/, '$1'); // remove . form fileType let fileType = extName.replace(/\.([a-z]*)/, "$1"); //remove . form fileType
return fileType; return fileType;
}; };
exports.objectFile = (fileStringArg, fileTypeArg) => { exports.objectFile = (fileStringArg, fileTypeArg) => {
switch (fileTypeArg) { switch (fileTypeArg) {
case 'yml': case "yml":
case 'yaml': case "yaml":
return plugins.yaml.safeLoad(fileStringArg); return plugins.yaml.safeLoad(fileStringArg);
case 'json': case "json":
return JSON.parse(fileStringArg); return JSON.parse(fileStringArg);
default: default:
console.error('file type ' + fileTypeArg.blue + ' not supported'); plugins.beautylog.error("file type " + fileTypeArg.blue + " not supported");
break; break;
} }
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmludGVycHJldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwwQkFBdUI7QUFFdkIsK0NBQStDO0FBRXBDLFFBQUEsUUFBUSxHQUFHLENBQUMsT0FBZTtJQUNsQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMzQyxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLHlCQUF5QjtJQUMzRSxNQUFNLENBQUMsUUFBUSxDQUFBO0FBQ25CLENBQUMsQ0FBQTtBQUVVLFFBQUEsVUFBVSxHQUFHLENBQUMsYUFBcUIsRUFBRSxXQUFXO0lBQ3ZELE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEIsS0FBSyxLQUFLLENBQUU7UUFDWixLQUFLLE1BQU07WUFDUCxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDL0MsS0FBSyxNQUFNO1lBQ1AsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDcEM7WUFDSSxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUE7WUFDakUsS0FBSyxDQUFBO0lBQ2IsQ0FBQztBQUNMLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLmludGVycHJldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvc21hcnRmaWxlLmludGVycHJldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxRQUFPLGdCQUFnQixDQUFDLENBQUE7QUFFeEIsTUFBTyxPQUFPLFdBQVcscUJBQXFCLENBQUMsQ0FBQztBQUVyQyxnQkFBUSxHQUFHLENBQUMsT0FBYztJQUNqQyxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1QyxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUMzRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQztBQUVTLGtCQUFVLEdBQUcsQ0FBQyxhQUFvQixFQUFFLFdBQVc7SUFDdEQsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNsQixLQUFLLEtBQUssQ0FBRTtRQUNaLEtBQUssTUFBTTtZQUNQLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRCxLQUFLLE1BQU07WUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyQztZQUNJLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUM7WUFDNUUsS0FBSyxDQUFDO0lBQ2QsQ0FBQztBQUNMLENBQUMsQ0FBQSJ9

View File

@ -1,10 +1,6 @@
/// <reference types="node" /> /// <reference types="q" />
import 'typings-global'; import "typings-global";
export interface IVinylFile { import plugins = require("./smartfile.plugins");
contents: Buffer;
base: string;
path: string;
}
/** /**
* allows you to create a gulp stream * allows you to create a gulp stream
* from String, from an Array of Strings, from Vinyl File, from an Array of VinylFiles * from String, from an Array of Strings, from Vinyl File, from an Array of VinylFiles
@ -12,7 +8,7 @@ export interface IVinylFile {
* @returns stream.Readable * @returns stream.Readable
* @TODO: make it async; * @TODO: make it async;
*/ */
export declare let toGulpStream: (fileArg: string | string[] | IVinylFile | IVinylFile[], baseArg?: string) => any; export declare let toGulpStream: (fileArg: any, baseArg?: string) => any;
/** /**
* converts file to Object * converts file to Object
* @param fileStringArg * @param fileStringArg
@ -43,12 +39,12 @@ export declare let toVinylArraySync: (arrayArg: string[], optionsArg?: {
/** /**
* takes a vinylFile object and converts it to String * takes a vinylFile object and converts it to String
*/ */
export declare let vinylToStringSync: (fileArg: IVinylFile) => string; export declare let toStringSync: (fileArg: any) => any;
/** /**
* 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: any, filePathArg: any) => plugins.q.Promise<{}>;
export declare let toFsSync: (fileArg: any, filePathArg: string) => void; export declare let toFsSync: (fileArg: any, filePathArg: string) => void;

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,16 @@
import 'typings-global'; import "typings-global";
export import fs = require('fs'); export import beautylog = require("beautylog");
export import fsExtra = require('fs-extra'); export import fs = require("fs");
export import fsExtra = require("fs-extra");
export declare let gulp: any;
export declare let glob: any; export declare let glob: any;
export import path = require('path'); export declare let g: {
export import q = require('smartq'); remoteSrc: any;
export declare let request: any; };
export declare let requireReload: any; export import path = require("path");
export import smartpath = require('smartpath'); export import q = require("q");
export declare let vinyl: any;
export declare let vinylFile: any; export declare let vinylFile: any;
export declare let yaml: any; export declare let yaml: any;
export declare let request: any;
export declare let requireReload: any;

View File

@ -1,13 +1,18 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
exports.beautylog = require("beautylog");
exports.fs = require("fs"); exports.fs = require("fs");
exports.fsExtra = require("fs-extra"); exports.fsExtra = require("fs-extra");
exports.glob = require('glob'); exports.gulp = require("gulp");
exports.glob = require("glob");
exports.g = {
remoteSrc: require("gulp-remote-src")
};
exports.path = require("path"); exports.path = require("path");
exports.q = require("smartq"); exports.q = require("q");
exports.request = require('request'); exports.vinyl = require("vinyl");
exports.requireReload = require('require-reload'); exports.vinylFile = require("vinyl-file");
exports.smartpath = require("smartpath"); exports.yaml = require("js-yaml");
exports.vinylFile = require('vinyl-file'); exports.request = require("request");
exports.yaml = require('js-yaml'); exports.requireReload = require("require-reload");
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGZpbGUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsMEJBQXVCO0FBQ3ZCLDJCQUFnQztBQUNoQyxzQ0FBMkM7QUFDaEMsUUFBQSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2pDLCtCQUFvQztBQUNwQyw4QkFBbUM7QUFDeEIsUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0FBQzVCLFFBQUEsYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ3BELHlDQUE4QztBQUNuQyxRQUFBLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7QUFDakMsUUFBQSxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBIn0= //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLnBsdWdpbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGZpbGUucGx1Z2lucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsUUFBTyxnQkFBZ0IsQ0FBQyxDQUFBO0FBQ1YsaUJBQVMsV0FBVyxXQUFXLENBQUMsQ0FBQztBQUNqQyxVQUFFLFdBQVcsSUFBSSxDQUFDLENBQUM7QUFDbkIsZUFBTyxXQUFXLFVBQVUsQ0FBQyxDQUFDO0FBQ2pDLFlBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkIsWUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2QixTQUFDLEdBQUc7SUFDWCxTQUFTLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0NBQ3hDLENBQUM7QUFDWSxZQUFJLFdBQVcsTUFBTSxDQUFDLENBQUM7QUFDdkIsU0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3BCLGFBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekIsaUJBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDbEMsWUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxQixlQUFPLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLHFCQUFhLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMifQ==

View File

@ -1,14 +1,22 @@
import 'typings-global'; /// <reference types="q" />
export declare let toFs: (from: string, toPath: string) => Promise<{}>; import "typings-global";
import plugins = require("./smartfile.plugins");
export declare let toFs: (from: string, toPath: string) => plugins.q.Promise<{}>;
/**
*
* @param filePathArg
* @returns {*}
*/
export declare let toGulpStreamSync: (filePathArg: string, baseArg: string) => any;
/** /**
* *
* @param fromArg * @param fromArg
* @returns {any} * @returns {any}
*/ */
export declare let toObject: (fromArg: string) => Promise<{}>; export declare let toObject: (fromArg: string) => plugins.q.Promise<{}>;
/** /**
* *
* @param fromArg * @param fromArg
* @returns {any} * @returns {any}
*/ */
export declare let toString: (fromArg: string) => Promise<{}>; export declare let toString: (fromArg: string) => plugins.q.Promise<{}>;

View File

@ -3,13 +3,24 @@ require("typings-global");
const plugins = require("./smartfile.plugins"); const plugins = require("./smartfile.plugins");
const SmartfileInterpreter = require("./smartfile.interpreter"); const SmartfileInterpreter = require("./smartfile.interpreter");
exports.toFs = function (from, toPath) { exports.toFs = function (from, toPath) {
let done = plugins.q.defer(); var done = plugins.q.defer();
let stream = plugins.request(from).pipe(plugins.fsExtra.createWriteStream(toPath)); var stream = plugins.request(from).pipe(plugins.fsExtra.createWriteStream(toPath));
stream.on('finish', function () { stream.on('finish', function () {
done.resolve(toPath); done.resolve(toPath);
}); });
return done.promise; return done.promise;
}; };
/**
*
* @param filePathArg
* @returns {*}
*/
exports.toGulpStreamSync = function (filePathArg, baseArg) {
let stream = plugins.g.remoteSrc(filePathArg, {
base: baseArg
});
return stream;
};
/** /**
* *
* @param fromArg * @param fromArg
@ -19,7 +30,7 @@ exports.toObject = function (fromArg) {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) { plugins.request.get(fromArg, function (error, response, bodyString) {
let returnObject; let returnObject;
if (!error && response.statusCode === 200) { if (!error && response.statusCode == 200) {
returnObject = SmartfileInterpreter.objectFile(bodyString, SmartfileInterpreter.filetype(fromArg)); returnObject = SmartfileInterpreter.objectFile(bodyString, SmartfileInterpreter.filetype(fromArg));
done.resolve(returnObject); done.resolve(returnObject);
} }
@ -28,6 +39,7 @@ exports.toObject = function (fromArg) {
returnObject = undefined; returnObject = undefined;
done.reject(returnObject); done.reject(returnObject);
} }
;
}); });
return done.promise; return done.promise;
}; };
@ -39,15 +51,16 @@ exports.toObject = function (fromArg) {
exports.toString = (fromArg) => { exports.toString = (fromArg) => {
let done = plugins.q.defer(); let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) { plugins.request.get(fromArg, function (error, response, bodyString) {
if (!error && response.statusCode === 200) { if (!error && response.statusCode == 200) {
done.resolve(bodyString); done.resolve(bodyString);
} }
else { else {
console.error('could not get remote file from ' + fromArg); plugins.beautylog.error('could not get remote file from ' + fromArg);
bodyString = undefined; bodyString = undefined;
done.reject(bodyString); done.reject(bodyString);
} }
;
}); });
return done.promise; return done.promise;
}; };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLnJlbW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZmlsZS5yZW1vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDBCQUF1QjtBQUN2QiwrQ0FBK0M7QUFDL0MsZ0VBQWdFO0FBRXJELFFBQUEsSUFBSSxHQUFHLFVBQVMsSUFBWSxFQUFDLE1BQWM7SUFDbEQsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtJQUM1QixJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDbEYsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUM7UUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3hCLENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDdkIsQ0FBQyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNRLFFBQUEsUUFBUSxHQUFHLFVBQVMsT0FBZTtJQUMxQyxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLEtBQUssRUFBRSxRQUFRLEVBQUUsVUFBVTtRQUM5RCxJQUFJLFlBQVksQ0FBQTtRQUNoQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEMsWUFBWSxHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDakcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM5QixDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDSixPQUFPLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxHQUFHLE9BQU8sQ0FBQyxDQUFBO1lBQ3hELFlBQVksR0FBRyxTQUFTLENBQUE7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUM3QixDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFFRDs7OztHQUlHO0FBQ1EsUUFBQSxRQUFRLEdBQUcsQ0FBQyxPQUFlO0lBQ2xDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQzlELEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzVCLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsT0FBTyxDQUFDLENBQUE7WUFDMUQsVUFBVSxHQUFHLFNBQVMsQ0FBQTtZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzNCLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSJ9 //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmaWxlLnJlbW90ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0ZmlsZS5yZW1vdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLFFBQU8sZ0JBQWdCLENBQUMsQ0FBQTtBQUN4QixNQUFPLE9BQU8sV0FBVyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ2hELE1BQU8sb0JBQW9CLFdBQVcseUJBQXlCLENBQUMsQ0FBQztBQUV0RCxZQUFJLEdBQUcsVUFBUyxJQUFXLEVBQUMsTUFBYTtJQUNoRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzdCLElBQUksTUFBTSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUNuRixNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBQztRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ1Esd0JBQWdCLEdBQUcsVUFBUyxXQUFrQixFQUFDLE9BQWM7SUFDcEUsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFO1FBQzFDLElBQUksRUFBRSxPQUFPO0tBQ2hCLENBQUMsQ0FBQztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBRUY7Ozs7R0FJRztBQUNRLGdCQUFRLEdBQUcsVUFBUyxPQUFjO0lBQ3pDLElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDN0IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxVQUFVO1FBQzlELElBQUksWUFBWSxDQUFDO1FBQ2pCLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN2QyxZQUFZLEdBQUcsb0JBQW9CLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNKLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDekQsWUFBWSxHQUFHLFNBQVMsQ0FBQztZQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFBQSxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ1EsZ0JBQVEsR0FBRyxDQUFDLE9BQWM7SUFDakMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM3QixPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLFVBQVU7UUFDOUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEdBQUcsT0FBTyxDQUFDLENBQUM7WUFDckUsVUFBVSxHQUFHLFNBQVMsQ0FBQztZQUN2QixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVCLENBQUM7UUFBQSxDQUFDO0lBQ04sQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztBQUN4QixDQUFDLENBQUMifQ==

View File

@ -1,6 +1,6 @@
{ {
"name": "smartfile", "name": "smartfile",
"version": "4.1.5", "version": "4.0.16",
"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",
@ -27,22 +27,25 @@
"homepage": "https://gitlab.com/pushrocks/smartfile", "homepage": "https://gitlab.com/pushrocks/smartfile",
"dependencies": { "dependencies": {
"@types/fs-extra": "0.x.x", "@types/fs-extra": "0.x.x",
"@types/vinyl": "^2.0.0", "@types/q": "0.x.x",
"fs-extra": "^2.0.0", "beautylog": "^5.0.23",
"glob": "^7.1.1", "fs-extra": "^0.30.0",
"js-yaml": "^3.7.0", "glob": "^7.0.6",
"request": "^2.79.0", "gulp": "^3.9.1",
"gulp-remote-src": "^0.4.1",
"js-yaml": "^3.6.1",
"q": "^1.4.1",
"request": "^2.74.0",
"require-reload": "0.2.2", "require-reload": "0.2.2",
"smartpath": "^3.2.7",
"smartq": "^1.0.4",
"typings-global": "^1.0.14", "typings-global": "^1.0.14",
"vinyl": "^2.0.1", "vinyl": "^1.2.0",
"vinyl-file": "^3.0.0" "vinyl-file": "^2.0.0"
}, },
"devDependencies": { "devDependencies": {
"gulp-function": "^2.2.3", "@types/should": "^8.1.29",
"npmts-g": "^6.0.0", "gulp-function": "^1.3.6",
"smartchai": "^1.0.1", "npmts-g": "^5.2.8",
"should": "^11.1.0",
"typings-test": "^1.0.3" "typings-test": "^1.0.3"
} }
} }

2
test/test.d.ts vendored
View File

@ -1 +1 @@
import 'typings-test'; import "typings-test";

File diff suppressed because one or more lines are too long

View File

@ -1,227 +1,226 @@
import 'typings-test' import "typings-test";
import * as smartfile from '../dist/index' import * as smartfile from "../dist/index";
import path = require('path') import beautylog = require("beautylog");
let gulp = require("gulp");
let gFunction = require("gulp-function");
import path = require("path");
import should = require("should");
let vinyl = require("vinyl");
import { expect } from 'smartchai' describe("smartfile".yellow,function(){
describe(".fs".yellow,function(){
import * as vinyl from 'vinyl' describe(".fileExistsSync".yellow,function(){
it("should return an accurate boolean",function(){
describe('smartfile', function () { (smartfile.fs.fileExistsSync("./test/mytest.json")).should.be.true();
describe('.fs', function () { (smartfile.fs.fileExistsSync("./test/notthere.json")).should.be.false();
describe('.fileExistsSync', function () { });
it('should return an accurate boolean', function () { });
expect(smartfile.fs.fileExistsSync('./test/mytest.json')).to.be.true describe(".fileExists".yellow,function(){
expect(smartfile.fs.fileExistsSync('./test/notthere.json')).be.false it("should return a working promise",function(){
}) (smartfile.fs.fileExists("./test/mytest.json")).should.be.Promise();
}) (smartfile.fs.fileExists("./test/mytest.json")).should.be.fulfilled();
describe('.fileExists', function () { (smartfile.fs.fileExists("./test/notthere.json")).should.not.be.fulfilled();
it('should return a working promise', function () { });
expect(smartfile.fs.fileExists('./test/mytest.json')).to.be.a('promise') });
expect(smartfile.fs.fileExists('./test/mytest.json')).to.be.fulfilled describe(".listFoldersSync()",function(){
expect(smartfile.fs.fileExists('./test/notthere.json')).to.not.be.fulfilled it("should get the file type from a string",function(){
}) smartfile.fs.listFoldersSync("./test/").should.containDeep([ "testfolder"]);
}) smartfile.fs.listFoldersSync("./test/").should.not.containDeep([ "notExistentFolder"]);
describe('.listFoldersSync()', function () { });
it('should get the file type from a string', function () { });
expect(smartfile.fs.listFoldersSync('./test/')).to.deep.include('testfolder') describe(".listFolders()",function(){
expect(smartfile.fs.listFoldersSync('./test/')).to.not.deep.include('notExistentFolder') it("should get the file type from a string",function(done){
}) smartfile.fs.listFolders("./test/")
})
describe('.listFolders()', function () {
it('should get the file type from a string', function (done) {
smartfile.fs.listFolders('./test/')
.then(function(folderArrayArg){ .then(function(folderArrayArg){
expect(folderArrayArg).to.deep.include('testfolder') folderArrayArg.should.containDeep([ "testfolder"]);
expect(folderArrayArg).to.not.deep.include('notExistentFolder') folderArrayArg.should.not.containDeep([ "notExistentFolder"]);
done() done();
}) });
}) });
}) });
describe('.listFilesSync()', function () { describe(".listFilesSync()",function(){
it('should get the file type from a string', function () { it("should get the file type from a string",function(){
expect(smartfile.fs.listFilesSync('./test/')).to.deep.include('mytest.json') smartfile.fs.listFilesSync("./test/").should.containDeep([ "mytest.json"]);
expect(smartfile.fs.listFilesSync('./test/')).to.not.deep.include('notExistentFile') smartfile.fs.listFilesSync("./test/").should.not.containDeep([ "notExistentFile"]);
expect(smartfile.fs.listFilesSync('./test/', /mytest\.json/)).to.deep.include('mytest.json') smartfile.fs.listFilesSync("./test/",/mytest\.json/).should.containDeep([ "mytest.json"]);
expect(smartfile.fs.listFilesSync('./test/', /mytests.json/)).to.not.deep.include('mytest.json') smartfile.fs.listFilesSync("./test/",/mytests.json/).should.not.containDeep([ "mytest.json"]);
}) });
}) });
describe('.listFiles()', function () { describe(".listFiles()",function(){
it('should get the file type from a string', function (done) { it("should get the file type from a string",function(done){
smartfile.fs.listFiles('./test/') smartfile.fs.listFiles("./test/")
.then(function(folderArrayArg){ .then(function(folderArrayArg){
expect(folderArrayArg).to.deep.include('mytest.json') folderArrayArg.should.containDeep([ "mytest.json"]);
expect(folderArrayArg).to.not.deep.include('notExistentFile') folderArrayArg.should.not.containDeep([ "notExistentFile"]);
done() done();
}) });
}) });
}) });
describe('.listFileTree()', function () { describe(".listFileTree()",function(){
it('should get a file tree', function (done) { it("should get a file tree",function(done){
smartfile.fs.listFileTree(path.resolve('./test/'), '**/*.txt') smartfile.fs.listFileTree(path.resolve("./test/"),"**/*.txt")
.then(function(folderArrayArg){ .then(function(folderArrayArg){
expect(folderArrayArg).to.deep.include('testfolder/testfile1.txt') folderArrayArg.should.containDeep([ "testfolder/testfile1.txt"]);
expect(folderArrayArg).to.not.deep.include('mytest.json') folderArrayArg.should.not.containDeep([ "mytest.json"]);
done() done();
}) });
}) });
}) });
describe('.copy()', function () { describe(".copy()".yellow,function(){
it('should copy a directory', function () { it("should copy a directory",function(){
smartfile.fs.copy('./test/testfolder/', './test/temp/') smartfile.fs.copy("./test/testfolder/","./test/temp/")
}) });
it('should copy a file', function () { it("should copy a file",function(){
smartfile.fs.copy('./test/mytest.yaml', './test/temp/') smartfile.fs.copy("./test/mytest.yaml","./test/temp/")
}) });
it('should copy a file and rename it', function () { it("should copy a file and rename it",function(){
smartfile.fs.copy('./test/mytest.yaml', './test/temp/mytestRenamed.yaml') smartfile.fs.copy("./test/mytest.yaml","./test/temp/mytestRenamed.yaml")
}) });
}) });
describe('.remove()', function () { describe(".remove()",function(){
it('should remove an entire directory', function () { it("should remove an entire directory",function(){
}) });
it('smartfile.fs.remove -> should remove single files', function (done) { it("should remove single files",function(){
smartfile.fs.remove('./test/temp/mytestRenamed.yaml')
.then(() => { done() })
})
it('smartfile.fs.removeSync -> should remove single files synchronouly',function() {
smartfile.fs.removeSync('./test/temp/testfile1.txt')
expect(smartfile.fs.fileExistsSync('./test/temp/testfile1.txt')).to.be.false
})
it('smartfile.fs.removeMany -> should remove and array of files',function(done) {
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/testfile2.txt')).to.be.false
done()
})
})
it('smartfile.fs.removeManySync -> should remove and array of single files synchronouly',function() {
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/testfile2.txt')).to.be.false
})
})
})
describe('.interpreter', function () { });
describe('.filetype()', function () { });
it('should get the file type from a string', function () { });
expect(smartfile.interpreter.filetype('./somefolder/data.json')).equal('json')
})
})
})
describe('.fs', function () { describe(".interpreter",function(){
describe('.toObjectSync()', function () { describe(".filetype()",function(){
it('should read an ' + '.yaml' + ' file to an object', function () { it("should get the file type from a string",function(){
let testData = smartfile.fs.toObjectSync('./test/mytest.yaml') smartfile.interpreter.filetype("./somefolder/data.json").should.equal("json");
expect(testData).have.property('key1', 'this works') });
expect(testData).have.property('key2', 'this works too') });
});
})
it('should state unknown file type for unknown file types', function () {
let testData = smartfile.fs.toObjectSync('./test/mytest.txt')
})
it('should read an ' + '.json' + ' file to an object', function () {
let testData = smartfile.fs.toObjectSync('./test/mytest.json')
expect(testData).have.property('key1', 'this works')
expect(testData).have.property('key2', 'this works too')
}) describe(".fs".yellow,function(){
}) describe("toGulpStreamSync() and toGulpDestSync",function(){
describe('.toStringSync()', function () { it("should produce a gulp stream",function(done){
it('should read a file to a string', function () { smartfile.fs.toGulpStreamSync("./test/my*")
expect(smartfile.fs.toStringSync('./test/mytest.txt')) .pipe(smartfile.fs.toGulpDestSync("./test/temp/"))
.to.equal('Some TestString &&%$') .pipe(gFunction(done,"atEnd"));
}) });
}) });
describe('.toVinylSync', function () { describe(".toObjectSync()".yellow,function(){
it('should read an ' + '.json OR .yaml' + ' file to an ' + 'vinyl file object', function () { it("should read an " + ".yaml".blue + " file to an object",function(){
let testData = smartfile.fs.toVinylSync('./test/mytest.json') let testData = smartfile.fs.toObjectSync("./test/mytest.yaml");
expect(vinyl.isVinyl(testData)).to.be.true testData.should.have.property("key1","this works");
}) testData.should.have.property("key2","this works too");
})
})
describe('.memory', function () { });
describe('.toGulpStream()', function () { it("should state unknown file type for unknown file types",function(){
it('should produce a valid gulp stream', function () { let testData = smartfile.fs.toObjectSync("./test/mytest.txt");
let localArray = ['test1', 'test2', 'test3'] });
it("should read an " + ".json".blue + " file to an object",function(){
let testData = smartfile.fs.toObjectSync("./test/mytest.json");
testData.should.have.property("key1","this works");
testData.should.have.property("key2","this works too");
});
});
describe(".toStringSync()".yellow,function(){
it("should read a file to a string",function(){
should.equal(
smartfile.fs.toStringSync("./test/mytest.txt"),
"Some TestString &&%$"
);
});
});
describe(".toVinylSync".yellow,function(){
it("should read an " + ".json OR .yaml".blue + " file to an " + "vinyl file object".cyan,function(){
let testData = smartfile.fs.toVinylSync("./test/mytest.json");
(vinyl.isVinyl(testData)).should.be.true();
});
});
});
describe(".memory",function(){
describe(".toGulpStream()",function(){
it("should produce a valid gulp stream",function(){
let localArray = ["test1","test2","test3"];
smartfile.memory.toGulpStream(localArray) smartfile.memory.toGulpStream(localArray)
}) .pipe(gulp.dest("./test/temp/"));
}) });
describe('toVinylFileSync()', function () { });
it('should produce a vinylFile', function () { describe("toVinylFileSync()",function(){
let localString = 'myString' it("should produce a vinylFile",function(){
let localOptions = { filename: 'vinylfile2', base: '/someDir' } let localString = "myString";
expect(smartfile.memory.toVinylFileSync(localString, localOptions) instanceof vinyl).to.be.true let localOptions = {filename:"vinylfile2",base:"/someDir"};
}) (smartfile.memory.toVinylFileSync(localString,localOptions) instanceof vinyl).should.be.true();
}) });
describe('toVinylArraySync()', function () { });
it('should produce a an array of vinylfiles', function () { describe("toVinylArraySync()",function(){
let localStringArray = ['string1', 'string2', 'string3'] it("should produce a an array of vinylfiles",function(){
let localOptions = { filename: 'vinylfile2', base: '/someDir' } let localStringArray = ["string1","string2","string3"];
let testResult = smartfile.memory.toVinylArraySync(localStringArray, localOptions) let localOptions = {filename:"vinylfile2",base:"/someDir"};
expect(testResult).to.be.a('array') let testResult = smartfile.memory.toVinylArraySync(localStringArray,localOptions);
expect(testResult.length === 3).to.be.true testResult.should.be.Array();
(testResult.length === 3).should.be.true();
for (let myKey in testResult){ for (let myKey in testResult){
expect(testResult[myKey] instanceof vinyl).to.be.true (testResult[myKey] instanceof vinyl).should.be.true();
} }
}) });
}) });
describe('vinylToStringSync()', function () { describe("toStringSync()",function(){
it('should produce a String from vinyl file', function () { it("should produce a String from vinyl file",function(){
let localString = smartfile.memory.vinylToStringSync(new vinyl({ let localString = smartfile.memory.toStringSync(new vinyl({
base: '/', base:"/",
path: '/test.txt', path:"/test.txt",
contents: new Buffer('myString') contents: new Buffer("myString")
})) }));
expect(localString).equal('myString') localString.should.equal("myString");
}) });
}) });
describe('toFs()', function () { describe("toFs()",function(){
it('should write a file to disk and return a promise', function (done) { it("should write a file to disk and return a promise",function(done){
let localString = 'myString' let localString = "myString";
smartfile.memory.toFs( smartfile.memory.toFs(
localString, localString,
path.join(process.cwd(), './test/temp/testMemToFs.txt') path.join(process.cwd(),"./test/temp/testMemToFs.txt")
).then(done) ).then(done);
}) });
}) });
describe('toFsSync()', function () { describe("toFsSync()",function(){
it('should write a file to disk and return true if successfull', function () { it("should write a file to disk and return true if successfull",function(){
let localString = 'myString' let localString = "myString";
smartfile.memory.toFsSync( smartfile.memory.toFsSync(
localString, localString,
path.join(process.cwd(), './test/temp/testMemToFsSync.txt') path.join(process.cwd(),"./test/temp/testMemToFsSync.txt")
) );
}) });
}) });
}) });
describe('.remote', function () { describe(".remote",function(){
describe('.toString()', function () { describe("toGulpStreamSync()",function(){
it('should load a remote file to a variable', function (done) { it("should produce a gulp stream",function(done){
this.timeout(5000) smartfile.remote.toGulpStreamSync("mytest.txt","https://raw.githubusercontent.com/pushrocks/smartfile/master/test/")
smartfile.remote.toString( .pipe(smartfile.fs.toGulpDestSync("./test/temp/"))
'https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt' .pipe(gFunction(done,"atEnd"));
).then(function (responseString) { });
expect(responseString).to.equal('Some TestString &&%$') });
done() describe(".toString()",function(){
}) it("should load a remote file to a variable",function(done){
}) this.timeout(5000);
it('should reject a Promise when the link is false', function (done) { smartfile.remote.toString("https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt")
this.timeout(10000) .then(function(responseString){
smartfile.remote.toString('https://push.rocks/doesnotexist.txt') should.equal(responseString,"Some TestString &&%$");
.then( done();
function () { });
throw new Error('this test should not be resolved') });
}, it("should reject a Promise when the link is false",function(done){
function () { this.timeout(10000);
done() smartfile.remote.toString("https://push.rocks/doesnotexist.txt")
} .then(function(){
) throw new Error("this test should not be resolved");
}) },function(){
}) done();
}) })
});
});
}) })
});

View File

@ -1,15 +1,15 @@
import 'typings-global' import "typings-global";
import * as plugins from './smartfile.plugins' import * as plugins from "./smartfile.plugins";
import * as SmartfileFs from './smartfile.fs' import * as SmartfileFs from "./smartfile.fs";
import * as SmartfileInterpreter from './smartfile.interpreter' 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} from "./smartfile.classes.smartfile";
export let fs = SmartfileFs export let fs = SmartfileFs;
export let interpreter = SmartfileInterpreter export let interpreter = SmartfileInterpreter;
export let memory = SmartfileMemory export let memory = SmartfileMemory;
export let remote = SmartfileRemote export let remote = SmartfileRemote;
export let requireReload = SmartfileFs.requireReload export let requireReload = SmartfileFs.requireReload;

View File

@ -1,5 +1,5 @@
export class Smartfile { export class Smartfile {
constructor(){ constructor(){
} };
} }

View File

@ -1,8 +1,8 @@
import 'typings-global' import "typings-global";
import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require("./smartfile.interpreter");
import plugins = require('./smartfile.plugins')
import SmartfileInterpreter = require('./smartfile.interpreter')
import * as memory from './smartfile.memory'
/*=============================================================== /*===============================================================
============================ Checks ============================= ============================ Checks =============================
===============================================================*/ ===============================================================*/
@ -13,15 +13,16 @@ import * as memory from './smartfile.memory'
* @returns {boolean} * @returns {boolean}
*/ */
export let fileExistsSync = function(filePath):boolean { export let fileExistsSync = function(filePath):boolean {
let fileExistsBool: boolean = false let fileExistsBool:boolean = false;
try { try {
plugins.fsExtra.readFileSync(filePath) plugins.fsExtra.readFileSync(filePath);
fileExistsBool = true fileExistsBool = true
} catch (err) {
fileExistsBool = false
} }
return fileExistsBool catch(err){
fileExistsBool = false;
} }
return fileExistsBool;
};
/** /**
* *
@ -29,159 +30,104 @@ export let fileExistsSync = function(filePath): boolean {
* @returns {any} * @returns {any}
*/ */
export let fileExists = function(filePath){ export let fileExists = function(filePath){
let done = plugins.q.defer() let done = plugins.q.defer();
plugins.fs.access(filePath, 4, function (err) { plugins.fs.access(filePath, plugins.fs.R_OK, function (err) {
err ? done.reject(err) : done.resolve() err ? done.reject(err) : done.resolve();
}) });
return done.promise return done.promise;
} };
/** /**
* 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() return plugins.fsExtra.statSync(pathArg).isDirectory();
} };
/** /**
* Checks if a given path points to an existing file * Checks if a given path points to an existing file
*/ */
export let isFile = function(pathArg):boolean{ export let isFile = function(pathArg):boolean{
return plugins.fsExtra.statSync(pathArg).isFile() return plugins.fsExtra.statSync(pathArg).isFile();
} };
/*=============================================================== /*===============================================================
============================ FS ACTIONS ========================= ============================ FS ACTIONS =========================
===============================================================*/ ===============================================================*/
/**
* copies a file from A to B on the local disk
*/
export let copy = function(fromArg: string, toArg: string){
let done = plugins.q.defer()
plugins.fsExtra.copy(fromArg,toArg,{},function(){
done.resolve()
})
return done.promise
}
/**
* copies a file SYNCHRONOUSLY from A to B on the local disk
*/
export let copySync = function(fromArg: string,toArg: string): boolean{
plugins.fsExtra.copySync(fromArg,toArg)
return true
}
/** /**
* ensures that a directory is in place * ensures that a directory is in place
*/ */
export let ensureDir = (dirPathArg:string) => { export let ensureDir = (dirPathArg:string) => {
let done = plugins.q.defer() let done = plugins.q.defer();
plugins.fsExtra.ensureDir(dirPathArg,done.resolve) plugins.fsExtra.ensureDir(dirPathArg,done.resolve);
return done.promise return done.promise;
} }
/** /**
* ensures that a directory is in place * ensures that a directory is in place
*/ */
export let ensureDirSync = (dirPathArg:string) => { export let ensureDirSync = (dirPathArg:string) => {
plugins.fsExtra.ensureDirSync(dirPathArg) plugins.fsExtra.ensureDirSync(dirPathArg);
} }
/** /**
* ensure an empty directory * copies a file from A to B on the local disk
* @executes ASYNC
*/ */
export let ensureEmptyDir = (dirPathArg: string) => { export let copy = function(fromArg:string, toArg:string){
let done = plugins.q.defer() var done = plugins.q.defer();
plugins.fsExtra.ensureDir(dirPathArg,() => { plugins.fsExtra.copy(fromArg,toArg,{},function(){
plugins.fsExtra.emptyDir(dirPathArg, done.resolve) done.resolve();
}) });
return done.promise return done.promise;
} };
/** /**
* ensure an empty directory * copies a file SYNCHRONOUSLY from A to B on the local disk
* @executes SYNC
*/ */
export let ensureEmptyDirSync = (dirPathArg: string) => { export let copySync = function(fromArg:string,toArg:string):boolean{
plugins.fsExtra.ensureDirSync(dirPathArg) plugins.fsExtra.copySync(fromArg,toArg);
plugins.fsExtra.emptyDirSync(dirPathArg) return true;
} };
/**
* ensures that a file is on disk
* @param filePath the filePath to ensureDir
* @param the fileContent to place into a new file in case it doesn't exist yet
* @returns Promise<void>
* @exec ASYNC
*/
export let ensureFile = (filePathArg, initFileStringArg): Promise<void> => {
let done = plugins.q.defer<void>()
ensureFileSync(filePathArg, initFileStringArg)
done.resolve()
return done.promise
}
/**
* ensures that a file is on disk
* @param filePath the filePath to ensureDir
* @param the fileContent to place into a new file in case it doesn't exist yet
* @returns Promise<void>
* @exec SYNC
*/
export let ensureFileSync = (filePathArg: string, initFileStringArg: string): void => {
if (fileExistsSync(filePathArg)) {
return null
} else {
memory.toFsSync(initFileStringArg, filePathArg)
}
}
/** /**
* removes a file or folder from local disk * removes a file or folder from local disk
*/ */
export let remove = function(pathArg: string): Promise<void> { export let remove = function(pathArg:string){
let done = plugins.q.defer<void>() var done = plugins.q.defer();
plugins.fsExtra.remove(pathArg,function(){ plugins.fsExtra.remove(pathArg,function(){
done.resolve() done.resolve();
}) });
return done.promise return done.promise;
} };
/** /**
* removes a file SYNCHRONOUSLY from local disk * removes a file SYNCHRONOUSLY from local disk
*/ */
export let removeSync = function(pathArg:string):boolean{ export let removeSync = function(pathArg:string):boolean{
plugins.fsExtra.removeSync(pathArg) plugins.fsExtra.removeSync(pathArg);
return true return true;
} };
/**
* removes an array of filePaths from disk
*/
export let removeMany = function(filePathArrayArg: string[]){
let promiseArray: Promise<void>[] = []
for (let filePath of filePathArrayArg) {
promiseArray.push(remove(filePath))
}
return Promise.all(promiseArray)
}
/**
* like removeFilePathArray but SYNCHRONOUSLY
*/
export let removeManySync = function(filePathArrayArg: string[]): void {
for (let filePath of filePathArrayArg) {
removeSync(filePath)
}
}
/*=============================================================== /*===============================================================
============================ Write/Read ========================= ============================ Write/Read =========================
===============================================================*/ ===============================================================*/
/**
*
* @param filePathArg
* @returns {*}
*/
export let toGulpStreamSync = function(filePathArg:string){
let stream = plugins.gulp.src(filePathArg);
return stream;
};
export let toGulpDestSync = function(folderPathArg:string){
return plugins.gulp.dest(folderPathArg);
};
/** /**
* *
* @param filePathArg * @param filePathArg
@ -189,11 +135,11 @@ export let removeManySync = function(filePathArrayArg: string[]): void {
* @returns {any} * @returns {any}
*/ */
export let toObjectSync = function(filePathArg,fileTypeArg?) { export let toObjectSync = function(filePathArg,fileTypeArg?) {
let fileString = plugins.fsExtra.readFileSync(filePathArg, 'utf8') let fileString = plugins.fsExtra.readFileSync(filePathArg, 'utf8');
let fileType let fileType;
fileTypeArg ? fileType = fileTypeArg : fileType = SmartfileInterpreter.filetype(filePathArg) fileTypeArg ? fileType = fileTypeArg : fileType = SmartfileInterpreter.filetype(filePathArg);
return SmartfileInterpreter.objectFile(fileString,fileType) return SmartfileInterpreter.objectFile(fileString,fileType);
} };
/** /**
* reads a file content to a String * reads a file content to a String
@ -201,10 +147,10 @@ export let toObjectSync = function(filePathArg,fileTypeArg?) {
* @returns {string|Buffer|any} * @returns {string|Buffer|any}
*/ */
export let toStringSync = function(filePath) { export let toStringSync = function(filePath) {
let fileString let fileString;
fileString = plugins.fsExtra.readFileSync(filePath, 'utf8') fileString = plugins.fsExtra.readFileSync(filePath, "utf8");
return fileString return fileString;
} };
/** /**
* *
@ -213,8 +159,8 @@ export let toStringSync = function(filePath) {
* @returns {number} * @returns {number}
*/ */
export let toVinylSync = function(filePathArg,options = {}) { export let toVinylSync = function(filePathArg,options = {}) {
return plugins.vinylFile.readSync(filePathArg,options) return plugins.vinylFile.readSync(filePathArg,options);
} };
/** /**
* lets you reload files hot. * lets you reload files hot.
@ -222,26 +168,26 @@ export let toVinylSync = function(filePathArg,options = {}) {
* @returns {any} * @returns {any}
*/ */
export let requireReload = function(path:string){ export let requireReload = function(path:string){
return plugins.requireReload(path) return plugins.requireReload(path);
} };
/** /**
* lists Folders in a directory on local disk * lists Folders in a directory on local disk
* @returns Promise * @returns Promise
*/ */
export let listFolders = function(pathArg:string,regexFilter?:RegExp){ export let listFolders = function(pathArg:string,regexFilter?:RegExp){
let done = plugins.q.defer() let done = plugins.q.defer();
let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) { let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory() return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory();
}) });
if(regexFilter){ if(regexFilter){
folderArray = folderArray.filter((fileItem) => { folderArray = folderArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
}
done.resolve(folderArray)
return done.promise
} }
done.resolve(folderArray);
return done.promise;
};
/** /**
* lists Folders SYNCHRONOUSLY in a directory on local disk * lists Folders SYNCHRONOUSLY in a directory on local disk
@ -249,33 +195,34 @@ export let listFolders = function(pathArg: string,regexFilter?: RegExp){
*/ */
export let listFoldersSync = function(pathArg:string,regexFilter?:RegExp):string[]{ export let listFoldersSync = function(pathArg:string,regexFilter?:RegExp):string[]{
let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) { let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory() return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory();
}) });
if(regexFilter){ if(regexFilter){
folderArray = folderArray.filter((fileItem) => { folderArray = folderArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
} };
return folderArray return folderArray;
} };
/** /**
* lists Files in a directory on local disk * lists Files in a directory on local disk
* @returns Promise * @returns Promise
*/ */
export let listFiles = function(pathArg:string, regexFilter?:RegExp){ export let listFiles = function(pathArg:string, regexFilter?:RegExp){
let done = plugins.q.defer() let done = plugins.q.defer();
let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) { let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile() return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile();
}) });
if(regexFilter){ if(regexFilter){
fileArray = fileArray.filter((fileItem) => { fileArray = fileArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
} };
done.resolve(fileArray) done.resolve(fileArray);
return done.promise return done.promise;
} };
/** /**
* lists Files SYNCHRONOUSLY in a directory on local disk * lists Files SYNCHRONOUSLY in a directory on local disk
@ -283,31 +230,31 @@ export let listFiles = function(pathArg: string, regexFilter?: RegExp){
*/ */
export let listFilesSync = function(pathArg:string, regexFilter?:RegExp):string[]{ export let listFilesSync = function(pathArg:string, regexFilter?:RegExp):string[]{
let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) { let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile() return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile();
}) });
if(regexFilter){ if(regexFilter){
fileArray = fileArray.filter((fileItem) => { fileArray = fileArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
} };
return fileArray return fileArray;
} };
/** /**
* lists all items (folders AND files) in a directory on local disk * lists all items (folders AND files) in a directory on local disk
* @returns Promise<string[]> * @returns Promise<string[]>
*/ */
export let listAllItems = function(pathArg: string, regexFilter?: RegExp): Promise<string[]> { export let listAllItems = function(pathArg:string, regexFilter?:RegExp): plugins.q.Promise<string[]> {
let done = plugins.q.defer<string[]>() let done = plugins.q.defer<string[]>();
let allItmesArray = plugins.fsExtra.readdirSync(pathArg) let allItmesArray = plugins.fsExtra.readdirSync(pathArg);
if(regexFilter){ if(regexFilter){
allItmesArray = allItmesArray.filter((fileItem) => { allItmesArray = allItmesArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
};
done.resolve(allItmesArray);
return done.promise;
}; };
done.resolve(allItmesArray)
return done.promise
}
/** /**
* lists all items (folders AND files) in a directory on local disk * lists all items (folders AND files) in a directory on local disk
@ -316,41 +263,31 @@ export let listAllItems = function(pathArg: string, regexFilter?: RegExp): Promi
*/ */
export let listAllItemsSync = function(pathArg:string, regexFilter?:RegExp):string[]{ export let listAllItemsSync = function(pathArg:string, regexFilter?:RegExp):string[]{
let allItmesArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) { let allItmesArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile() return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile();
}) });
if(regexFilter){ if(regexFilter){
allItmesArray = allItmesArray.filter((fileItem) => { allItmesArray = allItmesArray.filter((fileItem) => {
return regexFilter.test(fileItem) return regexFilter.test(fileItem);
}) });
} };
return allItmesArray return allItmesArray;
} };
/** /**
* lists a file tree using a miniMatch filter * lists a file tree using a miniMatch filter
* note: if the miniMatch Filter is an absolute path, the cwdArg will be omitted
* @returns Promise<string[]> string array with the absolute paths of all matching files * @returns Promise<string[]> string array with the absolute paths of all matching files
*/ */
export let listFileTree = (dirPathArg: string, miniMatchFilter: string): Promise<string[]> => { export let listFileTree = (dirPath:string, miniMatchFilter:string): plugins.q.Promise<string[]> => {
let done = plugins.q.defer<string[]>() let done = plugins.q.defer<string[]>();
// handle absolute miniMatchFilter
let dirPath: string
if (plugins.path.isAbsolute(miniMatchFilter)) {
dirPath = '/'
} else {
dirPath = dirPathArg
}
let options = { let options = {
cwd:dirPath cwd:dirPath
} }
plugins.glob(miniMatchFilter,options,(err,files:string[]) => { plugins.glob(miniMatchFilter,options,(err,files:string[]) => {
if(err){ if(err){
console.log(err) console.log(err);
done.reject(err) done.reject(err);
} };
done.resolve(files) done.resolve(files);
}) });
return done.promise return done.promise;
} };

View File

@ -1,22 +1,22 @@
import 'typings-global' import "typings-global";
import plugins = require('./smartfile.plugins') import plugins = require("./smartfile.plugins");
export let filetype = (pathArg:string):string => { export let filetype = (pathArg:string):string => {
let extName = plugins.path.extname(pathArg) let extName = plugins.path.extname(pathArg);
let fileType = extName.replace(/\.([a-z]*)/,'$1') // remove . form fileType let fileType = extName.replace(/\.([a-z]*)/,"$1"); //remove . form fileType
return fileType return fileType;
} };
export let objectFile = (fileStringArg:string, fileTypeArg) => { 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.safeLoad(fileStringArg);
case 'json': case "json":
return JSON.parse(fileStringArg) return JSON.parse(fileStringArg);
default: default:
console.error('file type ' + fileTypeArg.blue + ' not supported') plugins.beautylog.error("file type " + fileTypeArg.blue + " not supported");
break break;
} }
} }

View File

@ -1,17 +1,9 @@
import 'typings-global' import "typings-global";
import plugins = require('./smartfile.plugins')
import SmartfileInterpreter = require('./smartfile.interpreter')
let vinyl = require('vinyl')
export interface IVinylFile {
contents: Buffer
base: string
path: string,
}
let Readable = require('stream').Readable
import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require("./smartfile.interpreter");
import vinyl = require("vinyl");
let Readable = require("stream").Readable;
/** /**
* allows you to create a gulp stream * allows you to create a gulp stream
* from String, from an Array of Strings, from Vinyl File, from an Array of VinylFiles * from String, from an Array of Strings, from Vinyl File, from an Array of VinylFiles
@ -19,34 +11,34 @@ let Readable = require('stream').Readable
* @returns stream.Readable * @returns stream.Readable
* @TODO: make it async; * @TODO: make it async;
*/ */
export let toGulpStream = function(fileArg: string|string[]|IVinylFile|IVinylFile[],baseArg: string = '/'){ export let toGulpStream = function(fileArg:string|string[]|plugins.vinyl|plugins.vinyl[],baseArg:string = "/"){
let fileArray = [] let fileArray = [];
if (typeof fileArg === 'string' || vinyl.isVinyl(fileArg)) { // make sure we work with an array later on if(typeof fileArg === "string" || fileArg instanceof plugins.vinyl){ // make sure we work with an array later on
fileArray.push(fileArg) fileArray.push(fileArg);
} else if (Array.isArray(fileArg)){ } else if (Array.isArray(fileArg)){
fileArray = fileArg fileArray = fileArg;
} else { } else {
throw new Error('fileArg has unknown format') throw new Error("fileArg has unknown format");
} }
let vinylFileArray: IVinylFile[] = [] // we want to have an array of vinylFiles let vinylFileArray:plugins.vinyl[] = []; //we want to have an array of vinylFiles
for (let fileIndexArg in fileArray){ //convert fileArray in vinylArray for (let fileIndexArg in fileArray){ //convert fileArray in vinylArray
let file = fileArray[fileIndexArg] let file = fileArray[fileIndexArg];
file instanceof vinyl ? file instanceof plugins.vinyl ?
vinylFileArray.push(file) : vinylFileArray.push(file) :
vinylFileArray.push(toVinylFileSync(file,{filename: fileIndexArg,base: baseArg})) vinylFileArray.push(toVinylFileSync(file,{filename:fileIndexArg,base:baseArg}));
}; };
let stream = new Readable({ objectMode: true }) let stream = new Readable({ objectMode: true });
for(let vinylFileIndexArg in vinylFileArray){ for(let vinylFileIndexArg in vinylFileArray){
let vinylFile = vinylFileArray[vinylFileIndexArg] let vinylFile = vinylFileArray[vinylFileIndexArg];
stream.push(vinylFile) stream.push(vinylFile);
};
stream.push(null); //signal end of stream;
return stream;
}; };
stream.push(null) // signal end of stream;
return stream
}
/** /**
* converts file to Object * converts file to Object
@ -55,8 +47,8 @@ export let toGulpStream = function(fileArg: string|string[]|IVinylFile|IVinylFil
* @returns {any|any} * @returns {any|any}
*/ */
export let toObject = function(fileStringArg:string,fileTypeArg:string){ export let toObject = function(fileStringArg:string,fileTypeArg:string){
return SmartfileInterpreter.objectFile(fileStringArg,fileTypeArg) return SmartfileInterpreter.objectFile(fileStringArg,fileTypeArg);
} };
/** /**
* takes a string and converts it to vinyl file * takes a string and converts it to vinyl file
@ -64,45 +56,40 @@ export let toObject = function(fileStringArg: string,fileTypeArg: string){
* @param optionsArg * @param optionsArg
*/ */
export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename?:string,base?:string,relPath?:string}){ export let toVinylFileSync = function(fileArg:string,optionsArg?:{filename?:string,base?:string,relPath?:string}){
optionsArg ? void(0) : optionsArg = {filename: 'vinylfile', base: '/'} optionsArg? void(0) : optionsArg = {filename: "vinylfile", base: "/"};
optionsArg.filename ? void(0) : optionsArg.filename = 'vinylfile' optionsArg.filename ? void(0) : optionsArg.filename = "vinylfile";
optionsArg.base ? void(0) : optionsArg.base = '/' optionsArg.base ? void(0) : optionsArg.base = "/";
optionsArg.relPath ? void('0') : optionsArg.relPath = '' optionsArg.relPath ? void("0") : optionsArg.relPath = "";
let vinylFile = new vinyl({ let vinylFile = new plugins.vinyl({
base: optionsArg.base, base: optionsArg.base,
path: plugins.path.join(optionsArg.base,optionsArg.relPath,optionsArg.filename), path: plugins.path.join(optionsArg.base,optionsArg.relPath,optionsArg.filename),
contents: new Buffer(fileArg) contents: new Buffer(fileArg)
}) });
return vinylFile return vinylFile;
} };
/** /**
* takes a string array and some options and returns a vinylfile array * takes a string array and some options and returns a vinylfile array
* @param arrayArg * @param arrayArg
* @param optionsArg * @param optionsArg
*/ */
export let toVinylArraySync = function( export let toVinylArraySync = function(arrayArg:string[],optionsArg?:{filename?:string,base?:string,relPath?:string}){
arrayArg: string[], let vinylArray = [];
optionsArg?: {
filename?: string,
base?: string,
relPath?: string
}
){
let vinylArray = []
for(let stringIndexArg in arrayArg){ for(let stringIndexArg in arrayArg){
let myString = arrayArg[stringIndexArg] let myString = arrayArg[stringIndexArg];
vinylArray.push(toVinylFileSync(myString,optionsArg)) vinylArray.push(toVinylFileSync(myString,optionsArg));
}
return vinylArray
} }
return vinylArray;
};
/** /**
* takes a vinylFile object and converts it to String * takes a vinylFile object and converts it to String
*/ */
export let vinylToStringSync = function(fileArg: IVinylFile): string { export let toStringSync = function(fileArg:plugins.vinyl){
return fileArg.contents.toString('utf8') return fileArg.contents.toString("utf8");
} };
/** /**
* writes string or vinyl file to disk. * writes string or vinyl file to disk.
@ -110,41 +97,37 @@ export let vinylToStringSync = function(fileArg: IVinylFile): string {
* @param fileNameArg * @param fileNameArg
* @param fileBaseArg * @param fileBaseArg
*/ */
export let toFs = function(fileContentArg: string|IVinylFile,filePathArg){ export let toFs = function(fileContentArg:string|vinyl,filePathArg){
let done = plugins.q.defer() let done = plugins.q.defer();
//function checks to abort if needed //function checks to abort if needed
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: string let fileString:string;
let filePath: string = filePathArg let filePath:string = filePathArg;
if (vinyl.isVinyl(fileContentArg)) { if (fileContentArg instanceof plugins.vinyl){
let fileContentArg2: any = fileContentArg fileString = toStringSync(fileContentArg);
fileString = vinylToStringSync(fileContentArg2) } else if (typeof fileContentArg === "string") {
} else if (typeof fileContentArg === 'string') { fileString = fileContentArg;
fileString = fileContentArg
}
plugins.fsExtra.writeFile(filePath,fileString,'utf8',done.resolve)
return done.promise
} }
plugins.fsExtra.writeFile(filePath,fileString,"utf8",done.resolve);
return done.promise;
};
export let toFsSync = function(fileArg,filePathArg:string){ export let toFsSync = function(fileArg,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')
}
// prepare actual write action // prepare actual write action
let fileString: string let fileString:string;
let filePath: string = filePathArg let filePath:string = filePathArg;
if (typeof fileArg !== 'string') { if (fileArg instanceof plugins.vinyl){
fileString = vinylToStringSync(fileArg) fileString = toStringSync(fileArg);
} 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");
};

View File

@ -1,11 +1,16 @@
import 'typings-global' import "typings-global";
export import fs = require('fs') export import beautylog = require("beautylog");
export import fsExtra = require('fs-extra') export import fs = require("fs");
export let glob = require('glob') export import fsExtra = require("fs-extra");
export import path = require('path') export let gulp = require("gulp");
export import q = require('smartq') export let glob = require("glob");
export let request = require('request') export let g = {
export let requireReload = require('require-reload') remoteSrc: require("gulp-remote-src")
export import smartpath = require('smartpath') };
export let vinylFile = require('vinyl-file') export import path = require("path");
export let yaml = require('js-yaml') export import q = require("q");
export let vinyl = require("vinyl");
export let vinylFile = require("vinyl-file");
export let yaml = require("js-yaml");
export let request = require("request");
export let requireReload = require("require-reload");

View File

@ -1,15 +1,27 @@
import 'typings-global' import "typings-global";
import plugins = require('./smartfile.plugins') import plugins = require("./smartfile.plugins");
import SmartfileInterpreter = require('./smartfile.interpreter') import SmartfileInterpreter = require("./smartfile.interpreter");
export let toFs = function(from:string,toPath:string) { export let toFs = function(from:string,toPath:string) {
let done = plugins.q.defer() var done = plugins.q.defer();
let stream = plugins.request(from).pipe(plugins.fsExtra.createWriteStream(toPath)) var stream = plugins.request(from).pipe(plugins.fsExtra.createWriteStream(toPath));
stream.on('finish',function(){ stream.on('finish',function(){
done.resolve(toPath) done.resolve(toPath);
}) });
return done.promise return done.promise;
} };
/**
*
* @param filePathArg
* @returns {*}
*/
export let toGulpStreamSync = function(filePathArg:string,baseArg:string){
let stream = plugins.g.remoteSrc(filePathArg, {
base: baseArg
});
return stream;
};
/** /**
* *
@ -17,20 +29,20 @@ export let toFs = function(from: string,toPath: string) {
* @returns {any} * @returns {any}
*/ */
export let toObject = function(fromArg:string){ export let toObject = function(fromArg:string){
let done = plugins.q.defer() let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) { plugins.request.get(fromArg, function (error, response, bodyString) {
let returnObject let returnObject;
if (!error && response.statusCode === 200) { if (!error && response.statusCode == 200) {
returnObject = SmartfileInterpreter.objectFile(bodyString,SmartfileInterpreter.filetype(fromArg)) returnObject = SmartfileInterpreter.objectFile(bodyString,SmartfileInterpreter.filetype(fromArg));
done.resolve(returnObject) done.resolve(returnObject);
} else { } else {
console.log('could not get remote file from ' + fromArg) console.log('could not get remote file from ' + fromArg);
returnObject = undefined returnObject = undefined;
done.reject(returnObject) done.reject(returnObject);
} };
}) });
return done.promise return done.promise;
} };
/** /**
* *
@ -38,15 +50,16 @@ export let toObject = function(fromArg: string){
* @returns {any} * @returns {any}
*/ */
export let toString = (fromArg:string) => { export let toString = (fromArg:string) => {
let done = plugins.q.defer() let done = plugins.q.defer();
plugins.request.get(fromArg, function (error, response, bodyString) { plugins.request.get(fromArg, function (error, response, bodyString) {
if (!error && response.statusCode === 200) { if (!error && response.statusCode == 200) {
done.resolve(bodyString) done.resolve(bodyString);
} else { } else {
console.error('could not get remote file from ' + fromArg) plugins.beautylog.error('could not get remote file from ' + fromArg);
bodyString = undefined bodyString = undefined;
done.reject(bodyString) done.reject(bodyString);
} };
}) });
return done.promise return done.promise;
} };

View File

@ -1,3 +0,0 @@
{
"extends": "tslint-config-standard"
}