@fireproof/core 0.20.0-dev-preview-13 → 0.20.0-dev-preview-15
Sign up to get free protection for your applications and to get access to all the features.
- 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
|