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

Sign up to get free protection for your applications and to get access to all the features.
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-OKACCIGZ.js} +15 -29
  4. package/chunk-OKACCIGZ.js.map +1 -0
  5. package/chunk-PZ5AY32C.js +10 -0
  6. package/gateway-3YJXDXD3.js +59 -0
  7. package/gateway-3YJXDXD3.js.map +1 -0
  8. package/{gateway@skip-iife-OZ2V32XH.js → gateway-HUSQCAA7.js} +5 -4
  9. package/gateway-HUSQCAA7.js.map +1 -0
  10. package/index.cjs +73 -285
  11. package/index.cjs.map +1 -1
  12. package/index.d.cts +1 -3
  13. package/index.d.ts +1 -3
  14. package/index.global.js +195 -171
  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-QCOF7UFH.js} +4 -3
  19. package/{key-bag-file-4TYN2H7F.js.map → key-bag-file-QCOF7UFH.js.map} +1 -1
  20. package/{key-bag-indexdb-JEOAS4WM.js → key-bag-indexdb-VHX3MZ66.js} +4 -3
  21. package/{key-bag-indexdb-JEOAS4WM.js.map → key-bag-indexdb-VHX3MZ66.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-GYG2FMCZ.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-GYG2FMCZ.js.map} +0 -0
package/index.d.cts CHANGED
@@ -1037,7 +1037,6 @@ declare function fireproof(name: string, opts?: ConfigOpts): Database;
1037
1037
  declare function getFileSystem(url: URI): Promise<SysFileSystem>;
1038
1038
  declare function getPath(url: URI, sthis: SuperThis): string;
1039
1039
  declare function getFileName(url: URI, sthis: SuperThis): string;
1040
- declare function toArrayBuffer(buffer: Buffer | string): Uint8Array;
1041
1040
 
1042
1041
  declare function encodeFile(blob: BlobLike): Promise<{
1043
1042
  cid: AnyLink;
@@ -1128,9 +1127,8 @@ declare const index_getFileName: typeof getFileName;
1128
1127
  declare const index_getFileSystem: typeof getFileSystem;
1129
1128
  declare const index_getPath: typeof getPath;
1130
1129
  declare const index_runtimeFn: typeof runtimeFn;
1131
- declare const index_toArrayBuffer: typeof toArrayBuffer;
1132
1130
  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 };
1131
+ 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
1132
  }
1135
1133
 
1136
1134
  declare const PACKAGE_VERSION: string;
package/index.d.ts CHANGED
@@ -1037,7 +1037,6 @@ declare function fireproof(name: string, opts?: ConfigOpts): Database;
1037
1037
  declare function getFileSystem(url: URI): Promise<SysFileSystem>;
1038
1038
  declare function getPath(url: URI, sthis: SuperThis): string;
1039
1039
  declare function getFileName(url: URI, sthis: SuperThis): string;
1040
- declare function toArrayBuffer(buffer: Buffer | string): Uint8Array;
1041
1040
 
1042
1041
  declare function encodeFile(blob: BlobLike): Promise<{
1043
1042
  cid: AnyLink;
@@ -1128,9 +1127,8 @@ declare const index_getFileName: typeof getFileName;
1128
1127
  declare const index_getFileSystem: typeof getFileSystem;
1129
1128
  declare const index_getPath: typeof getPath;
1130
1129
  declare const index_runtimeFn: typeof runtimeFn;
1131
- declare const index_toArrayBuffer: typeof toArrayBuffer;
1132
1130
  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 };
1131
+ 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
1132
  }
1135
1133
 
1136
1134
  declare const PACKAGE_VERSION: string;
package/index.global.js CHANGED
@@ -12431,33 +12431,28 @@ ${end.comment}` : end.comment;
12431
12431
  __export(utils_exports2, {
12432
12432
  getFileName: () => getFileName,
12433
12433
  getFileSystem: () => getFileSystem,
12434
- getPath: () => getPath,
12435
- toArrayBuffer: () => toArrayBuffer
12434
+ getPath: () => getPath
12436
12435
  });
12437
12436
  async function getFileSystem(url) {
12438
- const name6 = url.getParam("fs");
12437
+ const name6 = url.getParam("fs", "node");
12439
12438
  let fs;
12440
12439
  switch (name6) {
12441
12440
  case "mem":
12442
- {
12441
+ fs = await externalLoaders.get(name6).once(async () => {
12443
12442
  const { MemFileSystem } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
12444
- fs = new MemFileSystem();
12445
- }
12443
+ return new MemFileSystem();
12444
+ });
12446
12445
  break;
12447
12446
  // case 'deno': {
12448
12447
  // const { DenoFileSystem } = await import("./deno-filesystem.js");
12449
12448
  // fs = new DenoFileSystem();
12450
12449
  // break;
12451
12450
  // }
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
- }
12451
+ default:
12452
+ fs = await externalLoaders.get(name6).once(async () => {
12453
+ const { NodeFileSystem } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
12454
+ return new NodeFileSystem();
12455
+ });
12461
12456
  }
12462
12457
  return fs.start();
12463
12458
  }
@@ -12485,21 +12480,13 @@ ${end.comment}` : end.comment;
12485
12480
  throw sthis.logger.Error().Url(url).Msg(`unsupported store type`).AsError();
12486
12481
  }
12487
12482
  }
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
- }
12483
+ var externalLoaders;
12499
12484
  var init_utils2 = __esm({
12500
12485
  "src/runtime/gateways/file/utils.ts"() {
12501
12486
  "use strict";
12487
+ init_cement();
12502
12488
  init_utils();
12489
+ externalLoaders = new KeyedResolvOnce();
12503
12490
  }
12504
12491
  });
12505
12492
 
@@ -13084,173 +13071,213 @@ ${end.comment}` : end.comment;
13084
13071
  }
13085
13072
  });
13086
13073
 
13087
- // src/runtime/gateways/indexdb/version.ts
13088
- var INDEXDB_VERSION;
13074
+ // src/runtime/gateways/file/version.ts
13075
+ var FILESTORE_VERSION;
13089
13076
  var init_version = __esm({
13090
- "src/runtime/gateways/indexdb/version.ts"() {
13077
+ "src/runtime/gateways/file/version.ts"() {
13091
13078
  "use strict";
13092
- INDEXDB_VERSION = "v0.19-indexdb";
13079
+ FILESTORE_VERSION = "v0.19-file";
13093
13080
  }
13094
13081
  });
13095
13082
 
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
13083
+ // src/runtime/gateways/file/gateway.ts
13084
+ var gateway_exports = {};
13085
+ __export(gateway_exports, {
13086
+ FileGateway: () => FileGateway,
13087
+ FileTestStore: () => FileTestStore
13102
13088
  });
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"() {
13089
+ var versionFiles, FileGateway, FileTestStore;
13090
+ var init_gateway = __esm({
13091
+ "src/runtime/gateways/file/gateway.ts"() {
13159
13092
  "use strict";
13160
- init_build();
13161
- init_cement();
13162
13093
  init_version();
13094
+ init_cement();
13163
13095
  init_utils();
13164
- onceIndexDB = new KeyedResolvOnce();
13165
- IndexDBGateway = class {
13096
+ init_utils2();
13097
+ versionFiles = new KeyedResolvOnce();
13098
+ FileGateway = class {
13099
+ get fs() {
13100
+ if (!this._fs) throw this.logger.Error().Msg("fs not initialized").AsError();
13101
+ return this._fs;
13102
+ }
13166
13103
  constructor(sthis) {
13167
- this._db = {};
13168
- this.logger = ensureLogger(sthis, "IndexDBGateway");
13169
13104
  this.sthis = sthis;
13105
+ this.logger = sthis.logger;
13170
13106
  }
13171
- async start(baseURL) {
13107
+ async getVersionFromFile(path, logger) {
13108
+ return versionFiles.get(path).once(async () => {
13109
+ await this.fs.mkdir(path, { recursive: true });
13110
+ const vFile = this.sthis.pathOps.join(path, "version");
13111
+ const vFileStat = await this.fs.stat(vFile).catch(() => void 0);
13112
+ if (!vFileStat) {
13113
+ await this.fs.writefile(this.sthis.pathOps.join(path, "version"), FILESTORE_VERSION);
13114
+ return FILESTORE_VERSION;
13115
+ } else if (!vFileStat.isFile()) {
13116
+ throw logger.Error().Str("file", vFile).Msg(`version file is a directory`).AsError();
13117
+ }
13118
+ const v = await this.fs.readfile(vFile);
13119
+ const vStr = this.sthis.txt.decode(v);
13120
+ if (vStr !== FILESTORE_VERSION) {
13121
+ logger.Warn().Str("file", vFile).Str("from", vStr).Str("expected", FILESTORE_VERSION).Msg(`version mismatch`);
13122
+ }
13123
+ return vStr;
13124
+ });
13125
+ }
13126
+ start(baseURL) {
13172
13127
  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;
13128
+ this._fs = await getFileSystem(baseURL);
13129
+ await this.fs.start();
13130
+ const url = baseURL.build();
13131
+ url.defParam("version", FILESTORE_VERSION);
13132
+ const dbUrl = await this.buildUrl(url.URI(), "dummy");
13133
+ const dbdirFile = this.getFilePath(dbUrl.Ok());
13134
+ await this.fs.mkdir(this.sthis.pathOps.dirname(dbdirFile), { recursive: true });
13135
+ const dbroot = this.sthis.pathOps.dirname(dbdirFile);
13136
+ this.logger.Debug().Url(url.URI()).Str("dbroot", dbroot).Msg("start");
13137
+ url.setParam("version", await this.getVersionFromFile(dbroot, this.logger));
13138
+ return url.URI();
13179
13139
  });
13180
13140
  }
13141
+ async buildUrl(baseUrl, key) {
13142
+ return Result.Ok(baseUrl.build().setParam("key", key).URI());
13143
+ }
13181
13144
  async close() {
13182
13145
  return Result.Ok(void 0);
13183
13146
  }
13184
- async destroy(baseUrl) {
13147
+ // abstract buildUrl(baseUrl: URL, key: string): Promise<Result<URL>>;
13148
+ getFilePath(url) {
13149
+ const key = url.getParam("key");
13150
+ if (!key) throw this.logger.Error().Url(url).Msg(`key not found`).AsError();
13151
+ return this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
13152
+ }
13153
+ async put(url, body) {
13185
13154
  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;
13155
+ const file = await this.getFilePath(url);
13156
+ this.logger.Debug().Str("url", url.toString()).Str("file", file).Msg("put");
13157
+ await this.fs.writefile(file, body);
13198
13158
  });
13199
13159
  }
13200
- buildUrl(baseUrl, key) {
13201
- return Promise.resolve(Result.Ok(baseUrl.build().setParam("key", key).URI()));
13202
- }
13203
13160
  async get(url) {
13204
13161
  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}`));
13162
+ const file = this.getFilePath(url);
13163
+ try {
13164
+ const res = await this.fs.readfile(file);
13165
+ this.logger.Debug().Url(url.asURL()).Str("file", file).Msg("get");
13166
+ return Result.Ok(new Uint8Array(res));
13167
+ } catch (e) {
13168
+ if (isNotFoundError(e)) {
13169
+ return Result.Err(new NotFoundError2(`file not found: ${file}`));
13170
+ }
13171
+ return Result.Err(e);
13213
13172
  }
13214
- return Result.Ok(bytes);
13215
13173
  });
13216
13174
  }
13217
- async put(url, value) {
13175
+ async delete(url) {
13218
13176
  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;
13177
+ await this.fs.unlink(this.getFilePath(url));
13225
13178
  });
13226
13179
  }
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);
13180
+ async destroy(baseURL) {
13181
+ const url = await this.buildUrl(baseURL, "x");
13182
+ if (url.isErr()) return url;
13183
+ const filepath = this.sthis.pathOps.dirname(this.getFilePath(url.Ok()));
13184
+ let files = [];
13185
+ try {
13186
+ files = await this.fs.readdir(filepath);
13187
+ } catch (e) {
13188
+ if (!isNotFoundError(e)) {
13189
+ throw this.logger.Error().Err(e).Str("dir", filepath).Msg("destroy:readdir").AsError();
13190
+ }
13191
+ }
13192
+ for (const file of files) {
13193
+ const pathed = this.sthis.pathOps.join(filepath, file);
13194
+ try {
13195
+ await this.fs.unlink(pathed);
13196
+ } catch (e) {
13197
+ if (!isNotFoundError(e)) {
13198
+ throw this.logger.Error().Err(e).Str("file", pathed).Msg("destroy:unlink").AsError();
13199
+ }
13200
+ }
13201
+ }
13202
+ return Result.Ok(void 0);
13203
+ }
13204
+ };
13205
+ FileTestStore = class {
13206
+ constructor(sthis) {
13207
+ this.logger = ensureLogger(sthis, "FileTestStore");
13208
+ this.sthis = sthis;
13209
+ }
13210
+ async get(iurl, key) {
13211
+ const url = iurl.build().setParam("key", key).URI();
13212
+ const dbFile = this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
13213
+ this.logger.Debug().Url(url).Str("dbFile", dbFile).Msg("get");
13214
+ const buffer2 = await (await getFileSystem(url)).readfile(dbFile);
13215
+ this.logger.Debug().Url(url).Str("dbFile", dbFile).Len(buffer2).Msg("got");
13216
+ return buffer2;
13217
+ }
13218
+ };
13219
+ }
13220
+ });
13221
+
13222
+ // src/runtime/gateways/indexdb/gateway.ts
13223
+ var gateway_exports2 = {};
13224
+ __export(gateway_exports2, {
13225
+ IndexDBGateway: () => IndexDBGateway,
13226
+ IndexDBTestStore: () => IndexDBTestStore
13227
+ });
13228
+ var loadExternal, IndexDBGateway, IndexDBTestStore;
13229
+ var init_gateway2 = __esm({
13230
+ "src/runtime/gateways/indexdb/gateway.ts"() {
13231
+ "use strict";
13232
+ init_cement();
13233
+ loadExternal = new ResolveOnce();
13234
+ IndexDBGateway = class {
13235
+ constructor(sthis) {
13236
+ this.sthis = sthis;
13237
+ }
13238
+ getGateway() {
13239
+ return loadExternal.once(() => {
13240
+ return Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1)).then(({ IndexDBGatewayImpl }) => new IndexDBGatewayImpl(this.sthis));
13236
13241
  });
13237
13242
  }
13243
+ buildUrl(baseUrl, key) {
13244
+ return this.getGateway().then((gw) => gw.buildUrl(baseUrl, key));
13245
+ }
13246
+ start(baseUrl) {
13247
+ return this.getGateway().then((gw) => gw.start(baseUrl));
13248
+ }
13249
+ close(baseUrl) {
13250
+ return this.getGateway().then((gw) => gw.close(baseUrl));
13251
+ }
13252
+ destroy(baseUrl) {
13253
+ return this.getGateway().then((gw) => gw.destroy(baseUrl));
13254
+ }
13255
+ put(url, body) {
13256
+ return this.getGateway().then((gw) => gw.put(url, body));
13257
+ }
13258
+ get(url) {
13259
+ return this.getGateway().then((gw) => gw.get(url));
13260
+ }
13261
+ delete(url) {
13262
+ return this.getGateway().then((gw) => gw.delete(url));
13263
+ }
13264
+ // subscribe?(url: URI, callback: (meta: Uint8Array) => void): Promise<UnsubscribeResult> {
13265
+ // // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
13266
+ // return this.getGateway().then(gw => gw.subscribe!(url, callback));
13267
+ // }
13238
13268
  };
13239
13269
  IndexDBTestStore = class {
13240
13270
  constructor(sthis) {
13271
+ this.loadExternal = new ResolveOnce();
13241
13272
  this.sthis = sthis;
13242
- this.logger = ensureLogger(sthis, "IndexDBTestStore", {});
13243
13273
  }
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;
13274
+ getGateway() {
13275
+ return this.loadExternal.once(() => {
13276
+ return Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1)).then(({ IndexDBTestStore: IndexDBTestStore2 }) => new IndexDBTestStore2(this.sthis));
13277
+ });
13278
+ }
13279
+ get(url, key) {
13280
+ return this.getGateway().then((gw) => gw.get(url, key));
13254
13281
  }
13255
13282
  };
13256
13283
  }
@@ -28370,22 +28397,22 @@ You can use close({ resize: true }) to resize header`);
28370
28397
  registerStoreProtocol({
28371
28398
  protocol: "file:",
28372
28399
  gateway: async (sthis) => {
28373
- const { FileGateway } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
28374
- return new FileGateway(sthis);
28400
+ const { FileGateway: FileGateway2 } = await Promise.resolve().then(() => (init_gateway(), gateway_exports));
28401
+ return new FileGateway2(sthis);
28375
28402
  },
28376
28403
  test: async (sthis) => {
28377
- const { FileTestStore } = await Promise.resolve().then(() => __toESM(require_bundle_not_impl(), 1));
28378
- return new FileTestStore(sthis);
28404
+ const { FileTestStore: FileTestStore2 } = await Promise.resolve().then(() => (init_gateway(), gateway_exports));
28405
+ return new FileTestStore2(sthis);
28379
28406
  }
28380
28407
  });
28381
28408
  registerStoreProtocol({
28382
28409
  protocol: "indexdb:",
28383
28410
  gateway: async (sthis) => {
28384
- const { IndexDBGateway: IndexDBGateway2 } = await Promise.resolve().then(() => (init_gateway_skip_esm(), gateway_skip_esm_exports));
28411
+ const { IndexDBGateway: IndexDBGateway2 } = await Promise.resolve().then(() => (init_gateway2(), gateway_exports2));
28385
28412
  return new IndexDBGateway2(sthis);
28386
28413
  },
28387
28414
  test: async (sthis) => {
28388
- const { IndexDBTestStore: IndexDBTestStore2 } = await Promise.resolve().then(() => (init_gateway_skip_esm(), gateway_skip_esm_exports));
28415
+ const { IndexDBTestStore: IndexDBTestStore2 } = await Promise.resolve().then(() => (init_gateway2(), gateway_exports2));
28389
28416
  return new IndexDBTestStore2(sthis);
28390
28417
  }
28391
28418
  });
@@ -30758,8 +30785,7 @@ You can use close({ resize: true }) to resize header`);
30758
30785
  kb: () => key_bag_exports,
30759
30786
  kc: () => keyed_crypto_exports,
30760
30787
  mf: () => wait_pr_multiformats_exports,
30761
- runtimeFn: () => runtimeFn,
30762
- toArrayBuffer: () => toArrayBuffer
30788
+ runtimeFn: () => runtimeFn
30763
30789
  });
30764
30790
  init_utils2();
30765
30791
 
@@ -30775,19 +30801,17 @@ You can use close({ resize: true }) to resize header`);
30775
30801
 
30776
30802
  // src/runtime/index.ts
30777
30803
  init_cement();
30778
-
30779
- // src/runtime/gateways/file/version.ts
30780
- var FILESTORE_VERSION = "v0.19-file";
30781
-
30782
- // src/runtime/index.ts
30783
30804
  init_version();
30784
30805
 
30806
+ // src/runtime/gateways/indexdb/version.ts
30807
+ var INDEXDB_VERSION = "v0.19-indexdb";
30808
+
30785
30809
  // src/index.ts
30786
30810
  init_utils();
30787
30811
 
30788
30812
  // src/version.ts
30789
30813
  var PACKAGE_VERSION = Object.keys({
30790
- "0.19.112-dev-web": "xxxx"
30814
+ "0.19.112-dev-iife": "xxxx"
30791
30815
  })[0];
30792
30816
  return __toCommonJS(src_exports6);
30793
30817
  })();