@fireproof/core 0.19.112 → 0.19.114

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.
Files changed (35) hide show
  1. package/{chunk-D4E6UX6S.js → chunk-JO62JMEP.js} +12 -7
  2. package/chunk-JO62JMEP.js.map +1 -0
  3. package/{chunk-PWEDYV5H.js → chunk-UUOLR3GZ.js} +2 -2
  4. package/deno.json +8 -8
  5. package/{gateway-72EUHYEL.js → gateway-UT5GFV5R.js} +3 -3
  6. package/index.cjs +15 -10
  7. package/index.cjs.map +1 -1
  8. package/index.d.cts +4 -4
  9. package/index.d.ts +4 -4
  10. package/index.global.js +148 -30851
  11. package/index.global.js.map +1 -1
  12. package/index.js +8 -8
  13. package/index.js.map +1 -1
  14. package/{key-bag-file-VP6Y7N26.js → key-bag-file-GTGVZHHM.js} +3 -3
  15. package/{key-bag-indexdb-VOVNNCXQ.js → key-bag-indexdb-NZMTNJLK.js} +3 -3
  16. package/metafile-cjs.json +1 -1
  17. package/metafile-esm.json +1 -1
  18. package/metafile-iife.json +1 -1
  19. package/package.json +9 -9
  20. package/tests/fireproof/fireproof.test.ts +1 -1
  21. package/{utils-WS4AZWA7.js → utils-5UEZAKVP.js} +3 -3
  22. package/web/gateway-impl.cjs +7 -2
  23. package/web/gateway-impl.cjs.map +1 -1
  24. package/web/gateway-impl.d.cts +1 -1
  25. package/web/gateway-impl.d.ts +1 -1
  26. package/web/gateway-impl.js +7 -2
  27. package/web/gateway-impl.js.map +1 -1
  28. package/web/metafile-cjs.json +1 -1
  29. package/web/metafile-esm.json +1 -1
  30. package/chunk-D4E6UX6S.js.map +0 -1
  31. /package/{chunk-PWEDYV5H.js.map → chunk-UUOLR3GZ.js.map} +0 -0
  32. /package/{gateway-72EUHYEL.js.map → gateway-UT5GFV5R.js.map} +0 -0
  33. /package/{key-bag-file-VP6Y7N26.js.map → key-bag-file-GTGVZHHM.js.map} +0 -0
  34. /package/{key-bag-indexdb-VOVNNCXQ.js.map → key-bag-indexdb-NZMTNJLK.js.map} +0 -0
  35. /package/{utils-WS4AZWA7.js.map → utils-5UEZAKVP.js.map} +0 -0
@@ -13,9 +13,12 @@ import {
13
13
  YAMLFormatter
14
14
  } from "@adviser/cement";
15
15
  import { base58btc } from "multiformats/bases/base58";
16
- var globalLogger = new LoggerImpl();
16
+ var _globalLogger = new ResolveOnce();
17
+ function globalLogger() {
18
+ return _globalLogger.once(() => new LoggerImpl());
19
+ }
17
20
  var registerFP_DEBUG = new ResolveOnce();
18
- var superThis = class _superThis {
21
+ var SuperThisImpl = class _SuperThisImpl {
19
22
  constructor(opts) {
20
23
  this.logger = opts.logger;
21
24
  this.env = opts.env;
@@ -45,7 +48,7 @@ var superThis = class _superThis {
45
48
  return Promise.resolve();
46
49
  }
47
50
  clone(override) {
48
- return new _superThis({
51
+ return new _SuperThisImpl({
49
52
  logger: override.logger || this.logger,
50
53
  env: envFactory(override.env) || this.env,
51
54
  crypto: override.crypto || this.crypto,
@@ -92,8 +95,8 @@ function ensureSuperThis(osthis) {
92
95
  symbol: osthis?.env?.symbol || "FP_ENV",
93
96
  presetEnv: osthis?.env?.presetEnv || presetEnv()
94
97
  });
95
- return new superThis({
96
- logger: osthis?.logger || globalLogger,
98
+ return new SuperThisImpl({
99
+ logger: osthis?.logger || globalLogger(),
97
100
  env,
98
101
  crypto: osthis?.crypto || toCryptoRuntime(),
99
102
  ctx: osthis?.ctx || {},
@@ -107,11 +110,13 @@ function ensureSuperLog(sthis, componentName, ctx) {
107
110
  });
108
111
  }
109
112
  function ensureLogger(sthis, componentName, ctx) {
110
- let logger = globalLogger;
113
+ let logger;
111
114
  if (IsLogger(sthis)) {
112
115
  logger = sthis;
113
116
  } else if (sthis && IsLogger(sthis.logger)) {
114
117
  logger = sthis.logger;
118
+ } else {
119
+ logger = globalLogger();
115
120
  }
116
121
  const cLogger = logger.With().Module(componentName);
117
122
  const debug = [];
@@ -282,4 +287,4 @@ export {
282
287
  dataDir,
283
288
  UInt8ArrayEqual
284
289
  };
285
- //# sourceMappingURL=chunk-D4E6UX6S.js.map
290
+ //# sourceMappingURL=chunk-JO62JMEP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils.ts"],"sourcesContent":["import {\n Logger,\n LoggerImpl,\n IsLogger,\n Result,\n ResolveOnce,\n isURL,\n URI,\n CoerceURI,\n runtimeFn,\n envFactory,\n Env,\n toCryptoRuntime,\n CryptoRuntime,\n JSONFormatter,\n YAMLFormatter,\n} from \"@adviser/cement\";\nimport { PathOps, StoreType, SuperThis, SuperThisOpts, TextEndeCoder } from \"./types\";\nimport { base58btc } from \"multiformats/bases/base58\";\n\nexport type { Logger };\nexport { Result };\n\nconst _globalLogger = new ResolveOnce();\nfunction globalLogger(): Logger {\n return _globalLogger.once(() => new LoggerImpl());\n}\n\nconst registerFP_DEBUG = new ResolveOnce();\n\ninterface superThisOpts {\n readonly logger: Logger;\n readonly env: Env;\n readonly pathOps: PathOps;\n readonly crypto: CryptoRuntime;\n readonly ctx: Record<string, unknown>;\n readonly txt: TextEndeCoder;\n}\n\nclass SuperThisImpl implements SuperThis {\n readonly logger: Logger;\n readonly env: Env;\n readonly pathOps: PathOps;\n readonly ctx: Record<string, unknown>;\n readonly txt: TextEndeCoder;\n readonly crypto: CryptoRuntime;\n\n constructor(opts: superThisOpts) {\n this.logger = opts.logger;\n this.env = opts.env;\n this.crypto = opts.crypto;\n this.pathOps = opts.pathOps;\n this.txt = opts.txt;\n this.ctx = { ...opts.ctx };\n // console.log(\"superThis\", this);\n }\n\n nextId(bytes = 6): { str: string; bin: Uint8Array } {\n const bin = this.crypto.randomBytes(bytes);\n return {\n str: base58btc.encode(bin),\n bin,\n };\n }\n\n timeOrderedNextId(now?: number): { str: string } {\n now = typeof now === \"number\" ? now : new Date().getTime();\n // 49th bit\n const t = (0x1000000000000 + now).toString(16).replace(/^1/, \"\");\n const bin = this.crypto.randomBytes(10);\n bin[1] = (bin[1] & 0xf0) | (bin[1] | 0x08 && 0x0b);\n const hex = Array.from(bin)\n .map((i) => i.toString(16).padStart(2, \"0\"))\n .join(\"\");\n return {\n str: `${t.slice(0, 8)}-${t.slice(8)}-7${hex.slice(0, 3)}-${hex.slice(3, 7)}-${hex.slice(7, 19)}`,\n };\n }\n\n start(): Promise<void> {\n return Promise.resolve();\n }\n\n clone(override: Partial<SuperThisOpts>): SuperThis {\n return new SuperThisImpl({\n logger: override.logger || this.logger,\n env: envFactory(override.env) || this.env,\n crypto: override.crypto || this.crypto,\n pathOps: override.pathOps || this.pathOps,\n txt: override.txt || this.txt,\n ctx: { ...this.ctx, ...override.ctx },\n });\n }\n}\n\n// const pathOps =\nfunction presetEnv() {\n const penv = new Map([\n // [\"FP_DEBUG\", \"xxx\"],\n // [\"FP_ENV\", \"development\"],\n ...Array.from(\n Object.entries(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ((globalThis as any)[Symbol.for(\"FP_PRESET_ENV\")] || {}) as Record<string, string>,\n ),\n ), // .map(([k, v]) => [k, v as string])\n ]);\n // console.log(\">>>>>>\", penv)\n return penv;\n}\n// const envImpl = envFactory({\n// symbol: \"FP_ENV\",\n// presetEnv: presetEnv(),\n// });\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n dirname(path: string) {\n return path.split(\"/\").slice(0, -1).join(\"/\");\n }\n // homedir() {\n // throw new Error(\"SysContainer:homedir is not available in seeded state\");\n // }\n}\nconst pathOps = new pathOpsImpl();\nconst txtOps = {\n // eslint-disable-next-line no-restricted-globals\n encode: (input: string) => new TextEncoder().encode(input),\n // eslint-disable-next-line no-restricted-globals\n decode: (input: Uint8Array) => new TextDecoder().decode(input),\n};\n\nexport function ensureSuperThis(osthis?: Partial<SuperThisOpts>): SuperThis {\n const env = envFactory({\n symbol: osthis?.env?.symbol || \"FP_ENV\",\n presetEnv: osthis?.env?.presetEnv || presetEnv(),\n });\n return new SuperThisImpl({\n logger: osthis?.logger || globalLogger(),\n env,\n crypto: osthis?.crypto || toCryptoRuntime(),\n ctx: osthis?.ctx || {},\n pathOps,\n txt: osthis?.txt || txtOps,\n });\n}\n\n// // eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function ensureSuperLog(sthis: SuperThis, componentName: string, ctx?: Record<string, unknown>): SuperThis {\n return sthis.clone({\n logger: ensureLogger(sthis, componentName, ctx),\n });\n}\n\nexport function ensureLogger(\n sthis: SuperThis /* Partial<LoggerOpts> | Logger */,\n componentName: string,\n ctx?: Record<string, unknown>,\n): Logger {\n // if (!opts?.logger) {\n // throw new Error(\"logger is required\");\n // }\n let logger: Logger;\n if (IsLogger(sthis)) {\n logger = sthis;\n } else if (sthis && IsLogger(sthis.logger)) {\n logger = sthis.logger;\n } else {\n logger = globalLogger();\n }\n const cLogger = logger.With().Module(componentName); //.Str(\"this\", uuidv7());\n const debug: string[] = [];\n let exposeStack = false;\n if (ctx) {\n if (\"debug\" in ctx) {\n if (typeof ctx.debug === \"string\" && ctx.debug.length > 0) {\n debug.push(ctx.debug);\n } else {\n debug.push(componentName);\n }\n delete ctx.debug;\n }\n if (\"exposeStack\" in ctx) {\n exposeStack = true;\n delete ctx.exposeStack;\n }\n if (\"this\" in ctx) {\n cLogger.Str(\"this\", sthis.nextId(4).str);\n delete ctx.this;\n }\n for (const [key, value] of Object.entries(ctx)) {\n switch (typeof value) {\n case \"string\":\n cLogger.Str(key, value);\n break;\n case \"number\":\n cLogger.Uint64(key, value);\n break;\n default:\n if (value instanceof Date) {\n cLogger.Str(key, value.toISOString());\n } else if (isURL(value)) {\n cLogger.Str(key, value.toString());\n } else if (typeof value === \"function\") {\n cLogger.Ref(key, value);\n } else {\n cLogger.Any(key, value);\n }\n break;\n }\n }\n }\n registerFP_DEBUG\n .once(async () => {\n // console.log(\"registerFP_DEBUG\", SysContainer.env)\n sthis.env.onSet(\n (key, value) => {\n // console.log(\"FP_DEBUG\", key, value, debug)\n switch (key) {\n case \"FP_FORMAT\": {\n switch (value) {\n case \"jsonice\":\n logger.SetFormatter(new JSONFormatter(logger.TxtEnDe(), 2));\n break;\n case \"yaml\":\n logger.SetFormatter(new YAMLFormatter(logger.TxtEnDe(), 2));\n break;\n case \"json\":\n default:\n logger.SetFormatter(new JSONFormatter(logger.TxtEnDe()));\n break;\n }\n break;\n }\n case \"FP_DEBUG\":\n logger.SetDebug(value || []);\n break;\n case \"FP_STACK\":\n logger.SetExposeStack(!!value);\n break;\n }\n },\n \"FP_FORMAT\",\n \"FP_DEBUG\",\n \"FP_STACK\",\n );\n })\n .finally(() => {\n /* do nothing */\n });\n\n if (debug.length > 0) {\n logger.SetDebug(debug);\n }\n if (exposeStack) {\n logger.SetExposeStack(true);\n }\n const out = cLogger.Logger();\n // out.Debug().Msg(\"logger ready\");\n return out;\n}\n\nexport type Joiner = (...toJoin: string[]) => string;\n\nexport interface Store {\n readonly store: StoreType;\n readonly name: string;\n}\n\nexport function getStore(url: URI, sthis: SuperThis, joiner: Joiner): Store {\n const store = url.getParam(\"store\");\n switch (store) {\n case \"data\":\n case \"wal\":\n case \"meta\":\n break;\n default:\n throw sthis.logger.Error().Url(url).Msg(`store not found`).AsError();\n }\n let name: string = store;\n if (url.hasParam(\"index\")) {\n name = joiner(url.getParam(\"index\") || \"idx\", name);\n }\n return { store, name };\n}\n\nexport function getKey(url: URI, logger: Logger): string {\n const result = url.getParam(\"key\");\n if (!result) throw logger.Error().Str(\"url\", url.toString()).Msg(`key not found`).AsError();\n return result;\n}\n\nexport function getName(sthis: SuperThis, url: URI): string {\n let result = url.getParam(\"name\");\n if (!result) {\n result = sthis.pathOps.dirname(url.pathname);\n if (result.length === 0) {\n throw sthis.logger.Error().Str(\"url\", url.toString()).Msg(`name not found`).AsError();\n }\n }\n return result;\n}\n\n// export function exception2Result<T = void>(fn: () => Promise<T>): Promise<Result<T>> {\n// return fn()\n// .then((value) => Result.Ok(value))\n// .catch((e) => Result.Err(e));\n// }\n\nexport async function exceptionWrapper<T, E extends Error>(fn: () => Promise<Result<T, E>>): Promise<Result<T, E>> {\n return fn().catch((e) => Result.Err(e));\n}\n\n// // the big side effect party --- hate it\n// export function sanitizeURL(url: URL) {\n// url.searchParams.sort();\n// // const searchParams = Object.entries(url.searchParams).sort(([a], [b]) => a.localeCompare(b));\n// // console.log(\"searchParams\", searchParams);\n// // for (const [key] of searchParams) {\n// // url.searchParams.delete(key);\n// // }\n// // for (const [key, value] of searchParams) {\n// // url.searchParams.set(key, value);\n// // }\n// }\n\nexport class NotFoundError extends Error {\n readonly code = \"ENOENT\";\n}\n\nexport function isNotFoundError(e: Error | Result<unknown> | unknown): e is NotFoundError {\n if (Result.Is(e)) {\n if (e.isOk()) return false;\n e = e.Err();\n }\n if ((e as NotFoundError).code === \"ENOENT\") return true;\n return false;\n}\n\nexport function dataDir(sthis: SuperThis, name?: string, base?: CoerceURI): URI {\n if (!base) {\n if (!runtimeFn().isBrowser) {\n const home = sthis.env.get(\"HOME\") || \"./\";\n base = sthis.env.get(\"FP_STORAGE_URL\") || `file://${sthis.pathOps.join(home, \".fireproof\")}`;\n } else {\n base = sthis.env.get(\"FP_STORAGE_URL\") || `indexdb://fp`;\n }\n }\n return URI.from(base.toString())\n .build()\n .setParam(\"name\", name || \"\")\n .URI();\n}\n\nexport function UInt8ArrayEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getStore
3
- } from "./chunk-D4E6UX6S.js";
3
+ } from "./chunk-JO62JMEP.js";
4
4
 
5
5
  // src/runtime/gateways/file/get-file-system-dynamic.ts
6
6
  import { KeyedResolvOnce } from "@adviser/cement";
@@ -68,4 +68,4 @@ export {
68
68
  getPath,
69
69
  getFileName
70
70
  };
71
- //# sourceMappingURL=chunk-PWEDYV5H.js.map
71
+ //# sourceMappingURL=chunk-UUOLR3GZ.js.map
package/deno.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "imports": {
3
3
  "@fireproof/core": "./index.js",
4
- "@adviser/cement": "npm:@adviser/cement@^0.2.36",
5
- "multiformats": "npm:multiformats@^13.3.0",
4
+ "@adviser/cement": "npm:@adviser/cement@^0.2.40",
5
+ "multiformats": "npm:multiformats@^13.3.1",
6
6
  "@ipld/unixfs": "npm:@ipld/unixfs@^3.0.0",
7
- "@ipld/car": "npm:@ipld/car@^5.3.2",
8
- "@ipld/dag-json": "npm:@ipld/dag-json@^10.2.2",
9
- "@ipld/dag-cbor": "npm:@ipld/dag-cbor@^9.2.1",
7
+ "@ipld/car": "npm:@ipld/car@^5.3.3",
8
+ "@ipld/dag-json": "npm:@ipld/dag-json@^10.2.3",
9
+ "@ipld/dag-cbor": "npm:@ipld/dag-cbor@^9.2.2",
10
10
  "@web3-storage/pail": "npm:@web3-storage/pail@^0.6.0",
11
- "cborg": "npm:cborg@^4.2.4",
11
+ "cborg": "npm:cborg@^4.2.6",
12
12
  "charwise": "npm:charwise@^3.0.1",
13
13
  "prolly-trees": "npm:prolly-trees@^1.0.4",
14
14
  "idb": "npm:idb@^8.0.0",
15
15
  "ipfs-unixfs-exporter": "npm:ipfs-unixfs-exporter@^13.6.1",
16
- "memfs": "npm:memfs@^4.12.0",
16
+ "memfs": "npm:memfs@^4.14.0",
17
17
  "p-limit": "npm:p-limit@^6.1.0",
18
18
  "p-map": "npm:p-map@^7.0.2",
19
- "p-retry": "npm:p-retry@^6.2.0"
19
+ "p-retry": "npm:p-retry@^6.2.1"
20
20
  }
21
21
  }
@@ -5,13 +5,13 @@ import {
5
5
  getFileName,
6
6
  getFileSystem,
7
7
  getPath
8
- } from "./chunk-PWEDYV5H.js";
8
+ } from "./chunk-UUOLR3GZ.js";
9
9
  import {
10
10
  NotFoundError,
11
11
  ensureLogger,
12
12
  exceptionWrapper,
13
13
  isNotFoundError
14
- } from "./chunk-D4E6UX6S.js";
14
+ } from "./chunk-JO62JMEP.js";
15
15
  import "./chunk-PZ5AY32C.js";
16
16
 
17
17
  // src/runtime/gateways/file/gateway.ts
@@ -142,4 +142,4 @@ export {
142
142
  FileGateway,
143
143
  FileTestStore
144
144
  };
145
- //# sourceMappingURL=gateway-72EUHYEL.js.map
145
+ //# sourceMappingURL=gateway-UT5GFV5R.js.map
package/index.cjs CHANGED
@@ -31,6 +31,9 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
33
  // src/utils.ts
34
+ function globalLogger() {
35
+ return _globalLogger.once(() => new import_cement.LoggerImpl());
36
+ }
34
37
  function presetEnv() {
35
38
  const penv = new Map([
36
39
  // ["FP_DEBUG", "xxx"],
@@ -50,8 +53,8 @@ function ensureSuperThis(osthis) {
50
53
  symbol: osthis?.env?.symbol || "FP_ENV",
51
54
  presetEnv: osthis?.env?.presetEnv || presetEnv()
52
55
  });
53
- return new superThis({
54
- logger: osthis?.logger || globalLogger,
56
+ return new SuperThisImpl({
57
+ logger: osthis?.logger || globalLogger(),
55
58
  env,
56
59
  crypto: osthis?.crypto || (0, import_cement.toCryptoRuntime)(),
57
60
  ctx: osthis?.ctx || {},
@@ -65,11 +68,13 @@ function ensureSuperLog(sthis, componentName, ctx) {
65
68
  });
66
69
  }
67
70
  function ensureLogger(sthis, componentName, ctx) {
68
- let logger = globalLogger;
71
+ let logger;
69
72
  if ((0, import_cement.IsLogger)(sthis)) {
70
73
  logger = sthis;
71
74
  } else if (sthis && (0, import_cement.IsLogger)(sthis.logger)) {
72
75
  logger = sthis.logger;
76
+ } else {
77
+ logger = globalLogger();
73
78
  }
74
79
  const cLogger = logger.With().Module(componentName);
75
80
  const debug = [];
@@ -219,15 +224,15 @@ function UInt8ArrayEqual(a, b) {
219
224
  }
220
225
  return true;
221
226
  }
222
- var import_cement, import_base58, globalLogger, registerFP_DEBUG, superThis, pathOpsImpl, pathOps, txtOps, NotFoundError;
227
+ var import_cement, import_base58, _globalLogger, registerFP_DEBUG, SuperThisImpl, pathOpsImpl, pathOps, txtOps, NotFoundError;
223
228
  var init_utils = __esm({
224
229
  "src/utils.ts"() {
225
230
  "use strict";
226
231
  import_cement = require("@adviser/cement");
227
232
  import_base58 = require("multiformats/bases/base58");
228
- globalLogger = new import_cement.LoggerImpl();
233
+ _globalLogger = new import_cement.ResolveOnce();
229
234
  registerFP_DEBUG = new import_cement.ResolveOnce();
230
- superThis = class _superThis {
235
+ SuperThisImpl = class _SuperThisImpl {
231
236
  constructor(opts) {
232
237
  this.logger = opts.logger;
233
238
  this.env = opts.env;
@@ -257,7 +262,7 @@ var init_utils = __esm({
257
262
  return Promise.resolve();
258
263
  }
259
264
  clone(override) {
260
- return new _superThis({
265
+ return new _SuperThisImpl({
261
266
  logger: override.logger || this.logger,
262
267
  env: (0, import_cement.envFactory)(override.env) || this.env,
263
268
  crypto: override.crypto || this.crypto,
@@ -990,7 +995,7 @@ init_utils();
990
995
 
991
996
  // src/blockstore/loader.ts
992
997
  var import_p_limit = __toESM(require("p-limit"), 1);
993
- var import_car = require("@ipld/car");
998
+ var import_reader = require("@ipld/car/reader");
994
999
  var import_cement7 = require("@adviser/cement");
995
1000
 
996
1001
  // src/blockstore/loader-helpers.ts
@@ -1938,7 +1943,7 @@ var Loader = class {
1938
1943
  throw this.logger.Error().Url(local.url()).Str("cid", cidsString).Msg("missing car files").AsError();
1939
1944
  }
1940
1945
  const bytes = await decode({ bytes: loadedCar.bytes, hasher: import_sha23.sha256, codec: (await activeStore.keyedCrypto()).codec() });
1941
- const rawReader = await import_car.CarReader.fromBytes(bytes.value);
1946
+ const rawReader = await import_reader.CarReader.fromBytes(bytes.value);
1942
1947
  const readerP = Promise.resolve(rawReader);
1943
1948
  const cachedReaderP = readerP.then(async (reader) => {
1944
1949
  await this.cacheCarReader(cidsString, reader).catch((e) => {
@@ -4178,6 +4183,6 @@ init_utils();
4178
4183
 
4179
4184
  // src/version.ts
4180
4185
  var PACKAGE_VERSION = Object.keys({
4181
- "0.19.112": "xxxx"
4186
+ "0.19.114": "xxxx"
4182
4187
  })[0];
4183
4188
  //# sourceMappingURL=index.cjs.map