memfs 4.1.0-next.2 → 4.1.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/README.md +5 -4
  2. package/demo/runkit.js +5 -0
  3. package/lib/Dirent.js +1 -0
  4. package/lib/Dirent.js.map +1 -0
  5. package/lib/Stats.js +2 -2
  6. package/lib/Stats.js.map +1 -0
  7. package/lib/__tests__/util.js +1 -0
  8. package/lib/__tests__/util.js.map +1 -0
  9. package/lib/cas/types.js +1 -0
  10. package/lib/cas/types.js.map +1 -0
  11. package/lib/constants.js +1 -0
  12. package/lib/constants.js.map +1 -0
  13. package/lib/consts/AMODE.js +1 -0
  14. package/lib/consts/AMODE.js.map +1 -0
  15. package/lib/consts/FLAG.d.ts +6 -0
  16. package/lib/consts/FLAG.js +1 -0
  17. package/lib/consts/FLAG.js.map +1 -0
  18. package/lib/crud/__tests__/matryoshka.test.d.ts +1 -0
  19. package/lib/crud/__tests__/matryoshka.test.js +69 -0
  20. package/lib/crud/__tests__/matryoshka.test.js.map +1 -0
  21. package/lib/crud/__tests__/testCrudfs.d.ts +6 -0
  22. package/lib/crud/__tests__/testCrudfs.js +279 -0
  23. package/lib/crud/__tests__/testCrudfs.js.map +1 -0
  24. package/lib/crud/types.d.ts +7 -0
  25. package/lib/crud/types.js +1 -0
  26. package/lib/crud/types.js.map +1 -0
  27. package/lib/crud/util.d.ts +2 -0
  28. package/lib/crud/util.js +11 -0
  29. package/lib/crud/util.js.map +1 -0
  30. package/lib/crud-to-cas/CrudCas.js +10 -17
  31. package/lib/crud-to-cas/CrudCas.js.map +1 -0
  32. package/lib/crud-to-cas/__tests__/CrudCas.test.js +29 -116
  33. package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +1 -0
  34. package/lib/crud-to-cas/__tests__/testCasfs.d.ts +9 -0
  35. package/lib/crud-to-cas/__tests__/testCasfs.js +109 -0
  36. package/lib/crud-to-cas/__tests__/testCasfs.js.map +1 -0
  37. package/lib/crud-to-cas/index.d.ts +1 -0
  38. package/lib/crud-to-cas/index.js +6 -0
  39. package/lib/crud-to-cas/index.js.map +1 -0
  40. package/lib/crud-to-cas/util.js +1 -0
  41. package/lib/crud-to-cas/util.js.map +1 -0
  42. package/lib/encoding.js +1 -0
  43. package/lib/encoding.js.map +1 -0
  44. package/lib/fsa/types.js +1 -0
  45. package/lib/fsa/types.js.map +1 -0
  46. package/lib/fsa-to-crud/FsaCrud.d.ts +1 -0
  47. package/lib/fsa-to-crud/FsaCrud.js +36 -54
  48. package/lib/fsa-to-crud/FsaCrud.js.map +1 -0
  49. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +3 -280
  50. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  51. package/lib/fsa-to-crud/index.d.ts +1 -0
  52. package/lib/fsa-to-crud/index.js +6 -0
  53. package/lib/fsa-to-crud/index.js.map +1 -0
  54. package/lib/fsa-to-crud/util.d.ts +5 -2
  55. package/lib/fsa-to-crud/util.js +10 -8
  56. package/lib/fsa-to-crud/util.js.map +1 -0
  57. package/lib/fsa-to-node/FsaNodeCore.d.ts +3 -2
  58. package/lib/fsa-to-node/FsaNodeCore.js +61 -22
  59. package/lib/fsa-to-node/FsaNodeCore.js.map +1 -0
  60. package/lib/fsa-to-node/FsaNodeDirent.js +1 -0
  61. package/lib/fsa-to-node/FsaNodeDirent.js.map +1 -0
  62. package/lib/fsa-to-node/FsaNodeFs.d.ts +14 -2
  63. package/lib/fsa-to-node/FsaNodeFs.js +97 -82
  64. package/lib/fsa-to-node/FsaNodeFs.js.map +1 -0
  65. package/lib/fsa-to-node/FsaNodeFsOpenFile.js +4 -11
  66. package/lib/fsa-to-node/FsaNodeFsOpenFile.js.map +1 -0
  67. package/lib/fsa-to-node/FsaNodeReadStream.js +4 -11
  68. package/lib/fsa-to-node/FsaNodeReadStream.js.map +1 -0
  69. package/lib/fsa-to-node/FsaNodeStats.js +1 -0
  70. package/lib/fsa-to-node/FsaNodeStats.js.map +1 -0
  71. package/lib/fsa-to-node/FsaNodeWriteStream.js +7 -14
  72. package/lib/fsa-to-node/FsaNodeWriteStream.js.map +1 -0
  73. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +107 -93
  74. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +1 -0
  75. package/lib/fsa-to-node/__tests__/util.test.js +4 -0
  76. package/lib/fsa-to-node/__tests__/util.test.js.map +1 -0
  77. package/lib/fsa-to-node/constants.js +1 -0
  78. package/lib/fsa-to-node/constants.js.map +1 -0
  79. package/lib/fsa-to-node/index.js +1 -0
  80. package/lib/fsa-to-node/index.js.map +1 -0
  81. package/lib/fsa-to-node/json.js +1 -0
  82. package/lib/fsa-to-node/json.js.map +1 -0
  83. package/lib/fsa-to-node/types.js +1 -0
  84. package/lib/fsa-to-node/types.js.map +1 -0
  85. package/lib/fsa-to-node/util.js +5 -10
  86. package/lib/fsa-to-node/util.js.map +1 -0
  87. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js +3 -10
  88. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js.map +1 -0
  89. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js +23 -30
  90. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js.map +1 -0
  91. package/lib/fsa-to-node/worker/SyncMessenger.js +3 -10
  92. package/lib/fsa-to-node/worker/SyncMessenger.js.map +1 -0
  93. package/lib/fsa-to-node/worker/constants.js +1 -0
  94. package/lib/fsa-to-node/worker/constants.js.map +1 -0
  95. package/lib/fsa-to-node/worker/types.js +1 -0
  96. package/lib/fsa-to-node/worker/types.js.map +1 -0
  97. package/lib/index.js +5 -3
  98. package/lib/index.js.map +1 -0
  99. package/lib/internal/buffer.js +1 -0
  100. package/lib/internal/buffer.js.map +1 -0
  101. package/lib/internal/errors.js +1 -0
  102. package/lib/internal/errors.js.map +1 -0
  103. package/lib/node/FileHandle.js +1 -0
  104. package/lib/node/FileHandle.js.map +1 -0
  105. package/lib/node/FsPromises.d.ts +86 -0
  106. package/lib/node/FsPromises.js +54 -0
  107. package/lib/node/FsPromises.js.map +1 -0
  108. package/lib/node/constants.js +2 -1
  109. package/lib/node/constants.js.map +1 -0
  110. package/lib/node/lists/fsCallbackApiList.d.ts +2 -0
  111. package/lib/node/lists/fsCallbackApiList.js +47 -0
  112. package/lib/node/lists/fsCallbackApiList.js.map +1 -0
  113. package/lib/node/lists/fsCommonObjectsList.d.ts +2 -0
  114. package/lib/node/lists/fsCommonObjectsList.js +19 -0
  115. package/lib/node/lists/fsCommonObjectsList.js.map +1 -0
  116. package/lib/node/lists/fsSynchronousApiList.d.ts +2 -0
  117. package/lib/node/lists/fsSynchronousApiList.js +46 -0
  118. package/lib/node/lists/fsSynchronousApiList.js.map +1 -0
  119. package/lib/node/options.js +1 -0
  120. package/lib/node/options.js.map +1 -0
  121. package/lib/node/types/{callback.d.ts → FsCallbackApi.d.ts} +49 -40
  122. package/lib/node/types/{callback.js → FsCallbackApi.js} +1 -0
  123. package/lib/node/types/FsCallbackApi.js.map +1 -0
  124. package/lib/node/types/FsCommonObjects.d.ts +4 -4
  125. package/lib/node/types/FsCommonObjects.js +1 -0
  126. package/lib/node/types/FsCommonObjects.js.map +1 -0
  127. package/lib/node/types/{promises.d.ts → FsPromisesApi.d.ts} +11 -0
  128. package/lib/node/types/{promises.js → FsPromisesApi.js} +1 -0
  129. package/lib/node/types/FsPromisesApi.js.map +1 -0
  130. package/lib/node/types/FsSynchronousApi.d.ts +64 -58
  131. package/lib/node/types/FsSynchronousApi.js +1 -0
  132. package/lib/node/types/FsSynchronousApi.js.map +1 -0
  133. package/lib/node/types/index.d.ts +2 -2
  134. package/lib/node/types/index.js +1 -0
  135. package/lib/node/types/index.js.map +1 -0
  136. package/lib/node/types/misc.d.ts +20 -0
  137. package/lib/node/types/misc.js +1 -0
  138. package/lib/node/types/misc.js.map +1 -0
  139. package/lib/node/types/options.d.ts +62 -0
  140. package/lib/node/types/options.js +1 -0
  141. package/lib/node/types/options.js.map +1 -0
  142. package/lib/node/util.d.ts +2 -1
  143. package/lib/node/util.js +30 -1
  144. package/lib/node/util.js.map +1 -0
  145. package/lib/node-to-crud/NodeCrud.d.ts +22 -0
  146. package/lib/node-to-crud/NodeCrud.js +235 -0
  147. package/lib/node-to-crud/NodeCrud.js.map +1 -0
  148. package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
  149. package/lib/node-to-crud/__tests__/FsaCrud.test.js +18 -0
  150. package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  151. package/lib/node-to-crud/index.d.ts +1 -0
  152. package/lib/node-to-crud/index.js +6 -0
  153. package/lib/node-to-crud/index.js.map +1 -0
  154. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.d.ts +3 -2
  155. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js +24 -55
  156. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js.map +1 -0
  157. package/lib/node-to-fsa/NodeFileSystemFileHandle.js +5 -12
  158. package/lib/node-to-fsa/NodeFileSystemFileHandle.js.map +1 -0
  159. package/lib/node-to-fsa/NodeFileSystemHandle.js +3 -10
  160. package/lib/node-to-fsa/NodeFileSystemHandle.js.map +1 -0
  161. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js +8 -15
  162. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js.map +1 -0
  163. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js +11 -18
  164. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js.map +1 -0
  165. package/lib/node-to-fsa/NodePermissionStatus.js +1 -0
  166. package/lib/node-to-fsa/NodePermissionStatus.js.map +1 -0
  167. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +75 -134
  168. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
  169. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +16 -23
  170. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
  171. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +5 -12
  172. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
  173. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +15 -22
  174. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
  175. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +8 -15
  176. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
  177. package/lib/node-to-fsa/__tests__/scenarios.test.js +3 -10
  178. package/lib/node-to-fsa/__tests__/scenarios.test.js.map +1 -0
  179. package/lib/node-to-fsa/__tests__/util.test.js +5 -0
  180. package/lib/node-to-fsa/__tests__/util.test.js.map +1 -0
  181. package/lib/node-to-fsa/index.js +6 -18
  182. package/lib/node-to-fsa/index.js.map +1 -0
  183. package/lib/node-to-fsa/types.d.ts +5 -2
  184. package/lib/node-to-fsa/types.js +1 -0
  185. package/lib/node-to-fsa/types.js.map +1 -0
  186. package/lib/node-to-fsa/util.js +3 -0
  187. package/lib/node-to-fsa/util.js.map +1 -0
  188. package/lib/node.js +1 -0
  189. package/lib/node.js.map +1 -0
  190. package/lib/process.js +1 -0
  191. package/lib/process.js.map +1 -0
  192. package/lib/setImmediate.js +1 -0
  193. package/lib/setImmediate.js.map +1 -0
  194. package/lib/setTimeoutUnref.js +1 -0
  195. package/lib/setTimeoutUnref.js.map +1 -0
  196. package/lib/volume-localstorage.js +1 -0
  197. package/lib/volume-localstorage.js.map +1 -0
  198. package/lib/volume.d.ts +15 -7
  199. package/lib/volume.js +20 -16
  200. package/lib/volume.js.map +1 -0
  201. package/lib/webfs/index.js +1 -0
  202. package/lib/webfs/index.js.map +1 -0
  203. package/package.json +60 -26
  204. package/lib/getBigInt.js +0 -5
  205. package/lib/node/promises.d.ts +0 -2
  206. package/lib/node/promises.js +0 -86
@@ -1,17 +1,9 @@
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
  exports.CrudCas = void 0;
4
+ const tslib_1 = require("tslib");
13
5
  const util_1 = require("./util");
14
- const normalizeErrors = (code) => __awaiter(void 0, void 0, void 0, function* () {
6
+ const normalizeErrors = (code) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
7
  try {
16
8
  return yield code();
17
9
  }
@@ -30,15 +22,15 @@ class CrudCas {
30
22
  constructor(crud, options) {
31
23
  this.crud = crud;
32
24
  this.options = options;
33
- this.put = (blob) => __awaiter(this, void 0, void 0, function* () {
25
+ this.put = (blob) => tslib_1.__awaiter(this, void 0, void 0, function* () {
34
26
  const digest = yield this.options.hash(blob);
35
27
  const [collection, resource] = (0, util_1.hashToLocation)(digest);
36
28
  yield this.crud.put(collection, resource, blob);
37
29
  return digest;
38
30
  });
39
- this.get = (hash, options) => __awaiter(this, void 0, void 0, function* () {
31
+ this.get = (hash, options) => tslib_1.__awaiter(this, void 0, void 0, function* () {
40
32
  const [collection, resource] = (0, util_1.hashToLocation)(hash);
41
- return yield normalizeErrors(() => __awaiter(this, void 0, void 0, function* () {
33
+ return yield normalizeErrors(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
42
34
  const blob = yield this.crud.get(collection, resource);
43
35
  if (!(options === null || options === void 0 ? void 0 : options.skipVerification)) {
44
36
  const digest = yield this.options.hash(blob);
@@ -48,18 +40,19 @@ class CrudCas {
48
40
  return blob;
49
41
  }));
50
42
  });
51
- this.del = (hash, silent) => __awaiter(this, void 0, void 0, function* () {
43
+ this.del = (hash, silent) => tslib_1.__awaiter(this, void 0, void 0, function* () {
52
44
  const [collection, resource] = (0, util_1.hashToLocation)(hash);
53
- yield normalizeErrors(() => __awaiter(this, void 0, void 0, function* () {
45
+ yield normalizeErrors(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
54
46
  return yield this.crud.del(collection, resource, silent);
55
47
  }));
56
48
  });
57
- this.info = (hash) => __awaiter(this, void 0, void 0, function* () {
49
+ this.info = (hash) => tslib_1.__awaiter(this, void 0, void 0, function* () {
58
50
  const [collection, resource] = (0, util_1.hashToLocation)(hash);
59
- return yield normalizeErrors(() => __awaiter(this, void 0, void 0, function* () {
51
+ return yield normalizeErrors(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
60
52
  return yield this.crud.info(collection, resource);
61
53
  }));
62
54
  });
63
55
  }
64
56
  }
65
57
  exports.CrudCas = CrudCas;
58
+ //# sourceMappingURL=CrudCas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CrudCas.js","sourceRoot":"","sources":["../../src/crud-to-cas/CrudCas.ts"],"names":[],"mappings":";;;;AAAA,iCAAwC;AAQxC,MAAM,eAAe,GAAG,CAAU,IAAsB,EAAc,EAAE;IACtE,IAAI;QACF,OAAO,MAAM,IAAI,EAAE,CAAC;KACrB;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACtC,QAAQ,KAAK,CAAC,IAAI,EAAE;gBAClB,KAAK,kBAAkB,CAAC;gBACxB,KAAK,oBAAoB;oBACvB,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;aACzD;SACF;QACD,MAAM,KAAK,CAAC;KACb;AACH,CAAC,CAAA,CAAC;AAEF,MAAa,OAAO;IAClB,YAA+B,IAAa,EAAqB,OAAuB;QAAzD,SAAI,GAAJ,IAAI,CAAS;QAAqB,YAAO,GAAP,OAAO,CAAgB;QAExE,QAAG,GAAG,CAAO,IAAgB,EAAmB,EAAE;YAChE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAA,qBAAc,EAAC,MAAM,CAAC,CAAC;YACtD,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAA,CAAC;QAEc,QAAG,GAAG,CAAO,IAAY,EAAE,OAAuB,EAAuB,EAAE;YACzF,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;YACpD,OAAO,MAAM,eAAe,CAAC,GAAS,EAAE;gBACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACvD,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,gBAAgB,CAAA,EAAE;oBAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7C,IAAI,IAAI,KAAK,MAAM;wBAAE,MAAM,IAAI,YAAY,CAAC,mCAAmC,EAAE,WAAW,CAAC,CAAC;iBAC/F;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAA,CAAC,CAAC;QACL,CAAC,CAAA,CAAC;QAEc,QAAG,GAAG,CAAO,IAAY,EAAE,MAAgB,EAAiB,EAAE;YAC5E,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;YACpD,MAAM,eAAe,CAAC,GAAS,EAAE;gBAC/B,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC3D,CAAC,CAAA,CAAC,CAAC;QACL,CAAC,CAAA,CAAC;QAEc,SAAI,GAAG,CAAO,IAAY,EAA6B,EAAE;YACvE,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,GAAG,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;YACpD,OAAO,MAAM,eAAe,CAAC,GAAS,EAAE;gBACtC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACpD,CAAC,CAAA,CAAC,CAAC;QACL,CAAC,CAAA,CAAC;IAjCyF,CAAC;CAkC7F;AAnCD,0BAmCC"}
@@ -1,125 +1,38 @@
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
- const thingies_1 = require("thingies");
13
- const crypto_1 = require("crypto");
14
3
  const __1 = require("../..");
15
4
  const util_1 = require("../../__tests__/util");
16
5
  const node_to_fsa_1 = require("../../node-to-fsa");
17
6
  const FsaCrud_1 = require("../../fsa-to-crud/FsaCrud");
18
7
  const CrudCas_1 = require("../CrudCas");
19
- const util_2 = require("../util");
20
- const hash = (blob) => __awaiter(void 0, void 0, void 0, function* () {
21
- const shasum = (0, crypto_1.createHash)('sha1');
22
- shasum.update(blob);
23
- return shasum.digest('hex');
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);
24
19
  });
25
- const setup = () => {
26
- const fs = (0, __1.memfs)();
27
- const fsa = new node_to_fsa_1.NodeFileSystemDirectoryHandle(fs, '/', { mode: 'readwrite' });
28
- const crud = new FsaCrud_1.FsaCrud(fsa);
29
- const cas = new CrudCas_1.CrudCas(crud, { hash });
30
- return { fs, fsa, crud, cas, snapshot: () => fs.__vol.toJSON() };
31
- };
32
- const b = (str) => {
33
- const buf = Buffer.from(str);
34
- return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
35
- };
36
- (0, util_1.onlyOnNode20)('CrudCas', () => {
37
- describe('.put()', () => {
38
- test('can store a blob', () => __awaiter(void 0, void 0, void 0, function* () {
39
- const blob = b('hello world');
40
- const { cas, snapshot } = setup();
41
- const hash = yield cas.put(blob);
42
- expect(hash).toBe('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed');
43
- expect(snapshot()).toMatchSnapshot();
44
- }));
45
- });
46
- describe('.get()', () => {
47
- test('can retrieve existing blob', () => __awaiter(void 0, void 0, void 0, function* () {
48
- const blob = b('hello world');
49
- const { cas } = setup();
50
- const hash = yield cas.put(blob);
51
- const blob2 = yield cas.get(hash);
52
- expect(blob2).toStrictEqual(blob);
53
- }));
54
- test('throws if blob does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
55
- const blob = b('hello world 2');
56
- const { cas } = setup();
57
- const hash = yield cas.put(blob);
58
- const [, err] = yield (0, thingies_1.of)(cas.get('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
59
- expect(err).toBeInstanceOf(DOMException);
60
- expect(err.name).toBe('BlobNotFound');
61
- }));
62
- test('throws if blob contents does not match the hash', () => __awaiter(void 0, void 0, void 0, function* () {
63
- const blob = b('hello world');
64
- const { cas, crud } = setup();
65
- const hash = yield cas.put(blob);
66
- const location = (0, util_2.hashToLocation)(hash);
67
- yield crud.put(location[0], location[1], b('hello world!'));
68
- const [, err] = yield (0, thingies_1.of)(cas.get(hash));
69
- expect(err).toBeInstanceOf(DOMException);
70
- expect(err.name).toBe('Integrity');
71
- }));
72
- test('does not throw if integrity check is skipped', () => __awaiter(void 0, void 0, void 0, function* () {
73
- const blob = b('hello world');
74
- const { cas, crud } = setup();
75
- const hash = yield cas.put(blob);
76
- const location = (0, util_2.hashToLocation)(hash);
77
- yield crud.put(location[0], location[1], b('hello world!'));
78
- const blob2 = yield cas.get(hash, { skipVerification: true });
79
- expect(blob2).toStrictEqual(b('hello world!'));
80
- }));
81
- });
82
- describe('.info()', () => {
83
- test('can retrieve existing blob info', () => __awaiter(void 0, void 0, void 0, function* () {
84
- const blob = b('hello world');
85
- const { cas } = setup();
86
- const hash = yield cas.put(blob);
87
- const info = yield cas.info(hash);
88
- expect(info.size).toBe(11);
89
- }));
90
- test('throws if blob does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
91
- const blob = b('hello world 2');
92
- const { cas } = setup();
93
- const hash = yield cas.put(blob);
94
- const [, err] = yield (0, thingies_1.of)(cas.info('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
95
- expect(err).toBeInstanceOf(DOMException);
96
- expect(err.name).toBe('BlobNotFound');
97
- }));
98
- });
99
- describe('.del()', () => {
100
- test('can delete an existing blob', () => __awaiter(void 0, void 0, void 0, function* () {
101
- const blob = b('hello world');
102
- const { cas } = setup();
103
- const hash = yield cas.put(blob);
104
- const info = yield cas.info(hash);
105
- yield cas.del(hash);
106
- const [, err] = yield (0, thingies_1.of)(cas.info(hash));
107
- expect(err).toBeInstanceOf(DOMException);
108
- expect(err.name).toBe('BlobNotFound');
109
- }));
110
- test('throws if blob does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
111
- const blob = b('hello world 2');
112
- const { cas } = setup();
113
- const hash = yield cas.put(blob);
114
- const [, err] = yield (0, thingies_1.of)(cas.del('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
115
- expect(err).toBeInstanceOf(DOMException);
116
- expect(err.name).toBe('BlobNotFound');
117
- }));
118
- test('does not throw if "silent" flag is provided', () => __awaiter(void 0, void 0, void 0, function* () {
119
- const blob = b('hello world 2');
120
- const { cas } = setup();
121
- const hash = yield cas.put(blob);
122
- yield cas.del('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed', true);
123
- }));
124
- });
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);
125
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
@@ -0,0 +1 @@
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,GAAG,IAAA,SAAK,GAAE,CAAC;QACnB,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,GAAG,IAAA,SAAK,GAAE,CAAC;QACnB,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,GAAG,IAAA,SAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,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"}
@@ -0,0 +1,9 @@
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;
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.testCasfs = exports.hash = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const thingies_1 = require("thingies");
6
+ const crypto_1 = require("crypto");
7
+ const util_1 = require("../util");
8
+ const hash = (blob) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
9
+ const shasum = (0, crypto_1.createHash)('sha1');
10
+ shasum.update(blob);
11
+ return shasum.digest('hex');
12
+ });
13
+ exports.hash = hash;
14
+ const b = (str) => {
15
+ const buf = Buffer.from(str);
16
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
17
+ };
18
+ const testCasfs = (setup) => {
19
+ describe('.put()', () => {
20
+ test('can store a blob', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
21
+ const blob = b('hello world');
22
+ const { cas, snapshot } = setup();
23
+ const hash = yield cas.put(blob);
24
+ expect(hash).toBe('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed');
25
+ expect(snapshot()).toMatchSnapshot();
26
+ }));
27
+ });
28
+ describe('.get()', () => {
29
+ test('can retrieve existing blob', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
30
+ const blob = b('hello world');
31
+ const { cas } = setup();
32
+ const hash = yield cas.put(blob);
33
+ const blob2 = yield cas.get(hash);
34
+ expect(blob2).toStrictEqual(blob);
35
+ }));
36
+ test('throws if blob does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
37
+ const blob = b('hello world 2');
38
+ const { cas } = setup();
39
+ const hash = yield cas.put(blob);
40
+ const [, err] = yield (0, thingies_1.of)(cas.get('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
41
+ expect(err).toBeInstanceOf(DOMException);
42
+ expect(err.name).toBe('BlobNotFound');
43
+ }));
44
+ test('throws if blob contents does not match the hash', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
+ const blob = b('hello world');
46
+ const { cas, crud } = setup();
47
+ const hash = yield cas.put(blob);
48
+ const location = (0, util_1.hashToLocation)(hash);
49
+ yield crud.put(location[0], location[1], b('hello world!'));
50
+ const [, err] = yield (0, thingies_1.of)(cas.get(hash));
51
+ expect(err).toBeInstanceOf(DOMException);
52
+ expect(err.name).toBe('Integrity');
53
+ }));
54
+ test('does not throw if integrity check is skipped', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
55
+ const blob = b('hello world');
56
+ const { cas, crud } = setup();
57
+ const hash = yield cas.put(blob);
58
+ const location = (0, util_1.hashToLocation)(hash);
59
+ yield crud.put(location[0], location[1], b('hello world!'));
60
+ const blob2 = yield cas.get(hash, { skipVerification: true });
61
+ expect(blob2).toStrictEqual(b('hello world!'));
62
+ }));
63
+ });
64
+ describe('.info()', () => {
65
+ test('can retrieve existing blob info', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
66
+ const blob = b('hello world');
67
+ const { cas } = setup();
68
+ const hash = yield cas.put(blob);
69
+ const info = yield cas.info(hash);
70
+ expect(info.size).toBe(11);
71
+ }));
72
+ test('throws if blob does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
73
+ const blob = b('hello world 2');
74
+ const { cas } = setup();
75
+ const hash = yield cas.put(blob);
76
+ const [, err] = yield (0, thingies_1.of)(cas.info('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
77
+ expect(err).toBeInstanceOf(DOMException);
78
+ expect(err.name).toBe('BlobNotFound');
79
+ }));
80
+ });
81
+ describe('.del()', () => {
82
+ test('can delete an existing blob', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
83
+ const blob = b('hello world');
84
+ const { cas } = setup();
85
+ const hash = yield cas.put(blob);
86
+ const info = yield cas.info(hash);
87
+ yield cas.del(hash);
88
+ const [, err] = yield (0, thingies_1.of)(cas.info(hash));
89
+ expect(err).toBeInstanceOf(DOMException);
90
+ expect(err.name).toBe('BlobNotFound');
91
+ }));
92
+ test('throws if blob does not exist', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
93
+ const blob = b('hello world 2');
94
+ const { cas } = setup();
95
+ const hash = yield cas.put(blob);
96
+ const [, err] = yield (0, thingies_1.of)(cas.del('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed'));
97
+ expect(err).toBeInstanceOf(DOMException);
98
+ expect(err.name).toBe('BlobNotFound');
99
+ }));
100
+ test('does not throw if "silent" flag is provided', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
101
+ const blob = b('hello world 2');
102
+ const { cas } = setup();
103
+ const hash = yield cas.put(blob);
104
+ yield cas.del('2aae6c35c94fcfb415dbe95f408b9ce91ee846ed', true);
105
+ }));
106
+ });
107
+ };
108
+ exports.testCasfs = testCasfs;
109
+ //# sourceMappingURL=testCasfs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testCasfs.js","sourceRoot":"","sources":["../../../src/crud-to-cas/__tests__/testCasfs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { CrudCas, CrudCasOptions } from './CrudCas';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrudCas = void 0;
4
+ var CrudCas_1 = require("./CrudCas");
5
+ Object.defineProperty(exports, "CrudCas", { enumerable: true, get: function () { return CrudCas_1.CrudCas; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crud-to-cas/index.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AAA3C,kGAAA,OAAO,OAAA"}
@@ -10,3 +10,4 @@ const hashToLocation = (hash) => {
10
10
  return [folder, hash];
11
11
  };
12
12
  exports.hashToLocation = hashToLocation;
13
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/crud-to-cas/util.ts"],"names":[],"mappings":";;;AAEO,MAAM,cAAc,GAAG,CAAC,IAAY,EAAc,EAAE;IACzD,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACxB,CAAC,CAAC;AANW,QAAA,cAAc,kBAMzB"}
package/lib/encoding.js CHANGED
@@ -17,3 +17,4 @@ function strToEncoding(str, encoding) {
17
17
  return new buffer_1.Buffer(str).toString(encoding); // Custom encoding
18
18
  }
19
19
  exports.strToEncoding = strToEncoding;
20
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":";;;AAAA,8CAA2C;AAC3C,4CAA4C;AAK/B,QAAA,aAAa,GAAmB,MAAM,CAAC;AAEpD,SAAgB,cAAc,CAAC,QAA4B;IACzD,IAAI,QAAQ,IAAI,CAAC,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,MAAM,CAAC,SAAS,CAAC,gCAAgC,EAAE,QAAQ,CAAC,CAAC;AACvH,CAAC;AAFD,wCAEC;AAED,SAAgB,aAAa,CAAC,GAAW,EAAE,QAA4B;IACrE,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,qBAAa;QAAE,OAAO,GAAG,CAAC,CAAC,QAAQ;IACjE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,IAAI,eAAM,CAAC,GAAG,CAAC,CAAC,CAAC,oBAAoB;IACvE,OAAO,IAAI,eAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB;AAC/D,CAAC;AAJD,sCAIC"}
package/lib/fsa/types.js CHANGED
@@ -1,2 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fsa/types.ts"],"names":[],"mappings":""}
@@ -11,4 +11,5 @@ export declare class FsaCrud implements crud.CrudApi {
11
11
  readonly info: (collection: crud.CrudCollection, id?: string) => Promise<crud.CrudResourceInfo>;
12
12
  readonly drop: (collection: crud.CrudCollection, silent?: boolean) => Promise<void>;
13
13
  readonly list: (collection: crud.CrudCollection) => Promise<crud.CrudCollectionEntry[]>;
14
+ readonly from: (collection: crud.CrudCollection) => Promise<crud.CrudApi>;
14
15
  }
@@ -1,28 +1,14 @@
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 });
19
3
  exports.FsaCrud = void 0;
4
+ const tslib_1 = require("tslib");
20
5
  const util_1 = require("../node-to-fsa/util");
21
- const util_2 = require("./util");
6
+ const util_2 = require("../crud/util");
7
+ const util_3 = require("./util");
22
8
  class FsaCrud {
23
9
  constructor(root) {
24
10
  this.root = root;
25
- this.put = (collection, id, data, options) => __awaiter(this, void 0, void 0, function* () {
11
+ this.put = (collection, id, data, options) => tslib_1.__awaiter(this, void 0, void 0, function* () {
26
12
  (0, util_2.assertType)(collection, 'put', 'crudfs');
27
13
  (0, util_1.assertName)(id, 'put', 'crudfs');
28
14
  const [dir] = yield this.getDir(collection, true);
@@ -31,7 +17,7 @@ class FsaCrud {
31
17
  case 'exists': {
32
18
  try {
33
19
  file = yield dir.getFileHandle(id, { create: false });
34
- throw new DOMException('Resource already exists', 'Exists');
20
+ throw (0, util_3.newExistsError)();
35
21
  }
36
22
  catch (e) {
37
23
  if (e.name !== 'NotFoundError')
@@ -46,7 +32,7 @@ class FsaCrud {
46
32
  }
47
33
  catch (e) {
48
34
  if (e.name === 'NotFoundError')
49
- throw new DOMException('Resource is missing', 'Missing');
35
+ throw (0, util_3.newMissingError)();
50
36
  throw e;
51
37
  }
52
38
  break;
@@ -59,7 +45,7 @@ class FsaCrud {
59
45
  yield writable.write(data);
60
46
  yield writable.close();
61
47
  });
62
- this.get = (collection, id) => __awaiter(this, void 0, void 0, function* () {
48
+ this.get = (collection, id) => tslib_1.__awaiter(this, void 0, void 0, function* () {
63
49
  (0, util_2.assertType)(collection, 'get', 'crudfs');
64
50
  (0, util_1.assertName)(id, 'get', 'crudfs');
65
51
  const [, file] = yield this.getFile(collection, id);
@@ -67,7 +53,7 @@ class FsaCrud {
67
53
  const buffer = yield blob.arrayBuffer();
68
54
  return new Uint8Array(buffer);
69
55
  });
70
- this.del = (collection, id, silent) => __awaiter(this, void 0, void 0, function* () {
56
+ this.del = (collection, id, silent) => tslib_1.__awaiter(this, void 0, void 0, function* () {
71
57
  (0, util_2.assertType)(collection, 'del', 'crudfs');
72
58
  (0, util_1.assertName)(id, 'del', 'crudfs');
73
59
  try {
@@ -79,7 +65,7 @@ class FsaCrud {
79
65
  throw error;
80
66
  }
81
67
  });
82
- this.info = (collection, id) => __awaiter(this, void 0, void 0, function* () {
68
+ this.info = (collection, id) => tslib_1.__awaiter(this, void 0, void 0, function* () {
83
69
  (0, util_2.assertType)(collection, 'info', 'crudfs');
84
70
  if (id) {
85
71
  (0, util_1.assertName)(id, 'info', 'crudfs');
@@ -100,7 +86,7 @@ class FsaCrud {
100
86
  };
101
87
  }
102
88
  });
103
- this.drop = (collection, silent) => __awaiter(this, void 0, void 0, function* () {
89
+ this.drop = (collection, silent) => tslib_1.__awaiter(this, void 0, void 0, function* () {
104
90
  var _a, e_1, _b, _c;
105
91
  (0, util_2.assertType)(collection, 'drop', 'crudfs');
106
92
  try {
@@ -111,16 +97,11 @@ class FsaCrud {
111
97
  else {
112
98
  const root = yield this.root;
113
99
  try {
114
- for (var _d = true, _e = __asyncValues(root.keys()), _f; _f = yield _e.next(), _a = _f.done, !_a;) {
100
+ for (var _d = true, _e = tslib_1.__asyncValues(root.keys()), _f; _f = yield _e.next(), _a = _f.done, !_a; _d = true) {
115
101
  _c = _f.value;
116
102
  _d = false;
117
- try {
118
- const name = _c;
119
- yield root.removeEntry(name, { recursive: true });
120
- }
121
- finally {
122
- _d = true;
123
- }
103
+ const name = _c;
104
+ yield root.removeEntry(name, { recursive: true });
124
105
  }
125
106
  }
126
107
  catch (e_1_1) { e_1 = { error: e_1_1 }; }
@@ -137,32 +118,27 @@ class FsaCrud {
137
118
  throw error;
138
119
  }
139
120
  });
140
- this.list = (collection) => __awaiter(this, void 0, void 0, function* () {
121
+ this.list = (collection) => tslib_1.__awaiter(this, void 0, void 0, function* () {
141
122
  var _g, e_2, _h, _j;
142
123
  (0, util_2.assertType)(collection, 'drop', 'crudfs');
143
124
  const [dir] = yield this.getDir(collection, false);
144
125
  const entries = [];
145
126
  try {
146
- for (var _k = true, _l = __asyncValues(dir.entries()), _m; _m = yield _l.next(), _g = _m.done, !_g;) {
127
+ for (var _k = true, _l = tslib_1.__asyncValues(dir.entries()), _m; _m = yield _l.next(), _g = _m.done, !_g; _k = true) {
147
128
  _j = _m.value;
148
129
  _k = false;
149
- try {
150
- const [id, handle] = _j;
151
- if (handle.kind === 'file') {
152
- entries.push({
153
- type: 'resource',
154
- id,
155
- });
156
- }
157
- else if (handle.kind === 'directory') {
158
- entries.push({
159
- type: 'collection',
160
- id,
161
- });
162
- }
130
+ const [id, handle] = _j;
131
+ if (handle.kind === 'file') {
132
+ entries.push({
133
+ type: 'resource',
134
+ id,
135
+ });
163
136
  }
164
- finally {
165
- _k = true;
137
+ else if (handle.kind === 'directory') {
138
+ entries.push({
139
+ type: 'collection',
140
+ id,
141
+ });
166
142
  }
167
143
  }
168
144
  }
@@ -175,9 +151,14 @@ class FsaCrud {
175
151
  }
176
152
  return entries;
177
153
  });
154
+ this.from = (collection) => tslib_1.__awaiter(this, void 0, void 0, function* () {
155
+ (0, util_2.assertType)(collection, 'from', 'crudfs');
156
+ const [dir] = yield this.getDir(collection, true);
157
+ return new FsaCrud(dir);
158
+ });
178
159
  }
179
160
  getDir(collection, create) {
180
- return __awaiter(this, void 0, void 0, function* () {
161
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
181
162
  let parent = undefined;
182
163
  let dir = yield this.root;
183
164
  try {
@@ -190,13 +171,13 @@ class FsaCrud {
190
171
  }
191
172
  catch (error) {
192
173
  if (error.name === 'NotFoundError')
193
- throw new DOMException(`Collection /${collection.join('/')} does not exist`, 'CollectionNotFound');
174
+ throw (0, util_3.newFolder404Error)(collection);
194
175
  throw error;
195
176
  }
196
177
  });
197
178
  }
198
179
  getFile(collection, id) {
199
- return __awaiter(this, void 0, void 0, function* () {
180
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
200
181
  const [dir] = yield this.getDir(collection, false);
201
182
  try {
202
183
  const file = yield dir.getFileHandle(id, { create: false });
@@ -204,10 +185,11 @@ class FsaCrud {
204
185
  }
205
186
  catch (error) {
206
187
  if (error.name === 'NotFoundError')
207
- throw new DOMException(`Resource "${id}" in /${collection.join('/')} not found`, 'ResourceNotFound');
188
+ throw (0, util_3.newFile404Error)(collection, id);
208
189
  throw error;
209
190
  }
210
191
  });
211
192
  }
212
193
  }
213
194
  exports.FsaCrud = FsaCrud;
195
+ //# sourceMappingURL=FsaCrud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FsaCrud.js","sourceRoot":"","sources":["../../src/fsa-to-crud/FsaCrud.ts"],"names":[],"mappings":"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"}