@fireproof/core 0.20.0-dev-preview-13 → 0.20.0-dev-preview-15
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 +106 -47
- package/index.cjs.map +1 -1
- package/index.d.cts +24 -18
- package/index.d.ts +24 -18
- package/index.js +96 -37
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +1 -1
- package/tests/fireproof/all-gateway.test.ts +15 -18
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
|
74
|
+
var import_cement20 = require("@adviser/cement");
|
75
75
|
|
76
76
|
// src/utils.ts
|
77
77
|
var import_cement = require("@adviser/cement");
|
@@ -1077,9 +1077,6 @@ var MemoryGateway = class {
|
|
1077
1077
|
// src/runtime/gateways/def-serde-gateway.ts
|
1078
1078
|
var import_cement9 = require("@adviser/cement");
|
1079
1079
|
|
1080
|
-
// src/runtime/gateways/fp-envelope-serialize.ts
|
1081
|
-
var import_cement8 = require("@adviser/cement");
|
1082
|
-
|
1083
1080
|
// src/blockstore/fp-envelope.ts
|
1084
1081
|
var import_cement7 = require("@adviser/cement");
|
1085
1082
|
var FPEnvelopeType = /* @__PURE__ */ ((FPEnvelopeType2) => {
|
@@ -1097,6 +1094,7 @@ function File2FPMsg(fpfile) {
|
|
1097
1094
|
}
|
1098
1095
|
|
1099
1096
|
// src/runtime/gateways/fp-envelope-serialize.ts
|
1097
|
+
var import_cement8 = require("@adviser/cement");
|
1100
1098
|
var import_clock = require("@fireproof/vendor/@web3-storage/pail/clock");
|
1101
1099
|
var import_base64 = require("multiformats/bases/base64");
|
1102
1100
|
var import_multiformats = require("multiformats");
|
@@ -1250,34 +1248,68 @@ async function fpDeserialize(sthis, url, intoRaw, pdecoder) {
|
|
1250
1248
|
// src/runtime/gateways/def-serde-gateway.ts
|
1251
1249
|
var DefSerdeGateway = class {
|
1252
1250
|
constructor(gw) {
|
1251
|
+
this.subscribeFn = /* @__PURE__ */ new Map();
|
1253
1252
|
this.gw = gw;
|
1254
1253
|
}
|
1255
|
-
|
1254
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1255
|
+
start(sthis, baseURL, loader) {
|
1256
1256
|
return this.gw.start(baseURL, sthis);
|
1257
1257
|
}
|
1258
|
-
|
1258
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1259
|
+
async buildUrl(sthis, baseUrl, key, loader) {
|
1259
1260
|
return this.gw.buildUrl(baseUrl, key, sthis);
|
1260
1261
|
}
|
1261
|
-
|
1262
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1263
|
+
async close(sthis, uri, loader) {
|
1262
1264
|
return this.gw.close(uri, sthis);
|
1263
1265
|
}
|
1264
|
-
|
1266
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1267
|
+
async put(sthis, url, env, loader) {
|
1265
1268
|
const rUint8 = await fpSerialize(sthis, env);
|
1266
1269
|
if (rUint8.isErr()) return rUint8;
|
1267
|
-
|
1270
|
+
const ret = this.gw.put(url, rUint8.Ok(), sthis);
|
1271
|
+
if (env.type === "meta" /* META */) {
|
1272
|
+
if (this.subscribeFn.has(url.toString())) {
|
1273
|
+
this.subscribeFn.get(url.toString())(env);
|
1274
|
+
}
|
1275
|
+
}
|
1276
|
+
return ret;
|
1268
1277
|
}
|
1269
|
-
|
1278
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1279
|
+
async get(sthis, url, loader) {
|
1270
1280
|
const res = await this.gw.get(url, sthis);
|
1271
1281
|
if (res.isErr()) return import_cement9.Result.Err(res.Err());
|
1272
1282
|
return fpDeserialize(sthis, url, res);
|
1273
1283
|
}
|
1274
|
-
async
|
1284
|
+
async subscribe(sthis, url, callback, loader) {
|
1285
|
+
if (!this.gw.subscribe) {
|
1286
|
+
this.subscribeFn.set(url.toString(), callback);
|
1287
|
+
return import_cement9.Result.Ok(() => {
|
1288
|
+
this.subscribeFn.delete(url.toString());
|
1289
|
+
});
|
1290
|
+
}
|
1291
|
+
const unreg = await this.gw.subscribe(
|
1292
|
+
url,
|
1293
|
+
(raw2) => {
|
1294
|
+
fpDeserialize(sthis, url, import_cement9.Result.Ok(raw2)).then((res) => {
|
1295
|
+
if (res.isErr()) return;
|
1296
|
+
callback(res.Ok());
|
1297
|
+
});
|
1298
|
+
},
|
1299
|
+
sthis
|
1300
|
+
);
|
1301
|
+
return unreg;
|
1302
|
+
}
|
1303
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1304
|
+
async delete(sthis, url, loader) {
|
1275
1305
|
return this.gw.delete(url, sthis);
|
1276
1306
|
}
|
1277
|
-
|
1307
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1308
|
+
async destroy(sthis, baseURL, loader) {
|
1278
1309
|
return this.gw.destroy(baseURL, sthis);
|
1279
1310
|
}
|
1280
|
-
|
1311
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
1312
|
+
async getPlain(sthis, iurl, key, loader) {
|
1281
1313
|
return this.gw.getPlain(iurl, key, sthis);
|
1282
1314
|
}
|
1283
1315
|
};
|
@@ -1912,7 +1944,7 @@ var DatabaseImpl = class {
|
|
1912
1944
|
};
|
1913
1945
|
|
1914
1946
|
// src/crdt.ts
|
1915
|
-
var
|
1947
|
+
var import_cement19 = require("@adviser/cement");
|
1916
1948
|
|
1917
1949
|
// src/blockstore/index.ts
|
1918
1950
|
var blockstore_exports = {};
|
@@ -3663,6 +3695,9 @@ function toStoreRuntime(sthis, endeOpts = {}) {
|
|
3663
3695
|
};
|
3664
3696
|
}
|
3665
3697
|
|
3698
|
+
// src/blockstore/connection-base.ts
|
3699
|
+
var import_cement17 = require("@adviser/cement");
|
3700
|
+
|
3666
3701
|
// src/blockstore/store-remote.ts
|
3667
3702
|
async function RemoteDataStore(sthis, url, opts) {
|
3668
3703
|
const ds = new DataStoreImpl(sthis, url, opts);
|
@@ -3675,6 +3710,22 @@ async function RemoteMetaStore(sthis, url, opts) {
|
|
3675
3710
|
return ms;
|
3676
3711
|
}
|
3677
3712
|
|
3713
|
+
// src/context.ts
|
3714
|
+
var Context = class {
|
3715
|
+
constructor() {
|
3716
|
+
this.ctx = /* @__PURE__ */ new Map();
|
3717
|
+
}
|
3718
|
+
set(key, value) {
|
3719
|
+
this.ctx.set(key, value);
|
3720
|
+
}
|
3721
|
+
get(key) {
|
3722
|
+
return this.ctx.get(key);
|
3723
|
+
}
|
3724
|
+
delete(key) {
|
3725
|
+
this.ctx.delete(key);
|
3726
|
+
}
|
3727
|
+
};
|
3728
|
+
|
3678
3729
|
// src/blockstore/connection-base.ts
|
3679
3730
|
function coerceLoader(ref) {
|
3680
3731
|
const refl = ref;
|
@@ -3689,10 +3740,22 @@ function coerceLoader(ref) {
|
|
3689
3740
|
}
|
3690
3741
|
var ConnectionBase = class {
|
3691
3742
|
constructor(url, logger) {
|
3692
|
-
|
3743
|
+
// loaded: Promise<void> = Promise.resolve();
|
3744
|
+
this.context = new Context();
|
3745
|
+
this._loaded = /* @__PURE__ */ new Set();
|
3746
|
+
this._metaIsLoading = false;
|
3693
3747
|
this.logger = logger;
|
3694
3748
|
this.url = url;
|
3695
3749
|
}
|
3750
|
+
loaded() {
|
3751
|
+
const f = new import_cement17.Future();
|
3752
|
+
if (!this._metaIsLoading) {
|
3753
|
+
f.resolve();
|
3754
|
+
} else {
|
3755
|
+
this._loaded.add(f);
|
3756
|
+
}
|
3757
|
+
return f;
|
3758
|
+
}
|
3696
3759
|
async refresh() {
|
3697
3760
|
await throwFalsy(throwFalsy(this.loader).remoteMetaStore).load();
|
3698
3761
|
await (await throwFalsy(this.loader).WALStore()).process();
|
@@ -3720,22 +3783,34 @@ var ConnectionBase = class {
|
|
3720
3783
|
loader
|
3721
3784
|
});
|
3722
3785
|
this.loader.remoteMetaStore = remote;
|
3723
|
-
this.
|
3786
|
+
this._metaIsLoading = true;
|
3787
|
+
this.loader.ready().then(async () => {
|
3724
3788
|
return remote.load().then(async () => {
|
3725
|
-
|
3789
|
+
const res = await (0, import_cement17.exception2Result)(async () => {
|
3790
|
+
return await (await throwFalsy(this.loader).WALStore()).process();
|
3791
|
+
});
|
3792
|
+
this._metaIsLoading = false;
|
3793
|
+
for (const f of this._loaded) {
|
3794
|
+
if (res.isErr()) {
|
3795
|
+
f.reject(res.Err());
|
3796
|
+
} else {
|
3797
|
+
f.resolve();
|
3798
|
+
}
|
3799
|
+
}
|
3800
|
+
this._loaded.clear();
|
3726
3801
|
});
|
3727
3802
|
});
|
3728
3803
|
}
|
3729
3804
|
async connectStorage(refl) {
|
3730
3805
|
const loader = coerceLoader(refl);
|
3731
|
-
if (!loader) throw this.logger.Error().Msg("
|
3806
|
+
if (!loader) throw this.logger.Error().Msg("connectStorage: loader is required").AsError();
|
3732
3807
|
this.loader = loader;
|
3733
3808
|
const dataUrl = this.url.build().defParam("store" /* STORE */, "data").URI();
|
3734
3809
|
const rgateway = await getStartedGateway(loader.sthis, dataUrl);
|
3735
3810
|
if (rgateway.isErr())
|
3736
|
-
throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("
|
3811
|
+
throw this.logger.Error().Result("err", rgateway).Url(dataUrl).Msg("connectStorage: gateway is required").AsError();
|
3737
3812
|
const name = dataUrl.getParam("name" /* NAME */);
|
3738
|
-
if (!name) throw this.logger.Error().Url(dataUrl).Msg("
|
3813
|
+
if (!name) throw this.logger.Error().Url(dataUrl).Msg("connectStorage: name is required").AsError;
|
3739
3814
|
loader.remoteCarStore = await RemoteDataStore(loader.sthis, this.url, {
|
3740
3815
|
gateway: rgateway.Ok().gateway,
|
3741
3816
|
loader
|
@@ -4050,7 +4125,7 @@ async function getBlock(blocks, cidString) {
|
|
4050
4125
|
// src/crdt-clock.ts
|
4051
4126
|
var import_clock4 = require("@fireproof/vendor/@web3-storage/pail/clock");
|
4052
4127
|
var import_crdt2 = require("@fireproof/vendor/@web3-storage/pail/crdt");
|
4053
|
-
var
|
4128
|
+
var import_cement18 = require("@adviser/cement");
|
4054
4129
|
|
4055
4130
|
// src/apply-head-queue.ts
|
4056
4131
|
function applyHeadQueue(worker, logger) {
|
@@ -4107,7 +4182,7 @@ var CRDTClockImpl = class {
|
|
4107
4182
|
this.zoomers = /* @__PURE__ */ new Map();
|
4108
4183
|
this.watchers = /* @__PURE__ */ new Map();
|
4109
4184
|
this.emptyWatchers = /* @__PURE__ */ new Map();
|
4110
|
-
this._ready = new
|
4185
|
+
this._ready = new import_cement18.ResolveOnce();
|
4111
4186
|
this.sthis = blockstore.sthis;
|
4112
4187
|
this.blockstore = blockstore;
|
4113
4188
|
this.logger = ensureLogger(blockstore.sthis, "CRDTClock");
|
@@ -4233,7 +4308,7 @@ async function advanceBlocks(logger, newHead, tblocks, head) {
|
|
4233
4308
|
var CRDTImpl = class {
|
4234
4309
|
constructor(sthis, opts) {
|
4235
4310
|
this.indexers = /* @__PURE__ */ new Map();
|
4236
|
-
this.onceReady = new
|
4311
|
+
this.onceReady = new import_cement19.ResolveOnce();
|
4237
4312
|
this.sthis = sthis;
|
4238
4313
|
this.crdt = this;
|
4239
4314
|
this.logger = ensureLogger(sthis, "CRDT");
|
@@ -4351,24 +4426,8 @@ var CRDTImpl = class {
|
|
4351
4426
|
}
|
4352
4427
|
};
|
4353
4428
|
|
4354
|
-
// src/context.ts
|
4355
|
-
var Context = class {
|
4356
|
-
constructor() {
|
4357
|
-
this.ctx = /* @__PURE__ */ new Map();
|
4358
|
-
}
|
4359
|
-
set(key, value) {
|
4360
|
-
this.ctx.set(key, value);
|
4361
|
-
}
|
4362
|
-
get(key) {
|
4363
|
-
return this.ctx.get(key);
|
4364
|
-
}
|
4365
|
-
delete(key) {
|
4366
|
-
this.ctx.delete(key);
|
4367
|
-
}
|
4368
|
-
};
|
4369
|
-
|
4370
4429
|
// src/ledger.ts
|
4371
|
-
var ledgers = new
|
4430
|
+
var ledgers = new import_cement20.KeyedResolvOnce();
|
4372
4431
|
function keyConfigOpts(sthis, name, opts) {
|
4373
4432
|
return JSON.stringify(
|
4374
4433
|
toSortedArray({
|
@@ -4454,7 +4513,7 @@ var LedgerImpl = class {
|
|
4454
4513
|
this.shells = /* @__PURE__ */ new Set();
|
4455
4514
|
this.context = new Context();
|
4456
4515
|
this._onClosedFns = /* @__PURE__ */ new Map();
|
4457
|
-
this._ready = new
|
4516
|
+
this._ready = new import_cement20.ResolveOnce();
|
4458
4517
|
this.opts = opts;
|
4459
4518
|
this.sthis = sthis;
|
4460
4519
|
this.id = sthis.timeOrderedNextId().str;
|
@@ -4554,7 +4613,7 @@ var LedgerImpl = class {
|
|
4554
4613
|
};
|
4555
4614
|
function defaultURI2(sthis, curi, uri, store, ctx) {
|
4556
4615
|
ctx = ctx || {};
|
4557
|
-
const ret = (curi ?
|
4616
|
+
const ret = (curi ? import_cement20.URI.from(curi) : uri).build().setParam("store" /* STORE */, store);
|
4558
4617
|
if (!ret.hasParam("name" /* NAME */)) {
|
4559
4618
|
const name = sthis.pathOps.basename(ret.URI().pathname);
|
4560
4619
|
if (!name) {
|
@@ -4581,12 +4640,12 @@ function toStoreURIRuntime(sthis, name, sopts) {
|
|
4581
4640
|
if (!sopts.base) {
|
4582
4641
|
const fp_env = sthis.env.get("FP_STORAGE_URL");
|
4583
4642
|
if (fp_env) {
|
4584
|
-
sopts = { ...sopts, base:
|
4643
|
+
sopts = { ...sopts, base: import_cement20.BuildURI.from(fp_env).setParam("urlGen" /* URL_GEN */, "fromEnv") };
|
4585
4644
|
} else {
|
4586
4645
|
sopts = { ...sopts, base: getDefaultURI(sthis).build().setParam("urlGen" /* URL_GEN */, "default") };
|
4587
4646
|
}
|
4588
4647
|
}
|
4589
|
-
const bbase =
|
4648
|
+
const bbase = import_cement20.BuildURI.from(sopts.base);
|
4590
4649
|
if (name) {
|
4591
4650
|
bbase.setParam("name" /* NAME */, name);
|
4592
4651
|
}
|
@@ -4627,7 +4686,7 @@ __export(runtime_exports, {
|
|
4627
4686
|
kc: () => keyed_crypto_exports,
|
4628
4687
|
mf: () => wait_pr_multiformats_exports,
|
4629
4688
|
registerKeyBagProviderFactory: () => registerKeyBagProviderFactory,
|
4630
|
-
runtimeFn: () =>
|
4689
|
+
runtimeFn: () => import_cement21.runtimeFn
|
4631
4690
|
});
|
4632
4691
|
|
4633
4692
|
// src/runtime/wait-pr-multiformats/index.ts
|
@@ -4641,7 +4700,7 @@ __export(wait_pr_multiformats_exports, {
|
|
4641
4700
|
var codec_interface_exports = {};
|
4642
4701
|
|
4643
4702
|
// src/runtime/index.ts
|
4644
|
-
var
|
4703
|
+
var import_cement21 = require("@adviser/cement");
|
4645
4704
|
|
4646
4705
|
// src/runtime/gateways/index.ts
|
4647
4706
|
var gateways_exports = {};
|
@@ -4661,6 +4720,6 @@ __export(file_exports, {
|
|
4661
4720
|
|
4662
4721
|
// src/version.ts
|
4663
4722
|
var PACKAGE_VERSION = Object.keys({
|
4664
|
-
"0.20.0-dev-preview-
|
4723
|
+
"0.20.0-dev-preview-15": "xxxx"
|
4665
4724
|
})[0];
|
4666
4725
|
//# sourceMappingURL=index.cjs.map
|