@appium/support 2.61.1 → 3.0.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.
Files changed (61) hide show
  1. package/build/lib/console.d.ts +1 -1
  2. package/build/lib/console.js +169 -105
  3. package/build/lib/console.js.map +1 -1
  4. package/build/lib/env.d.ts.map +1 -1
  5. package/build/lib/env.js +144 -117
  6. package/build/lib/env.js.map +1 -1
  7. package/build/lib/fs.d.ts +9 -2
  8. package/build/lib/fs.d.ts.map +1 -1
  9. package/build/lib/fs.js +358 -246
  10. package/build/lib/fs.js.map +1 -1
  11. package/build/lib/image-util.js +139 -124
  12. package/build/lib/image-util.js.map +1 -1
  13. package/build/lib/index.js +64 -103
  14. package/build/lib/index.js.map +1 -1
  15. package/build/lib/log-internal.d.ts +4 -27
  16. package/build/lib/log-internal.d.ts.map +1 -1
  17. package/build/lib/log-internal.js +141 -123
  18. package/build/lib/log-internal.js.map +1 -1
  19. package/build/lib/logger.d.ts +1 -1
  20. package/build/lib/logger.d.ts.map +1 -1
  21. package/build/lib/logger.js +5 -14
  22. package/build/lib/logger.js.map +1 -1
  23. package/build/lib/logging.d.ts +3 -4
  24. package/build/lib/logging.d.ts.map +1 -1
  25. package/build/lib/logging.js +139 -110
  26. package/build/lib/logging.js.map +1 -1
  27. package/build/lib/mjpeg.js +169 -141
  28. package/build/lib/mjpeg.js.map +1 -1
  29. package/build/lib/mkdirp.js +7 -13
  30. package/build/lib/mkdirp.js.map +1 -1
  31. package/build/lib/net.d.ts.map +1 -1
  32. package/build/lib/net.js +278 -254
  33. package/build/lib/net.js.map +1 -1
  34. package/build/lib/node.js +203 -192
  35. package/build/lib/node.js.map +1 -1
  36. package/build/lib/npm.d.ts +19 -4
  37. package/build/lib/npm.d.ts.map +1 -1
  38. package/build/lib/npm.js +277 -228
  39. package/build/lib/npm.js.map +1 -1
  40. package/build/lib/plist.js +145 -136
  41. package/build/lib/plist.js.map +1 -1
  42. package/build/lib/process.js +41 -42
  43. package/build/lib/process.js.map +1 -1
  44. package/build/lib/system.js +39 -56
  45. package/build/lib/system.js.map +1 -1
  46. package/build/lib/tempdir.js +112 -73
  47. package/build/lib/tempdir.js.map +1 -1
  48. package/build/lib/timing.js +99 -84
  49. package/build/lib/timing.js.map +1 -1
  50. package/build/lib/util.js +454 -356
  51. package/build/lib/util.js.map +1 -1
  52. package/build/lib/zip.js +469 -423
  53. package/build/lib/zip.js.map +1 -1
  54. package/build/tsconfig.tsbuildinfo +1 -1
  55. package/lib/env.js +6 -4
  56. package/lib/fs.js +15 -1
  57. package/lib/log-internal.js +12 -16
  58. package/lib/logging.js +2 -3
  59. package/lib/net.js +15 -6
  60. package/lib/npm.js +28 -18
  61. package/package.json +20 -19
package/build/lib/fs.js CHANGED
@@ -1,254 +1,366 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.fs = exports.default = void 0;
7
-
8
- require("source-map-support/register");
9
-
10
- var _bluebird = _interopRequireDefault(require("bluebird"));
11
-
12
- var _crypto = _interopRequireDefault(require("crypto"));
13
-
14
- var _fs = require("fs");
15
-
16
- var _glob = _interopRequireDefault(require("glob"));
17
-
18
- var _klaw = _interopRequireDefault(require("klaw"));
19
-
20
- var _lodash = _interopRequireDefault(require("lodash"));
21
-
22
- var _mv = _interopRequireDefault(require("mv"));
23
-
24
- var _ncp = _interopRequireDefault(require("ncp"));
25
-
26
- var _path = _interopRequireDefault(require("path"));
27
-
28
- var _pkgDir = _interopRequireDefault(require("pkg-dir"));
29
-
30
- var _readPkg = _interopRequireDefault(require("read-pkg"));
31
-
32
- var _rimraf = _interopRequireDefault(require("rimraf"));
33
-
34
- var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
35
-
36
- var _which = _interopRequireDefault(require("which"));
37
-
38
- var _logger = _interopRequireDefault(require("./logger"));
39
-
40
- var _timing = _interopRequireDefault(require("./timing"));
41
-
42
- var _system = require("./system");
43
-
44
- var _util = require("./util");
45
-
46
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
-
48
- const ncpAsync = _bluebird.default.promisify(_ncp.default);
49
-
50
- const findRootCached = _lodash.default.memoize(_pkgDir.default.sync);
51
-
2
+ // @ts-check
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.fs = void 0;
8
+ const bluebird_1 = __importDefault(require("bluebird"));
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ const fs_1 = require("fs");
11
+ const glob_1 = __importDefault(require("glob"));
12
+ const klaw_1 = __importDefault(require("klaw"));
13
+ const lodash_1 = __importDefault(require("lodash"));
14
+ const mv_1 = __importDefault(require("mv"));
15
+ const ncp_1 = __importDefault(require("ncp"));
16
+ const path_1 = __importDefault(require("path"));
17
+ const pkg_dir_1 = __importDefault(require("pkg-dir"));
18
+ const read_pkg_1 = __importDefault(require("read-pkg"));
19
+ const rimraf_1 = __importDefault(require("rimraf"));
20
+ const sanitize_filename_1 = __importDefault(require("sanitize-filename"));
21
+ const which_1 = __importDefault(require("which"));
22
+ const logger_1 = __importDefault(require("./logger"));
23
+ const timing_1 = __importDefault(require("./timing"));
24
+ const system_1 = require("./system");
25
+ const util_1 = require("./util");
26
+ const ncpAsync =
27
+ /** @type {(source: string, dest: string, opts: ncp.Options|undefined) => B<void>} */ (bluebird_1.default.promisify(ncp_1.default));
28
+ const findRootCached = lodash_1.default.memoize(pkg_dir_1.default.sync);
52
29
  const fs = {
53
- async hasAccess(path) {
54
- try {
55
- await _fs.promises.access(path, _fs.constants.R_OK);
56
- } catch {
57
- return false;
58
- }
59
-
60
- return true;
61
- },
62
-
63
- async isExecutable(path) {
64
- try {
65
- if ((0, _system.isWindows)()) {
30
+ /**
31
+ * Resolves `true` if `path` is _readable_, which differs from Node.js' default behavior of "can we see it?"
32
+ *
33
+ * On Windows, ACLs are not supported, so this becomes a simple check for existence.
34
+ *
35
+ * This function will never reject.
36
+ * @param {PathLike} path
37
+ * @returns {Promise<boolean>}
38
+ */
39
+ async hasAccess(path) {
40
+ try {
41
+ await fs_1.promises.access(path, fs_1.constants.R_OK);
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ return true;
47
+ },
48
+ /**
49
+ * Resolves `true` if `path` is executable; `false` otherwise.
50
+ *
51
+ * On Windows, this function delegates to {@linkcode fs.hasAccess}.
52
+ *
53
+ * This function will never reject.
54
+ * @param {PathLike} path
55
+ * @returns {Promise<boolean>}
56
+ */
57
+ async isExecutable(path) {
58
+ try {
59
+ if ((0, system_1.isWindows)()) {
60
+ return await fs.hasAccess(path);
61
+ }
62
+ await fs_1.promises.access(path, fs_1.constants.R_OK | fs_1.constants.X_OK);
63
+ }
64
+ catch {
65
+ return false;
66
+ }
67
+ return true;
68
+ },
69
+ /**
70
+ * Alias for {@linkcode fs.hasAccess}
71
+ * @param {PathLike} path
72
+ */
73
+ async exists(path) {
66
74
  return await fs.hasAccess(path);
67
- }
68
-
69
- await _fs.promises.access(path, _fs.constants.R_OK | _fs.constants.X_OK);
70
- } catch {
71
- return false;
72
- }
73
-
74
- return true;
75
- },
76
-
77
- async exists(path) {
78
- return await fs.hasAccess(path);
79
- },
80
-
81
- rimraf: _bluebird.default.promisify(_rimraf.default),
82
- rimrafSync: _rimraf.default.sync,
83
-
84
- async mkdir(filepath, opts = {}) {
85
- try {
86
- return await _fs.promises.mkdir(filepath, opts);
87
- } catch (err) {
88
- if ((err === null || err === void 0 ? void 0 : err.code) !== 'EEXIST') {
89
- throw err;
90
- }
91
- }
92
- },
93
-
94
- async copyFile(source, destination, opts = {}) {
95
- if (!(await fs.hasAccess(source))) {
96
- throw new Error(`The file at '${source}' does not exist or is not accessible`);
97
- }
98
-
99
- return await ncpAsync(source, destination, opts);
100
- },
101
-
102
- async md5(filePath) {
103
- return await fs.hash(filePath, 'md5');
104
- },
105
-
106
- mv: _bluebird.default.promisify(_mv.default),
107
- which: _which.default,
108
- glob: _bluebird.default.promisify(_glob.default),
109
- sanitizeName: _sanitizeFilename.default,
110
-
111
- async hash(filePath, algorithm = 'sha1') {
112
- return await new _bluebird.default((resolve, reject) => {
113
- const fileHash = _crypto.default.createHash(algorithm);
114
-
115
- const readStream = (0, _fs.createReadStream)(filePath);
116
- readStream.on('error', e => reject(new Error(`Cannot calculate ${algorithm} hash for '${filePath}'. Original error: ${e.message}`)));
117
- readStream.on('data', chunk => fileHash.update(chunk));
118
- readStream.on('end', () => resolve(fileHash.digest('hex')));
119
- });
120
- },
121
-
122
- walk(dir, opts) {
123
- return (0, _klaw.default)(dir, opts);
124
- },
125
-
126
- async mkdirp(dir) {
127
- return await fs.mkdir(dir, {
128
- recursive: true
129
- });
130
- },
131
-
132
- async walkDir(dir, recursive, callback) {
133
- let isValidRoot = false;
134
- let errMsg = null;
135
-
136
- try {
137
- isValidRoot = (await fs.stat(dir)).isDirectory();
138
- } catch (e) {
139
- errMsg = e.message;
140
- }
141
-
142
- if (!isValidRoot) {
143
- throw Error(`'${dir}' is not a valid root directory` + (errMsg ? `. Original error: ${errMsg}` : ''));
144
- }
145
-
146
- let walker;
147
- let fileCount = 0;
148
- let directoryCount = 0;
149
- const timer = new _timing.default().start();
150
- return await new _bluebird.default(function (resolve, reject) {
151
- let lastFileProcessed = _bluebird.default.resolve();
152
-
153
- walker = (0, _klaw.default)(dir, {
154
- depthLimit: recursive ? -1 : 0
155
- });
156
- walker.on('data', function (item) {
157
- walker.pause();
158
-
159
- if (!item.stats.isDirectory()) {
160
- fileCount++;
161
- } else {
162
- directoryCount++;
75
+ },
76
+ /**
77
+ * Remove a directory and all its contents, recursively
78
+ * @todo Replace with `rm()` from `fs.promises` when Node.js v12 support is dropped.
79
+ */
80
+ rimraf: /** @type {(dirpath: string, opts?: import('rimraf').Options) => Promise<void>} */ (bluebird_1.default.promisify(rimraf_1.default)),
81
+ /**
82
+ * Alias of {@linkcode rimrafIdx.sync}
83
+ * @todo Replace with `rmSync()` from `fs` when Node.js v12 support is dropped.
84
+ */
85
+ rimrafSync: rimraf_1.default.sync,
86
+ /**
87
+ * Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
88
+ *
89
+ * @param {string|Buffer|URL} filepath
90
+ * @param {import('fs').MakeDirectoryOptions} [opts]
91
+ * @returns {Promise<string|undefined>}
92
+ * @see https://nodejs.org/api/fs.html#fspromisesmkdirpath-options
93
+ */
94
+ async mkdir(filepath, opts = {}) {
95
+ try {
96
+ return await fs_1.promises.mkdir(filepath, opts);
97
+ }
98
+ catch (err) {
99
+ if (err?.code !== 'EEXIST') {
100
+ throw err;
101
+ }
102
+ }
103
+ },
104
+ /**
105
+ * Copies files _and entire directories_
106
+ * @param {string} source - Source to copy
107
+ * @param {string} destination - Destination to copy to
108
+ * @param {ncp.Options} [opts] - Additional arguments to pass to `ncp`
109
+ * @see https://npm.im/ncp
110
+ * @returns {Promise<void>}
111
+ */
112
+ async copyFile(source, destination, opts = {}) {
113
+ if (!(await fs.hasAccess(source))) {
114
+ throw new Error(`The file at '${source}' does not exist or is not accessible`);
163
115
  }
164
-
165
- lastFileProcessed = _bluebird.default.try(async () => await callback(item.path, item.stats.isDirectory())).then(function (done = false) {
166
- if (done) {
167
- resolve(item.path);
168
- } else {
169
- walker.resume();
170
- }
171
- }).catch(reject);
172
- }).on('error', function (err, item) {
173
- _logger.default.warn(`Got an error while walking '${item.path}': ${err.message}`);
174
-
175
- if (err.code === 'ENOENT') {
176
- _logger.default.warn('All files may not have been accessed');
177
-
178
- reject(err);
116
+ return await ncpAsync(source, destination, opts);
117
+ },
118
+ /**
119
+ * Create an MD5 hash of a file.
120
+ * @param {PathLike} filePath
121
+ * @returns {Promise<string>}
122
+ */
123
+ async md5(filePath) {
124
+ return await fs.hash(filePath, 'md5');
125
+ },
126
+ /**
127
+ * Move a file
128
+ */
129
+ mv: /** @type {(from: string, to: string, opts?: mv.Options) => B<void>} */ (bluebird_1.default.promisify(mv_1.default)),
130
+ /**
131
+ * Find path to an executable in system `PATH`
132
+ * @see https://github.com/npm/node-which
133
+ */
134
+ which: which_1.default,
135
+ /**
136
+ * Given a glob pattern, resolve with list of files matching that pattern
137
+ * @see https://github.com/isaacs/node-glob
138
+ */
139
+ glob: /** @type {(pattern: string, opts?: glob.IOptions) => B<string[]>} */ (bluebird_1.default.promisify(glob_1.default)),
140
+ /**
141
+ * Sanitize a filename
142
+ * @see https://github.com/parshap/node-sanitize-filename
143
+ */
144
+ sanitizeName: sanitize_filename_1.default,
145
+ /**
146
+ * Create a hex digest of some file at `filePath`
147
+ * @param {PathLike} filePath
148
+ * @param {string} [algorithm]
149
+ * @returns {Promise<string>}
150
+ */
151
+ async hash(filePath, algorithm = 'sha1') {
152
+ return await new bluebird_1.default((resolve, reject) => {
153
+ const fileHash = crypto_1.default.createHash(algorithm);
154
+ const readStream = (0, fs_1.createReadStream)(filePath);
155
+ readStream.on('error', (e) => reject(new Error(`Cannot calculate ${algorithm} hash for '${filePath}'. Original error: ${e.message}`)));
156
+ readStream.on('data', (chunk) => fileHash.update(chunk));
157
+ readStream.on('end', () => resolve(fileHash.digest('hex')));
158
+ });
159
+ },
160
+ /**
161
+ * Returns an `Walker` instance, which is a readable stream (and thusly an async iterator).
162
+ *
163
+ * @param {string} dir - Dir to start walking at
164
+ * @param {import('klaw').Options} [opts]
165
+ * @returns {import('klaw').Walker}
166
+ * @see https://www.npmjs.com/package/klaw
167
+ */
168
+ walk(dir, opts) {
169
+ return (0, klaw_1.default)(dir, opts);
170
+ },
171
+ /**
172
+ * Recursively create a directory.
173
+ * @param {PathLike} dir
174
+ * @returns {Promise<string|undefined>}
175
+ */
176
+ async mkdirp(dir) {
177
+ return await fs.mkdir(dir, { recursive: true });
178
+ },
179
+ /**
180
+ * Walks a directory given according to the parameters given. The callback will be invoked with a path joined with the dir parameter
181
+ * @param {string} dir Directory path where we will start walking
182
+ * @param {boolean} recursive Set it to true if you want to continue walking sub directories
183
+ * @param {WalkDirCallback} callback The callback to be called when a new path is found
184
+ * @throws {Error} If the `dir` parameter contains a path to an invalid folder
185
+ * @returns {Promise<string?>} returns the found path or null if the item was not found
186
+ */
187
+ async walkDir(dir, recursive, callback) {
188
+ //eslint-disable-line promise/prefer-await-to-callbacks
189
+ let isValidRoot = false;
190
+ let errMsg = null;
191
+ try {
192
+ isValidRoot = (await fs.stat(dir)).isDirectory();
193
+ }
194
+ catch (e) {
195
+ errMsg = e.message;
179
196
  }
180
- }).on('end', function () {
181
- lastFileProcessed.then(file => {
182
- resolve(file ?? null);
183
- }).catch(function (err) {
184
- _logger.default.warn(`Unexpected error: ${err.message}`);
185
-
186
- reject(err);
197
+ if (!isValidRoot) {
198
+ throw Error(`'${dir}' is not a valid root directory` + (errMsg ? `. Original error: ${errMsg}` : ''));
199
+ }
200
+ let walker;
201
+ let fileCount = 0;
202
+ let directoryCount = 0;
203
+ const timer = new timing_1.default().start();
204
+ return await new bluebird_1.default(function (resolve, reject) {
205
+ let lastFileProcessed = bluebird_1.default.resolve();
206
+ walker = (0, klaw_1.default)(dir, {
207
+ depthLimit: recursive ? -1 : 0,
208
+ });
209
+ walker
210
+ .on('data', function (item) {
211
+ walker.pause();
212
+ if (!item.stats.isDirectory()) {
213
+ fileCount++;
214
+ }
215
+ else {
216
+ directoryCount++;
217
+ }
218
+ // eslint-disable-next-line promise/prefer-await-to-callbacks
219
+ lastFileProcessed = bluebird_1.default.try(async () => await callback(item.path, item.stats.isDirectory()))
220
+ .then(function (done = false) {
221
+ if (done) {
222
+ resolve(item.path);
223
+ }
224
+ else {
225
+ walker.resume();
226
+ }
227
+ })
228
+ .catch(reject);
229
+ })
230
+ .on('error', function (err, item) {
231
+ logger_1.default.warn(`Got an error while walking '${item.path}': ${err.message}`);
232
+ // klaw cannot get back from an ENOENT error
233
+ if (err.code === 'ENOENT') {
234
+ logger_1.default.warn('All files may not have been accessed');
235
+ reject(err);
236
+ }
237
+ })
238
+ .on('end', function () {
239
+ lastFileProcessed
240
+ .then((file) => {
241
+ resolve(/** @type {string|undefined} */ (file) ?? null);
242
+ })
243
+ .catch(function (err) {
244
+ logger_1.default.warn(`Unexpected error: ${err.message}`);
245
+ reject(err);
246
+ });
247
+ });
248
+ }).finally(function () {
249
+ logger_1.default.debug(`Traversed ${(0, util_1.pluralize)('directory', directoryCount, true)} ` +
250
+ `and ${(0, util_1.pluralize)('file', fileCount, true)} ` +
251
+ `in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
252
+ if (walker) {
253
+ walker.destroy();
254
+ }
187
255
  });
188
- });
189
- }).finally(function () {
190
- _logger.default.debug(`Traversed ${(0, _util.pluralize)('directory', directoryCount, true)} ` + `and ${(0, _util.pluralize)('file', fileCount, true)} ` + `in ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
191
-
192
- if (walker) {
193
- walker.destroy();
194
- }
195
- });
196
- },
197
-
198
- readPackageJsonFrom(dir, opts = {}) {
199
- const cwd = fs.findRoot(dir);
200
-
201
- try {
202
- return _readPkg.default.sync({ ...opts,
203
- cwd
204
- });
205
- } catch (err) {
206
- err.message = `Failed to read a \`package.json\` from dir \`${dir}\`:\n\n${err.message}`;
207
- throw err;
208
- }
209
- },
210
-
211
- findRoot(dir) {
212
- if (!dir || !_path.default.isAbsolute(dir)) {
213
- throw new TypeError('`findRoot()` must be provided a non-empty, absolute path');
214
- }
215
-
216
- const result = findRootCached(dir);
217
-
218
- if (!result) {
219
- throw new Error(`\`findRoot()\` could not find \`package.json\` from ${dir}`);
220
- }
221
-
222
- return result;
223
- },
224
-
225
- access: _fs.promises.access,
226
- appendFile: _fs.promises.appendFile,
227
- chmod: _fs.promises.chmod,
228
- close: _bluebird.default.promisify(_fs.close),
229
- constants: _fs.constants,
230
- createWriteStream: _fs.createWriteStream,
231
- createReadStream: _fs.createReadStream,
232
- lstat: _fs.promises.lstat,
233
- open: _bluebird.default.promisify(_fs.open),
234
- openFile: _fs.promises.open,
235
- readdir: _fs.promises.readdir,
236
- read: _bluebird.default.promisify(_fs.read),
237
- readFile: _fs.promises.readFile,
238
- readlink: _fs.promises.readlink,
239
- realpath: _fs.promises.realpath,
240
- rename: _fs.promises.rename,
241
- stat: _fs.promises.stat,
242
- symlink: _fs.promises.symlink,
243
- unlink: _fs.promises.unlink,
244
- write: _bluebird.default.promisify(_fs.write),
245
- writeFile: _fs.promises.writeFile,
246
- F_OK: _fs.constants.F_OK,
247
- R_OK: _fs.constants.R_OK,
248
- W_OK: _fs.constants.W_OK,
249
- X_OK: _fs.constants.X_OK
256
+ },
257
+ /**
258
+ * Reads the closest `package.json` file from absolute path `dir`.
259
+ * @param {string} dir - Directory to search from
260
+ * @param {import('read-pkg').Options} [opts] - Additional options for `read-pkg`
261
+ * @throws {Error} If there were problems finding or reading a `package.json` file
262
+ * @returns {object} A parsed `package.json`
263
+ */
264
+ readPackageJsonFrom(dir, opts = {}) {
265
+ const cwd = fs.findRoot(dir);
266
+ try {
267
+ return read_pkg_1.default.sync({ ...opts, cwd });
268
+ }
269
+ catch (err) {
270
+ err.message = `Failed to read a \`package.json\` from dir \`${dir}\`:\n\n${err.message}`;
271
+ throw err;
272
+ }
273
+ },
274
+ /**
275
+ * Finds the project root directory from `dir`.
276
+ * @param {string} dir - Directory to search from
277
+ * @throws {TypeError} If `dir` is not a nonempty string or relative path
278
+ * @throws {Error} If there were problems finding the project root
279
+ * @returns {string} The closeset parent dir containing `package.json`
280
+ */
281
+ findRoot(dir) {
282
+ if (!dir || !path_1.default.isAbsolute(dir)) {
283
+ throw new TypeError('`findRoot()` must be provided a non-empty, absolute path');
284
+ }
285
+ const result = findRootCached(dir);
286
+ if (!result) {
287
+ throw new Error(`\`findRoot()\` could not find \`package.json\` from ${dir}`);
288
+ }
289
+ return result;
290
+ },
291
+ // add the supported `fs` functions
292
+ access: fs_1.promises.access,
293
+ appendFile: fs_1.promises.appendFile,
294
+ chmod: fs_1.promises.chmod,
295
+ close: bluebird_1.default.promisify(fs_1.close),
296
+ constants: fs_1.constants,
297
+ createWriteStream: fs_1.createWriteStream,
298
+ createReadStream: fs_1.createReadStream,
299
+ lstat: fs_1.promises.lstat,
300
+ /**
301
+ * Warning: this is a promisified {@linkcode open fs.open}.
302
+ * It resolves w/a file descriptor instead of a {@linkcode fsPromises.FileHandle FileHandle} object, as {@linkcode fsPromises.open} does. Use {@linkcode fs.openFile} if you want a `FileHandle`.
303
+ * @type {(path: PathLike, flags: import('fs').OpenMode, mode?: import('fs').Mode) => Promise<number>}
304
+ */
305
+ open: bluebird_1.default.promisify(fs_1.open),
306
+ openFile: fs_1.promises.open,
307
+ readdir: fs_1.promises.readdir,
308
+ read: /**
309
+ * @type {ReadFn<NodeJS.ArrayBufferView>}
310
+ */ ( /** @type {unknown} */(bluebird_1.default.promisify(fs_1.read))),
311
+ readFile: fs_1.promises.readFile,
312
+ readlink: fs_1.promises.readlink,
313
+ realpath: fs_1.promises.realpath,
314
+ rename: fs_1.promises.rename,
315
+ stat: fs_1.promises.stat,
316
+ symlink: fs_1.promises.symlink,
317
+ unlink: fs_1.promises.unlink,
318
+ write: bluebird_1.default.promisify(fs_1.write),
319
+ writeFile: fs_1.promises.writeFile,
320
+ // deprecated props
321
+ /**
322
+ * Use `constants.F_OK` instead.
323
+ * @deprecated
324
+ */
325
+ F_OK: fs_1.constants.F_OK,
326
+ /**
327
+ * Use `constants.R_OK` instead.
328
+ * @deprecated
329
+ */
330
+ R_OK: fs_1.constants.R_OK,
331
+ /**
332
+ * Use `constants.W_OK` instead.
333
+ * @deprecated
334
+ */
335
+ W_OK: fs_1.constants.W_OK,
336
+ /**
337
+ * Use `constants.X_OK` instead.
338
+ * @deprecated
339
+ */
340
+ X_OK: fs_1.constants.X_OK,
250
341
  };
251
342
  exports.fs = fs;
252
- var _default = fs;
253
- exports.default = _default;
254
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiaXNFeGVjdXRhYmxlIiwiaXNXaW5kb3dzIiwiWF9PSyIsImV4aXN0cyIsInJpbXJhZiIsInJpbXJhZklkeCIsInJpbXJhZlN5bmMiLCJta2RpciIsImZpbGVwYXRoIiwib3B0cyIsImVyciIsImNvZGUiLCJjb3B5RmlsZSIsInNvdXJjZSIsImRlc3RpbmF0aW9uIiwiRXJyb3IiLCJtZDUiLCJmaWxlUGF0aCIsImhhc2giLCJtdiIsIndoaWNoIiwiZ2xvYiIsInNhbml0aXplTmFtZSIsInNhbml0aXplIiwiYWxnb3JpdGhtIiwicmVzb2x2ZSIsInJlamVjdCIsImZpbGVIYXNoIiwiY3J5cHRvIiwiY3JlYXRlSGFzaCIsInJlYWRTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwib24iLCJlIiwibWVzc2FnZSIsImNodW5rIiwidXBkYXRlIiwiZGlnZXN0Iiwid2FsayIsImRpciIsImtsYXciLCJta2RpcnAiLCJyZWN1cnNpdmUiLCJ3YWxrRGlyIiwiY2FsbGJhY2siLCJpc1ZhbGlkUm9vdCIsImVyck1zZyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsIndhbGtlciIsImZpbGVDb3VudCIsImRpcmVjdG9yeUNvdW50IiwidGltZXIiLCJUaW1lciIsInN0YXJ0IiwibGFzdEZpbGVQcm9jZXNzZWQiLCJkZXB0aExpbWl0IiwiaXRlbSIsInBhdXNlIiwic3RhdHMiLCJ0cnkiLCJ0aGVuIiwiZG9uZSIsInJlc3VtZSIsImNhdGNoIiwibG9nIiwid2FybiIsImZpbGUiLCJmaW5hbGx5IiwiZGVidWciLCJwbHVyYWxpemUiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiY3dkIiwiZmluZFJvb3QiLCJyZWFkUGtnIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNsb3NlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJsc3RhdCIsIm9wZW4iLCJvcGVuRmlsZSIsInJlYWRkaXIiLCJyZWFkIiwicmVhZEZpbGUiLCJyZWFkbGluayIsInJlYWxwYXRoIiwicmVuYW1lIiwic3ltbGluayIsInVubGluayIsIndyaXRlIiwid3JpdGVGaWxlIiwiRl9PSyIsIldfT0siXSwic291cmNlcyI6WyIuLi8uLi9saWIvZnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7XG4gIGNsb3NlLFxuICBjb25zdGFudHMsXG4gIGNyZWF0ZVJlYWRTdHJlYW0sXG4gIGNyZWF0ZVdyaXRlU3RyZWFtLFxuICBwcm9taXNlcyBhcyBmc1Byb21pc2VzLFxuICByZWFkLFxuICB3cml0ZSxcbiAgb3Blbixcbn0gZnJvbSAnZnMnO1xuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQga2xhdyBmcm9tICdrbGF3JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbXYgZnJvbSAnbXYnO1xuaW1wb3J0IG5jcCBmcm9tICduY3AnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgcGtnRGlyIGZyb20gJ3BrZy1kaXInO1xuaW1wb3J0IHJlYWRQa2cgZnJvbSAncmVhZC1wa2cnO1xuaW1wb3J0IHJpbXJhZklkeCBmcm9tICdyaW1yYWYnO1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJztcbmltcG9ydCB3aGljaCBmcm9tICd3aGljaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBUaW1lciBmcm9tICcuL3RpbWluZyc7XG5pbXBvcnQge2lzV2luZG93c30gZnJvbSAnLi9zeXN0ZW0nO1xuaW1wb3J0IHtwbHVyYWxpemV9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG5jcEFzeW5jID1cbiAgLyoqIEB0eXBlIHsoc291cmNlOiBzdHJpbmcsIGRlc3Q6IHN0cmluZywgb3B0czogbmNwLk9wdGlvbnN8dW5kZWZpbmVkKSA9PiBCPHZvaWQ+fSAqLyAoXG4gICAgQi5wcm9taXNpZnkobmNwKVxuICApO1xuY29uc3QgZmluZFJvb3RDYWNoZWQgPSBfLm1lbW9pemUocGtnRGlyLnN5bmMpO1xuXG5jb25zdCBmcyA9IHtcbiAgLyoqXG4gICAqIFJlc29sdmVzIGB0cnVlYCBpZiBgcGF0aGAgaXMgX3JlYWRhYmxlXywgd2hpY2ggZGlmZmVycyBmcm9tIE5vZGUuanMnIGRlZmF1bHQgYmVoYXZpb3Igb2YgXCJjYW4gd2Ugc2VlIGl0P1wiXG4gICAqXG4gICAqIE9uIFdpbmRvd3MsIEFDTHMgYXJlIG5vdCBzdXBwb3J0ZWQsIHNvIHRoaXMgYmVjb21lcyBhIHNpbXBsZSBjaGVjayBmb3IgZXhpc3RlbmNlLlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmVqZWN0LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaGFzQWNjZXNzKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnNQcm9taXNlcy5hY2Nlc3MocGF0aCwgY29uc3RhbnRzLlJfT0spO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogUmVzb2x2ZXMgYHRydWVgIGlmIGBwYXRoYCBpcyBleGVjdXRhYmxlOyBgZmFsc2VgIG90aGVyd2lzZS5cbiAgICpcbiAgICogT24gV2luZG93cywgdGhpcyBmdW5jdGlvbiBkZWxlZ2F0ZXMgdG8ge0BsaW5rY29kZSBmcy5oYXNBY2Nlc3N9LlxuICAgKlxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgbmV2ZXIgcmVqZWN0LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaXNFeGVjdXRhYmxlKHBhdGgpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzV2luZG93cygpKSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmcy5oYXNBY2Nlc3MocGF0aCk7XG4gICAgICB9XG4gICAgICBhd2FpdCBmc1Byb21pc2VzLmFjY2VzcyhwYXRoLCBjb25zdGFudHMuUl9PSyB8IGNvbnN0YW50cy5YX09LKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB7QGxpbmtjb2RlIGZzLmhhc0FjY2Vzc31cbiAgICogQHBhcmFtIHtQYXRoTGlrZX0gcGF0aFxuICAgKi9cbiAgYXN5bmMgZXhpc3RzKHBhdGgpIHtcbiAgICByZXR1cm4gYXdhaXQgZnMuaGFzQWNjZXNzKHBhdGgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBkaXJlY3RvcnkgYW5kIGFsbCBpdHMgY29udGVudHMsIHJlY3Vyc2l2ZWx5XG4gICAqIEB0b2RvIFJlcGxhY2Ugd2l0aCBgcm0oKWAgZnJvbSBgZnMucHJvbWlzZXNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmOiAvKiogQHR5cGUgeyhkaXJwYXRoOiBzdHJpbmcsIG9wdHM/OiBpbXBvcnQoJ3JpbXJhZicpLk9wdGlvbnMpID0+IFByb21pc2U8dm9pZD59ICovIChcbiAgICBCLnByb21pc2lmeShyaW1yYWZJZHgpXG4gICksXG5cbiAgLyoqXG4gICAqIEFsaWFzIG9mIHtAbGlua2NvZGUgcmltcmFmSWR4LnN5bmN9XG4gICAqIEB0b2RvIFJlcGxhY2Ugd2l0aCBgcm1TeW5jKClgIGZyb20gYGZzYCB3aGVuIE5vZGUuanMgdjEyIHN1cHBvcnQgaXMgZHJvcHBlZC5cbiAgICovXG4gIHJpbXJhZlN5bmM6IHJpbXJhZklkeC5zeW5jLFxuXG4gIC8qKlxuICAgKiBMaWtlIE5vZGUuanMnIGBmc1Byb21pc2VzLm1rZGlyKClgLCBidXQgd2lsbCBfbm90XyByZWplY3QgaWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd8QnVmZmVyfFVSTH0gZmlsZXBhdGhcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuTWFrZURpcmVjdG9yeU9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn1cbiAgICogQHNlZSBodHRwczovL25vZGVqcy5vcmcvYXBpL2ZzLmh0bWwjZnNwcm9taXNlc21rZGlycGF0aC1vcHRpb25zXG4gICAqL1xuICBhc3luYyBta2RpcihmaWxlcGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmc1Byb21pc2VzLm1rZGlyKGZpbGVwYXRoLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnI/LmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBDb3BpZXMgZmlsZXMgX2FuZCBlbnRpcmUgZGlyZWN0b3JpZXNfXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgLSBTb3VyY2UgdG8gY29weVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb24gLSBEZXN0aW5hdGlvbiB0byBjb3B5IHRvXG4gICAqIEBwYXJhbSB7bmNwLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gYG5jcGBcbiAgICogQHNlZSBodHRwczovL25wbS5pbS9uY3BcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBjb3B5RmlsZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIShhd2FpdCBmcy5oYXNBY2Nlc3Moc291cmNlKSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZpbGUgYXQgJyR7c291cmNlfScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IG5jcEFzeW5jKHNvdXJjZSwgZGVzdGluYXRpb24sIG9wdHMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gTUQ1IGhhc2ggb2YgYSBmaWxlLlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbWQ1KGZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgsICdtZDUnKTtcbiAgfSxcblxuICAvKipcbiAgICogTW92ZSBhIGZpbGVcbiAgICovXG4gIG12OiAvKiogQHR5cGUgeyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9wdHM/OiBtdi5PcHRpb25zKSA9PiBCPHZvaWQ+fSAqLyAoQi5wcm9taXNpZnkobXYpKSxcblxuICAvKipcbiAgICogRmluZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgaW4gc3lzdGVtIGBQQVRIYFxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS13aGljaFxuICAgKi9cbiAgd2hpY2gsXG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgZ2xvYiBwYXR0ZXJuLCByZXNvbHZlIHdpdGggbGlzdCBvZiBmaWxlcyBtYXRjaGluZyB0aGF0IHBhdHRlcm5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYlxuICAgKi9cbiAgZ2xvYjogLyoqIEB0eXBlIHsocGF0dGVybjogc3RyaW5nLCBvcHRzPzogZ2xvYi5JT3B0aW9ucykgPT4gQjxzdHJpbmdbXT59ICovIChCLnByb21pc2lmeShnbG9iKSksXG5cbiAgLyoqXG4gICAqIFNhbml0aXplIGEgZmlsZW5hbWVcbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vcGFyc2hhcC9ub2RlLXNhbml0aXplLWZpbGVuYW1lXG4gICAqL1xuICBzYW5pdGl6ZU5hbWU6IHNhbml0aXplLFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBoZXggZGlnZXN0IG9mIHNvbWUgZmlsZSBhdCBgZmlsZVBhdGhgXG4gICAqIEBwYXJhbSB7UGF0aExpa2V9IGZpbGVQYXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWxnb3JpdGhtXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgaGFzaChmaWxlUGF0aCwgYWxnb3JpdGhtID0gJ3NoYTEnKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goYWxnb3JpdGhtKTtcbiAgICAgIGNvbnN0IHJlYWRTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2Vycm9yJywgKGUpID0+XG4gICAgICAgIHJlamVjdChcbiAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgQ2Fubm90IGNhbGN1bGF0ZSAke2FsZ29yaXRobX0gaGFzaCBmb3IgJyR7ZmlsZVBhdGh9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWBcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiBmaWxlSGFzaC51cGRhdGUoY2h1bmspKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoZmlsZUhhc2guZGlnZXN0KCdoZXgnKSkpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGBXYWxrZXJgIGluc3RhbmNlLCB3aGljaCBpcyBhIHJlYWRhYmxlIHN0cmVhbSAoYW5kIHRodXNseSBhbiBhc3luYyBpdGVyYXRvcikuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXIgdG8gc3RhcnQgd2Fsa2luZyBhdFxuICAgKiBAcGFyYW0ge2ltcG9ydCgna2xhdycpLk9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdrbGF3JykuV2Fsa2VyfVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2tsYXdcbiAgICovXG4gIHdhbGsoZGlyLCBvcHRzKSB7XG4gICAgcmV0dXJuIGtsYXcoZGlyLCBvcHRzKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgY3JlYXRlIGEgZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge1BhdGhMaWtlfSBkaXJcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59XG4gICAqL1xuICBhc3luYyBta2RpcnAoZGlyKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLm1rZGlyKGRpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXYWxrcyBhIGRpcmVjdG9yeSBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4uIFRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCBhIHBhdGggam9pbmVkIHdpdGggdGhlIGRpciBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciBEaXJlY3RvcnkgcGF0aCB3aGVyZSB3ZSB3aWxsIHN0YXJ0IHdhbGtpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0IGl0IHRvIHRydWUgaWYgeW91IHdhbnQgdG8gY29udGludWUgd2Fsa2luZyBzdWIgZGlyZWN0b3JpZXNcbiAgICogQHBhcmFtIHtXYWxrRGlyQ2FsbGJhY2t9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhIG5ldyBwYXRoIGlzIGZvdW5kXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYGRpcmAgcGFyYW1ldGVyIGNvbnRhaW5zIGEgcGF0aCB0byBhbiBpbnZhbGlkIGZvbGRlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn0gcmV0dXJucyB0aGUgZm91bmQgcGF0aCBvciBudWxsIGlmIHRoZSBpdGVtIHdhcyBub3QgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIoZGlyLCByZWN1cnNpdmUsIGNhbGxiYWNrKSB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgIGxldCBpc1ZhbGlkUm9vdCA9IGZhbHNlO1xuICAgIGxldCBlcnJNc2cgPSBudWxsO1xuICAgIHRyeSB7XG4gICAgICBpc1ZhbGlkUm9vdCA9IChhd2FpdCBmcy5zdGF0KGRpcikpLmlzRGlyZWN0b3J5KCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZXJyTXNnID0gZS5tZXNzYWdlO1xuICAgIH1cbiAgICBpZiAoIWlzVmFsaWRSb290KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYCcke2Rpcn0nIGlzIG5vdCBhIHZhbGlkIHJvb3QgZGlyZWN0b3J5YCArIChlcnJNc2cgPyBgLiBPcmlnaW5hbCBlcnJvcjogJHtlcnJNc2d9YCA6ICcnKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgd2Fsa2VyO1xuICAgIGxldCBmaWxlQ291bnQgPSAwO1xuICAgIGxldCBkaXJlY3RvcnlDb3VudCA9IDA7XG4gICAgY29uc3QgdGltZXIgPSBuZXcgVGltZXIoKS5zdGFydCgpO1xuICAgIHJldHVybiBhd2FpdCBuZXcgQihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICBsZXQgbGFzdEZpbGVQcm9jZXNzZWQgPSBCLnJlc29sdmUoKTtcbiAgICAgIHdhbGtlciA9IGtsYXcoZGlyLCB7XG4gICAgICAgIGRlcHRoTGltaXQ6IHJlY3Vyc2l2ZSA/IC0xIDogMCxcbiAgICAgIH0pO1xuICAgICAgd2Fsa2VyXG4gICAgICAgIC5vbignZGF0YScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgd2Fsa2VyLnBhdXNlKCk7XG5cbiAgICAgICAgICBpZiAoIWl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgZmlsZUNvdW50Kys7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRpcmVjdG9yeUNvdW50Kys7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkID0gQi50cnkoYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soaXRlbS5wYXRoLCBpdGVtLnN0YXRzLmlzRGlyZWN0b3J5KCkpKVxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGRvbmUgPSBmYWxzZSkge1xuICAgICAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoaXRlbS5wYXRoKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3YWxrZXIucmVzdW1lKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTtcbiAgICAgICAgfSlcbiAgICAgICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIsIGl0ZW0pIHtcbiAgICAgICAgICBsb2cud2FybihgR290IGFuIGVycm9yIHdoaWxlIHdhbGtpbmcgJyR7aXRlbS5wYXRofSc6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgLy8ga2xhdyBjYW5ub3QgZ2V0IGJhY2sgZnJvbSBhbiBFTk9FTlQgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgICBsb2cud2FybignQWxsIGZpbGVzIG1heSBub3QgaGF2ZSBiZWVuIGFjY2Vzc2VkJyk7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkXG4gICAgICAgICAgICAudGhlbigoZmlsZSkgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi8gKGZpbGUpID8/IG51bGwpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgIGxvZy53YXJuKGBVbmV4cGVjdGVkIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KS5maW5hbGx5KGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhcbiAgICAgICAgYFRyYXZlcnNlZCAke3BsdXJhbGl6ZSgnZGlyZWN0b3J5JywgZGlyZWN0b3J5Q291bnQsIHRydWUpfSBgICtcbiAgICAgICAgICBgYW5kICR7cGx1cmFsaXplKCdmaWxlJywgZmlsZUNvdW50LCB0cnVlKX0gYCArXG4gICAgICAgICAgYGluICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYFxuICAgICAgKTtcbiAgICAgIGlmICh3YWxrZXIpIHtcbiAgICAgICAgd2Fsa2VyLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjbG9zZXN0IGBwYWNrYWdlLmpzb25gIGZpbGUgZnJvbSBhYnNvbHV0ZSBwYXRoIGBkaXJgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyZWN0b3J5IHRvIHNlYXJjaCBmcm9tXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdyZWFkLXBrZycpLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgYHJlYWQtcGtnYFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIG9yIHJlYWRpbmcgYSBgcGFja2FnZS5qc29uYCBmaWxlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEEgcGFyc2VkIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICByZWFkUGFja2FnZUpzb25Gcm9tKGRpciwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3QgY3dkID0gZnMuZmluZFJvb3QoZGlyKTtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHJlYWRQa2cuc3luYyh7Li4ub3B0cywgY3dkfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBlcnIubWVzc2FnZSA9IGBGYWlsZWQgdG8gcmVhZCBhIFxcYHBhY2thZ2UuanNvblxcYCBmcm9tIGRpciBcXGAke2Rpcn1cXGA6XFxuXFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfSxcbiAgLyoqXG4gICAqIEZpbmRzIHRoZSBwcm9qZWN0IHJvb3QgZGlyZWN0b3J5IGZyb20gYGRpcmAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXJlY3RvcnkgdG8gc2VhcmNoIGZyb21cbiAgICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZGlyYCBpcyBub3QgYSBub25lbXB0eSBzdHJpbmcgb3IgcmVsYXRpdmUgcGF0aFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIHRoZSBwcm9qZWN0IHJvb3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIGNsb3Nlc2V0IHBhcmVudCBkaXIgY29udGFpbmluZyBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgZmluZFJvb3QoZGlyKSB7XG4gICAgaWYgKCFkaXIgfHwgIXBhdGguaXNBYnNvbHV0ZShkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZmluZFJvb3QoKWAgbXVzdCBiZSBwcm92aWRlZCBhIG5vbi1lbXB0eSwgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUm9vdENhY2hlZChkaXIpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYGZpbmRSb290KClcXGAgY291bGQgbm90IGZpbmQgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gJHtkaXJ9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG5cbiAgLy8gYWRkIHRoZSBzdXBwb3J0ZWQgYGZzYCBmdW5jdGlvbnNcbiAgYWNjZXNzOiBmc1Byb21pc2VzLmFjY2VzcyxcbiAgYXBwZW5kRmlsZTogZnNQcm9taXNlcy5hcHBlbmRGaWxlLFxuICBjaG1vZDogZnNQcm9taXNlcy5jaG1vZCxcbiAgY2xvc2U6IEIucHJvbWlzaWZ5KGNsb3NlKSxcbiAgY29uc3RhbnRzLFxuICBjcmVhdGVXcml0ZVN0cmVhbSxcbiAgY3JlYXRlUmVhZFN0cmVhbSxcbiAgbHN0YXQ6IGZzUHJvbWlzZXMubHN0YXQsXG4gIC8qKlxuICAgKiBXYXJuaW5nOiB0aGlzIGlzIGEgcHJvbWlzaWZpZWQge0BsaW5rY29kZSBvcGVuIGZzLm9wZW59LlxuICAgKiBJdCByZXNvbHZlcyB3L2EgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSB7QGxpbmtjb2RlIGZzUHJvbWlzZXMuRmlsZUhhbmRsZSBGaWxlSGFuZGxlfSBvYmplY3QsIGFzIHtAbGlua2NvZGUgZnNQcm9taXNlcy5vcGVufSBkb2VzLiBVc2Uge0BsaW5rY29kZSBmcy5vcGVuRmlsZX0gaWYgeW91IHdhbnQgYSBgRmlsZUhhbmRsZWAuXG4gICAqIEB0eXBlIHsocGF0aDogUGF0aExpa2UsIGZsYWdzOiBpbXBvcnQoJ2ZzJykuT3Blbk1vZGUsIG1vZGU/OiBpbXBvcnQoJ2ZzJykuTW9kZSkgPT4gUHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgb3BlbjogQi5wcm9taXNpZnkob3BlbiksXG4gIG9wZW5GaWxlOiBmc1Byb21pc2VzLm9wZW4sXG4gIHJlYWRkaXI6IGZzUHJvbWlzZXMucmVhZGRpcixcbiAgcmVhZDogQi5wcm9taXNpZnkocmVhZCksXG4gIHJlYWRGaWxlOiBmc1Byb21pc2VzLnJlYWRGaWxlLFxuICByZWFkbGluazogZnNQcm9taXNlcy5yZWFkbGluayxcbiAgcmVhbHBhdGg6IGZzUHJvbWlzZXMucmVhbHBhdGgsXG4gIHJlbmFtZTogZnNQcm9taXNlcy5yZW5hbWUsXG4gIHN0YXQ6IGZzUHJvbWlzZXMuc3RhdCxcbiAgc3ltbGluazogZnNQcm9taXNlcy5zeW1saW5rLFxuICB1bmxpbms6IGZzUHJvbWlzZXMudW5saW5rLFxuICB3cml0ZTogQi5wcm9taXNpZnkod3JpdGUpLFxuICB3cml0ZUZpbGU6IGZzUHJvbWlzZXMud3JpdGVGaWxlLFxuXG4gIC8vIGRlcHJlY2F0ZWQgcHJvcHNcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuRl9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEZfT0s6IGNvbnN0YW50cy5GX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5SX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgUl9PSzogY29uc3RhbnRzLlJfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLldfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBXX09LOiBjb25zdGFudHMuV19PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuWF9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFhfT0s6IGNvbnN0YW50cy5YX09LLFxufTtcblxuZXhwb3J0IHtmc307XG5leHBvcnQgZGVmYXVsdCBmcztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkaXJlY3Rvcnkgd2Fsa2luZ1xuICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBTaG93cyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBhIGZpbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybiB0cnVlIGlmIHlvdSB3YW50IHRvIHN0b3Agd2Fsa2luZ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnZ2xvYicpfSBnbG9iXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtdicpfSBtdlxuICogQHR5cGVkZWYge2ltcG9ydCgnZnMnKS5QYXRoTGlrZX0gUGF0aExpa2VcbiAqL1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFVQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLFFBQVEsR0FFVkMsaUJBQUEsQ0FBRUMsU0FBRixDQUFZQyxZQUFaLENBRko7O0FBSUEsTUFBTUMsY0FBYyxHQUFHQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUMsZUFBQSxDQUFPQyxJQUFqQixDQUF2Qjs7QUFFQSxNQUFNQyxFQUFFLEdBQUc7RUFVVCxNQUFNQyxTQUFOLENBQWdCQyxJQUFoQixFQUFzQjtJQUNwQixJQUFJO01BQ0YsTUFBTUMsWUFBQSxDQUFXQyxNQUFYLENBQWtCRixJQUFsQixFQUF3QkcsYUFBQSxDQUFVQyxJQUFsQyxDQUFOO0lBQ0QsQ0FGRCxDQUVFLE1BQU07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
343
+ exports.default = fs;
344
+ /**
345
+ * The callback function which will be called during the directory walking
346
+ * @callback WalkDirCallback
347
+ * @param {string} itemPath The path of the file or folder
348
+ * @param {boolean} isDirectory Shows if it is a directory or a file
349
+ * @return {boolean} return true if you want to stop walking
350
+ */
351
+ /**
352
+ * @typedef {import('glob')} glob
353
+ * @typedef {import('mv')} mv
354
+ * @typedef {import('fs').PathLike} PathLike
355
+ */
356
+ /**
357
+ * @template {NodeJS.ArrayBufferView} TBuffer
358
+ * @callback ReadFn
359
+ * @param {number} fd
360
+ * @param {TBuffer|import('node:fs').ReadAsyncOptions<TBuffer>} buffer
361
+ * @param {number} [offset]
362
+ * @param {number} [length]
363
+ * @param {number?} [position]
364
+ * @returns {B<{bytesRead: number, buffer: TBuffer}>}
365
+ */
366
+ //# sourceMappingURL=fs.js.map