@fireproof/core 0.19.112-dev-web → 0.19.112-dev-dyn

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 (83) hide show
  1. package/{chunk-GZANCVTS.js → chunk-D4E6UX6S.js} +1 -8
  2. package/{chunk-GZANCVTS.js.map → chunk-D4E6UX6S.js.map} +1 -1
  3. package/{web/chunk-S4HRSKEO.js → chunk-PWEDYV5H.js} +26 -30
  4. package/chunk-PWEDYV5H.js.map +1 -0
  5. package/chunk-PZ5AY32C.js +10 -0
  6. package/{gateway@skip-iife-OZ2V32XH.js → gateway-72EUHYEL.js} +5 -4
  7. package/gateway-72EUHYEL.js.map +1 -0
  8. package/gateway-SK2ERWD3.js +70 -0
  9. package/gateway-SK2ERWD3.js.map +1 -0
  10. package/index.cjs +105 -286
  11. package/index.cjs.map +1 -1
  12. package/index.d.cts +2 -3
  13. package/index.d.ts +2 -3
  14. package/index.global.js +233 -188
  15. package/index.global.js.map +1 -1
  16. package/index.js +17 -17
  17. package/index.js.map +1 -1
  18. package/{key-bag-file-4TYN2H7F.js → key-bag-file-VP6Y7N26.js} +4 -3
  19. package/{key-bag-file-4TYN2H7F.js.map → key-bag-file-VP6Y7N26.js.map} +1 -1
  20. package/{key-bag-indexdb-JEOAS4WM.js → key-bag-indexdb-N5GQ5GSH.js} +4 -3
  21. package/{key-bag-indexdb-JEOAS4WM.js.map → key-bag-indexdb-N5GQ5GSH.js.map} +1 -1
  22. package/metafile-cjs.json +1 -1
  23. package/metafile-esm.json +1 -1
  24. package/metafile-iife.json +1 -1
  25. package/node/chunk-4A4RAVNS.js +17 -0
  26. package/node/chunk-4A4RAVNS.js.map +1 -0
  27. package/node/mem-filesystem.cjs +72 -0
  28. package/node/mem-filesystem.cjs.map +1 -0
  29. package/node/mem-filesystem.d.cts +25 -0
  30. package/node/mem-filesystem.d.ts +25 -0
  31. package/{mem-filesystem@skip-iife-CJI7IIKV.js → node/mem-filesystem.js} +3 -4
  32. package/node/mem-filesystem.js.map +1 -0
  33. package/node/metafile-cjs.json +1 -0
  34. package/node/metafile-esm.json +1 -0
  35. package/node/node-filesystem.cjs +86 -0
  36. package/node/node-filesystem.cjs.map +1 -0
  37. package/node/node-filesystem.d.cts +36 -0
  38. package/node/node-filesystem.d.ts +36 -0
  39. package/{node-filesystem@skip-iife-O74VAABQ.js → node/node-filesystem.js} +3 -4
  40. package/node/node-filesystem.js.map +1 -0
  41. package/node/types-DARSfXlb.d.cts +23 -0
  42. package/node/types-DARSfXlb.d.ts +23 -0
  43. package/package.json +1 -1
  44. package/utils-WS4AZWA7.js +13 -0
  45. package/web/gateway-impl.cjs +319 -0
  46. package/web/gateway-impl.cjs.map +1 -0
  47. package/web/gateway-impl.d.cts +86 -0
  48. package/web/gateway-impl.d.ts +86 -0
  49. package/{gateway@skip-esm-O655UEIP.js → web/gateway-impl.js} +165 -20
  50. package/web/gateway-impl.js.map +1 -0
  51. package/web/metafile-cjs.json +1 -1
  52. package/web/metafile-esm.json +1 -1
  53. package/chunk-LNFBDD6E.js +0 -75
  54. package/chunk-LNFBDD6E.js.map +0 -1
  55. package/chunk-PB4BKL4O.js +0 -7
  56. package/chunk-PB4BKL4O.js.map +0 -1
  57. package/gateway@skip-esm-O655UEIP.js.map +0 -1
  58. package/gateway@skip-iife-OZ2V32XH.js.map +0 -1
  59. package/mem-filesystem@skip-iife-CJI7IIKV.js.map +0 -1
  60. package/node-filesystem@skip-iife-O74VAABQ.js.map +0 -1
  61. package/utils-L7MUZUJX.js +0 -14
  62. package/web/bundle-not-impl-UH74NK5L.js +0 -5
  63. package/web/bundle-not-impl-UH74NK5L.js.map +0 -1
  64. package/web/chunk-2DC5ZIR4.js +0 -7
  65. package/web/chunk-2DC5ZIR4.js.map +0 -1
  66. package/web/chunk-Q5W7UNMP.js +0 -292
  67. package/web/chunk-Q5W7UNMP.js.map +0 -1
  68. package/web/chunk-S4HRSKEO.js.map +0 -1
  69. package/web/gateway@skip-esm-GI5PRACF.js +0 -165
  70. package/web/gateway@skip-esm-GI5PRACF.js.map +0 -1
  71. package/web/index.cjs +0 -4138
  72. package/web/index.cjs.map +0 -1
  73. package/web/index.d.cts +0 -1139
  74. package/web/index.d.ts +0 -1139
  75. package/web/index.js +0 -3478
  76. package/web/index.js.map +0 -1
  77. package/web/key-bag-file-4SJQGORQ.js +0 -54
  78. package/web/key-bag-file-4SJQGORQ.js.map +0 -1
  79. package/web/key-bag-indexdb-GSQOUUVQ.js +0 -50
  80. package/web/key-bag-indexdb-GSQOUUVQ.js.map +0 -1
  81. package/web/utils-EFZJNXH5.js +0 -14
  82. /package/{utils-L7MUZUJX.js.map → chunk-PZ5AY32C.js.map} +0 -0
  83. /package/{web/utils-EFZJNXH5.js.map → utils-WS4AZWA7.js.map} +0 -0
package/index.d.cts CHANGED
@@ -1035,9 +1035,9 @@ declare class Database<DT extends DocTypes = NonNullable<unknown>> implements Co
1035
1035
  declare function fireproof(name: string, opts?: ConfigOpts): Database;
1036
1036
 
1037
1037
  declare function getFileSystem(url: URI): Promise<SysFileSystem>;
1038
+
1038
1039
  declare function getPath(url: URI, sthis: SuperThis): string;
1039
1040
  declare function getFileName(url: URI, sthis: SuperThis): string;
1040
- declare function toArrayBuffer(buffer: Buffer | string): Uint8Array;
1041
1041
 
1042
1042
  declare function encodeFile(blob: BlobLike): Promise<{
1043
1043
  cid: AnyLink;
@@ -1128,9 +1128,8 @@ declare const index_getFileName: typeof getFileName;
1128
1128
  declare const index_getFileSystem: typeof getFileSystem;
1129
1129
  declare const index_getPath: typeof getPath;
1130
1130
  declare const index_runtimeFn: typeof runtimeFn;
1131
- declare const index_toArrayBuffer: typeof toArrayBuffer;
1132
1131
  declare namespace index {
1133
- export { index_FILESTORE_VERSION as FILESTORE_VERSION, index_INDEXDB_VERSION as INDEXDB_VERSION, index_files as files, index_getFileName as getFileName, index_getFileSystem as getFileSystem, index_getPath as getPath, keyBag as kb, keyedCrypto as kc, index$1 as mf, index_runtimeFn as runtimeFn, index_toArrayBuffer as toArrayBuffer };
1132
+ export { index_FILESTORE_VERSION as FILESTORE_VERSION, index_INDEXDB_VERSION as INDEXDB_VERSION, index_files as files, index_getFileName as getFileName, index_getFileSystem as getFileSystem, index_getPath as getPath, keyBag as kb, keyedCrypto as kc, index$1 as mf, index_runtimeFn as runtimeFn };
1134
1133
  }
1135
1134
 
1136
1135
  declare const PACKAGE_VERSION: string;
package/index.d.ts CHANGED
@@ -1035,9 +1035,9 @@ declare class Database<DT extends DocTypes = NonNullable<unknown>> implements Co
1035
1035
  declare function fireproof(name: string, opts?: ConfigOpts): Database;
1036
1036
 
1037
1037
  declare function getFileSystem(url: URI): Promise<SysFileSystem>;
1038
+
1038
1039
  declare function getPath(url: URI, sthis: SuperThis): string;
1039
1040
  declare function getFileName(url: URI, sthis: SuperThis): string;
1040
- declare function toArrayBuffer(buffer: Buffer | string): Uint8Array;
1041
1041
 
1042
1042
  declare function encodeFile(blob: BlobLike): Promise<{
1043
1043
  cid: AnyLink;
@@ -1128,9 +1128,8 @@ declare const index_getFileName: typeof getFileName;
1128
1128
  declare const index_getFileSystem: typeof getFileSystem;
1129
1129
  declare const index_getPath: typeof getPath;
1130
1130
  declare const index_runtimeFn: typeof runtimeFn;
1131
- declare const index_toArrayBuffer: typeof toArrayBuffer;
1132
1131
  declare namespace index {
1133
- export { index_FILESTORE_VERSION as FILESTORE_VERSION, index_INDEXDB_VERSION as INDEXDB_VERSION, index_files as files, index_getFileName as getFileName, index_getFileSystem as getFileSystem, index_getPath as getPath, keyBag as kb, keyedCrypto as kc, index$1 as mf, index_runtimeFn as runtimeFn, index_toArrayBuffer as toArrayBuffer };
1132
+ export { index_FILESTORE_VERSION as FILESTORE_VERSION, index_INDEXDB_VERSION as INDEXDB_VERSION, index_files as files, index_getFileName as getFileName, index_getFileSystem as getFileSystem, index_getPath as getPath, keyBag as kb, keyedCrypto as kc, index$1 as mf, index_runtimeFn as runtimeFn };
1134
1133
  }
1135
1134
 
1136
1135
  declare const PACKAGE_VERSION: string;
package/index.global.js CHANGED
@@ -12416,51 +12416,54 @@ ${end.comment}` : end.comment;
12416
12416
  }
12417
12417
  });
12418
12418
 
12419
- // src/bundle-not-impl.ts
12420
- var require_bundle_not_impl = __commonJS({
12421
- "src/bundle-not-impl.ts"() {
12422
- "use strict";
12423
- var err = new Error("store-file not implemented");
12424
- console.error(err.stack);
12425
- throw err;
12426
- }
12427
- });
12428
-
12429
- // src/runtime/gateways/file/utils.ts
12430
- var utils_exports2 = {};
12431
- __export(utils_exports2, {
12432
- getFileName: () => getFileName,
12433
- getFileSystem: () => getFileSystem,
12434
- getPath: () => getPath,
12435
- toArrayBuffer: () => toArrayBuffer
12436
- });
12419
+ // src/runtime/gateways/file/get-file-system-dynamic.ts
12437
12420
  async function getFileSystem(url) {
12438
- const name6 = url.getParam("fs");
12421
+ const name6 = url.getParam("fs", "node");
12439
12422
  let fs;
12440
12423
  switch (name6) {
12441
12424
  case "mem":
12442
- {
12443
- const { MemFileSystem } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
12444
- fs = new MemFileSystem();
12445
- }
12425
+ fs = await externalLoaders.get(name6).once(async () => {
12426
+ const memjs = "./node/mem-filesystem.js";
12427
+ const { MemFileSystem } = await import(
12428
+ /* @vite-ignore */
12429
+ memjs
12430
+ );
12431
+ return new MemFileSystem();
12432
+ });
12446
12433
  break;
12447
12434
  // case 'deno': {
12448
12435
  // const { DenoFileSystem } = await import("./deno-filesystem.js");
12449
12436
  // fs = new DenoFileSystem();
12450
12437
  // break;
12451
12438
  // }
12452
- case "node": {
12453
- const { NodeFileSystem } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
12454
- fs = new NodeFileSystem();
12455
- break;
12456
- }
12457
- case "sys":
12458
- default: {
12459
- return getFileSystem(url.build().setParam("fs", "node").URI());
12460
- }
12439
+ default:
12440
+ fs = await externalLoaders.get(name6).once(async () => {
12441
+ const nodejs = "./node/node-filesystem.js";
12442
+ const { NodeFileSystem } = await import(
12443
+ /* @vite-ignore */
12444
+ nodejs
12445
+ );
12446
+ return new NodeFileSystem();
12447
+ });
12461
12448
  }
12462
12449
  return fs.start();
12463
12450
  }
12451
+ var externalLoaders;
12452
+ var init_get_file_system_dynamic = __esm({
12453
+ "src/runtime/gateways/file/get-file-system-dynamic.ts"() {
12454
+ "use strict";
12455
+ init_cement();
12456
+ externalLoaders = new KeyedResolvOnce();
12457
+ }
12458
+ });
12459
+
12460
+ // src/runtime/gateways/file/utils.ts
12461
+ var utils_exports2 = {};
12462
+ __export(utils_exports2, {
12463
+ getFileName: () => getFileName,
12464
+ getFileSystem: () => getFileSystem,
12465
+ getPath: () => getPath
12466
+ });
12464
12467
  function getPath(url, sthis) {
12465
12468
  const basePath = url.pathname;
12466
12469
  const name6 = url.getParam("name");
@@ -12485,21 +12488,11 @@ ${end.comment}` : end.comment;
12485
12488
  throw sthis.logger.Error().Url(url).Msg(`unsupported store type`).AsError();
12486
12489
  }
12487
12490
  }
12488
- function toArrayBuffer(buffer2) {
12489
- if (typeof buffer2 === "string") {
12490
- buffer2 = Buffer.from(buffer2);
12491
- }
12492
- const ab = new ArrayBuffer(buffer2.length);
12493
- const view = new Uint8Array(ab);
12494
- for (let i = 0; i < buffer2.length; ++i) {
12495
- view[i] = buffer2[i];
12496
- }
12497
- return view;
12498
- }
12499
12491
  var init_utils2 = __esm({
12500
12492
  "src/runtime/gateways/file/utils.ts"() {
12501
12493
  "use strict";
12502
12494
  init_utils();
12495
+ init_get_file_system_dynamic();
12503
12496
  }
12504
12497
  });
12505
12498
 
@@ -13084,173 +13077,228 @@ ${end.comment}` : end.comment;
13084
13077
  }
13085
13078
  });
13086
13079
 
13087
- // src/runtime/gateways/indexdb/version.ts
13088
- var INDEXDB_VERSION;
13080
+ // src/runtime/gateways/file/version.ts
13081
+ var FILESTORE_VERSION;
13089
13082
  var init_version = __esm({
13090
- "src/runtime/gateways/indexdb/version.ts"() {
13083
+ "src/runtime/gateways/file/version.ts"() {
13091
13084
  "use strict";
13092
- INDEXDB_VERSION = "v0.19-indexdb";
13085
+ FILESTORE_VERSION = "v0.19-file";
13093
13086
  }
13094
13087
  });
13095
13088
 
13096
- // src/runtime/gateways/indexdb/gateway@skip-esm.ts
13097
- var gateway_skip_esm_exports = {};
13098
- __export(gateway_skip_esm_exports, {
13099
- IndexDBGateway: () => IndexDBGateway,
13100
- IndexDBTestStore: () => IndexDBTestStore,
13101
- getIndexDBName: () => getIndexDBName
13089
+ // src/runtime/gateways/file/gateway.ts
13090
+ var gateway_exports = {};
13091
+ __export(gateway_exports, {
13092
+ FileGateway: () => FileGateway,
13093
+ FileTestStore: () => FileTestStore
13102
13094
  });
13103
- function ensureVersion(url) {
13104
- return url.build().defParam("version", INDEXDB_VERSION).URI();
13105
- }
13106
- function sanitzeKey(key) {
13107
- if (key.length === 1) {
13108
- key = key[0];
13109
- }
13110
- return key;
13111
- }
13112
- async function connectIdb(url, sthis) {
13113
- const dbName = getIndexDBName(url, sthis);
13114
- const once = await onceIndexDB.get(dbName.fullDb).once(async () => {
13115
- const db = await openDB(dbName.fullDb, 1, {
13116
- upgrade(db2) {
13117
- ["version", "data", "wal", "meta", "idx.data", "idx.wal", "idx.meta"].map((store) => {
13118
- db2.createObjectStore(store, {
13119
- autoIncrement: false
13120
- });
13121
- });
13122
- }
13123
- });
13124
- const found = await db.get("version", "version");
13125
- const version = ensureVersion(url).getParam("version");
13126
- if (!found) {
13127
- await db.put("version", { version }, "version");
13128
- } else if (found.version !== version) {
13129
- sthis.logger.Warn().Str("url", url.toString()).Str("version", version).Str("found", found.version).Msg("version mismatch");
13130
- }
13131
- return { db, dbName, version, url };
13132
- });
13133
- return {
13134
- ...once,
13135
- url: url.build().setParam("version", once.version).URI()
13136
- };
13137
- }
13138
- function joinDBName(...names) {
13139
- return names.map((i) => i.replace(/^[^a-zA-Z0-9]+/g, "").replace(/[^a-zA-Z0-9]+/g, "_")).filter((i) => i.length).join(".");
13140
- }
13141
- function getIndexDBName(iurl, sthis) {
13142
- const url = ensureVersion(iurl);
13143
- const fullDb = url.pathname.replace(/^\/+/, "").replace(/\?.*$/, "");
13144
- const dbName = url.getParam("name");
13145
- if (!dbName) throw sthis.logger.Error().Str("url", url.toString()).Msg(`name not found`).AsError();
13146
- const result = joinDBName(fullDb, dbName);
13147
- const objStore = getStore(url, sthis, joinDBName).name;
13148
- const connectionKey = [result, objStore].join(":");
13149
- return {
13150
- fullDb: result,
13151
- objStore,
13152
- connectionKey,
13153
- dbName
13154
- };
13155
- }
13156
- var onceIndexDB, IndexDBGateway, IndexDBTestStore;
13157
- var init_gateway_skip_esm = __esm({
13158
- "src/runtime/gateways/indexdb/gateway@skip-esm.ts"() {
13095
+ var versionFiles, FileGateway, FileTestStore;
13096
+ var init_gateway = __esm({
13097
+ "src/runtime/gateways/file/gateway.ts"() {
13159
13098
  "use strict";
13160
- init_build();
13161
- init_cement();
13162
13099
  init_version();
13100
+ init_cement();
13163
13101
  init_utils();
13164
- onceIndexDB = new KeyedResolvOnce();
13165
- IndexDBGateway = class {
13102
+ init_utils2();
13103
+ versionFiles = new KeyedResolvOnce();
13104
+ FileGateway = class {
13105
+ get fs() {
13106
+ if (!this._fs) throw this.logger.Error().Msg("fs not initialized").AsError();
13107
+ return this._fs;
13108
+ }
13166
13109
  constructor(sthis) {
13167
- this._db = {};
13168
- this.logger = ensureLogger(sthis, "IndexDBGateway");
13169
13110
  this.sthis = sthis;
13111
+ this.logger = sthis.logger;
13112
+ }
13113
+ async getVersionFromFile(path, logger) {
13114
+ return versionFiles.get(path).once(async () => {
13115
+ await this.fs.mkdir(path, { recursive: true });
13116
+ const vFile = this.sthis.pathOps.join(path, "version");
13117
+ const vFileStat = await this.fs.stat(vFile).catch(() => void 0);
13118
+ if (!vFileStat) {
13119
+ await this.fs.writefile(this.sthis.pathOps.join(path, "version"), FILESTORE_VERSION);
13120
+ return FILESTORE_VERSION;
13121
+ } else if (!vFileStat.isFile()) {
13122
+ throw logger.Error().Str("file", vFile).Msg(`version file is a directory`).AsError();
13123
+ }
13124
+ const v = await this.fs.readfile(vFile);
13125
+ const vStr = this.sthis.txt.decode(v);
13126
+ if (vStr !== FILESTORE_VERSION) {
13127
+ logger.Warn().Str("file", vFile).Str("from", vStr).Str("expected", FILESTORE_VERSION).Msg(`version mismatch`);
13128
+ }
13129
+ return vStr;
13130
+ });
13170
13131
  }
13171
- async start(baseURL) {
13132
+ start(baseURL) {
13172
13133
  return exception2Result(async () => {
13173
- this.logger.Debug().Url(baseURL).Msg("starting");
13174
- await this.sthis.start();
13175
- const ic = await connectIdb(baseURL, this.sthis);
13176
- this._db = ic.db;
13177
- this.logger.Debug().Url(ic.url).Msg("started");
13178
- return ic.url;
13134
+ this._fs = await getFileSystem(baseURL);
13135
+ await this.fs.start();
13136
+ const url = baseURL.build();
13137
+ url.defParam("version", FILESTORE_VERSION);
13138
+ const dbUrl = await this.buildUrl(url.URI(), "dummy");
13139
+ const dbdirFile = this.getFilePath(dbUrl.Ok());
13140
+ await this.fs.mkdir(this.sthis.pathOps.dirname(dbdirFile), { recursive: true });
13141
+ const dbroot = this.sthis.pathOps.dirname(dbdirFile);
13142
+ this.logger.Debug().Url(url.URI()).Str("dbroot", dbroot).Msg("start");
13143
+ url.setParam("version", await this.getVersionFromFile(dbroot, this.logger));
13144
+ return url.URI();
13179
13145
  });
13180
13146
  }
13147
+ async buildUrl(baseUrl, key) {
13148
+ return Result.Ok(baseUrl.build().setParam("key", key).URI());
13149
+ }
13181
13150
  async close() {
13182
13151
  return Result.Ok(void 0);
13183
13152
  }
13184
- async destroy(baseUrl) {
13153
+ // abstract buildUrl(baseUrl: URL, key: string): Promise<Result<URL>>;
13154
+ getFilePath(url) {
13155
+ const key = url.getParam("key");
13156
+ if (!key) throw this.logger.Error().Url(url).Msg(`key not found`).AsError();
13157
+ return this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
13158
+ }
13159
+ async put(url, body) {
13185
13160
  return exception2Result(async () => {
13186
- const type2 = getStore(baseUrl, this.sthis, joinDBName).name;
13187
- const idb = this._db;
13188
- const trans = idb.transaction(type2, "readwrite");
13189
- const object_store = trans.objectStore(type2);
13190
- const toDelete = [];
13191
- for (let cursor = await object_store.openCursor(); cursor; cursor = await cursor.continue()) {
13192
- toDelete.push(cursor.primaryKey);
13193
- }
13194
- for (const key of toDelete) {
13195
- await trans.db.delete(type2, key);
13196
- }
13197
- await trans.done;
13161
+ const file = await this.getFilePath(url);
13162
+ this.logger.Debug().Str("url", url.toString()).Str("file", file).Msg("put");
13163
+ await this.fs.writefile(file, body);
13198
13164
  });
13199
13165
  }
13200
- buildUrl(baseUrl, key) {
13201
- return Promise.resolve(Result.Ok(baseUrl.build().setParam("key", key).URI()));
13202
- }
13203
13166
  async get(url) {
13204
13167
  return exceptionWrapper(async () => {
13205
- const key = getKey(url, this.logger);
13206
- const store = getStore(url, this.sthis, joinDBName).name;
13207
- this.logger.Debug().Url(url).Str("key", key).Str("store", store).Msg("getting");
13208
- const tx = this._db.transaction([store], "readonly");
13209
- const bytes = await tx.objectStore(store).get(sanitzeKey(key));
13210
- await tx.done;
13211
- if (!bytes) {
13212
- return Result.Err(new NotFoundError2(`missing ${key}`));
13168
+ const file = this.getFilePath(url);
13169
+ try {
13170
+ const res = await this.fs.readfile(file);
13171
+ this.logger.Debug().Url(url.asURL()).Str("file", file).Msg("get");
13172
+ return Result.Ok(new Uint8Array(res));
13173
+ } catch (e) {
13174
+ if (isNotFoundError(e)) {
13175
+ return Result.Err(new NotFoundError2(`file not found: ${file}`));
13176
+ }
13177
+ return Result.Err(e);
13213
13178
  }
13214
- return Result.Ok(bytes);
13215
13179
  });
13216
13180
  }
13217
- async put(url, value) {
13181
+ async delete(url) {
13218
13182
  return exception2Result(async () => {
13219
- const key = getKey(url, this.logger);
13220
- const store = getStore(url, this.sthis, joinDBName).name;
13221
- this.logger.Debug().Url(url).Str("key", key).Str("store", store).Msg("putting");
13222
- const tx = this._db.transaction([store], "readwrite");
13223
- await tx.objectStore(store).put(value, sanitzeKey(key));
13224
- await tx.done;
13183
+ await this.fs.unlink(this.getFilePath(url));
13225
13184
  });
13226
13185
  }
13227
- async delete(url) {
13228
- return exception2Result(async () => {
13229
- const key = getKey(url, this.logger);
13230
- const store = getStore(url, this.sthis, joinDBName).name;
13231
- this.logger.Debug().Url(url).Str("key", key).Str("store", store).Msg("deleting");
13232
- const tx = this._db.transaction([store], "readwrite");
13233
- await tx.objectStore(store).delete(sanitzeKey(key));
13234
- await tx.done;
13235
- return Result.Ok(void 0);
13186
+ async destroy(baseURL) {
13187
+ const url = await this.buildUrl(baseURL, "x");
13188
+ if (url.isErr()) return url;
13189
+ const filepath = this.sthis.pathOps.dirname(this.getFilePath(url.Ok()));
13190
+ let files = [];
13191
+ try {
13192
+ files = await this.fs.readdir(filepath);
13193
+ } catch (e) {
13194
+ if (!isNotFoundError(e)) {
13195
+ throw this.logger.Error().Err(e).Str("dir", filepath).Msg("destroy:readdir").AsError();
13196
+ }
13197
+ }
13198
+ for (const file of files) {
13199
+ const pathed = this.sthis.pathOps.join(filepath, file);
13200
+ try {
13201
+ await this.fs.unlink(pathed);
13202
+ } catch (e) {
13203
+ if (!isNotFoundError(e)) {
13204
+ throw this.logger.Error().Err(e).Str("file", pathed).Msg("destroy:unlink").AsError();
13205
+ }
13206
+ }
13207
+ }
13208
+ return Result.Ok(void 0);
13209
+ }
13210
+ };
13211
+ FileTestStore = class {
13212
+ constructor(sthis) {
13213
+ this.logger = ensureLogger(sthis, "FileTestStore");
13214
+ this.sthis = sthis;
13215
+ }
13216
+ async get(iurl, key) {
13217
+ const url = iurl.build().setParam("key", key).URI();
13218
+ const dbFile = this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
13219
+ this.logger.Debug().Url(url).Str("dbFile", dbFile).Msg("get");
13220
+ const buffer2 = await (await getFileSystem(url)).readfile(dbFile);
13221
+ this.logger.Debug().Url(url).Str("dbFile", dbFile).Len(buffer2).Msg("got");
13222
+ return buffer2;
13223
+ }
13224
+ };
13225
+ }
13226
+ });
13227
+
13228
+ // src/runtime/gateways/indexdb/gateway-import-dynamic.ts
13229
+ function gatewayImport() {
13230
+ const gwimpl = "./web/gateway-impl.js";
13231
+ return import(
13232
+ /* @vite-ignore */
13233
+ gwimpl
13234
+ );
13235
+ }
13236
+ var init_gateway_import_dynamic = __esm({
13237
+ "src/runtime/gateways/indexdb/gateway-import-dynamic.ts"() {
13238
+ "use strict";
13239
+ }
13240
+ });
13241
+
13242
+ // src/runtime/gateways/indexdb/gateway.ts
13243
+ var gateway_exports2 = {};
13244
+ __export(gateway_exports2, {
13245
+ IndexDBGateway: () => IndexDBGateway,
13246
+ IndexDBTestStore: () => IndexDBTestStore
13247
+ });
13248
+ var loadExternal, IndexDBGateway, IndexDBTestStore;
13249
+ var init_gateway2 = __esm({
13250
+ "src/runtime/gateways/indexdb/gateway.ts"() {
13251
+ "use strict";
13252
+ init_cement();
13253
+ init_gateway_import_dynamic();
13254
+ loadExternal = new ResolveOnce();
13255
+ IndexDBGateway = class {
13256
+ constructor(sthis) {
13257
+ this.sthis = sthis;
13258
+ }
13259
+ getGateway() {
13260
+ return loadExternal.once(() => {
13261
+ return gatewayImport().then(({ IndexDBGatewayImpl }) => new IndexDBGatewayImpl(this.sthis));
13236
13262
  });
13237
13263
  }
13264
+ buildUrl(baseUrl, key) {
13265
+ return this.getGateway().then((gw) => gw.buildUrl(baseUrl, key));
13266
+ }
13267
+ start(baseUrl) {
13268
+ return this.getGateway().then((gw) => gw.start(baseUrl));
13269
+ }
13270
+ close(baseUrl) {
13271
+ return this.getGateway().then((gw) => gw.close(baseUrl));
13272
+ }
13273
+ destroy(baseUrl) {
13274
+ return this.getGateway().then((gw) => gw.destroy(baseUrl));
13275
+ }
13276
+ put(url, body) {
13277
+ return this.getGateway().then((gw) => gw.put(url, body));
13278
+ }
13279
+ get(url) {
13280
+ return this.getGateway().then((gw) => gw.get(url));
13281
+ }
13282
+ delete(url) {
13283
+ return this.getGateway().then((gw) => gw.delete(url));
13284
+ }
13285
+ // subscribe?(url: URI, callback: (meta: Uint8Array) => void): Promise<UnsubscribeResult> {
13286
+ // // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
13287
+ // return this.getGateway().then(gw => gw.subscribe!(url, callback));
13288
+ // }
13238
13289
  };
13239
13290
  IndexDBTestStore = class {
13240
13291
  constructor(sthis) {
13292
+ this.loadExternal = new ResolveOnce();
13241
13293
  this.sthis = sthis;
13242
- this.logger = ensureLogger(sthis, "IndexDBTestStore", {});
13243
13294
  }
13244
- async get(url, key) {
13245
- const ic = await connectIdb(url, this.sthis);
13246
- const store = getStore(ic.url, this.sthis, joinDBName).name;
13247
- this.logger.Debug().Str("key", key).Str("store", store).Msg("getting");
13248
- let bytes = await ic.db.get(store, sanitzeKey(key));
13249
- this.logger.Debug().Str("key", key).Str("store", store).Int("len", bytes.length).Msg("got");
13250
- if (typeof bytes === "string") {
13251
- bytes = this.sthis.txt.encode(bytes);
13252
- }
13253
- return bytes;
13295
+ getGateway() {
13296
+ return this.loadExternal.once(() => {
13297
+ return gatewayImport().then(({ IndexDBTestStore: IndexDBTestStore2 }) => new IndexDBTestStore2(this.sthis));
13298
+ });
13299
+ }
13300
+ get(url, key) {
13301
+ return this.getGateway().then((gw) => gw.get(url, key));
13254
13302
  }
13255
13303
  };
13256
13304
  }
@@ -28370,22 +28418,22 @@ You can use close({ resize: true }) to resize header`);
28370
28418
  registerStoreProtocol({
28371
28419
  protocol: "file:",
28372
28420
  gateway: async (sthis) => {
28373
- const { FileGateway } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
28374
- return new FileGateway(sthis);
28421
+ const { FileGateway: FileGateway2 } = await Promise.resolve().then(() => (init_gateway(), gateway_exports));
28422
+ return new FileGateway2(sthis);
28375
28423
  },
28376
28424
  test: async (sthis) => {
28377
- const { FileTestStore } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
28378
- return new FileTestStore(sthis);
28425
+ const { FileTestStore: FileTestStore2 } = await Promise.resolve().then(() => (init_gateway(), gateway_exports));
28426
+ return new FileTestStore2(sthis);
28379
28427
  }
28380
28428
  });
28381
28429
  registerStoreProtocol({
28382
28430
  protocol: "indexdb:",
28383
28431
  gateway: async (sthis) => {
28384
- const { IndexDBGateway: IndexDBGateway2 } = await Promise.resolve().then(() => (init_gateway_skip_esm(), gateway_skip_esm_exports));
28432
+ const { IndexDBGateway: IndexDBGateway2 } = await Promise.resolve().then(() => (init_gateway2(), gateway_exports2));
28385
28433
  return new IndexDBGateway2(sthis);
28386
28434
  },
28387
28435
  test: async (sthis) => {
28388
- const { IndexDBTestStore: IndexDBTestStore2 } = await Promise.resolve().then(() => (init_gateway_skip_esm(), gateway_skip_esm_exports));
28436
+ const { IndexDBTestStore: IndexDBTestStore2 } = await Promise.resolve().then(() => (init_gateway2(), gateway_exports2));
28389
28437
  return new IndexDBTestStore2(sthis);
28390
28438
  }
28391
28439
  });
@@ -30758,8 +30806,7 @@ You can use close({ resize: true }) to resize header`);
30758
30806
  kb: () => key_bag_exports,
30759
30807
  kc: () => keyed_crypto_exports,
30760
30808
  mf: () => wait_pr_multiformats_exports,
30761
- runtimeFn: () => runtimeFn,
30762
- toArrayBuffer: () => toArrayBuffer
30809
+ runtimeFn: () => runtimeFn
30763
30810
  });
30764
30811
  init_utils2();
30765
30812
 
@@ -30775,19 +30822,17 @@ You can use close({ resize: true }) to resize header`);
30775
30822
 
30776
30823
  // src/runtime/index.ts
30777
30824
  init_cement();
30778
-
30779
- // src/runtime/gateways/file/version.ts
30780
- var FILESTORE_VERSION = "v0.19-file";
30781
-
30782
- // src/runtime/index.ts
30783
30825
  init_version();
30784
30826
 
30827
+ // src/runtime/gateways/indexdb/version.ts
30828
+ var INDEXDB_VERSION = "v0.19-indexdb";
30829
+
30785
30830
  // src/index.ts
30786
30831
  init_utils();
30787
30832
 
30788
30833
  // src/version.ts
30789
30834
  var PACKAGE_VERSION = Object.keys({
30790
- "0.19.112-dev-web": "xxxx"
30835
+ "0.19.112-dev-dyn": "xxxx"
30791
30836
  })[0];
30792
30837
  return __toCommonJS(src_exports6);
30793
30838
  })();