@fireproof/core 0.19.121-dev → 0.20.0-dev-preview-05
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/README.md +13 -12
- package/deno/index.d.ts +7 -0
- package/deno/index.js +66 -0
- package/deno/index.js.map +1 -0
- package/deno/metafile-esm.json +1 -0
- package/deno.json +3 -4
- package/index.cjs +1797 -1431
- package/index.cjs.map +1 -1
- package/index.d.cts +760 -381
- package/index.d.ts +760 -381
- package/index.js +1976 -913
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/{node-filesystem.cjs → index.cjs} +17 -6
- package/node/index.cjs.map +1 -0
- package/node/index.d.cts +7 -0
- package/node/index.d.ts +7 -0
- package/node/{node-filesystem.js → index.js} +25 -5
- package/node/index.js.map +1 -0
- package/node/metafile-cjs.json +1 -1
- package/node/metafile-esm.json +1 -1
- package/package.json +27 -17
- package/react/index.cjs +22 -22
- package/react/index.cjs.map +1 -1
- package/react/index.d.cts +7 -7
- package/react/index.d.ts +7 -7
- package/react/index.js +22 -22
- package/react/index.js.map +1 -1
- package/react/metafile-cjs.json +1 -1
- package/react/metafile-esm.json +1 -1
- package/tests/blockstore/fp-envelope.test.ts-off +65 -0
- package/tests/blockstore/interceptor-gateway.test.ts +122 -0
- package/tests/blockstore/keyed-crypto-indexdb-file.test.ts +130 -0
- package/tests/blockstore/keyed-crypto.test.ts +75 -118
- package/tests/blockstore/loader.test.ts +18 -9
- package/tests/blockstore/store.test.ts +40 -31
- package/tests/blockstore/transaction.test.ts +14 -13
- package/tests/fireproof/all-gateway.test.ts +286 -216
- package/tests/fireproof/cars/bafkreidxwt2nhvbl4fnqfw3ctlt6zbrir4kqwmjo5im6rf4q5si27kgo2i.ts +324 -316
- package/tests/fireproof/crdt.test.ts +78 -19
- package/tests/fireproof/fireproof.test.ts +111 -92
- package/tests/fireproof/hello.test.ts +21 -17
- package/tests/fireproof/indexer.test.ts +74 -50
- package/tests/fireproof/{database.test.ts → ledger.test.ts} +241 -45
- package/tests/fireproof/multiple-ledger.test.ts +2 -2
- package/tests/fireproof/utils.test.ts +47 -6
- package/tests/gateway/file/loader-config.test.ts +307 -0
- package/tests/gateway/fp-envelope-serialize.test.ts +256 -0
- package/tests/gateway/indexdb/loader-config.test.ts +79 -0
- package/tests/helpers.ts +44 -17
- package/tests/react/useFireproof.test.tsx +2 -2
- package/tests/www/gallery.html +2 -2
- package/tests/www/todo-aws.html +1 -1
- package/tests/www/todo-ipfs.html +1 -1
- package/tests/www/todo-local.html +1 -1
- package/tests/www/todo.html +25 -4
- package/web/index.cjs +218 -0
- package/web/index.cjs.map +1 -0
- package/web/index.d.cts +30 -0
- package/web/index.d.ts +30 -0
- package/web/index.js +195 -0
- package/web/index.js.map +1 -0
- package/web/metafile-cjs.json +1 -1
- package/web/metafile-esm.json +1 -1
- package/chunk-7EWIAXTM.js +0 -7
- package/chunk-7EWIAXTM.js.map +0 -1
- package/chunk-F4FC6B2T.js +0 -63
- package/chunk-F4FC6B2T.js.map +0 -1
- package/chunk-PZ5AY32C.js +0 -10
- package/chunk-PZ5AY32C.js.map +0 -1
- package/chunk-RXC4JGJT.js +0 -301
- package/chunk-RXC4JGJT.js.map +0 -1
- package/gateway-C62S56GY.js +0 -66
- package/gateway-C62S56GY.js.map +0 -1
- package/gateway-VVS4QWDA.js +0 -145
- package/gateway-VVS4QWDA.js.map +0 -1
- package/key-bag-file-PWZ3QE7B.js +0 -55
- package/key-bag-file-PWZ3QE7B.js.map +0 -1
- package/key-bag-indexdb-SYG3YD4D.js +0 -51
- package/key-bag-indexdb-SYG3YD4D.js.map +0 -1
- package/node/chunk-4A4RAVNS.js +0 -17
- package/node/chunk-4A4RAVNS.js.map +0 -1
- package/node/mem-filesystem.cjs +0 -72
- package/node/mem-filesystem.cjs.map +0 -1
- package/node/mem-filesystem.d.cts +0 -25
- package/node/mem-filesystem.d.ts +0 -25
- package/node/mem-filesystem.js +0 -40
- package/node/mem-filesystem.js.map +0 -1
- package/node/node-filesystem.cjs.map +0 -1
- package/node/node-filesystem.d.cts +0 -35
- package/node/node-filesystem.d.ts +0 -35
- package/node/node-filesystem.js.map +0 -1
- package/tests/fireproof/config.test.ts +0 -172
- package/utils-ZVVGAXFE.js +0 -13
- package/utils-ZVVGAXFE.js.map +0 -1
- package/web/gateway-impl.cjs +0 -183
- package/web/gateway-impl.cjs.map +0 -1
- package/web/gateway-impl.d.cts +0 -31
- package/web/gateway-impl.d.ts +0 -31
- package/web/gateway-impl.js +0 -162
- package/web/gateway-impl.js.map +0 -1
- /package/tests/blockstore/{fragment-gateway.test.ts → fragment-gateway.test.ts-off} +0 -0
package/chunk-RXC4JGJT.js.map
DELETED
@@ -1 +0,0 @@
|
|
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/gateway-C62S56GY.js
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
import "./chunk-PZ5AY32C.js";
|
2
|
-
|
3
|
-
// src/runtime/gateways/indexdb/gateway.ts
|
4
|
-
import { ResolveOnce } from "@adviser/cement";
|
5
|
-
|
6
|
-
// src/runtime/gateways/indexdb/gateway-import-static.ts
|
7
|
-
function gatewayImport() {
|
8
|
-
return import("@fireproof/core/web");
|
9
|
-
}
|
10
|
-
|
11
|
-
// src/runtime/gateways/indexdb/gateway.ts
|
12
|
-
var loadExternal = new ResolveOnce();
|
13
|
-
var IndexDBGateway = class {
|
14
|
-
constructor(sthis) {
|
15
|
-
this.sthis = sthis;
|
16
|
-
}
|
17
|
-
getGateway() {
|
18
|
-
return loadExternal.once(() => {
|
19
|
-
return gatewayImport().then(({ IndexDBGatewayImpl }) => new IndexDBGatewayImpl(this.sthis));
|
20
|
-
});
|
21
|
-
}
|
22
|
-
buildUrl(baseUrl, key) {
|
23
|
-
return this.getGateway().then((gw) => gw.buildUrl(baseUrl, key));
|
24
|
-
}
|
25
|
-
start(baseUrl) {
|
26
|
-
return this.getGateway().then((gw) => gw.start(baseUrl));
|
27
|
-
}
|
28
|
-
close(baseUrl) {
|
29
|
-
return this.getGateway().then((gw) => gw.close(baseUrl));
|
30
|
-
}
|
31
|
-
destroy(baseUrl) {
|
32
|
-
return this.getGateway().then((gw) => gw.destroy(baseUrl));
|
33
|
-
}
|
34
|
-
put(url, body) {
|
35
|
-
return this.getGateway().then((gw) => gw.put(url, body));
|
36
|
-
}
|
37
|
-
get(url) {
|
38
|
-
return this.getGateway().then((gw) => gw.get(url));
|
39
|
-
}
|
40
|
-
delete(url) {
|
41
|
-
return this.getGateway().then((gw) => gw.delete(url));
|
42
|
-
}
|
43
|
-
// subscribe?(url: URI, callback: (meta: Uint8Array) => void): Promise<UnsubscribeResult> {
|
44
|
-
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
45
|
-
// return this.getGateway().then(gw => gw.subscribe!(url, callback));
|
46
|
-
// }
|
47
|
-
};
|
48
|
-
var IndexDBTestStore = class {
|
49
|
-
constructor(sthis) {
|
50
|
-
this.loadExternal = new ResolveOnce();
|
51
|
-
this.sthis = sthis;
|
52
|
-
}
|
53
|
-
getGateway() {
|
54
|
-
return this.loadExternal.once(() => {
|
55
|
-
return gatewayImport().then(({ IndexDBTestStore: IndexDBTestStore2 }) => new IndexDBTestStore2(this.sthis));
|
56
|
-
});
|
57
|
-
}
|
58
|
-
get(url, key) {
|
59
|
-
return this.getGateway().then((gw) => gw.get(url, key));
|
60
|
-
}
|
61
|
-
};
|
62
|
-
export {
|
63
|
-
IndexDBGateway,
|
64
|
-
IndexDBTestStore
|
65
|
-
};
|
66
|
-
//# sourceMappingURL=gateway-C62S56GY.js.map
|
package/gateway-C62S56GY.js.map
DELETED
@@ -1 +0,0 @@
|
|
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"]}
|
package/gateway-VVS4QWDA.js
DELETED
@@ -1,145 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
FILESTORE_VERSION
|
3
|
-
} from "./chunk-7EWIAXTM.js";
|
4
|
-
import {
|
5
|
-
getFileName,
|
6
|
-
getFileSystem,
|
7
|
-
getPath
|
8
|
-
} from "./chunk-F4FC6B2T.js";
|
9
|
-
import {
|
10
|
-
NotFoundError,
|
11
|
-
ensureLogger,
|
12
|
-
exceptionWrapper,
|
13
|
-
isNotFoundError
|
14
|
-
} from "./chunk-RXC4JGJT.js";
|
15
|
-
import "./chunk-PZ5AY32C.js";
|
16
|
-
|
17
|
-
// src/runtime/gateways/file/gateway.ts
|
18
|
-
import { exception2Result, KeyedResolvOnce, Result } from "@adviser/cement";
|
19
|
-
var versionFiles = new KeyedResolvOnce();
|
20
|
-
var FileGateway = class {
|
21
|
-
get fs() {
|
22
|
-
if (!this._fs) throw this.logger.Error().Msg("fs not initialized").AsError();
|
23
|
-
return this._fs;
|
24
|
-
}
|
25
|
-
constructor(sthis) {
|
26
|
-
this.sthis = sthis;
|
27
|
-
this.logger = sthis.logger;
|
28
|
-
}
|
29
|
-
async getVersionFromFile(path, logger) {
|
30
|
-
return versionFiles.get(path).once(async () => {
|
31
|
-
await this.fs.mkdir(path, { recursive: true });
|
32
|
-
const vFile = this.sthis.pathOps.join(path, "version");
|
33
|
-
const vFileStat = await this.fs.stat(vFile).catch(() => void 0);
|
34
|
-
if (!vFileStat) {
|
35
|
-
await this.fs.writefile(this.sthis.pathOps.join(path, "version"), FILESTORE_VERSION);
|
36
|
-
return FILESTORE_VERSION;
|
37
|
-
} else if (!vFileStat.isFile()) {
|
38
|
-
throw logger.Error().Str("file", vFile).Msg(`version file is a directory`).AsError();
|
39
|
-
}
|
40
|
-
const v = await this.fs.readfile(vFile);
|
41
|
-
const vStr = this.sthis.txt.decode(v);
|
42
|
-
if (vStr !== FILESTORE_VERSION) {
|
43
|
-
logger.Warn().Str("file", vFile).Str("from", vStr).Str("expected", FILESTORE_VERSION).Msg(`version mismatch`);
|
44
|
-
}
|
45
|
-
return vStr;
|
46
|
-
});
|
47
|
-
}
|
48
|
-
start(baseURL) {
|
49
|
-
return exception2Result(async () => {
|
50
|
-
this._fs = await getFileSystem(baseURL);
|
51
|
-
await this.fs.start();
|
52
|
-
const url = baseURL.build();
|
53
|
-
url.defParam("version", FILESTORE_VERSION);
|
54
|
-
const dbUrl = await this.buildUrl(url.URI(), "dummy");
|
55
|
-
const dbdirFile = this.getFilePath(dbUrl.Ok());
|
56
|
-
await this.fs.mkdir(this.sthis.pathOps.dirname(dbdirFile), { recursive: true });
|
57
|
-
const dbroot = this.sthis.pathOps.dirname(dbdirFile);
|
58
|
-
this.logger.Debug().Url(url.URI()).Str("dbroot", dbroot).Msg("start");
|
59
|
-
url.setParam("version", await this.getVersionFromFile(dbroot, this.logger));
|
60
|
-
return url.URI();
|
61
|
-
});
|
62
|
-
}
|
63
|
-
async buildUrl(baseUrl, key) {
|
64
|
-
return Result.Ok(baseUrl.build().setParam("key", key).URI());
|
65
|
-
}
|
66
|
-
async close() {
|
67
|
-
return Result.Ok(void 0);
|
68
|
-
}
|
69
|
-
// abstract buildUrl(baseUrl: URL, key: string): Promise<Result<URL>>;
|
70
|
-
getFilePath(url) {
|
71
|
-
const key = url.getParam("key");
|
72
|
-
if (!key) throw this.logger.Error().Url(url).Msg(`key not found`).AsError();
|
73
|
-
return this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
|
74
|
-
}
|
75
|
-
async put(url, body) {
|
76
|
-
return exception2Result(async () => {
|
77
|
-
const file = await this.getFilePath(url);
|
78
|
-
this.logger.Debug().Str("url", url.toString()).Str("file", file).Msg("put");
|
79
|
-
await this.fs.writefile(file, body);
|
80
|
-
});
|
81
|
-
}
|
82
|
-
async get(url) {
|
83
|
-
return exceptionWrapper(async () => {
|
84
|
-
const file = this.getFilePath(url);
|
85
|
-
try {
|
86
|
-
const res = await this.fs.readfile(file);
|
87
|
-
this.logger.Debug().Url(url.asURL()).Str("file", file).Msg("get");
|
88
|
-
return Result.Ok(new Uint8Array(res));
|
89
|
-
} catch (e) {
|
90
|
-
if (isNotFoundError(e)) {
|
91
|
-
return Result.Err(new NotFoundError(`file not found: ${file}`));
|
92
|
-
}
|
93
|
-
return Result.Err(e);
|
94
|
-
}
|
95
|
-
});
|
96
|
-
}
|
97
|
-
async delete(url) {
|
98
|
-
return exception2Result(async () => {
|
99
|
-
await this.fs.unlink(this.getFilePath(url));
|
100
|
-
});
|
101
|
-
}
|
102
|
-
async destroy(baseURL) {
|
103
|
-
const url = await this.buildUrl(baseURL, "x");
|
104
|
-
if (url.isErr()) return url;
|
105
|
-
const filepath = this.sthis.pathOps.dirname(this.getFilePath(url.Ok()));
|
106
|
-
let files = [];
|
107
|
-
try {
|
108
|
-
files = await this.fs.readdir(filepath);
|
109
|
-
} catch (e) {
|
110
|
-
if (!isNotFoundError(e)) {
|
111
|
-
throw this.logger.Error().Err(e).Str("dir", filepath).Msg("destroy:readdir").AsError();
|
112
|
-
}
|
113
|
-
}
|
114
|
-
for (const file of files) {
|
115
|
-
const pathed = this.sthis.pathOps.join(filepath, file);
|
116
|
-
try {
|
117
|
-
await this.fs.unlink(pathed);
|
118
|
-
} catch (e) {
|
119
|
-
if (!isNotFoundError(e)) {
|
120
|
-
throw this.logger.Error().Err(e).Str("file", pathed).Msg("destroy:unlink").AsError();
|
121
|
-
}
|
122
|
-
}
|
123
|
-
}
|
124
|
-
return Result.Ok(void 0);
|
125
|
-
}
|
126
|
-
};
|
127
|
-
var FileTestStore = class {
|
128
|
-
constructor(sthis) {
|
129
|
-
this.logger = ensureLogger(sthis, "FileTestStore");
|
130
|
-
this.sthis = sthis;
|
131
|
-
}
|
132
|
-
async get(iurl, key) {
|
133
|
-
const url = iurl.build().setParam("key", key).URI();
|
134
|
-
const dbFile = this.sthis.pathOps.join(getPath(url, this.sthis), getFileName(url, this.sthis));
|
135
|
-
this.logger.Debug().Url(url).Str("dbFile", dbFile).Msg("get");
|
136
|
-
const buffer = await (await getFileSystem(url)).readfile(dbFile);
|
137
|
-
this.logger.Debug().Url(url).Str("dbFile", dbFile).Len(buffer).Msg("got");
|
138
|
-
return buffer;
|
139
|
-
}
|
140
|
-
};
|
141
|
-
export {
|
142
|
-
FileGateway,
|
143
|
-
FileTestStore
|
144
|
-
};
|
145
|
-
//# sourceMappingURL=gateway-VVS4QWDA.js.map
|
package/gateway-VVS4QWDA.js.map
DELETED
@@ -1 +0,0 @@
|
|
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/key-bag-file-PWZ3QE7B.js
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
isNotFoundError
|
3
|
-
} from "./chunk-RXC4JGJT.js";
|
4
|
-
import "./chunk-PZ5AY32C.js";
|
5
|
-
|
6
|
-
// src/runtime/key-bag-file.ts
|
7
|
-
var KeyBagProviderFile = class {
|
8
|
-
async _prepare(id) {
|
9
|
-
await this.sthis.start();
|
10
|
-
let sysFS;
|
11
|
-
switch (this.url.protocol) {
|
12
|
-
case "file:": {
|
13
|
-
const { getFileSystem } = await import("./utils-ZVVGAXFE.js");
|
14
|
-
sysFS = await getFileSystem(this.url);
|
15
|
-
break;
|
16
|
-
}
|
17
|
-
default:
|
18
|
-
throw this.logger.Error().Url(this.url).Msg("unsupported protocol").AsError();
|
19
|
-
}
|
20
|
-
const dirName = this.url.pathname;
|
21
|
-
await sysFS.mkdir(dirName, { recursive: true });
|
22
|
-
return {
|
23
|
-
dirName,
|
24
|
-
sysFS,
|
25
|
-
fName: this.sthis.pathOps.join(dirName, `${id.replace(/[^a-zA-Z0-9]/g, "_")}.json`)
|
26
|
-
};
|
27
|
-
}
|
28
|
-
constructor(url, sthis) {
|
29
|
-
this.url = url;
|
30
|
-
this.sthis = sthis;
|
31
|
-
this.logger = sthis.logger;
|
32
|
-
}
|
33
|
-
async get(id) {
|
34
|
-
const ctx = await this._prepare(id);
|
35
|
-
try {
|
36
|
-
const p = await ctx.sysFS.readfile(ctx.fName);
|
37
|
-
const ki = JSON.parse(this.sthis.txt.decode(p));
|
38
|
-
return ki;
|
39
|
-
} catch (e) {
|
40
|
-
if (isNotFoundError(e)) {
|
41
|
-
return void 0;
|
42
|
-
}
|
43
|
-
throw this.logger.Error().Err(e).Str("file", ctx.dirName).Msg("read bag failed").AsError();
|
44
|
-
}
|
45
|
-
}
|
46
|
-
async set(id, item) {
|
47
|
-
const ctx = await this._prepare(id);
|
48
|
-
const p = this.sthis.txt.encode(JSON.stringify(item, null, 2));
|
49
|
-
await ctx.sysFS.writefile(ctx.fName, p);
|
50
|
-
}
|
51
|
-
};
|
52
|
-
export {
|
53
|
-
KeyBagProviderFile
|
54
|
-
};
|
55
|
-
//# sourceMappingURL=key-bag-file-PWZ3QE7B.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/key-bag-file.ts"],"sourcesContent":["import { URI } from \"@adviser/cement\";\nimport { isNotFoundError, Logger } from \"../utils.js\";\nimport { KeyBagProvider, KeyItem } from \"./key-bag.js\";\nimport { SuperThis, SysFileSystem } from \"../types.js\";\n\ninterface KeyBagCtx {\n readonly dirName: string;\n readonly sysFS: SysFileSystem;\n readonly fName: string;\n}\n\nexport class KeyBagProviderFile implements KeyBagProvider {\n async _prepare(id: string): Promise<KeyBagCtx> {\n await this.sthis.start();\n let sysFS: SysFileSystem;\n switch (this.url.protocol) {\n case \"file:\": {\n const { getFileSystem } = await import(\"./gateways/file/utils.js\");\n sysFS = await getFileSystem(this.url);\n break;\n }\n default:\n throw this.logger.Error().Url(this.url).Msg(\"unsupported protocol\").AsError();\n }\n const dirName = this.url.pathname;\n await sysFS.mkdir(dirName, { recursive: true });\n return {\n dirName,\n sysFS,\n fName: this.sthis.pathOps.join(dirName, `${id.replace(/[^a-zA-Z0-9]/g, \"_\")}.json`),\n };\n }\n\n private readonly url: URI;\n readonly logger: Logger;\n readonly sthis: SuperThis;\n constructor(url: URI, sthis: SuperThis) {\n this.url = url;\n this.sthis = sthis;\n this.logger = sthis.logger;\n }\n\n async get(id: string): Promise<KeyItem | undefined> {\n const ctx = await this._prepare(id);\n try {\n const p = await ctx.sysFS.readfile(ctx.fName);\n const ki = JSON.parse(this.sthis.txt.decode(p)) as KeyItem;\n return ki;\n } catch (e) {\n if (isNotFoundError(e)) {\n return undefined;\n }\n throw this.logger.Error().Err(e).Str(\"file\", ctx.dirName).Msg(\"read bag failed\").AsError();\n }\n }\n\n async set(id: string, item: KeyItem): Promise<void> {\n const ctx = await this._prepare(id);\n const p = this.sthis.txt.encode(JSON.stringify(item, null, 2));\n await ctx.sysFS.writefile(ctx.fName, p);\n }\n}\n"],"mappings":";;;;;;AAWO,IAAM,qBAAN,MAAmD;AAAA,EACxD,MAAM,SAAS,IAAgC;AAC7C,UAAM,KAAK,MAAM,MAAM;AACvB,QAAI;AACJ,YAAQ,KAAK,IAAI,UAAU;AAAA,MACzB,KAAK,SAAS;AACZ,cAAM,EAAE,cAAc,IAAI,MAAM,OAAO,qBAA0B;AACjE,gBAAQ,MAAM,cAAc,KAAK,GAAG;AACpC;AAAA,MACF;AAAA,MACA;AACE,cAAM,KAAK,OAAO,MAAM,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,sBAAsB,EAAE,QAAQ;AAAA,IAChF;AACA,UAAM,UAAU,KAAK,IAAI;AACzB,UAAM,MAAM,MAAM,SAAS,EAAE,WAAW,KAAK,CAAC;AAC9C,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,OAAO,KAAK,MAAM,QAAQ,KAAK,SAAS,GAAG,GAAG,QAAQ,iBAAiB,GAAG,CAAC,OAAO;AAAA,IACpF;AAAA,EACF;AAAA,EAKA,YAAY,KAAU,OAAkB;AACtC,SAAK,MAAM;AACX,SAAK,QAAQ;AACb,SAAK,SAAS,MAAM;AAAA,EACtB;AAAA,EAEA,MAAM,IAAI,IAA0C;AAClD,UAAM,MAAM,MAAM,KAAK,SAAS,EAAE;AAClC,QAAI;AACF,YAAM,IAAI,MAAM,IAAI,MAAM,SAAS,IAAI,KAAK;AAC5C,YAAM,KAAK,KAAK,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,CAAC;AAC9C,aAAO;AAAA,IACT,SAAS,GAAG;AACV,UAAI,gBAAgB,CAAC,GAAG;AACtB,eAAO;AAAA,MACT;AACA,YAAM,KAAK,OAAO,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,QAAQ,IAAI,OAAO,EAAE,IAAI,iBAAiB,EAAE,QAAQ;AAAA,IAC3F;AAAA,EACF;AAAA,EAEA,MAAM,IAAI,IAAY,MAA8B;AAClD,UAAM,MAAM,MAAM,KAAK,SAAS,EAAE;AAClC,UAAM,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AAC7D,UAAM,IAAI,MAAM,UAAU,IAAI,OAAO,CAAC;AAAA,EACxC;AACF;","names":[]}
|
@@ -1,51 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
getPath
|
3
|
-
} from "./chunk-F4FC6B2T.js";
|
4
|
-
import "./chunk-RXC4JGJT.js";
|
5
|
-
import "./chunk-PZ5AY32C.js";
|
6
|
-
|
7
|
-
// src/runtime/key-bag-indexdb.ts
|
8
|
-
import { openDB } from "idb";
|
9
|
-
import { ResolveOnce } from "@adviser/cement";
|
10
|
-
var KeyBagProviderIndexDB = class {
|
11
|
-
constructor(url, sthis) {
|
12
|
-
this._db = new ResolveOnce();
|
13
|
-
this.sthis = sthis;
|
14
|
-
this.logger = sthis.logger;
|
15
|
-
this.url = url;
|
16
|
-
this.dbName = getPath(this.url, this.sthis);
|
17
|
-
}
|
18
|
-
async _prepare() {
|
19
|
-
return this._db.once(async () => {
|
20
|
-
return await openDB(this.dbName, 1, {
|
21
|
-
upgrade(db) {
|
22
|
-
["bag"].map((store) => {
|
23
|
-
db.createObjectStore(store, {
|
24
|
-
autoIncrement: false
|
25
|
-
});
|
26
|
-
});
|
27
|
-
}
|
28
|
-
});
|
29
|
-
});
|
30
|
-
}
|
31
|
-
async get(id) {
|
32
|
-
const db = await this._prepare();
|
33
|
-
const tx = db.transaction(["bag"], "readonly");
|
34
|
-
const keyItem = await tx.objectStore("bag").get(id);
|
35
|
-
await tx.done;
|
36
|
-
if (!keyItem) {
|
37
|
-
return void 0;
|
38
|
-
}
|
39
|
-
return keyItem;
|
40
|
-
}
|
41
|
-
async set(id, item) {
|
42
|
-
const db = await this._prepare();
|
43
|
-
const tx = db.transaction(["bag"], "readwrite");
|
44
|
-
await tx.objectStore("bag").put(item, id);
|
45
|
-
await tx.done;
|
46
|
-
}
|
47
|
-
};
|
48
|
-
export {
|
49
|
-
KeyBagProviderIndexDB
|
50
|
-
};
|
51
|
-
//# sourceMappingURL=key-bag-indexdb-SYG3YD4D.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/key-bag-indexdb.ts"],"sourcesContent":["import { IDBPDatabase, openDB } from \"idb\";\nimport { KeyBagProvider, KeyItem } from \"./key-bag.js\";\nimport { getPath } from \"./gateways/file/utils.js\";\nimport { Logger, ResolveOnce, URI } from \"@adviser/cement\";\nimport type { SuperThis } from \"../types.js\";\n\nexport class KeyBagProviderIndexDB implements KeyBagProvider {\n readonly _db: ResolveOnce<IDBPDatabase<unknown>> = new ResolveOnce<IDBPDatabase<unknown>>();\n\n readonly dbName: string;\n readonly url: URI;\n readonly logger: Logger;\n readonly sthis: SuperThis;\n constructor(url: URI, sthis: SuperThis) {\n this.sthis = sthis;\n this.logger = sthis.logger;\n this.url = url;\n this.dbName = getPath(this.url, this.sthis);\n }\n\n async _prepare(): Promise<IDBPDatabase<unknown>> {\n return this._db.once(async () => {\n return await openDB(this.dbName, 1, {\n upgrade(db) {\n // console.log('upgrade:', dbName);\n [\"bag\"].map((store) => {\n db.createObjectStore(store, {\n autoIncrement: false,\n });\n });\n },\n });\n });\n }\n\n async get(id: string): Promise<KeyItem | undefined> {\n const db = await this._prepare();\n const tx = db.transaction([\"bag\"], \"readonly\");\n const keyItem = await tx.objectStore(\"bag\").get(id);\n await tx.done;\n if (!keyItem) {\n return undefined;\n }\n return keyItem;\n }\n\n async set(id: string, item: KeyItem): Promise<void> {\n const db = await this._prepare();\n const tx = db.transaction([\"bag\"], \"readwrite\");\n await tx.objectStore(\"bag\").put(item, id);\n await tx.done;\n }\n}\n"],"mappings":";;;;;;;AAAA,SAAuB,cAAc;AAGrC,SAAiB,mBAAwB;AAGlC,IAAM,wBAAN,MAAsD;AAAA,EAO3D,YAAY,KAAU,OAAkB;AANxC,SAAS,MAA0C,IAAI,YAAmC;AAOxF,SAAK,QAAQ;AACb,SAAK,SAAS,MAAM;AACpB,SAAK,MAAM;AACX,SAAK,SAAS,QAAQ,KAAK,KAAK,KAAK,KAAK;AAAA,EAC5C;AAAA,EAEA,MAAM,WAA2C;AAC/C,WAAO,KAAK,IAAI,KAAK,YAAY;AAC/B,aAAO,MAAM,OAAO,KAAK,QAAQ,GAAG;AAAA,QAClC,QAAQ,IAAI;AAEV,WAAC,KAAK,EAAE,IAAI,CAAC,UAAU;AACrB,eAAG,kBAAkB,OAAO;AAAA,cAC1B,eAAe;AAAA,YACjB,CAAC;AAAA,UACH,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,IAAI,IAA0C;AAClD,UAAM,KAAK,MAAM,KAAK,SAAS;AAC/B,UAAM,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,UAAU;AAC7C,UAAM,UAAU,MAAM,GAAG,YAAY,KAAK,EAAE,IAAI,EAAE;AAClD,UAAM,GAAG;AACT,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,IAAI,IAAY,MAA8B;AAClD,UAAM,KAAK,MAAM,KAAK,SAAS;AAC/B,UAAM,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,WAAW;AAC9C,UAAM,GAAG,YAAY,KAAK,EAAE,IAAI,MAAM,EAAE;AACxC,UAAM,GAAG;AAAA,EACX;AACF;","names":[]}
|
package/node/chunk-4A4RAVNS.js
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
// src/runtime/gateways/file/node/to-array-buffer.ts
|
2
|
-
function toArrayBuffer(buffer) {
|
3
|
-
if (typeof buffer === "string") {
|
4
|
-
buffer = Buffer.from(buffer);
|
5
|
-
}
|
6
|
-
const ab = new ArrayBuffer(buffer.length);
|
7
|
-
const view = new Uint8Array(ab);
|
8
|
-
for (let i = 0; i < buffer.length; ++i) {
|
9
|
-
view[i] = buffer[i];
|
10
|
-
}
|
11
|
-
return view;
|
12
|
-
}
|
13
|
-
|
14
|
-
export {
|
15
|
-
toArrayBuffer
|
16
|
-
};
|
17
|
-
//# sourceMappingURL=chunk-4A4RAVNS.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/gateways/file/node/to-array-buffer.ts"],"sourcesContent":["export function toArrayBuffer(buffer: Buffer | string): Uint8Array {\n if (typeof buffer === \"string\") {\n buffer = Buffer.from(buffer);\n }\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n return view;\n}\n"],"mappings":";AAAO,SAAS,cAAc,QAAqC;AACjE,MAAI,OAAO,WAAW,UAAU;AAC9B,aAAS,OAAO,KAAK,MAAM;AAAA,EAC7B;AACA,QAAM,KAAK,IAAI,YAAY,OAAO,MAAM;AACxC,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACtC,SAAK,CAAC,IAAI,OAAO,CAAC;AAAA,EACpB;AACA,SAAO;AACT;","names":[]}
|
package/node/mem-filesystem.cjs
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __defProp = Object.defineProperty;
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
-
var __export = (target, all) => {
|
7
|
-
for (var name in all)
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
-
};
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
-
for (let key of __getOwnPropNames(from))
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
-
}
|
16
|
-
return to;
|
17
|
-
};
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
-
|
20
|
-
// src/runtime/gateways/file/node/mem-filesystem.ts
|
21
|
-
var mem_filesystem_exports = {};
|
22
|
-
__export(mem_filesystem_exports, {
|
23
|
-
MemFileSystem: () => MemFileSystem
|
24
|
-
});
|
25
|
-
module.exports = __toCommonJS(mem_filesystem_exports);
|
26
|
-
var import_memfs = require("memfs");
|
27
|
-
|
28
|
-
// src/runtime/gateways/file/node/to-array-buffer.ts
|
29
|
-
function toArrayBuffer(buffer) {
|
30
|
-
if (typeof buffer === "string") {
|
31
|
-
buffer = Buffer.from(buffer);
|
32
|
-
}
|
33
|
-
const ab = new ArrayBuffer(buffer.length);
|
34
|
-
const view = new Uint8Array(ab);
|
35
|
-
for (let i = 0; i < buffer.length; ++i) {
|
36
|
-
view[i] = buffer[i];
|
37
|
-
}
|
38
|
-
return view;
|
39
|
-
}
|
40
|
-
|
41
|
-
// src/runtime/gateways/file/node/mem-filesystem.ts
|
42
|
-
var MemFileSystem = class {
|
43
|
-
async start() {
|
44
|
-
return this;
|
45
|
-
}
|
46
|
-
mkdir(path, options) {
|
47
|
-
return import_memfs.fs.promises.mkdir(path, options);
|
48
|
-
}
|
49
|
-
readdir(path, options) {
|
50
|
-
return import_memfs.fs.promises.readdir(path, options);
|
51
|
-
}
|
52
|
-
rm(path, options) {
|
53
|
-
return import_memfs.fs.promises.rm(path, options);
|
54
|
-
}
|
55
|
-
copyFile(source, destination) {
|
56
|
-
return import_memfs.fs.promises.copyFile(source, destination);
|
57
|
-
}
|
58
|
-
async readfile(path, options) {
|
59
|
-
const ret = await import_memfs.fs.promises.readFile(path, options);
|
60
|
-
return toArrayBuffer(ret);
|
61
|
-
}
|
62
|
-
stat(path) {
|
63
|
-
return import_memfs.fs.promises.stat(path);
|
64
|
-
}
|
65
|
-
unlink(path) {
|
66
|
-
return import_memfs.fs.promises.unlink(path);
|
67
|
-
}
|
68
|
-
writefile(path, data) {
|
69
|
-
return import_memfs.fs.promises.writeFile(path, Buffer.from(data));
|
70
|
-
}
|
71
|
-
};
|
72
|
-
//# sourceMappingURL=mem-filesystem.cjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/gateways/file/node/mem-filesystem.ts","../../../src/runtime/gateways/file/node/to-array-buffer.ts"],"sourcesContent":["import type { PathLike, MakeDirectoryOptions, Stats } from \"fs\";\nimport { fs } from \"memfs\";\nimport { IReaddirOptions } from \"memfs/lib/node/types/options.js\";\nimport { toArrayBuffer } from \"./to-array-buffer.js\";\nimport type { SysFileSystem } from \"@fireproof/core\";\n\nexport class MemFileSystem implements SysFileSystem {\n async start(): Promise<SysFileSystem> {\n return this;\n }\n mkdir(path: PathLike, options?: { recursive: boolean }): Promise<string | undefined> {\n return fs.promises.mkdir(path, options);\n }\n readdir(path: PathLike, options?: IReaddirOptions): Promise<string[]> {\n return fs.promises.readdir(path, options) as Promise<string[]>;\n }\n rm(path: PathLike, options?: MakeDirectoryOptions & { recursive: boolean }): Promise<void> {\n return fs.promises.rm(path, options);\n }\n copyFile(source: PathLike, destination: PathLike): Promise<void> {\n return fs.promises.copyFile(source, destination);\n }\n async readfile(path: PathLike, options?: { encoding: BufferEncoding; flag?: string }): Promise<Uint8Array> {\n const ret = await fs.promises.readFile(path, options);\n return toArrayBuffer(ret);\n }\n stat(path: PathLike): Promise<Stats> {\n return fs.promises.stat(path) as Promise<Stats>;\n }\n unlink(path: PathLike): Promise<void> {\n return fs.promises.unlink(path);\n }\n writefile(path: PathLike, data: Uint8Array | string): Promise<void> {\n return fs.promises.writeFile(path, Buffer.from(data));\n }\n}\n","export function toArrayBuffer(buffer: Buffer | string): Uint8Array {\n if (typeof buffer === \"string\") {\n buffer = Buffer.from(buffer);\n }\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n return view;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAmB;;;ACDZ,SAAS,cAAc,QAAqC;AACjE,MAAI,OAAO,WAAW,UAAU;AAC9B,aAAS,OAAO,KAAK,MAAM;AAAA,EAC7B;AACA,QAAM,KAAK,IAAI,YAAY,OAAO,MAAM;AACxC,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACtC,SAAK,CAAC,IAAI,OAAO,CAAC;AAAA,EACpB;AACA,SAAO;AACT;;;ADJO,IAAM,gBAAN,MAA6C;AAAA,EAClD,MAAM,QAAgC;AACpC,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAgB,SAA+D;AACnF,WAAO,gBAAG,SAAS,MAAM,MAAM,OAAO;AAAA,EACxC;AAAA,EACA,QAAQ,MAAgB,SAA8C;AACpE,WAAO,gBAAG,SAAS,QAAQ,MAAM,OAAO;AAAA,EAC1C;AAAA,EACA,GAAG,MAAgB,SAAwE;AACzF,WAAO,gBAAG,SAAS,GAAG,MAAM,OAAO;AAAA,EACrC;AAAA,EACA,SAAS,QAAkB,aAAsC;AAC/D,WAAO,gBAAG,SAAS,SAAS,QAAQ,WAAW;AAAA,EACjD;AAAA,EACA,MAAM,SAAS,MAAgB,SAA4E;AACzG,UAAM,MAAM,MAAM,gBAAG,SAAS,SAAS,MAAM,OAAO;AACpD,WAAO,cAAc,GAAG;AAAA,EAC1B;AAAA,EACA,KAAK,MAAgC;AACnC,WAAO,gBAAG,SAAS,KAAK,IAAI;AAAA,EAC9B;AAAA,EACA,OAAO,MAA+B;AACpC,WAAO,gBAAG,SAAS,OAAO,IAAI;AAAA,EAChC;AAAA,EACA,UAAU,MAAgB,MAA0C;AAClE,WAAO,gBAAG,SAAS,UAAU,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,EACtD;AACF;","names":[]}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { PathLike, MakeDirectoryOptions, Stats } from 'fs';
|
2
|
-
import { IReaddirOptions } from 'memfs/lib/node/types/options.js';
|
3
|
-
import { SysFileSystem } from '@fireproof/core';
|
4
|
-
|
5
|
-
declare class MemFileSystem implements SysFileSystem {
|
6
|
-
start(): Promise<SysFileSystem>;
|
7
|
-
mkdir(path: PathLike, options?: {
|
8
|
-
recursive: boolean;
|
9
|
-
}): Promise<string | undefined>;
|
10
|
-
readdir(path: PathLike, options?: IReaddirOptions): Promise<string[]>;
|
11
|
-
rm(path: PathLike, options?: MakeDirectoryOptions & {
|
12
|
-
recursive: boolean;
|
13
|
-
}): Promise<void>;
|
14
|
-
copyFile(source: PathLike, destination: PathLike): Promise<void>;
|
15
|
-
readfile(path: PathLike, options?: {
|
16
|
-
encoding: BufferEncoding;
|
17
|
-
flag?: string;
|
18
|
-
}): Promise<Uint8Array>;
|
19
|
-
stat(path: PathLike): Promise<Stats>;
|
20
|
-
unlink(path: PathLike): Promise<void>;
|
21
|
-
writefile(path: PathLike, data: Uint8Array | string): Promise<void>;
|
22
|
-
}
|
23
|
-
|
24
|
-
export { MemFileSystem };
|
25
|
-
declare module '@fireproof/core/node'
|
package/node/mem-filesystem.d.ts
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
import { PathLike, MakeDirectoryOptions, Stats } from 'fs';
|
2
|
-
import { IReaddirOptions } from 'memfs/lib/node/types/options.js';
|
3
|
-
import { SysFileSystem } from '@fireproof/core';
|
4
|
-
|
5
|
-
declare class MemFileSystem implements SysFileSystem {
|
6
|
-
start(): Promise<SysFileSystem>;
|
7
|
-
mkdir(path: PathLike, options?: {
|
8
|
-
recursive: boolean;
|
9
|
-
}): Promise<string | undefined>;
|
10
|
-
readdir(path: PathLike, options?: IReaddirOptions): Promise<string[]>;
|
11
|
-
rm(path: PathLike, options?: MakeDirectoryOptions & {
|
12
|
-
recursive: boolean;
|
13
|
-
}): Promise<void>;
|
14
|
-
copyFile(source: PathLike, destination: PathLike): Promise<void>;
|
15
|
-
readfile(path: PathLike, options?: {
|
16
|
-
encoding: BufferEncoding;
|
17
|
-
flag?: string;
|
18
|
-
}): Promise<Uint8Array>;
|
19
|
-
stat(path: PathLike): Promise<Stats>;
|
20
|
-
unlink(path: PathLike): Promise<void>;
|
21
|
-
writefile(path: PathLike, data: Uint8Array | string): Promise<void>;
|
22
|
-
}
|
23
|
-
|
24
|
-
export { MemFileSystem };
|
25
|
-
declare module '@fireproof/core/node'
|
package/node/mem-filesystem.js
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
toArrayBuffer
|
3
|
-
} from "./chunk-4A4RAVNS.js";
|
4
|
-
|
5
|
-
// src/runtime/gateways/file/node/mem-filesystem.ts
|
6
|
-
import { fs } from "memfs";
|
7
|
-
var MemFileSystem = class {
|
8
|
-
async start() {
|
9
|
-
return this;
|
10
|
-
}
|
11
|
-
mkdir(path, options) {
|
12
|
-
return fs.promises.mkdir(path, options);
|
13
|
-
}
|
14
|
-
readdir(path, options) {
|
15
|
-
return fs.promises.readdir(path, options);
|
16
|
-
}
|
17
|
-
rm(path, options) {
|
18
|
-
return fs.promises.rm(path, options);
|
19
|
-
}
|
20
|
-
copyFile(source, destination) {
|
21
|
-
return fs.promises.copyFile(source, destination);
|
22
|
-
}
|
23
|
-
async readfile(path, options) {
|
24
|
-
const ret = await fs.promises.readFile(path, options);
|
25
|
-
return toArrayBuffer(ret);
|
26
|
-
}
|
27
|
-
stat(path) {
|
28
|
-
return fs.promises.stat(path);
|
29
|
-
}
|
30
|
-
unlink(path) {
|
31
|
-
return fs.promises.unlink(path);
|
32
|
-
}
|
33
|
-
writefile(path, data) {
|
34
|
-
return fs.promises.writeFile(path, Buffer.from(data));
|
35
|
-
}
|
36
|
-
};
|
37
|
-
export {
|
38
|
-
MemFileSystem
|
39
|
-
};
|
40
|
-
//# sourceMappingURL=mem-filesystem.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/gateways/file/node/mem-filesystem.ts"],"sourcesContent":["import type { PathLike, MakeDirectoryOptions, Stats } from \"fs\";\nimport { fs } from \"memfs\";\nimport { IReaddirOptions } from \"memfs/lib/node/types/options.js\";\nimport { toArrayBuffer } from \"./to-array-buffer.js\";\nimport type { SysFileSystem } from \"@fireproof/core\";\n\nexport class MemFileSystem implements SysFileSystem {\n async start(): Promise<SysFileSystem> {\n return this;\n }\n mkdir(path: PathLike, options?: { recursive: boolean }): Promise<string | undefined> {\n return fs.promises.mkdir(path, options);\n }\n readdir(path: PathLike, options?: IReaddirOptions): Promise<string[]> {\n return fs.promises.readdir(path, options) as Promise<string[]>;\n }\n rm(path: PathLike, options?: MakeDirectoryOptions & { recursive: boolean }): Promise<void> {\n return fs.promises.rm(path, options);\n }\n copyFile(source: PathLike, destination: PathLike): Promise<void> {\n return fs.promises.copyFile(source, destination);\n }\n async readfile(path: PathLike, options?: { encoding: BufferEncoding; flag?: string }): Promise<Uint8Array> {\n const ret = await fs.promises.readFile(path, options);\n return toArrayBuffer(ret);\n }\n stat(path: PathLike): Promise<Stats> {\n return fs.promises.stat(path) as Promise<Stats>;\n }\n unlink(path: PathLike): Promise<void> {\n return fs.promises.unlink(path);\n }\n writefile(path: PathLike, data: Uint8Array | string): Promise<void> {\n return fs.promises.writeFile(path, Buffer.from(data));\n }\n}\n"],"mappings":";;;;;AACA,SAAS,UAAU;AAKZ,IAAM,gBAAN,MAA6C;AAAA,EAClD,MAAM,QAAgC;AACpC,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAgB,SAA+D;AACnF,WAAO,GAAG,SAAS,MAAM,MAAM,OAAO;AAAA,EACxC;AAAA,EACA,QAAQ,MAAgB,SAA8C;AACpE,WAAO,GAAG,SAAS,QAAQ,MAAM,OAAO;AAAA,EAC1C;AAAA,EACA,GAAG,MAAgB,SAAwE;AACzF,WAAO,GAAG,SAAS,GAAG,MAAM,OAAO;AAAA,EACrC;AAAA,EACA,SAAS,QAAkB,aAAsC;AAC/D,WAAO,GAAG,SAAS,SAAS,QAAQ,WAAW;AAAA,EACjD;AAAA,EACA,MAAM,SAAS,MAAgB,SAA4E;AACzG,UAAM,MAAM,MAAM,GAAG,SAAS,SAAS,MAAM,OAAO;AACpD,WAAO,cAAc,GAAG;AAAA,EAC1B;AAAA,EACA,KAAK,MAAgC;AACnC,WAAO,GAAG,SAAS,KAAK,IAAI;AAAA,EAC9B;AAAA,EACA,OAAO,MAA+B;AACpC,WAAO,GAAG,SAAS,OAAO,IAAI;AAAA,EAChC;AAAA,EACA,UAAU,MAAgB,MAA0C;AAClE,WAAO,GAAG,SAAS,UAAU,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,EACtD;AACF;","names":[]}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtime/gateways/file/node/node-filesystem.ts","../../../src/runtime/gateways/file/node/to-array-buffer.ts"],"sourcesContent":["import type { PathLike, MakeDirectoryOptions, Stats, ObjectEncodingOptions } from \"node:fs\";\nimport type { mkdir, readdir, rm, copyFile, readFile, stat, unlink, writeFile } from \"node:fs/promises\";\nimport { toArrayBuffer } from \"./to-array-buffer.js\";\nimport type { SysFileSystem } from \"@fireproof/core\";\nimport { runtimeFn } from \"@adviser/cement\";\n\nexport class NodeFileSystem implements SysFileSystem {\n fs?: {\n mkdir: typeof mkdir;\n readdir: typeof readdir;\n rm: typeof rm;\n copyFile: typeof copyFile;\n readFile: typeof readFile;\n stat: typeof stat;\n unlink: typeof unlink;\n writeFile: typeof writeFile;\n };\n\n async start(): Promise<SysFileSystem> {\n this.fs = await import(\"node:fs/promises\");\n return this;\n }\n async mkdir(path: PathLike, options?: { recursive: boolean }): Promise<string | undefined> {\n return this.fs?.mkdir(path, options);\n }\n async readdir(path: PathLike, options?: ObjectEncodingOptions): Promise<string[]> {\n return this.fs?.readdir(path, options) as Promise<string[]>;\n }\n async rm(path: PathLike, options?: MakeDirectoryOptions & { recursive: boolean }): Promise<void> {\n return this.fs?.rm(path, options);\n }\n async copyFile(source: PathLike, destination: PathLike): Promise<void> {\n return this.fs?.copyFile(source, destination);\n }\n async readfile(path: PathLike, options?: { encoding: BufferEncoding; flag?: string }): Promise<Uint8Array> {\n const ret = (await this.fs?.readFile(path, options)) as Buffer;\n return toArrayBuffer(ret);\n }\n stat(path: PathLike): Promise<Stats> {\n return this.fs?.stat(path) as Promise<Stats>;\n }\n async unlink(path: PathLike): Promise<void> {\n return this.fs?.unlink(path);\n }\n async writefile(path: PathLike, data: Uint8Array | string): Promise<void> {\n if (runtimeFn().isDeno) {\n return this.fs?.writeFile(path, data);\n }\n return this.fs?.writeFile(path, Buffer.from(data));\n }\n}\n\n// import { type NodeMap, join } from \"../../sys-container.js\";\n// import type { ObjectEncodingOptions, PathLike } from \"fs\";\n// import * as fs from \"fs/promises\";\n// import * as path from \"path\";\n// import * as os from \"os\";\n// import * as url from \"url\";\n// import { toArrayBuffer } from \"./utils.js\";\n\n// export async function createNodeSysContainer(): Promise<NodeMap> {\n// // const nodePath = \"node:path\";\n// // const nodeOS = \"node:os\";\n// // const nodeURL = \"node:url\";\n// // const nodeFS = \"node:fs\";\n// // const fs = (await import(\"node:fs\")).promises;\n// // const assert = \"assert\";\n// // const path = await import(\"node:path\");\n// return {\n// state: \"node\",\n// ...path,\n// // ...(await import(\"node:os\")),\n// // ...(await import(\"node:url\")),\n// ...os,\n// ...url,\n// ...fs,\n// join,\n// stat: fs.stat as NodeMap[\"stat\"],\n// readdir: fs.readdir as NodeMap[\"readdir\"],\n// readfile: async (path: PathLike, options?: ObjectEncodingOptions): Promise<Uint8Array> => {\n// const rs = await fs.readFile(path, options);\n// return toArrayBuffer(rs);\n// },\n// writefile: fs.writeFile as NodeMap[\"writefile\"],\n// };\n// }\n","export function toArrayBuffer(buffer: Buffer | string): Uint8Array {\n if (typeof buffer === \"string\") {\n buffer = Buffer.from(buffer);\n }\n const ab = new ArrayBuffer(buffer.length);\n const view = new Uint8Array(ab);\n for (let i = 0; i < buffer.length; ++i) {\n view[i] = buffer[i];\n }\n return view;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,SAAS,cAAc,QAAqC;AACjE,MAAI,OAAO,WAAW,UAAU;AAC9B,aAAS,OAAO,KAAK,MAAM;AAAA,EAC7B;AACA,QAAM,KAAK,IAAI,YAAY,OAAO,MAAM;AACxC,QAAM,OAAO,IAAI,WAAW,EAAE;AAC9B,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,EAAE,GAAG;AACtC,SAAK,CAAC,IAAI,OAAO,CAAC;AAAA,EACpB;AACA,SAAO;AACT;;;ADNA,oBAA0B;AAEnB,IAAM,iBAAN,MAA8C;AAAA,EAYnD,MAAM,QAAgC;AACpC,SAAK,KAAK,MAAM,OAAO,aAAkB;AACzC,WAAO;AAAA,EACT;AAAA,EACA,MAAM,MAAM,MAAgB,SAA+D;AACzF,WAAO,KAAK,IAAI,MAAM,MAAM,OAAO;AAAA,EACrC;AAAA,EACA,MAAM,QAAQ,MAAgB,SAAoD;AAChF,WAAO,KAAK,IAAI,QAAQ,MAAM,OAAO;AAAA,EACvC;AAAA,EACA,MAAM,GAAG,MAAgB,SAAwE;AAC/F,WAAO,KAAK,IAAI,GAAG,MAAM,OAAO;AAAA,EAClC;AAAA,EACA,MAAM,SAAS,QAAkB,aAAsC;AACrE,WAAO,KAAK,IAAI,SAAS,QAAQ,WAAW;AAAA,EAC9C;AAAA,EACA,MAAM,SAAS,MAAgB,SAA4E;AACzG,UAAM,MAAO,MAAM,KAAK,IAAI,SAAS,MAAM,OAAO;AAClD,WAAO,cAAc,GAAG;AAAA,EAC1B;AAAA,EACA,KAAK,MAAgC;AACnC,WAAO,KAAK,IAAI,KAAK,IAAI;AAAA,EAC3B;AAAA,EACA,MAAM,OAAO,MAA+B;AAC1C,WAAO,KAAK,IAAI,OAAO,IAAI;AAAA,EAC7B;AAAA,EACA,MAAM,UAAU,MAAgB,MAA0C;AACxE,YAAI,yBAAU,EAAE,QAAQ;AACtB,aAAO,KAAK,IAAI,UAAU,MAAM,IAAI;AAAA,IACtC;AACA,WAAO,KAAK,IAAI,UAAU,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,EACnD;AACF;","names":[]}
|