opfs-worker 2.1.0 → 2.1.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.
- package/README.md +40 -27
- package/dist/{BaseOPFS-Cylz6ijk.js → BaseOPFS-BusBkyJX.js} +436 -358
- package/dist/BaseOPFS-BusBkyJX.js.map +1 -0
- package/dist/{BaseOPFS-BPw9AIQ-.cjs → BaseOPFS-CYwrD7-q.cjs} +4 -4
- package/dist/BaseOPFS-CYwrD7-q.cjs.map +1 -0
- package/dist/{OPFSAsync-s2P7y3sw.cjs → OPFSAsync-B2dR-2VR.cjs} +2 -2
- package/dist/{OPFSAsync-s2P7y3sw.cjs.map → OPFSAsync-B2dR-2VR.cjs.map} +1 -1
- package/dist/{OPFSAsync-BKSAJJeh.js → OPFSAsync-CO44W23e.js} +2 -2
- package/dist/{OPFSAsync-BKSAJJeh.js.map → OPFSAsync-CO44W23e.js.map} +1 -1
- package/dist/OPFSFacade-CEaSqTut.js +308 -0
- package/dist/OPFSFacade-CEaSqTut.js.map +1 -0
- package/dist/OPFSFacade-hrNXCn6w.cjs +2 -0
- package/dist/OPFSFacade-hrNXCn6w.cjs.map +1 -0
- package/dist/{OPFSSync-C7KBepe_.cjs → OPFSSync-BPrNtvFS.cjs} +2 -2
- package/dist/{OPFSSync-C7KBepe_.cjs.map → OPFSSync-BPrNtvFS.cjs.map} +1 -1
- package/dist/{OPFSSync-CsSQkpk5.js → OPFSSync-D7obTsl3.js} +2 -2
- package/dist/{OPFSSync-CsSQkpk5.js.map → OPFSSync-D7obTsl3.js.map} +1 -1
- package/dist/assets/dedicated.worker-DW6UqFo0.js.map +1 -0
- package/dist/core/BaseOPFS.d.ts +38 -7
- package/dist/core/BaseOPFS.d.ts.map +1 -1
- package/dist/createOPFSAsync-DdhJYoC0.js +10 -0
- package/dist/{createOPFSAsync-Y4Mg6qte.js.map → createOPFSAsync-DdhJYoC0.js.map} +1 -1
- package/dist/createOPFSAsync-DyWpvmL-.cjs +2 -0
- package/dist/{createOPFSAsync-BwKDmHsy.cjs.map → createOPFSAsync-DyWpvmL-.cjs.map} +1 -1
- package/dist/{createOPFSDedicated-CsnV6MLP.js → createOPFSDedicated-BwTc0NV5.js} +289 -215
- package/dist/{createOPFSDedicated-CsnV6MLP.js.map → createOPFSDedicated-BwTc0NV5.js.map} +1 -1
- package/dist/{createOPFSDedicated-pKTRWLdz.cjs → createOPFSDedicated-CEeRexom.cjs} +286 -212
- package/dist/{createOPFSDedicated-pKTRWLdz.cjs.map → createOPFSDedicated-CEeRexom.cjs.map} +1 -1
- package/dist/{createOPFSShared-CGdd__PH.js → createOPFSShared-BSFWsoLe.js} +2 -2
- package/dist/{createOPFSShared-CGdd__PH.js.map → createOPFSShared-BSFWsoLe.js.map} +1 -1
- package/dist/{createOPFSShared-CskROt7U.cjs → createOPFSShared-BoCft_BS.cjs} +2 -2
- package/dist/{createOPFSShared-CskROt7U.cjs.map → createOPFSShared-BoCft_BS.cjs.map} +1 -1
- package/dist/dedicated.worker.js +282 -208
- package/dist/dedicated.worker.js.map +1 -1
- package/dist/facade/OPFSFacade.d.ts +21 -3
- package/dist/facade/OPFSFacade.d.ts.map +1 -1
- package/dist/index.async.cjs +1 -1
- package/dist/index.async.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.js +7 -7
- package/dist/index.pure.cjs +1 -1
- package/dist/index.pure.js +3 -3
- package/dist/index.sharedworker.cjs +1 -1
- package/dist/index.sharedworker.js +4 -4
- package/dist/index.sync.cjs +1 -1
- package/dist/index.sync.js +4 -4
- package/dist/shared.worker.js +430 -356
- package/dist/shared.worker.js.map +1 -1
- package/dist/types.d.ts +33 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/api/backend.md +3 -3
- package/docs/api/create.md +1 -1
- package/docs/api/facade.md +28 -27
- package/docs/choosing-a-mode.md +6 -6
- package/docs/file-descriptors.md +46 -604
- package/docs/guides/async.md +2 -2
- package/docs/guides/dedicated.md +5 -5
- package/docs/guides/hashing.md +2 -2
- package/docs/guides/pure.md +3 -3
- package/docs/guides/sharedworker.md +1 -1
- package/docs/guides/streaming.md +145 -11
- package/docs/guides/watching.md +3 -3
- package/docs/migration.md +3 -3
- package/docs/types.md +92 -154
- package/package.json +12 -2
- package/src/core/BaseOPFS.ts +148 -25
- package/src/facade/OPFSFacade.ts +51 -4
- package/src/types.ts +37 -0
- package/dist/BaseOPFS-BPw9AIQ-.cjs.map +0 -1
- package/dist/BaseOPFS-Cylz6ijk.js.map +0 -1
- package/dist/OPFSFacade-DePnNRgt.cjs +0 -2
- package/dist/OPFSFacade-DePnNRgt.cjs.map +0 -1
- package/dist/OPFSFacade-XohWlHuu.js +0 -281
- package/dist/OPFSFacade-XohWlHuu.js.map +0 -1
- package/dist/assets/dedicated.worker-nY3tK4zi.js.map +0 -1
- package/dist/createOPFSAsync-BwKDmHsy.cjs +0 -2
- package/dist/createOPFSAsync-Y4Mg6qte.js +0 -10
- package/docs/README.md +0 -30
package/dist/core/BaseOPFS.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DirentData, FileStat, OPFSOptions, RenameOptions, WatchEvent, WatchOptions, WatchSnapshot } from '../types';
|
|
1
|
+
import type { DirentData, FileStat, ImportFilesEntries, ImportFilesProgress, ImportFilesResult, OPFSOptions, RenameOptions, WatchEvent, WatchOptions, WatchSnapshot } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* Shared OPFS logic (directories, meta, watch, high-level helpers).
|
|
4
4
|
* File I/O backends implement {@link readFile}, {@link writeFile}, {@link appendFile},
|
|
@@ -339,21 +339,52 @@ export declare abstract class BaseOPFS {
|
|
|
339
339
|
*/
|
|
340
340
|
unwatch(path: string): void;
|
|
341
341
|
/**
|
|
342
|
-
*
|
|
342
|
+
* Read a file as a `Blob` without copying its bytes into memory.
|
|
343
343
|
*
|
|
344
|
-
*
|
|
344
|
+
* OPFS hands back a disk-backed `File`, so the browser can stream it on
|
|
345
|
+
* demand — pass it to `URL.createObjectURL()` for `<video>` / `<audio>` /
|
|
346
|
+
* `<img>` and only the played range is actually read. Structured clone keeps
|
|
347
|
+
* the reference intact when the file system runs in a worker.
|
|
348
|
+
*
|
|
349
|
+
* @param path - Path to the file
|
|
350
|
+
* @returns Lazy `File` handle backed by OPFS storage
|
|
351
|
+
* @throws {OPFSError} If the path is missing or is a directory
|
|
352
|
+
*
|
|
353
|
+
* @example
|
|
354
|
+
* ```typescript
|
|
355
|
+
* const blob = await fs.readBlob('/media/clip.mp4');
|
|
356
|
+
* video.src = URL.createObjectURL(blob);
|
|
357
|
+
* ```
|
|
358
|
+
*/
|
|
359
|
+
readBlob(path: string): Promise<Blob>;
|
|
360
|
+
/**
|
|
361
|
+
* Bulk-import files from `[path, data]` entries (strings, bytes, Blobs, or Files).
|
|
362
|
+
* Each entry is written via {@link writeStream} so large Blobs/Files are not
|
|
363
|
+
* fully buffered in memory.
|
|
364
|
+
*
|
|
365
|
+
* Accepts an array of tuples, a `Map`, or any iterable of `[path, data]` pairs.
|
|
366
|
+
*
|
|
367
|
+
* @param entries - Files to write
|
|
368
|
+
* @param onProgress - Per-chunk progress with path, index, and byte counts
|
|
369
|
+
* @returns Written paths, count, and total bytes
|
|
345
370
|
* @throws {OPFSError} If a write fails
|
|
346
371
|
*
|
|
347
372
|
* @example
|
|
348
373
|
* ```typescript
|
|
349
|
-
* await fs.
|
|
374
|
+
* const result = await fs.importFiles([
|
|
350
375
|
* ['/config.json', JSON.stringify({ theme: 'dark' })],
|
|
351
376
|
* ['/data/binary.dat', new Uint8Array([1, 2, 3, 4])],
|
|
352
|
-
* ['/upload.txt',
|
|
353
|
-
* ]);
|
|
377
|
+
* ['/upload.txt', fileFromInput],
|
|
378
|
+
* ], (p) => console.log(`${p.path}: ${p.bytesWritten}/${p.bytesTotal}`));
|
|
379
|
+
*
|
|
380
|
+
* console.log(result.count, result.bytesWritten, result.paths);
|
|
354
381
|
* ```
|
|
355
382
|
*/
|
|
356
|
-
|
|
383
|
+
importFiles(entries: ImportFilesEntries, onProgress?: (progress: ImportFilesProgress) => unknown): Promise<ImportFilesResult>;
|
|
384
|
+
/**
|
|
385
|
+
* @deprecated Use {@link importFiles} instead.
|
|
386
|
+
*/
|
|
387
|
+
createIndex(entries: ImportFilesEntries): Promise<void>;
|
|
357
388
|
/**
|
|
358
389
|
* Dispose of resources and clean up the file system instance
|
|
359
390
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseOPFS.d.ts","sourceRoot":"","sources":["../../src/core/BaseOPFS.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaseOPFS.d.ts","sourceRoot":"","sources":["../../src/core/BaseOPFS.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { O as o } from "./OPFSFacade-CEaSqTut.js";
|
|
2
|
+
import { O as n } from "./OPFSAsync-CO44W23e.js";
|
|
3
|
+
function t(e) {
|
|
4
|
+
const s = new n(e);
|
|
5
|
+
return new o({ fs: s, dispose: () => s.dispose() });
|
|
6
|
+
}
|
|
7
|
+
export {
|
|
8
|
+
t as c
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=createOPFSAsync-DdhJYoC0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOPFSAsync-
|
|
1
|
+
{"version":3,"file":"createOPFSAsync-DdhJYoC0.js","sources":["../src/facade/createOPFSAsync.ts"],"sourcesContent":["import { OPFSFacade } from './OPFSFacade';\nimport { OPFSAsync } from '../core/OPFSAsync';\n\nimport type { OPFSOptions } from '../types';\n\n/**\n * Async mode: Node-like `fs` API over the promise-based File System API,\n * without any worker.\n *\n * Prefer importing from `opfs-worker/async` when you care about bundle size\n * (avoids the inlined dedicated worker). Importing from `opfs-worker` works too.\n *\n * Writing requires `FileSystemFileHandle.createWritable()` — Chrome, Firefox,\n * Safari 26+. File descriptors (`open`/`read`/`write`/...) are not supported\n * and throw `OperationNotSupportedError` — use `createOPFSDedicated` from `opfs-worker`\n * or `opfs-worker/sync` for positional I/O.\n */\nexport function createOPFSAsync(options?: OPFSOptions): OPFSFacade {\n const fs = new OPFSAsync(options);\n\n return new OPFSFacade({ fs, dispose: () => fs.dispose() });\n}\n"],"names":["createOPFSAsync","options","fs","OPFSAsync","OPFSFacade"],"mappings":";;AAiBO,SAASA,EAAgBC,GAAmC;AAC/D,QAAMC,IAAK,IAAIC,EAAUF,CAAO;AAEhC,SAAO,IAAIG,EAAW,EAAE,IAAAF,GAAI,SAAS,MAAMA,EAAG,QAAA,GAAW;AAC7D;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createOPFSAsync-
|
|
1
|
+
{"version":3,"file":"createOPFSAsync-DyWpvmL-.cjs","sources":["../src/facade/createOPFSAsync.ts"],"sourcesContent":["import { OPFSFacade } from './OPFSFacade';\nimport { OPFSAsync } from '../core/OPFSAsync';\n\nimport type { OPFSOptions } from '../types';\n\n/**\n * Async mode: Node-like `fs` API over the promise-based File System API,\n * without any worker.\n *\n * Prefer importing from `opfs-worker/async` when you care about bundle size\n * (avoids the inlined dedicated worker). Importing from `opfs-worker` works too.\n *\n * Writing requires `FileSystemFileHandle.createWritable()` — Chrome, Firefox,\n * Safari 26+. File descriptors (`open`/`read`/`write`/...) are not supported\n * and throw `OperationNotSupportedError` — use `createOPFSDedicated` from `opfs-worker`\n * or `opfs-worker/sync` for positional I/O.\n */\nexport function createOPFSAsync(options?: OPFSOptions): OPFSFacade {\n const fs = new OPFSAsync(options);\n\n return new OPFSFacade({ fs, dispose: () => fs.dispose() });\n}\n"],"names":["createOPFSAsync","options","fs","OPFSAsync","OPFSFacade"],"mappings":"gGAiBO,SAASA,EAAgBC,EAAmC,CAC/D,MAAMC,EAAK,IAAIC,EAAAA,UAAUF,CAAO,EAEhC,OAAO,IAAIG,EAAAA,WAAW,CAAE,GAAAF,EAAI,QAAS,IAAMA,EAAG,QAAA,EAAW,CAC7D"}
|