@fireproof/core 0.19.5-dev → 0.19.8-dev-alldocs

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. package/{chunk-QHSXUST7.js → chunk-5UFCF36O.js} +3 -3
  2. package/{chunk-HCXR2M5B.js → chunk-DG6XSV44.js} +175 -7
  3. package/chunk-DG6XSV44.js.map +1 -0
  4. package/{chunk-H3A2HMMM.js → chunk-OWQAHX2V.js} +2 -2
  5. package/chunk-OWQAHX2V.js.map +1 -0
  6. package/{chunk-7OGPZSGT.js → chunk-PRQHQG4I.js} +2 -2
  7. package/index.cjs +248 -191
  8. package/index.cjs.map +1 -1
  9. package/index.d.cts +174 -68
  10. package/index.d.ts +174 -68
  11. package/index.global.js +24688 -0
  12. package/index.global.js.map +1 -0
  13. package/index.js +60 -127
  14. package/index.js.map +1 -1
  15. package/metafile-cjs.json +1 -1
  16. package/metafile-esm.json +1 -1
  17. package/metafile-iife.json +1 -0
  18. package/{node-sys-container-E7LADX2Z.js → node-sys-container-TTGEC66A.js} +2 -2
  19. package/package.json +1 -1
  20. package/{sqlite-data-store-YS4U7AQ4.js → sqlite-data-store-MA55LVQE.js} +4 -4
  21. package/{sqlite-meta-store-FJZSZG4R.js → sqlite-meta-store-UNQKVYRM.js} +4 -4
  22. package/{sqlite-wal-store-6JZ4URNS.js → sqlite-wal-store-KVUOC4PO.js} +4 -4
  23. package/{store-file-HMHPQTUV.js → store-file-WD746RSY.js} +3 -3
  24. package/{store-indexdb-MRVZG4OG.js → store-indexdb-NG45BU3Q.js} +4 -4
  25. package/{store-sql-5XMJ5OWJ.js → store-sql-QVFNIGND.js} +7 -69
  26. package/store-sql-QVFNIGND.js.map +1 -0
  27. package/tests/blockstore/loader.test.ts +265 -0
  28. package/tests/blockstore/store.test.ts +164 -0
  29. package/tests/blockstore/transaction.test.ts +121 -0
  30. package/tests/fireproof/config.test.ts +212 -0
  31. package/tests/fireproof/crdt.test.ts +434 -0
  32. package/tests/fireproof/database.test.ts +466 -0
  33. package/tests/fireproof/fireproof.test.ts +602 -0
  34. package/tests/fireproof/hello.test.ts +54 -0
  35. package/tests/fireproof/indexer.test.ts +389 -0
  36. package/tests/helpers.ts +81 -0
  37. package/tests/react/useFireproof.test.tsx +19 -0
  38. package/tests/www/gallery.html +132 -0
  39. package/tests/www/iife.html +42 -0
  40. package/tests/www/todo-aws.html +232 -0
  41. package/tests/www/todo-ipfs.html +213 -0
  42. package/tests/www/todo-local.html +214 -0
  43. package/tests/www/todo-netlify.html +227 -0
  44. package/tests/www/todo.html +236 -0
  45. package/chunk-H3A2HMMM.js.map +0 -1
  46. package/chunk-HCXR2M5B.js.map +0 -1
  47. package/store-sql-5XMJ5OWJ.js.map +0 -1
  48. /package/{chunk-QHSXUST7.js.map → chunk-5UFCF36O.js.map} +0 -0
  49. /package/{chunk-7OGPZSGT.js.map → chunk-PRQHQG4I.js.map} +0 -0
  50. /package/{node-sys-container-E7LADX2Z.js.map → node-sys-container-TTGEC66A.js.map} +0 -0
  51. /package/{sqlite-data-store-YS4U7AQ4.js.map → sqlite-data-store-MA55LVQE.js.map} +0 -0
  52. /package/{sqlite-meta-store-FJZSZG4R.js.map → sqlite-meta-store-UNQKVYRM.js.map} +0 -0
  53. /package/{sqlite-wal-store-6JZ4URNS.js.map → sqlite-wal-store-KVUOC4PO.js.map} +0 -0
  54. /package/{store-file-HMHPQTUV.js.map → store-file-WD746RSY.js.map} +0 -0
  55. /package/{store-indexdb-MRVZG4OG.js.map → store-indexdb-NG45BU3Q.js.map} +0 -0
package/index.cjs CHANGED
@@ -225,10 +225,6 @@ var init_sys_container = __esm({
225
225
 
226
226
  // src/runtime/data-dir.ts
227
227
  function dataDir(name, base) {
228
- const dataDir2 = _dataDir(name, base);
229
- return dataDir2;
230
- }
231
- function _dataDir(name, base) {
232
228
  if (!base) {
233
229
  if (import_std_env.isNode || import_std_env.isDeno) {
234
230
  base = SysContainer.env.get("FP_STORAGE_URL") || `file://${SysContainer.join(SysContainer.homedir(), ".fireproof")}`;
@@ -298,6 +294,203 @@ var init_store_file_utils = __esm({
298
294
  }
299
295
  });
300
296
 
297
+ // src/runtime/store-sql/types.ts
298
+ var DefaultSQLTableNames;
299
+ var init_types2 = __esm({
300
+ "src/runtime/store-sql/types.ts"() {
301
+ "use strict";
302
+ DefaultSQLTableNames = {
303
+ data: "Datas",
304
+ meta: "Metas",
305
+ wal: "Wals"
306
+ };
307
+ }
308
+ });
309
+
310
+ // src/runtime/store-sql/ensurer.ts
311
+ function sqlTableName(...names) {
312
+ return names.map((name) => name.replace(/^[^a-zA-Z0-9]+/, "").replace(/[^a-zA-Z0-9]+/g, "_")).filter((i) => i.length).join("_");
313
+ }
314
+ function ensureTableNames(url, opts) {
315
+ let isIndex = "";
316
+ if (url.searchParams.has("index")) {
317
+ isIndex = url.searchParams.get("index") || ".idx";
318
+ }
319
+ const ret = opts?.tableNames || DefaultSQLTableNames;
320
+ if (isIndex.length) {
321
+ return {
322
+ data: sqlTableName(isIndex, ret.data),
323
+ meta: sqlTableName(isIndex, ret.meta),
324
+ wal: sqlTableName(isIndex, ret.wal)
325
+ };
326
+ }
327
+ return {
328
+ data: sqlTableName(ret.data),
329
+ meta: sqlTableName(ret.meta),
330
+ wal: sqlTableName(ret.wal)
331
+ };
332
+ }
333
+ function ensureTextEncoder(opts) {
334
+ return opts?.textEncoder || textEncoder;
335
+ }
336
+ function ensureTextDecoder(opts) {
337
+ return opts?.textDecoder || textDecoder;
338
+ }
339
+ function url2sqlFlavor(url, logger) {
340
+ const flavor = url.protocol.replace(/:.*$/, "");
341
+ switch (flavor) {
342
+ case "sqlite":
343
+ case "mysql":
344
+ case "postgres":
345
+ return flavor;
346
+ default:
347
+ throw logger.Error().Str("flavor", flavor).Msg("unsupported protocol").AsError();
348
+ }
349
+ }
350
+ function ensureSQLOpts(url, opts, componentName, ctx) {
351
+ const logger = ensureLogger(opts, componentName, ctx);
352
+ return {
353
+ url,
354
+ sqlFlavor: url2sqlFlavor(url, logger),
355
+ tableNames: ensureTableNames(url, opts),
356
+ logger,
357
+ textEncoder: ensureTextEncoder(opts),
358
+ textDecoder: ensureTextDecoder(opts)
359
+ };
360
+ }
361
+ var textEncoder, textDecoder;
362
+ var init_ensurer = __esm({
363
+ "src/runtime/store-sql/ensurer.ts"() {
364
+ "use strict";
365
+ init_utils();
366
+ init_types2();
367
+ textEncoder = new TextEncoder();
368
+ textDecoder = new TextDecoder();
369
+ }
370
+ });
371
+
372
+ // src/runtime/store-sql/index.ts
373
+ var store_sql_exports = {};
374
+ __export(store_sql_exports, {
375
+ DefaultSQLTableNames: () => DefaultSQLTableNames,
376
+ ensureSQLOpts: () => ensureSQLOpts
377
+ });
378
+ var init_store_sql = __esm({
379
+ "src/runtime/store-sql/index.ts"() {
380
+ "use strict";
381
+ init_types2();
382
+ init_ensurer();
383
+ }
384
+ });
385
+
386
+ // src/runtime/crypto.ts
387
+ var crypto_exports = {};
388
+ __export(crypto_exports, {
389
+ toCryptoOpts: () => toCryptoOpts
390
+ });
391
+ function randomBytes(size) {
392
+ const bytes = new Uint8Array(size);
393
+ if (size > 0) {
394
+ crypto.getRandomValues(bytes);
395
+ }
396
+ return bytes;
397
+ }
398
+ function digestSHA256(data) {
399
+ return Promise.resolve(crypto.subtle.digest("SHA-256", data));
400
+ }
401
+ function toCryptoOpts(cryptoOpts = {}) {
402
+ const opts = {
403
+ importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),
404
+ encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),
405
+ decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),
406
+ randomBytes: cryptoOpts.randomBytes || randomBytes,
407
+ digestSHA256: cryptoOpts.digestSHA256 || digestSHA256
408
+ };
409
+ return opts;
410
+ }
411
+ var init_crypto = __esm({
412
+ "src/runtime/crypto.ts"() {
413
+ "use strict";
414
+ }
415
+ });
416
+
417
+ // src/runtime/files.ts
418
+ var files_exports = {};
419
+ __export(files_exports, {
420
+ decodeFile: () => decodeFile,
421
+ encodeFile: () => encodeFile
422
+ });
423
+ async function collect(collectable) {
424
+ const chunks = [];
425
+ await collectable.pipeTo(
426
+ new WritableStream({
427
+ write(chunk) {
428
+ chunks.push(chunk);
429
+ }
430
+ })
431
+ );
432
+ return chunks;
433
+ }
434
+ async function encodeFile(blob) {
435
+ const readable = createFileEncoderStream(blob);
436
+ const blocks = await collect(readable);
437
+ return { cid: blocks.at(-1).cid, blocks };
438
+ }
439
+ async function decodeFile(blocks, cid, meta) {
440
+ const entry = await (0, import_ipfs_unixfs_exporter.exporter)(cid.toString(), blocks, { length: meta.size });
441
+ const chunks = [];
442
+ for await (const chunk of entry.content()) {
443
+ chunks.push(chunk);
444
+ }
445
+ return new File(chunks, entry.name, { type: meta.type, lastModified: 0 });
446
+ }
447
+ function createFileEncoderStream(blob) {
448
+ const { readable, writable } = new TransformStream({}, queuingStrategy);
449
+ const unixfsWriter = UnixFS.createWriter({ writable, settings });
450
+ const fileBuilder = new UnixFSFileBuilder("", blob);
451
+ void (async () => {
452
+ await fileBuilder.finalize(unixfsWriter);
453
+ await unixfsWriter.close();
454
+ })();
455
+ return readable;
456
+ }
457
+ var UnixFS, raw, import_fixed, import_balanced, import_ipfs_unixfs_exporter, queuingStrategy, settings, UnixFSFileBuilder;
458
+ var init_files = __esm({
459
+ "src/runtime/files.ts"() {
460
+ "use strict";
461
+ UnixFS = __toESM(require("@ipld/unixfs"), 1);
462
+ raw = __toESM(require("multiformats/codecs/raw"), 1);
463
+ import_fixed = require("@ipld/unixfs/file/chunker/fixed");
464
+ import_balanced = require("@ipld/unixfs/file/layout/balanced");
465
+ import_ipfs_unixfs_exporter = require("ipfs-unixfs-exporter");
466
+ queuingStrategy = UnixFS.withCapacity();
467
+ settings = UnixFS.configure({
468
+ fileChunkEncoder: raw,
469
+ smallFileEncoder: raw,
470
+ chunker: (0, import_fixed.withMaxChunkSize)(1024 * 1024),
471
+ fileLayout: (0, import_balanced.withWidth)(1024)
472
+ });
473
+ UnixFSFileBuilder = class {
474
+ #file;
475
+ constructor(name, file) {
476
+ this.name = name;
477
+ this.#file = file;
478
+ }
479
+ async finalize(writer) {
480
+ const unixfsFileWriter = UnixFS.createFileWriter(writer);
481
+ await this.#file.stream().pipeTo(
482
+ new WritableStream({
483
+ async write(chunk) {
484
+ await unixfsFileWriter.write(chunk);
485
+ }
486
+ })
487
+ );
488
+ return await unixfsFileWriter.close();
489
+ }
490
+ };
491
+ }
492
+ });
493
+
301
494
  // src/runtime/store-file-version.ts
302
495
  var FILESTORE_VERSION;
303
496
  var init_store_file_version = __esm({
@@ -332,11 +525,14 @@ __export(runtime_exports, {
332
525
  INDEXDB_VERSION: () => INDEXDB_VERSION,
333
526
  SQLITE_VERSION: () => SQLITE_VERSION,
334
527
  SysContainer: () => SysContainer,
528
+ crypto: () => crypto_exports,
335
529
  dataDir: () => dataDir,
336
530
  ensureIndexName: () => ensureIndexName,
531
+ files: () => files_exports,
337
532
  getFileName: () => getFileName,
338
533
  getPath: () => getPath,
339
- join: () => join
534
+ join: () => join,
535
+ sql: () => store_sql_exports
340
536
  });
341
537
  var init_runtime = __esm({
342
538
  "src/runtime/index.ts"() {
@@ -344,6 +540,9 @@ var init_runtime = __esm({
344
540
  init_sys_container();
345
541
  init_data_dir();
346
542
  init_store_file_utils();
543
+ init_store_sql();
544
+ init_crypto();
545
+ init_files();
347
546
  init_store_file_version();
348
547
  init_store_indexdb_version();
349
548
  init_version();
@@ -863,81 +1062,6 @@ var init_store_file = __esm({
863
1062
  }
864
1063
  });
865
1064
 
866
- // src/runtime/store-sql/types.ts
867
- var DefaultSQLTableNames;
868
- var init_types2 = __esm({
869
- "src/runtime/store-sql/types.ts"() {
870
- "use strict";
871
- DefaultSQLTableNames = {
872
- data: "Datas",
873
- meta: "Metas",
874
- wal: "Wals"
875
- };
876
- }
877
- });
878
-
879
- // src/runtime/store-sql/ensurer.ts
880
- function sqlTableName(...names) {
881
- return names.map((name) => name.replace(/^[^a-zA-Z0-9]+/, "").replace(/[^a-zA-Z0-9]+/g, "_")).filter((i) => i.length).join("_");
882
- }
883
- function ensureTableNames(url, opts) {
884
- let isIndex = "";
885
- if (url.searchParams.has("index")) {
886
- isIndex = url.searchParams.get("index") || ".idx";
887
- }
888
- const ret = opts?.tableNames || DefaultSQLTableNames;
889
- if (isIndex.length) {
890
- return {
891
- data: sqlTableName(isIndex, ret.data),
892
- meta: sqlTableName(isIndex, ret.meta),
893
- wal: sqlTableName(isIndex, ret.wal)
894
- };
895
- }
896
- return {
897
- data: sqlTableName(ret.data),
898
- meta: sqlTableName(ret.meta),
899
- wal: sqlTableName(ret.wal)
900
- };
901
- }
902
- function ensureTextEncoder(opts) {
903
- return opts?.textEncoder || textEncoder2;
904
- }
905
- function ensureTextDecoder(opts) {
906
- return opts?.textDecoder || textDecoder2;
907
- }
908
- function url2sqlFlavor(url, logger) {
909
- const flavor = url.protocol.replace(/:.*$/, "");
910
- switch (flavor) {
911
- case "sqlite":
912
- case "mysql":
913
- case "postgres":
914
- return flavor;
915
- default:
916
- throw logger.Error().Str("flavor", flavor).Msg("unsupported protocol").AsError();
917
- }
918
- }
919
- function ensureSQLOpts(url, opts, componentName, ctx) {
920
- const logger = ensureLogger(opts, componentName, ctx);
921
- return {
922
- url,
923
- sqlFlavor: url2sqlFlavor(url, logger),
924
- tableNames: ensureTableNames(url, opts),
925
- logger,
926
- textEncoder: ensureTextEncoder(opts),
927
- textDecoder: ensureTextDecoder(opts)
928
- };
929
- }
930
- var textEncoder2, textDecoder2;
931
- var init_ensurer = __esm({
932
- "src/runtime/store-sql/ensurer.ts"() {
933
- "use strict";
934
- init_utils();
935
- init_types2();
936
- textEncoder2 = new TextEncoder();
937
- textDecoder2 = new TextDecoder();
938
- }
939
- });
940
-
941
1065
  // src/runtime/store-sql/sqlite-adapter-better-sqlite3.ts
942
1066
  var import_cement8, onceSQLiteConnections, SQLiteConnection;
943
1067
  var init_sqlite_adapter_better_sqlite3 = __esm({
@@ -1479,15 +1603,15 @@ var init_store_version_factory = __esm({
1479
1603
  });
1480
1604
 
1481
1605
  // src/runtime/store-sql/store-sql.ts
1482
- var store_sql_exports = {};
1483
- __export(store_sql_exports, {
1606
+ var store_sql_exports2 = {};
1607
+ __export(store_sql_exports2, {
1484
1608
  SQLDataGateway: () => SQLDataGateway,
1485
1609
  SQLMetaGateway: () => SQLMetaGateway,
1486
1610
  SQLTestStore: () => SQLTestStore,
1487
1611
  SQLWalGateway: () => SQLWalGateway
1488
1612
  });
1489
1613
  var import_cement13, SQLWalGateway, SQLMetaGateway, SQLDataGateway, SQLTestStore;
1490
- var init_store_sql = __esm({
1614
+ var init_store_sql2 = __esm({
1491
1615
  "src/runtime/store-sql/store-sql.ts"() {
1492
1616
  "use strict";
1493
1617
  import_cement13 = require("@adviser/cement");
@@ -1733,6 +1857,7 @@ __export(src_exports, {
1733
1857
  index: () => index,
1734
1858
  isFalsy: () => isFalsy,
1735
1859
  rt: () => runtime_exports,
1860
+ runtime: () => runtime_exports,
1736
1861
  throwFalsy: () => throwFalsy
1737
1862
  });
1738
1863
  module.exports = __toCommonJS(src_exports);
@@ -1992,72 +2117,7 @@ var ConnectREST = class extends ConnectionBase {
1992
2117
  // src/blockstore/store-factory.ts
1993
2118
  var import_cement14 = require("@adviser/cement");
1994
2119
  init_data_dir();
1995
-
1996
- // src/runtime/files.ts
1997
- var UnixFS = __toESM(require("@ipld/unixfs"), 1);
1998
- var raw = __toESM(require("multiformats/codecs/raw"), 1);
1999
- var import_fixed = require("@ipld/unixfs/file/chunker/fixed");
2000
- var import_balanced = require("@ipld/unixfs/file/layout/balanced");
2001
- var import_ipfs_unixfs_exporter = require("ipfs-unixfs-exporter");
2002
- var queuingStrategy = UnixFS.withCapacity();
2003
- var settings = UnixFS.configure({
2004
- fileChunkEncoder: raw,
2005
- smallFileEncoder: raw,
2006
- chunker: (0, import_fixed.withMaxChunkSize)(1024 * 1024),
2007
- fileLayout: (0, import_balanced.withWidth)(1024)
2008
- });
2009
- async function collect(collectable) {
2010
- const chunks = [];
2011
- await collectable.pipeTo(
2012
- new WritableStream({
2013
- write(chunk) {
2014
- chunks.push(chunk);
2015
- }
2016
- })
2017
- );
2018
- return chunks;
2019
- }
2020
- async function encodeFile(blob) {
2021
- const readable = createFileEncoderStream(blob);
2022
- const blocks = await collect(readable);
2023
- return { cid: blocks.at(-1).cid, blocks };
2024
- }
2025
- async function decodeFile(blocks, cid, meta) {
2026
- const entry = await (0, import_ipfs_unixfs_exporter.exporter)(cid.toString(), blocks, { length: meta.size });
2027
- const chunks = [];
2028
- for await (const chunk of entry.content()) {
2029
- chunks.push(chunk);
2030
- }
2031
- return new File(chunks, entry.name, { type: meta.type, lastModified: 0 });
2032
- }
2033
- function createFileEncoderStream(blob) {
2034
- const { readable, writable } = new TransformStream({}, queuingStrategy);
2035
- const unixfsWriter = UnixFS.createWriter({ writable, settings });
2036
- const fileBuilder = new UnixFSFileBuilder("", blob);
2037
- void (async () => {
2038
- await fileBuilder.finalize(unixfsWriter);
2039
- await unixfsWriter.close();
2040
- })();
2041
- return readable;
2042
- }
2043
- var UnixFSFileBuilder = class {
2044
- #file;
2045
- constructor(name, file) {
2046
- this.name = name;
2047
- this.#file = file;
2048
- }
2049
- async finalize(writer) {
2050
- const unixfsFileWriter = UnixFS.createFileWriter(writer);
2051
- await this.#file.stream().pipeTo(
2052
- new WritableStream({
2053
- async write(chunk) {
2054
- await unixfsFileWriter.write(chunk);
2055
- }
2056
- })
2057
- );
2058
- return await unixfsFileWriter.close();
2059
- }
2060
- };
2120
+ init_files();
2061
2121
 
2062
2122
  // src/blockstore/store.ts
2063
2123
  var import_p_limit2 = __toESM(require("p-limit"), 1);
@@ -2127,7 +2187,7 @@ var import_multiformats2 = require("multiformats");
2127
2187
  var import_block3 = require("multiformats/block");
2128
2188
  var dagcbor = __toESM(require("@ipld/dag-cbor"), 1);
2129
2189
  var import_block4 = require("@web3-storage/pail/block");
2130
- var import_utils7 = require("prolly-trees/utils");
2190
+ var import_utils8 = require("prolly-trees/utils");
2131
2191
  var import_cache = require("prolly-trees/cache");
2132
2192
  var import_cid_set = require("prolly-trees/cid-set");
2133
2193
 
@@ -2315,7 +2375,7 @@ function makeEncDec(logger, crypto2, randomBytes2) {
2315
2375
  };
2316
2376
  return { encrypt, decrypt };
2317
2377
  }
2318
- var chunker = (0, import_utils7.bf)(30);
2378
+ var chunker = (0, import_utils8.bf)(30);
2319
2379
  function hexStringToUint8Array(hexString) {
2320
2380
  const length = hexString.length;
2321
2381
  const uint8Array = new Uint8Array(length / 2);
@@ -2380,30 +2440,7 @@ async function decodeCarBlocks(logger, crypto2, root3, get2, keyMaterial) {
2380
2440
  // src/blockstore/transaction.ts
2381
2441
  var import_block5 = require("@web3-storage/pail/block");
2382
2442
  init_types();
2383
-
2384
- // src/runtime/crypto.ts
2385
- function randomBytes(size) {
2386
- const bytes = new Uint8Array(size);
2387
- if (size > 0) {
2388
- crypto.getRandomValues(bytes);
2389
- }
2390
- return bytes;
2391
- }
2392
- function digestSHA256(data) {
2393
- return Promise.resolve(crypto.subtle.digest("SHA-256", data));
2394
- }
2395
- function toCryptoOpts(cryptoOpts = {}) {
2396
- const opts = {
2397
- importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),
2398
- encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),
2399
- decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),
2400
- randomBytes: cryptoOpts.randomBytes || randomBytes,
2401
- digestSHA256: cryptoOpts.digestSHA256 || digestSHA256
2402
- };
2403
- return opts;
2404
- }
2405
-
2406
- // src/blockstore/transaction.ts
2443
+ init_crypto();
2407
2444
  init_utils();
2408
2445
  var CarTransaction = class extends import_block5.MemoryBlockstore {
2409
2446
  constructor(parent, opts = { add: true }) {
@@ -3071,8 +3108,8 @@ var VersionedStore = class {
3071
3108
  this._onClosed.push(fn);
3072
3109
  }
3073
3110
  };
3074
- var textEncoder = new TextEncoder();
3075
- var textDecoder = new TextDecoder();
3111
+ var textEncoder2 = new TextEncoder();
3112
+ var textDecoder2 = new TextDecoder();
3076
3113
  var MetaStore = class extends VersionedStore {
3077
3114
  constructor(name, url, logger, gateway) {
3078
3115
  super(name, url, ensureLogger(logger, "MetaStore", {}));
@@ -3111,7 +3148,7 @@ var MetaStore = class extends VersionedStore {
3111
3148
  throw this.logger.Error().Err(bytes.Err()).Msg("gateway get").AsError();
3112
3149
  }
3113
3150
  try {
3114
- return [this.parseHeader(textDecoder.decode(bytes.Ok()))];
3151
+ return [this.parseHeader(textDecoder2.decode(bytes.Ok()))];
3115
3152
  } catch (e) {
3116
3153
  throw this.logger.Error().Err(e).Msg("parseHeader").AsError();
3117
3154
  }
@@ -3123,7 +3160,7 @@ var MetaStore = class extends VersionedStore {
3123
3160
  if (url.isErr()) {
3124
3161
  throw this.logger.Error().Err(url.Err()).Str("branch", branch).Url(this.url).Msg("got error from gateway.buildUrl").AsError();
3125
3162
  }
3126
- const res = await this.gateway.put(url.Ok(), textEncoder.encode(bytes));
3163
+ const res = await this.gateway.put(url.Ok(), textEncoder2.encode(bytes));
3127
3164
  if (res.isErr()) {
3128
3165
  throw this.logger.Error().Err(res.Err()).Msg("got error from gateway.put").AsError();
3129
3166
  }
@@ -3363,7 +3400,7 @@ var RemoteWAL = class extends VersionedStore {
3363
3400
  throw this.logger.Error().Err(bytes.Err()).Msg("error get").AsError();
3364
3401
  }
3365
3402
  try {
3366
- return bytes && (0, import_dag_json.parse)(textDecoder.decode(bytes.Ok()));
3403
+ return bytes && (0, import_dag_json.parse)(textDecoder2.decode(bytes.Ok()));
3367
3404
  } catch (e) {
3368
3405
  throw this.logger.Error().Err(e).Msg("error parse").AsError();
3369
3406
  }
@@ -3379,7 +3416,7 @@ var RemoteWAL = class extends VersionedStore {
3379
3416
  } catch (e) {
3380
3417
  throw this.logger.Error().Err(e).Any("state", state).Msg("error format").AsError();
3381
3418
  }
3382
- const res = await this.gateway.put(filepath.Ok(), textEncoder.encode(encoded));
3419
+ const res = await this.gateway.put(filepath.Ok(), textEncoder2.encode(encoded));
3383
3420
  if (res.isErr()) {
3384
3421
  throw this.logger.Error().Err(res.Err()).Str("filePath", filepath.Ok().toString()).Msg("error saving").AsError();
3385
3422
  }
@@ -3415,16 +3452,34 @@ function toURL(pathOrUrl, isIndex) {
3415
3452
  return ensureIsIndex(url, isIndex);
3416
3453
  }
3417
3454
  }
3455
+ var storeFactory = /* @__PURE__ */ new Map();
3456
+ function ensureName(name, url) {
3457
+ if (!url.searchParams.has("name")) {
3458
+ url.searchParams.set("name", name);
3459
+ }
3460
+ }
3418
3461
  function buildURL(optURL, loader) {
3419
3462
  const storeOpts = loader.ebOpts.store;
3420
- return toURL(optURL || dataDir(loader.name, storeOpts.stores?.base), storeOpts.isIndex);
3463
+ const obuItem = Array.from(storeFactory.values()).find((items) => items.overrideBaseURL);
3464
+ let obuUrl;
3465
+ if (obuItem && obuItem.overrideBaseURL) {
3466
+ obuUrl = new URL(obuItem.overrideBaseURL);
3467
+ }
3468
+ return toURL(optURL || obuUrl || dataDir(loader.name, storeOpts.stores?.base), storeOpts.isIndex);
3421
3469
  }
3422
- var storeFactory = /* @__PURE__ */ new Map();
3423
3470
  function registerStoreProtocol(item) {
3424
3471
  if (storeFactory.has(item.protocol)) {
3425
3472
  throw new Error(`protocol ${item.protocol} already registered`);
3426
3473
  }
3474
+ if (item.overrideBaseURL) {
3475
+ Array.from(storeFactory.values()).forEach((items) => {
3476
+ items.overrideBaseURL = void 0;
3477
+ });
3478
+ }
3427
3479
  storeFactory.set(item.protocol, item);
3480
+ return () => {
3481
+ storeFactory.delete(item.protocol);
3482
+ };
3428
3483
  }
3429
3484
  function runStoreFactory(url, logger, run) {
3430
3485
  const item = storeFactory.get(url.protocol);
@@ -3443,6 +3498,7 @@ function loadDataGateway(url, logger) {
3443
3498
  var onceDataStoreFactory = new import_cement14.KeyedResolvOnce();
3444
3499
  async function dataStoreFactory(loader) {
3445
3500
  const url = buildURL(loader.ebOpts.store.stores?.data, loader);
3501
+ ensureName(loader.name, url);
3446
3502
  const logger = ensureLogger(loader.logger, "dataStoreFactory", { url: url.toString() });
3447
3503
  url.searchParams.set("store", "data");
3448
3504
  return onceDataStoreFactory.get(url.toString()).once(async () => {
@@ -3462,15 +3518,14 @@ function loadMetaGateway(url, logger) {
3462
3518
  var onceMetaStoreFactory = new import_cement14.KeyedResolvOnce();
3463
3519
  async function metaStoreFactory(loader) {
3464
3520
  const url = buildURL(loader.ebOpts.store.stores?.meta, loader);
3521
+ ensureName(loader.name, url);
3465
3522
  const logger = ensureLogger(loader.logger, "metaStoreFactory", { url: () => url.toString() });
3466
3523
  url.searchParams.set("store", "meta");
3467
3524
  return onceMetaStoreFactory.get(url.toString()).once(async () => {
3468
3525
  logger.Debug().Str("protocol", url.protocol).Msg("pre-protocol switch");
3469
3526
  const gateway = await loadMetaGateway(url, logger);
3470
3527
  const store = new MetaStore(loader.name, url, loader.logger, gateway);
3471
- logger.Debug().Msg("pre-start");
3472
3528
  await store.start();
3473
- logger.Debug().Msg("post-start");
3474
3529
  return store;
3475
3530
  });
3476
3531
  }
@@ -3483,6 +3538,7 @@ function loadWalGateway(url, logger) {
3483
3538
  var onceRemoteWalFactory = new import_cement14.KeyedResolvOnce();
3484
3539
  async function remoteWalFactory(loader) {
3485
3540
  const url = buildURL(loader.ebOpts.store.stores?.meta, loader);
3541
+ ensureName(loader.name, url);
3486
3542
  const logger = ensureLogger(loader.logger, "remoteWalFactory", { url: url.toString() });
3487
3543
  url.searchParams.set("store", "wal");
3488
3544
  return onceRemoteWalFactory.get(url.toString()).once(async () => {
@@ -3562,19 +3618,19 @@ registerStoreProtocol({
3562
3618
  registerStoreProtocol({
3563
3619
  protocol: "sqlite:",
3564
3620
  data: async (logger) => {
3565
- const { SQLDataGateway: SQLDataGateway2 } = await Promise.resolve().then(() => (init_store_sql(), store_sql_exports));
3621
+ const { SQLDataGateway: SQLDataGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
3566
3622
  return new SQLDataGateway2(logger);
3567
3623
  },
3568
3624
  meta: async (logger) => {
3569
- const { SQLMetaGateway: SQLMetaGateway2 } = await Promise.resolve().then(() => (init_store_sql(), store_sql_exports));
3625
+ const { SQLMetaGateway: SQLMetaGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
3570
3626
  return new SQLMetaGateway2(logger);
3571
3627
  },
3572
3628
  wal: async (logger) => {
3573
- const { SQLWalGateway: SQLWalGateway2 } = await Promise.resolve().then(() => (init_store_sql(), store_sql_exports));
3629
+ const { SQLWalGateway: SQLWalGateway2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
3574
3630
  return new SQLWalGateway2(logger);
3575
3631
  },
3576
3632
  test: async (logger) => {
3577
- const { SQLTestStore: SQLTestStore2 } = await Promise.resolve().then(() => (init_store_sql(), store_sql_exports));
3633
+ const { SQLTestStore: SQLTestStore2 } = await Promise.resolve().then(() => (init_store_sql2(), store_sql_exports2));
3578
3634
  return new SQLTestStore2(logger);
3579
3635
  }
3580
3636
  });
@@ -4536,7 +4592,7 @@ var Database = class {
4536
4592
  }));
4537
4593
  return { rows, clock: head };
4538
4594
  }
4539
- async allDocs() {
4595
+ async allDocs(opts = {}) {
4540
4596
  await this.ready();
4541
4597
  const { result, head } = await this._crdt.allDocs();
4542
4598
  const rows = result.map(({ id: key, value, del }) => ({
@@ -4640,10 +4696,11 @@ function makeName(fnString) {
4640
4696
  // src/index.ts
4641
4697
  init_types();
4642
4698
  init_runtime();
4699
+ init_runtime();
4643
4700
  init_utils();
4644
4701
 
4645
4702
  // src/version.ts
4646
4703
  var PACKAGE_VERSION = Object.keys({
4647
- "0.19.5-dev": "xxxx"
4704
+ "0.0.0-dev": "xxxx"
4648
4705
  })[0];
4649
4706
  //# sourceMappingURL=index.cjs.map