memfs 3.2.2 → 3.2.3

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/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [3.2.3](https://github.com/streamich/memfs/compare/v3.2.2...v3.2.3) (2021-08-31)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * global and timers this arg in browser ([1e93ab1](https://github.com/streamich/memfs/commit/1e93ab1628e230762471737a1d2586b5bc86b496))
7
+ * prevent callback from triggering twice when callback throws ([07e8215](https://github.com/streamich/memfs/commit/07e8215b4a862ae2e0f1cd7f7cfe4b1465bfc2e6))
8
+ * prevent callback from triggering twice when callback throws ([6db755d](https://github.com/streamich/memfs/commit/6db755dabc32d81eceeb3152413bb70298a5c710)), closes [#542](https://github.com/streamich/memfs/issues/542)
9
+
1
10
  ## [3.2.2](https://github.com/streamich/memfs/compare/v3.2.1...v3.2.2) (2021-04-05)
2
11
 
3
12
 
package/lib/Dirent.js CHANGED
@@ -15,7 +15,7 @@ var Dirent = /** @class */ (function () {
15
15
  Dirent.build = function (link, encoding) {
16
16
  var dirent = new Dirent();
17
17
  var mode = link.getNode().mode;
18
- dirent.name = encoding_1.strToEncoding(link.getName(), encoding);
18
+ dirent.name = (0, encoding_1.strToEncoding)(link.getName(), encoding);
19
19
  dirent.mode = mode;
20
20
  return dirent;
21
21
  };
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
3
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
4
- to[j] = from[i];
5
- return to;
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
6
10
  };
7
11
  Object.defineProperty(exports, "__esModule", { value: true });
8
12
  exports.bufferFrom = exports.bufferAllocUnsafe = exports.Buffer = void 0;
@@ -13,7 +17,7 @@ function bufferV0P12Ponyfill(arg0) {
13
17
  for (var _i = 1; _i < arguments.length; _i++) {
14
18
  args[_i - 1] = arguments[_i];
15
19
  }
16
- return new (buffer_1.Buffer.bind.apply(buffer_1.Buffer, __spreadArray([void 0, arg0], args)))();
20
+ return new (buffer_1.Buffer.bind.apply(buffer_1.Buffer, __spreadArray([void 0, arg0], args, false)))();
17
21
  }
18
22
  var bufferAllocUnsafe = buffer_1.Buffer.allocUnsafe || bufferV0P12Ponyfill;
19
23
  exports.bufferAllocUnsafe = bufferAllocUnsafe;
@@ -1,4 +1,4 @@
1
- declare class AssertionError extends global.Error {
1
+ declare class AssertionError extends globalThis.Error {
2
2
  generatedMessage: any;
3
3
  name: any;
4
4
  code: any;
@@ -66,7 +66,7 @@ var AssertionError = /** @class */ (function (_super) {
66
66
  return _this;
67
67
  }
68
68
  return AssertionError;
69
- }(global.Error));
69
+ }(globalThis.Error));
70
70
  exports.AssertionError = AssertionError;
71
71
  function message(key, args) {
72
72
  assert.strictEqual(typeof key, 'string');
@@ -92,9 +92,9 @@ function E(sym, val) {
92
92
  messages[sym] = typeof val === 'function' ? val : String(val);
93
93
  }
94
94
  exports.E = E;
95
- exports.Error = makeNodeError(global.Error);
96
- exports.TypeError = makeNodeError(global.TypeError);
97
- exports.RangeError = makeNodeError(global.RangeError);
95
+ exports.Error = makeNodeError(globalThis.Error);
96
+ exports.TypeError = makeNodeError(globalThis.TypeError);
97
+ exports.RangeError = makeNodeError(globalThis.RangeError);
98
98
  // To declare an error message, use the E(sym, val) function above. The sym
99
99
  // must be an upper case string. The val can be either a function or a string.
100
100
  // The return value of the function must be a string.
package/lib/node.js CHANGED
@@ -52,16 +52,16 @@ var Node = /** @class */ (function (_super) {
52
52
  };
53
53
  Node.prototype.setString = function (str) {
54
54
  // this.setBuffer(bufferFrom(str, 'utf8'));
55
- this.buf = buffer_1.bufferFrom(str, 'utf8');
55
+ this.buf = (0, buffer_1.bufferFrom)(str, 'utf8');
56
56
  this.touch();
57
57
  };
58
58
  Node.prototype.getBuffer = function () {
59
59
  if (!this.buf)
60
- this.setBuffer(buffer_1.bufferAllocUnsafe(0));
61
- return buffer_1.bufferFrom(this.buf); // Return a copy.
60
+ this.setBuffer((0, buffer_1.bufferAllocUnsafe)(0));
61
+ return (0, buffer_1.bufferFrom)(this.buf); // Return a copy.
62
62
  };
63
63
  Node.prototype.setBuffer = function (buf) {
64
- this.buf = buffer_1.bufferFrom(buf); // Creates a copy of data.
64
+ this.buf = (0, buffer_1.bufferFrom)(buf); // Creates a copy of data.
65
65
  this.touch();
66
66
  };
67
67
  Node.prototype.getSize = function () {
@@ -98,9 +98,9 @@ var Node = /** @class */ (function (_super) {
98
98
  if (len === void 0) { len = buf.length; }
99
99
  if (pos === void 0) { pos = 0; }
100
100
  if (!this.buf)
101
- this.buf = buffer_1.bufferAllocUnsafe(0);
101
+ this.buf = (0, buffer_1.bufferAllocUnsafe)(0);
102
102
  if (pos + len > this.buf.length) {
103
- var newBuf = buffer_1.bufferAllocUnsafe(pos + len);
103
+ var newBuf = (0, buffer_1.bufferAllocUnsafe)(pos + len);
104
104
  this.buf.copy(newBuf, 0, 0, this.buf.length);
105
105
  this.buf = newBuf;
106
106
  }
@@ -114,7 +114,7 @@ var Node = /** @class */ (function (_super) {
114
114
  if (len === void 0) { len = buf.byteLength; }
115
115
  if (pos === void 0) { pos = 0; }
116
116
  if (!this.buf)
117
- this.buf = buffer_1.bufferAllocUnsafe(0);
117
+ this.buf = (0, buffer_1.bufferAllocUnsafe)(0);
118
118
  var actualLen = len;
119
119
  if (actualLen > buf.byteLength) {
120
120
  actualLen = buf.byteLength;
@@ -128,15 +128,15 @@ var Node = /** @class */ (function (_super) {
128
128
  Node.prototype.truncate = function (len) {
129
129
  if (len === void 0) { len = 0; }
130
130
  if (!len)
131
- this.buf = buffer_1.bufferAllocUnsafe(0);
131
+ this.buf = (0, buffer_1.bufferAllocUnsafe)(0);
132
132
  else {
133
133
  if (!this.buf)
134
- this.buf = buffer_1.bufferAllocUnsafe(0);
134
+ this.buf = (0, buffer_1.bufferAllocUnsafe)(0);
135
135
  if (len <= this.buf.length) {
136
136
  this.buf = this.buf.slice(0, len);
137
137
  }
138
138
  else {
139
- var buf = buffer_1.bufferAllocUnsafe(0);
139
+ var buf = (0, buffer_1.bufferAllocUnsafe)(0);
140
140
  this.buf.copy(buf);
141
141
  buf.fill(0, len);
142
142
  }
package/lib/promises.js CHANGED
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
3
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
4
- to[j] = from[i];
5
- return to;
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
6
10
  };
7
11
  Object.defineProperty(exports, "__esModule", { value: true });
8
12
  exports.FileHandle = void 0;
@@ -14,11 +18,11 @@ function promisify(vol, fn, getResult) {
14
18
  args[_i] = arguments[_i];
15
19
  }
16
20
  return new Promise(function (resolve, reject) {
17
- vol[fn].bind(vol).apply(void 0, __spreadArray(__spreadArray([], args), [function (error, result) {
21
+ vol[fn].bind(vol).apply(void 0, __spreadArray(__spreadArray([], args, false), [function (error, result) {
18
22
  if (error)
19
23
  return reject(error);
20
24
  return resolve(getResult(result));
21
- }]));
25
+ }], false));
22
26
  });
23
27
  };
24
28
  }
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var _setImmediate;
4
4
  if (typeof setImmediate === 'function')
5
- _setImmediate = setImmediate.bind(global);
5
+ _setImmediate = setImmediate.bind(globalThis);
6
6
  else
7
- _setImmediate = setTimeout.bind(global);
7
+ _setImmediate = setTimeout.bind(globalThis);
8
8
  exports.default = _setImmediate;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
5
5
  * only in Node's environment it will "unref" its macro task.
6
6
  */
7
7
  function setTimeoutUnref(callback, time, args) {
8
- var ref = setTimeout.apply(null, arguments);
8
+ var ref = setTimeout.apply(globalThis, arguments);
9
9
  if (ref && typeof ref === 'object' && typeof ref.unref === 'function')
10
10
  ref.unref();
11
11
  return ref;
package/lib/volume.js CHANGED
@@ -14,10 +14,14 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
18
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
19
- to[j] = from[i];
20
- return to;
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
21
25
  };
22
26
  Object.defineProperty(exports, "__esModule", { value: true });
23
27
  exports.FSWatcher = exports.StatWatcher = exports.Volume = exports.toUnixTimestamp = exports.bufferToEncoding = exports.dataToBuffer = exports.dataToStr = exports.pathToSteps = exports.filenameToSteps = exports.pathToFilename = exports.flagsToNumber = exports.FLAGS = void 0;
@@ -188,7 +192,7 @@ function getOptions(defaults, options) {
188
192
  }
189
193
  }
190
194
  if (opts.encoding !== 'buffer')
191
- encoding_1.assertEncoding(opts.encoding);
195
+ (0, encoding_1.assertEncoding)(opts.encoding);
192
196
  return opts;
193
197
  }
194
198
  function optsGenerator(defaults) {
@@ -319,7 +323,7 @@ function dataToStr(data, encoding) {
319
323
  if (buffer_1.Buffer.isBuffer(data))
320
324
  return data.toString(encoding);
321
325
  else if (data instanceof Uint8Array)
322
- return buffer_1.bufferFrom(data).toString(encoding);
326
+ return (0, buffer_1.bufferFrom)(data).toString(encoding);
323
327
  else
324
328
  return String(data);
325
329
  }
@@ -329,9 +333,9 @@ function dataToBuffer(data, encoding) {
329
333
  if (buffer_1.Buffer.isBuffer(data))
330
334
  return data;
331
335
  else if (data instanceof Uint8Array)
332
- return buffer_1.bufferFrom(data);
336
+ return (0, buffer_1.bufferFrom)(data);
333
337
  else
334
- return buffer_1.bufferFrom(String(data), encoding);
338
+ return (0, buffer_1.bufferFrom)(String(data), encoding);
335
339
  }
336
340
  exports.dataToBuffer = dataToBuffer;
337
341
  function bufferToEncoding(buffer, encoding) {
@@ -444,7 +448,7 @@ var Volume = /** @class */ (function () {
444
448
  this.maxFiles = 10000;
445
449
  // Current number of open files.
446
450
  this.openFiles = 0;
447
- this.promisesApi = promises_1.default(this);
451
+ this.promisesApi = (0, promises_1.default)(this);
448
452
  this.statWatchers = {};
449
453
  this.props = Object.assign({ Node: node_1.Node, Link: node_1.Link, File: node_1.File }, props);
450
454
  var root = this.createLink();
@@ -465,7 +469,7 @@ var Volume = /** @class */ (function () {
465
469
  for (var _i = 0; _i < arguments.length; _i++) {
466
470
  args[_i] = arguments[_i];
467
471
  }
468
- return _super.apply(this, __spreadArray([self], args)) || this;
472
+ return _super.apply(this, __spreadArray([self], args, false)) || this;
469
473
  }
470
474
  return class_1;
471
475
  }(_ReadStream));
@@ -477,7 +481,7 @@ var Volume = /** @class */ (function () {
477
481
  for (var _i = 0; _i < arguments.length; _i++) {
478
482
  args[_i] = arguments[_i];
479
483
  }
480
- return _super.apply(this, __spreadArray([self], args)) || this;
484
+ return _super.apply(this, __spreadArray([self], args, false)) || this;
481
485
  }
482
486
  return class_2;
483
487
  }(_WriteStream));
@@ -676,13 +680,16 @@ var Volume = /** @class */ (function () {
676
680
  Volume.prototype.wrapAsync = function (method, args, callback) {
677
681
  var _this = this;
678
682
  validateCallback(callback);
679
- setImmediate_1.default(function () {
683
+ (0, setImmediate_1.default)(function () {
684
+ var result;
680
685
  try {
681
- callback(null, method.apply(_this, args));
686
+ result = method.apply(_this, args);
682
687
  }
683
688
  catch (err) {
684
689
  callback(err);
690
+ return;
685
691
  }
692
+ callback(null, result);
686
693
  });
687
694
  };
688
695
  Volume.prototype._toJSON = function (link, json, path) {
@@ -908,7 +915,7 @@ var Volume = /** @class */ (function () {
908
915
  callback(null, 0, buffer);
909
916
  });
910
917
  }
911
- setImmediate_1.default(function () {
918
+ (0, setImmediate_1.default)(function () {
912
919
  try {
913
920
  var bytes = _this.readBase(fd, buffer, offset, length, position);
914
921
  callback(null, bytes, buffer);
@@ -1044,7 +1051,7 @@ var Volume = /** @class */ (function () {
1044
1051
  length = buf.length;
1045
1052
  }
1046
1053
  var cb = validateCallback(callback);
1047
- setImmediate_1.default(function () {
1054
+ (0, setImmediate_1.default)(function () {
1048
1055
  try {
1049
1056
  var bytes = _this.writeBase(fd, buf, offset, length, position);
1050
1057
  if (tipa !== 'string') {
@@ -1226,7 +1233,7 @@ var Volume = /** @class */ (function () {
1226
1233
  var realLink = this.getResolvedLink(steps);
1227
1234
  if (!realLink)
1228
1235
  throw createError(ENOENT, 'realpath', filename);
1229
- return encoding_1.strToEncoding(realLink.getPath(), encoding);
1236
+ return (0, encoding_1.strToEncoding)(realLink.getPath(), encoding);
1230
1237
  };
1231
1238
  Volume.prototype.realpathSync = function (path, options) {
1232
1239
  return this.realpathBase(pathToFilename(path), getRealpathOptions(options).encoding);
@@ -1297,7 +1304,7 @@ var Volume = /** @class */ (function () {
1297
1304
  }
1298
1305
  // Rename should overwrite the new path, if that exists.
1299
1306
  var name = newPathSteps[newPathSteps.length - 1];
1300
- link.steps = __spreadArray(__spreadArray([], newPathDirLink.steps), [name]);
1307
+ link.steps = __spreadArray(__spreadArray([], newPathDirLink.steps, true), [name], false);
1301
1308
  newPathDirLink.setChild(link.getName(), link);
1302
1309
  };
1303
1310
  Volume.prototype.renameSync = function (oldPath, newPath) {
@@ -1326,7 +1333,7 @@ var Volume = /** @class */ (function () {
1326
1333
  var filename = pathToFilename(path);
1327
1334
  if (typeof callback !== 'function')
1328
1335
  throw Error(ERRSTR.CB);
1329
- setImmediate_1.default(function () {
1336
+ (0, setImmediate_1.default)(function () {
1330
1337
  try {
1331
1338
  callback(_this.existsBase(filename));
1332
1339
  }
@@ -1402,7 +1409,7 @@ var Volume = /** @class */ (function () {
1402
1409
  }
1403
1410
  var list = [];
1404
1411
  for (var name_4 in link.children) {
1405
- list.push(encoding_1.strToEncoding(name_4, options.encoding));
1412
+ list.push((0, encoding_1.strToEncoding)(name_4, options.encoding));
1406
1413
  }
1407
1414
  if (!isWin && options.encoding !== 'buffer')
1408
1415
  list.sort();
@@ -1424,7 +1431,7 @@ var Volume = /** @class */ (function () {
1424
1431
  if (!node.isSymlink())
1425
1432
  throw createError(EINVAL, 'readlink', filename);
1426
1433
  var str = sep + node.symlink.join(sep);
1427
- return encoding_1.strToEncoding(str, encoding);
1434
+ return (0, encoding_1.strToEncoding)(str, encoding);
1428
1435
  };
1429
1436
  Volume.prototype.readlinkSync = function (path, options) {
1430
1437
  var opts = getDefaultOpts(options);
@@ -1584,7 +1591,7 @@ var Volume = /** @class */ (function () {
1584
1591
  var filename = prefix + this.genRndStr();
1585
1592
  try {
1586
1593
  this.mkdirBase(filename, 511 /* DIR */);
1587
- return encoding_1.strToEncoding(filename, encoding);
1594
+ return (0, encoding_1.strToEncoding)(filename, encoding);
1588
1595
  }
1589
1596
  catch (err) {
1590
1597
  if (err.code === EEXIST) {
@@ -1846,7 +1853,7 @@ var StatWatcher = /** @class */ (function (_super) {
1846
1853
  if (persistent === void 0) { persistent = true; }
1847
1854
  if (interval === void 0) { interval = 5007; }
1848
1855
  this.filename = pathToFilename(path);
1849
- this.setTimeout = persistent ? setTimeout : setTimeoutUnref_1.default;
1856
+ this.setTimeout = persistent ? setTimeout.bind(globalThis) : setTimeoutUnref_1.default;
1850
1857
  this.interval = interval;
1851
1858
  this.prev = this.vol.statSync(this.filename);
1852
1859
  this.loop();
@@ -1860,7 +1867,7 @@ var StatWatcher = /** @class */ (function (_super) {
1860
1867
  exports.StatWatcher = StatWatcher;
1861
1868
  var pool;
1862
1869
  function allocNewPool(poolSize) {
1863
- pool = buffer_1.bufferAllocUnsafe(poolSize);
1870
+ pool = (0, buffer_1.bufferAllocUnsafe)(poolSize);
1864
1871
  pool.used = 0;
1865
1872
  }
1866
1873
  util.inherits(FsReadStream, stream_1.Readable);
@@ -2154,7 +2161,7 @@ var FSWatcher = /** @class */ (function (_super) {
2154
2161
  if (encoding === void 0) { encoding = encoding_1.ENCODING_UTF8; }
2155
2162
  this._filename = pathToFilename(path);
2156
2163
  this._steps = filenameToSteps(this._filename);
2157
- this._filenameEncoded = encoding_1.strToEncoding(this._filename);
2164
+ this._filenameEncoded = (0, encoding_1.strToEncoding)(this._filename);
2158
2165
  // this._persistent = persistent;
2159
2166
  this._recursive = recursive;
2160
2167
  this._encoding = encoding;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memfs",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "description": "In-memory file-system with Node's fs API.",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -10,7 +10,7 @@
10
10
  "scripts": {
11
11
  "clean": "rimraf lib types",
12
12
  "build": "tsc -p . && cpy src/*.js lib",
13
- "test": "jest",
13
+ "test": "jest --maxWorkers 2",
14
14
  "test:coverage": "jest --coverage",
15
15
  "test:watch": "jest --watch",
16
16
  "watch": "watch \"npm run build\" ./src",
@@ -26,23 +26,23 @@
26
26
  "fs-monkey": "1.0.3"
27
27
  },
28
28
  "devDependencies": {
29
- "@types/jest": "26.0.22",
30
- "@types/node": "10.17.56",
29
+ "@types/jest": "27.0.1",
30
+ "@types/node": "10.17.60",
31
31
  "cpy-cli": "3.1.1",
32
- "husky": "6.0.0",
33
- "jest": "26.6.3",
34
- "prettier": "2.2.1",
35
- "pretty-quick": "3.1.0",
32
+ "husky": "7.0.2",
33
+ "jest": "27.1.0",
34
+ "prettier": "2.3.2",
35
+ "pretty-quick": "3.1.1",
36
36
  "rimraf": "3.0.2",
37
- "ts-jest": "26.5.4",
38
- "ts-node": "9.1.1",
37
+ "ts-jest": "27.0.5",
38
+ "ts-node": "10.2.1",
39
39
  "tslint": "5.20.1",
40
40
  "tslint-config-common": "1.6.0",
41
- "typescript": "4.2.3",
42
- "semantic-release": "17.4.2",
41
+ "typescript": "4.4.2",
42
+ "semantic-release": "17.4.7",
43
43
  "@semantic-release/changelog": "5.0.1",
44
44
  "@semantic-release/git": "9.0.0",
45
- "@semantic-release/npm": "7.1.0"
45
+ "@semantic-release/npm": "7.1.3"
46
46
  },
47
47
  "config": {
48
48
  "commitizen": {