@fireproof/core 0.19.119-dev-log → 0.19.120
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +8 -0
- package/{chunk-WVN66YAN.js → chunk-F4FC6B2T.js} +5 -13
- package/chunk-F4FC6B2T.js.map +1 -0
- package/{chunk-2D2X6HIB.js → chunk-RXC4JGJT.js} +13 -2
- package/chunk-RXC4JGJT.js.map +1 -0
- package/deno.json +5 -5
- package/{gateway-G4CPXEQF.js → gateway-C62S56GY.js} +2 -2
- package/{gateway-G4CPXEQF.js.map → gateway-C62S56GY.js.map} +1 -1
- package/{gateway-2O7QPHGW.js → gateway-VVS4QWDA.js} +3 -3
- package/gateway-VVS4QWDA.js.map +1 -0
- package/index.cjs +47 -21
- package/index.cjs.map +1 -1
- package/index.d.cts +2 -1
- package/index.d.ts +2 -1
- package/index.js +34 -10
- package/index.js.map +1 -1
- package/{key-bag-file-CBCAWTVG.js → key-bag-file-PWZ3QE7B.js} +3 -3
- package/{key-bag-indexdb-RTSMSGM7.js → key-bag-indexdb-SYG3YD4D.js} +3 -3
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/mem-filesystem.cjs.map +1 -1
- package/node/mem-filesystem.d.cts +1 -1
- package/node/mem-filesystem.d.ts +1 -1
- package/node/mem-filesystem.js.map +1 -1
- package/node/metafile-cjs.json +1 -1
- package/node/metafile-esm.json +1 -1
- package/node/node-filesystem.cjs.map +1 -1
- package/node/node-filesystem.d.cts +1 -2
- package/node/node-filesystem.d.ts +1 -2
- package/node/node-filesystem.js.map +1 -1
- package/package.json +17 -17
- package/react/index.cjs +3 -3
- package/tests/fireproof/config.test.ts +1 -0
- package/tests/fireproof/multiple-ledger.test.ts +1 -1
- package/{utils-XESRUKDJ.js → utils-ZVVGAXFE.js} +3 -3
- package/web/gateway-impl.cjs +24 -167
- package/web/gateway-impl.cjs.map +1 -1
- package/web/gateway-impl.d.cts +5 -59
- package/web/gateway-impl.d.ts +5 -59
- package/web/gateway-impl.js +7 -162
- package/web/gateway-impl.js.map +1 -1
- package/web/metafile-cjs.json +1 -1
- package/web/metafile-esm.json +1 -1
- package/chunk-2D2X6HIB.js.map +0 -1
- package/chunk-WVN66YAN.js.map +0 -1
- package/gateway-2O7QPHGW.js.map +0 -1
- package/node/types-DARSfXlb.d.cts +0 -23
- package/node/types-DARSfXlb.d.ts +0 -23
- /package/{key-bag-file-CBCAWTVG.js.map → key-bag-file-PWZ3QE7B.js.map} +0 -0
- /package/{key-bag-indexdb-RTSMSGM7.js.map → key-bag-indexdb-SYG3YD4D.js.map} +0 -0
- /package/{utils-XESRUKDJ.js.map → utils-ZVVGAXFE.js.map} +0 -0
package/README.md
CHANGED
@@ -155,6 +155,14 @@ It might be that using our provided deno.json is somekind of odd
|
|
155
155
|
deno run --config node_modules/@fireproof/core/deno.json --allow-read --allow-write --allow-env --unstable-sloppy-imports ./node-test.ts
|
156
156
|
```
|
157
157
|
|
158
|
+
### Create Docs
|
159
|
+
|
160
|
+
Caution it will be pushed directly
|
161
|
+
|
162
|
+
```shell
|
163
|
+
pnpm run build:doc
|
164
|
+
```
|
165
|
+
|
158
166
|
## Thanks 🙏
|
159
167
|
|
160
168
|
Fireproof is a synthesis of work done by people in the web community over the years. I couldn't even begin to name all the folks who made pivotal contributions. Without npm, React, and VS Code all this would have taken so much longer. Thanks to everyone who supported me getting into database development via Apache CouchDB, one of the original document databases. The distinguishing work on immutable data-structures comes from the years of consideration [IPFS](https://ipfs.tech), [IPLD](https://ipld.io), and the [Filecoin APIs](https://docs.filecoin.io) have enjoyed.
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import {
|
2
2
|
getStore
|
3
|
-
} from "./chunk-
|
3
|
+
} from "./chunk-RXC4JGJT.js";
|
4
4
|
|
5
|
-
// src/runtime/gateways/file/get-file-system-
|
5
|
+
// src/runtime/gateways/file/get-file-system-static.ts
|
6
6
|
import { KeyedResolvOnce } from "@adviser/cement";
|
7
7
|
var externalLoaders = new KeyedResolvOnce();
|
8
8
|
async function getFileSystem(url) {
|
@@ -11,11 +11,7 @@ async function getFileSystem(url) {
|
|
11
11
|
switch (name) {
|
12
12
|
case "mem":
|
13
13
|
fs = await externalLoaders.get(name).once(async () => {
|
14
|
-
const
|
15
|
-
const { MemFileSystem } = await import(
|
16
|
-
/* @vite-ignore */
|
17
|
-
memjs
|
18
|
-
);
|
14
|
+
const { MemFileSystem } = await import("@fireproof/core/mem");
|
19
15
|
return new MemFileSystem();
|
20
16
|
});
|
21
17
|
break;
|
@@ -26,11 +22,7 @@ async function getFileSystem(url) {
|
|
26
22
|
// }
|
27
23
|
default:
|
28
24
|
fs = await externalLoaders.get(name).once(async () => {
|
29
|
-
const
|
30
|
-
const { NodeFileSystem } = await import(
|
31
|
-
/* @vite-ignore */
|
32
|
-
nodejs
|
33
|
-
);
|
25
|
+
const { NodeFileSystem } = await import("@fireproof/core/node");
|
34
26
|
return new NodeFileSystem();
|
35
27
|
});
|
36
28
|
}
|
@@ -68,4 +60,4 @@ export {
|
|
68
60
|
getPath,
|
69
61
|
getFileName
|
70
62
|
};
|
71
|
-
//# sourceMappingURL=chunk-
|
63
|
+
//# sourceMappingURL=chunk-F4FC6B2T.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/gateways/file/get-file-system-static.ts","../../src/runtime/gateways/file/utils.ts"],"sourcesContent":["import { KeyedResolvOnce, type URI } from \"@adviser/cement\";\nimport type { SysFileSystem } from \"../../../types.js\";\n\nconst externalLoaders = new KeyedResolvOnce<SysFileSystem>();\nexport async function getFileSystem(url: URI): Promise<SysFileSystem> {\n const name = url.getParam(\"fs\", \"node\");\n let fs: SysFileSystem;\n switch (name) {\n case \"mem\":\n fs = await externalLoaders.get(name).once(async () => {\n const { MemFileSystem } = await import(\"@fireproof/core/mem\");\n return new MemFileSystem();\n });\n break;\n // case 'deno': {\n // const { DenoFileSystem } = await import(\"./deno-filesystem.js\");\n // fs = new DenoFileSystem();\n // break;\n // }\n default:\n fs = await externalLoaders.get(name).once(async () => {\n const { NodeFileSystem } = await import(\"@fireproof/core/node\");\n return new NodeFileSystem();\n });\n }\n return fs.start();\n}\n","import { URI } from \"@adviser/cement\";\nimport { getStore } from \"../../../utils.js\";\nimport { SuperThis } from \"../../../types.js\";\nexport * from \"./get-file-system-static.js\";\n\nexport function getPath(url: URI, sthis: SuperThis): string {\n const basePath = url.pathname;\n // .toString()\n // .replace(new RegExp(`^${url.protocol}//`), \"\")\n // .replace(/\\?.*$/, \"\");\n const name = url.getParam(\"name\");\n if (name) {\n const version = url.getParam(\"version\");\n if (!version) throw sthis.logger.Error().Url(url).Msg(`version not found`).AsError();\n return sthis.pathOps.join(basePath, version, name);\n }\n return sthis.pathOps.join(basePath);\n}\n\nexport function getFileName(url: URI, sthis: SuperThis): string {\n const key = url.getParam(\"key\");\n if (!key) throw sthis.logger.Error().Url(url).Msg(`key not found`).AsError();\n const res = getStore(url, sthis, (...a: string[]) => a.join(\"-\"));\n switch (res.store) {\n case \"data\":\n return sthis.pathOps.join(res.name, key + \".car\");\n case \"wal\":\n case \"meta\":\n return sthis.pathOps.join(res.name, key + \".json\");\n default:\n throw sthis.logger.Error().Url(url).Msg(`unsupported store type`).AsError();\n }\n}\n"],"mappings":";;;;;AAAA,SAAS,uBAAiC;AAG1C,IAAM,kBAAkB,IAAI,gBAA+B;AAC3D,eAAsB,cAAc,KAAkC;AACpE,QAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,MAAI;AACJ,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,WAAK,MAAM,gBAAgB,IAAI,IAAI,EAAE,KAAK,YAAY;AACpD,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,qBAAqB;AAC5D,eAAO,IAAI,cAAc;AAAA,MAC3B,CAAC;AACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF;AACE,WAAK,MAAM,gBAAgB,IAAI,IAAI,EAAE,KAAK,YAAY;AACpD,cAAM,EAAE,eAAe,IAAI,MAAM,OAAO,sBAAsB;AAC9D,eAAO,IAAI,eAAe;AAAA,MAC5B,CAAC;AAAA,EACL;AACA,SAAO,GAAG,MAAM;AAClB;;;ACrBO,SAAS,QAAQ,KAAU,OAA0B;AAC1D,QAAM,WAAW,IAAI;AAIrB,QAAM,OAAO,IAAI,SAAS,MAAM;AAChC,MAAI,MAAM;AACR,UAAM,UAAU,IAAI,SAAS,SAAS;AACtC,QAAI,CAAC,QAAS,OAAM,MAAM,OAAO,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,mBAAmB,EAAE,QAAQ;AACnF,WAAO,MAAM,QAAQ,KAAK,UAAU,SAAS,IAAI;AAAA,EACnD;AACA,SAAO,MAAM,QAAQ,KAAK,QAAQ;AACpC;AAEO,SAAS,YAAY,KAAU,OAA0B;AAC9D,QAAM,MAAM,IAAI,SAAS,KAAK;AAC9B,MAAI,CAAC,IAAK,OAAM,MAAM,OAAO,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,eAAe,EAAE,QAAQ;AAC3E,QAAM,MAAM,SAAS,KAAK,OAAO,IAAI,MAAgB,EAAE,KAAK,GAAG,CAAC;AAChE,UAAQ,IAAI,OAAO;AAAA,IACjB,KAAK;AACH,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,MAAM;AAAA,IAClD,KAAK;AAAA,IACL,KAAK;AACH,aAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,MAAM,OAAO;AAAA,IACnD;AACE,YAAM,MAAM,OAAO,MAAM,EAAE,IAAI,GAAG,EAAE,IAAI,wBAAwB,EAAE,QAAQ;AAAA,EAC9E;AACF;","names":[]}
|
@@ -90,12 +90,20 @@ var txtOps = {
|
|
90
90
|
// eslint-disable-next-line no-restricted-globals
|
91
91
|
decode: (input) => new TextDecoder().decode(input)
|
92
92
|
};
|
93
|
+
var _onSuperThis = /* @__PURE__ */ new Map();
|
94
|
+
function onSuperThis(fn) {
|
95
|
+
const key = `onSuperThis-${Math.random().toString(36).slice(2)}`;
|
96
|
+
_onSuperThis.set(key, fn);
|
97
|
+
return () => {
|
98
|
+
_onSuperThis.delete(key);
|
99
|
+
};
|
100
|
+
}
|
93
101
|
function ensureSuperThis(osthis) {
|
94
102
|
const env = envFactory({
|
95
103
|
symbol: osthis?.env?.symbol || "FP_ENV",
|
96
104
|
presetEnv: osthis?.env?.presetEnv || presetEnv()
|
97
105
|
});
|
98
|
-
|
106
|
+
const ret = new SuperThisImpl({
|
99
107
|
logger: osthis?.logger || globalLogger(),
|
100
108
|
env,
|
101
109
|
crypto: osthis?.crypto || toCryptoRuntime(),
|
@@ -103,6 +111,8 @@ function ensureSuperThis(osthis) {
|
|
103
111
|
pathOps,
|
104
112
|
txt: osthis?.txt || txtOps
|
105
113
|
});
|
114
|
+
_onSuperThis.forEach((fn) => fn(ret));
|
115
|
+
return ret;
|
106
116
|
}
|
107
117
|
function ensureSuperLog(sthis, componentName, ctx) {
|
108
118
|
return sthis.clone({
|
@@ -275,6 +285,7 @@ function UInt8ArrayEqual(a, b) {
|
|
275
285
|
|
276
286
|
export {
|
277
287
|
Result,
|
288
|
+
onSuperThis,
|
278
289
|
ensureSuperThis,
|
279
290
|
ensureSuperLog,
|
280
291
|
ensureLogger,
|
@@ -287,4 +298,4 @@ export {
|
|
287
298
|
dataDir,
|
288
299
|
UInt8ArrayEqual
|
289
300
|
};
|
290
|
-
//# sourceMappingURL=chunk-
|
301
|
+
//# sourceMappingURL=chunk-RXC4JGJT.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.js\";\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\nconst _onSuperThis = new Map<string, (sthis: SuperThis) => void>();\nexport function onSuperThis(fn: (sthis: SuperThis) => void): () => void {\n const key = `onSuperThis-${Math.random().toString(36).slice(2)}`;\n _onSuperThis.set(key, fn);\n return () => {\n _onSuperThis.delete(key);\n };\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 const ret = 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 _onSuperThis.forEach((fn) => fn(ret));\n return ret;\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":[]}
|
package/deno.json
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"imports": {
|
3
3
|
"@fireproof/core": "./index.js",
|
4
|
-
"@adviser/cement": "npm:@adviser/cement@^0.
|
5
|
-
"@fireproof/vendor": "npm:@fireproof/vendor@^1.0.
|
4
|
+
"@adviser/cement": "npm:@adviser/cement@^0.3.3",
|
5
|
+
"@fireproof/vendor": "npm:@fireproof/vendor@^1.0.3",
|
6
6
|
"@ipld/unixfs": "npm:@ipld/unixfs@^3.0.0",
|
7
7
|
"multiformats": "npm:multiformats@^13.3.1",
|
8
8
|
"charwise": "npm:charwise@^3.0.1",
|
9
9
|
"prolly-trees": "npm:prolly-trees@^1.0.4",
|
10
|
-
"idb": "npm:idb@^8.0.
|
11
|
-
"memfs": "npm:memfs@^4.15.
|
12
|
-
"p-limit": "npm:p-limit@^6.
|
10
|
+
"idb": "npm:idb@^8.0.1",
|
11
|
+
"memfs": "npm:memfs@^4.15.1",
|
12
|
+
"p-limit": "npm:p-limit@^6.2.0",
|
13
13
|
"p-map": "npm:p-map@^7.0.3",
|
14
14
|
"p-retry": "npm:p-retry@^6.2.1"
|
15
15
|
}
|
@@ -5,7 +5,7 @@ import { ResolveOnce } from "@adviser/cement";
|
|
5
5
|
|
6
6
|
// src/runtime/gateways/indexdb/gateway-import-static.ts
|
7
7
|
function gatewayImport() {
|
8
|
-
return import("
|
8
|
+
return import("@fireproof/core/web");
|
9
9
|
}
|
10
10
|
|
11
11
|
// src/runtime/gateways/indexdb/gateway.ts
|
@@ -63,4 +63,4 @@ export {
|
|
63
63
|
IndexDBGateway,
|
64
64
|
IndexDBTestStore
|
65
65
|
};
|
66
|
-
//# sourceMappingURL=gateway-
|
66
|
+
//# sourceMappingURL=gateway-C62S56GY.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/gateways/indexdb/gateway.ts","../../src/runtime/gateways/indexdb/gateway-import-static.ts"],"sourcesContent":["import { ResolveOnce, Result, URI } from \"@adviser/cement\";\nimport { Gateway, GetResult, TestGateway, VoidResult } from \"../../../blockstore/gateway.js\";\nimport { SuperThis } from \"../../../types.js\";\nimport { gatewayImport } from \"./gateway-import-static.js\";\n\nconst loadExternal = new ResolveOnce<Gateway>();\nexport class IndexDBGateway implements Gateway {\n readonly sthis: SuperThis;\n\n constructor(sthis: SuperThis) {\n this.sthis = sthis;\n }\n private getGateway(): Promise<Gateway> {\n return loadExternal.once(() => {\n return gatewayImport().then(({ IndexDBGatewayImpl }) => new IndexDBGatewayImpl(this.sthis));\n });\n }\n buildUrl(baseUrl: URI, key: string): Promise<Result<URI>> {\n return this.getGateway().then((gw) => gw.buildUrl(baseUrl, key));\n }\n start(baseUrl: URI): Promise<Result<URI>> {\n return this.getGateway().then((gw) => gw.start(baseUrl));\n }\n close(baseUrl: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.close(baseUrl));\n }\n destroy(baseUrl: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.destroy(baseUrl));\n }\n put(url: URI, body: Uint8Array): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.put(url, body));\n }\n get(url: URI): Promise<GetResult> {\n return this.getGateway().then((gw) => gw.get(url));\n }\n delete(url: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.delete(url));\n }\n // subscribe?(url: URI, callback: (meta: Uint8Array) => void): Promise<UnsubscribeResult> {\n // // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n // return this.getGateway().then(gw => gw.subscribe!(url, callback));\n // }\n}\n\nexport class IndexDBTestStore implements TestGateway {\n readonly sthis: SuperThis;\n constructor(sthis: SuperThis) {\n this.sthis = sthis;\n }\n readonly loadExternal = new ResolveOnce<TestGateway>();\n private getGateway(): Promise<TestGateway> {\n return this.loadExternal.once(() => {\n return gatewayImport().then(({ IndexDBTestStore }) => new IndexDBTestStore(this.sthis));\n });\n }\n\n get(url: URI, key: string) {\n return this.getGateway().then((gw) => gw.get(url, key));\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function gatewayImport(): Promise<any> {\n return import(\"
|
1
|
+
{"version":3,"sources":["../../src/runtime/gateways/indexdb/gateway.ts","../../src/runtime/gateways/indexdb/gateway-import-static.ts"],"sourcesContent":["import { ResolveOnce, Result, URI } from \"@adviser/cement\";\nimport { Gateway, GetResult, TestGateway, VoidResult } from \"../../../blockstore/gateway.js\";\nimport { SuperThis } from \"../../../types.js\";\nimport { gatewayImport } from \"./gateway-import-static.js\";\n\nconst loadExternal = new ResolveOnce<Gateway>();\nexport class IndexDBGateway implements Gateway {\n readonly sthis: SuperThis;\n\n constructor(sthis: SuperThis) {\n this.sthis = sthis;\n }\n private getGateway(): Promise<Gateway> {\n return loadExternal.once(() => {\n return gatewayImport().then(({ IndexDBGatewayImpl }) => new IndexDBGatewayImpl(this.sthis));\n });\n }\n buildUrl(baseUrl: URI, key: string): Promise<Result<URI>> {\n return this.getGateway().then((gw) => gw.buildUrl(baseUrl, key));\n }\n start(baseUrl: URI): Promise<Result<URI>> {\n return this.getGateway().then((gw) => gw.start(baseUrl));\n }\n close(baseUrl: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.close(baseUrl));\n }\n destroy(baseUrl: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.destroy(baseUrl));\n }\n put(url: URI, body: Uint8Array): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.put(url, body));\n }\n get(url: URI): Promise<GetResult> {\n return this.getGateway().then((gw) => gw.get(url));\n }\n delete(url: URI): Promise<VoidResult> {\n return this.getGateway().then((gw) => gw.delete(url));\n }\n // subscribe?(url: URI, callback: (meta: Uint8Array) => void): Promise<UnsubscribeResult> {\n // // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n // return this.getGateway().then(gw => gw.subscribe!(url, callback));\n // }\n}\n\nexport class IndexDBTestStore implements TestGateway {\n readonly sthis: SuperThis;\n constructor(sthis: SuperThis) {\n this.sthis = sthis;\n }\n readonly loadExternal = new ResolveOnce<TestGateway>();\n private getGateway(): Promise<TestGateway> {\n return this.loadExternal.once(() => {\n return gatewayImport().then(({ IndexDBTestStore }) => new IndexDBTestStore(this.sthis));\n });\n }\n\n get(url: URI, key: string) {\n return this.getGateway().then((gw) => gw.get(url, key));\n }\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function gatewayImport(): Promise<any> {\n return import(\"@fireproof/core/web\");\n}\n"],"mappings":";;;AAAA,SAAS,mBAAgC;;;ACClC,SAAS,gBAA8B;AAC5C,SAAO,OAAO,qBAAqB;AACrC;;;ADEA,IAAM,eAAe,IAAI,YAAqB;AACvC,IAAM,iBAAN,MAAwC;AAAA,EAG7C,YAAY,OAAkB;AAC5B,SAAK,QAAQ;AAAA,EACf;AAAA,EACQ,aAA+B;AACrC,WAAO,aAAa,KAAK,MAAM;AAC7B,aAAO,cAAc,EAAE,KAAK,CAAC,EAAE,mBAAmB,MAAM,IAAI,mBAAmB,KAAK,KAAK,CAAC;AAAA,IAC5F,CAAC;AAAA,EACH;AAAA,EACA,SAAS,SAAc,KAAmC;AACxD,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,SAAS,SAAS,GAAG,CAAC;AAAA,EACjE;AAAA,EACA,MAAM,SAAoC;AACxC,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC;AAAA,EACzD;AAAA,EACA,MAAM,SAAmC;AACvC,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,MAAM,OAAO,CAAC;AAAA,EACzD;AAAA,EACA,QAAQ,SAAmC;AACzC,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,QAAQ,OAAO,CAAC;AAAA,EAC3D;AAAA,EACA,IAAI,KAAU,MAAuC;AACnD,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC;AAAA,EACzD;AAAA,EACA,IAAI,KAA8B;AAChC,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC;AAAA,EACnD;AAAA,EACA,OAAO,KAA+B;AACpC,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,CAAC;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA;AAKF;AAEO,IAAM,mBAAN,MAA8C;AAAA,EAEnD,YAAY,OAAkB;AAG9B,SAAS,eAAe,IAAI,YAAyB;AAFnD,SAAK,QAAQ;AAAA,EACf;AAAA,EAEQ,aAAmC;AACzC,WAAO,KAAK,aAAa,KAAK,MAAM;AAClC,aAAO,cAAc,EAAE,KAAK,CAAC,EAAE,kBAAAA,kBAAiB,MAAM,IAAIA,kBAAiB,KAAK,KAAK,CAAC;AAAA,IACxF,CAAC;AAAA,EACH;AAAA,EAEA,IAAI,KAAU,KAAa;AACzB,WAAO,KAAK,WAAW,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,KAAK,GAAG,CAAC;AAAA,EACxD;AACF;","names":["IndexDBTestStore"]}
|
@@ -5,13 +5,13 @@ import {
|
|
5
5
|
getFileName,
|
6
6
|
getFileSystem,
|
7
7
|
getPath
|
8
|
-
} from "./chunk-
|
8
|
+
} from "./chunk-F4FC6B2T.js";
|
9
9
|
import {
|
10
10
|
NotFoundError,
|
11
11
|
ensureLogger,
|
12
12
|
exceptionWrapper,
|
13
13
|
isNotFoundError
|
14
|
-
} from "./chunk-
|
14
|
+
} from "./chunk-RXC4JGJT.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-
|
145
|
+
//# sourceMappingURL=gateway-VVS4QWDA.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/gateways/file/gateway.ts"],"sourcesContent":["import { FILESTORE_VERSION } from \"./version.js\";\nimport { exception2Result, KeyedResolvOnce, Logger, Result, URI } from \"@adviser/cement\";\nimport { ensureLogger, exceptionWrapper, isNotFoundError, NotFoundError } from \"../../../utils.js\";\nimport { Gateway, GetResult, TestGateway } from \"../../../blockstore/gateway.js\";\nimport { getFileName, getPath } from \"./utils.js\";\nimport { getFileSystem } from \"./get-file-system-static.js\";\nimport { SuperThis, SysFileSystem } from \"../../../types.js\";\n\nconst versionFiles = new KeyedResolvOnce<string>();\n\nexport class FileGateway implements Gateway {\n // abstract readonly storeType: StoreType;\n readonly logger: Logger;\n readonly sthis: SuperThis;\n\n _fs?: SysFileSystem;\n\n get fs(): SysFileSystem {\n if (!this._fs) throw this.logger.Error().Msg(\"fs not initialized\").AsError();\n return this._fs;\n }\n\n constructor(sthis: SuperThis) {\n this.sthis = sthis;\n this.logger = sthis.logger;\n }\n\n async getVersionFromFile(path: string, logger: Logger): Promise<string> {\n return versionFiles.get(path).once(async () => {\n await this.fs.mkdir(path, { recursive: true });\n const vFile = this.sthis.pathOps.join(path, \"version\");\n const vFileStat = await this.fs.stat(vFile).catch(() => undefined);\n if (!vFileStat) {\n await this.fs.writefile(this.sthis.pathOps.join(path, \"version\"), FILESTORE_VERSION);\n return FILESTORE_VERSION;\n } else if (!vFileStat.isFile()) {\n throw logger.Error().Str(\"file\", vFile).Msg(`version file is a directory`).AsError();\n }\n const v = await this.fs.readfile(vFile);\n const vStr = this.sthis.txt.decode(v);\n if (vStr !== FILESTORE_VERSION) {\n logger.Warn().Str(\"file\", vFile).Str(\"from\", vStr).Str(\"expected\", FILESTORE_VERSION).Msg(`version mismatch`);\n }\n return vStr;\n });\n }\n\n start(baseURL: URI): Promise<Result<URI>> {\n return exception2Result(async () => {\n this._fs = await getFileSystem(baseURL);\n await this.fs.start();\n const url = baseURL.build();\n url.defParam(\"version\", FILESTORE_VERSION);\n // url.defParam(\"store\", this.storeType);\n const dbUrl = await this.buildUrl(url.URI(), \"dummy\");\n const dbdirFile = this.getFilePath(dbUrl.Ok());\n await this.fs.mkdir(this.sthis.pathOps.dirname(dbdirFile), { recursive: true });\n const dbroot = this.sthis.pathOps.dirname(dbdirFile);\n this.logger.Debug().Url(url.URI()).Str(\"dbroot\", dbroot).Msg(\"start\");\n url.setParam(\"version\", await this.getVersionFromFile(dbroot, this.logger));\n return url.URI();\n });\n }\n\n async buildUrl(baseUrl: URI, key: string): Promise<Result<URI>> {\n return Result.Ok(baseUrl.build().setParam(\"key\", key).URI());\n }\n\n async close(): Promise<Result<void>> {\n return Result.Ok(undefined);\n }\n // abstract buildUrl(baseUrl: URL, key: string): Promise<Result<URL>>;\n\n getFilePath(url: URI): string {\n const key = url.getParam(\"key\");\n if (!key) throw this.logger.Error().Url(url).Msg(`key not found`).AsError();\n return this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));\n }\n\n async put(url: URI, body: Uint8Array): Promise<Result<void>> {\n return exception2Result(async () => {\n const file = await this.getFilePath(url);\n this.logger.Debug().Str(\"url\", url.toString()).Str(\"file\", file).Msg(\"put\");\n await this.fs.writefile(file, body);\n });\n }\n\n async get(url: URI): Promise<GetResult> {\n return exceptionWrapper(async () => {\n const file = this.getFilePath(url);\n try {\n const res = await this.fs.readfile(file);\n this.logger.Debug().Url(url.asURL()).Str(\"file\", file).Msg(\"get\");\n return Result.Ok(new Uint8Array(res));\n } catch (e: unknown) {\n // this.logger.Error().Err(e).Str(\"file\", file).Msg(\"get\");\n if (isNotFoundError(e)) {\n return Result.Err(new NotFoundError(`file not found: ${file}`));\n }\n return Result.Err(e as Error);\n }\n });\n }\n\n async delete(url: URI): Promise<Result<void>> {\n return exception2Result(async () => {\n await this.fs.unlink(this.getFilePath(url));\n });\n }\n\n async destroy(baseURL: URI): Promise<Result<void>> {\n const url = await this.buildUrl(baseURL, \"x\");\n if (url.isErr()) return url;\n const filepath = this.sthis.pathOps.dirname(this.getFilePath(url.Ok()));\n let files: string[] = [];\n try {\n files = await this.fs.readdir(filepath);\n } catch (e: unknown) {\n if (!isNotFoundError(e)) {\n throw this.logger.Error().Err(e).Str(\"dir\", filepath).Msg(\"destroy:readdir\").AsError();\n }\n }\n for (const file of files) {\n const pathed = this.sthis.pathOps.join(filepath, file);\n try {\n await this.fs.unlink(pathed);\n } catch (e: unknown) {\n if (!isNotFoundError(e)) {\n throw this.logger.Error().Err(e).Str(\"file\", pathed).Msg(\"destroy:unlink\").AsError();\n }\n }\n }\n return Result.Ok(undefined);\n }\n}\n\nexport class FileTestStore implements TestGateway {\n readonly logger: Logger;\n readonly sthis: SuperThis;\n constructor(sthis: SuperThis) {\n this.logger = ensureLogger(sthis, \"FileTestStore\");\n this.sthis = sthis;\n }\n\n async get(iurl: URI, key: string) {\n const url = iurl.build().setParam(\"key\", key).URI();\n const dbFile = this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));\n this.logger.Debug().Url(url).Str(\"dbFile\", dbFile).Msg(\"get\");\n const buffer = await (await getFileSystem(url)).readfile(dbFile);\n this.logger.Debug().Url(url).Str(\"dbFile\", dbFile).Len(buffer).Msg(\"got\");\n return buffer;\n }\n}\n"],"mappings":"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","names":[]}
|
package/index.cjs
CHANGED
@@ -48,12 +48,19 @@ function presetEnv() {
|
|
48
48
|
]);
|
49
49
|
return penv;
|
50
50
|
}
|
51
|
+
function onSuperThis(fn) {
|
52
|
+
const key = `onSuperThis-${Math.random().toString(36).slice(2)}`;
|
53
|
+
_onSuperThis.set(key, fn);
|
54
|
+
return () => {
|
55
|
+
_onSuperThis.delete(key);
|
56
|
+
};
|
57
|
+
}
|
51
58
|
function ensureSuperThis(osthis) {
|
52
59
|
const env = (0, import_cement.envFactory)({
|
53
60
|
symbol: osthis?.env?.symbol || "FP_ENV",
|
54
61
|
presetEnv: osthis?.env?.presetEnv || presetEnv()
|
55
62
|
});
|
56
|
-
|
63
|
+
const ret = new SuperThisImpl({
|
57
64
|
logger: osthis?.logger || globalLogger(),
|
58
65
|
env,
|
59
66
|
crypto: osthis?.crypto || (0, import_cement.toCryptoRuntime)(),
|
@@ -61,6 +68,8 @@ function ensureSuperThis(osthis) {
|
|
61
68
|
pathOps,
|
62
69
|
txt: osthis?.txt || txtOps
|
63
70
|
});
|
71
|
+
_onSuperThis.forEach((fn) => fn(ret));
|
72
|
+
return ret;
|
64
73
|
}
|
65
74
|
function ensureSuperLog(sthis, componentName, ctx) {
|
66
75
|
return sthis.clone({
|
@@ -224,7 +233,7 @@ function UInt8ArrayEqual(a, b) {
|
|
224
233
|
}
|
225
234
|
return true;
|
226
235
|
}
|
227
|
-
var import_cement, import_base58, _globalLogger, registerFP_DEBUG, SuperThisImpl, pathOpsImpl, pathOps, txtOps, NotFoundError;
|
236
|
+
var import_cement, import_base58, _globalLogger, registerFP_DEBUG, SuperThisImpl, pathOpsImpl, pathOps, txtOps, _onSuperThis, NotFoundError;
|
228
237
|
var init_utils = __esm({
|
229
238
|
"src/utils.ts"() {
|
230
239
|
"use strict";
|
@@ -290,6 +299,7 @@ var init_utils = __esm({
|
|
290
299
|
// eslint-disable-next-line no-restricted-globals
|
291
300
|
decode: (input) => new TextDecoder().decode(input)
|
292
301
|
};
|
302
|
+
_onSuperThis = /* @__PURE__ */ new Map();
|
293
303
|
NotFoundError = class extends Error {
|
294
304
|
constructor() {
|
295
305
|
super(...arguments);
|
@@ -299,18 +309,14 @@ var init_utils = __esm({
|
|
299
309
|
}
|
300
310
|
});
|
301
311
|
|
302
|
-
// src/runtime/gateways/file/get-file-system-
|
312
|
+
// src/runtime/gateways/file/get-file-system-static.ts
|
303
313
|
async function getFileSystem(url) {
|
304
314
|
const name = url.getParam("fs", "node");
|
305
315
|
let fs;
|
306
316
|
switch (name) {
|
307
317
|
case "mem":
|
308
318
|
fs = await externalLoaders.get(name).once(async () => {
|
309
|
-
const
|
310
|
-
const { MemFileSystem } = await import(
|
311
|
-
/* @vite-ignore */
|
312
|
-
memjs
|
313
|
-
);
|
319
|
+
const { MemFileSystem } = await import("@fireproof/core/mem");
|
314
320
|
return new MemFileSystem();
|
315
321
|
});
|
316
322
|
break;
|
@@ -321,19 +327,15 @@ async function getFileSystem(url) {
|
|
321
327
|
// }
|
322
328
|
default:
|
323
329
|
fs = await externalLoaders.get(name).once(async () => {
|
324
|
-
const
|
325
|
-
const { NodeFileSystem } = await import(
|
326
|
-
/* @vite-ignore */
|
327
|
-
nodejs
|
328
|
-
);
|
330
|
+
const { NodeFileSystem } = await import("@fireproof/core/node");
|
329
331
|
return new NodeFileSystem();
|
330
332
|
});
|
331
333
|
}
|
332
334
|
return fs.start();
|
333
335
|
}
|
334
336
|
var import_cement4, externalLoaders;
|
335
|
-
var
|
336
|
-
"src/runtime/gateways/file/get-file-system-
|
337
|
+
var init_get_file_system_static = __esm({
|
338
|
+
"src/runtime/gateways/file/get-file-system-static.ts"() {
|
337
339
|
"use strict";
|
338
340
|
import_cement4 = require("@adviser/cement");
|
339
341
|
externalLoaders = new import_cement4.KeyedResolvOnce();
|
@@ -375,7 +377,7 @@ var init_utils2 = __esm({
|
|
375
377
|
"src/runtime/gateways/file/utils.ts"() {
|
376
378
|
"use strict";
|
377
379
|
init_utils();
|
378
|
-
|
380
|
+
init_get_file_system_static();
|
379
381
|
}
|
380
382
|
});
|
381
383
|
|
@@ -513,6 +515,7 @@ var init_gateway = __esm({
|
|
513
515
|
import_cement11 = require("@adviser/cement");
|
514
516
|
init_utils();
|
515
517
|
init_utils2();
|
518
|
+
init_get_file_system_static();
|
516
519
|
versionFiles = new import_cement11.KeyedResolvOnce();
|
517
520
|
FileGateway = class {
|
518
521
|
get fs() {
|
@@ -640,7 +643,7 @@ var init_gateway = __esm({
|
|
640
643
|
|
641
644
|
// src/runtime/gateways/indexdb/gateway-import-static.ts
|
642
645
|
function gatewayImport() {
|
643
|
-
return import("
|
646
|
+
return import("@fireproof/core/web");
|
644
647
|
}
|
645
648
|
var init_gateway_import_static = __esm({
|
646
649
|
"src/runtime/gateways/indexdb/gateway-import-static.ts"() {
|
@@ -714,8 +717,8 @@ var init_gateway2 = __esm({
|
|
714
717
|
});
|
715
718
|
|
716
719
|
// src/index.ts
|
717
|
-
var
|
718
|
-
__export(
|
720
|
+
var index_exports = {};
|
721
|
+
__export(index_exports, {
|
719
722
|
CRDT: () => CRDT,
|
720
723
|
Database: () => Database,
|
721
724
|
Index: () => Index,
|
@@ -738,11 +741,12 @@ __export(src_exports, {
|
|
738
741
|
index: () => index,
|
739
742
|
isFalsy: () => isFalsy,
|
740
743
|
isNotFoundError: () => isNotFoundError,
|
744
|
+
onSuperThis: () => onSuperThis,
|
741
745
|
rt: () => runtime_exports,
|
742
746
|
runtime: () => runtime_exports,
|
743
747
|
throwFalsy: () => throwFalsy
|
744
748
|
});
|
745
|
-
module.exports = __toCommonJS(
|
749
|
+
module.exports = __toCommonJS(index_exports);
|
746
750
|
|
747
751
|
// src/database.ts
|
748
752
|
var import_cement16 = require("@adviser/cement");
|
@@ -3994,11 +3998,17 @@ var Database = class {
|
|
3994
3998
|
static {
|
3995
3999
|
this.databases = /* @__PURE__ */ new Map();
|
3996
4000
|
}
|
4001
|
+
/**
|
4002
|
+
* Close the database and release resources
|
4003
|
+
*/
|
3997
4004
|
async close() {
|
3998
4005
|
await this.ready();
|
3999
4006
|
await this._crdt.close();
|
4000
4007
|
await this.blockstore.close();
|
4001
4008
|
}
|
4009
|
+
/**
|
4010
|
+
* Destroy the database and release all resources
|
4011
|
+
*/
|
4002
4012
|
async destroy() {
|
4003
4013
|
await this.ready();
|
4004
4014
|
await this._crdt.destroy();
|
@@ -4011,6 +4021,12 @@ var Database = class {
|
|
4011
4021
|
await this.blockstore.ready();
|
4012
4022
|
});
|
4013
4023
|
}
|
4024
|
+
/**
|
4025
|
+
* Get a document from the database
|
4026
|
+
* @param id - the document id
|
4027
|
+
* @returns the document with the _id
|
4028
|
+
* @throws NotFoundError if the document is not found
|
4029
|
+
*/
|
4014
4030
|
async get(id) {
|
4015
4031
|
if (!id) throw this.logger.Error().Str("db", this.name).Msg(`Doc id is required`).AsError();
|
4016
4032
|
await this.ready();
|
@@ -4022,6 +4038,11 @@ var Database = class {
|
|
4022
4038
|
const { doc } = got;
|
4023
4039
|
return { ...doc, _id: id };
|
4024
4040
|
}
|
4041
|
+
/**
|
4042
|
+
* Put a document from the database
|
4043
|
+
* @param doc - the document to put
|
4044
|
+
* @returns add DocResponse with the id and clock
|
4045
|
+
*/
|
4025
4046
|
async put(doc) {
|
4026
4047
|
await this.ready();
|
4027
4048
|
this.logger.Debug().Str("id", doc._id).Msg("put");
|
@@ -4036,6 +4057,11 @@ var Database = class {
|
|
4036
4057
|
});
|
4037
4058
|
return { id: docId, clock: result?.head, name: this.name };
|
4038
4059
|
}
|
4060
|
+
/**
|
4061
|
+
* delete a document from the database
|
4062
|
+
* @param id Document id
|
4063
|
+
* @returns DocResponse with the id and clock
|
4064
|
+
*/
|
4039
4065
|
async del(id) {
|
4040
4066
|
await this.ready();
|
4041
4067
|
this.logger.Debug().Str("id", id).Msg("del");
|
@@ -4193,6 +4219,6 @@ init_utils();
|
|
4193
4219
|
|
4194
4220
|
// src/version.ts
|
4195
4221
|
var PACKAGE_VERSION = Object.keys({
|
4196
|
-
"0.19.
|
4222
|
+
"0.19.120": "xxxx"
|
4197
4223
|
})[0];
|
4198
4224
|
//# sourceMappingURL=index.cjs.map
|