@fireproof/core 0.20.0-dev-preview-14 → 0.20.0-dev-preview-16

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/index.cjs CHANGED
@@ -71,7 +71,7 @@ __export(index_exports, {
71
71
  module.exports = __toCommonJS(index_exports);
72
72
 
73
73
  // src/ledger.ts
74
- var import_cement19 = require("@adviser/cement");
74
+ var import_cement20 = require("@adviser/cement");
75
75
 
76
76
  // src/utils.ts
77
77
  var import_cement = require("@adviser/cement");
@@ -786,7 +786,7 @@ var keyBagProviderFactories = new Map(
786
786
  {
787
787
  protocol: "indexdb:",
788
788
  factory: async (url, sthis) => {
789
- const { KeyBagProviderImpl } = await import("@fireproof/core/web");
789
+ const { KeyBagProviderImpl } = await import("@fireproof/core/indexdb");
790
790
  return new KeyBagProviderImpl(url, sthis);
791
791
  }
792
792
  },
@@ -880,7 +880,7 @@ var import_cement10 = require("@adviser/cement");
880
880
  // src/runtime/gateways/file/version.ts
881
881
  var FILESTORE_VERSION = "v0.19-file";
882
882
 
883
- // src/runtime/gateways/indexdb/version.ts
883
+ // src/runtime/gateways/indexdb-version.ts
884
884
  var INDEXDB_VERSION = "v0.19-indexdb";
885
885
 
886
886
  // src/runtime/gateways/file/gateway-impl.ts
@@ -1023,6 +1023,10 @@ var FileGateway = class {
1023
1023
  };
1024
1024
 
1025
1025
  // src/runtime/gateways/memory/gateway.ts
1026
+ var gateway_exports = {};
1027
+ __export(gateway_exports, {
1028
+ MemoryGateway: () => MemoryGateway
1029
+ });
1026
1030
  var import_cement6 = require("@adviser/cement");
1027
1031
 
1028
1032
  // src/runtime/gateways/memory/version.ts
@@ -1251,16 +1255,20 @@ var DefSerdeGateway = class {
1251
1255
  this.subscribeFn = /* @__PURE__ */ new Map();
1252
1256
  this.gw = gw;
1253
1257
  }
1254
- start(sthis, baseURL) {
1258
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1259
+ start(sthis, baseURL, loader) {
1255
1260
  return this.gw.start(baseURL, sthis);
1256
1261
  }
1257
- async buildUrl(sthis, baseUrl, key) {
1262
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1263
+ async buildUrl(sthis, baseUrl, key, loader) {
1258
1264
  return this.gw.buildUrl(baseUrl, key, sthis);
1259
1265
  }
1260
- async close(sthis, uri) {
1266
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1267
+ async close(sthis, uri, loader) {
1261
1268
  return this.gw.close(uri, sthis);
1262
1269
  }
1263
- async put(sthis, url, env) {
1270
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1271
+ async put(sthis, url, env, loader) {
1264
1272
  const rUint8 = await fpSerialize(sthis, env);
1265
1273
  if (rUint8.isErr()) return rUint8;
1266
1274
  const ret = this.gw.put(url, rUint8.Ok(), sthis);
@@ -1271,12 +1279,13 @@ var DefSerdeGateway = class {
1271
1279
  }
1272
1280
  return ret;
1273
1281
  }
1274
- async get(sthis, url) {
1282
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1283
+ async get(sthis, url, loader) {
1275
1284
  const res = await this.gw.get(url, sthis);
1276
1285
  if (res.isErr()) return import_cement9.Result.Err(res.Err());
1277
1286
  return fpDeserialize(sthis, url, res);
1278
1287
  }
1279
- async subscribe(sthis, url, callback) {
1288
+ async subscribe(sthis, url, callback, loader) {
1280
1289
  if (!this.gw.subscribe) {
1281
1290
  this.subscribeFn.set(url.toString(), callback);
1282
1291
  return import_cement9.Result.Ok(() => {
@@ -1295,13 +1304,16 @@ var DefSerdeGateway = class {
1295
1304
  );
1296
1305
  return unreg;
1297
1306
  }
1298
- async delete(sthis, url) {
1307
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1308
+ async delete(sthis, url, loader) {
1299
1309
  return this.gw.delete(url, sthis);
1300
1310
  }
1301
- async destroy(sthis, baseURL) {
1311
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1312
+ async destroy(sthis, baseURL, loader) {
1302
1313
  return this.gw.destroy(baseURL, sthis);
1303
1314
  }
1304
- async getPlain(sthis, iurl, key) {
1315
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1316
+ async getPlain(sthis, iurl, key, loader) {
1305
1317
  return this.gw.getPlain(iurl, key, sthis);
1306
1318
  }
1307
1319
  };
@@ -1386,7 +1398,7 @@ if ((0, import_cement10.runtimeFn)().isBrowser) {
1386
1398
  return import_cement10.BuildURI.from("indexdb://").pathname("fp").setParam("version" /* VERSION */, INDEXDB_VERSION).setParam("runtime" /* RUNTIME */, "browser").URI();
1387
1399
  },
1388
1400
  gateway: async () => {
1389
- const { GatewayImpl } = await import("@fireproof/core/web");
1401
+ const { GatewayImpl } = await import("@fireproof/core/indexdb");
1390
1402
  return new GatewayImpl();
1391
1403
  }
1392
1404
  });
@@ -1936,7 +1948,7 @@ var DatabaseImpl = class {
1936
1948
  };
1937
1949
 
1938
1950
  // src/crdt.ts
1939
- var import_cement18 = require("@adviser/cement");
1951
+ var import_cement19 = require("@adviser/cement");
1940
1952
 
1941
1953
  // src/blockstore/index.ts
1942
1954
  var blockstore_exports = {};
@@ -3687,6 +3699,9 @@ function toStoreRuntime(sthis, endeOpts = {}) {
3687
3699
  };
3688
3700
  }
3689
3701
 
3702
+ // src/blockstore/connection-base.ts
3703
+ var import_cement17 = require("@adviser/cement");
3704
+
3690
3705
  // src/blockstore/store-remote.ts
3691
3706
  async function RemoteDataStore(sthis, url, opts) {
3692
3707
  const ds = new DataStoreImpl(sthis, url, opts);
@@ -3699,6 +3714,22 @@ async function RemoteMetaStore(sthis, url, opts) {
3699
3714
  return ms;
3700
3715
  }
3701
3716
 
3717
+ // src/context.ts
3718
+ var Context = class {
3719
+ constructor() {
3720
+ this.ctx = /* @__PURE__ */ new Map();
3721
+ }
3722
+ set(key, value) {
3723
+ this.ctx.set(key, value);
3724
+ }
3725
+ get(key) {
3726
+ return this.ctx.get(key);
3727
+ }
3728
+ delete(key) {
3729
+ this.ctx.delete(key);
3730
+ }
3731
+ };
3732
+
3702
3733
  // src/blockstore/connection-base.ts
3703
3734
  function coerceLoader(ref) {
3704
3735
  const refl = ref;
@@ -3713,10 +3744,22 @@ function coerceLoader(ref) {
3713
3744
  }
3714
3745
  var ConnectionBase = class {
3715
3746
  constructor(url, logger) {
3716
- this.loaded = Promise.resolve();
3747
+ // loaded: Promise<void> = Promise.resolve();
3748
+ this.context = new Context();
3749
+ this._loaded = /* @__PURE__ */ new Set();
3750
+ this._metaIsLoading = false;
3717
3751
  this.logger = logger;
3718
3752
  this.url = url;
3719
3753
  }
3754
+ loaded() {
3755
+ const f = new import_cement17.Future();
3756
+ if (!this._metaIsLoading) {
3757
+ f.resolve();
3758
+ } else {
3759
+ this._loaded.add(f);
3760
+ }
3761
+ return f;
3762
+ }
3720
3763
  async refresh() {
3721
3764
  await throwFalsy(throwFalsy(this.loader).remoteMetaStore).load();
3722
3765
  await (await throwFalsy(this.loader).WALStore()).process();
@@ -3744,22 +3787,34 @@ var ConnectionBase = class {
3744
3787
  loader
3745
3788
  });
3746
3789
  this.loader.remoteMetaStore = remote;
3747
- this.loaded = this.loader.ready().then(async () => {
3790
+ this._metaIsLoading = true;
3791
+ this.loader.ready().then(async () => {
3748
3792
  return remote.load().then(async () => {
3749
- return (await throwFalsy(this.loader).WALStore()).process();
3793
+ const res = await (0, import_cement17.exception2Result)(async () => {
3794
+ return await (await throwFalsy(this.loader).WALStore()).process();
3795
+ });
3796
+ this._metaIsLoading = false;
3797
+ for (const f of this._loaded) {
3798
+ if (res.isErr()) {
3799
+ f.reject(res.Err());
3800
+ } else {
3801
+ f.resolve();
3802
+ }
3803
+ }
3804
+ this._loaded.clear();
3750
3805
  });
3751
3806
  });
3752
3807
  }
3753
3808
  async connectStorage(refl) {
3754
3809
  const loader = coerceLoader(refl);
3755
- if (!loader) throw this.logger.Error().Msg("connectStorage_X: loader is required").AsError();
3810
+ if (!loader) throw this.logger.Error().Msg("connectStorage: loader is required").AsError();
3756
3811
  this.loader = loader;
3757
3812
  const dataUrl = this.url.build().defParam("store" /* STORE */, "data").URI();
3758
3813
  const rgateway = await getStartedGateway(loader.sthis, dataUrl);
3759
3814
  if (rgateway.isErr())
3760
- throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("connectStorage_X: gateway is required").AsError();
3815
+ throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("connectStorage: gateway is required").AsError();
3761
3816
  const name = dataUrl.getParam("name" /* NAME */);
3762
- if (!name) throw this.logger.Error().Url(dataUrl).Msg("connectStorage_X: name is required").AsError;
3817
+ if (!name) throw this.logger.Error().Url(dataUrl).Msg("connectStorage: name is required").AsError;
3763
3818
  loader.remoteCarStore = await RemoteDataStore(loader.sthis, this.url, {
3764
3819
  gateway: rgateway.Ok().gateway,
3765
3820
  loader
@@ -4074,7 +4129,7 @@ async function getBlock(blocks, cidString) {
4074
4129
  // src/crdt-clock.ts
4075
4130
  var import_clock4 = require("@fireproof/vendor/@web3-storage/pail/clock");
4076
4131
  var import_crdt2 = require("@fireproof/vendor/@web3-storage/pail/crdt");
4077
- var import_cement17 = require("@adviser/cement");
4132
+ var import_cement18 = require("@adviser/cement");
4078
4133
 
4079
4134
  // src/apply-head-queue.ts
4080
4135
  function applyHeadQueue(worker, logger) {
@@ -4131,7 +4186,7 @@ var CRDTClockImpl = class {
4131
4186
  this.zoomers = /* @__PURE__ */ new Map();
4132
4187
  this.watchers = /* @__PURE__ */ new Map();
4133
4188
  this.emptyWatchers = /* @__PURE__ */ new Map();
4134
- this._ready = new import_cement17.ResolveOnce();
4189
+ this._ready = new import_cement18.ResolveOnce();
4135
4190
  this.sthis = blockstore.sthis;
4136
4191
  this.blockstore = blockstore;
4137
4192
  this.logger = ensureLogger(blockstore.sthis, "CRDTClock");
@@ -4257,7 +4312,7 @@ async function advanceBlocks(logger, newHead, tblocks, head) {
4257
4312
  var CRDTImpl = class {
4258
4313
  constructor(sthis, opts) {
4259
4314
  this.indexers = /* @__PURE__ */ new Map();
4260
- this.onceReady = new import_cement18.ResolveOnce();
4315
+ this.onceReady = new import_cement19.ResolveOnce();
4261
4316
  this.sthis = sthis;
4262
4317
  this.crdt = this;
4263
4318
  this.logger = ensureLogger(sthis, "CRDT");
@@ -4375,24 +4430,8 @@ var CRDTImpl = class {
4375
4430
  }
4376
4431
  };
4377
4432
 
4378
- // src/context.ts
4379
- var Context = class {
4380
- constructor() {
4381
- this.ctx = /* @__PURE__ */ new Map();
4382
- }
4383
- set(key, value) {
4384
- this.ctx.set(key, value);
4385
- }
4386
- get(key) {
4387
- return this.ctx.get(key);
4388
- }
4389
- delete(key) {
4390
- this.ctx.delete(key);
4391
- }
4392
- };
4393
-
4394
4433
  // src/ledger.ts
4395
- var ledgers = new import_cement19.KeyedResolvOnce();
4434
+ var ledgers = new import_cement20.KeyedResolvOnce();
4396
4435
  function keyConfigOpts(sthis, name, opts) {
4397
4436
  return JSON.stringify(
4398
4437
  toSortedArray({
@@ -4478,7 +4517,7 @@ var LedgerImpl = class {
4478
4517
  this.shells = /* @__PURE__ */ new Set();
4479
4518
  this.context = new Context();
4480
4519
  this._onClosedFns = /* @__PURE__ */ new Map();
4481
- this._ready = new import_cement19.ResolveOnce();
4520
+ this._ready = new import_cement20.ResolveOnce();
4482
4521
  this.opts = opts;
4483
4522
  this.sthis = sthis;
4484
4523
  this.id = sthis.timeOrderedNextId().str;
@@ -4578,7 +4617,7 @@ var LedgerImpl = class {
4578
4617
  };
4579
4618
  function defaultURI2(sthis, curi, uri, store, ctx) {
4580
4619
  ctx = ctx || {};
4581
- const ret = (curi ? import_cement19.URI.from(curi) : uri).build().setParam("store" /* STORE */, store);
4620
+ const ret = (curi ? import_cement20.URI.from(curi) : uri).build().setParam("store" /* STORE */, store);
4582
4621
  if (!ret.hasParam("name" /* NAME */)) {
4583
4622
  const name = sthis.pathOps.basename(ret.URI().pathname);
4584
4623
  if (!name) {
@@ -4605,12 +4644,12 @@ function toStoreURIRuntime(sthis, name, sopts) {
4605
4644
  if (!sopts.base) {
4606
4645
  const fp_env = sthis.env.get("FP_STORAGE_URL");
4607
4646
  if (fp_env) {
4608
- sopts = { ...sopts, base: import_cement19.BuildURI.from(fp_env).setParam("urlGen" /* URL_GEN */, "fromEnv") };
4647
+ sopts = { ...sopts, base: import_cement20.BuildURI.from(fp_env).setParam("urlGen" /* URL_GEN */, "fromEnv") };
4609
4648
  } else {
4610
4649
  sopts = { ...sopts, base: getDefaultURI(sthis).build().setParam("urlGen" /* URL_GEN */, "default") };
4611
4650
  }
4612
4651
  }
4613
- const bbase = import_cement19.BuildURI.from(sopts.base);
4652
+ const bbase = import_cement20.BuildURI.from(sopts.base);
4614
4653
  if (name) {
4615
4654
  bbase.setParam("name" /* NAME */, name);
4616
4655
  }
@@ -4651,7 +4690,7 @@ __export(runtime_exports, {
4651
4690
  kc: () => keyed_crypto_exports,
4652
4691
  mf: () => wait_pr_multiformats_exports,
4653
4692
  registerKeyBagProviderFactory: () => registerKeyBagProviderFactory,
4654
- runtimeFn: () => import_cement20.runtimeFn
4693
+ runtimeFn: () => import_cement21.runtimeFn
4655
4694
  });
4656
4695
 
4657
4696
  // src/runtime/wait-pr-multiformats/index.ts
@@ -4665,7 +4704,7 @@ __export(wait_pr_multiformats_exports, {
4665
4704
  var codec_interface_exports = {};
4666
4705
 
4667
4706
  // src/runtime/index.ts
4668
- var import_cement20 = require("@adviser/cement");
4707
+ var import_cement21 = require("@adviser/cement");
4669
4708
 
4670
4709
  // src/runtime/gateways/index.ts
4671
4710
  var gateways_exports = {};
@@ -4673,7 +4712,8 @@ __export(gateways_exports, {
4673
4712
  DefSerdeGateway: () => DefSerdeGateway,
4674
4713
  file: () => file_exports,
4675
4714
  fpDeserialize: () => fpDeserialize,
4676
- fpSerialize: () => fpSerialize
4715
+ fpSerialize: () => fpSerialize,
4716
+ memory: () => gateway_exports
4677
4717
  });
4678
4718
 
4679
4719
  // src/runtime/gateways/file/index.ts
@@ -4685,6 +4725,6 @@ __export(file_exports, {
4685
4725
 
4686
4726
  // src/version.ts
4687
4727
  var PACKAGE_VERSION = Object.keys({
4688
- "0.20.0-dev-preview-14": "xxxx"
4728
+ "0.20.0-dev-preview-16": "xxxx"
4689
4729
  })[0];
4690
4730
  //# sourceMappingURL=index.cjs.map