memfs 4.7.5 → 4.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/lib/node-to-fsa/util.js +1 -1
  2. package/lib/node-to-fsa/util.js.map +1 -1
  3. package/package.json +2 -2
  4. package/lib/__tests__/util.d.ts +0 -13
  5. package/lib/__tests__/util.js +0 -30
  6. package/lib/__tests__/util.js.map +0 -1
  7. package/lib/crud/__tests__/matryoshka.test.d.ts +0 -1
  8. package/lib/crud/__tests__/matryoshka.test.js +0 -69
  9. package/lib/crud/__tests__/matryoshka.test.js.map +0 -1
  10. package/lib/crud/__tests__/testCrudfs.d.ts +0 -6
  11. package/lib/crud/__tests__/testCrudfs.js +0 -278
  12. package/lib/crud/__tests__/testCrudfs.js.map +0 -1
  13. package/lib/crud-to-cas/__tests__/CrudCas.test.d.ts +0 -1
  14. package/lib/crud-to-cas/__tests__/CrudCas.test.js +0 -38
  15. package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +0 -1
  16. package/lib/crud-to-cas/__tests__/testCasfs.d.ts +0 -9
  17. package/lib/crud-to-cas/__tests__/testCasfs.js +0 -108
  18. package/lib/crud-to-cas/__tests__/testCasfs.js.map +0 -1
  19. package/lib/fsa-to-crud/__tests__/FsaCrud.test.d.ts +0 -1
  20. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +0 -17
  21. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +0 -1
  22. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.d.ts +0 -1
  23. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +0 -892
  24. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +0 -1
  25. package/lib/fsa-to-node/__tests__/util.test.d.ts +0 -1
  26. package/lib/fsa-to-node/__tests__/util.test.js +0 -32
  27. package/lib/fsa-to-node/__tests__/util.test.js.map +0 -1
  28. package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +0 -1
  29. package/lib/node-to-crud/__tests__/FsaCrud.test.js +0 -18
  30. package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +0 -1
  31. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.d.ts +0 -1
  32. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +0 -568
  33. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +0 -1
  34. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.d.ts +0 -1
  35. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +0 -183
  36. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +0 -1
  37. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.d.ts +0 -1
  38. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +0 -41
  39. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +0 -1
  40. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.d.ts +0 -1
  41. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +0 -175
  42. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +0 -1
  43. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.d.ts +0 -1
  44. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +0 -98
  45. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +0 -1
  46. package/lib/node-to-fsa/__tests__/scenarios.test.d.ts +0 -1
  47. package/lib/node-to-fsa/__tests__/scenarios.test.js +0 -38
  48. package/lib/node-to-fsa/__tests__/scenarios.test.js.map +0 -1
  49. package/lib/node-to-fsa/__tests__/util.test.d.ts +0 -1
  50. package/lib/node-to-fsa/__tests__/util.test.js +0 -30
  51. package/lib/node-to-fsa/__tests__/util.test.js.map +0 -1
  52. package/lib/print/__tests__/index.test.d.ts +0 -1
  53. package/lib/print/__tests__/index.test.js +0 -77
  54. package/lib/print/__tests__/index.test.js.map +0 -1
  55. package/lib/snapshot/__tests__/async.test.d.ts +0 -1
  56. package/lib/snapshot/__tests__/async.test.js +0 -63
  57. package/lib/snapshot/__tests__/async.test.js.map +0 -1
  58. package/lib/snapshot/__tests__/binary.test.d.ts +0 -1
  59. package/lib/snapshot/__tests__/binary.test.js +0 -59
  60. package/lib/snapshot/__tests__/binary.test.js.map +0 -1
  61. package/lib/snapshot/__tests__/json.test.d.ts +0 -1
  62. package/lib/snapshot/__tests__/json.test.js +0 -68
  63. package/lib/snapshot/__tests__/json.test.js.map +0 -1
  64. package/lib/snapshot/__tests__/sync.test.d.ts +0 -1
  65. package/lib/snapshot/__tests__/sync.test.js +0 -63
  66. package/lib/snapshot/__tests__/sync.test.js.map +0 -1
@@ -15,7 +15,7 @@ const basename = (path, separator) => {
15
15
  return lastSlashIndex === -1 ? path : path.slice(lastSlashIndex + 1);
16
16
  };
17
17
  exports.basename = basename;
18
- const nameRegex = /^(\.{1,2})|(.*(\/|\\).*)$/;
18
+ const nameRegex = /^(\.{1,2})$|^(.*([\/\\]).*)$/;
19
19
  const assertName = (name, method, klass) => {
20
20
  const isInvalid = !name || nameRegex.test(name);
21
21
  if (isInvalid)
@@ -1 +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"}
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,8BAA8B,CAAC;AAE1C,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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memfs",
3
- "version": "4.7.5",
3
+ "version": "4.7.7",
4
4
  "description": "In-memory file-system with Node's fs API.",
5
5
  "keywords": [
6
6
  "fs",
@@ -50,7 +50,7 @@
50
50
  "demo/runkit.js"
51
51
  ],
52
52
  "scripts": {
53
- "build": "tsc -p .",
53
+ "build": "tsc -p . && rimraf --glob lib/__tests__ 'lib/**/__tests__'",
54
54
  "build:webfs": "NODE_ENV=production webpack --config ./src/webfs/webpack.config.js",
55
55
  "clean": "rimraf lib types",
56
56
  "demo:crud-and-cas": "webpack serve --config ./demo/crud-and-cas/webpack.config.js",
@@ -1,13 +0,0 @@
1
- /// <reference types="jest" />
2
- import { Link, Node } from '../node';
3
- export declare const create: (json?: {
4
- [s: string]: string;
5
- }) => import("../volume").Volume;
6
- export declare const createFs: (json?: any) => import("..").IFs;
7
- export declare const tryGetChild: (link: Link, name: string) => Link;
8
- export declare const tryGetChildNode: (link: Link, name: string) => Node;
9
- /**
10
- * The `File` global is available only starting in Node v20. Hence we run the
11
- * tests only in those versions.
12
- */
13
- export declare const onlyOnNode20: jest.Describe;
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.onlyOnNode20 = exports.tryGetChildNode = exports.tryGetChild = exports.createFs = exports.create = void 0;
4
- const __1 = require("..");
5
- const create = (json = { '/foo': 'bar' }) => {
6
- const vol = __1.Volume.fromJSON(json);
7
- return vol;
8
- };
9
- exports.create = create;
10
- const createFs = (json) => {
11
- return (0, __1.createFsFromVolume)((0, exports.create)(json));
12
- };
13
- exports.createFs = createFs;
14
- const tryGetChild = (link, name) => {
15
- const child = link.getChild(name);
16
- if (!child) {
17
- throw new Error(`expected link to have a child named "${name}"`);
18
- }
19
- return child;
20
- };
21
- exports.tryGetChild = tryGetChild;
22
- const tryGetChildNode = (link, name) => (0, exports.tryGetChild)(link, name).getNode();
23
- exports.tryGetChildNode = tryGetChildNode;
24
- const nodeMajorVersion = +process.version.split('.')[0].slice(1);
25
- /**
26
- * The `File` global is available only starting in Node v20. Hence we run the
27
- * tests only in those versions.
28
- */
29
- exports.onlyOnNode20 = nodeMajorVersion >= 20 ? describe : describe.skip;
30
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/__tests__/util.ts"],"names":[],"mappings":";;;AAAA,0BAAgD;AAGzC,MAAM,MAAM,GAAG,CAAC,OAAgC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC1E,MAAM,GAAG,GAAG,UAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB;AAEK,MAAM,QAAQ,GAAG,CAAC,IAAK,EAAE,EAAE;IAChC,OAAO,IAAA,sBAAkB,EAAC,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEK,MAAM,WAAW,GAAG,CAAC,IAAU,EAAE,IAAY,EAAQ,EAAE;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEK,MAAM,eAAe,GAAG,CAAC,IAAU,EAAE,IAAY,EAAQ,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AAAxF,QAAA,eAAe,mBAAyE;AAErG,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEjE;;;GAGG;AACU,QAAA,YAAY,GAAG,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("../..");
4
- const util_1 = require("../../__tests__/util");
5
- const node_to_fsa_1 = require("../../node-to-fsa");
6
- const fsa_to_node_1 = require("../../fsa-to-node");
7
- const node_to_crud_1 = require("../../node-to-crud");
8
- const testCrudfs_1 = require("../../crud/__tests__/testCrudfs");
9
- const fsa_to_crud_1 = require("../../fsa-to-crud");
10
- (0, util_1.onlyOnNode20)('CRUD matryoshka', () => {
11
- describe('crud(memfs)', () => {
12
- (0, testCrudfs_1.testCrudfs)(() => {
13
- const { fs } = (0, __1.memfs)();
14
- const crud = new node_to_crud_1.NodeCrud({ fs: fs.promises, dir: '/' });
15
- return { crud, snapshot: () => fs.__vol.toJSON() };
16
- });
17
- });
18
- describe('crud(fsa(memfs))', () => {
19
- (0, testCrudfs_1.testCrudfs)(() => {
20
- const { fs } = (0, __1.memfs)();
21
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
22
- const crud = new fsa_to_crud_1.FsaCrud(fsa);
23
- return { crud, snapshot: () => fs.__vol.toJSON() };
24
- });
25
- });
26
- describe('crud(fs(fsa(memfs)))', () => {
27
- (0, testCrudfs_1.testCrudfs)(() => {
28
- const { fs } = (0, __1.memfs)();
29
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
30
- const fs2 = new fsa_to_node_1.FsaNodeFs(fsa);
31
- const crud = new node_to_crud_1.NodeCrud({ fs: fs2.promises, dir: '/' });
32
- return { crud, snapshot: () => fs.__vol.toJSON() };
33
- });
34
- });
35
- describe('crud(fsa(fs(fsa(memfs))))', () => {
36
- (0, testCrudfs_1.testCrudfs)(() => {
37
- const { fs } = (0, __1.memfs)();
38
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
39
- const fs2 = new fsa_to_node_1.FsaNodeFs(fsa);
40
- const fsa2 = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs2, '/', { mode: 'readwrite' });
41
- const crud = new fsa_to_crud_1.FsaCrud(fsa2);
42
- return { crud, snapshot: () => fs.__vol.toJSON() };
43
- });
44
- });
45
- describe('crud(fs(fsa(fs(fsa(memfs)))))', () => {
46
- (0, testCrudfs_1.testCrudfs)(() => {
47
- const { fs } = (0, __1.memfs)();
48
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
49
- const fs2 = new fsa_to_node_1.FsaNodeFs(fsa);
50
- const fsa2 = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs2, '/', { mode: 'readwrite' });
51
- const fs3 = new fsa_to_node_1.FsaNodeFs(fsa2);
52
- const crud = new node_to_crud_1.NodeCrud({ fs: fs3.promises, dir: '/' });
53
- return { crud, snapshot: () => fs.__vol.toJSON() };
54
- });
55
- });
56
- describe('crud(fsa(fs(fsa(fs(fsa(memfs))))))', () => {
57
- (0, testCrudfs_1.testCrudfs)(() => {
58
- const { fs } = (0, __1.memfs)();
59
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
60
- const fs2 = new fsa_to_node_1.FsaNodeFs(fsa);
61
- const fsa2 = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs2, '/', { mode: 'readwrite' });
62
- const fs3 = new fsa_to_node_1.FsaNodeFs(fsa2);
63
- const fsa3 = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs3, '/', { mode: 'readwrite' });
64
- const crud = new fsa_to_crud_1.FsaCrud(fsa3);
65
- return { crud, snapshot: () => fs.__vol.toJSON() };
66
- });
67
- });
68
- });
69
- //# sourceMappingURL=matryoshka.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"matryoshka.test.js","sourceRoot":"","sources":["../../../src/crud/__tests__/matryoshka.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- import type { CrudApi } from '../types';
2
- export type Setup = () => {
3
- crud: CrudApi;
4
- snapshot: () => Record<string, string | null>;
5
- };
6
- export declare const testCrudfs: (setup: Setup) => void;
@@ -1,278 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testCrudfs = void 0;
4
- const thingies_1 = require("../../thingies");
5
- const b = (str) => {
6
- const buf = Buffer.from(str);
7
- return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
8
- };
9
- const testCrudfs = (setup) => {
10
- describe('.put()', () => {
11
- test('throws if the type is not valid', async () => {
12
- const { crud } = setup();
13
- const [, err] = await (0, thingies_1.of)(crud.put(['.', 'foo'], 'bar', new Uint8Array()));
14
- expect(err).toBeInstanceOf(TypeError);
15
- expect(err.message).toBe("Failed to execute 'put' on 'crudfs': Name is not allowed.");
16
- });
17
- test('throws if id is not valid', async () => {
18
- const { crud } = setup();
19
- const [, err] = await (0, thingies_1.of)(crud.put(['foo'], '..', new Uint8Array()));
20
- expect(err).toBeInstanceOf(TypeError);
21
- expect(err.message).toBe("Failed to execute 'put' on 'crudfs': Name is not allowed.");
22
- });
23
- test('can store a resource at root', async () => {
24
- const { crud, snapshot } = setup();
25
- await crud.put([], 'bar', b('abc'));
26
- expect(snapshot()).toStrictEqual({
27
- '/bar': 'abc',
28
- });
29
- });
30
- test('can store a resource in two levels deep collection', async () => {
31
- const { crud, snapshot } = setup();
32
- await crud.put(['a', 'b'], 'bar', b('abc'));
33
- expect(snapshot()).toStrictEqual({
34
- '/a/b/bar': 'abc',
35
- });
36
- });
37
- test('can overwrite existing resource', async () => {
38
- const { crud, snapshot } = setup();
39
- await crud.put(['a', 'b'], 'bar', b('abc'));
40
- await crud.put(['a', 'b'], 'bar', b('efg'));
41
- expect(snapshot()).toStrictEqual({
42
- '/a/b/bar': 'efg',
43
- });
44
- });
45
- test('can choose to throw if item already exists', async () => {
46
- const { crud } = setup();
47
- await crud.put(['a', 'b'], 'bar', b('abc'), { throwIf: 'exists' });
48
- const [, err] = await (0, thingies_1.of)(crud.put(['a', 'b'], 'bar', b('efg'), { throwIf: 'exists' }));
49
- expect(err).toBeInstanceOf(DOMException);
50
- expect(err.name).toBe('Exists');
51
- });
52
- test('can choose to throw if item does not exist', async () => {
53
- const { crud, snapshot } = setup();
54
- const [, err] = await (0, thingies_1.of)(crud.put(['a', 'b'], 'bar', b('1'), { throwIf: 'missing' }));
55
- await crud.put(['a', 'b'], 'bar', b('2'));
56
- await crud.put(['a', 'b'], 'bar', b('3'), { throwIf: 'missing' });
57
- expect(err).toBeInstanceOf(DOMException);
58
- expect(err.name).toBe('Missing');
59
- expect(snapshot()).toStrictEqual({
60
- '/a/b/bar': '3',
61
- });
62
- });
63
- });
64
- describe('.get()', () => {
65
- test('throws if the type is not valid', async () => {
66
- const { crud } = setup();
67
- const [, err] = await (0, thingies_1.of)(crud.get(['', 'foo'], 'bar'));
68
- expect(err).toBeInstanceOf(TypeError);
69
- expect(err.message).toBe("Failed to execute 'get' on 'crudfs': Name is not allowed.");
70
- });
71
- test('throws if id is not valid', async () => {
72
- const { crud } = setup();
73
- const [, err] = await (0, thingies_1.of)(crud.get(['foo'], ''));
74
- expect(err).toBeInstanceOf(TypeError);
75
- expect(err.message).toBe("Failed to execute 'get' on 'crudfs': Name is not allowed.");
76
- });
77
- test('throws if collection does not exist', async () => {
78
- const { crud } = setup();
79
- const [, err] = await (0, thingies_1.of)(crud.get(['foo'], 'bar'));
80
- expect(err).toBeInstanceOf(DOMException);
81
- expect(err.name).toBe('CollectionNotFound');
82
- });
83
- test('throws if resource does not exist', async () => {
84
- const { crud } = setup();
85
- await crud.put(['foo'], 'bar', b('abc'));
86
- const [, err] = await (0, thingies_1.of)(crud.get(['foo'], 'baz'));
87
- expect(err).toBeInstanceOf(DOMException);
88
- expect(err.name).toBe('ResourceNotFound');
89
- });
90
- test('can fetch an existing resource', async () => {
91
- const { crud } = setup();
92
- await crud.put(['foo'], 'bar', b('abc'));
93
- const blob = await crud.get(['foo'], 'bar');
94
- expect(blob).toStrictEqual(b('abc'));
95
- });
96
- });
97
- describe('.del()', () => {
98
- test('throws if the type is not valid', async () => {
99
- const { crud } = setup();
100
- const [, err] = await (0, thingies_1.of)(crud.del(['sdf\\dd', 'foo'], 'bar'));
101
- expect(err).toBeInstanceOf(TypeError);
102
- expect(err.message).toBe("Failed to execute 'del' on 'crudfs': Name is not allowed.");
103
- });
104
- test('throws if id is not valid', async () => {
105
- const { crud } = setup();
106
- const [, err] = await (0, thingies_1.of)(crud.del(['foo'], 'asdf/asdf'));
107
- expect(err).toBeInstanceOf(TypeError);
108
- expect(err.message).toBe("Failed to execute 'del' on 'crudfs': Name is not allowed.");
109
- });
110
- describe('when collection does not exist', () => {
111
- test('throws by default', async () => {
112
- const { crud } = setup();
113
- const [, err] = await (0, thingies_1.of)(crud.del(['foo'], 'bar'));
114
- expect(err).toBeInstanceOf(DOMException);
115
- expect(err.name).toBe('CollectionNotFound');
116
- });
117
- test('does not throw when "silent" flag set', async () => {
118
- const { crud } = setup();
119
- await crud.del(['foo'], 'bar', true);
120
- });
121
- });
122
- describe('when collection is found but resource is not', () => {
123
- test('throws by default', async () => {
124
- const { crud } = setup();
125
- await crud.put(['foo'], 'bar', b('abc'));
126
- const [, err] = await (0, thingies_1.of)(crud.del(['foo'], 'baz'));
127
- expect(err).toBeInstanceOf(DOMException);
128
- expect(err.name).toBe('ResourceNotFound');
129
- });
130
- test('does not throw when "silent" flag set', async () => {
131
- const { crud } = setup();
132
- await crud.put(['foo'], 'bar', b('abc'));
133
- await crud.del(['foo'], 'baz', true);
134
- });
135
- });
136
- test('deletes an existing resource', async () => {
137
- const { crud } = setup();
138
- await crud.put(['foo'], 'bar', b('abc'));
139
- await crud.get(['foo'], 'bar');
140
- await crud.del(['foo'], 'bar');
141
- const [, err] = await (0, thingies_1.of)(crud.get(['foo'], 'bar'));
142
- expect(err).toBeInstanceOf(DOMException);
143
- expect(err.name).toBe('ResourceNotFound');
144
- });
145
- });
146
- describe('.info()', () => {
147
- test('throws if the type is not valid', async () => {
148
- const { crud } = setup();
149
- const [, err] = await (0, thingies_1.of)(crud.info(['', 'foo'], 'bar'));
150
- expect(err).toBeInstanceOf(TypeError);
151
- expect(err.message).toBe("Failed to execute 'info' on 'crudfs': Name is not allowed.");
152
- });
153
- test('throws if id is not valid', async () => {
154
- const { crud } = setup();
155
- const [, err] = await (0, thingies_1.of)(crud.info(['foo'], '/'));
156
- expect(err).toBeInstanceOf(TypeError);
157
- expect(err.message).toBe("Failed to execute 'info' on 'crudfs': Name is not allowed.");
158
- });
159
- test('can retrieve information about a resource', async () => {
160
- const { crud } = setup();
161
- await crud.put(['foo'], 'bar', b('abc'));
162
- const info = await crud.info(['foo'], 'bar');
163
- expect(info).toMatchObject({
164
- type: 'resource',
165
- id: 'bar',
166
- size: 3,
167
- modified: expect.any(Number),
168
- });
169
- });
170
- test('can retrieve information about a collection', async () => {
171
- const { crud } = setup();
172
- await crud.put(['foo'], 'bar', b('abc'));
173
- const info = await crud.info(['foo']);
174
- expect(info).toMatchObject({
175
- type: 'collection',
176
- });
177
- });
178
- test('throws when resource not found', async () => {
179
- const { crud } = setup();
180
- await crud.put(['foo'], 'bar', b('abc'));
181
- const [, err] = await (0, thingies_1.of)(crud.info(['foo'], 'baz'));
182
- expect(err).toBeInstanceOf(DOMException);
183
- expect(err.name).toBe('ResourceNotFound');
184
- });
185
- test('throws when collection not found', async () => {
186
- const { crud } = setup();
187
- await crud.put(['foo', 'a'], 'bar', b('abc'));
188
- const [, err] = await (0, thingies_1.of)(crud.info(['foo', 'b'], 'baz'));
189
- expect(err).toBeInstanceOf(DOMException);
190
- expect(err.name).toBe('CollectionNotFound');
191
- });
192
- });
193
- describe('.drop()', () => {
194
- test('throws if the collection is not valid', async () => {
195
- const { crud } = setup();
196
- const [, err] = await (0, thingies_1.of)(crud.drop(['', 'foo']));
197
- expect(err).toBeInstanceOf(TypeError);
198
- expect(err.message).toBe("Failed to execute 'drop' on 'crudfs': Name is not allowed.");
199
- });
200
- test('can recursively delete a collection', async () => {
201
- const { crud } = setup();
202
- await crud.put(['foo', 'a'], 'bar', b('1'));
203
- await crud.put(['foo', 'a'], 'baz', b('2'));
204
- await crud.put(['foo', 'b'], 'xyz', b('3'));
205
- const info = await crud.info(['foo', 'a']);
206
- expect(info.type).toBe('collection');
207
- await crud.drop(['foo', 'a']);
208
- const [, err] = await (0, thingies_1.of)(crud.info(['foo', 'a']));
209
- expect(err).toBeInstanceOf(DOMException);
210
- expect(err.name).toBe('CollectionNotFound');
211
- });
212
- test('throws if collection does not exist', async () => {
213
- const { crud } = setup();
214
- await crud.put(['foo', 'a'], 'bar', b('1'));
215
- await crud.put(['foo', 'a'], 'baz', b('2'));
216
- await crud.put(['foo', 'b'], 'xyz', b('3'));
217
- const [, err] = await (0, thingies_1.of)(crud.drop(['gg']));
218
- expect(err).toBeInstanceOf(DOMException);
219
- expect(err.name).toBe('CollectionNotFound');
220
- });
221
- test('when "silent" flag set, does not throw if collection does not exist', async () => {
222
- const { crud } = setup();
223
- await crud.put(['foo', 'a'], 'bar', b('1'));
224
- await crud.put(['foo', 'a'], 'baz', b('2'));
225
- await crud.put(['foo', 'b'], 'xyz', b('3'));
226
- await crud.drop(['gg'], true);
227
- });
228
- test('can recursively delete everything from root', async () => {
229
- const { crud, snapshot } = setup();
230
- await crud.put(['foo', 'a'], 'bar', b('1'));
231
- await crud.put(['baz', 'a'], 'baz', b('2'));
232
- await crud.put(['bar', 'b'], 'xyz', b('3'));
233
- const info = await crud.info(['foo', 'a']);
234
- expect(info.type).toBe('collection');
235
- await crud.drop([]);
236
- expect(snapshot()).toEqual({});
237
- });
238
- });
239
- describe('.list()', () => {
240
- test('throws if the collection is not valid', async () => {
241
- const { crud } = setup();
242
- const [, err] = await (0, thingies_1.of)(crud.list(['./..', 'foo']));
243
- expect(err).toBeInstanceOf(TypeError);
244
- expect(err.message).toBe("Failed to execute 'drop' on 'crudfs': Name is not allowed.");
245
- });
246
- test('can retrieve a list of resources and collections at root', async () => {
247
- const { crud } = setup();
248
- await crud.put(['foo'], 'bar', b('1'));
249
- await crud.put([], 'baz', b('1'));
250
- await crud.put([], 'qux', b('2'));
251
- const list = await crud.list([]);
252
- expect(list.length).toBe(3);
253
- expect(list.find(x => x.id === 'baz')).toMatchObject({
254
- type: 'resource',
255
- id: 'baz',
256
- });
257
- expect(list.find(x => x.id === 'qux')).toMatchObject({
258
- type: 'resource',
259
- id: 'qux',
260
- });
261
- expect(list.find(x => x.id === 'foo')).toMatchObject({
262
- type: 'collection',
263
- id: 'foo',
264
- });
265
- });
266
- test('throws when try to list a non-existing collection', async () => {
267
- const { crud } = setup();
268
- await crud.put(['foo'], 'bar', b('1'));
269
- await crud.put([], 'baz', b('1'));
270
- await crud.put([], 'qux', b('2'));
271
- const [, err] = await (0, thingies_1.of)(crud.list(['gg']));
272
- expect(err).toBeInstanceOf(DOMException);
273
- expect(err.name).toBe('CollectionNotFound');
274
- });
275
- });
276
- };
277
- exports.testCrudfs = testCrudfs;
278
- //# sourceMappingURL=testCrudfs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testCrudfs.js","sourceRoot":"","sources":["../../../src/crud/__tests__/testCrudfs.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("../..");
4
- const util_1 = require("../../__tests__/util");
5
- const node_to_fsa_1 = require("../../node-to-fsa");
6
- const FsaCrud_1 = require("../../fsa-to-crud/FsaCrud");
7
- const CrudCas_1 = require("../CrudCas");
8
- const testCasfs_1 = require("./testCasfs");
9
- const NodeCrud_1 = require("../../node-to-crud/NodeCrud");
10
- (0, util_1.onlyOnNode20)('CrudCas on FsaCrud', () => {
11
- const setup = () => {
12
- const { fs } = (0, __1.memfs)();
13
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
14
- const crud = new FsaCrud_1.FsaCrud(fsa);
15
- const cas = new CrudCas_1.CrudCas(crud, { hash: testCasfs_1.hash });
16
- return { fs, fsa, crud, cas, snapshot: () => fs.__vol.toJSON() };
17
- };
18
- (0, testCasfs_1.testCasfs)(setup);
19
- });
20
- (0, util_1.onlyOnNode20)('CrudCas on NodeCrud at root', () => {
21
- const setup = () => {
22
- const { fs } = (0, __1.memfs)();
23
- const crud = new NodeCrud_1.NodeCrud({ fs: fs.promises, dir: '/' });
24
- const cas = new CrudCas_1.CrudCas(crud, { hash: testCasfs_1.hash });
25
- return { fs, crud, cas, snapshot: () => fs.__vol.toJSON() };
26
- };
27
- (0, testCasfs_1.testCasfs)(setup);
28
- });
29
- (0, util_1.onlyOnNode20)('CrudCas on NodeCrud at in sub-folder', () => {
30
- const setup = () => {
31
- const { fs } = (0, __1.memfs)({ '/a/b/c': null });
32
- const crud = new NodeCrud_1.NodeCrud({ fs: fs.promises, dir: '/a/b/c' });
33
- const cas = new CrudCas_1.CrudCas(crud, { hash: testCasfs_1.hash });
34
- return { fs, crud, cas, snapshot: () => fs.__vol.toJSON() };
35
- };
36
- (0, testCasfs_1.testCasfs)(setup);
37
- });
38
- //# sourceMappingURL=CrudCas.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudCas.test.js","sourceRoot":"","sources":["../../../src/crud-to-cas/__tests__/CrudCas.test.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAC9B,+CAAoD;AACpD,mDAAkE;AAClE,uDAAoD;AACpD,wCAAqC;AACrC,2CAA8C;AAC9C,0DAAuD;AAEvD,IAAA,mBAAY,EAAC,oBAAoB,EAAE,GAAG,EAAE;IACtC,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,SAAK,GAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,2CAA6B,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,IAAI,iBAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAJ,gBAAI,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAO,EAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1E,CAAC,CAAC;IACF,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAY,EAAC,6BAA6B,EAAE,GAAG,EAAE;IAC/C,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,SAAK,GAAE,CAAC;QACvB,MAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAJ,gBAAI,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAO,EAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IACrE,CAAC,CAAC;IACF,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,IAAA,mBAAY,EAAC,sCAAsC,EAAE,GAAG,EAAE;IACxD,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,SAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,EAAE,EAAE,IAAI,EAAJ,gBAAI,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAO,EAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;IACrE,CAAC,CAAC;IACF,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { CasApi } from '../../cas/types';
2
- import type { CrudApi } from '../../crud/types';
3
- export declare const hash: (blob: Uint8Array) => Promise<string>;
4
- export type Setup = () => {
5
- cas: CasApi;
6
- crud: CrudApi;
7
- snapshot: () => Record<string, string | null>;
8
- };
9
- export declare const testCasfs: (setup: Setup) => void;