@dynlabs/react-native-immutable-file-cache 1.0.0-alpha.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 (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +415 -0
  3. package/lib/commonjs/adapters/memoryAdapter.js +266 -0
  4. package/lib/commonjs/adapters/memoryAdapter.js.map +1 -0
  5. package/lib/commonjs/adapters/rnfsAdapter.js +259 -0
  6. package/lib/commonjs/adapters/rnfsAdapter.js.map +1 -0
  7. package/lib/commonjs/adapters/webAdapter.js +432 -0
  8. package/lib/commonjs/adapters/webAdapter.js.map +1 -0
  9. package/lib/commonjs/core/adapter.js +2 -0
  10. package/lib/commonjs/core/adapter.js.map +1 -0
  11. package/lib/commonjs/core/cacheEngine.js +578 -0
  12. package/lib/commonjs/core/cacheEngine.js.map +1 -0
  13. package/lib/commonjs/core/errors.js +83 -0
  14. package/lib/commonjs/core/errors.js.map +1 -0
  15. package/lib/commonjs/core/hash.js +83 -0
  16. package/lib/commonjs/core/hash.js.map +1 -0
  17. package/lib/commonjs/core/indexStore.js +175 -0
  18. package/lib/commonjs/core/indexStore.js.map +1 -0
  19. package/lib/commonjs/core/mutex.js +143 -0
  20. package/lib/commonjs/core/mutex.js.map +1 -0
  21. package/lib/commonjs/core/prune.js +127 -0
  22. package/lib/commonjs/core/prune.js.map +1 -0
  23. package/lib/commonjs/core/types.js +6 -0
  24. package/lib/commonjs/core/types.js.map +1 -0
  25. package/lib/commonjs/factory.js +56 -0
  26. package/lib/commonjs/factory.js.map +1 -0
  27. package/lib/commonjs/index.js +110 -0
  28. package/lib/commonjs/index.js.map +1 -0
  29. package/lib/commonjs/index.native.js +74 -0
  30. package/lib/commonjs/index.native.js.map +1 -0
  31. package/lib/commonjs/index.web.js +75 -0
  32. package/lib/commonjs/index.web.js.map +1 -0
  33. package/lib/commonjs/types/react-native-fs.d.js +2 -0
  34. package/lib/commonjs/types/react-native-fs.d.js.map +1 -0
  35. package/lib/module/adapters/memoryAdapter.js +261 -0
  36. package/lib/module/adapters/memoryAdapter.js.map +1 -0
  37. package/lib/module/adapters/rnfsAdapter.js +251 -0
  38. package/lib/module/adapters/rnfsAdapter.js.map +1 -0
  39. package/lib/module/adapters/webAdapter.js +426 -0
  40. package/lib/module/adapters/webAdapter.js.map +1 -0
  41. package/lib/module/core/adapter.js +2 -0
  42. package/lib/module/core/adapter.js.map +1 -0
  43. package/lib/module/core/cacheEngine.js +571 -0
  44. package/lib/module/core/cacheEngine.js.map +1 -0
  45. package/lib/module/core/errors.js +71 -0
  46. package/lib/module/core/errors.js.map +1 -0
  47. package/lib/module/core/hash.js +76 -0
  48. package/lib/module/core/hash.js.map +1 -0
  49. package/lib/module/core/indexStore.js +168 -0
  50. package/lib/module/core/indexStore.js.map +1 -0
  51. package/lib/module/core/mutex.js +135 -0
  52. package/lib/module/core/mutex.js.map +1 -0
  53. package/lib/module/core/prune.js +116 -0
  54. package/lib/module/core/prune.js.map +1 -0
  55. package/lib/module/core/types.js +2 -0
  56. package/lib/module/core/types.js.map +1 -0
  57. package/lib/module/factory.js +49 -0
  58. package/lib/module/factory.js.map +1 -0
  59. package/lib/module/index.js +41 -0
  60. package/lib/module/index.js.map +1 -0
  61. package/lib/module/index.native.js +54 -0
  62. package/lib/module/index.native.js.map +1 -0
  63. package/lib/module/index.web.js +55 -0
  64. package/lib/module/index.web.js.map +1 -0
  65. package/lib/module/types/react-native-fs.d.js +2 -0
  66. package/lib/module/types/react-native-fs.d.js.map +1 -0
  67. package/lib/typescript/src/adapters/memoryAdapter.d.ts +23 -0
  68. package/lib/typescript/src/adapters/memoryAdapter.d.ts.map +1 -0
  69. package/lib/typescript/src/adapters/rnfsAdapter.d.ts +18 -0
  70. package/lib/typescript/src/adapters/rnfsAdapter.d.ts.map +1 -0
  71. package/lib/typescript/src/adapters/webAdapter.d.ts +30 -0
  72. package/lib/typescript/src/adapters/webAdapter.d.ts.map +1 -0
  73. package/lib/typescript/src/core/adapter.d.ts +105 -0
  74. package/lib/typescript/src/core/adapter.d.ts.map +1 -0
  75. package/lib/typescript/src/core/cacheEngine.d.ts +99 -0
  76. package/lib/typescript/src/core/cacheEngine.d.ts.map +1 -0
  77. package/lib/typescript/src/core/errors.d.ts +54 -0
  78. package/lib/typescript/src/core/errors.d.ts.map +1 -0
  79. package/lib/typescript/src/core/hash.d.ts +20 -0
  80. package/lib/typescript/src/core/hash.d.ts.map +1 -0
  81. package/lib/typescript/src/core/indexStore.d.ts +34 -0
  82. package/lib/typescript/src/core/indexStore.d.ts.map +1 -0
  83. package/lib/typescript/src/core/mutex.d.ts +49 -0
  84. package/lib/typescript/src/core/mutex.d.ts.map +1 -0
  85. package/lib/typescript/src/core/prune.d.ts +39 -0
  86. package/lib/typescript/src/core/prune.d.ts.map +1 -0
  87. package/lib/typescript/src/core/types.d.ts +109 -0
  88. package/lib/typescript/src/core/types.d.ts.map +1 -0
  89. package/lib/typescript/src/factory.d.ts +46 -0
  90. package/lib/typescript/src/factory.d.ts.map +1 -0
  91. package/lib/typescript/src/index.d.ts +20 -0
  92. package/lib/typescript/src/index.d.ts.map +1 -0
  93. package/lib/typescript/src/index.native.d.ts +37 -0
  94. package/lib/typescript/src/index.native.d.ts.map +1 -0
  95. package/lib/typescript/src/index.web.d.ts +38 -0
  96. package/lib/typescript/src/index.web.d.ts.map +1 -0
  97. package/package.json +125 -0
  98. package/src/adapters/memoryAdapter.ts +307 -0
  99. package/src/adapters/rnfsAdapter.ts +283 -0
  100. package/src/adapters/webAdapter.ts +480 -0
  101. package/src/core/adapter.ts +128 -0
  102. package/src/core/cacheEngine.ts +634 -0
  103. package/src/core/errors.ts +82 -0
  104. package/src/core/hash.ts +78 -0
  105. package/src/core/indexStore.ts +184 -0
  106. package/src/core/mutex.ts +134 -0
  107. package/src/core/prune.ts +145 -0
  108. package/src/core/types.ts +165 -0
  109. package/src/factory.ts +60 -0
  110. package/src/index.native.ts +58 -0
  111. package/src/index.ts +82 -0
  112. package/src/index.web.ts +59 -0
  113. package/src/types/react-native-fs.d.ts +75 -0
@@ -0,0 +1,432 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createWebAdapter = createWebAdapter;
7
+ var _errors = require("../core/errors");
8
+ /**
9
+ * Web Storage Adapter
10
+ *
11
+ * Implements IStorageAdapter using:
12
+ * - Cache Storage API for binary file storage
13
+ * - IndexedDB for metadata and index storage
14
+ */
15
+
16
+ const CACHE_URL_PREFIX = "https://cache.local";
17
+
18
+ /**
19
+ * Creates a storage adapter for web platforms using Cache Storage and IndexedDB.
20
+ */
21
+ function createWebAdapter(options) {
22
+ const cacheName = options?.cacheName ?? "immutable-file-cache";
23
+ const idbName = options?.idbName ?? "immutable-file-cache-meta";
24
+ const namespace = options?.namespace ?? "default";
25
+ const rootId = `${cacheName}/${namespace}`;
26
+
27
+ // Track created blob URLs for cleanup
28
+ const blobUrls = new Set();
29
+
30
+ /**
31
+ * Converts adapter path to cache URL key.
32
+ */
33
+ const toCacheKey = path => {
34
+ return `${CACHE_URL_PREFIX}/${namespace}/${path}`;
35
+ };
36
+
37
+ /**
38
+ * Converts cache URL key back to adapter path.
39
+ */
40
+ const fromCacheKey = url => {
41
+ const prefix = `${CACHE_URL_PREFIX}/${namespace}/`;
42
+ return url.startsWith(prefix) ? url.slice(prefix.length) : url;
43
+ };
44
+
45
+ /**
46
+ * Gets the IDB object store key for metadata.
47
+ */
48
+ const toMetaKey = path => {
49
+ return `${namespace}/${path}`;
50
+ };
51
+
52
+ /**
53
+ * Opens or creates the IndexedDB database.
54
+ */
55
+ const openDB = () => {
56
+ return new Promise((resolve, reject) => {
57
+ const request = indexedDB.open(idbName, 1);
58
+ request.onerror = () => reject(request.error);
59
+ request.onsuccess = () => resolve(request.result);
60
+ request.onupgradeneeded = event => {
61
+ const db = event.target.result;
62
+ if (!db.objectStoreNames.contains("metadata")) {
63
+ db.createObjectStore("metadata");
64
+ }
65
+ if (!db.objectStoreNames.contains("directories")) {
66
+ db.createObjectStore("directories");
67
+ }
68
+ };
69
+ });
70
+ };
71
+
72
+ /**
73
+ * Gets metadata from IDB.
74
+ */
75
+ const getMetadata = async path => {
76
+ const db = await openDB();
77
+ return new Promise((resolve, reject) => {
78
+ const tx = db.transaction("metadata", "readonly");
79
+ const store = tx.objectStore("metadata");
80
+ const request = store.get(toMetaKey(path));
81
+ request.onerror = () => reject(request.error);
82
+ request.onsuccess = () => resolve(request.result ?? null);
83
+ tx.oncomplete = () => db.close();
84
+ });
85
+ };
86
+
87
+ /**
88
+ * Sets metadata in IDB.
89
+ */
90
+ const setMetadata = async (path, meta) => {
91
+ const db = await openDB();
92
+ return new Promise((resolve, reject) => {
93
+ const tx = db.transaction("metadata", "readwrite");
94
+ const store = tx.objectStore("metadata");
95
+ const request = store.put(meta, toMetaKey(path));
96
+ request.onerror = () => reject(request.error);
97
+ tx.oncomplete = () => {
98
+ db.close();
99
+ resolve();
100
+ };
101
+ });
102
+ };
103
+
104
+ /**
105
+ * Deletes metadata from IDB.
106
+ */
107
+ const deleteMetadata = async path => {
108
+ const db = await openDB();
109
+ return new Promise((resolve, reject) => {
110
+ const tx = db.transaction("metadata", "readwrite");
111
+ const store = tx.objectStore("metadata");
112
+ const request = store.delete(toMetaKey(path));
113
+ request.onerror = () => reject(request.error);
114
+ tx.oncomplete = () => {
115
+ db.close();
116
+ resolve();
117
+ };
118
+ });
119
+ };
120
+
121
+ /**
122
+ * Marks a directory as existing in IDB.
123
+ */
124
+ const markDirectory = async path => {
125
+ const db = await openDB();
126
+ return new Promise((resolve, reject) => {
127
+ const tx = db.transaction("directories", "readwrite");
128
+ const store = tx.objectStore("directories");
129
+ const request = store.put(true, toMetaKey(path));
130
+ request.onerror = () => reject(request.error);
131
+ tx.oncomplete = () => {
132
+ db.close();
133
+ resolve();
134
+ };
135
+ });
136
+ };
137
+
138
+ /**
139
+ * Checks if directory exists in IDB.
140
+ */
141
+ const hasDirectory = async path => {
142
+ const db = await openDB();
143
+ return new Promise((resolve, reject) => {
144
+ const tx = db.transaction("directories", "readonly");
145
+ const store = tx.objectStore("directories");
146
+ const request = store.get(toMetaKey(path));
147
+ request.onerror = () => reject(request.error);
148
+ request.onsuccess = () => resolve(request.result === true);
149
+ tx.oncomplete = () => db.close();
150
+ });
151
+ };
152
+ const adapter = {
153
+ kind: "web",
154
+ rootId,
155
+ // ─────────────────────────────────────────────────────────────────
156
+ // Directory Management
157
+ // ─────────────────────────────────────────────────────────────────
158
+
159
+ async ensureDir(path) {
160
+ try {
161
+ await markDirectory(path);
162
+ } catch (error) {
163
+ throw new _errors.AdapterIOError("ensureDir", path, error);
164
+ }
165
+ },
166
+ async exists(path) {
167
+ try {
168
+ // Check if it's a file in cache storage
169
+ const cache = await caches.open(cacheName);
170
+ const response = await cache.match(toCacheKey(path));
171
+ if (response) {
172
+ return true;
173
+ }
174
+
175
+ // Check if it's a directory
176
+ return await hasDirectory(path);
177
+ } catch {
178
+ return false;
179
+ }
180
+ },
181
+ async remove(path) {
182
+ try {
183
+ const cache = await caches.open(cacheName);
184
+ await cache.delete(toCacheKey(path));
185
+ await deleteMetadata(path);
186
+ } catch (error) {
187
+ throw new _errors.AdapterIOError("remove", path, error);
188
+ }
189
+ },
190
+ async removeDir(path) {
191
+ try {
192
+ const cache = await caches.open(cacheName);
193
+ const keys = await cache.keys();
194
+ const prefix = toCacheKey(path + "/");
195
+
196
+ // Delete all entries with this prefix
197
+ for (const request of keys) {
198
+ if (request.url.startsWith(prefix) || request.url === toCacheKey(path)) {
199
+ await cache.delete(request);
200
+ const entryPath = fromCacheKey(request.url);
201
+ await deleteMetadata(entryPath);
202
+ }
203
+ }
204
+
205
+ // Remove directory marker
206
+ const db = await openDB();
207
+ await new Promise((resolve, reject) => {
208
+ const tx = db.transaction("directories", "readwrite");
209
+ const store = tx.objectStore("directories");
210
+ store.delete(toMetaKey(path));
211
+ tx.oncomplete = () => {
212
+ db.close();
213
+ resolve();
214
+ };
215
+ tx.onerror = () => reject(tx.error);
216
+ });
217
+ } catch (error) {
218
+ throw new _errors.AdapterIOError("removeDir", path, error);
219
+ }
220
+ },
221
+ async listDir(path) {
222
+ try {
223
+ const cache = await caches.open(cacheName);
224
+ const keys = await cache.keys();
225
+ const prefix = toCacheKey(path + "/");
226
+ const entries = [];
227
+ for (const request of keys) {
228
+ if (request.url.startsWith(prefix)) {
229
+ // Extract the relative path from this directory
230
+ const relativePath = request.url.slice(prefix.length);
231
+ // Only include direct children (no further slashes)
232
+ if (!relativePath.includes("/")) {
233
+ entries.push(relativePath);
234
+ }
235
+ }
236
+ }
237
+ return entries;
238
+ } catch (error) {
239
+ throw new _errors.AdapterIOError("listDir", path, error);
240
+ }
241
+ },
242
+ // ─────────────────────────────────────────────────────────────────
243
+ // File I/O
244
+ // ─────────────────────────────────────────────────────────────────
245
+
246
+ async readText(path, _encoding) {
247
+ try {
248
+ const cache = await caches.open(cacheName);
249
+ const response = await cache.match(toCacheKey(path));
250
+ if (!response) {
251
+ throw new Error("File not found");
252
+ }
253
+ return await response.text();
254
+ } catch (error) {
255
+ throw new _errors.AdapterIOError("readText", path, error);
256
+ }
257
+ },
258
+ async writeTextAtomic(path, content, _encoding) {
259
+ try {
260
+ const cache = await caches.open(cacheName);
261
+ const blob = new Blob([content], {
262
+ type: "text/plain; charset=utf-8"
263
+ });
264
+ const response = new Response(blob);
265
+
266
+ // Cache Storage puts are atomic by nature
267
+ await cache.put(toCacheKey(path), response);
268
+
269
+ // Store metadata
270
+ await setMetadata(path, {
271
+ sizeBytes: blob.size,
272
+ mtimeMs: Date.now(),
273
+ contentType: "text/plain"
274
+ });
275
+ } catch (error) {
276
+ throw new _errors.AdapterIOError("writeTextAtomic", path, error);
277
+ }
278
+ },
279
+ async stat(path) {
280
+ try {
281
+ const meta = await getMetadata(path);
282
+ if (!meta) {
283
+ throw new Error("File not found");
284
+ }
285
+ return {
286
+ sizeBytes: meta.sizeBytes,
287
+ mtimeMs: meta.mtimeMs
288
+ };
289
+ } catch (error) {
290
+ throw new _errors.AdapterIOError("stat", path, error);
291
+ }
292
+ },
293
+ async writeBinaryAtomic(path, source, options) {
294
+ try {
295
+ const cache = await caches.open(cacheName);
296
+ let blob;
297
+ let contentType;
298
+ switch (source.type) {
299
+ case "url":
300
+ {
301
+ // Fetch with progress tracking
302
+ const response = await fetch(source.url, {
303
+ headers: {
304
+ ...source.headers,
305
+ ...options?.headers
306
+ }
307
+ });
308
+ if (!response.ok) {
309
+ throw new Error(`Fetch failed with status ${response.status}`);
310
+ }
311
+ contentType = response.headers.get("content-type") ?? undefined;
312
+
313
+ // Try to track progress if content-length is available
314
+ const contentLength = response.headers.get("content-length");
315
+ if (contentLength && options?.onProgress && response.body) {
316
+ const total = parseInt(contentLength, 10);
317
+ let loaded = 0;
318
+ const reader = response.body.getReader();
319
+ const chunks = [];
320
+
321
+ // eslint-disable-next-line no-constant-condition
322
+ while (true) {
323
+ const {
324
+ done,
325
+ value
326
+ } = await reader.read();
327
+ if (done) {
328
+ break;
329
+ }
330
+ chunks.push(value);
331
+ loaded += value.length;
332
+ options.onProgress(loaded / total * 100);
333
+ }
334
+ blob = new Blob(chunks.map(c => c.buffer), {
335
+ type: contentType
336
+ });
337
+ } else {
338
+ blob = await response.blob();
339
+ options?.onProgress?.(100);
340
+ }
341
+ break;
342
+ }
343
+ case "blob":
344
+ {
345
+ blob = source.blob;
346
+ contentType = source.blob.type || undefined;
347
+ options?.onProgress?.(100);
348
+ break;
349
+ }
350
+ case "bytes":
351
+ {
352
+ blob = new Blob([source.bytes.buffer]);
353
+ options?.onProgress?.(100);
354
+ break;
355
+ }
356
+ case "file":
357
+ {
358
+ // File paths not supported on web
359
+ throw new _errors.UnsupportedSourceError("file", "web");
360
+ }
361
+ default:
362
+ {
363
+ const _exhaustive = source;
364
+ throw new _errors.UnsupportedSourceError(_exhaustive.type, "web");
365
+ }
366
+ }
367
+
368
+ // Store in cache
369
+ const response = new Response(blob, {
370
+ headers: contentType ? {
371
+ "Content-Type": contentType
372
+ } : {}
373
+ });
374
+ await cache.put(toCacheKey(path), response);
375
+
376
+ // Store metadata
377
+ const meta = {
378
+ sizeBytes: blob.size,
379
+ mtimeMs: Date.now(),
380
+ contentType
381
+ };
382
+ await setMetadata(path, meta);
383
+ return {
384
+ sizeBytes: blob.size,
385
+ contentType
386
+ };
387
+ } catch (error) {
388
+ if (error instanceof _errors.UnsupportedSourceError) {
389
+ throw error;
390
+ }
391
+ throw new _errors.AdapterIOError("writeBinaryAtomic", path, error);
392
+ }
393
+ },
394
+ async getPublicUri(path) {
395
+ try {
396
+ const cache = await caches.open(cacheName);
397
+ const response = await cache.match(toCacheKey(path));
398
+ if (!response) {
399
+ throw new Error("File not found");
400
+ }
401
+ const blob = await response.blob();
402
+ const blobUrl = URL.createObjectURL(blob);
403
+
404
+ // Track for cleanup
405
+ blobUrls.add(blobUrl);
406
+ return blobUrl;
407
+ } catch (error) {
408
+ throw new _errors.AdapterIOError("getPublicUri", path, error);
409
+ }
410
+ }
411
+ };
412
+
413
+ // Add cleanup method (non-standard, for internal use)
414
+ adapter.revokeUri = uri => {
415
+ if (blobUrls.has(uri)) {
416
+ URL.revokeObjectURL(uri);
417
+ blobUrls.delete(uri);
418
+ }
419
+ };
420
+ adapter.revokeAllUris = () => {
421
+ for (const uri of blobUrls) {
422
+ URL.revokeObjectURL(uri);
423
+ }
424
+ blobUrls.clear();
425
+ };
426
+ return adapter;
427
+ }
428
+
429
+ /**
430
+ * Extended interface for web adapter with cleanup methods.
431
+ */
432
+ //# sourceMappingURL=webAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_errors","require","CACHE_URL_PREFIX","createWebAdapter","options","cacheName","idbName","namespace","rootId","blobUrls","Set","toCacheKey","path","fromCacheKey","url","prefix","startsWith","slice","length","toMetaKey","openDB","Promise","resolve","reject","request","indexedDB","open","onerror","error","onsuccess","result","onupgradeneeded","event","db","target","objectStoreNames","contains","createObjectStore","getMetadata","tx","transaction","store","objectStore","get","oncomplete","close","setMetadata","meta","put","deleteMetadata","delete","markDirectory","hasDirectory","adapter","kind","ensureDir","AdapterIOError","exists","cache","caches","response","match","remove","removeDir","keys","entryPath","listDir","entries","relativePath","includes","push","readText","_encoding","Error","text","writeTextAtomic","content","blob","Blob","type","Response","sizeBytes","size","mtimeMs","Date","now","contentType","stat","writeBinaryAtomic","source","fetch","headers","ok","status","undefined","contentLength","onProgress","body","total","parseInt","loaded","reader","getReader","chunks","done","value","read","map","c","buffer","bytes","UnsupportedSourceError","_exhaustive","getPublicUri","blobUrl","URL","createObjectURL","add","revokeUri","uri","has","revokeObjectURL","revokeAllUris","clear"],"sourceRoot":"../../../src","sources":["adapters/webAdapter.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["core/adapter.ts"],"mappings":"","ignoreList":[]}