necessary 11.9.3 → 11.10.2
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.
- package/README.md +41 -11
- package/lib/utilities/fileSystem.js +34 -10
- package/package.json +1 -1
- package/src/utilities/fileSystem.js +35 -12
package/README.md
CHANGED
|
@@ -52,12 +52,24 @@ const { first, last } = arrayUtilities,
|
|
|
52
52
|
|
|
53
53
|
...
|
|
54
54
|
```
|
|
55
|
+
|
|
56
|
+
Or the `require()` function can be used where appropriate:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
const { arrayUtilities, asynchronousUtilities, fileSystemUtilities } = require("necessary");
|
|
60
|
+
|
|
61
|
+
const { first, last } = arrayUtilities,
|
|
62
|
+
{ isDirectory } = fileSystemUtilities;
|
|
63
|
+
|
|
64
|
+
...
|
|
65
|
+
```
|
|
66
|
+
|
|
55
67
|
The miscellaneous functions are a special case. They can be treated as above but may well have other functions assigned to them. See below.
|
|
56
68
|
|
|
57
69
|
## Ajax utilities
|
|
58
70
|
|
|
59
71
|
- `get()`
|
|
60
|
-
- `post()`
|
|
72
|
+
- `post()`cp
|
|
61
73
|
- `request()`
|
|
62
74
|
|
|
63
75
|
The first two `get()` and `post()` functions make use of the third `request()` function, which is more generic and can be used for arbitrary HTTP requests.
|
|
@@ -139,7 +151,7 @@ Note that the `headers` argument is not optional this time.
|
|
|
139
151
|
|
|
140
152
|
Functions that can be used for Node applications running in a shell window.
|
|
141
153
|
|
|
142
|
-
* The `onETX()` function takes a handler which is invoked whenever the `ETX` character code is encountered in the `stdin` stream, which typically happens when the user presses `Ctrl-C`. This
|
|
154
|
+
* The `onETX()` function takes a handler which is invoked whenever the `ETX` character code is encountered in the `stdin` stream, which typically happens when the user presses `Ctrl-C`. This function is therefore useful for exiting a console application immediately upon the user's behest, if it is passed `process.exit`. It also returns a function that can be called to remove the listener at some later point in time:
|
|
143
155
|
|
|
144
156
|
```
|
|
145
157
|
const offEXT = onEXT(process.exit);
|
|
@@ -346,11 +358,13 @@ const packageJSON = getPackageJSON(); // Returns the contents of the package.jso
|
|
|
346
358
|
- `readDirectory()`
|
|
347
359
|
- `readFile()`
|
|
348
360
|
- `writeFile()`
|
|
349
|
-
- `createFile()`
|
|
350
361
|
- `appendToFile()`
|
|
351
362
|
- `createDirectory()`
|
|
352
363
|
- `renameDirectory()`
|
|
364
|
+
- `moveDirectory()`
|
|
365
|
+
- `createFile()`
|
|
353
366
|
- `renameFile()`
|
|
367
|
+
- `moveFile()`
|
|
354
368
|
- `removeEntry()`
|
|
355
369
|
- `getStats()`
|
|
356
370
|
|
|
@@ -390,12 +404,6 @@ readFile("root/etc/init.conf"); // returns the content of the 'root/etc/init.con
|
|
|
390
404
|
writeFile("root/etc/init.conf", ""); // writes '' to the 'root/etc/init.conf' file
|
|
391
405
|
```
|
|
392
406
|
|
|
393
|
-
* The `createFile()` creates an empty file. It does not return anything upon success:
|
|
394
|
-
|
|
395
|
-
```
|
|
396
|
-
createFile("root/etc/init.conf"); // writes '' to the 'root/etc/init.conf' file
|
|
397
|
-
```
|
|
398
|
-
|
|
399
407
|
* The `appendToFile()` function takes the content to append file as a second string argument. It will create teh file if necessary and does not return anything upon success:
|
|
400
408
|
|
|
401
409
|
```
|
|
@@ -414,12 +422,34 @@ createDirectory("root/etc/init"); // Creates the 'root/etc/init' directory
|
|
|
414
422
|
renameDirectory("/root/usr", "/root/lib"); // Renames the '/root/usr' directory to '/root/lib'
|
|
415
423
|
```
|
|
416
424
|
|
|
425
|
+
Note that if the parent directory of the newly named directory does not exist then this function will fail. Instead use the `moveDirectory()` function.
|
|
426
|
+
|
|
427
|
+
* The `moveDirectory()` function moves a directory:
|
|
428
|
+
|
|
429
|
+
```
|
|
430
|
+
moveDirectory("/root/usr", "/etc/lib"); // Moves the '/root/usr' directory to '/etc/lib'
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
* The `createFile()` creates an empty file. It does not return anything upon success:
|
|
434
|
+
|
|
435
|
+
```
|
|
436
|
+
createFile("root/etc/init.conf"); // writes '' to the 'root/etc/init.conf' file
|
|
437
|
+
```
|
|
438
|
+
|
|
417
439
|
* The `renameFile()` function renames a file:
|
|
418
440
|
|
|
419
441
|
```
|
|
420
442
|
renameFile("hosts", "host"); // Renames the 'hosts' file to 'host'
|
|
421
443
|
```
|
|
422
444
|
|
|
445
|
+
Note that if the parent directory of the newly named file does not exist then this function will fail. Instead use the `moveFile()` function.
|
|
446
|
+
|
|
447
|
+
* The `moveFile()` function moves a file:
|
|
448
|
+
|
|
449
|
+
```
|
|
450
|
+
moveFile("/root/usr/init.conf", "/etc/lib/init.conf"); // Moves the '/root/usr/init.conf' file to '/etc/lib/init.conf'
|
|
451
|
+
```
|
|
452
|
+
|
|
423
453
|
* The `removeEntry()` function removes a file or directory:
|
|
424
454
|
|
|
425
455
|
```
|
|
@@ -490,7 +520,7 @@ rc(); // Provides the first environment in the '.defaultrc' file
|
|
|
490
520
|
|
|
491
521
|
Note that the `rc()` function can be included in any file but only needs to be called once. But be careful that it is called before it is ever destructured.
|
|
492
522
|
|
|
493
|
-
Aside from the aforementioned `setRCBaseExtension()` functions, the `checkRCFileExists()`, `createVacuousRCFile()`, `readRCFile()` and `writeRCFile()` functions do as their names suggest. The `updateRCFile()` function, if passed a plain old JavaScript object as the first
|
|
523
|
+
Aside from the aforementioned `setRCBaseExtension()` functions, the `checkRCFileExists()`, `createVacuousRCFile()`, `readRCFile()` and `writeRCFile()` functions do as their names suggest. The `updateRCFile()` function, if passed a plain old JavaScript object as the first argument, will add the properties therein, overwriting any existing properties. Properties to be removed can be given as further arguments. If you do not want to add as well as remove properties, set the first argument to a falsey value.
|
|
494
524
|
|
|
495
525
|
```
|
|
496
526
|
const { readRCFile, writeRCFile, updateRCFile, checkRCFileExists, createVacuousRCFile } = rc;
|
|
@@ -1054,7 +1084,7 @@ eventually(operations, () => {
|
|
|
1054
1084
|
/// done
|
|
1055
1085
|
}, context);
|
|
1056
1086
|
```
|
|
1057
|
-
* The `repeatedly()` function takes a single operation and a `length`
|
|
1087
|
+
* The `repeatedly()` function takes a single operation and a `length` argument, immediately calling the operation a `length` number of times without waiting for it to invoke the given `next()` function each time. When the operation has invoked the given `next()` function a `length` number of times, it will call the `done()` function. Note that in this case invoking the `done()` function from within the operation will not halt its execution the requisite number of times, it is passed as an argument only for the sake of convention. In the example below the operation is executed ten times:
|
|
1058
1088
|
|
|
1059
1089
|
```
|
|
1060
1090
|
const context = {};
|
|
@@ -36,9 +36,6 @@ _export(exports, {
|
|
|
36
36
|
writeFile: function() {
|
|
37
37
|
return writeFile;
|
|
38
38
|
},
|
|
39
|
-
createFile: function() {
|
|
40
|
-
return createFile;
|
|
41
|
-
},
|
|
42
39
|
appendToFile: function() {
|
|
43
40
|
return appendToFile;
|
|
44
41
|
},
|
|
@@ -48,9 +45,18 @@ _export(exports, {
|
|
|
48
45
|
renameDirectory: function() {
|
|
49
46
|
return renameDirectory;
|
|
50
47
|
},
|
|
48
|
+
moveDirectory: function() {
|
|
49
|
+
return moveDirectory;
|
|
50
|
+
},
|
|
51
|
+
createFile: function() {
|
|
52
|
+
return createFile;
|
|
53
|
+
},
|
|
51
54
|
renameFile: function() {
|
|
52
55
|
return renameFile;
|
|
53
56
|
},
|
|
57
|
+
moveFile: function() {
|
|
58
|
+
return moveFile;
|
|
59
|
+
},
|
|
54
60
|
removeEntry: function() {
|
|
55
61
|
return removeEntry;
|
|
56
62
|
},
|
|
@@ -62,6 +68,7 @@ _export(exports, {
|
|
|
62
68
|
}
|
|
63
69
|
});
|
|
64
70
|
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
71
|
+
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
65
72
|
var _constants = require("../constants");
|
|
66
73
|
var _defaults = require("../defaults");
|
|
67
74
|
function _interop_require_default(obj) {
|
|
@@ -121,15 +128,12 @@ function readFile(filePath) {
|
|
|
121
128
|
function writeFile(filePath, content) {
|
|
122
129
|
_fs.default.writeFileSync(filePath, content);
|
|
123
130
|
}
|
|
124
|
-
function createFile(filePath) {
|
|
125
|
-
var content = _constants.EMPTY_STRING;
|
|
126
|
-
_fs.default.writeFileSync(filePath, content);
|
|
127
|
-
}
|
|
128
131
|
function appendToFile(filePath, content) {
|
|
129
132
|
_fs.default.appendFileSync(filePath, content);
|
|
130
133
|
}
|
|
131
134
|
function createDirectory(directoryPath) {
|
|
132
|
-
var recursive =
|
|
135
|
+
var recursive = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : true;
|
|
136
|
+
var options = {
|
|
133
137
|
recursive: recursive
|
|
134
138
|
};
|
|
135
139
|
_fs.default.mkdirSync(directoryPath, options);
|
|
@@ -137,9 +141,21 @@ function createDirectory(directoryPath) {
|
|
|
137
141
|
function renameDirectory(oldDirectoryPath, newDirectoryPath) {
|
|
138
142
|
_fs.default.renameSync(oldDirectoryPath, newDirectoryPath);
|
|
139
143
|
}
|
|
144
|
+
function moveDirectory(oldDirectoryPath, newDirectoryPath) {
|
|
145
|
+
ensureParentDirectoryExists(newDirectoryPath);
|
|
146
|
+
renameDirectory(oldDirectoryPath, newDirectoryPath);
|
|
147
|
+
}
|
|
148
|
+
function createFile(filePath) {
|
|
149
|
+
var content = _constants.EMPTY_STRING;
|
|
150
|
+
_fs.default.writeFileSync(filePath, content);
|
|
151
|
+
}
|
|
140
152
|
function renameFile(oldFilePath, newFilePath) {
|
|
141
153
|
_fs.default.renameSync(oldFilePath, newFilePath);
|
|
142
154
|
}
|
|
155
|
+
function moveFile(oldFilePath, newFilePath) {
|
|
156
|
+
ensureParentFileExists(newFilePath);
|
|
157
|
+
renameFile(oldFilePath, newFilePath);
|
|
158
|
+
}
|
|
143
159
|
function removeEntry(entryPath) {
|
|
144
160
|
var force = true, recursive = true, options = {
|
|
145
161
|
force: force,
|
|
@@ -160,13 +176,21 @@ var _default = {
|
|
|
160
176
|
readDirectory: readDirectory,
|
|
161
177
|
readFile: readFile,
|
|
162
178
|
writeFile: writeFile,
|
|
163
|
-
createFile: createFile,
|
|
164
179
|
appendToFile: appendToFile,
|
|
165
180
|
createDirectory: createDirectory,
|
|
166
181
|
renameDirectory: renameDirectory,
|
|
182
|
+
moveDirectory: moveDirectory,
|
|
183
|
+
createFile: createFile,
|
|
167
184
|
renameFile: renameFile,
|
|
185
|
+
moveFile: moveFile,
|
|
168
186
|
removeEntry: removeEntry,
|
|
169
187
|
getStats: getStats
|
|
170
188
|
};
|
|
189
|
+
function ensureParentDirectoryExists(filePath) {
|
|
190
|
+
var parentDirectoryPath = _path.default.dirname(filePath), parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
|
|
191
|
+
if (!parentDirectoryExists) {
|
|
192
|
+
createDirectory(parentDirectoryPath);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
171
195
|
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBERUZBVUxUX0VOQ09ESU5HIH0gZnJvbSBcIi4uL2RlZmF1bHRzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCkge1xuICBjb25zdCBlbnRyeUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoZW50cnlQYXRoKTtcblxuICByZXR1cm4gZW50cnlFeGlzdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0ZpbGVFeGlzdHMoZmlsZVBhdGgpIHtcbiAgbGV0IGZpbGVFeGlzdHMgPSBmYWxzZTtcbiAgXG4gIGNvbnN0IGVudHJ5UGF0aCA9IGZpbGVQYXRoLCAvLy9cbiAgICAgICAgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG4gIFxuICBpZiAoZW50cnlFeGlzdHMpIHtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBpc0VudHJ5RmlsZShlbnRyeVBhdGgpO1xuICAgIFxuICAgIGlmIChlbnRyeUZpbGUpIHtcbiAgICAgIGZpbGVFeGlzdHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBcbiAgcmV0dXJuIGZpbGVFeGlzdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0RpcmVjdG9yeUV4aXN0cyhkaXJlY3RvcnlQYXRoKSB7XG4gIGxldCBkaXJlY3RvcnlFeGlzdHMgPSBmYWxzZTtcblxuICBjb25zdCBlbnRyeVBhdGggPSBkaXJlY3RvcnlQYXRoLCAvLy9cbiAgICAgICAgZW50cnlFeGlzdHMgPSBjaGVja0VudHJ5RXhpc3RzKGVudHJ5UGF0aCk7XG5cbiAgaWYgKGVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZW50cnlEaXJlY3RvcnkgPSBpc0VudHJ5RGlyZWN0b3J5KGVudHJ5UGF0aCk7XG5cbiAgICBpZiAoZW50cnlEaXJlY3RvcnkpIHtcbiAgICAgIGRpcmVjdG9yeUV4aXN0cyA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRpcmVjdG9yeUV4aXN0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50cnlGaWxlKGVudHJ5UGF0aCkge1xuICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoZW50cnlQYXRoKSxcbiAgICAgICAgZW50cnlEaXJlY3RvcnkgPSBzdGF0LmlzRGlyZWN0b3J5KCksXG4gICAgICAgIGVudHJ5RmlsZSA9ICFlbnRyeURpcmVjdG9yeTtcblxuICByZXR1cm4gZW50cnlGaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRyeURpcmVjdG9yeShlbnRyeVBhdGgpIHtcbiAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGVudHJ5UGF0aCksXG4gICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gc3RhdC5pc0RpcmVjdG9yeSgpO1xuXG4gIHJldHVybiBlbnRyeURpcmVjdG9yeTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRGlyZWN0b3J5RW1wdHkoZGlyZWN0b3J5UGF0aCkge1xuICBjb25zdCBzdWJFbnRyeU5hbWVzID0gcmVhZERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSxcbiAgICAgICAgc3ViRW50cnlOYW1lc0xlbmd0aCA9IHN1YkVudHJ5TmFtZXMubGVuZ3RoLFxuICAgICAgICBkaXJlY3RvcnlFbXB0eSA9IChzdWJFbnRyeU5hbWVzTGVuZ3RoID09PSAwKTtcblxuICByZXR1cm4gZGlyZWN0b3J5RW1wdHk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWFkRGlyZWN0b3J5KGRpcmVjdG9yeVBhdGgpIHtcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IGZzLnJlYWRkaXJTeW5jKGRpcmVjdG9yeVBhdGgpO1xuXG4gIHJldHVybiBzdWJFbnRyeU5hbWVzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZEZpbGUoZmlsZVBhdGgsIGVuY29kaW5nID0gREVGQVVMVF9FTkNPRElORykge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgICAgIGVuY29kaW5nXG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnQgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd3JpdGVGaWxlKGZpbGVQYXRoLCBjb250ZW50KSB7XG4gIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsZShmaWxlUGF0aCkge1xuICBjb25zdCBjb250ZW50ID0gRU1QVFlfU1RSSU5HO1xuXG4gIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kVG9GaWxlKGZpbGVQYXRoLCBjb250ZW50KSB7XG4gIGZzLmFwcGVuZEZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSB7XG4gIGNvbnN0IHJlY3Vyc2l2ZSA9IHRydWUsXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgcmVjdXJzaXZlXG4gICAgICAgIH07XG5cbiAgZnMubWtkaXJTeW5jKGRpcmVjdG9yeVBhdGgsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuYW1lRGlyZWN0b3J5KG9sZERpcmVjdG9yeVBhdGgsIG5ld0RpcmVjdG9yeVBhdGgpIHtcbiAgZnMucmVuYW1lU3luYyhvbGREaXJlY3RvcnlQYXRoLCBuZXdEaXJlY3RvcnlQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZUZpbGUob2xkRmlsZVBhdGgsIG5ld0ZpbGVQYXRoKSB7XG4gIGZzLnJlbmFtZVN5bmMob2xkRmlsZVBhdGgsIG5ld0ZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudHJ5KGVudHJ5UGF0aCkge1xuICBjb25zdCBmb3JjZSA9IHRydWUsXG4gICAgICAgIHJlY3Vyc2l2ZSA9IHRydWUsXG4gICAgICAgIG9wdGlvbnMgPSB7XG4gICAgICAgICAgZm9yY2UsXG4gICAgICAgICAgcmVjdXJzaXZlXG4gICAgICAgIH07XG5cbiAgZnMucm1TeW5jKGVudHJ5UGF0aCwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0cyhmaWxlUGF0aCkge1xuICByZXR1cm4gZnMuc3RhdFN5bmMoZmlsZVBhdGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNoZWNrRW50cnlFeGlzdHMsXG4gIGNoZWNrRmlsZUV4aXN0cyxcbiAgY2hlY2tEaXJlY3RvcnlFeGlzdHMsXG4gIGlzRW50cnlGaWxlLFxuICBpc0VudHJ5RGlyZWN0b3J5LFxuICBpc0RpcmVjdG9yeUVtcHR5LFxuICByZWFkRGlyZWN0b3J5LFxuICByZWFkRmlsZSxcbiAgd3JpdGVGaWxlLFxuICBjcmVhdGVGaWxlLFxuICBhcHBlbmRUb0ZpbGUsXG4gIGNyZWF0ZURpcmVjdG9yeSxcbiAgcmVuYW1lRGlyZWN0b3J5LFxuICByZW5hbWVGaWxlLFxuICByZW1vdmVFbnRyeSxcbiAgZ2V0U3RhdHNcbn07XG4iXSwibmFtZXMiOlsiY2hlY2tFbnRyeUV4aXN0cyIsImNoZWNrRmlsZUV4aXN0cyIsImNoZWNrRGlyZWN0b3J5RXhpc3RzIiwiaXNFbnRyeUZpbGUiLCJpc0VudHJ5RGlyZWN0b3J5IiwiaXNEaXJlY3RvcnlFbXB0eSIsInJlYWREaXJlY3RvcnkiLCJyZWFkRmlsZSIsIndyaXRlRmlsZSIsImNyZWF0ZUZpbGUiLCJhcHBlbmRUb0ZpbGUiLCJjcmVhdGVEaXJlY3RvcnkiLCJyZW5hbWVEaXJlY3RvcnkiLCJyZW5hbWVGaWxlIiwicmVtb3ZlRW50cnkiLCJnZXRTdGF0cyIsImVudHJ5UGF0aCIsImVudHJ5RXhpc3RzIiwiZnMiLCJleGlzdHNTeW5jIiwiZmlsZVBhdGgiLCJmaWxlRXhpc3RzIiwiZW50cnlGaWxlIiwiZGlyZWN0b3J5UGF0aCIsImRpcmVjdG9yeUV4aXN0cyIsImVudHJ5RGlyZWN0b3J5Iiwic3RhdCIsInN0YXRTeW5jIiwiaXNEaXJlY3RvcnkiLCJzdWJFbnRyeU5hbWVzIiwic3ViRW50cnlOYW1lc0xlbmd0aCIsImxlbmd0aCIsImRpcmVjdG9yeUVtcHR5IiwicmVhZGRpclN5bmMiLCJlbmNvZGluZyIsIkRFRkFVTFRfRU5DT0RJTkciLCJvcHRpb25zIiwiY29udGVudCIsInJlYWRGaWxlU3luYyIsIndyaXRlRmlsZVN5bmMiLCJFTVBUWV9TVFJJTkciLCJhcHBlbmRGaWxlU3luYyIsInJlY3Vyc2l2ZSIsIm1rZGlyU3luYyIsIm9sZERpcmVjdG9yeVBhdGgiLCJuZXdEaXJlY3RvcnlQYXRoIiwicmVuYW1lU3luYyIsIm9sZEZpbGVQYXRoIiwibmV3RmlsZVBhdGgiLCJmb3JjZSIsInJtU3luYyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBT2dCQSxnQkFBZ0I7ZUFBaEJBOztJQU1BQyxlQUFlO2VBQWZBOztJQWlCQUMsb0JBQW9CO2VBQXBCQTs7SUFpQkFDLFdBQVc7ZUFBWEE7O0lBUUFDLGdCQUFnQjtlQUFoQkE7O0lBT0FDLGdCQUFnQjtlQUFoQkE7O0lBUUFDLGFBQWE7ZUFBYkE7O0lBTUFDLFFBQVE7ZUFBUkE7O0lBU0FDLFNBQVM7ZUFBVEE7O0lBSUFDLFVBQVU7ZUFBVkE7O0lBTUFDLFlBQVk7ZUFBWkE7O0lBSUFDLGVBQWU7ZUFBZkE7O0lBU0FDLGVBQWU7ZUFBZkE7O0lBSUFDLFVBQVU7ZUFBVkE7O0lBSUFDLFdBQVc7ZUFBWEE7O0lBV0FDLFFBQVE7ZUFBUkE7O0lBSWhCLE9BaUJFO2VBakJGOzs7eURBakllO3lCQUVjO3dCQUNJOzs7Ozs7QUFFMUIsU0FBU2YsaUJBQWlCZ0IsU0FBUztJQUN4QyxJQUFNQyxjQUFjQyxXQUFFLENBQUNDLFVBQVUsQ0FBQ0g7SUFFbEMsT0FBT0M7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
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZVN5c3RlbS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgREVGQVVMVF9FTkNPRElORyB9IGZyb20gXCIuLi9kZWZhdWx0c1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFbnRyeUV4aXN0cyhlbnRyeVBhdGgpIHtcbiAgY29uc3QgZW50cnlFeGlzdHMgPSBmcy5leGlzdHNTeW5jKGVudHJ5UGF0aCk7XG5cbiAgcmV0dXJuIGVudHJ5RXhpc3RzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tGaWxlRXhpc3RzKGZpbGVQYXRoKSB7XG4gIGxldCBmaWxlRXhpc3RzID0gZmFsc2U7XG4gIFxuICBjb25zdCBlbnRyeVBhdGggPSBmaWxlUGF0aCwgLy8vXG4gICAgICAgIGVudHJ5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhlbnRyeVBhdGgpO1xuICBcbiAgaWYgKGVudHJ5RXhpc3RzKSB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gaXNFbnRyeUZpbGUoZW50cnlQYXRoKTtcbiAgICBcbiAgICBpZiAoZW50cnlGaWxlKSB7XG4gICAgICBmaWxlRXhpc3RzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgXG4gIHJldHVybiBmaWxlRXhpc3RzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tEaXJlY3RvcnlFeGlzdHMoZGlyZWN0b3J5UGF0aCkge1xuICBsZXQgZGlyZWN0b3J5RXhpc3RzID0gZmFsc2U7XG5cbiAgY29uc3QgZW50cnlQYXRoID0gZGlyZWN0b3J5UGF0aCwgLy8vXG4gICAgICAgIGVudHJ5RXhpc3RzID0gY2hlY2tFbnRyeUV4aXN0cyhlbnRyeVBhdGgpO1xuXG4gIGlmIChlbnRyeUV4aXN0cykge1xuICAgIGNvbnN0IGVudHJ5RGlyZWN0b3J5ID0gaXNFbnRyeURpcmVjdG9yeShlbnRyeVBhdGgpO1xuXG4gICAgaWYgKGVudHJ5RGlyZWN0b3J5KSB7XG4gICAgICBkaXJlY3RvcnlFeGlzdHMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkaXJlY3RvcnlFeGlzdHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VudHJ5RmlsZShlbnRyeVBhdGgpIHtcbiAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKGVudHJ5UGF0aCksXG4gICAgICAgIGVudHJ5RGlyZWN0b3J5ID0gc3RhdC5pc0RpcmVjdG9yeSgpLFxuICAgICAgICBlbnRyeUZpbGUgPSAhZW50cnlEaXJlY3Rvcnk7XG5cbiAgcmV0dXJuIGVudHJ5RmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW50cnlEaXJlY3RvcnkoZW50cnlQYXRoKSB7XG4gIGNvbnN0IHN0YXQgPSBmcy5zdGF0U3luYyhlbnRyeVBhdGgpLFxuICAgICAgICBlbnRyeURpcmVjdG9yeSA9IHN0YXQuaXNEaXJlY3RvcnkoKTtcblxuICByZXR1cm4gZW50cnlEaXJlY3Rvcnk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RpcmVjdG9yeUVtcHR5KGRpcmVjdG9yeVBhdGgpIHtcbiAgY29uc3Qgc3ViRW50cnlOYW1lcyA9IHJlYWREaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCksXG4gICAgICAgIHN1YkVudHJ5TmFtZXNMZW5ndGggPSBzdWJFbnRyeU5hbWVzLmxlbmd0aCxcbiAgICAgICAgZGlyZWN0b3J5RW1wdHkgPSAoc3ViRW50cnlOYW1lc0xlbmd0aCA9PT0gMCk7XG5cbiAgcmV0dXJuIGRpcmVjdG9yeUVtcHR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZERpcmVjdG9yeShkaXJlY3RvcnlQYXRoKSB7XG4gIGNvbnN0IHN1YkVudHJ5TmFtZXMgPSBmcy5yZWFkZGlyU3luYyhkaXJlY3RvcnlQYXRoKTtcblxuICByZXR1cm4gc3ViRW50cnlOYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRGaWxlKGZpbGVQYXRoLCBlbmNvZGluZyA9IERFRkFVTFRfRU5DT0RJTkcpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICBlbmNvZGluZ1xuICAgICAgICB9LFxuICAgICAgICBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBvcHRpb25zKTtcblxuICByZXR1cm4gY29udGVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdyaXRlRmlsZShmaWxlUGF0aCwgY29udGVudCkge1xuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFRvRmlsZShmaWxlUGF0aCwgY29udGVudCkge1xuICBmcy5hcHBlbmRGaWxlU3luYyhmaWxlUGF0aCwgY29udGVudCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEaXJlY3RvcnkoZGlyZWN0b3J5UGF0aCwgcmVjdXJzaXZlID0gdHJ1ZSkge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIHJlY3Vyc2l2ZVxuICB9O1xuXG4gIGZzLm1rZGlyU3luYyhkaXJlY3RvcnlQYXRoLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZURpcmVjdG9yeShvbGREaXJlY3RvcnlQYXRoLCBuZXdEaXJlY3RvcnlQYXRoKSB7XG4gIGZzLnJlbmFtZVN5bmMob2xkRGlyZWN0b3J5UGF0aCwgbmV3RGlyZWN0b3J5UGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlRGlyZWN0b3J5KG9sZERpcmVjdG9yeVBhdGgsIG5ld0RpcmVjdG9yeVBhdGgpIHtcbiAgZW5zdXJlUGFyZW50RGlyZWN0b3J5RXhpc3RzKG5ld0RpcmVjdG9yeVBhdGgpO1xuXG4gIHJlbmFtZURpcmVjdG9yeShvbGREaXJlY3RvcnlQYXRoLCBuZXdEaXJlY3RvcnlQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZpbGUoZmlsZVBhdGgpIHtcbiAgY29uc3QgY29udGVudCA9IEVNUFRZX1NUUklORztcblxuICBmcy53cml0ZUZpbGVTeW5jKGZpbGVQYXRoLCBjb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmFtZUZpbGUob2xkRmlsZVBhdGgsIG5ld0ZpbGVQYXRoKSB7XG4gIGZzLnJlbmFtZVN5bmMob2xkRmlsZVBhdGgsIG5ld0ZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVGaWxlKG9sZEZpbGVQYXRoLCBuZXdGaWxlUGF0aCkge1xuICBlbnN1cmVQYXJlbnRGaWxlRXhpc3RzKG5ld0ZpbGVQYXRoKTtcblxuICByZW5hbWVGaWxlKG9sZEZpbGVQYXRoLCBuZXdGaWxlUGF0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFbnRyeShlbnRyeVBhdGgpIHtcbiAgY29uc3QgZm9yY2UgPSB0cnVlLFxuICAgICAgICByZWN1cnNpdmUgPSB0cnVlLFxuICAgICAgICBvcHRpb25zID0ge1xuICAgICAgICAgIGZvcmNlLFxuICAgICAgICAgIHJlY3Vyc2l2ZVxuICAgICAgICB9O1xuXG4gIGZzLnJtU3luYyhlbnRyeVBhdGgsIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHMoZmlsZVBhdGgpIHtcbiAgcmV0dXJuIGZzLnN0YXRTeW5jKGZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjaGVja0VudHJ5RXhpc3RzLFxuICBjaGVja0ZpbGVFeGlzdHMsXG4gIGNoZWNrRGlyZWN0b3J5RXhpc3RzLFxuICBpc0VudHJ5RmlsZSxcbiAgaXNFbnRyeURpcmVjdG9yeSxcbiAgaXNEaXJlY3RvcnlFbXB0eSxcbiAgcmVhZERpcmVjdG9yeSxcbiAgcmVhZEZpbGUsXG4gIHdyaXRlRmlsZSxcbiAgYXBwZW5kVG9GaWxlLFxuICBjcmVhdGVEaXJlY3RvcnksXG4gIHJlbmFtZURpcmVjdG9yeSxcbiAgbW92ZURpcmVjdG9yeSxcbiAgY3JlYXRlRmlsZSxcbiAgcmVuYW1lRmlsZSxcbiAgbW92ZUZpbGUsXG4gIHJlbW92ZUVudHJ5LFxuICBnZXRTdGF0c1xufTtcblxuZnVuY3Rpb24gZW5zdXJlUGFyZW50RGlyZWN0b3J5RXhpc3RzKGZpbGVQYXRoKSB7XG4gIGNvbnN0IHBhcmVudERpcmVjdG9yeVBhdGggPSBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpLCAvLy9cbiAgICAgICAgcGFyZW50RGlyZWN0b3J5RXhpc3RzID0gY2hlY2tEaXJlY3RvcnlFeGlzdHMocGFyZW50RGlyZWN0b3J5UGF0aCk7XG5cbiAgaWYgKCFwYXJlbnREaXJlY3RvcnlFeGlzdHMpIHtcbiAgICBjcmVhdGVEaXJlY3RvcnkocGFyZW50RGlyZWN0b3J5UGF0aCk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjaGVja0VudHJ5RXhpc3RzIiwiY2hlY2tGaWxlRXhpc3RzIiwiY2hlY2tEaXJlY3RvcnlFeGlzdHMiLCJpc0VudHJ5RmlsZSIsImlzRW50cnlEaXJlY3RvcnkiLCJpc0RpcmVjdG9yeUVtcHR5IiwicmVhZERpcmVjdG9yeSIsInJlYWRGaWxlIiwid3JpdGVGaWxlIiwiYXBwZW5kVG9GaWxlIiwiY3JlYXRlRGlyZWN0b3J5IiwicmVuYW1lRGlyZWN0b3J5IiwibW92ZURpcmVjdG9yeSIsImNyZWF0ZUZpbGUiLCJyZW5hbWVGaWxlIiwibW92ZUZpbGUiLCJyZW1vdmVFbnRyeSIsImdldFN0YXRzIiwiZW50cnlQYXRoIiwiZW50cnlFeGlzdHMiLCJmcyIsImV4aXN0c1N5bmMiLCJmaWxlUGF0aCIsImZpbGVFeGlzdHMiLCJlbnRyeUZpbGUiLCJkaXJlY3RvcnlQYXRoIiwiZGlyZWN0b3J5RXhpc3RzIiwiZW50cnlEaXJlY3RvcnkiLCJzdGF0Iiwic3RhdFN5bmMiLCJpc0RpcmVjdG9yeSIsInN1YkVudHJ5TmFtZXMiLCJzdWJFbnRyeU5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwiZGlyZWN0b3J5RW1wdHkiLCJyZWFkZGlyU3luYyIsImVuY29kaW5nIiwiREVGQVVMVF9FTkNPRElORyIsIm9wdGlvbnMiLCJjb250ZW50IiwicmVhZEZpbGVTeW5jIiwid3JpdGVGaWxlU3luYyIsImFwcGVuZEZpbGVTeW5jIiwicmVjdXJzaXZlIiwibWtkaXJTeW5jIiwib2xkRGlyZWN0b3J5UGF0aCIsIm5ld0RpcmVjdG9yeVBhdGgiLCJyZW5hbWVTeW5jIiwiZW5zdXJlUGFyZW50RGlyZWN0b3J5RXhpc3RzIiwiRU1QVFlfU1RSSU5HIiwib2xkRmlsZVBhdGgiLCJuZXdGaWxlUGF0aCIsImVuc3VyZVBhcmVudEZpbGVFeGlzdHMiLCJmb3JjZSIsInJtU3luYyIsInBhcmVudERpcmVjdG9yeVBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInBhcmVudERpcmVjdG9yeUV4aXN0cyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBUWdCQSxnQkFBZ0I7ZUFBaEJBOztJQU1BQyxlQUFlO2VBQWZBOztJQWlCQUMsb0JBQW9CO2VBQXBCQTs7SUFpQkFDLFdBQVc7ZUFBWEE7O0lBUUFDLGdCQUFnQjtlQUFoQkE7O0lBT0FDLGdCQUFnQjtlQUFoQkE7O0lBUUFDLGFBQWE7ZUFBYkE7O0lBTUFDLFFBQVE7ZUFBUkE7O0lBU0FDLFNBQVM7ZUFBVEE7O0lBSUFDLFlBQVk7ZUFBWkE7O0lBSUFDLGVBQWU7ZUFBZkE7O0lBUUFDLGVBQWU7ZUFBZkE7O0lBSUFDLGFBQWE7ZUFBYkE7O0lBTUFDLFVBQVU7ZUFBVkE7O0lBTUFDLFVBQVU7ZUFBVkE7O0lBSUFDLFFBQVE7ZUFBUkE7O0lBTUFDLFdBQVc7ZUFBWEE7O0lBV0FDLFFBQVE7ZUFBUkE7O0lBSWhCLE9BbUJFO2VBbkJGOzs7eURBN0llOzJEQUNFO3lCQUVZO3dCQUNJOzs7Ozs7QUFFMUIsU0FBU2pCLGlCQUFpQmtCLFNBQVM7SUFDeEMsSUFBTUMsY0FBY0MsV0FBRSxDQUFDQyxVQUFVLENBQUNIO0lBRWxDLE9BQU9DO0FBQ1Q7QUFFTyxTQUFTbEIsZ0JBQWdCcUIsUUFBUTtJQUN0QyxJQUFJQyxhQUFhO0lBRWpCLElBQU1MLFlBQVlJLFVBQ1pILGNBQWNu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
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
4
5
|
|
|
5
6
|
import { EMPTY_STRING } from "../constants";
|
|
6
7
|
import { DEFAULT_ENCODING } from "../defaults";
|
|
@@ -87,21 +88,14 @@ export function writeFile(filePath, content) {
|
|
|
87
88
|
fs.writeFileSync(filePath, content);
|
|
88
89
|
}
|
|
89
90
|
|
|
90
|
-
export function createFile(filePath) {
|
|
91
|
-
const content = EMPTY_STRING;
|
|
92
|
-
|
|
93
|
-
fs.writeFileSync(filePath, content);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
91
|
export function appendToFile(filePath, content) {
|
|
97
92
|
fs.appendFileSync(filePath, content);
|
|
98
93
|
}
|
|
99
94
|
|
|
100
|
-
export function createDirectory(directoryPath) {
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
};
|
|
95
|
+
export function createDirectory(directoryPath, recursive = true) {
|
|
96
|
+
const options = {
|
|
97
|
+
recursive
|
|
98
|
+
};
|
|
105
99
|
|
|
106
100
|
fs.mkdirSync(directoryPath, options);
|
|
107
101
|
}
|
|
@@ -110,10 +104,28 @@ export function renameDirectory(oldDirectoryPath, newDirectoryPath) {
|
|
|
110
104
|
fs.renameSync(oldDirectoryPath, newDirectoryPath);
|
|
111
105
|
}
|
|
112
106
|
|
|
107
|
+
export function moveDirectory(oldDirectoryPath, newDirectoryPath) {
|
|
108
|
+
ensureParentDirectoryExists(newDirectoryPath);
|
|
109
|
+
|
|
110
|
+
renameDirectory(oldDirectoryPath, newDirectoryPath);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function createFile(filePath) {
|
|
114
|
+
const content = EMPTY_STRING;
|
|
115
|
+
|
|
116
|
+
fs.writeFileSync(filePath, content);
|
|
117
|
+
}
|
|
118
|
+
|
|
113
119
|
export function renameFile(oldFilePath, newFilePath) {
|
|
114
120
|
fs.renameSync(oldFilePath, newFilePath);
|
|
115
121
|
}
|
|
116
122
|
|
|
123
|
+
export function moveFile(oldFilePath, newFilePath) {
|
|
124
|
+
ensureParentFileExists(newFilePath);
|
|
125
|
+
|
|
126
|
+
renameFile(oldFilePath, newFilePath);
|
|
127
|
+
}
|
|
128
|
+
|
|
117
129
|
export function removeEntry(entryPath) {
|
|
118
130
|
const force = true,
|
|
119
131
|
recursive = true,
|
|
@@ -139,11 +151,22 @@ export default {
|
|
|
139
151
|
readDirectory,
|
|
140
152
|
readFile,
|
|
141
153
|
writeFile,
|
|
142
|
-
createFile,
|
|
143
154
|
appendToFile,
|
|
144
155
|
createDirectory,
|
|
145
156
|
renameDirectory,
|
|
157
|
+
moveDirectory,
|
|
158
|
+
createFile,
|
|
146
159
|
renameFile,
|
|
160
|
+
moveFile,
|
|
147
161
|
removeEntry,
|
|
148
162
|
getStats
|
|
149
163
|
};
|
|
164
|
+
|
|
165
|
+
function ensureParentDirectoryExists(filePath) {
|
|
166
|
+
const parentDirectoryPath = path.dirname(filePath), ///
|
|
167
|
+
parentDirectoryExists = checkDirectoryExists(parentDirectoryPath);
|
|
168
|
+
|
|
169
|
+
if (!parentDirectoryExists) {
|
|
170
|
+
createDirectory(parentDirectoryPath);
|
|
171
|
+
}
|
|
172
|
+
}
|