memfs 4.1.0 → 4.2.0
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 +25 -16
- 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 +67 -26
- package/lib/getBigInt.js +0 -5
- package/lib/node/promises.d.ts +0 -2
- package/lib/node/promises.js +0 -86
|
@@ -1,183 +1,175 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const __1 = require("../..");
|
|
13
4
|
const NodeFileSystemDirectoryHandle_1 = require("../NodeFileSystemDirectoryHandle");
|
|
14
5
|
const NodeFileSystemSyncAccessHandle_1 = require("../NodeFileSystemSyncAccessHandle");
|
|
15
6
|
const util_1 = require("../../__tests__/util");
|
|
16
7
|
const setup = (json = {}) => {
|
|
17
|
-
const fs = (0, __1.memfs)(json, '/');
|
|
8
|
+
const { fs } = (0, __1.memfs)(json, '/');
|
|
18
9
|
const dir = new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, '/', { syncHandleAllowed: true, mode: 'readwrite' });
|
|
19
10
|
return { dir, fs };
|
|
20
11
|
};
|
|
21
12
|
(0, util_1.onlyOnNode20)('NodeFileSystemSyncAccessHandle', () => {
|
|
22
13
|
describe('.close()', () => {
|
|
23
|
-
test('can close the file', () =>
|
|
14
|
+
test('can close the file', async () => {
|
|
24
15
|
const { dir } = setup({
|
|
25
16
|
'file.txt': 'Hello, world!',
|
|
26
17
|
});
|
|
27
|
-
const entry =
|
|
28
|
-
const sync =
|
|
18
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
19
|
+
const sync = await entry.createSyncAccessHandle();
|
|
29
20
|
expect(sync).toBeInstanceOf(NodeFileSystemSyncAccessHandle_1.NodeFileSystemSyncAccessHandle);
|
|
30
|
-
|
|
21
|
+
await sync.close();
|
|
31
22
|
// ...
|
|
32
|
-
})
|
|
23
|
+
});
|
|
33
24
|
});
|
|
34
25
|
describe('.flush()', () => {
|
|
35
|
-
test('can flush', () =>
|
|
26
|
+
test('can flush', async () => {
|
|
36
27
|
const { dir } = setup({
|
|
37
28
|
'file.txt': 'Hello, world!',
|
|
38
29
|
});
|
|
39
|
-
const entry =
|
|
40
|
-
const sync =
|
|
41
|
-
|
|
42
|
-
})
|
|
30
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
31
|
+
const sync = await entry.createSyncAccessHandle();
|
|
32
|
+
await sync.flush();
|
|
33
|
+
});
|
|
43
34
|
});
|
|
44
35
|
describe('.getSize()', () => {
|
|
45
|
-
test('can get file size', () =>
|
|
36
|
+
test('can get file size', async () => {
|
|
46
37
|
const { dir } = setup({
|
|
47
38
|
'file.txt': 'Hello, world!',
|
|
48
39
|
});
|
|
49
|
-
const entry =
|
|
50
|
-
const sync =
|
|
51
|
-
const size =
|
|
40
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
41
|
+
const sync = await entry.createSyncAccessHandle();
|
|
42
|
+
const size = await sync.getSize();
|
|
52
43
|
expect(size).toBe(13);
|
|
53
|
-
})
|
|
44
|
+
});
|
|
54
45
|
});
|
|
55
46
|
describe('.getSize()', () => {
|
|
56
|
-
test('can get file size', () =>
|
|
47
|
+
test('can get file size', async () => {
|
|
57
48
|
const { dir } = setup({
|
|
58
49
|
'file.txt': 'Hello, world!',
|
|
59
50
|
});
|
|
60
|
-
const entry =
|
|
61
|
-
const sync =
|
|
62
|
-
const size =
|
|
51
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
52
|
+
const sync = await entry.createSyncAccessHandle();
|
|
53
|
+
const size = await sync.getSize();
|
|
63
54
|
expect(size).toBe(13);
|
|
64
|
-
})
|
|
55
|
+
});
|
|
65
56
|
});
|
|
66
57
|
describe('.read()', () => {
|
|
67
|
-
test('can read from beginning', () =>
|
|
58
|
+
test('can read from beginning', async () => {
|
|
68
59
|
const { dir } = setup({
|
|
69
60
|
'file.txt': '0123456789',
|
|
70
61
|
});
|
|
71
|
-
const entry =
|
|
72
|
-
const sync =
|
|
62
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
63
|
+
const sync = await entry.createSyncAccessHandle();
|
|
73
64
|
const buf = new Uint8Array(5);
|
|
74
|
-
const size =
|
|
65
|
+
const size = await sync.read(buf);
|
|
75
66
|
expect(size).toBe(5);
|
|
76
67
|
expect(Buffer.from(buf).toString()).toBe('01234');
|
|
77
|
-
})
|
|
78
|
-
test('can read at offset', () =>
|
|
68
|
+
});
|
|
69
|
+
test('can read at offset', async () => {
|
|
79
70
|
const { dir } = setup({
|
|
80
71
|
'file.txt': '0123456789',
|
|
81
72
|
});
|
|
82
|
-
const entry =
|
|
83
|
-
const sync =
|
|
73
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
74
|
+
const sync = await entry.createSyncAccessHandle();
|
|
84
75
|
const buf = new Uint8Array(3);
|
|
85
|
-
const size =
|
|
76
|
+
const size = await sync.read(buf, { at: 3 });
|
|
86
77
|
expect(size).toBe(3);
|
|
87
78
|
expect(Buffer.from(buf).toString()).toBe('345');
|
|
88
|
-
})
|
|
89
|
-
test('can read into buffer larger than file', () =>
|
|
79
|
+
});
|
|
80
|
+
test('can read into buffer larger than file', async () => {
|
|
90
81
|
const { dir } = setup({
|
|
91
82
|
'file.txt': '0123456789',
|
|
92
83
|
});
|
|
93
|
-
const entry =
|
|
94
|
-
const sync =
|
|
84
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
85
|
+
const sync = await entry.createSyncAccessHandle();
|
|
95
86
|
const buf = new Uint8Array(25);
|
|
96
|
-
const size =
|
|
87
|
+
const size = await sync.read(buf);
|
|
97
88
|
expect(size).toBe(10);
|
|
98
89
|
expect(Buffer.from(buf).slice(0, 10).toString()).toBe('0123456789');
|
|
99
|
-
})
|
|
100
|
-
test('throws "InvalidStateError" DOMException if handle is closed', () =>
|
|
90
|
+
});
|
|
91
|
+
test('throws "InvalidStateError" DOMException if handle is closed', async () => {
|
|
101
92
|
const { dir } = setup({
|
|
102
93
|
'file.txt': '0123456789',
|
|
103
94
|
});
|
|
104
|
-
const entry =
|
|
105
|
-
const sync =
|
|
106
|
-
|
|
95
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
96
|
+
const sync = await entry.createSyncAccessHandle();
|
|
97
|
+
await sync.close();
|
|
107
98
|
const buf = new Uint8Array(25);
|
|
108
99
|
try {
|
|
109
|
-
const size =
|
|
100
|
+
const size = await sync.read(buf);
|
|
110
101
|
throw new Error('No error was thrown');
|
|
111
102
|
}
|
|
112
103
|
catch (error) {
|
|
113
104
|
expect(error).toBeInstanceOf(DOMException);
|
|
114
105
|
expect(error.name).toBe('InvalidStateError');
|
|
115
106
|
}
|
|
116
|
-
})
|
|
107
|
+
});
|
|
117
108
|
});
|
|
118
109
|
describe('.truncate()', () => {
|
|
119
|
-
test('can read from beginning', () =>
|
|
110
|
+
test('can read from beginning', async () => {
|
|
120
111
|
const { dir } = setup({
|
|
121
112
|
'file.txt': '0123456789',
|
|
122
113
|
});
|
|
123
|
-
const entry =
|
|
124
|
-
const sync =
|
|
125
|
-
const res =
|
|
114
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
115
|
+
const sync = await entry.createSyncAccessHandle();
|
|
116
|
+
const res = await sync.truncate(5);
|
|
126
117
|
expect(res).toBe(undefined);
|
|
127
|
-
})
|
|
118
|
+
});
|
|
128
119
|
});
|
|
129
120
|
describe('.write()', () => {
|
|
130
|
-
test('can write to the file', () =>
|
|
121
|
+
test('can write to the file', async () => {
|
|
131
122
|
const { dir, fs } = setup({
|
|
132
123
|
'file.txt': '0123456789',
|
|
133
124
|
});
|
|
134
|
-
const entry =
|
|
135
|
-
const sync =
|
|
136
|
-
const res =
|
|
125
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
126
|
+
const sync = await entry.createSyncAccessHandle();
|
|
127
|
+
const res = await sync.write(Buffer.from('Hello'));
|
|
137
128
|
expect(res).toBe(5);
|
|
138
129
|
expect(fs.readFileSync('/file.txt', 'utf8')).toBe('Hello56789');
|
|
139
|
-
})
|
|
140
|
-
test('can write at an offset', () =>
|
|
130
|
+
});
|
|
131
|
+
test('can write at an offset', async () => {
|
|
141
132
|
const { dir, fs } = setup({
|
|
142
133
|
'file.txt': '0123456789',
|
|
143
134
|
});
|
|
144
|
-
const entry =
|
|
145
|
-
const sync =
|
|
146
|
-
const res =
|
|
135
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
136
|
+
const sync = await entry.createSyncAccessHandle();
|
|
137
|
+
const res = await sync.write(Buffer.from('Hello'), { at: 7 });
|
|
147
138
|
expect(res).toBe(5);
|
|
148
139
|
expect(fs.readFileSync('/file.txt', 'utf8')).toBe('0123456Hello');
|
|
149
|
-
})
|
|
150
|
-
test('throws "InvalidStateError" DOMException if file descriptor is already closed', () =>
|
|
140
|
+
});
|
|
141
|
+
test('throws "InvalidStateError" DOMException if file descriptor is already closed', async () => {
|
|
151
142
|
const { dir, fs } = setup({
|
|
152
143
|
'file.txt': '0123456789',
|
|
153
144
|
});
|
|
154
|
-
const entry =
|
|
155
|
-
const sync =
|
|
156
|
-
|
|
157
|
-
|
|
145
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
146
|
+
const sync = await entry.createSyncAccessHandle();
|
|
147
|
+
await sync.write(Buffer.from('a'));
|
|
148
|
+
await sync.close();
|
|
158
149
|
try {
|
|
159
|
-
|
|
150
|
+
await sync.write(Buffer.from('b'));
|
|
160
151
|
throw new Error('No error was thrown');
|
|
161
152
|
}
|
|
162
153
|
catch (error) {
|
|
163
154
|
expect(error).toBeInstanceOf(DOMException);
|
|
164
155
|
expect(error.name).toBe('InvalidStateError');
|
|
165
156
|
}
|
|
166
|
-
})
|
|
157
|
+
});
|
|
167
158
|
// TODO: Need to find out what is the correct behavior here.
|
|
168
|
-
xtest('writing at offset past file size', () =>
|
|
159
|
+
xtest('writing at offset past file size', async () => {
|
|
169
160
|
const { dir, fs } = setup({
|
|
170
161
|
'file.txt': '0123456789',
|
|
171
162
|
});
|
|
172
|
-
const entry =
|
|
173
|
-
const sync =
|
|
163
|
+
const entry = await dir.getFileHandle('file.txt');
|
|
164
|
+
const sync = await entry.createSyncAccessHandle();
|
|
174
165
|
try {
|
|
175
|
-
|
|
166
|
+
await sync.write(Buffer.from('a'), { at: 100 });
|
|
176
167
|
// ?
|
|
177
168
|
}
|
|
178
169
|
catch (error) {
|
|
179
170
|
// ?
|
|
180
171
|
}
|
|
181
|
-
})
|
|
172
|
+
});
|
|
182
173
|
});
|
|
183
174
|
});
|
|
175
|
+
//# sourceMappingURL=NodeFileSystemSyncAccessHandle.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeFileSystemSyncAccessHandle.test.js","sourceRoot":"","sources":["../../../src/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,106 +1,98 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const __1 = require("../..");
|
|
13
4
|
const FileHandle_1 = require("../../node/FileHandle");
|
|
14
5
|
const NodeFileSystemWritableFileStream_1 = require("../NodeFileSystemWritableFileStream");
|
|
15
6
|
describe('createSwapFile()', () => {
|
|
16
|
-
test('can create a swap file', () =>
|
|
17
|
-
const fs = (0, __1.memfs)({
|
|
7
|
+
test('can create a swap file', async () => {
|
|
8
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
18
9
|
'/file.txt': 'Hello, world!',
|
|
19
10
|
}, '/');
|
|
20
|
-
const [handle, path] =
|
|
11
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/file.txt', false);
|
|
21
12
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
22
13
|
expect(path).toBe('/file.txt.crswap');
|
|
23
|
-
expect(
|
|
14
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
24
15
|
'/file.txt': 'Hello, world!',
|
|
25
16
|
'/file.txt.crswap': '',
|
|
26
17
|
});
|
|
27
|
-
})
|
|
28
|
-
test('can create a swap file at subfolder', () =>
|
|
29
|
-
const fs = (0, __1.memfs)({
|
|
18
|
+
});
|
|
19
|
+
test('can create a swap file at subfolder', async () => {
|
|
20
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
30
21
|
'/foo/file.txt': 'Hello, world!',
|
|
31
22
|
}, '/');
|
|
32
|
-
const [handle, path] =
|
|
23
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/foo/file.txt', false);
|
|
33
24
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
34
25
|
expect(path).toBe('/foo/file.txt.crswap');
|
|
35
|
-
expect(
|
|
26
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
36
27
|
'/foo/file.txt': 'Hello, world!',
|
|
37
28
|
'/foo/file.txt.crswap': '',
|
|
38
29
|
});
|
|
39
|
-
})
|
|
40
|
-
test('can create a swap file when the default swap file name is in use', () =>
|
|
41
|
-
const fs = (0, __1.memfs)({
|
|
30
|
+
});
|
|
31
|
+
test('can create a swap file when the default swap file name is in use', async () => {
|
|
32
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
42
33
|
'/foo/file.txt': 'Hello, world!',
|
|
43
34
|
'/foo/file.txt.crswap': 'lala',
|
|
44
35
|
}, '/');
|
|
45
|
-
const [handle, path] =
|
|
36
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/foo/file.txt', false);
|
|
46
37
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
47
38
|
expect(path).toBe('/foo/file.txt.1.crswap');
|
|
48
|
-
expect(
|
|
39
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
49
40
|
'/foo/file.txt': 'Hello, world!',
|
|
50
41
|
'/foo/file.txt.crswap': 'lala',
|
|
51
42
|
'/foo/file.txt.1.crswap': '',
|
|
52
43
|
});
|
|
53
|
-
})
|
|
54
|
-
test('can create a swap file when the first two names are already taken', () =>
|
|
55
|
-
const fs = (0, __1.memfs)({
|
|
44
|
+
});
|
|
45
|
+
test('can create a swap file when the first two names are already taken', async () => {
|
|
46
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
56
47
|
'/foo/file.txt': 'Hello, world!',
|
|
57
48
|
'/foo/file.txt.crswap': 'lala',
|
|
58
49
|
'/foo/file.txt.1.crswap': 'blah',
|
|
59
50
|
}, '/');
|
|
60
|
-
const [handle, path] =
|
|
51
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/foo/file.txt', false);
|
|
61
52
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
62
53
|
expect(path).toBe('/foo/file.txt.2.crswap');
|
|
63
|
-
expect(
|
|
54
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
64
55
|
'/foo/file.txt': 'Hello, world!',
|
|
65
56
|
'/foo/file.txt.crswap': 'lala',
|
|
66
57
|
'/foo/file.txt.1.crswap': 'blah',
|
|
67
58
|
'/foo/file.txt.2.crswap': '',
|
|
68
59
|
});
|
|
69
|
-
})
|
|
70
|
-
test('can create a swap file when the first three names are already taken', () =>
|
|
71
|
-
const fs = (0, __1.memfs)({
|
|
60
|
+
});
|
|
61
|
+
test('can create a swap file when the first three names are already taken', async () => {
|
|
62
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
72
63
|
'/foo/file.txt': 'Hello, world!',
|
|
73
64
|
'/foo/file.txt.crswap': 'lala',
|
|
74
65
|
'/foo/file.txt.1.crswap': 'blah',
|
|
75
66
|
'/foo/file.txt.2.crswap': 'brawo',
|
|
76
67
|
}, '/');
|
|
77
|
-
const [handle, path] =
|
|
68
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/foo/file.txt', false);
|
|
78
69
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
79
70
|
expect(path).toBe('/foo/file.txt.3.crswap');
|
|
80
|
-
expect(
|
|
71
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
81
72
|
'/foo/file.txt': 'Hello, world!',
|
|
82
73
|
'/foo/file.txt.crswap': 'lala',
|
|
83
74
|
'/foo/file.txt.1.crswap': 'blah',
|
|
84
75
|
'/foo/file.txt.2.crswap': 'brawo',
|
|
85
76
|
'/foo/file.txt.3.crswap': '',
|
|
86
77
|
});
|
|
87
|
-
})
|
|
88
|
-
test('can copy existing data into the swap file', () =>
|
|
89
|
-
const fs = (0, __1.memfs)({
|
|
78
|
+
});
|
|
79
|
+
test('can copy existing data into the swap file', async () => {
|
|
80
|
+
const { fs, vol } = (0, __1.memfs)({
|
|
90
81
|
'/foo/file.txt': 'Hello, world!',
|
|
91
82
|
'/foo/file.txt.crswap': 'lala',
|
|
92
83
|
'/foo/file.txt.1.crswap': 'blah',
|
|
93
84
|
'/foo/file.txt.2.crswap': 'brawo',
|
|
94
85
|
}, '/');
|
|
95
|
-
const [handle, path] =
|
|
86
|
+
const [handle, path] = await (0, NodeFileSystemWritableFileStream_1.createSwapFile)(fs, '/foo/file.txt', true);
|
|
96
87
|
expect(handle).toBeInstanceOf(FileHandle_1.FileHandle);
|
|
97
88
|
expect(path).toBe('/foo/file.txt.3.crswap');
|
|
98
|
-
expect(
|
|
89
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
99
90
|
'/foo/file.txt': 'Hello, world!',
|
|
100
91
|
'/foo/file.txt.crswap': 'lala',
|
|
101
92
|
'/foo/file.txt.1.crswap': 'blah',
|
|
102
93
|
'/foo/file.txt.2.crswap': 'brawo',
|
|
103
94
|
'/foo/file.txt.3.crswap': 'Hello, world!',
|
|
104
95
|
});
|
|
105
|
-
})
|
|
96
|
+
});
|
|
106
97
|
});
|
|
98
|
+
//# sourceMappingURL=NodeFileSystemWritableFileStream.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeFileSystemWritableFileStream.test.js","sourceRoot":"","sources":["../../../src/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,31 @@
|
|
|
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
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
const __1 = require("..");
|
|
13
4
|
const __2 = require("../..");
|
|
14
5
|
const util_1 = require("../../__tests__/util");
|
|
15
6
|
(0, util_1.onlyOnNode20)('scenarios', () => {
|
|
16
|
-
test('can init FSA from an arbitrary FS folder and execute operations', () =>
|
|
17
|
-
const fs = (0, __2.memfs)({
|
|
7
|
+
test('can init FSA from an arbitrary FS folder and execute operations', async () => {
|
|
8
|
+
const { fs, vol } = (0, __2.memfs)({
|
|
18
9
|
'/tmp': null,
|
|
19
10
|
'/etc': null,
|
|
20
11
|
'/bin': null,
|
|
21
12
|
'/Users/kasper/Documents/shopping-list.txt': 'Milk, Eggs, Bread',
|
|
22
13
|
});
|
|
23
14
|
const dir = (0, __1.nodeToFsa)(fs, '/Users/kasper/Documents', { mode: 'readwrite' });
|
|
24
|
-
const shoppingListFile =
|
|
25
|
-
const shoppingList =
|
|
26
|
-
expect(
|
|
27
|
-
const backupsDir =
|
|
28
|
-
const backupFile =
|
|
29
|
-
const writable =
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const logsFileHandle =
|
|
33
|
-
const logsWritable =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
expect(
|
|
15
|
+
const shoppingListFile = await dir.getFileHandle('shopping-list.txt');
|
|
16
|
+
const shoppingList = await shoppingListFile.getFile();
|
|
17
|
+
expect(await shoppingList.text()).toBe('Milk, Eggs, Bread');
|
|
18
|
+
const backupsDir = await dir.getDirectoryHandle('backups', { create: true });
|
|
19
|
+
const backupFile = await backupsDir.getFileHandle('shopping-list.txt', { create: true });
|
|
20
|
+
const writable = await backupFile.createWritable();
|
|
21
|
+
await writable.write(await shoppingList.arrayBuffer());
|
|
22
|
+
await writable.close();
|
|
23
|
+
const logsFileHandle = await dir.getFileHandle('logs.csv', { create: true });
|
|
24
|
+
const logsWritable = await logsFileHandle.createWritable();
|
|
25
|
+
await logsWritable.write('timestamp,level,message\n');
|
|
26
|
+
await logsWritable.write({ type: 'write', data: '2021-01-01T00:00:00Z,INFO,Hello World\n' });
|
|
27
|
+
await logsWritable.close();
|
|
28
|
+
expect(vol.toJSON()).toStrictEqual({
|
|
38
29
|
'/tmp': null,
|
|
39
30
|
'/etc': null,
|
|
40
31
|
'/bin': null,
|
|
@@ -42,5 +33,6 @@ const util_1 = require("../../__tests__/util");
|
|
|
42
33
|
'/Users/kasper/Documents/backups/shopping-list.txt': 'Milk, Eggs, Bread',
|
|
43
34
|
'/Users/kasper/Documents/logs.csv': 'timestamp,level,message\n2021-01-01T00:00:00Z,INFO,Hello World\n',
|
|
44
35
|
});
|
|
45
|
-
})
|
|
36
|
+
});
|
|
46
37
|
});
|
|
38
|
+
//# sourceMappingURL=scenarios.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenarios.test.js","sourceRoot":"","sources":["../../../src/node-to-fsa/__tests__/scenarios.test.ts"],"names":[],"mappings":";;AAAA,0BAA+B;AAC/B,6BAA8B;AAC9B,+CAAoD;AAEpD,IAAA,mBAAY,EAAC,WAAW,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,IAAA,SAAK,EAAC;YACxB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,2CAA2C,EAAE,mBAAmB;SACjE,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,aAAS,EAAC,EAAE,EAAE,yBAAyB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,CAAC;QACtD,MAAM,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACnD,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,cAAc,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,CAAC;QAC3D,MAAM,YAAY,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;QACtD,MAAM,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAC7F,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC;YACjC,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,2CAA2C,EAAE,mBAAmB;YAChE,mDAAmD,EAAE,mBAAmB;YACxE,kCAAkC,EAAE,kEAAkE;SACvG,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -8,6 +8,10 @@ describe('basename()', () => {
|
|
|
8
8
|
test('return the same string if there is no nesting', () => {
|
|
9
9
|
expect((0, util_1.basename)('scary.exe', '/')).toBe('scary.exe');
|
|
10
10
|
});
|
|
11
|
+
test('ignores slash, if it is the last char', () => {
|
|
12
|
+
expect((0, util_1.basename)('scary.exe/', '/')).toBe('scary.exe');
|
|
13
|
+
expect((0, util_1.basename)('/ab/c/scary.exe/', '/')).toBe('scary.exe');
|
|
14
|
+
});
|
|
11
15
|
test('returns last step in path', () => {
|
|
12
16
|
expect((0, util_1.basename)('/gg/wp/hf/gl.txt', '/')).toBe('gl.txt');
|
|
13
17
|
expect((0, util_1.basename)('gg/wp/hf/gl.txt', '/')).toBe('gl.txt');
|
|
@@ -23,3 +27,4 @@ describe('basename()', () => {
|
|
|
23
27
|
expect((0, util_1.basename)('//gl.txt', '/')).toBe('gl.txt');
|
|
24
28
|
});
|
|
25
29
|
});
|
|
30
|
+
//# sourceMappingURL=util.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.test.js","sourceRoot":"","sources":["../../../src/node-to-fsa/__tests__/util.test.ts"],"names":[],"mappings":";;AAAA,kCAAmC;AAEnC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,IAAA,eAAQ,EAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,IAAA,eAAQ,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,IAAA,eAAQ,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,IAAA,eAAQ,EAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,CAAC,IAAA,eAAQ,EAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,CAAC,IAAA,eAAQ,EAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,IAAA,eAAQ,EAAC,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,CAAC,IAAA,eAAQ,EAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,CAAC,IAAA,eAAQ,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,IAAA,eAAQ,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,CAAC,IAAA,eAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,IAAA,eAAQ,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,MAAM,CAAC,IAAA,eAAQ,EAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAA,eAAQ,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/lib/node-to-fsa/index.js
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
3
|
exports.nodeToFsa = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
18
5
|
const NodeFileSystemDirectoryHandle_1 = require("./NodeFileSystemDirectoryHandle");
|
|
19
|
-
__exportStar(require("./types"), exports);
|
|
20
|
-
__exportStar(require("./NodeFileSystemHandle"), exports);
|
|
21
|
-
__exportStar(require("./NodeFileSystemDirectoryHandle"), exports);
|
|
22
|
-
__exportStar(require("./NodeFileSystemFileHandle"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./types"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./NodeFileSystemHandle"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./NodeFileSystemDirectoryHandle"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./NodeFileSystemFileHandle"), exports);
|
|
23
10
|
const nodeToFsa = (fs, dirPath, ctx) => {
|
|
24
11
|
return new NodeFileSystemDirectoryHandle_1.NodeFileSystemDirectoryHandle(fs, dirPath, ctx);
|
|
25
12
|
};
|
|
26
13
|
exports.nodeToFsa = nodeToFsa;
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-to-fsa/index.ts"],"names":[],"mappings":";;;;AAAA,mFAAgF;AAGhF,kDAAwB;AACxB,iEAAuC;AACvC,0EAAgD;AAChD,qEAA2C;AAEpC,MAAM,SAAS,GAAG,CACvB,EAAa,EACb,OAAe,EACf,GAA6B,EACE,EAAE;IACjC,OAAO,IAAI,6DAA6B,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AAC7D,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FsPromisesApi, FsSynchronousApi } from '../node/types';
|
|
2
|
+
import type { FsCommonObjects } from '../node/types/FsCommonObjects';
|
|
2
3
|
/**
|
|
3
4
|
* Required Node.js `fs` module functions for File System Access API.
|
|
4
5
|
*/
|
|
5
|
-
export type NodeFsaFs = Pick<
|
|
6
|
+
export type NodeFsaFs = Pick<FsCommonObjects, 'constants'> & {
|
|
7
|
+
promises: FsPromisesApi;
|
|
8
|
+
} & Pick<FsSynchronousApi, 'openSync' | 'fsyncSync' | 'statSync' | 'closeSync' | 'readSync' | 'truncateSync' | 'writeSync'>;
|
|
6
9
|
export interface NodeFsaContext {
|
|
7
10
|
separator: '/' | '\\';
|
|
8
11
|
/** Whether synchronous file handles are allowed. */
|
package/lib/node-to-fsa/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/node-to-fsa/types.ts"],"names":[],"mappings":""}
|
package/lib/node-to-fsa/util.js
CHANGED
|
@@ -9,6 +9,8 @@ const ctx = (partial = {}) => {
|
|
|
9
9
|
};
|
|
10
10
|
exports.ctx = ctx;
|
|
11
11
|
const basename = (path, separator) => {
|
|
12
|
+
if (path[path.length - 1] === separator)
|
|
13
|
+
path = path.slice(0, -1);
|
|
12
14
|
const lastSlashIndex = path.lastIndexOf(separator);
|
|
13
15
|
return lastSlashIndex === -1 ? path : path.slice(lastSlashIndex + 1);
|
|
14
16
|
};
|
|
@@ -31,3 +33,4 @@ const newTypeMismatchError = () => new DOMException('The path supplied exists, b
|
|
|
31
33
|
exports.newTypeMismatchError = newTypeMismatchError;
|
|
32
34
|
const newNotAllowedError = () => new DOMException('Permission not granted.', 'NotAllowedError');
|
|
33
35
|
exports.newNotAllowedError = newNotAllowedError;
|
|
36
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/node-to-fsa/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACI,MAAM,GAAG,GAAG,CAAC,UAAmC,EAAE,EAAkB,EAAE;IAC3E,uBACE,SAAS,EAAE,GAAG,EACd,iBAAiB,EAAE,KAAK,EACxB,IAAI,EAAE,MAAM,IACT,OAAO,EACV;AACJ,CAAC,CAAC;AAPW,QAAA,GAAG,OAOd;AAEK,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,SAAiB,EAAE,EAAE;IAC1D,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,SAAS;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACnD,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB;AAEF,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAEvC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,KAAa,EAAE,EAAE;IACxE,MAAM,SAAS,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,MAAM,SAAS,KAAK,yBAAyB,CAAC,CAAC;AAC1G,CAAC,CAAC;AAHW,QAAA,UAAU,cAGrB;AAEK,MAAM,cAAc,GAAG,CAAC,IAA0B,EAAE,EAAE;IAC3D,IAAI,IAAI,KAAK,WAAW;QACtB,MAAM,IAAI,YAAY,CACpB,sFAAsF,EACtF,iBAAiB,CAClB,CAAC;AACN,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB;AAEK,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,IAAI,YAAY,CACd,0FAA0F,EAC1F,eAAe,CAChB,CAAC;AAJS,QAAA,gBAAgB,oBAIzB;AAEG,MAAM,oBAAoB,GAAG,GAAG,EAAE,CACvC,IAAI,YAAY,CAAC,mEAAmE,EAAE,mBAAmB,CAAC,CAAC;AADhG,QAAA,oBAAoB,wBAC4E;AAEtG,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;AAA1F,QAAA,kBAAkB,sBAAwE"}
|
package/lib/node.js
CHANGED