@fireproof/core 0.20.0-dev-preview-62 → 0.20.0
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/deno.json +2 -2
- package/index.cjs +41 -82
- package/index.cjs.map +1 -1
- package/index.d.cts +5 -9
- package/index.d.ts +5 -9
- package/index.js +41 -82
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/package.json +3 -6
- package/react/index.cjs +22 -23
- package/react/index.cjs.map +1 -1
- package/react/index.js +22 -23
- package/react/index.js.map +1 -1
- package/react/metafile-cjs.json +1 -1
- package/react/metafile-esm.json +1 -1
- package/tests/blockstore/loader.test.ts +1 -1
- package/tests/blockstore/store.test.ts +4 -9
- package/tests/fireproof/attachable.test.ts +3 -3
- package/tests/react/use-fireproof-db-switch.test.tsx +91 -0
- package/cli/main.js +0 -26114
package/deno.json
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
{
|
2
2
|
"imports": {
|
3
3
|
"@fireproof/core": "./index.js",
|
4
|
-
"@adviser/cement": "npm:@adviser/cement@~0.4.
|
5
|
-
"@fireproof/vendor": "npm:@fireproof/vendor@~2.0.2",
|
4
|
+
"@adviser/cement": "npm:@adviser/cement@~0.4.10",
|
6
5
|
"@ipld/car": "npm:@ipld/car@^5.4.0",
|
7
6
|
"@ipld/dag-cbor": "npm:@ipld/dag-cbor@^9.2.2",
|
8
7
|
"@ipld/dag-json": "npm:@ipld/dag-json@^10.2.3",
|
8
|
+
"@web3-storage/pail": "npm:@web3-storage/pail@^0.6.2",
|
9
9
|
"cborg": "npm:cborg@^4.2.9",
|
10
10
|
"jose": "npm:jose@^6.0.10",
|
11
11
|
"multiformats": "npm:multiformats@^13.3.2",
|
package/index.cjs
CHANGED
@@ -84,7 +84,7 @@ var import_cement = require("@adviser/cement");
|
|
84
84
|
|
85
85
|
// src/types.ts
|
86
86
|
function isFalsy(value) {
|
87
|
-
return value === false
|
87
|
+
return value === false && value === null && value === void 0;
|
88
88
|
}
|
89
89
|
var PARAM = {
|
90
90
|
SUFFIX: "suffix",
|
@@ -112,8 +112,7 @@ var PARAM = {
|
|
112
112
|
CAR_CACHE_SIZE: "carCacheSize",
|
113
113
|
CAR_COMPACT_CACHE_SIZE: "carCompactCacheSize",
|
114
114
|
CAR_META_CACHE_SIZE: "carMetaCacheSize",
|
115
|
-
GENESIS_CID: "baembeiarootfireproofgenesisblockaaaafireproofgenesisblocka"
|
116
|
-
LOCAL_NAME: "localName"
|
115
|
+
GENESIS_CID: "baembeiarootfireproofgenesisblockaaaafireproofgenesisblocka"
|
117
116
|
// FS = "fs",
|
118
117
|
};
|
119
118
|
function throwFalsy(value) {
|
@@ -488,11 +487,11 @@ function storeType2DataMetaWal(store) {
|
|
488
487
|
throw new Error(`unknown store ${store}`);
|
489
488
|
}
|
490
489
|
}
|
491
|
-
function ensureURIDefaults(sthis,
|
490
|
+
function ensureURIDefaults(sthis, name, curi, uri, store, ctx) {
|
492
491
|
ctx = ctx || {};
|
493
|
-
const ret = (curi ? import_cement.URI.from(curi) : uri).build().setParam(PARAM.STORE, store).defParam(PARAM.NAME,
|
494
|
-
if (
|
495
|
-
ret.
|
492
|
+
const ret = (curi ? import_cement.URI.from(curi) : uri).build().setParam(PARAM.STORE, store).defParam(PARAM.NAME, name);
|
493
|
+
if (!ret.hasParam(PARAM.NAME)) {
|
494
|
+
throw sthis.logger.Error().Url(ret).Any("ctx", ctx).Msg("Ledger name is required").AsError();
|
496
495
|
}
|
497
496
|
if (ctx.idx) {
|
498
497
|
ret.defParam(PARAM.INDEX, "idx");
|
@@ -1292,13 +1291,6 @@ var import_cement7 = require("@adviser/cement");
|
|
1292
1291
|
var MEMORY_VERSION = "v0.19-memory";
|
1293
1292
|
|
1294
1293
|
// src/runtime/gateways/memory/gateway.ts
|
1295
|
-
function cleanURI(uri) {
|
1296
|
-
return uri.build().cleanParams(
|
1297
|
-
PARAM.VERSION,
|
1298
|
-
// PARAM.STORE,
|
1299
|
-
PARAM.LOCAL_NAME
|
1300
|
-
).URI();
|
1301
|
-
}
|
1302
1294
|
var MemoryGateway = class {
|
1303
1295
|
// readonly logger: Logger;
|
1304
1296
|
constructor(sthis, memorys) {
|
@@ -1316,33 +1308,33 @@ var MemoryGateway = class {
|
|
1316
1308
|
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1317
1309
|
}
|
1318
1310
|
destroy(baseUrl) {
|
1319
|
-
const keyUrl =
|
1320
|
-
const match = keyUrl.match(keyUrl);
|
1311
|
+
const keyUrl = baseUrl.toString();
|
1321
1312
|
for (const key of this.memorys.keys()) {
|
1322
|
-
if (
|
1313
|
+
if (key.startsWith(keyUrl)) {
|
1323
1314
|
this.memorys.delete(key);
|
1324
1315
|
}
|
1325
1316
|
}
|
1317
|
+
this.memorys.clear();
|
1326
1318
|
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1327
1319
|
}
|
1328
1320
|
async put(url, bytes) {
|
1329
|
-
this.memorys.set(
|
1321
|
+
this.memorys.set(url.toString(), bytes);
|
1330
1322
|
return import_cement7.Result.Ok(void 0);
|
1331
1323
|
}
|
1332
1324
|
// get could return a NotFoundError if the key is not found
|
1333
1325
|
get(url) {
|
1334
|
-
const x = this.memorys.get(
|
1326
|
+
const x = this.memorys.get(url.toString());
|
1335
1327
|
if (!x) {
|
1336
1328
|
return Promise.resolve(import_cement7.Result.Err(new NotFoundError(`not found: ${url.toString()}`)));
|
1337
1329
|
}
|
1338
1330
|
return Promise.resolve(import_cement7.Result.Ok(x));
|
1339
1331
|
}
|
1340
1332
|
delete(url) {
|
1341
|
-
this.memorys.delete(
|
1333
|
+
this.memorys.delete(url.toString());
|
1342
1334
|
return Promise.resolve(import_cement7.Result.Ok(void 0));
|
1343
1335
|
}
|
1344
1336
|
async getPlain(url, key) {
|
1345
|
-
const x = this.memorys.get(
|
1337
|
+
const x = this.memorys.get(url.build().setParam(PARAM.KEY, key).toString());
|
1346
1338
|
if (!x) {
|
1347
1339
|
return import_cement7.Result.Err(new NotFoundError("not found"));
|
1348
1340
|
}
|
@@ -1370,7 +1362,7 @@ function File2FPMsg(fpfile) {
|
|
1370
1362
|
|
1371
1363
|
// src/runtime/gateways/fp-envelope-serialize.ts
|
1372
1364
|
var import_cement9 = require("@adviser/cement");
|
1373
|
-
var import_clock = require("@
|
1365
|
+
var import_clock = require("@web3-storage/pail/clock");
|
1374
1366
|
var import_base64 = require("multiformats/bases/base64");
|
1375
1367
|
var import_multiformats = require("multiformats");
|
1376
1368
|
var import_link = require("multiformats/link");
|
@@ -2351,7 +2343,7 @@ async function parseCarFile(reader, logger) {
|
|
2351
2343
|
}
|
2352
2344
|
|
2353
2345
|
// src/blockstore/transaction.ts
|
2354
|
-
var import_block4 = require("@
|
2346
|
+
var import_block4 = require("@web3-storage/pail/block");
|
2355
2347
|
var import_cement12 = require("@adviser/cement");
|
2356
2348
|
var CarTransactionImpl = class {
|
2357
2349
|
#memblock = new import_block4.MemoryBlockstore();
|
@@ -3025,44 +3017,19 @@ var AttachedRemotesImpl = class {
|
|
3025
3017
|
const gws = {
|
3026
3018
|
car: {
|
3027
3019
|
...gwp.car,
|
3028
|
-
url: ensureURIDefaults(
|
3029
|
-
this.loadable.sthis,
|
3030
|
-
{ name: attached.name, local: this._local?.gatewayUrls.car.url.getParam(PARAM.NAME) },
|
3031
|
-
void 0,
|
3032
|
-
import_cement14.URI.from(gwp.car.url),
|
3033
|
-
"car"
|
3034
|
-
)
|
3020
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, gwp.car.url, import_cement14.URI.from(gwp.car.url), "car")
|
3035
3021
|
},
|
3036
3022
|
file: {
|
3037
3023
|
...gwp.file,
|
3038
|
-
url: ensureURIDefaults(
|
3039
|
-
this.loadable.sthis,
|
3040
|
-
{ name: attached.name, local: this._local?.gatewayUrls.file.url.getParam(PARAM.NAME) },
|
3041
|
-
void 0,
|
3042
|
-
import_cement14.URI.from(gwp.file.url),
|
3043
|
-
"file",
|
3044
|
-
{ file: true }
|
3045
|
-
)
|
3024
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.file.url), "file", { file: true })
|
3046
3025
|
},
|
3047
3026
|
meta: {
|
3048
3027
|
...gwp.meta,
|
3049
|
-
url: ensureURIDefaults(
|
3050
|
-
this.loadable.sthis,
|
3051
|
-
{ name: attached.name, local: this._local?.gatewayUrls.meta.url.getParam(PARAM.NAME) },
|
3052
|
-
void 0,
|
3053
|
-
import_cement14.URI.from(gwp.meta.url),
|
3054
|
-
"meta"
|
3055
|
-
)
|
3028
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.meta.url), "meta")
|
3056
3029
|
},
|
3057
3030
|
wal: gwp.wal ? {
|
3058
3031
|
...gwp.wal,
|
3059
|
-
url: ensureURIDefaults(
|
3060
|
-
this.loadable.sthis,
|
3061
|
-
{ name: attached.name, local: this._local?.gatewayUrls.wal?.url.getParam(PARAM.NAME) },
|
3062
|
-
void 0,
|
3063
|
-
import_cement14.URI.from(gwp.wal.url),
|
3064
|
-
"wal"
|
3065
|
-
)
|
3032
|
+
url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.wal.url), "wal")
|
3066
3033
|
} : void 0
|
3067
3034
|
};
|
3068
3035
|
const key = JSON.stringify(
|
@@ -3087,7 +3054,7 @@ var AttachedRemotesImpl = class {
|
|
3087
3054
|
);
|
3088
3055
|
if (result.stores.wal) {
|
3089
3056
|
if (this._local) {
|
3090
|
-
throw this.loadable.sthis.logger.Error().
|
3057
|
+
throw this.loadable.sthis.logger.Error().Msg("local store could only set once").AsError();
|
3091
3058
|
}
|
3092
3059
|
this._local = result;
|
3093
3060
|
}
|
@@ -3154,11 +3121,10 @@ var Loader = class {
|
|
3154
3121
|
if (!at.stores.wal) {
|
3155
3122
|
try {
|
3156
3123
|
const dbMeta = await at.stores.meta.load();
|
3157
|
-
if (Array.isArray(dbMeta)) {
|
3158
|
-
|
3159
|
-
} else if (!isFalsy(dbMeta)) {
|
3160
|
-
throw this.logger.Error().Any({ dbMeta }).Msg("missing dbMeta").AsError();
|
3124
|
+
if (!Array.isArray(dbMeta)) {
|
3125
|
+
throw this.logger.Error().Msg("missing dbMeta").AsError();
|
3161
3126
|
}
|
3127
|
+
await this.handleDbMetasFromStore(dbMeta, this.attachedStores.activate(at.stores));
|
3162
3128
|
} catch (e) {
|
3163
3129
|
this.logger.Error().Err(e).Msg("error attaching store");
|
3164
3130
|
at.detach();
|
@@ -3680,7 +3646,7 @@ async function keyedCryptoFactory(url, kb, sthis) {
|
|
3680
3646
|
}
|
3681
3647
|
|
3682
3648
|
// src/blockstore/store.ts
|
3683
|
-
var import_clock2 = require("@
|
3649
|
+
var import_clock2 = require("@web3-storage/pail/clock");
|
3684
3650
|
var import_dag_json2 = require("@ipld/dag-json");
|
3685
3651
|
var import_p_retry = __toESM(require("p-retry"), 1);
|
3686
3652
|
var import_p_map = __toESM(require("p-map"), 1);
|
@@ -4430,9 +4396,9 @@ var URIInterceptor = class _URIInterceptor extends PassThroughGateway {
|
|
4430
4396
|
var import_link2 = require("multiformats/link");
|
4431
4397
|
var import_sha27 = require("multiformats/hashes/sha2");
|
4432
4398
|
var codec2 = __toESM(require("@ipld/dag-cbor"), 1);
|
4433
|
-
var import_crdt = require("@
|
4434
|
-
var import_clock3 = require("@
|
4435
|
-
var Batch = __toESM(require("@
|
4399
|
+
var import_crdt = require("@web3-storage/pail/crdt");
|
4400
|
+
var import_clock3 = require("@web3-storage/pail/clock");
|
4401
|
+
var Batch = __toESM(require("@web3-storage/pail/crdt/batch"), 1);
|
4436
4402
|
function time(tag) {
|
4437
4403
|
}
|
4438
4404
|
function timeEnd(tag) {
|
@@ -4744,8 +4710,8 @@ async function getBlock(blocks, cidString) {
|
|
4744
4710
|
}
|
4745
4711
|
|
4746
4712
|
// src/crdt-clock.ts
|
4747
|
-
var import_clock4 = require("@
|
4748
|
-
var import_crdt2 = require("@
|
4713
|
+
var import_clock4 = require("@web3-storage/pail/clock");
|
4714
|
+
var import_crdt2 = require("@web3-storage/pail/crdt");
|
4749
4715
|
var import_cement19 = require("@adviser/cement");
|
4750
4716
|
|
4751
4717
|
// src/apply-head-queue.ts
|
@@ -5287,26 +5253,19 @@ function toStoreURIRuntime(sthis, name, sopts) {
|
|
5287
5253
|
const base = import_cement21.URI.from(sopts.base);
|
5288
5254
|
return {
|
5289
5255
|
idx: {
|
5290
|
-
car: ensureURIDefaults(sthis,
|
5291
|
-
file: ensureURIDefaults(
|
5292
|
-
|
5293
|
-
|
5294
|
-
|
5295
|
-
|
5296
|
-
|
5297
|
-
{
|
5298
|
-
file: true,
|
5299
|
-
idx: true
|
5300
|
-
}
|
5301
|
-
),
|
5302
|
-
meta: ensureURIDefaults(sthis, { name }, sopts.idx?.meta ?? sopts.data?.meta, base, "meta", { idx: true }),
|
5303
|
-
wal: ensureURIDefaults(sthis, { name }, sopts.idx?.wal ?? sopts.data?.wal, base, "wal", { idx: true })
|
5256
|
+
car: ensureURIDefaults(sthis, name, sopts.idx?.car ?? sopts.data?.car, base, "car", { idx: true }),
|
5257
|
+
file: ensureURIDefaults(sthis, name, sopts.idx?.file ?? sopts.idx?.car ?? sopts.data?.file ?? sopts.data?.car, base, "file", {
|
5258
|
+
file: true,
|
5259
|
+
idx: true
|
5260
|
+
}),
|
5261
|
+
meta: ensureURIDefaults(sthis, name, sopts.idx?.meta ?? sopts.data?.meta, base, "meta", { idx: true }),
|
5262
|
+
wal: ensureURIDefaults(sthis, name, sopts.idx?.wal ?? sopts.data?.wal, base, "wal", { idx: true })
|
5304
5263
|
},
|
5305
5264
|
data: {
|
5306
|
-
car: ensureURIDefaults(sthis,
|
5307
|
-
file: ensureURIDefaults(sthis,
|
5308
|
-
meta: ensureURIDefaults(sthis,
|
5309
|
-
wal: ensureURIDefaults(sthis,
|
5265
|
+
car: ensureURIDefaults(sthis, name, sopts.data?.car, base, "car"),
|
5266
|
+
file: ensureURIDefaults(sthis, name, sopts.data?.file ?? sopts.data?.car, base, "file", { file: true }),
|
5267
|
+
meta: ensureURIDefaults(sthis, name, sopts.data?.meta, base, "meta"),
|
5268
|
+
wal: ensureURIDefaults(sthis, name, sopts.data?.wal, base, "wal")
|
5310
5269
|
}
|
5311
5270
|
};
|
5312
5271
|
}
|
@@ -7304,6 +7263,6 @@ function buildResDelWAL(msgCtx, req, ctx) {
|
|
7304
7263
|
|
7305
7264
|
// src/version.ts
|
7306
7265
|
var PACKAGE_VERSION = Object.keys({
|
7307
|
-
"0.20.0
|
7266
|
+
"0.20.0": "xxxx"
|
7308
7267
|
})[0];
|
7309
7268
|
//# sourceMappingURL=index.cjs.map
|