memfs 4.1.0 → 4.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.
- package/README.md +10 -7
- package/demo/runkit.js +5 -0
- package/lib/Dirent.js +1 -0
- package/lib/Dirent.js.map +1 -0
- package/lib/Stats.js +2 -2
- package/lib/Stats.js.map +1 -0
- package/lib/__tests__/util.js +1 -0
- package/lib/__tests__/util.js.map +1 -0
- package/lib/cas/types.d.ts +10 -0
- package/lib/{node/types/callback.js → cas/types.js} +1 -0
- package/lib/cas/types.js.map +1 -0
- package/lib/constants.js +1 -0
- package/lib/constants.js.map +1 -0
- package/lib/consts/AMODE.js +1 -0
- package/lib/consts/AMODE.js.map +1 -0
- package/lib/consts/FLAG.d.ts +6 -0
- package/lib/consts/FLAG.js +1 -0
- package/lib/consts/FLAG.js.map +1 -0
- package/lib/crud/__tests__/matryoshka.test.d.ts +1 -0
- package/lib/crud/__tests__/matryoshka.test.js +69 -0
- package/lib/crud/__tests__/matryoshka.test.js.map +1 -0
- package/lib/crud/__tests__/testCrudfs.d.ts +6 -0
- package/lib/crud/__tests__/testCrudfs.js +278 -0
- package/lib/crud/__tests__/testCrudfs.js.map +1 -0
- package/lib/crud/types.d.ts +80 -0
- package/lib/{node/types/promises.js → crud/types.js} +1 -0
- package/lib/crud/types.js.map +1 -0
- package/lib/crud/util.d.ts +2 -0
- package/lib/crud/util.js +11 -0
- package/lib/crud/util.js.map +1 -0
- package/lib/crud-to-cas/CrudCas.d.ts +14 -0
- package/lib/crud-to-cas/CrudCas.js +57 -0
- package/lib/crud-to-cas/CrudCas.js.map +1 -0
- package/lib/crud-to-cas/__tests__/CrudCas.test.d.ts +1 -0
- package/lib/crud-to-cas/__tests__/CrudCas.test.js +38 -0
- package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +1 -0
- package/lib/crud-to-cas/__tests__/testCasfs.d.ts +9 -0
- package/lib/crud-to-cas/__tests__/testCasfs.js +108 -0
- package/lib/crud-to-cas/__tests__/testCasfs.js.map +1 -0
- package/lib/crud-to-cas/index.d.ts +1 -0
- package/lib/crud-to-cas/index.js +6 -0
- package/lib/crud-to-cas/index.js.map +1 -0
- package/lib/crud-to-cas/util.d.ts +2 -0
- package/lib/crud-to-cas/util.js +13 -0
- package/lib/crud-to-cas/util.js.map +1 -0
- package/lib/encoding.js +1 -0
- package/lib/encoding.js.map +1 -0
- package/lib/fsa/types.js +1 -0
- package/lib/fsa/types.js.map +1 -0
- package/lib/fsa-to-crud/FsaCrud.d.ts +15 -0
- package/lib/fsa-to-crud/FsaCrud.js +191 -0
- package/lib/fsa-to-crud/FsaCrud.js.map +1 -0
- package/lib/fsa-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
- package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +17 -0
- package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +1 -0
- package/lib/fsa-to-crud/index.d.ts +1 -0
- package/lib/fsa-to-crud/index.js +6 -0
- package/lib/fsa-to-crud/index.js.map +1 -0
- package/lib/fsa-to-crud/util.d.ts +5 -0
- package/lib/fsa-to-crud/util.js +12 -0
- package/lib/fsa-to-crud/util.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeCore.d.ts +3 -2
- package/lib/fsa-to-node/FsaNodeCore.js +109 -87
- package/lib/fsa-to-node/FsaNodeCore.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeDirent.js +1 -0
- package/lib/fsa-to-node/FsaNodeDirent.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeFs.d.ts +14 -2
- package/lib/fsa-to-node/FsaNodeFs.js +156 -143
- package/lib/fsa-to-node/FsaNodeFs.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeFsOpenFile.js +13 -25
- package/lib/fsa-to-node/FsaNodeFsOpenFile.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeReadStream.js +14 -24
- package/lib/fsa-to-node/FsaNodeReadStream.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeStats.js +1 -0
- package/lib/fsa-to-node/FsaNodeStats.js.map +1 -0
- package/lib/fsa-to-node/FsaNodeWriteStream.js +35 -47
- package/lib/fsa-to-node/FsaNodeWriteStream.js.map +1 -0
- package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +357 -348
- package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +1 -0
- package/lib/fsa-to-node/__tests__/util.test.js +4 -0
- package/lib/fsa-to-node/__tests__/util.test.js.map +1 -0
- package/lib/fsa-to-node/constants.js +1 -0
- package/lib/fsa-to-node/constants.js.map +1 -0
- package/lib/fsa-to-node/index.js +1 -0
- package/lib/fsa-to-node/index.js.map +1 -0
- package/lib/fsa-to-node/json.js +1 -0
- package/lib/fsa-to-node/json.js.map +1 -0
- package/lib/fsa-to-node/types.js +1 -0
- package/lib/fsa-to-node/types.js.map +1 -0
- package/lib/fsa-to-node/util.js +7 -13
- package/lib/fsa-to-node/util.js.map +1 -0
- package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js +31 -41
- package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js.map +1 -0
- package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js +91 -105
- package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js.map +1 -0
- package/lib/fsa-to-node/worker/SyncMessenger.js +4 -12
- package/lib/fsa-to-node/worker/SyncMessenger.js.map +1 -0
- package/lib/fsa-to-node/worker/constants.js +1 -0
- package/lib/fsa-to-node/worker/constants.js.map +1 -0
- package/lib/fsa-to-node/worker/types.js +1 -0
- package/lib/fsa-to-node/worker/types.js.map +1 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.js +8 -6
- package/lib/index.js.map +1 -0
- package/lib/internal/buffer.js +1 -0
- package/lib/internal/buffer.js.map +1 -0
- package/lib/internal/errors.js +1 -0
- package/lib/internal/errors.js.map +1 -0
- package/lib/node/FileHandle.js +1 -0
- package/lib/node/FileHandle.js.map +1 -0
- package/lib/node/FsPromises.d.ts +86 -0
- package/lib/node/FsPromises.js +54 -0
- package/lib/node/FsPromises.js.map +1 -0
- package/lib/node/constants.js +2 -1
- package/lib/node/constants.js.map +1 -0
- package/lib/node/lists/fsCallbackApiList.d.ts +2 -0
- package/lib/node/lists/fsCallbackApiList.js +47 -0
- package/lib/node/lists/fsCallbackApiList.js.map +1 -0
- package/lib/node/lists/fsCommonObjectsList.d.ts +2 -0
- package/lib/node/lists/fsCommonObjectsList.js +19 -0
- package/lib/node/lists/fsCommonObjectsList.js.map +1 -0
- package/lib/node/lists/fsSynchronousApiList.d.ts +2 -0
- package/lib/node/lists/fsSynchronousApiList.js +46 -0
- package/lib/node/lists/fsSynchronousApiList.js.map +1 -0
- package/lib/node/options.js +1 -0
- package/lib/node/options.js.map +1 -0
- package/lib/node/types/{callback.d.ts → FsCallbackApi.d.ts} +49 -40
- package/lib/node/types/FsCallbackApi.js +3 -0
- package/lib/node/types/FsCallbackApi.js.map +1 -0
- package/lib/node/types/FsCommonObjects.d.ts +4 -4
- package/lib/node/types/FsCommonObjects.js +1 -0
- package/lib/node/types/FsCommonObjects.js.map +1 -0
- package/lib/node/types/{promises.d.ts → FsPromisesApi.d.ts} +11 -0
- package/lib/node/types/FsPromisesApi.js +3 -0
- package/lib/node/types/FsPromisesApi.js.map +1 -0
- package/lib/node/types/FsSynchronousApi.d.ts +64 -58
- package/lib/node/types/FsSynchronousApi.js +1 -0
- package/lib/node/types/FsSynchronousApi.js.map +1 -0
- package/lib/node/types/index.d.ts +2 -2
- package/lib/node/types/index.js +1 -0
- package/lib/node/types/index.js.map +1 -0
- package/lib/node/types/misc.d.ts +20 -0
- package/lib/node/types/misc.js +1 -0
- package/lib/node/types/misc.js.map +1 -0
- package/lib/node/types/options.d.ts +62 -0
- package/lib/node/types/options.js +1 -0
- package/lib/node/types/options.js.map +1 -0
- package/lib/node/util.d.ts +2 -1
- package/lib/node/util.js +30 -1
- package/lib/node/util.js.map +1 -0
- package/lib/node-to-crud/NodeCrud.d.ts +22 -0
- package/lib/node-to-crud/NodeCrud.js +233 -0
- package/lib/node-to-crud/NodeCrud.js.map +1 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.js +18 -0
- package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +1 -0
- package/lib/node-to-crud/index.d.ts +1 -0
- package/lib/node-to-crud/index.js +6 -0
- package/lib/node-to-crud/index.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.d.ts +3 -2
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js +112 -151
- package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemFileHandle.js +25 -36
- package/lib/node-to-fsa/NodeFileSystemFileHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemHandle.js +3 -13
- package/lib/node-to-fsa/NodeFileSystemHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js +42 -62
- package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js.map +1 -0
- package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js +92 -116
- package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js.map +1 -0
- package/lib/node-to-fsa/NodePermissionStatus.js +1 -0
- package/lib/node-to-fsa/NodePermissionStatus.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +175 -234
- package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +91 -99
- package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +10 -18
- package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +70 -78
- package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +31 -39
- package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/scenarios.test.js +18 -26
- package/lib/node-to-fsa/__tests__/scenarios.test.js.map +1 -0
- package/lib/node-to-fsa/__tests__/util.test.js +5 -0
- package/lib/node-to-fsa/__tests__/util.test.js.map +1 -0
- package/lib/node-to-fsa/index.js +6 -18
- package/lib/node-to-fsa/index.js.map +1 -0
- package/lib/node-to-fsa/types.d.ts +5 -2
- package/lib/node-to-fsa/types.js +1 -0
- package/lib/node-to-fsa/types.js.map +1 -0
- package/lib/node-to-fsa/util.js +3 -0
- package/lib/node-to-fsa/util.js.map +1 -0
- package/lib/node.js +1 -0
- package/lib/node.js.map +1 -0
- package/lib/print/__tests__/index.test.d.ts +1 -0
- package/lib/print/__tests__/index.test.js +77 -0
- package/lib/print/__tests__/index.test.js.map +1 -0
- package/lib/print/index.d.ts +8 -0
- package/lib/print/index.js +33 -0
- package/lib/print/index.js.map +1 -0
- package/lib/process.js +1 -0
- package/lib/process.js.map +1 -0
- package/lib/setImmediate.js +1 -0
- package/lib/setImmediate.js.map +1 -0
- package/lib/setTimeoutUnref.js +1 -0
- package/lib/setTimeoutUnref.js.map +1 -0
- package/lib/snapshot/__tests__/async.test.d.ts +1 -0
- package/lib/snapshot/__tests__/async.test.js +63 -0
- package/lib/snapshot/__tests__/async.test.js.map +1 -0
- package/lib/snapshot/__tests__/binary.test.d.ts +1 -0
- package/lib/snapshot/__tests__/binary.test.js +59 -0
- package/lib/snapshot/__tests__/binary.test.js.map +1 -0
- package/lib/snapshot/__tests__/json.test.d.ts +1 -0
- package/lib/snapshot/__tests__/json.test.js +68 -0
- package/lib/snapshot/__tests__/json.test.js.map +1 -0
- package/lib/snapshot/__tests__/sync.test.d.ts +1 -0
- package/lib/snapshot/__tests__/sync.test.js +63 -0
- package/lib/snapshot/__tests__/sync.test.js.map +1 -0
- package/lib/snapshot/async.d.ts +3 -0
- package/lib/snapshot/async.js +59 -0
- package/lib/snapshot/async.js.map +1 -0
- package/lib/snapshot/binary.d.ts +6 -0
- package/lib/snapshot/binary.js +31 -0
- package/lib/snapshot/binary.js.map +1 -0
- package/lib/snapshot/constants.d.ts +5 -0
- package/lib/snapshot/constants.js +3 -0
- package/lib/snapshot/constants.js.map +1 -0
- package/lib/snapshot/index.d.ts +5 -0
- package/lib/snapshot/index.js +8 -0
- package/lib/snapshot/index.js.map +1 -0
- package/lib/snapshot/json.d.ts +10 -0
- package/lib/snapshot/json.js +31 -0
- package/lib/snapshot/json.js.map +1 -0
- package/lib/snapshot/shared.d.ts +2 -0
- package/lib/snapshot/shared.js +6 -0
- package/lib/snapshot/shared.js.map +1 -0
- package/lib/snapshot/sync.d.ts +3 -0
- package/lib/snapshot/sync.js +59 -0
- package/lib/snapshot/sync.js.map +1 -0
- package/lib/snapshot/types.d.ts +30 -0
- package/lib/snapshot/types.js +3 -0
- package/lib/snapshot/types.js.map +1 -0
- package/lib/volume-localstorage.js +1 -0
- package/lib/volume-localstorage.js.map +1 -0
- package/lib/volume.d.ts +18 -7
- package/lib/volume.js +27 -18
- package/lib/volume.js.map +1 -0
- package/lib/webfs/index.js +1 -0
- package/lib/webfs/index.js.map +1 -0
- package/package.json +68 -27
- package/lib/getBigInt.js +0 -5
- package/lib/node/promises.d.ts +0 -2
- package/lib/node/promises.js +0 -86
|
@@ -1,27 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
12
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
13
|
-
var m = o[Symbol.asyncIterator], i;
|
|
14
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
15
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
16
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
19
4
|
const __1 = require("../..");
|
|
20
5
|
const NodeFileSystemDirectoryHandle_1 = require("../NodeFileSystemDirectoryHandle");
|
|
21
6
|
const NodeFileSystemFileHandle_1 = require("../NodeFileSystemFileHandle");
|
|
22
7
|
const util_1 = require("../../__tests__/util");
|
|
23
8
|
const setup = (json = {}) => {
|
|
24
|
-
const fs = (0, __1.memfs)(json, '/');
|
|
9
|
+
const { fs } = (0, __1.memfs)(json, '/');
|
|
25
10
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
|
|
26
11
|
return { dir, fs };
|
|
27
12
|
};
|
|
@@ -31,286 +16,241 @@ const setup = (json = {}) => {
|
|
|
31
16
|
expect(dir).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
32
17
|
});
|
|
33
18
|
describe('.keys()', () => {
|
|
34
|
-
test('returns an empty iterator for an empty directory', () =>
|
|
19
|
+
test('returns an empty iterator for an empty directory', async () => {
|
|
35
20
|
const { dir } = setup();
|
|
36
21
|
const keys = dir.keys();
|
|
37
|
-
expect(
|
|
38
|
-
})
|
|
39
|
-
test('returns a folder', () =>
|
|
22
|
+
expect(await keys.next()).toStrictEqual({ done: true, value: undefined });
|
|
23
|
+
});
|
|
24
|
+
test('returns a folder', async () => {
|
|
40
25
|
var _a, e_1, _b, _c;
|
|
41
26
|
const { dir } = setup({ folder: null });
|
|
42
27
|
const list = [];
|
|
43
28
|
try {
|
|
44
|
-
for (var _d = true, _e = __asyncValues(dir.keys()), _f; _f =
|
|
29
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.keys()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
45
30
|
_c = _f.value;
|
|
46
31
|
_d = false;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
list.push(key);
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
_d = true;
|
|
53
|
-
}
|
|
32
|
+
const key = _c;
|
|
33
|
+
list.push(key);
|
|
54
34
|
}
|
|
55
35
|
}
|
|
56
36
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
57
37
|
finally {
|
|
58
38
|
try {
|
|
59
|
-
if (!_d && !_a && (_b = _e.return))
|
|
39
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
60
40
|
}
|
|
61
41
|
finally { if (e_1) throw e_1.error; }
|
|
62
42
|
}
|
|
63
43
|
expect(list).toStrictEqual(['folder']);
|
|
64
|
-
})
|
|
65
|
-
test('returns two folders', () =>
|
|
66
|
-
var
|
|
44
|
+
});
|
|
45
|
+
test('returns two folders', async () => {
|
|
46
|
+
var _a, e_2, _b, _c;
|
|
67
47
|
const { dir } = setup({
|
|
68
48
|
folder: null,
|
|
69
49
|
'another/folder': null,
|
|
70
50
|
});
|
|
71
51
|
const list = [];
|
|
72
52
|
try {
|
|
73
|
-
for (var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
list.push(key);
|
|
79
|
-
}
|
|
80
|
-
finally {
|
|
81
|
-
_k = true;
|
|
82
|
-
}
|
|
53
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.keys()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
54
|
+
_c = _f.value;
|
|
55
|
+
_d = false;
|
|
56
|
+
const key = _c;
|
|
57
|
+
list.push(key);
|
|
83
58
|
}
|
|
84
59
|
}
|
|
85
60
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
86
61
|
finally {
|
|
87
62
|
try {
|
|
88
|
-
if (!
|
|
63
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
89
64
|
}
|
|
90
65
|
finally { if (e_2) throw e_2.error; }
|
|
91
66
|
}
|
|
92
67
|
expect(list.length).toBe(2);
|
|
93
|
-
})
|
|
94
|
-
test('returns a file', () =>
|
|
95
|
-
var
|
|
68
|
+
});
|
|
69
|
+
test('returns a file', async () => {
|
|
70
|
+
var _a, e_3, _b, _c;
|
|
96
71
|
const { dir } = setup({
|
|
97
72
|
'file.txt': 'Hello, world!',
|
|
98
73
|
});
|
|
99
74
|
const list = [];
|
|
100
75
|
try {
|
|
101
|
-
for (var
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
list.push(key);
|
|
107
|
-
}
|
|
108
|
-
finally {
|
|
109
|
-
_r = true;
|
|
110
|
-
}
|
|
76
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.keys()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
77
|
+
_c = _f.value;
|
|
78
|
+
_d = false;
|
|
79
|
+
const key = _c;
|
|
80
|
+
list.push(key);
|
|
111
81
|
}
|
|
112
82
|
}
|
|
113
83
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
114
84
|
finally {
|
|
115
85
|
try {
|
|
116
|
-
if (!
|
|
86
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
117
87
|
}
|
|
118
88
|
finally { if (e_3) throw e_3.error; }
|
|
119
89
|
}
|
|
120
90
|
expect(list).toStrictEqual(['file.txt']);
|
|
121
|
-
})
|
|
91
|
+
});
|
|
122
92
|
});
|
|
123
93
|
describe('.entries()', () => {
|
|
124
|
-
test('returns an empty iterator for an empty directory', () =>
|
|
94
|
+
test('returns an empty iterator for an empty directory', async () => {
|
|
125
95
|
const { dir } = setup();
|
|
126
96
|
const keys = dir.entries();
|
|
127
|
-
expect(
|
|
128
|
-
})
|
|
129
|
-
test('returns a folder', () =>
|
|
97
|
+
expect(await keys.next()).toStrictEqual({ done: true, value: undefined });
|
|
98
|
+
});
|
|
99
|
+
test('returns a folder', async () => {
|
|
130
100
|
var _a, e_4, _b, _c;
|
|
131
101
|
const { dir } = setup({ 'My Documents': null });
|
|
132
102
|
try {
|
|
133
|
-
for (var _d = true, _e = __asyncValues(dir.entries()), _f; _f =
|
|
103
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.entries()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
134
104
|
_c = _f.value;
|
|
135
105
|
_d = false;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
expect(subdir.name).toBe('My Documents');
|
|
142
|
-
}
|
|
143
|
-
finally {
|
|
144
|
-
_d = true;
|
|
145
|
-
}
|
|
106
|
+
const [name, subdir] = _c;
|
|
107
|
+
expect(name).toBe('My Documents');
|
|
108
|
+
expect(subdir).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
109
|
+
expect(subdir.kind).toBe('directory');
|
|
110
|
+
expect(subdir.name).toBe('My Documents');
|
|
146
111
|
}
|
|
147
112
|
}
|
|
148
113
|
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
149
114
|
finally {
|
|
150
115
|
try {
|
|
151
|
-
if (!_d && !_a && (_b = _e.return))
|
|
116
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
152
117
|
}
|
|
153
118
|
finally { if (e_4) throw e_4.error; }
|
|
154
119
|
}
|
|
155
|
-
})
|
|
156
|
-
test('returns a file', () =>
|
|
157
|
-
var
|
|
120
|
+
});
|
|
121
|
+
test('returns a file', async () => {
|
|
122
|
+
var _a, e_5, _b, _c;
|
|
158
123
|
const { dir } = setup({
|
|
159
124
|
'file.txt': 'Hello, world!',
|
|
160
125
|
});
|
|
161
126
|
try {
|
|
162
|
-
for (var
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
expect(file.name).toBe('file.txt');
|
|
171
|
-
}
|
|
172
|
-
finally {
|
|
173
|
-
_k = true;
|
|
174
|
-
}
|
|
127
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.entries()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
128
|
+
_c = _f.value;
|
|
129
|
+
_d = false;
|
|
130
|
+
const [name, file] = _c;
|
|
131
|
+
expect(name).toBe('file.txt');
|
|
132
|
+
expect(file).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
133
|
+
expect(file.kind).toBe('file');
|
|
134
|
+
expect(file.name).toBe('file.txt');
|
|
175
135
|
}
|
|
176
136
|
}
|
|
177
137
|
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
178
138
|
finally {
|
|
179
139
|
try {
|
|
180
|
-
if (!
|
|
140
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
181
141
|
}
|
|
182
142
|
finally { if (e_5) throw e_5.error; }
|
|
183
143
|
}
|
|
184
|
-
})
|
|
185
|
-
test('returns two entries', () =>
|
|
186
|
-
var
|
|
144
|
+
});
|
|
145
|
+
test('returns two entries', async () => {
|
|
146
|
+
var _a, e_6, _b, _c;
|
|
187
147
|
const { dir } = setup({
|
|
188
148
|
'index.html': '<nobr>Hello, world!</nobr>',
|
|
189
149
|
'another/folder': null,
|
|
190
150
|
});
|
|
191
151
|
const handles = [];
|
|
192
152
|
try {
|
|
193
|
-
for (var
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
handles.push(entry[1]);
|
|
199
|
-
}
|
|
200
|
-
finally {
|
|
201
|
-
_r = true;
|
|
202
|
-
}
|
|
153
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.entries()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
154
|
+
_c = _f.value;
|
|
155
|
+
_d = false;
|
|
156
|
+
const entry = _c;
|
|
157
|
+
handles.push(entry[1]);
|
|
203
158
|
}
|
|
204
159
|
}
|
|
205
160
|
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
206
161
|
finally {
|
|
207
162
|
try {
|
|
208
|
-
if (!
|
|
163
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
209
164
|
}
|
|
210
165
|
finally { if (e_6) throw e_6.error; }
|
|
211
166
|
}
|
|
212
167
|
expect(handles.length).toBe(2);
|
|
213
168
|
expect(handles.find(handle => handle.name === 'index.html')).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
214
169
|
expect(handles.find(handle => handle.name === 'another')).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
215
|
-
})
|
|
170
|
+
});
|
|
216
171
|
});
|
|
217
172
|
describe('.values()', () => {
|
|
218
|
-
test('returns an empty iterator for an empty directory', () =>
|
|
173
|
+
test('returns an empty iterator for an empty directory', async () => {
|
|
219
174
|
const { dir } = setup();
|
|
220
175
|
const values = dir.values();
|
|
221
|
-
expect(
|
|
222
|
-
})
|
|
223
|
-
test('returns a folder', () =>
|
|
176
|
+
expect(await values.next()).toStrictEqual({ done: true, value: undefined });
|
|
177
|
+
});
|
|
178
|
+
test('returns a folder', async () => {
|
|
224
179
|
var _a, e_7, _b, _c;
|
|
225
180
|
const { dir } = setup({ 'My Documents': null });
|
|
226
181
|
try {
|
|
227
|
-
for (var _d = true, _e = __asyncValues(dir.values()), _f; _f =
|
|
182
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.values()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
228
183
|
_c = _f.value;
|
|
229
184
|
_d = false;
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
expect(subdir.name).toBe('My Documents');
|
|
235
|
-
}
|
|
236
|
-
finally {
|
|
237
|
-
_d = true;
|
|
238
|
-
}
|
|
185
|
+
const subdir = _c;
|
|
186
|
+
expect(subdir).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
187
|
+
expect(subdir.kind).toBe('directory');
|
|
188
|
+
expect(subdir.name).toBe('My Documents');
|
|
239
189
|
}
|
|
240
190
|
}
|
|
241
191
|
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
242
192
|
finally {
|
|
243
193
|
try {
|
|
244
|
-
if (!_d && !_a && (_b = _e.return))
|
|
194
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
245
195
|
}
|
|
246
196
|
finally { if (e_7) throw e_7.error; }
|
|
247
197
|
}
|
|
248
|
-
})
|
|
249
|
-
test('returns a file', () =>
|
|
250
|
-
var
|
|
198
|
+
});
|
|
199
|
+
test('returns a file', async () => {
|
|
200
|
+
var _a, e_8, _b, _c;
|
|
251
201
|
const { dir } = setup({
|
|
252
202
|
'file.txt': 'Hello, world!',
|
|
253
203
|
});
|
|
254
204
|
try {
|
|
255
|
-
for (var
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
expect(file.name).toBe('file.txt');
|
|
263
|
-
}
|
|
264
|
-
finally {
|
|
265
|
-
_k = true;
|
|
266
|
-
}
|
|
205
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.values()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
206
|
+
_c = _f.value;
|
|
207
|
+
_d = false;
|
|
208
|
+
const file = _c;
|
|
209
|
+
expect(file).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
210
|
+
expect(file.kind).toBe('file');
|
|
211
|
+
expect(file.name).toBe('file.txt');
|
|
267
212
|
}
|
|
268
213
|
}
|
|
269
214
|
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
270
215
|
finally {
|
|
271
216
|
try {
|
|
272
|
-
if (!
|
|
217
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
273
218
|
}
|
|
274
219
|
finally { if (e_8) throw e_8.error; }
|
|
275
220
|
}
|
|
276
|
-
})
|
|
277
|
-
test('returns two entries', () =>
|
|
278
|
-
var
|
|
221
|
+
});
|
|
222
|
+
test('returns two entries', async () => {
|
|
223
|
+
var _a, e_9, _b, _c;
|
|
279
224
|
const { dir } = setup({
|
|
280
225
|
'index.html': '<nobr>Hello, world!</nobr>',
|
|
281
226
|
'another/folder': null,
|
|
282
227
|
});
|
|
283
228
|
const handles = [];
|
|
284
229
|
try {
|
|
285
|
-
for (var
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
handles.push(entry);
|
|
291
|
-
}
|
|
292
|
-
finally {
|
|
293
|
-
_r = true;
|
|
294
|
-
}
|
|
230
|
+
for (var _d = true, _e = tslib_1.__asyncValues(dir.values()), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) {
|
|
231
|
+
_c = _f.value;
|
|
232
|
+
_d = false;
|
|
233
|
+
const entry = _c;
|
|
234
|
+
handles.push(entry);
|
|
295
235
|
}
|
|
296
236
|
}
|
|
297
237
|
catch (e_9_1) { e_9 = { error: e_9_1 }; }
|
|
298
238
|
finally {
|
|
299
239
|
try {
|
|
300
|
-
if (!
|
|
240
|
+
if (!_d && !_a && (_b = _e.return)) await _b.call(_e);
|
|
301
241
|
}
|
|
302
242
|
finally { if (e_9) throw e_9.error; }
|
|
303
243
|
}
|
|
304
244
|
expect(handles.length).toBe(2);
|
|
305
245
|
expect(handles.find(handle => handle.name === 'index.html')).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
306
246
|
expect(handles.find(handle => handle.name === 'another')).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
307
|
-
})
|
|
247
|
+
});
|
|
308
248
|
});
|
|
309
249
|
describe('.getDirectoryHandle()', () => {
|
|
310
|
-
test('throws "NotFoundError" DOMException if sub-directory not found', () =>
|
|
250
|
+
test('throws "NotFoundError" DOMException if sub-directory not found', async () => {
|
|
311
251
|
const { dir } = setup({ a: null });
|
|
312
252
|
try {
|
|
313
|
-
|
|
253
|
+
await dir.getDirectoryHandle('b');
|
|
314
254
|
throw new Error('Not this error.');
|
|
315
255
|
}
|
|
316
256
|
catch (error) {
|
|
@@ -318,11 +258,11 @@ const setup = (json = {}) => {
|
|
|
318
258
|
expect(error.name).toBe('NotFoundError');
|
|
319
259
|
expect(error.message).toBe('A requested file or directory could not be found at the time an operation was processed.');
|
|
320
260
|
}
|
|
321
|
-
})
|
|
322
|
-
test('throws "TypeMismatchError" DOMException if entry is not a directory', () =>
|
|
261
|
+
});
|
|
262
|
+
test('throws "TypeMismatchError" DOMException if entry is not a directory', async () => {
|
|
323
263
|
const { dir } = setup({ file: 'contents' });
|
|
324
264
|
try {
|
|
325
|
-
|
|
265
|
+
await dir.getDirectoryHandle('file');
|
|
326
266
|
throw new Error('Not this error.');
|
|
327
267
|
}
|
|
328
268
|
catch (error) {
|
|
@@ -330,12 +270,12 @@ const setup = (json = {}) => {
|
|
|
330
270
|
expect(error.name).toBe('TypeMismatchError');
|
|
331
271
|
expect(error.message).toBe('The path supplied exists, but was not an entry of requested type.');
|
|
332
272
|
}
|
|
333
|
-
})
|
|
334
|
-
test('throws if not in "readwrite" mode and attempting to create a directory', () =>
|
|
335
|
-
const fs = (0, __1.memfs)({}, '/');
|
|
273
|
+
});
|
|
274
|
+
test('throws if not in "readwrite" mode and attempting to create a directory', async () => {
|
|
275
|
+
const { fs } = (0, __1.memfs)({}, '/');
|
|
336
276
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'read' });
|
|
337
277
|
try {
|
|
338
|
-
|
|
278
|
+
await dir.getDirectoryHandle('test', { create: true });
|
|
339
279
|
throw new Error('Not this error');
|
|
340
280
|
}
|
|
341
281
|
catch (error) {
|
|
@@ -343,7 +283,7 @@ const setup = (json = {}) => {
|
|
|
343
283
|
expect(error.name).toBe('NotAllowedError');
|
|
344
284
|
expect(error.message).toBe('The request is not allowed by the user agent or the platform in the current context.');
|
|
345
285
|
}
|
|
346
|
-
})
|
|
286
|
+
});
|
|
347
287
|
const invalidNames = [
|
|
348
288
|
'.',
|
|
349
289
|
'..',
|
|
@@ -362,41 +302,41 @@ const setup = (json = {}) => {
|
|
|
362
302
|
'a\\.',
|
|
363
303
|
];
|
|
364
304
|
for (const invalidName of invalidNames) {
|
|
365
|
-
test(`throws on invalid file name: "${invalidName}"`, () =>
|
|
305
|
+
test(`throws on invalid file name: "${invalidName}"`, async () => {
|
|
366
306
|
const { dir } = setup({ file: 'contents' });
|
|
367
307
|
try {
|
|
368
|
-
|
|
308
|
+
await dir.getDirectoryHandle(invalidName);
|
|
369
309
|
throw new Error('Not this error.');
|
|
370
310
|
}
|
|
371
311
|
catch (error) {
|
|
372
312
|
expect(error).toBeInstanceOf(TypeError);
|
|
373
313
|
expect(error.message).toBe(`Failed to execute 'getDirectoryHandle' on 'FileSystemDirectoryHandle': Name is not allowed.`);
|
|
374
314
|
}
|
|
375
|
-
})
|
|
315
|
+
});
|
|
376
316
|
}
|
|
377
|
-
test('can retrieve a child directory', () =>
|
|
317
|
+
test('can retrieve a child directory', async () => {
|
|
378
318
|
const { dir } = setup({ file: 'contents', subdir: null });
|
|
379
|
-
const subdir =
|
|
319
|
+
const subdir = await dir.getDirectoryHandle('subdir');
|
|
380
320
|
expect(subdir.kind).toBe('directory');
|
|
381
321
|
expect(subdir.name).toBe('subdir');
|
|
382
322
|
expect(subdir).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
383
|
-
})
|
|
384
|
-
test('can create a sub-directory', () =>
|
|
323
|
+
});
|
|
324
|
+
test('can create a sub-directory', async () => {
|
|
385
325
|
const { dir, fs } = setup({});
|
|
386
326
|
expect(fs.existsSync('/subdir')).toBe(false);
|
|
387
|
-
const subdir =
|
|
327
|
+
const subdir = await dir.getDirectoryHandle('subdir', { create: true });
|
|
388
328
|
expect(fs.existsSync('/subdir')).toBe(true);
|
|
389
329
|
expect(fs.statSync('/subdir').isDirectory()).toBe(true);
|
|
390
330
|
expect(subdir.kind).toBe('directory');
|
|
391
331
|
expect(subdir.name).toBe('subdir');
|
|
392
332
|
expect(subdir).toBeInstanceOf(NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle);
|
|
393
|
-
})
|
|
333
|
+
});
|
|
394
334
|
});
|
|
395
335
|
describe('.getFileHandle()', () => {
|
|
396
|
-
test('throws "NotFoundError" DOMException if file not found', () =>
|
|
336
|
+
test('throws "NotFoundError" DOMException if file not found', async () => {
|
|
397
337
|
const { dir } = setup({ a: null });
|
|
398
338
|
try {
|
|
399
|
-
|
|
339
|
+
await dir.getFileHandle('b');
|
|
400
340
|
throw new Error('Not this error.');
|
|
401
341
|
}
|
|
402
342
|
catch (error) {
|
|
@@ -404,11 +344,11 @@ const setup = (json = {}) => {
|
|
|
404
344
|
expect(error.name).toBe('NotFoundError');
|
|
405
345
|
expect(error.message).toBe('A requested file or directory could not be found at the time an operation was processed.');
|
|
406
346
|
}
|
|
407
|
-
})
|
|
408
|
-
test('throws "TypeMismatchError" DOMException if entry is not a file', () =>
|
|
347
|
+
});
|
|
348
|
+
test('throws "TypeMismatchError" DOMException if entry is not a file', async () => {
|
|
409
349
|
const { dir } = setup({ directory: null });
|
|
410
350
|
try {
|
|
411
|
-
|
|
351
|
+
await dir.getFileHandle('directory');
|
|
412
352
|
throw new Error('Not this error.');
|
|
413
353
|
}
|
|
414
354
|
catch (error) {
|
|
@@ -416,12 +356,12 @@ const setup = (json = {}) => {
|
|
|
416
356
|
expect(error.name).toBe('TypeMismatchError');
|
|
417
357
|
expect(error.message).toBe('The path supplied exists, but was not an entry of requested type.');
|
|
418
358
|
}
|
|
419
|
-
})
|
|
420
|
-
test('throws if not in "readwrite" mode and attempting to create a file', () =>
|
|
421
|
-
const fs = (0, __1.memfs)({}, '/');
|
|
359
|
+
});
|
|
360
|
+
test('throws if not in "readwrite" mode and attempting to create a file', async () => {
|
|
361
|
+
const { fs } = (0, __1.memfs)({}, '/');
|
|
422
362
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'read' });
|
|
423
363
|
try {
|
|
424
|
-
|
|
364
|
+
await dir.getFileHandle('test', { create: true });
|
|
425
365
|
throw new Error('Not this error');
|
|
426
366
|
}
|
|
427
367
|
catch (error) {
|
|
@@ -429,7 +369,7 @@ const setup = (json = {}) => {
|
|
|
429
369
|
expect(error.name).toBe('NotAllowedError');
|
|
430
370
|
expect(error.message).toBe('The request is not allowed by the user agent or the platform in the current context.');
|
|
431
371
|
}
|
|
432
|
-
})
|
|
372
|
+
});
|
|
433
373
|
const invalidNames = [
|
|
434
374
|
'',
|
|
435
375
|
'.',
|
|
@@ -449,41 +389,41 @@ const setup = (json = {}) => {
|
|
|
449
389
|
'a\\.',
|
|
450
390
|
];
|
|
451
391
|
for (const invalidName of invalidNames) {
|
|
452
|
-
test(`throws on invalid file name: "${invalidName}"`, () =>
|
|
392
|
+
test(`throws on invalid file name: "${invalidName}"`, async () => {
|
|
453
393
|
const { dir } = setup({ file: 'contents' });
|
|
454
394
|
try {
|
|
455
|
-
|
|
395
|
+
await dir.getFileHandle(invalidName);
|
|
456
396
|
throw new Error('Not this error.');
|
|
457
397
|
}
|
|
458
398
|
catch (error) {
|
|
459
399
|
expect(error).toBeInstanceOf(TypeError);
|
|
460
400
|
expect(error.message).toBe(`Failed to execute 'getFileHandle' on 'FileSystemDirectoryHandle': Name is not allowed.`);
|
|
461
401
|
}
|
|
462
|
-
})
|
|
402
|
+
});
|
|
463
403
|
}
|
|
464
|
-
test('can retrieve a child file', () =>
|
|
404
|
+
test('can retrieve a child file', async () => {
|
|
465
405
|
const { dir } = setup({ file: 'contents', subdir: null });
|
|
466
|
-
const subdir =
|
|
406
|
+
const subdir = await dir.getFileHandle('file');
|
|
467
407
|
expect(subdir.kind).toBe('file');
|
|
468
408
|
expect(subdir.name).toBe('file');
|
|
469
409
|
expect(subdir).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
470
|
-
})
|
|
471
|
-
test('can create a file', () =>
|
|
410
|
+
});
|
|
411
|
+
test('can create a file', async () => {
|
|
472
412
|
const { dir, fs } = setup({});
|
|
473
413
|
expect(fs.existsSync('/text.txt')).toBe(false);
|
|
474
|
-
const subdir =
|
|
414
|
+
const subdir = await dir.getFileHandle('text.txt', { create: true });
|
|
475
415
|
expect(fs.existsSync('/text.txt')).toBe(true);
|
|
476
416
|
expect(fs.statSync('/text.txt').isFile()).toBe(true);
|
|
477
417
|
expect(subdir.kind).toBe('file');
|
|
478
418
|
expect(subdir.name).toBe('text.txt');
|
|
479
419
|
expect(subdir).toBeInstanceOf(NodeFileSystemFileHandle_1.NodeFileSystemFileHandle);
|
|
480
|
-
})
|
|
420
|
+
});
|
|
481
421
|
});
|
|
482
422
|
describe('.removeEntry()', () => {
|
|
483
|
-
test('throws "NotFoundError" DOMException if file not found', () =>
|
|
423
|
+
test('throws "NotFoundError" DOMException if file not found', async () => {
|
|
484
424
|
const { dir } = setup({ a: null });
|
|
485
425
|
try {
|
|
486
|
-
|
|
426
|
+
await dir.removeEntry('b');
|
|
487
427
|
throw new Error('Not this error.');
|
|
488
428
|
}
|
|
489
429
|
catch (error) {
|
|
@@ -491,12 +431,12 @@ const setup = (json = {}) => {
|
|
|
491
431
|
expect(error.name).toBe('NotFoundError');
|
|
492
432
|
expect(error.message).toBe('A requested file or directory could not be found at the time an operation was processed.');
|
|
493
433
|
}
|
|
494
|
-
})
|
|
495
|
-
test('throws if not in "readwrite" mode and attempting to remove a file', () =>
|
|
496
|
-
const fs = (0, __1.memfs)({ a: 'b' }, '/');
|
|
434
|
+
});
|
|
435
|
+
test('throws if not in "readwrite" mode and attempting to remove a file', async () => {
|
|
436
|
+
const { fs } = (0, __1.memfs)({ a: 'b' }, '/');
|
|
497
437
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'read' });
|
|
498
438
|
try {
|
|
499
|
-
|
|
439
|
+
await dir.removeEntry('a');
|
|
500
440
|
throw new Error('Not this error');
|
|
501
441
|
}
|
|
502
442
|
catch (error) {
|
|
@@ -504,12 +444,12 @@ const setup = (json = {}) => {
|
|
|
504
444
|
expect(error.name).toBe('NotAllowedError');
|
|
505
445
|
expect(error.message).toBe('The request is not allowed by the user agent or the platform in the current context.');
|
|
506
446
|
}
|
|
507
|
-
})
|
|
508
|
-
test('throws if not in "readwrite" mode and attempting to remove a folder', () =>
|
|
509
|
-
const fs = (0, __1.memfs)({ a: null }, '/');
|
|
447
|
+
});
|
|
448
|
+
test('throws if not in "readwrite" mode and attempting to remove a folder', async () => {
|
|
449
|
+
const { fs } = (0, __1.memfs)({ a: null }, '/');
|
|
510
450
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'read' });
|
|
511
451
|
try {
|
|
512
|
-
|
|
452
|
+
await dir.removeEntry('a');
|
|
513
453
|
throw new Error('Not this error');
|
|
514
454
|
}
|
|
515
455
|
catch (error) {
|
|
@@ -517,7 +457,7 @@ const setup = (json = {}) => {
|
|
|
517
457
|
expect(error.name).toBe('NotAllowedError');
|
|
518
458
|
expect(error.message).toBe('The request is not allowed by the user agent or the platform in the current context.');
|
|
519
459
|
}
|
|
520
|
-
})
|
|
460
|
+
});
|
|
521
461
|
const invalidNames = [
|
|
522
462
|
'',
|
|
523
463
|
'.',
|
|
@@ -537,40 +477,40 @@ const setup = (json = {}) => {
|
|
|
537
477
|
'a\\.',
|
|
538
478
|
];
|
|
539
479
|
for (const invalidName of invalidNames) {
|
|
540
|
-
test(`throws on invalid file name: "${invalidName}"`, () =>
|
|
480
|
+
test(`throws on invalid file name: "${invalidName}"`, async () => {
|
|
541
481
|
const { dir } = setup({ file: 'contents' });
|
|
542
482
|
try {
|
|
543
|
-
|
|
483
|
+
await dir.removeEntry(invalidName);
|
|
544
484
|
throw new Error('Not this error.');
|
|
545
485
|
}
|
|
546
486
|
catch (error) {
|
|
547
487
|
expect(error).toBeInstanceOf(TypeError);
|
|
548
488
|
expect(error.message).toBe(`Failed to execute 'removeEntry' on 'FileSystemDirectoryHandle': Name is not allowed.`);
|
|
549
489
|
}
|
|
550
|
-
})
|
|
490
|
+
});
|
|
551
491
|
}
|
|
552
|
-
test('can delete a file', () =>
|
|
492
|
+
test('can delete a file', async () => {
|
|
553
493
|
const { dir, fs } = setup({ file: 'contents', subdir: null });
|
|
554
494
|
expect(fs.statSync('/file').isFile()).toBe(true);
|
|
555
|
-
const res =
|
|
495
|
+
const res = await dir.removeEntry('file');
|
|
556
496
|
expect(fs.existsSync('/file')).toBe(false);
|
|
557
497
|
expect(res).toBe(undefined);
|
|
558
|
-
})
|
|
559
|
-
test('can delete a folder', () =>
|
|
498
|
+
});
|
|
499
|
+
test('can delete a folder', async () => {
|
|
560
500
|
const { dir, fs } = setup({ dir: null });
|
|
561
501
|
expect(fs.statSync('/dir').isDirectory()).toBe(true);
|
|
562
|
-
const res =
|
|
502
|
+
const res = await dir.removeEntry('dir');
|
|
563
503
|
expect(fs.existsSync('/dir')).toBe(false);
|
|
564
504
|
expect(res).toBe(undefined);
|
|
565
|
-
})
|
|
566
|
-
test('throws "InvalidModificationError" DOMException if directory has contents', () =>
|
|
505
|
+
});
|
|
506
|
+
test('throws "InvalidModificationError" DOMException if directory has contents', async () => {
|
|
567
507
|
const { dir, fs } = setup({
|
|
568
508
|
'dir/file': 'contents',
|
|
569
509
|
});
|
|
570
510
|
expect(fs.statSync('/dir').isDirectory()).toBe(true);
|
|
571
511
|
let res;
|
|
572
512
|
try {
|
|
573
|
-
res =
|
|
513
|
+
res = await dir.removeEntry('dir');
|
|
574
514
|
throw new Error('Not this error.');
|
|
575
515
|
}
|
|
576
516
|
catch (error) {
|
|
@@ -579,49 +519,50 @@ const setup = (json = {}) => {
|
|
|
579
519
|
expect(error.name).toBe('InvalidModificationError');
|
|
580
520
|
expect(error.message).toBe('The object can not be modified in this way.');
|
|
581
521
|
}
|
|
582
|
-
})
|
|
583
|
-
test('can recursively delete a folder with "recursive" flag', () =>
|
|
522
|
+
});
|
|
523
|
+
test('can recursively delete a folder with "recursive" flag', async () => {
|
|
584
524
|
const { dir, fs } = setup({
|
|
585
525
|
'dir/file': 'contents',
|
|
586
526
|
});
|
|
587
527
|
expect(fs.statSync('/dir').isDirectory()).toBe(true);
|
|
588
|
-
const res =
|
|
528
|
+
const res = await dir.removeEntry('dir', { recursive: true });
|
|
589
529
|
expect(fs.existsSync('/dir')).toBe(false);
|
|
590
530
|
expect(res).toBe(undefined);
|
|
591
|
-
})
|
|
531
|
+
});
|
|
592
532
|
});
|
|
593
533
|
describe('.resolve()', () => {
|
|
594
|
-
test('return empty array for itself', () =>
|
|
534
|
+
test('return empty array for itself', async () => {
|
|
595
535
|
const { dir } = setup({});
|
|
596
|
-
const res =
|
|
536
|
+
const res = await dir.resolve(dir);
|
|
597
537
|
expect(res).toStrictEqual([]);
|
|
598
|
-
})
|
|
599
|
-
test('can resolve one level deep child', () =>
|
|
538
|
+
});
|
|
539
|
+
test('can resolve one level deep child', async () => {
|
|
600
540
|
const { dir } = setup({
|
|
601
541
|
file: 'contents',
|
|
602
542
|
});
|
|
603
|
-
const child =
|
|
604
|
-
const res =
|
|
543
|
+
const child = await dir.getFileHandle('file');
|
|
544
|
+
const res = await dir.resolve(child);
|
|
605
545
|
expect(res).toStrictEqual(['file']);
|
|
606
|
-
})
|
|
607
|
-
test('can resolve two level deep child', () =>
|
|
546
|
+
});
|
|
547
|
+
test('can resolve two level deep child', async () => {
|
|
608
548
|
const { dir } = setup({
|
|
609
549
|
'dir/file': 'contents',
|
|
610
550
|
});
|
|
611
|
-
const child1 =
|
|
612
|
-
const child2 =
|
|
613
|
-
const res =
|
|
551
|
+
const child1 = await dir.getDirectoryHandle('dir');
|
|
552
|
+
const child2 = await child1.getFileHandle('file');
|
|
553
|
+
const res = await dir.resolve(child2);
|
|
614
554
|
expect(res).toStrictEqual(['dir', 'file']);
|
|
615
|
-
const res2 =
|
|
555
|
+
const res2 = await child1.resolve(child2);
|
|
616
556
|
expect(res2).toStrictEqual(['file']);
|
|
617
|
-
})
|
|
618
|
-
test('returns "null" if not a descendant', () =>
|
|
557
|
+
});
|
|
558
|
+
test('returns "null" if not a descendant', async () => {
|
|
619
559
|
const { dir } = setup({
|
|
620
560
|
'dir/file': 'contents',
|
|
621
561
|
});
|
|
622
|
-
const child1 =
|
|
623
|
-
const res =
|
|
562
|
+
const child1 = await dir.getDirectoryHandle('dir');
|
|
563
|
+
const res = await child1.resolve(dir);
|
|
624
564
|
expect(res).toBe(null);
|
|
625
|
-
})
|
|
565
|
+
});
|
|
626
566
|
});
|
|
627
567
|
});
|
|
568
|
+
//# sourceMappingURL=NodeFileSystemDirectoryHandle.test.js.map
|