Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
f86f053bd5 | |||
a78ca67b43 | |||
b1bedd0f54 | |||
ec58f7ac55 | |||
80743576ad | |||
32a6db645d | |||
45dfa16ab7 | |||
4fc4cda786 | |||
f889664e4d | |||
f4129c04b2 |
@ -3,14 +3,14 @@ image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
|
|||||||
|
|
||||||
cache:
|
cache:
|
||||||
paths:
|
paths:
|
||||||
- .npmci_cache/
|
- .npmci_cache/
|
||||||
key: "$CI_BUILD_STAGE"
|
key: '$CI_BUILD_STAGE'
|
||||||
|
|
||||||
stages:
|
stages:
|
||||||
- security
|
- security
|
||||||
- test
|
- test
|
||||||
- release
|
- release
|
||||||
- metadata
|
- metadata
|
||||||
|
|
||||||
# ====================
|
# ====================
|
||||||
# security stage
|
# security stage
|
||||||
@ -18,48 +18,65 @@ stages:
|
|||||||
mirror:
|
mirror:
|
||||||
stage: security
|
stage: security
|
||||||
script:
|
script:
|
||||||
- npmci git mirror
|
- npmci git mirror
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- notpriv
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
snyk:
|
snyk:
|
||||||
|
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk
|
||||||
stage: security
|
stage: security
|
||||||
script:
|
script:
|
||||||
- npmci npm prepare
|
- npmci npm prepare
|
||||||
- npmci command npm install -g snyk
|
|
||||||
- npmci command npm install --ignore-scripts
|
- npmci command npm install --ignore-scripts
|
||||||
- npmci command snyk test
|
- npmci command snyk test
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- notpriv
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
# ====================
|
# ====================
|
||||||
# test stage
|
# test stage
|
||||||
# ====================
|
# ====================
|
||||||
|
|
||||||
testLTS:
|
testStable:
|
||||||
stage: test
|
stage: test
|
||||||
script:
|
script:
|
||||||
- npmci npm prepare
|
- npmci npm prepare
|
||||||
- npmci node install lts
|
- npmci node install stable
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci npm test
|
- npmci npm test
|
||||||
coverage: /\d+.?\d+?\%\s*coverage/
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- notpriv
|
- docker
|
||||||
|
- priv
|
||||||
|
|
||||||
|
testBuild:
|
||||||
|
stage: test
|
||||||
|
script:
|
||||||
|
- npmci npm prepare
|
||||||
|
- npmci node install stable
|
||||||
|
- npmci npm install
|
||||||
|
- npmci command npm run build
|
||||||
|
coverage: /\d+.?\d+?\%\s*coverage/
|
||||||
|
tags:
|
||||||
|
- lossless
|
||||||
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
release:
|
release:
|
||||||
stage: release
|
stage: release
|
||||||
script:
|
script:
|
||||||
- npmci node install lts
|
- npmci node install stable
|
||||||
- npmci npm publish
|
- npmci npm publish
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- notpriv
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
# ====================
|
# ====================
|
||||||
# metadata stage
|
# metadata stage
|
||||||
@ -69,31 +86,35 @@ codequality:
|
|||||||
allow_failure: true
|
allow_failure: true
|
||||||
script:
|
script:
|
||||||
- npmci command npm install -g tslint typescript
|
- npmci command npm install -g tslint typescript
|
||||||
|
- npmci npm prepare
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- priv
|
- docker
|
||||||
|
- priv
|
||||||
|
|
||||||
trigger:
|
trigger:
|
||||||
stage: metadata
|
stage: metadata
|
||||||
script:
|
script:
|
||||||
- npmci trigger
|
- npmci trigger
|
||||||
only:
|
only:
|
||||||
- tags
|
- tags
|
||||||
tags:
|
tags:
|
||||||
- docker
|
- lossless
|
||||||
- notpriv
|
- docker
|
||||||
|
- notpriv
|
||||||
|
|
||||||
pages:
|
pages:
|
||||||
image: hosttoday/ht-docker-node:npmci
|
|
||||||
stage: metadata
|
stage: metadata
|
||||||
script:
|
script:
|
||||||
|
- npmci node install lts
|
||||||
- npmci command npm install -g @gitzone/tsdoc
|
- npmci command npm install -g @gitzone/tsdoc
|
||||||
- npmci npm prepare
|
- npmci npm prepare
|
||||||
- npmci npm install
|
- npmci npm install
|
||||||
- npmci command tsdoc
|
- npmci command tsdoc
|
||||||
tags:
|
tags:
|
||||||
|
- lossless
|
||||||
- docker
|
- docker
|
||||||
- notpriv
|
- notpriv
|
||||||
only:
|
only:
|
||||||
@ -101,5 +122,5 @@ pages:
|
|||||||
artifacts:
|
artifacts:
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
paths:
|
paths:
|
||||||
- public
|
- public
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
|
29
.vscode/launch.json
vendored
Normal file
29
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "current file",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [
|
||||||
|
"${relativeFile}"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "test.ts",
|
||||||
|
"type": "node",
|
||||||
|
"request": "launch",
|
||||||
|
"args": [
|
||||||
|
"test/test.ts"
|
||||||
|
],
|
||||||
|
"runtimeArgs": ["-r", "@gitzone/tsrun"],
|
||||||
|
"cwd": "${workspaceRoot}",
|
||||||
|
"protocol": "inspector",
|
||||||
|
"internalConsoleOptions": "openOnSessionStart"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
26
.vscode/settings.json
vendored
Normal file
26
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"json.schemas": [
|
||||||
|
{
|
||||||
|
"fileMatch": ["/npmextra.json"],
|
||||||
|
"schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"npmci": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for npmci"
|
||||||
|
},
|
||||||
|
"gitzone": {
|
||||||
|
"type": "object",
|
||||||
|
"description": "settings for gitzone",
|
||||||
|
"properties": {
|
||||||
|
"projectType": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": ["website", "element", "service", "npm"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -9,6 +9,7 @@
|
|||||||
"npmAccessLevel": "public"
|
"npmAccessLevel": "public"
|
||||||
},
|
},
|
||||||
"gitzone": {
|
"gitzone": {
|
||||||
|
"projectType": "npm",
|
||||||
"module": {
|
"module": {
|
||||||
"githost": "gitlab.com",
|
"githost": "gitlab.com",
|
||||||
"gitscope": "pushrocks",
|
"gitscope": "pushrocks",
|
||||||
|
976
package-lock.json
generated
976
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
40
package.json
40
package.json
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@pushrocks/smartfile",
|
"name": "@pushrocks/smartfile",
|
||||||
"private": false,
|
"private": false,
|
||||||
"version": "7.0.3",
|
"version": "7.0.8",
|
||||||
"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",
|
||||||
@ -28,32 +28,32 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
"homepage": "https://gitlab.com/pushrocks/smartfile",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@pushrocks/smarthash": "^2.0.6",
|
||||||
"@pushrocks/smartpath": "^4.0.1",
|
"@pushrocks/smartpath": "^4.0.1",
|
||||||
"@pushrocks/smartpromise": "^3.0.2",
|
"@pushrocks/smartpromise": "^3.0.5",
|
||||||
"@pushrocks/smartrequest": "^1.1.14",
|
"@pushrocks/smartrequest": "^1.1.27",
|
||||||
"@types/fs-extra": "^5.0.5",
|
"@types/fs-extra": "^8.0.0",
|
||||||
"@types/vinyl": "^2.0.2",
|
"fs-extra": "^8.1.0",
|
||||||
"fs-extra": "^7.0.1",
|
"glob": "^7.1.4",
|
||||||
"glob": "^7.1.3",
|
"js-yaml": "^3.13.1"
|
||||||
"js-yaml": "^3.13.1",
|
|
||||||
"vinyl-file": "^3.0.0"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@gitzone/tsbuild": "^2.1.8",
|
"@gitzone/tsbuild": "^2.1.17",
|
||||||
"@gitzone/tsrun": "^1.2.1",
|
"@gitzone/tsrun": "^1.2.8",
|
||||||
"@gitzone/tstest": "^1.0.18",
|
"@gitzone/tstest": "^1.0.24",
|
||||||
"@pushrocks/tapbundle": "^3.0.7",
|
"@pushrocks/tapbundle": "^3.0.13",
|
||||||
"@types/node": "^11.13.0",
|
"@types/node": "^12.7.8",
|
||||||
"gulp-function": "^2.2.14",
|
"gulp-function": "^2.2.14",
|
||||||
"tslint": "^5.15.0",
|
"tslint": "^5.20.0",
|
||||||
"tslint-config-prettier": "^1.18.0"
|
"tslint-config-prettier": "^1.18.0"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"ts/*",
|
"ts/**/*",
|
||||||
"ts_web/*",
|
"ts_web/**/*",
|
||||||
"dist/*",
|
"dist/**/*",
|
||||||
"dist_web/*",
|
"dist_web/**/*",
|
||||||
"assets/*",
|
"dist_ts_web/**/*",
|
||||||
|
"assets/**/*",
|
||||||
"cli.js",
|
"cli.js",
|
||||||
"npmextra.json",
|
"npmextra.json",
|
||||||
"readme.md"
|
"readme.md"
|
||||||
|
@ -8,7 +8,7 @@ smart ways to work with files in nodejs
|
|||||||
* [docs (typedoc)](https://pushrocks.gitlab.io/smartfile/)
|
* [docs (typedoc)](https://pushrocks.gitlab.io/smartfile/)
|
||||||
|
|
||||||
## Status for master
|
## Status for master
|
||||||
[](https://gitlab.com/pushrocks/smartfile/commits/master)
|
[](https://gitlab.com/pushrocks/smartfile/commits/master)
|
||||||
[](https://gitlab.com/pushrocks/smartfile/commits/master)
|
[](https://gitlab.com/pushrocks/smartfile/commits/master)
|
||||||
[](https://www.npmjs.com/package/@pushrocks/smartfile)
|
[](https://www.npmjs.com/package/@pushrocks/smartfile)
|
||||||
[](https://snyk.io/test/npm/@pushrocks/smartfile)
|
[](https://snyk.io/test/npm/@pushrocks/smartfile)
|
||||||
@ -32,9 +32,14 @@ smartfile thinks in sections:
|
|||||||
| interpreter | (object) handles yaml and json |
|
| interpreter | (object) handles yaml and json |
|
||||||
| smartfile | (class) a virtual representation of a file, alternative to vinyl file format |
|
| smartfile | (class) a virtual representation of a file, alternative to vinyl file format |
|
||||||
|
|
||||||
|
|
||||||
|
## Contribution
|
||||||
|
|
||||||
|
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
||||||
|
|
||||||
For further information read the linked docs at the top of this readme.
|
For further information read the linked docs at the top of this readme.
|
||||||
|
|
||||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
||||||
|
|
||||||
[](https://maintainedby.lossless.com)
|
[](https://maintainedby.lossless.com)
|
61
test/test.ts
61
test/test.ts
@ -36,8 +36,12 @@ tap.test('.fs.listFolders() -> should get the file type from a string', async ()
|
|||||||
tap.test('.fs.listFilesSync() -> should get the file type from a string', async () => {
|
tap.test('.fs.listFilesSync() -> should get the file type from a string', async () => {
|
||||||
expect(smartfile.fs.listFilesSync('./test/testassets/')).to.include('mytest.json');
|
expect(smartfile.fs.listFilesSync('./test/testassets/')).to.include('mytest.json');
|
||||||
expect(smartfile.fs.listFilesSync('./test/testassets/')).to.not.include('notExistentFile');
|
expect(smartfile.fs.listFilesSync('./test/testassets/')).to.not.include('notExistentFile');
|
||||||
expect(smartfile.fs.listFilesSync('./test/testassets/', /mytest\.json/)).to.include('mytest.json');
|
expect(smartfile.fs.listFilesSync('./test/testassets/', /mytest\.json/)).to.include(
|
||||||
expect(smartfile.fs.listFilesSync('./test/testassets/', /mytests.json/)).to.not.include('mytest.json');
|
'mytest.json'
|
||||||
|
);
|
||||||
|
expect(smartfile.fs.listFilesSync('./test/testassets/', /mytests.json/)).to.not.include(
|
||||||
|
'mytest.json'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.listFiles() -> should get the file type from a string', async () => {
|
tap.test('.fs.listFiles() -> should get the file type from a string', async () => {
|
||||||
@ -47,27 +51,36 @@ tap.test('.fs.listFiles() -> should get the file type from a string', async () =
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.listFileTree() -> should get a file tree', async () => {
|
tap.test('.fs.listFileTree() -> should get a file tree', async () => {
|
||||||
let folderArrayArg = await smartfile.fs.listFileTree(path.resolve('./test/testassets/'), '**/*.txt');
|
let folderArrayArg = await smartfile.fs.listFileTree(
|
||||||
|
path.resolve('./test/testassets/'),
|
||||||
|
'**/*.txt'
|
||||||
|
);
|
||||||
expect(folderArrayArg).to.include('testfolder/testfile1.txt');
|
expect(folderArrayArg).to.include('testfolder/testfile1.txt');
|
||||||
expect(folderArrayArg).to.not.include('mytest.json');
|
expect(folderArrayArg).to.not.include('mytest.json');
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.fileTreeToObject -> 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/testassets/'), '**/*.txt');
|
let fileArrayArg = await smartfile.fs.fileTreeToObject(
|
||||||
|
path.resolve('./test/testassets/'),
|
||||||
|
'**/*.txt'
|
||||||
|
);
|
||||||
expect(fileArrayArg[0]).to.be.instanceof(smartfile.Smartfile);
|
expect(fileArrayArg[0]).to.be.instanceof(smartfile.Smartfile);
|
||||||
expect(fileArrayArg[0].contents.toString()).to.equal(fileArrayArg[0].contentBuffer.toString());
|
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 () => {
|
||||||
smartfile.fs.copy('./test/testassets/testfolder/', './test/testassets/temp/');
|
await smartfile.fs.copy('./test/testassets/testfolder/', './test/testassets/temp/');
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.copy() -> should copy a file', async () => {
|
tap.test('.fs.copy() -> should copy a file', async () => {
|
||||||
smartfile.fs.copy('./test/testassets/mytest.yaml', './test/testassets/temp/');
|
await smartfile.fs.copy('./test/testassets/mytest.yaml', './test/testassets/temp/mytest.yaml');
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.copy() -> should copy a file and rename it', async () => {
|
tap.test('.fs.copy() -> should copy a file and rename it', async () => {
|
||||||
smartfile.fs.copy('./test/testassets/mytest.yaml', './test/testassets/temp/mytestRenamed.yaml');
|
await smartfile.fs.copy(
|
||||||
|
'./test/testassets/mytest.yaml',
|
||||||
|
'./test/testassets/temp/mytestRenamed.yaml'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.remove() -> should remove an entire directory', async () => {});
|
tap.test('.fs.remove() -> should remove an entire directory', async () => {});
|
||||||
@ -82,14 +95,19 @@ tap.test('.fs.removeSync -> should remove single files synchronouly', async () =
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.removeMany -> should remove and array of files', async () => {
|
tap.test('.fs.removeMany -> should remove and array of files', async () => {
|
||||||
smartfile.fs.removeMany(['./test/testassets/temp/testfile1.txt', './test/testassets/temp/testfile2.txt']).then(() => {
|
smartfile.fs
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile1.txt')).to.be.false;
|
.removeMany(['./test/testassets/temp/testfile1.txt', './test/testassets/temp/testfile2.txt'])
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile2.txt')).to.be.false;
|
.then(() => {
|
||||||
});
|
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile1.txt')).to.be.false;
|
||||||
|
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile2.txt')).to.be.false;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.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/testassets/temp/testfile1.txt', './test/testassets/temp/testfile2.txt']);
|
smartfile.fs.removeManySync([
|
||||||
|
'./test/testassets/temp/testfile1.txt',
|
||||||
|
'./test/testassets/temp/testfile2.txt'
|
||||||
|
]);
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile1.txt')).to.be.false;
|
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile1.txt')).to.be.false;
|
||||||
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile2.txt')).to.be.false;
|
expect(smartfile.fs.fileExistsSync('./test/testassets/temp/testfile2.txt')).to.be.false;
|
||||||
});
|
});
|
||||||
@ -113,7 +131,9 @@ tap.test('.fs.toObjectSync() -> should read an ' + '.json' + ' file to an object
|
|||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.fs.toStringSync() -> should read a file to a string', async () => {
|
tap.test('.fs.toStringSync() -> should read a file to a string', async () => {
|
||||||
expect(smartfile.fs.toStringSync('./test/testassets/mytest.txt')).to.equal('Some TestString &&%$');
|
expect(smartfile.fs.toStringSync('./test/testassets/mytest.txt')).to.equal(
|
||||||
|
'Some TestString &&%$'
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
@ -130,7 +150,10 @@ tap.test('.interpreter.filetype() -> should get the file type from a string', as
|
|||||||
|
|
||||||
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';
|
||||||
await smartfile.memory.toFs(localString, path.join(process.cwd(), './test/testassets/temp/testMemToFs.txt'));
|
await smartfile.memory.toFs(
|
||||||
|
localString,
|
||||||
|
path.join(process.cwd(), './test/testassets/temp/testMemToFs.txt')
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test(
|
tap.test(
|
||||||
@ -145,14 +168,13 @@ tap.test(
|
|||||||
);
|
);
|
||||||
|
|
||||||
tap.test('.remote.toString() -> should load a remote file to a variable', async () => {
|
tap.test('.remote.toString() -> should load a remote file to a variable', async () => {
|
||||||
let responseString = await smartfile.remote.toString(
|
const responseString = await smartfile.remote.toString(
|
||||||
'https://raw.githubusercontent.com/pushrocks/smartfile/master/test/mytest.txt'
|
'https://raw.githubusercontent.com/pushrocks/smartfile/master/test/testassets/mytest.txt'
|
||||||
);
|
);
|
||||||
expect(responseString).to.equal('Some TestString &&%$');
|
expect(responseString).to.equal('Some TestString &&%$');
|
||||||
});
|
});
|
||||||
|
|
||||||
tap.test('.remote.toString() -> should reject a Promise when the link is false', async tools => {
|
tap.test('.remote.toString() -> should reject a Promise when the link is false', async tools => {
|
||||||
tools.returnError;
|
|
||||||
await smartfile.remote.toString('https://push.rocks/doesnotexist.txt').catch(err => {
|
await smartfile.remote.toString('https://push.rocks/doesnotexist.txt').catch(err => {
|
||||||
return expect(err.message).to.equal(
|
return expect(err.message).to.equal(
|
||||||
'could not get remote file from https://push.rocks/doesnotexist.txt'
|
'could not get remote file from https://push.rocks/doesnotexist.txt'
|
||||||
@ -165,7 +187,10 @@ tap.test('.remote.toString() -> should reject a Promise when the link is false',
|
|||||||
// ---------------------------
|
// ---------------------------
|
||||||
|
|
||||||
tap.test('.Smartfile -> should produce vinyl compatible files', async () => {
|
tap.test('.Smartfile -> should produce vinyl compatible files', async () => {
|
||||||
let smartfileArray = await smartfile.fs.fileTreeToObject(process.cwd(), './test/testassets/testfolder/**/*');
|
let smartfileArray = await smartfile.fs.fileTreeToObject(
|
||||||
|
process.cwd(),
|
||||||
|
'./test/testassets/testfolder/**/*'
|
||||||
|
);
|
||||||
let localSmartfile = smartfileArray[0];
|
let localSmartfile = smartfileArray[0];
|
||||||
expect(localSmartfile).to.be.instanceof(smartfile.Smartfile);
|
expect(localSmartfile).to.be.instanceof(smartfile.Smartfile);
|
||||||
expect(localSmartfile.contents).to.be.instanceof(Buffer);
|
expect(localSmartfile.contents).to.be.instanceof(Buffer);
|
||||||
|
4
test/testassets/temp/mytest.yaml
Normal file
4
test/testassets/temp/mytest.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
key1: this works
|
||||||
|
key2: this works too
|
||||||
|
key3:
|
||||||
|
nestedkey1: hello
|
@ -13,7 +13,7 @@ import * as memory from './smartfile.memory';
|
|||||||
* @param filePath
|
* @param filePath
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
*/
|
*/
|
||||||
export let fileExistsSync = function(filePath): boolean {
|
export const fileExistsSync = (filePath): boolean => {
|
||||||
let fileExistsBool: boolean = false;
|
let fileExistsBool: boolean = false;
|
||||||
try {
|
try {
|
||||||
plugins.fsExtra.readFileSync(filePath);
|
plugins.fsExtra.readFileSync(filePath);
|
||||||
@ -29,7 +29,7 @@ export let fileExistsSync = function(filePath): boolean {
|
|||||||
* @param filePath
|
* @param filePath
|
||||||
* @returns {any}
|
* @returns {any}
|
||||||
*/
|
*/
|
||||||
export let fileExists = (filePath): Promise<boolean> => {
|
export const fileExists = async (filePath): Promise<boolean> => {
|
||||||
const done = plugins.smartpromise.defer<boolean>();
|
const done = plugins.smartpromise.defer<boolean>();
|
||||||
plugins.fs.access(filePath, 4, err => {
|
plugins.fs.access(filePath, 4, err => {
|
||||||
err ? done.resolve(false) : done.resolve(true);
|
err ? done.resolve(false) : done.resolve(true);
|
||||||
@ -40,7 +40,7 @@ export let fileExists = (filePath): Promise<boolean> => {
|
|||||||
/**
|
/**
|
||||||
* Checks if given path points to an existing directory
|
* Checks if given path points to an existing directory
|
||||||
*/
|
*/
|
||||||
export let isDirectory = (pathArg): boolean => {
|
export const isDirectory = (pathArg): boolean => {
|
||||||
try {
|
try {
|
||||||
return plugins.fsExtra.statSync(pathArg).isDirectory();
|
return plugins.fsExtra.statSync(pathArg).isDirectory();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@ -51,7 +51,7 @@ export let isDirectory = (pathArg): boolean => {
|
|||||||
/**
|
/**
|
||||||
* 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 const isFile = (pathArg): boolean => {
|
||||||
return plugins.fsExtra.statSync(pathArg).isFile();
|
return plugins.fsExtra.statSync(pathArg).isFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -62,10 +62,13 @@ export let isFile = function(pathArg): boolean {
|
|||||||
/**
|
/**
|
||||||
* copies a file from A to B on the local disk
|
* copies a file from A to B on the local disk
|
||||||
*/
|
*/
|
||||||
export let copy = function(fromArg: string, toArg: string) {
|
export const copy = async (fromArg: string, toArg: string): Promise<boolean> => {
|
||||||
let done = plugins.smartpromise.defer();
|
const done = plugins.smartpromise.defer<boolean>();
|
||||||
plugins.fsExtra.copy(fromArg, toArg, {}, function() {
|
plugins.fsExtra.copy(fromArg, toArg, {}, err => {
|
||||||
done.resolve();
|
if (err) {
|
||||||
|
throw new Error(`Could not copy from ${fromArg} to ${toArg}: ${err}`);
|
||||||
|
}
|
||||||
|
done.resolve(true);
|
||||||
});
|
});
|
||||||
return done.promise;
|
return done.promise;
|
||||||
};
|
};
|
||||||
@ -73,7 +76,7 @@ export let copy = function(fromArg: string, toArg: string) {
|
|||||||
/**
|
/**
|
||||||
* copies a file SYNCHRONOUSLY from A to B on the local disk
|
* copies a file SYNCHRONOUSLY from A to B on the local disk
|
||||||
*/
|
*/
|
||||||
export let copySync = function(fromArg: string, toArg: string): boolean {
|
export const copySync = (fromArg: string, toArg: string): boolean => {
|
||||||
plugins.fsExtra.copySync(fromArg, toArg);
|
plugins.fsExtra.copySync(fromArg, toArg);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
@ -81,16 +84,14 @@ export let copySync = function(fromArg: string, toArg: string): boolean {
|
|||||||
/**
|
/**
|
||||||
* ensures that a directory is in place
|
* ensures that a directory is in place
|
||||||
*/
|
*/
|
||||||
export let ensureDir = (dirPathArg: string) => {
|
export const ensureDir = async (dirPathArg: string) => {
|
||||||
let done = plugins.smartpromise.defer();
|
await plugins.fsExtra.ensureDir(dirPathArg);
|
||||||
plugins.fsExtra.ensureDir(dirPathArg, done.resolve);
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ensures that a directory is in place
|
* ensures that a directory is in place
|
||||||
*/
|
*/
|
||||||
export let ensureDirSync = (dirPathArg: string) => {
|
export const ensureDirSync = (dirPathArg: string) => {
|
||||||
plugins.fsExtra.ensureDirSync(dirPathArg);
|
plugins.fsExtra.ensureDirSync(dirPathArg);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -98,19 +99,16 @@ export let ensureDirSync = (dirPathArg: string) => {
|
|||||||
* ensure an empty directory
|
* ensure an empty directory
|
||||||
* @executes ASYNC
|
* @executes ASYNC
|
||||||
*/
|
*/
|
||||||
export let ensureEmptyDir = (dirPathArg: string) => {
|
export const ensureEmptyDir = async (dirPathArg: string) => {
|
||||||
let done = plugins.smartpromise.defer();
|
await plugins.fsExtra.ensureDir(dirPathArg);
|
||||||
plugins.fsExtra.ensureDir(dirPathArg, () => {
|
await plugins.fsExtra.emptyDir(dirPathArg);
|
||||||
plugins.fsExtra.emptyDir(dirPathArg, done.resolve);
|
|
||||||
});
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ensure an empty directory
|
* ensure an empty directory
|
||||||
* @executes SYNC
|
* @executes SYNC
|
||||||
*/
|
*/
|
||||||
export let ensureEmptyDirSync = (dirPathArg: string) => {
|
export const ensureEmptyDirSync = (dirPathArg: string) => {
|
||||||
plugins.fsExtra.ensureDirSync(dirPathArg);
|
plugins.fsExtra.ensureDirSync(dirPathArg);
|
||||||
plugins.fsExtra.emptyDirSync(dirPathArg);
|
plugins.fsExtra.emptyDirSync(dirPathArg);
|
||||||
};
|
};
|
||||||
@ -122,11 +120,8 @@ export let ensureEmptyDirSync = (dirPathArg: string) => {
|
|||||||
* @returns Promise<void>
|
* @returns Promise<void>
|
||||||
* @exec ASYNC
|
* @exec ASYNC
|
||||||
*/
|
*/
|
||||||
export let ensureFile = (filePathArg, initFileStringArg): Promise<void> => {
|
export const ensureFile = async (filePathArg, initFileStringArg): Promise<void> => {
|
||||||
let done = plugins.smartpromise.defer<void>();
|
|
||||||
ensureFileSync(filePathArg, initFileStringArg);
|
ensureFileSync(filePathArg, initFileStringArg);
|
||||||
done.resolve();
|
|
||||||
return done.promise;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -136,7 +131,7 @@ export let ensureFile = (filePathArg, initFileStringArg): Promise<void> => {
|
|||||||
* @returns Promise<void>
|
* @returns Promise<void>
|
||||||
* @exec SYNC
|
* @exec SYNC
|
||||||
*/
|
*/
|
||||||
export let ensureFileSync = (filePathArg: string, initFileStringArg: string): void => {
|
export const ensureFileSync = (filePathArg: string, initFileStringArg: string): void => {
|
||||||
if (fileExistsSync(filePathArg)) {
|
if (fileExistsSync(filePathArg)) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
@ -147,38 +142,33 @@ export let ensureFileSync = (filePathArg: string, initFileStringArg: string): vo
|
|||||||
/**
|
/**
|
||||||
* 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 const remove = async (pathArg: string): Promise<void> => {
|
||||||
let done = plugins.smartpromise.defer<void>();
|
await plugins.fsExtra.remove(pathArg);
|
||||||
plugins.fsExtra.remove(pathArg, function() {
|
|
||||||
done.resolve();
|
|
||||||
});
|
|
||||||
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 const removeSync = (pathArg: string): void => {
|
||||||
plugins.fsExtra.removeSync(pathArg);
|
plugins.fsExtra.removeSync(pathArg);
|
||||||
return true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* removes an array of filePaths from disk
|
* removes an array of filePaths from disk
|
||||||
*/
|
*/
|
||||||
export let removeMany = function(filePathArrayArg: string[]) {
|
export const removeMany = async (filePathArrayArg: string[]) => {
|
||||||
let promiseArray: Promise<void>[] = [];
|
const promiseArray: Array<Promise<void>> = [];
|
||||||
for (let filePath of filePathArrayArg) {
|
for (const filePath of filePathArrayArg) {
|
||||||
promiseArray.push(remove(filePath));
|
promiseArray.push(remove(filePath));
|
||||||
}
|
}
|
||||||
return Promise.all(promiseArray);
|
await Promise.all(promiseArray);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* like removeFilePathArray but SYNCHRONOUSLY
|
* like removeFilePathArray but SYNCHRONOUSLY
|
||||||
*/
|
*/
|
||||||
export let removeManySync = function(filePathArrayArg: string[]): void {
|
export const removeManySync = (filePathArrayArg: string[]): void => {
|
||||||
for (let filePath of filePathArrayArg) {
|
for (const filePath of filePathArrayArg) {
|
||||||
removeSync(filePath);
|
removeSync(filePath);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -193,7 +183,7 @@ export let removeManySync = function(filePathArrayArg: string[]): void {
|
|||||||
* @param fileTypeArg
|
* @param fileTypeArg
|
||||||
* @returns {any}
|
* @returns {any}
|
||||||
*/
|
*/
|
||||||
export let toObjectSync = function(filePathArg, fileTypeArg?) {
|
export const toObjectSync = (filePathArg, fileTypeArg?) => {
|
||||||
const fileString = plugins.fsExtra.readFileSync(filePathArg, 'utf8');
|
const fileString = plugins.fsExtra.readFileSync(filePathArg, 'utf8');
|
||||||
let fileType;
|
let fileType;
|
||||||
fileTypeArg ? (fileType = fileTypeArg) : (fileType = SmartfileInterpreter.filetype(filePathArg));
|
fileTypeArg ? (fileType = fileTypeArg) : (fileType = SmartfileInterpreter.filetype(filePathArg));
|
||||||
@ -205,11 +195,26 @@ export let toObjectSync = function(filePathArg, fileTypeArg?) {
|
|||||||
* @param filePath
|
* @param filePath
|
||||||
* @returns {string|Buffer|any}
|
* @returns {string|Buffer|any}
|
||||||
*/
|
*/
|
||||||
export let toStringSync = function(filePath: string): string {
|
export const toStringSync = (filePath: string): string => {
|
||||||
const fileString: string = plugins.fsExtra.readFileSync(filePath, 'utf8');
|
const fileString: string = plugins.fsExtra.readFileSync(filePath, 'utf8');
|
||||||
return fileString;
|
return fileString;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const fileTreeToHash = async (dirPathArg: string, miniMatchFilter: string) => {
|
||||||
|
const fileTreeObject = await fileTreeToObject(dirPathArg, miniMatchFilter);
|
||||||
|
let combinedString = '';
|
||||||
|
for (const smartfile of fileTreeObject) {
|
||||||
|
combinedString += smartfile.contentBuffer.toString();
|
||||||
|
}
|
||||||
|
const hash = await plugins.smarthash.sha256FromString(combinedString);
|
||||||
|
return hash;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* creates a smartfile array from a directory
|
||||||
|
* @param dirPathArg the directory to start from
|
||||||
|
* @param miniMatchFilter a minimatch filter of what files to include
|
||||||
|
*/
|
||||||
export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: string) => {
|
export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: string) => {
|
||||||
// handle absolute miniMatchFilter
|
// handle absolute miniMatchFilter
|
||||||
let dirPath: string;
|
let dirPath: string;
|
||||||
@ -221,15 +226,15 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri
|
|||||||
|
|
||||||
const fileTree = await listFileTree(dirPath, miniMatchFilter);
|
const fileTree = await listFileTree(dirPath, miniMatchFilter);
|
||||||
const smartfileArray: Smartfile[] = [];
|
const smartfileArray: Smartfile[] = [];
|
||||||
for (let filePath of fileTree) {
|
for (const filePath of fileTree) {
|
||||||
let readPath = ((): string => {
|
const readPath = ((): string => {
|
||||||
if (!plugins.path.isAbsolute(filePath)) {
|
if (!plugins.path.isAbsolute(filePath)) {
|
||||||
return plugins.path.join(dirPath, filePath);
|
return plugins.path.join(dirPath, filePath);
|
||||||
} else {
|
} else {
|
||||||
return filePath;
|
return filePath;
|
||||||
}
|
}
|
||||||
})();
|
})();
|
||||||
let fileContentString = toStringSync(readPath);
|
const fileContentString = toStringSync(readPath);
|
||||||
|
|
||||||
// push a read file as Smartfile
|
// push a read file as Smartfile
|
||||||
smartfileArray.push(
|
smartfileArray.push(
|
||||||
@ -243,21 +248,11 @@ export const fileTreeToObject = async (dirPathArg: string, miniMatchFilter: stri
|
|||||||
return smartfileArray;
|
return smartfileArray;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param filePathArg
|
|
||||||
* @param options
|
|
||||||
* @returns {number}
|
|
||||||
*/
|
|
||||||
export let toVinylSync = function(filePathArg, options = {}) {
|
|
||||||
return plugins.vinylFile.readSync(filePathArg, options);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lists Folders in a directory on local disk
|
* lists Folders in a directory on local disk
|
||||||
* @returns Promise with an array that contains the folder names
|
* @returns Promise with an array that contains the folder names
|
||||||
*/
|
*/
|
||||||
export let listFolders = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
export const listFolders = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
||||||
return listFoldersSync(pathArg, regexFilter);
|
return listFoldersSync(pathArg, regexFilter);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -265,7 +260,7 @@ export let listFolders = async (pathArg: string, regexFilter?: RegExp): 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
|
||||||
*/
|
*/
|
||||||
export let listFoldersSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
export const listFoldersSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
||||||
let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(file => {
|
let folderArray = plugins.fsExtra.readdirSync(pathArg).filter(file => {
|
||||||
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory();
|
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isDirectory();
|
||||||
});
|
});
|
||||||
@ -281,7 +276,7 @@ export let listFoldersSync = (pathArg: string, regexFilter?: RegExp): string[] =
|
|||||||
* lists Files in a directory on local disk
|
* lists Files in a directory on local disk
|
||||||
* @returns Promise
|
* @returns Promise
|
||||||
*/
|
*/
|
||||||
export let listFiles = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
export const listFiles = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
||||||
return listFilesSync(pathArg, regexFilter);
|
return listFilesSync(pathArg, regexFilter);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -289,7 +284,7 @@ export let listFiles = async (pathArg: string, regexFilter?: RegExp): Promise<st
|
|||||||
* 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
|
||||||
*/
|
*/
|
||||||
export let listFilesSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
export const listFilesSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
||||||
let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(file => {
|
let fileArray = plugins.fsExtra.readdirSync(pathArg).filter(file => {
|
||||||
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile();
|
return plugins.fsExtra.statSync(plugins.path.join(pathArg, file)).isFile();
|
||||||
});
|
});
|
||||||
@ -305,7 +300,7 @@ export let listFilesSync = (pathArg: string, regexFilter?: RegExp): 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 Promise<string[]>
|
* @returns Promise<string[]>
|
||||||
*/
|
*/
|
||||||
export let listAllItems = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
export const listAllItems = async (pathArg: string, regexFilter?: RegExp): Promise<string[]> => {
|
||||||
return listAllItemsSync(pathArg, regexFilter);
|
return listAllItemsSync(pathArg, regexFilter);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -314,8 +309,8 @@ export let listAllItems = async (pathArg: string, regexFilter?: RegExp): Promise
|
|||||||
* @returns an array with the folder names as strings
|
* @returns an array with the folder names as strings
|
||||||
* @executes SYNC
|
* @executes SYNC
|
||||||
*/
|
*/
|
||||||
export let listAllItemsSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
export const listAllItemsSync = (pathArg: string, regexFilter?: RegExp): string[] => {
|
||||||
let allItmesArray = plugins.fsExtra.readdirSync(pathArg).filter(function(file) {
|
let allItmesArray = plugins.fsExtra.readdirSync(pathArg).filter(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) {
|
||||||
@ -331,7 +326,11 @@ export let listAllItemsSync = (pathArg: string, regexFilter?: RegExp): string[]
|
|||||||
* note: if the miniMatch Filter is an absolute path, the cwdArg will be omitted
|
* 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 const listFileTree = async (dirPathArg: string, miniMatchFilter: string, absolutePathsBool: boolean = false): Promise<string[]> => {
|
export const listFileTree = async (
|
||||||
|
dirPathArg: string,
|
||||||
|
miniMatchFilter: string,
|
||||||
|
absolutePathsBool: boolean = false
|
||||||
|
): Promise<string[]> => {
|
||||||
const done = plugins.smartpromise.defer<string[]>();
|
const done = plugins.smartpromise.defer<string[]>();
|
||||||
|
|
||||||
// handle absolute miniMatchFilter
|
// handle absolute miniMatchFilter
|
||||||
@ -354,7 +353,7 @@ export const listFileTree = async (dirPathArg: string, miniMatchFilter: string,
|
|||||||
}
|
}
|
||||||
done.resolve(files);
|
done.resolve(files);
|
||||||
});
|
});
|
||||||
|
|
||||||
let fileList = await done.promise;
|
let fileList = await done.promise;
|
||||||
if (absolutePathsBool) {
|
if (absolutePathsBool) {
|
||||||
fileList = fileList.map(filePath => {
|
fileList = fileList.map(filePath => {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
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);
|
const extName = plugins.path.extname(pathArg);
|
||||||
let fileType = extName.replace(/\.([a-z]*)/, '$1'); // remove . form fileType
|
const fileType = extName.replace(/\.([a-z]*)/, '$1'); // remove . form fileType
|
||||||
return fileType;
|
return fileType;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,9 +1,20 @@
|
|||||||
export import fs = require('fs');
|
// node native scope
|
||||||
export import fsExtra = require('fs-extra');
|
import * as fs from 'fs';
|
||||||
export let glob = require('glob');
|
import * as path from 'path';
|
||||||
export import path = require('path');
|
|
||||||
export import smartpromise = require('@pushrocks/smartpromise');
|
export { fs, path };
|
||||||
export import smartrequest = require('@pushrocks/smartrequest');
|
|
||||||
export import smartpath = require('@pushrocks/smartpath');
|
// @pushrocks scope
|
||||||
export let vinylFile = require('vinyl-file');
|
import * as smarthash from '@pushrocks/smarthash';
|
||||||
export let yaml = require('js-yaml');
|
import * as smartpath from '@pushrocks/smartpath';
|
||||||
|
import * as smartpromise from '@pushrocks/smartpromise';
|
||||||
|
import * as smartrequest from '@pushrocks/smartrequest';
|
||||||
|
|
||||||
|
export { smarthash, smartpath, smartpromise, smartrequest };
|
||||||
|
|
||||||
|
// third party scope
|
||||||
|
import * as fsExtra from 'fs-extra';
|
||||||
|
import glob from 'glob';
|
||||||
|
import yaml from 'js-yaml';
|
||||||
|
|
||||||
|
export { fsExtra, glob, yaml };
|
||||||
|
Reference in New Issue
Block a user