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

Sign up to get free protection for your applications and to get access to all the features.
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