memfs 4.1.0 → 4.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +10 -7
  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.d.ts +10 -0
  10. package/lib/{node/types/callback.js → cas/types.js} +1 -0
  11. package/lib/cas/types.js.map +1 -0
  12. package/lib/constants.js +1 -0
  13. package/lib/constants.js.map +1 -0
  14. package/lib/consts/AMODE.js +1 -0
  15. package/lib/consts/AMODE.js.map +1 -0
  16. package/lib/consts/FLAG.d.ts +6 -0
  17. package/lib/consts/FLAG.js +1 -0
  18. package/lib/consts/FLAG.js.map +1 -0
  19. package/lib/crud/__tests__/matryoshka.test.d.ts +1 -0
  20. package/lib/crud/__tests__/matryoshka.test.js +69 -0
  21. package/lib/crud/__tests__/matryoshka.test.js.map +1 -0
  22. package/lib/crud/__tests__/testCrudfs.d.ts +6 -0
  23. package/lib/crud/__tests__/testCrudfs.js +278 -0
  24. package/lib/crud/__tests__/testCrudfs.js.map +1 -0
  25. package/lib/crud/types.d.ts +80 -0
  26. package/lib/{node/types/promises.js → crud/types.js} +1 -0
  27. package/lib/crud/types.js.map +1 -0
  28. package/lib/crud/util.d.ts +2 -0
  29. package/lib/crud/util.js +11 -0
  30. package/lib/crud/util.js.map +1 -0
  31. package/lib/crud-to-cas/CrudCas.d.ts +14 -0
  32. package/lib/crud-to-cas/CrudCas.js +57 -0
  33. package/lib/crud-to-cas/CrudCas.js.map +1 -0
  34. package/lib/crud-to-cas/__tests__/CrudCas.test.d.ts +1 -0
  35. package/lib/crud-to-cas/__tests__/CrudCas.test.js +38 -0
  36. package/lib/crud-to-cas/__tests__/CrudCas.test.js.map +1 -0
  37. package/lib/crud-to-cas/__tests__/testCasfs.d.ts +9 -0
  38. package/lib/crud-to-cas/__tests__/testCasfs.js +108 -0
  39. package/lib/crud-to-cas/__tests__/testCasfs.js.map +1 -0
  40. package/lib/crud-to-cas/index.d.ts +1 -0
  41. package/lib/crud-to-cas/index.js +6 -0
  42. package/lib/crud-to-cas/index.js.map +1 -0
  43. package/lib/crud-to-cas/util.d.ts +2 -0
  44. package/lib/crud-to-cas/util.js +13 -0
  45. package/lib/crud-to-cas/util.js.map +1 -0
  46. package/lib/encoding.js +1 -0
  47. package/lib/encoding.js.map +1 -0
  48. package/lib/fsa/types.js +1 -0
  49. package/lib/fsa/types.js.map +1 -0
  50. package/lib/fsa-to-crud/FsaCrud.d.ts +15 -0
  51. package/lib/fsa-to-crud/FsaCrud.js +191 -0
  52. package/lib/fsa-to-crud/FsaCrud.js.map +1 -0
  53. package/lib/fsa-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
  54. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js +17 -0
  55. package/lib/fsa-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  56. package/lib/fsa-to-crud/index.d.ts +1 -0
  57. package/lib/fsa-to-crud/index.js +6 -0
  58. package/lib/fsa-to-crud/index.js.map +1 -0
  59. package/lib/fsa-to-crud/util.d.ts +5 -0
  60. package/lib/fsa-to-crud/util.js +12 -0
  61. package/lib/fsa-to-crud/util.js.map +1 -0
  62. package/lib/fsa-to-node/FsaNodeCore.d.ts +3 -2
  63. package/lib/fsa-to-node/FsaNodeCore.js +109 -87
  64. package/lib/fsa-to-node/FsaNodeCore.js.map +1 -0
  65. package/lib/fsa-to-node/FsaNodeDirent.js +1 -0
  66. package/lib/fsa-to-node/FsaNodeDirent.js.map +1 -0
  67. package/lib/fsa-to-node/FsaNodeFs.d.ts +14 -2
  68. package/lib/fsa-to-node/FsaNodeFs.js +156 -143
  69. package/lib/fsa-to-node/FsaNodeFs.js.map +1 -0
  70. package/lib/fsa-to-node/FsaNodeFsOpenFile.js +13 -25
  71. package/lib/fsa-to-node/FsaNodeFsOpenFile.js.map +1 -0
  72. package/lib/fsa-to-node/FsaNodeReadStream.js +14 -24
  73. package/lib/fsa-to-node/FsaNodeReadStream.js.map +1 -0
  74. package/lib/fsa-to-node/FsaNodeStats.js +1 -0
  75. package/lib/fsa-to-node/FsaNodeStats.js.map +1 -0
  76. package/lib/fsa-to-node/FsaNodeWriteStream.js +35 -47
  77. package/lib/fsa-to-node/FsaNodeWriteStream.js.map +1 -0
  78. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js +357 -348
  79. package/lib/fsa-to-node/__tests__/FsaNodeFs.test.js.map +1 -0
  80. package/lib/fsa-to-node/__tests__/util.test.js +4 -0
  81. package/lib/fsa-to-node/__tests__/util.test.js.map +1 -0
  82. package/lib/fsa-to-node/constants.js +1 -0
  83. package/lib/fsa-to-node/constants.js.map +1 -0
  84. package/lib/fsa-to-node/index.js +1 -0
  85. package/lib/fsa-to-node/index.js.map +1 -0
  86. package/lib/fsa-to-node/json.js +1 -0
  87. package/lib/fsa-to-node/json.js.map +1 -0
  88. package/lib/fsa-to-node/types.js +1 -0
  89. package/lib/fsa-to-node/types.js.map +1 -0
  90. package/lib/fsa-to-node/util.js +7 -13
  91. package/lib/fsa-to-node/util.js.map +1 -0
  92. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js +31 -41
  93. package/lib/fsa-to-node/worker/FsaNodeSyncAdapterWorker.js.map +1 -0
  94. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js +91 -105
  95. package/lib/fsa-to-node/worker/FsaNodeSyncWorker.js.map +1 -0
  96. package/lib/fsa-to-node/worker/SyncMessenger.js +4 -12
  97. package/lib/fsa-to-node/worker/SyncMessenger.js.map +1 -0
  98. package/lib/fsa-to-node/worker/constants.js +1 -0
  99. package/lib/fsa-to-node/worker/constants.js.map +1 -0
  100. package/lib/fsa-to-node/worker/types.js +1 -0
  101. package/lib/fsa-to-node/worker/types.js.map +1 -0
  102. package/lib/index.d.ts +4 -1
  103. package/lib/index.js +8 -6
  104. package/lib/index.js.map +1 -0
  105. package/lib/internal/buffer.js +1 -0
  106. package/lib/internal/buffer.js.map +1 -0
  107. package/lib/internal/errors.js +1 -0
  108. package/lib/internal/errors.js.map +1 -0
  109. package/lib/node/FileHandle.js +1 -0
  110. package/lib/node/FileHandle.js.map +1 -0
  111. package/lib/node/FsPromises.d.ts +86 -0
  112. package/lib/node/FsPromises.js +54 -0
  113. package/lib/node/FsPromises.js.map +1 -0
  114. package/lib/node/constants.js +2 -1
  115. package/lib/node/constants.js.map +1 -0
  116. package/lib/node/lists/fsCallbackApiList.d.ts +2 -0
  117. package/lib/node/lists/fsCallbackApiList.js +47 -0
  118. package/lib/node/lists/fsCallbackApiList.js.map +1 -0
  119. package/lib/node/lists/fsCommonObjectsList.d.ts +2 -0
  120. package/lib/node/lists/fsCommonObjectsList.js +19 -0
  121. package/lib/node/lists/fsCommonObjectsList.js.map +1 -0
  122. package/lib/node/lists/fsSynchronousApiList.d.ts +2 -0
  123. package/lib/node/lists/fsSynchronousApiList.js +46 -0
  124. package/lib/node/lists/fsSynchronousApiList.js.map +1 -0
  125. package/lib/node/options.js +1 -0
  126. package/lib/node/options.js.map +1 -0
  127. package/lib/node/types/{callback.d.ts → FsCallbackApi.d.ts} +49 -40
  128. package/lib/node/types/FsCallbackApi.js +3 -0
  129. package/lib/node/types/FsCallbackApi.js.map +1 -0
  130. package/lib/node/types/FsCommonObjects.d.ts +4 -4
  131. package/lib/node/types/FsCommonObjects.js +1 -0
  132. package/lib/node/types/FsCommonObjects.js.map +1 -0
  133. package/lib/node/types/{promises.d.ts → FsPromisesApi.d.ts} +11 -0
  134. package/lib/node/types/FsPromisesApi.js +3 -0
  135. package/lib/node/types/FsPromisesApi.js.map +1 -0
  136. package/lib/node/types/FsSynchronousApi.d.ts +64 -58
  137. package/lib/node/types/FsSynchronousApi.js +1 -0
  138. package/lib/node/types/FsSynchronousApi.js.map +1 -0
  139. package/lib/node/types/index.d.ts +2 -2
  140. package/lib/node/types/index.js +1 -0
  141. package/lib/node/types/index.js.map +1 -0
  142. package/lib/node/types/misc.d.ts +20 -0
  143. package/lib/node/types/misc.js +1 -0
  144. package/lib/node/types/misc.js.map +1 -0
  145. package/lib/node/types/options.d.ts +62 -0
  146. package/lib/node/types/options.js +1 -0
  147. package/lib/node/types/options.js.map +1 -0
  148. package/lib/node/util.d.ts +2 -1
  149. package/lib/node/util.js +30 -1
  150. package/lib/node/util.js.map +1 -0
  151. package/lib/node-to-crud/NodeCrud.d.ts +22 -0
  152. package/lib/node-to-crud/NodeCrud.js +233 -0
  153. package/lib/node-to-crud/NodeCrud.js.map +1 -0
  154. package/lib/node-to-crud/__tests__/FsaCrud.test.d.ts +1 -0
  155. package/lib/node-to-crud/__tests__/FsaCrud.test.js +18 -0
  156. package/lib/node-to-crud/__tests__/FsaCrud.test.js.map +1 -0
  157. package/lib/node-to-crud/index.d.ts +1 -0
  158. package/lib/node-to-crud/index.js +6 -0
  159. package/lib/node-to-crud/index.js.map +1 -0
  160. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.d.ts +3 -2
  161. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js +112 -151
  162. package/lib/node-to-fsa/NodeFileSystemDirectoryHandle.js.map +1 -0
  163. package/lib/node-to-fsa/NodeFileSystemFileHandle.js +25 -36
  164. package/lib/node-to-fsa/NodeFileSystemFileHandle.js.map +1 -0
  165. package/lib/node-to-fsa/NodeFileSystemHandle.js +3 -13
  166. package/lib/node-to-fsa/NodeFileSystemHandle.js.map +1 -0
  167. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js +42 -62
  168. package/lib/node-to-fsa/NodeFileSystemSyncAccessHandle.js.map +1 -0
  169. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js +92 -116
  170. package/lib/node-to-fsa/NodeFileSystemWritableFileStream.js.map +1 -0
  171. package/lib/node-to-fsa/NodePermissionStatus.js +1 -0
  172. package/lib/node-to-fsa/NodePermissionStatus.js.map +1 -0
  173. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js +175 -234
  174. package/lib/node-to-fsa/__tests__/NodeFileSystemDirectoryHandle.test.js.map +1 -0
  175. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js +91 -99
  176. package/lib/node-to-fsa/__tests__/NodeFileSystemFileHandle.test.js.map +1 -0
  177. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js +10 -18
  178. package/lib/node-to-fsa/__tests__/NodeFileSystemHandle.test.js.map +1 -0
  179. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js +70 -78
  180. package/lib/node-to-fsa/__tests__/NodeFileSystemSyncAccessHandle.test.js.map +1 -0
  181. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js +31 -39
  182. package/lib/node-to-fsa/__tests__/NodeFileSystemWritableFileStream.test.js.map +1 -0
  183. package/lib/node-to-fsa/__tests__/scenarios.test.js +18 -26
  184. package/lib/node-to-fsa/__tests__/scenarios.test.js.map +1 -0
  185. package/lib/node-to-fsa/__tests__/util.test.js +5 -0
  186. package/lib/node-to-fsa/__tests__/util.test.js.map +1 -0
  187. package/lib/node-to-fsa/index.js +6 -18
  188. package/lib/node-to-fsa/index.js.map +1 -0
  189. package/lib/node-to-fsa/types.d.ts +5 -2
  190. package/lib/node-to-fsa/types.js +1 -0
  191. package/lib/node-to-fsa/types.js.map +1 -0
  192. package/lib/node-to-fsa/util.js +3 -0
  193. package/lib/node-to-fsa/util.js.map +1 -0
  194. package/lib/node.js +1 -0
  195. package/lib/node.js.map +1 -0
  196. package/lib/print/__tests__/index.test.d.ts +1 -0
  197. package/lib/print/__tests__/index.test.js +77 -0
  198. package/lib/print/__tests__/index.test.js.map +1 -0
  199. package/lib/print/index.d.ts +8 -0
  200. package/lib/print/index.js +33 -0
  201. package/lib/print/index.js.map +1 -0
  202. package/lib/process.js +1 -0
  203. package/lib/process.js.map +1 -0
  204. package/lib/setImmediate.js +1 -0
  205. package/lib/setImmediate.js.map +1 -0
  206. package/lib/setTimeoutUnref.js +1 -0
  207. package/lib/setTimeoutUnref.js.map +1 -0
  208. package/lib/snapshot/__tests__/async.test.d.ts +1 -0
  209. package/lib/snapshot/__tests__/async.test.js +63 -0
  210. package/lib/snapshot/__tests__/async.test.js.map +1 -0
  211. package/lib/snapshot/__tests__/binary.test.d.ts +1 -0
  212. package/lib/snapshot/__tests__/binary.test.js +59 -0
  213. package/lib/snapshot/__tests__/binary.test.js.map +1 -0
  214. package/lib/snapshot/__tests__/json.test.d.ts +1 -0
  215. package/lib/snapshot/__tests__/json.test.js +68 -0
  216. package/lib/snapshot/__tests__/json.test.js.map +1 -0
  217. package/lib/snapshot/__tests__/sync.test.d.ts +1 -0
  218. package/lib/snapshot/__tests__/sync.test.js +63 -0
  219. package/lib/snapshot/__tests__/sync.test.js.map +1 -0
  220. package/lib/snapshot/async.d.ts +3 -0
  221. package/lib/snapshot/async.js +59 -0
  222. package/lib/snapshot/async.js.map +1 -0
  223. package/lib/snapshot/binary.d.ts +6 -0
  224. package/lib/snapshot/binary.js +31 -0
  225. package/lib/snapshot/binary.js.map +1 -0
  226. package/lib/snapshot/constants.d.ts +5 -0
  227. package/lib/snapshot/constants.js +3 -0
  228. package/lib/snapshot/constants.js.map +1 -0
  229. package/lib/snapshot/index.d.ts +5 -0
  230. package/lib/snapshot/index.js +8 -0
  231. package/lib/snapshot/index.js.map +1 -0
  232. package/lib/snapshot/json.d.ts +10 -0
  233. package/lib/snapshot/json.js +31 -0
  234. package/lib/snapshot/json.js.map +1 -0
  235. package/lib/snapshot/shared.d.ts +2 -0
  236. package/lib/snapshot/shared.js +6 -0
  237. package/lib/snapshot/shared.js.map +1 -0
  238. package/lib/snapshot/sync.d.ts +3 -0
  239. package/lib/snapshot/sync.js +59 -0
  240. package/lib/snapshot/sync.js.map +1 -0
  241. package/lib/snapshot/types.d.ts +30 -0
  242. package/lib/snapshot/types.js +3 -0
  243. package/lib/snapshot/types.js.map +1 -0
  244. package/lib/volume-localstorage.js +1 -0
  245. package/lib/volume-localstorage.js.map +1 -0
  246. package/lib/volume.d.ts +18 -7
  247. package/lib/volume.js +27 -18
  248. package/lib/volume.js.map +1 -0
  249. package/lib/webfs/index.js +1 -0
  250. package/lib/webfs/index.js.map +1 -0
  251. package/package.json +68 -27
  252. package/lib/getBigInt.js +0 -5
  253. package/lib/node/promises.d.ts +0 -2
  254. package/lib/node/promises.js +0 -86
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeCrud = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const util_1 = require("../node-to-fsa/util");
6
+ const util_2 = require("../crud/util");
7
+ const util_3 = require("../fsa-to-crud/util");
8
+ class NodeCrud {
9
+ constructor(options) {
10
+ var _a;
11
+ this.options = options;
12
+ this.put = async (collection, id, data, options) => {
13
+ (0, util_2.assertType)(collection, 'put', 'crudfs');
14
+ (0, util_1.assertName)(id, 'put', 'crudfs');
15
+ const dir = this.dir + (collection.length ? collection.join(this.separator) + this.separator : '');
16
+ const fs = this.fs;
17
+ if (dir.length > 1)
18
+ await fs.mkdir(dir, { recursive: true });
19
+ const filename = dir + id;
20
+ switch (options === null || options === void 0 ? void 0 : options.throwIf) {
21
+ case 'exists': {
22
+ try {
23
+ await fs.writeFile(filename, data, { flag: 64 /* FLAG.O_CREAT */ | 128 /* FLAG.O_EXCL */ });
24
+ }
25
+ catch (error) {
26
+ if (error && typeof error === 'object' && error.code === 'EEXIST')
27
+ throw (0, util_3.newExistsError)();
28
+ throw error;
29
+ }
30
+ break;
31
+ }
32
+ case 'missing': {
33
+ try {
34
+ await fs.writeFile(filename, data, { flag: 2 /* FLAG.O_RDWR */ });
35
+ }
36
+ catch (error) {
37
+ if (error && typeof error === 'object' && error.code === 'ENOENT')
38
+ throw (0, util_3.newMissingError)();
39
+ throw error;
40
+ }
41
+ break;
42
+ }
43
+ default: {
44
+ await fs.writeFile(filename, data);
45
+ }
46
+ }
47
+ };
48
+ this.get = async (collection, id) => {
49
+ (0, util_2.assertType)(collection, 'get', 'crudfs');
50
+ (0, util_1.assertName)(id, 'get', 'crudfs');
51
+ const dir = await this.checkDir(collection);
52
+ const filename = dir + id;
53
+ const fs = this.fs;
54
+ try {
55
+ const buf = (await fs.readFile(filename));
56
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
57
+ }
58
+ catch (error) {
59
+ if (error && typeof error === 'object') {
60
+ switch (error.code) {
61
+ case 'ENOENT':
62
+ throw (0, util_3.newFile404Error)(collection, id);
63
+ }
64
+ }
65
+ throw error;
66
+ }
67
+ };
68
+ this.del = async (collection, id, silent) => {
69
+ (0, util_2.assertType)(collection, 'del', 'crudfs');
70
+ (0, util_1.assertName)(id, 'del', 'crudfs');
71
+ try {
72
+ const dir = await this.checkDir(collection);
73
+ const filename = dir + id;
74
+ await this.fs.unlink(filename);
75
+ }
76
+ catch (error) {
77
+ if (!!silent)
78
+ return;
79
+ if (error && typeof error === 'object') {
80
+ switch (error.code) {
81
+ case 'ENOENT':
82
+ throw (0, util_3.newFile404Error)(collection, id);
83
+ }
84
+ }
85
+ throw error;
86
+ }
87
+ };
88
+ this.info = async (collection, id) => {
89
+ (0, util_2.assertType)(collection, 'info', 'crudfs');
90
+ if (id) {
91
+ (0, util_1.assertName)(id, 'info', 'crudfs');
92
+ await this.checkDir(collection);
93
+ try {
94
+ const stats = await this.fs.stat(this.dir + collection.join(this.separator) + this.separator + id);
95
+ if (!stats.isFile())
96
+ throw (0, util_3.newFile404Error)(collection, id);
97
+ return {
98
+ type: 'resource',
99
+ id,
100
+ size: stats.size,
101
+ modified: stats.mtimeMs,
102
+ };
103
+ }
104
+ catch (error) {
105
+ if (error && typeof error === 'object') {
106
+ switch (error.code) {
107
+ case 'ENOENT':
108
+ throw (0, util_3.newFile404Error)(collection, id);
109
+ }
110
+ }
111
+ throw error;
112
+ }
113
+ }
114
+ else {
115
+ await this.checkDir(collection);
116
+ try {
117
+ const stats = await this.fs.stat(this.dir + collection.join(this.separator));
118
+ if (!stats.isDirectory())
119
+ throw (0, util_3.newFolder404Error)(collection);
120
+ return {
121
+ type: 'collection',
122
+ id: '',
123
+ };
124
+ }
125
+ catch (error) {
126
+ if (error && typeof error === 'object') {
127
+ switch (error.code) {
128
+ case 'ENOENT':
129
+ case 'ENOTDIR':
130
+ throw (0, util_3.newFolder404Error)(collection);
131
+ }
132
+ }
133
+ throw error;
134
+ }
135
+ }
136
+ };
137
+ this.drop = async (collection, silent) => {
138
+ (0, util_2.assertType)(collection, 'drop', 'crudfs');
139
+ try {
140
+ const dir = await this.checkDir(collection);
141
+ const isRoot = dir === this.dir;
142
+ if (isRoot) {
143
+ const list = (await this.fs.readdir(dir));
144
+ for (const entry of list)
145
+ await this.fs.rmdir(dir + entry, { recursive: true });
146
+ }
147
+ else {
148
+ await this.fs.rmdir(dir, { recursive: true });
149
+ }
150
+ }
151
+ catch (error) {
152
+ if (!silent)
153
+ throw error;
154
+ }
155
+ };
156
+ this.list = async (collection) => {
157
+ var _a, e_1, _b, _c;
158
+ (0, util_2.assertType)(collection, 'drop', 'crudfs');
159
+ const dir = await this.checkDir(collection);
160
+ const dirents = (await this.fs.readdir(dir, { withFileTypes: true }));
161
+ const entries = [];
162
+ try {
163
+ for (var _d = true, dirents_1 = tslib_1.__asyncValues(dirents), dirents_1_1; dirents_1_1 = await dirents_1.next(), _a = dirents_1_1.done, !_a; _d = true) {
164
+ _c = dirents_1_1.value;
165
+ _d = false;
166
+ const entry = _c;
167
+ if (entry.isFile()) {
168
+ entries.push({
169
+ type: 'resource',
170
+ id: '' + entry.name,
171
+ });
172
+ }
173
+ else if (entry.isDirectory()) {
174
+ entries.push({
175
+ type: 'collection',
176
+ id: '' + entry.name,
177
+ });
178
+ }
179
+ }
180
+ }
181
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
182
+ finally {
183
+ try {
184
+ if (!_d && !_a && (_b = dirents_1.return)) await _b.call(dirents_1);
185
+ }
186
+ finally { if (e_1) throw e_1.error; }
187
+ }
188
+ return entries;
189
+ };
190
+ this.from = async (collection) => {
191
+ (0, util_2.assertType)(collection, 'from', 'crudfs');
192
+ const dir = this.dir + (collection.length ? collection.join(this.separator) + this.separator : '');
193
+ const fs = this.fs;
194
+ if (dir.length > 1)
195
+ await fs.mkdir(dir, { recursive: true });
196
+ await this.checkDir(collection);
197
+ return new NodeCrud({
198
+ dir,
199
+ fs: this.fs,
200
+ separator: this.separator,
201
+ });
202
+ };
203
+ this.separator = (_a = options.separator) !== null && _a !== void 0 ? _a : '/';
204
+ let dir = options.dir;
205
+ const last = dir[dir.length - 1];
206
+ if (last !== this.separator)
207
+ dir = dir + this.separator;
208
+ this.dir = dir;
209
+ this.fs = options.fs;
210
+ }
211
+ async checkDir(collection) {
212
+ const dir = this.dir + (collection.length ? collection.join(this.separator) + this.separator : '');
213
+ const fs = this.fs;
214
+ try {
215
+ const stats = await fs.stat(dir);
216
+ if (!stats.isDirectory())
217
+ throw (0, util_3.newFolder404Error)(collection);
218
+ return dir;
219
+ }
220
+ catch (error) {
221
+ if (error && typeof error === 'object') {
222
+ switch (error.code) {
223
+ case 'ENOENT':
224
+ case 'ENOTDIR':
225
+ throw (0, util_3.newFolder404Error)(collection);
226
+ }
227
+ }
228
+ throw error;
229
+ }
230
+ }
231
+ }
232
+ exports.NodeCrud = NodeCrud;
233
+ //# sourceMappingURL=NodeCrud.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NodeCrud.js","sourceRoot":"","sources":["../../src/node-to-crud/NodeCrud.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("../..");
4
+ const util_1 = require("../../__tests__/util");
5
+ const NodeCrud_1 = require("../NodeCrud");
6
+ const testCrudfs_1 = require("../../crud/__tests__/testCrudfs");
7
+ const setup = () => {
8
+ const { fs } = (0, __1.memfs)();
9
+ const crud = new NodeCrud_1.NodeCrud({
10
+ fs: fs.promises,
11
+ dir: '/',
12
+ });
13
+ return { fs, crud, snapshot: () => fs.__vol.toJSON() };
14
+ };
15
+ (0, util_1.onlyOnNode20)('NodeCrud', () => {
16
+ (0, testCrudfs_1.testCrudfs)(setup);
17
+ });
18
+ //# sourceMappingURL=FsaCrud.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FsaCrud.test.js","sourceRoot":"","sources":["../../../src/node-to-crud/__tests__/FsaCrud.test.ts"],"names":[],"mappings":";;AAAA,6BAA8B;AAC9B,+CAAoD;AACpD,0CAAuC;AACvC,gEAA6D;AAE7D,MAAM,KAAK,GAAG,GAAG,EAAE;IACjB,MAAM,EAAE,EAAE,EAAE,GAAG,IAAA,SAAK,GAAE,CAAC;IACvB,MAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC;QACxB,EAAE,EAAE,EAAE,CAAC,QAAQ;QACf,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAO,EAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;AAChE,CAAC,CAAC;AAEF,IAAA,mBAAY,EAAC,UAAU,EAAE,GAAG,EAAE;IAC5B,IAAA,uBAAU,EAAC,KAAK,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export { NodeCrud, NodeCrudOptions } from './NodeCrud';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeCrud = void 0;
4
+ var NodeCrud_1 = require("./NodeCrud");
5
+ Object.defineProperty(exports, "NodeCrud", { enumerable: true, get: function () { return NodeCrud_1.NodeCrud; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/node-to-crud/index.ts"],"names":[],"mappings":";;;AAAA,uCAAuD;AAA9C,oGAAA,QAAQ,OAAA"}
@@ -6,9 +6,10 @@ import type { GetDirectoryHandleOptions, GetFileHandleOptions, IFileSystemDirect
6
6
  */
7
7
  export declare class NodeFileSystemDirectoryHandle extends NodeFileSystemHandle implements IFileSystemDirectoryHandle {
8
8
  protected readonly fs: NodeFsaFs;
9
- readonly __path: string;
10
9
  protected readonly ctx: Partial<NodeFsaContext>;
11
- constructor(fs: NodeFsaFs, __path: string, ctx?: Partial<NodeFsaContext>);
10
+ /** Directory path with trailing slash. */
11
+ readonly __path: string;
12
+ constructor(fs: NodeFsaFs, path: string, ctx?: Partial<NodeFsaContext>);
12
13
  /**
13
14
  * Returns a new array iterator containing the keys for each item in
14
15
  * {@link NodeFileSystemDirectoryHandle} object.