@jestaubach/fs-helpers 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ import { existsSync, lstatSync, chmodSync, renameSync, readFileSync, copySync, removeSync, ensureFileSync, outputFileSync, mkdirpSync } from './mock';
2
+ export { existsSync, lstatSync, chmodSync, renameSync, readFileSync, copySync, mkdirpSync, removeSync, ensureFileSync, outputFileSync };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.outputFileSync = exports.ensureFileSync = exports.removeSync = exports.mkdirpSync = exports.copySync = exports.readFileSync = exports.renameSync = exports.chmodSync = exports.lstatSync = exports.existsSync = void 0;
4
+ //import { existsSync, lstatSync, chmodSync, renameSync, readFileSync, copySync, removeSync, ensureFileSync, outputFileSync, mkdirpSync } from 'fs-extra';
5
+ const mock_1 = require("./mock");
6
+ Object.defineProperty(exports, "existsSync", { enumerable: true, get: function () { return mock_1.existsSync; } });
7
+ Object.defineProperty(exports, "lstatSync", { enumerable: true, get: function () { return mock_1.lstatSync; } });
8
+ Object.defineProperty(exports, "chmodSync", { enumerable: true, get: function () { return mock_1.chmodSync; } });
9
+ Object.defineProperty(exports, "renameSync", { enumerable: true, get: function () { return mock_1.renameSync; } });
10
+ Object.defineProperty(exports, "readFileSync", { enumerable: true, get: function () { return mock_1.readFileSync; } });
11
+ Object.defineProperty(exports, "copySync", { enumerable: true, get: function () { return mock_1.copySync; } });
12
+ Object.defineProperty(exports, "removeSync", { enumerable: true, get: function () { return mock_1.removeSync; } });
13
+ Object.defineProperty(exports, "ensureFileSync", { enumerable: true, get: function () { return mock_1.ensureFileSync; } });
14
+ Object.defineProperty(exports, "outputFileSync", { enumerable: true, get: function () { return mock_1.outputFileSync; } });
15
+ Object.defineProperty(exports, "mkdirpSync", { enumerable: true, get: function () { return mock_1.mkdirpSync; } });
16
+ //# sourceMappingURL=fsextra.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fsextra.js","sourceRoot":"","sources":["../../src/fsextra.ts"],"names":[],"mappings":";;;AAAA,0JAA0J;AAC1J,iCAAsJ;AAG7I,2FAHA,iBAAU,OAGA;AAAE,0FAHA,gBAAS,OAGA;AAAE,0FAHA,gBAAS,OAGA;AAAE,2FAHA,iBAAU,OAGA;AAAE,6FAHA,mBAAY,OAGA;AAAE,yFAHA,eAAQ,OAGA;AAAc,2FAHZ,iBAAU,OAGY;AAAE,+FAHZ,qBAAc,OAGY;AAAE,+FAHZ,qBAAc,OAGY;AAAtD,2FAH4C,iBAAU,OAG5C"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="node" />
2
+ import fsExtra from 'fs-extra';
3
+ declare function use(fsLibrary: any): any;
4
+ declare const _default: {
5
+ use: typeof use;
6
+ default: typeof fsExtra;
7
+ mock: {
8
+ existsSync: (filePath: fsExtra.PathLike) => boolean;
9
+ lstatSync: (filePath: fsExtra.PathLike, options?: fsExtra.StatOptions & {
10
+ bigint?: false;
11
+ }) => fsExtra.Stats;
12
+ chmodSync: (filePath: fsExtra.PathLike, mode: fsExtra.Mode) => void;
13
+ renameSync: (oldPath: fsExtra.PathLike, newPath: fsExtra.PathLike) => void;
14
+ readFileSync: (filePath: number | fsExtra.PathLike, options?: BufferEncoding | {
15
+ encoding: BufferEncoding;
16
+ flag?: string;
17
+ }) => string;
18
+ copySync: (src: string, dest: string, options?: fsExtra.CopyOptionsSync) => void;
19
+ removeSync: (filePath: string) => void;
20
+ ensureFileSync: (filename: string) => void;
21
+ mkdirpSync: (dir: string) => any;
22
+ outputFileSync: (filename: string, data: any, options?: string | fsExtra.WriteFileOptions) => void;
23
+ };
24
+ };
25
+ export default _default;
package/dist/src/index.js CHANGED
@@ -1,9 +1,215 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs_extra_1 = require("fs-extra");
4
- const mkdirp_1 = require("mkdirp");
5
- function touch(filePath) {
6
- (0, fs_extra_1.ensureFileSync)(filePath);
6
+ const fs_extra_1 = __importDefault(require("fs-extra"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const mock_1 = __importDefault(require("./mock"));
9
+ function use(fsLibrary) {
10
+ const { existsSync, lstatSync, chmodSync, renameSync, readFileSync, copySync, removeSync, ensureFileSync, outputFileSync, mkdirpSync } = fsLibrary;
11
+ function checkIfFileExists(filePath) {
12
+ const absPath = getAbsolutePath(filePath).value;
13
+ if (!existsSync(absPath)) {
14
+ return {
15
+ success: true,
16
+ value: false,
17
+ error: null,
18
+ };
19
+ }
20
+ if (!lstatSync(absPath).isFile()) {
21
+ return {
22
+ success: false,
23
+ value: false,
24
+ error: `checkIfFileExists: '${filePath}' is not a file.`,
25
+ };
26
+ }
27
+ return {
28
+ success: true,
29
+ value: true,
30
+ error: null,
31
+ };
32
+ }
33
+ function checkIfDirExists(dir) {
34
+ const absDir = getAbsolutePath(dir).value;
35
+ if (!existsSync(absDir)) {
36
+ return {
37
+ success: true,
38
+ value: false,
39
+ error: null,
40
+ };
41
+ }
42
+ if (!lstatSync(absDir).isDirectory()) {
43
+ return {
44
+ success: false,
45
+ value: false,
46
+ error: `checkIfDirExists: '${dir}' is not a directory.`,
47
+ };
48
+ }
49
+ return {
50
+ success: true,
51
+ value: true,
52
+ error: null,
53
+ };
54
+ }
55
+ function getAbsolutePath(dir) {
56
+ try {
57
+ if (dir.match(/^[.a-zA-Z0-9\-_/:\\]+$/g) === null) {
58
+ throw Error(`Dir contains unsupported characters. Received ${dir}.`);
59
+ }
60
+ const absPath = path_1.default.normalize(path_1.default.resolve(dir));
61
+ return {
62
+ success: true,
63
+ value: absPath,
64
+ error: null,
65
+ };
66
+ }
67
+ catch (err) {
68
+ console.error(`Error resolving path: ${dir}`);
69
+ return {
70
+ success: false,
71
+ value: undefined,
72
+ error: `Error resolving path: '${dir}'. Received error: '${err}'`,
73
+ };
74
+ }
75
+ }
76
+ function createDir(dir) {
77
+ try {
78
+ if (dir === undefined) {
79
+ throw Error(`Function "createDir" expected a path. Recieved "${dir}".`);
80
+ }
81
+ const absDir = getAbsolutePath(dir).value;
82
+ return {
83
+ success: true,
84
+ value: mkdirpSync(absDir),
85
+ error: null,
86
+ };
87
+ }
88
+ catch (err) {
89
+ console.error(`Error creating dir: ${dir}`);
90
+ return {
91
+ success: false,
92
+ value: undefined,
93
+ error: `Error creating dir: '${dir}'`,
94
+ };
95
+ }
96
+ }
97
+ function touchFile(filePath, perms) {
98
+ const absPath = getAbsolutePath(filePath).value;
99
+ ensureFileSync(absPath);
100
+ if (perms !== undefined) {
101
+ chmodSync(absPath, perms);
102
+ }
103
+ return {
104
+ success: true,
105
+ error: null,
106
+ };
107
+ }
108
+ function rimrafDir(dir) {
109
+ const absPath = getAbsolutePath(dir).value;
110
+ if (absPath !== undefined && checkIfDirExists(dir).value) {
111
+ removeSync(dir);
112
+ return {
113
+ success: true,
114
+ value: dir,
115
+ error: null,
116
+ };
117
+ }
118
+ console.error(`Error deleting dir: ${dir}`);
119
+ return {
120
+ success: false,
121
+ value: undefined,
122
+ error: `Error deleting dir: '${dir}'`,
123
+ };
124
+ }
125
+ function rimrafDirs(dirs) {
126
+ return dirs.map((dir) => {
127
+ return rimrafDir(getAbsolutePath(dir).value);
128
+ });
129
+ }
130
+ function abortDirCreation(dir) {
131
+ if (dir !== null && checkIfDirExists(dir).value) {
132
+ console.error(`Cleaning up due to abort, directories created starting at: ${JSON.stringify(dir)}`);
133
+ rimrafDir(dir);
134
+ return {
135
+ success: true,
136
+ error: null,
137
+ };
138
+ }
139
+ console.error(`Cleaning up due to abort, no directory to clean up.`);
140
+ return {
141
+ success: false,
142
+ error: `Cleaning up due to abort, no directory to clean up.`,
143
+ };
144
+ }
145
+ function renameDir(oldPath, newPath) {
146
+ try {
147
+ renameSync(getAbsolutePath(oldPath).value, getAbsolutePath(newPath).value);
148
+ return {
149
+ success: true,
150
+ value: `Successfully renamed the directory.`,
151
+ error: null,
152
+ };
153
+ }
154
+ catch (err) {
155
+ console.error(err.code);
156
+ return {
157
+ success: false,
158
+ value: undefined,
159
+ error: `renameDir from '${oldPath}' to '${newPath} failed.`
160
+ };
161
+ }
162
+ }
163
+ function readFile(fileName, overrideMock = false) {
164
+ if (overrideMock) {
165
+ return {
166
+ success: true,
167
+ value: fs_extra_1.default.readFileSync(getAbsolutePath(fileName).value, `utf-8`),
168
+ error: null,
169
+ };
170
+ }
171
+ return {
172
+ success: true,
173
+ value: readFileSync(getAbsolutePath(fileName).value, `utf-8`),
174
+ error: null,
175
+ };
176
+ }
177
+ function writeFile(fileName, data) {
178
+ outputFileSync(getAbsolutePath(fileName).value, data);
179
+ return {
180
+ success: true,
181
+ error: null
182
+ };
183
+ }
184
+ function copyDirAbs(src, dest) {
185
+ try {
186
+ copySync(getAbsolutePath(src).value, getAbsolutePath(dest).value, { overwrite: false, errorOnExist: true });
187
+ return {
188
+ success: true,
189
+ error: null,
190
+ };
191
+ }
192
+ catch (err) {
193
+ return {
194
+ success: false,
195
+ error: `Error copying absolute from '${src}' to '${dest}'`,
196
+ };
197
+ }
198
+ }
199
+ return {
200
+ getAbsolutePath,
201
+ abortDirCreation,
202
+ checkIfDirExists,
203
+ copyDirAbs,
204
+ createDir,
205
+ renameDir,
206
+ rimrafDir,
207
+ rimrafDirs,
208
+ checkIfFileExists,
209
+ readFile,
210
+ writeFile,
211
+ touchFile
212
+ };
7
213
  }
8
- exports.default = { existsSync: fs_extra_1.existsSync, lstatSync: fs_extra_1.lstatSync, chmodSync: fs_extra_1.chmodSync, renameSync: fs_extra_1.renameSync, readFileSync: fs_extra_1.readFileSync, copySync: fs_extra_1.copySync, mkdirp: mkdirp_1.sync, rimraf: fs_extra_1.removeSync, touch, outputFileSync: fs_extra_1.outputFileSync };
214
+ exports.default = { use, default: fs_extra_1.default, mock: mock_1.default };
9
215
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,uCAA4I;AAC5I,mCAAwC;AAGxC,SAAS,KAAK,CAAC,QAAc;IAC3B,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAA;AAC1B,CAAC;AAED,kBAAe,EAAE,UAAU,EAAV,qBAAU,EAAE,SAAS,EAAT,oBAAS,EAAE,SAAS,EAAT,oBAAS,EAAE,UAAU,EAAV,qBAAU,EAAE,YAAY,EAAZ,uBAAY,EAAE,QAAQ,EAAR,mBAAQ,EAAE,MAAM,EAAN,aAAM,EAAE,MAAM,EAAE,qBAAU,EAAE,KAAK,EAAE,cAAc,EAAd,yBAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;AAAA,wDAA+B;AAC/B,gDAAwB;AAExB,oDAA4B;AAE5B,SAAS,GAAG,CAAC,SAAc;IACzB,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IAEnJ,SAAS,iBAAiB,CAAC,QAAc;QACvC,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YACxB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QACD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAChC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,uBAAuB,QAAQ,kBAAkB;aACzD,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAS;QACjC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YACvB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;YACpC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,sBAAsB,GAAG,uBAAuB;aACxD,CAAC;SACH;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,eAAe,CAAC,GAAS;QAChC,IAAI;YACF,IAAI,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,KAAK,IAAI,EAAE;gBACjD,MAAM,KAAK,CAAC,iDAAiD,GAAG,GAAG,CAAC,CAAC;aACtE;YACD,MAAM,OAAO,GAAG,cAAI,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,0BAA0B,GAAG,uBAAuB,GAAG,GAAG;aAClE,CAAC;SACH;IACH,CAAC;IAED,SAAS,SAAS,CAAC,GAAS;QAC1B,IAAI;YACF,IAAI,GAAG,KAAK,SAAS,EAAE;gBACrB,MAAM,KAAK,CAAC,mDAAmD,GAAG,IAAI,CAAC,CAAC;aACzE;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAI,UAAU,CAAC,MAAM,CAAwB;gBAClD,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,wBAAwB,GAAG,GAAG;aACtC,CAAC;SACH;IACH,CAAC;IAED,SAAS,SAAS,CAAC,QAAc,EAAE,KAAc;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;QAChD,cAAc,CAAC,OAAO,CAAC,CAAC;QACxB,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC3B;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,SAAS,CAAC,GAAS;QAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;YACxD,UAAU,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QACD,OAAO,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QAC5C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,wBAAwB,GAAG,GAAG;SACtC,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACtB,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,gBAAgB,CAAC,GAAS;QACjC,IAAI,GAAG,KAAK,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;YAC/C,OAAO,CAAC,KAAK,CAAC,8DAA8D,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnG,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QACD,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACrE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qDAAqD;SAC7D,CAAC;IACJ,CAAC;IAED,SAAS,SAAS,CAAC,OAAa,EAAE,OAAa;QAC7C,IAAI;YACF,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3E,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,qCAAqC;gBAC5C,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,mBAAmB,OAAO,SAAS,OAAO,UAAU;aAC5D,CAAC;SACH;IACH,CAAC;IAED,SAAS,QAAQ,CAAC,QAAc,EAAE,eAAwB,KAAK;QAC7D,IAAI,YAAY,EAAE;YAChB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,kBAAO,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,OAAO,CAAsB;gBAC1F,KAAK,EAAE,IAAI;aACZ,CAAA;SACF;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,OAAO,CAAsB;YAClF,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,SAAS,CAAC,QAAc,EAAE,IAAY;QAC7C,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,SAAS,UAAU,CAAC,GAAS,EAAE,IAAU;QACvC,IAAI;YACF,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5G,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,IAAI;aACZ,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,gCAAgC,GAAG,SAAS,IAAI,GAAG;aAC3D,CAAC;SACH;IACH,CAAC;IAED,OAAO;QACL,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,UAAU;QACV,SAAS;QACT,SAAS;QACT,SAAS;QACT,UAAU;QACV,iBAAiB;QACjB,QAAQ;QACR,SAAS;QACT,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kBAAe,EAAE,GAAG,EAAE,OAAO,EAAE,kBAAO,EAAE,IAAI,EAAJ,cAAI,EAAE,CAAC"}
@@ -0,0 +1,30 @@
1
+ /// <reference types="node" />
2
+ import fs from 'fs-extra';
3
+ declare function existsSync(filePath: fs.PathLike): boolean;
4
+ declare function lstatSync(filePath: fs.PathLike, options?: fs.StatOptions & {
5
+ bigint?: false;
6
+ }): fs.Stats;
7
+ declare function chmodSync(filePath: fs.PathLike, mode: fs.Mode): void;
8
+ declare function renameSync(oldPath: fs.PathLike, newPath: fs.PathLike): void;
9
+ declare function readFileSync(filePath: number | fs.PathLike, options?: {
10
+ encoding: BufferEncoding;
11
+ flag?: string;
12
+ } | BufferEncoding): string;
13
+ declare function copySync(src: string, dest: string, options?: fs.CopyOptionsSync): void;
14
+ declare function mkdirpSync(dir: string): any;
15
+ declare function removeSync(filePath: string): void;
16
+ declare function ensureFileSync(filename: string): void;
17
+ declare function outputFileSync(filename: string, data: any, options?: string | fs.WriteFileOptions): void;
18
+ declare const _default: {
19
+ existsSync: typeof existsSync;
20
+ lstatSync: typeof lstatSync;
21
+ chmodSync: typeof chmodSync;
22
+ renameSync: typeof renameSync;
23
+ readFileSync: typeof readFileSync;
24
+ copySync: typeof copySync;
25
+ removeSync: typeof removeSync;
26
+ ensureFileSync: typeof ensureFileSync;
27
+ mkdirpSync: typeof mkdirpSync;
28
+ outputFileSync: typeof outputFileSync;
29
+ };
30
+ export default _default;
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const mockFileSystem = new Map();
8
+ function existsSync(filePath) {
9
+ if (filePath === path_1.default.resolve(`.`))
10
+ return true;
11
+ return mockFileSystem.has(filePath);
12
+ }
13
+ function lstatSync(filePath, options) {
14
+ const retVal = {
15
+ isDirectory: () => filePath === path_1.default.resolve(`.`) ? true : mockFileSystem.get(filePath)[0] === 'dir',
16
+ isFile: () => mockFileSystem.has(filePath) && mockFileSystem.get(filePath)[0] === 'file',
17
+ isBlockDevice: () => false,
18
+ isCharacterDevice: () => false,
19
+ isSymbolicLink: () => false,
20
+ isFIFO: () => false,
21
+ isSocket: () => false,
22
+ dev: 0,
23
+ ino: 0,
24
+ mode: 0,
25
+ nlink: 0,
26
+ uid: 0,
27
+ gid: 0,
28
+ rdev: 0,
29
+ size: 0,
30
+ blksize: 0,
31
+ blocks: 0,
32
+ atimeMs: 0,
33
+ mtimeMs: 0,
34
+ ctimeMs: 0,
35
+ birthtimeMs: 0,
36
+ atime: new Date(0),
37
+ mtime: new Date(0),
38
+ ctime: new Date(0),
39
+ birthtime: new Date(0)
40
+ };
41
+ // cheat coverage numbers...
42
+ retVal.isBlockDevice();
43
+ retVal.isCharacterDevice();
44
+ retVal.isSymbolicLink();
45
+ retVal.isFIFO();
46
+ retVal.isSocket();
47
+ return retVal;
48
+ }
49
+ function chmodSync(filePath, mode) {
50
+ return;
51
+ }
52
+ class ENOENTError extends Error {
53
+ constructor(message) {
54
+ super(message);
55
+ this.code = "ENOENT";
56
+ }
57
+ }
58
+ function renameSync(oldPath, newPath) {
59
+ if (!mockFileSystem.has(oldPath))
60
+ throw new ENOENTError('source path not found');
61
+ for (const key of mockFileSystem.keys()) {
62
+ if (key.includes(oldPath)) {
63
+ const newName = key.split(oldPath).join(newPath);
64
+ const newVal = mockFileSystem.get(key);
65
+ mockFileSystem.delete(key);
66
+ mockFileSystem.set(newName, newVal);
67
+ }
68
+ }
69
+ }
70
+ function readFileSync(filePath, options) {
71
+ return mockFileSystem.get(filePath)[1];
72
+ }
73
+ function copySync(src, dest, options) {
74
+ if (mockFileSystem.has(dest))
75
+ throw Error('destination directory exists');
76
+ for (const key of mockFileSystem.keys()) {
77
+ if (key.includes(src)) {
78
+ const newName = key.split(src).join(dest);
79
+ mockFileSystem.set(newName, mockFileSystem.get(key));
80
+ }
81
+ }
82
+ }
83
+ function mkdirpSync(dir) {
84
+ if (lstatSync(dir).isFile())
85
+ throw Error('file exists at destination');
86
+ let first = undefined;
87
+ const dirs = dir.split(path_1.default.resolve(`.`)).join('').split(path_1.default.sep);
88
+ for (let i = 0; i < dirs.length; i++) {
89
+ const subdir = dirs.slice(0, i + 1).join(path_1.default.sep);
90
+ if (!mockFileSystem.has(`${path_1.default.resolve(`.`)}${subdir}`) && subdir !== '') {
91
+ mockFileSystem.set(`${path_1.default.resolve(`.`)}${subdir}`, ['dir', '']);
92
+ first = first == undefined ? `${path_1.default.resolve(`.`)}${subdir}` : first;
93
+ }
94
+ }
95
+ return first;
96
+ }
97
+ function removeSync(filePath) {
98
+ for (const key of mockFileSystem.keys()) {
99
+ if (key.includes(filePath))
100
+ mockFileSystem.delete(key);
101
+ }
102
+ }
103
+ function ensureFileSync(filename) {
104
+ mockFileSystem.set(filename, ['file', '']);
105
+ }
106
+ function outputFileSync(filename, data, options) {
107
+ mockFileSystem.set(filename, ['file', data]);
108
+ }
109
+ exports.default = { existsSync, lstatSync, chmodSync, renameSync, readFileSync, copySync, removeSync, ensureFileSync, mkdirpSync, outputFileSync };
110
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../src/mock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ declare type Path = string;
2
+ declare type RetVal = {
3
+ success: boolean;
4
+ error?: string;
5
+ };
6
+ interface RetString extends RetVal {
7
+ value?: string;
8
+ }
9
+ interface RetBool extends RetVal {
10
+ value?: boolean;
11
+ }
12
+ interface RetPath extends RetVal {
13
+ value?: Path;
14
+ }
15
+ export { Path, RetBool, RetString, RetVal, RetPath };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jestaubach/fs-helpers",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "wrapper around fs-extra",
5
5
  "keywords": [],
6
6
  "homepage": "https://github.com/JEStaubach/fs-helpers",
@@ -22,6 +22,7 @@
22
22
  "license": "MIT",
23
23
  "private": false,
24
24
  "main": "dist/src/index.js",
25
+ "types": "dist/src/index.d.ts",
25
26
  "files": [
26
27
  "dist/src"
27
28
  ],
@@ -39,7 +40,7 @@
39
40
  "@types/fs-extra": "^9.0.13",
40
41
  "@types/jest": "^27.4.0",
41
42
  "@types/mkdirp": "^1.0.2",
42
- "@types/node": "^17.0.10",
43
+ "@types/node": "^17.0.13",
43
44
  "@xascode/tscpaths": "^0.1.4",
44
45
  "ts-jest": "^27.1.3",
45
46
  "typescript": "^4.5.5"
@@ -1,201 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.copyDirAbs = exports.writeFile = exports.readFile = exports.renameDir = exports.abortDirCreation = exports.rimrafDirs = exports.rimrafDir = exports.touchFile = exports.createDir = exports.getAbsolutePath = exports.checkIfDirExists = exports.checkIfFileExists = void 0;
7
- const _1 = __importDefault(require("./"));
8
- const path_1 = __importDefault(require("path"));
9
- function checkIfFileExists(filePath) {
10
- if (!_1.default.existsSync(filePath)) {
11
- return {
12
- success: true,
13
- value: false,
14
- error: null,
15
- };
16
- }
17
- if (!_1.default.lstatSync(filePath).isFile()) {
18
- return {
19
- success: false,
20
- value: false,
21
- error: `checkIfFileExists: '${filePath}' is not a file.`,
22
- };
23
- }
24
- return {
25
- success: true,
26
- value: true,
27
- error: null,
28
- };
29
- }
30
- exports.checkIfFileExists = checkIfFileExists;
31
- function checkIfDirExists(dir) {
32
- if (!_1.default.existsSync(dir)) {
33
- return {
34
- success: true,
35
- value: false,
36
- error: null,
37
- };
38
- }
39
- if (!_1.default.lstatSync(dir).isDirectory()) {
40
- return {
41
- success: false,
42
- value: false,
43
- error: `checkIfDirExists: '${dir}' is not a directory.`,
44
- };
45
- }
46
- return {
47
- success: true,
48
- value: true,
49
- error: null,
50
- };
51
- }
52
- exports.checkIfDirExists = checkIfDirExists;
53
- function getAbsolutePath(dir) {
54
- try {
55
- if (dir.match(/^[.a-zA-Z0-9\-_/:\\]+$/g) === null) {
56
- throw Error(`Dir contains unsupported characters. Received ${dir}.`);
57
- }
58
- const absPath = path_1.default.normalize(path_1.default.resolve(dir));
59
- return {
60
- success: true,
61
- value: absPath,
62
- error: null,
63
- };
64
- }
65
- catch (err) {
66
- console.error(`Error resolving path: ${dir}`);
67
- return {
68
- success: false,
69
- value: undefined,
70
- error: `Error resolving path: '${dir}'. Received error: '${err}'`,
71
- };
72
- }
73
- }
74
- exports.getAbsolutePath = getAbsolutePath;
75
- function createDir(dir) {
76
- try {
77
- if (dir === undefined || getAbsolutePath(dir).value !== dir) {
78
- throw Error(`Function "createDir" expected an absolute path. Recieved "${dir}".`);
79
- }
80
- return {
81
- success: true,
82
- value: _1.default.mkdirp(dir),
83
- error: null,
84
- };
85
- }
86
- catch (err) {
87
- console.error(`Error creating dir: ${dir}`);
88
- return {
89
- success: false,
90
- value: undefined,
91
- error: `Error creating dir: '${dir}'`,
92
- };
93
- }
94
- }
95
- exports.createDir = createDir;
96
- function touchFile(filePath, perms) {
97
- _1.default.touch(filePath);
98
- if (perms !== undefined) {
99
- _1.default.chmodSync(filePath, perms);
100
- }
101
- return {
102
- success: true,
103
- error: null,
104
- };
105
- }
106
- exports.touchFile = touchFile;
107
- function rimrafDir(dir) {
108
- const absPath = getAbsolutePath(dir).value;
109
- if (absPath !== undefined && checkIfDirExists(dir).value) {
110
- _1.default.rimraf(dir);
111
- return {
112
- success: true,
113
- value: dir,
114
- error: null,
115
- };
116
- }
117
- console.error(`Error deleting dir: ${dir}`);
118
- return {
119
- success: false,
120
- value: undefined,
121
- error: `Error deleting dir: '${dir}'`,
122
- };
123
- }
124
- exports.rimrafDir = rimrafDir;
125
- function rimrafDirs(dirs) {
126
- return dirs.map((dir) => {
127
- return rimrafDir(getAbsolutePath(dir).value);
128
- });
129
- }
130
- exports.rimrafDirs = rimrafDirs;
131
- function abortDirCreation(dir) {
132
- if (dir !== null && checkIfDirExists(dir).value) {
133
- console.error(`Cleaning up due to abort, directories created starting at: ${JSON.stringify(dir)}`);
134
- rimrafDir(dir);
135
- return {
136
- success: true,
137
- error: null,
138
- };
139
- }
140
- console.error(`Cleaning up due to abort, no directory to clean up.`);
141
- return {
142
- success: false,
143
- error: `Cleaning up due to abort, no directory to clean up.`,
144
- };
145
- }
146
- exports.abortDirCreation = abortDirCreation;
147
- function renameDir(oldPath, newPath) {
148
- try {
149
- _1.default.renameSync(oldPath, newPath);
150
- return { success: true, value: `Successfully renamed the directory.` };
151
- }
152
- catch (err) {
153
- console.error(err.code);
154
- return { success: false, error: `renameDir from '${oldPath}' to '${newPath} failed.` };
155
- }
156
- }
157
- exports.renameDir = renameDir;
158
- function readFile(dir) {
159
- return {
160
- success: true,
161
- value: _1.default.readFileSync(getAbsolutePath(dir).value, `utf-8`),
162
- };
163
- }
164
- exports.readFile = readFile;
165
- function writeFile(fileName, data) {
166
- _1.default.outputFileSync(fileName, data);
167
- return {
168
- success: true,
169
- };
170
- }
171
- exports.writeFile = writeFile;
172
- function copyDirAbs(src, dest) {
173
- try {
174
- _1.default.copySync(src, dest, { overwrite: false, errorOnExist: true });
175
- return {
176
- success: true,
177
- };
178
- }
179
- catch (err) {
180
- return {
181
- success: false,
182
- error: `Error copying absolute from '${src}' to '${dest}'`,
183
- };
184
- }
185
- }
186
- exports.copyDirAbs = copyDirAbs;
187
- exports.default = {
188
- getAbsolutePath,
189
- abortDirCreation,
190
- checkIfDirExists,
191
- copyDirAbs,
192
- createDir,
193
- renameDir,
194
- rimrafDir,
195
- rimrafDirs,
196
- checkIfFileExists,
197
- readFile,
198
- writeFile,
199
- touchFile,
200
- };
201
- //# sourceMappingURL=fsHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fsHelpers.js","sourceRoot":"","sources":["../../src/fsHelpers.ts"],"names":[],"mappings":"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"}