@fireproof/core 0.20.0-dev-preview-60 → 0.20.0-dev-preview-62

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
@@ -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 && value === null && value === void 0;
87
+ return value === false || value === null || value === void 0;
88
88
  }
89
89
  var PARAM = {
90
90
  SUFFIX: "suffix",
@@ -112,7 +112,8 @@ 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"
115
+ GENESIS_CID: "baembeiarootfireproofgenesisblockaaaafireproofgenesisblocka",
116
+ LOCAL_NAME: "localName"
116
117
  // FS = "fs",
117
118
  };
118
119
  function throwFalsy(value) {
@@ -487,11 +488,11 @@ function storeType2DataMetaWal(store) {
487
488
  throw new Error(`unknown store ${store}`);
488
489
  }
489
490
  }
490
- function ensureURIDefaults(sthis, name, curi, uri, store, ctx) {
491
+ function ensureURIDefaults(sthis, names, curi, uri, store, ctx) {
491
492
  ctx = ctx || {};
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();
493
+ const ret = (curi ? import_cement.URI.from(curi) : uri).build().setParam(PARAM.STORE, store).defParam(PARAM.NAME, names.name);
494
+ if (names.local) {
495
+ ret.defParam(PARAM.LOCAL_NAME, names.local);
495
496
  }
496
497
  if (ctx.idx) {
497
498
  ret.defParam(PARAM.INDEX, "idx");
@@ -1291,6 +1292,13 @@ var import_cement7 = require("@adviser/cement");
1291
1292
  var MEMORY_VERSION = "v0.19-memory";
1292
1293
 
1293
1294
  // 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
+ }
1294
1302
  var MemoryGateway = class {
1295
1303
  // readonly logger: Logger;
1296
1304
  constructor(sthis, memorys) {
@@ -1308,33 +1316,33 @@ var MemoryGateway = class {
1308
1316
  return Promise.resolve(import_cement7.Result.Ok(void 0));
1309
1317
  }
1310
1318
  destroy(baseUrl) {
1311
- const keyUrl = baseUrl.toString();
1319
+ const keyUrl = cleanURI(baseUrl);
1320
+ const match = keyUrl.match(keyUrl);
1312
1321
  for (const key of this.memorys.keys()) {
1313
- if (key.startsWith(keyUrl)) {
1322
+ if (keyUrl.match(key).score >= match.score) {
1314
1323
  this.memorys.delete(key);
1315
1324
  }
1316
1325
  }
1317
- this.memorys.clear();
1318
1326
  return Promise.resolve(import_cement7.Result.Ok(void 0));
1319
1327
  }
1320
1328
  async put(url, bytes) {
1321
- this.memorys.set(url.toString(), bytes);
1329
+ this.memorys.set(cleanURI(url).toString(), bytes);
1322
1330
  return import_cement7.Result.Ok(void 0);
1323
1331
  }
1324
1332
  // get could return a NotFoundError if the key is not found
1325
1333
  get(url) {
1326
- const x = this.memorys.get(url.toString());
1334
+ const x = this.memorys.get(cleanURI(url).toString());
1327
1335
  if (!x) {
1328
1336
  return Promise.resolve(import_cement7.Result.Err(new NotFoundError(`not found: ${url.toString()}`)));
1329
1337
  }
1330
1338
  return Promise.resolve(import_cement7.Result.Ok(x));
1331
1339
  }
1332
1340
  delete(url) {
1333
- this.memorys.delete(url.toString());
1341
+ this.memorys.delete(cleanURI(url).toString());
1334
1342
  return Promise.resolve(import_cement7.Result.Ok(void 0));
1335
1343
  }
1336
1344
  async getPlain(url, key) {
1337
- const x = this.memorys.get(url.build().setParam(PARAM.KEY, key).toString());
1345
+ const x = this.memorys.get(cleanURI(url).build().setParam(PARAM.KEY, key).toString());
1338
1346
  if (!x) {
1339
1347
  return import_cement7.Result.Err(new NotFoundError("not found"));
1340
1348
  }
@@ -3017,19 +3025,44 @@ var AttachedRemotesImpl = class {
3017
3025
  const gws = {
3018
3026
  car: {
3019
3027
  ...gwp.car,
3020
- url: ensureURIDefaults(this.loadable.sthis, attached.name, gwp.car.url, import_cement14.URI.from(gwp.car.url), "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
+ )
3021
3035
  },
3022
3036
  file: {
3023
3037
  ...gwp.file,
3024
- url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.file.url), "file", { file: true })
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
+ )
3025
3046
  },
3026
3047
  meta: {
3027
3048
  ...gwp.meta,
3028
- url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.meta.url), "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
+ )
3029
3056
  },
3030
3057
  wal: gwp.wal ? {
3031
3058
  ...gwp.wal,
3032
- url: ensureURIDefaults(this.loadable.sthis, attached.name, void 0, import_cement14.URI.from(gwp.wal.url), "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
+ )
3033
3066
  } : void 0
3034
3067
  };
3035
3068
  const key = JSON.stringify(
@@ -3054,7 +3087,7 @@ var AttachedRemotesImpl = class {
3054
3087
  );
3055
3088
  if (result.stores.wal) {
3056
3089
  if (this._local) {
3057
- throw this.loadable.sthis.logger.Error().Msg("local store could only set once").AsError();
3090
+ throw this.loadable.sthis.logger.Error().Any({ urls: result.gatewayUrls }).Msg("local store could only set once").AsError();
3058
3091
  }
3059
3092
  this._local = result;
3060
3093
  }
@@ -3121,10 +3154,11 @@ var Loader = class {
3121
3154
  if (!at.stores.wal) {
3122
3155
  try {
3123
3156
  const dbMeta = await at.stores.meta.load();
3124
- if (!Array.isArray(dbMeta)) {
3125
- throw this.logger.Error().Msg("missing dbMeta").AsError();
3157
+ if (Array.isArray(dbMeta)) {
3158
+ await this.handleDbMetasFromStore(dbMeta, this.attachedStores.activate(at.stores));
3159
+ } else if (!isFalsy(dbMeta)) {
3160
+ throw this.logger.Error().Any({ dbMeta }).Msg("missing dbMeta").AsError();
3126
3161
  }
3127
- await this.handleDbMetasFromStore(dbMeta, this.attachedStores.activate(at.stores));
3128
3162
  } catch (e) {
3129
3163
  this.logger.Error().Err(e).Msg("error attaching store");
3130
3164
  at.detach();
@@ -5253,19 +5287,26 @@ function toStoreURIRuntime(sthis, name, sopts) {
5253
5287
  const base = import_cement21.URI.from(sopts.base);
5254
5288
  return {
5255
5289
  idx: {
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 })
5290
+ car: ensureURIDefaults(sthis, { name }, sopts.idx?.car ?? sopts.data?.car, base, "car", { idx: true }),
5291
+ file: ensureURIDefaults(
5292
+ sthis,
5293
+ { name },
5294
+ sopts.idx?.file ?? sopts.idx?.car ?? sopts.data?.file ?? sopts.data?.car,
5295
+ base,
5296
+ "file",
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 })
5263
5304
  },
5264
5305
  data: {
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")
5306
+ car: ensureURIDefaults(sthis, { name }, sopts.data?.car, base, "car"),
5307
+ file: ensureURIDefaults(sthis, { name }, sopts.data?.file ?? sopts.data?.car, base, "file", { file: true }),
5308
+ meta: ensureURIDefaults(sthis, { name }, sopts.data?.meta, base, "meta"),
5309
+ wal: ensureURIDefaults(sthis, { name }, sopts.data?.wal, base, "wal")
5269
5310
  }
5270
5311
  };
5271
5312
  }
@@ -7263,6 +7304,6 @@ function buildResDelWAL(msgCtx, req, ctx) {
7263
7304
 
7264
7305
  // src/version.ts
7265
7306
  var PACKAGE_VERSION = Object.keys({
7266
- "0.20.0-dev-preview-60": "xxxx"
7307
+ "0.20.0-dev-preview-62": "xxxx"
7267
7308
  })[0];
7268
7309
  //# sourceMappingURL=index.cjs.map