@adviser/cement 0.3.0 → 0.3.2
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/base-sys-abstraction-CR_Z-Ceg.d.ts +84 -0
- package/base-sys-abstraction-DWtPI7Kg.d.cts +84 -0
- package/cf/index.cjs +929 -0
- package/cf/index.cjs.map +1 -0
- package/cf/index.d.cts +26 -0
- package/cf/index.d.ts +26 -0
- package/cf/index.js +12 -0
- package/cf/index.js.map +1 -0
- package/{chunk-3RHIVQAA.js → chunk-A7OPSHUV.js} +6 -94
- package/chunk-A7OPSHUV.js.map +1 -0
- package/chunk-DZPKZQIT.js +1182 -0
- package/chunk-DZPKZQIT.js.map +1 -0
- package/chunk-HFP74WLI.js +96 -0
- package/chunk-HFP74WLI.js.map +1 -0
- package/chunk-R2EEZNZN.js +1742 -0
- package/chunk-R2EEZNZN.js.map +1 -0
- package/deno/index.cjs +940 -0
- package/deno/index.cjs.map +1 -0
- package/deno/index.d.cts +59 -0
- package/deno/index.d.ts +59 -0
- package/deno/index.js +16 -0
- package/deno/index.js.map +1 -0
- package/index-BfZxTAe_.d.cts +318 -0
- package/index-CfSl8Gmj.d.ts +318 -0
- package/index.cjs +407 -139
- package/index.cjs.map +1 -1
- package/index.d.cts +7 -317
- package/index.d.ts +7 -317
- package/index.js +36 -1729
- package/index.js.map +1 -1
- package/node/index.cjs +267 -214
- package/node/index.cjs.map +1 -1
- package/node/index.d.cts +16 -21
- package/node/index.d.ts +16 -21
- package/node/index.js +8 -352
- package/node/index.js.map +1 -1
- package/package.json +18 -11
- package/src/cf/cf-sys-abstraction.ts +78 -0
- package/src/cf/index.ts +1 -0
- package/src/{node → deno}/deno-file-service.ts +2 -2
- package/src/{node → deno}/deno-sys-abstraction.ts +64 -7
- package/src/deno/index.ts +2 -0
- package/src/index.ts +1 -2
- package/src/jsr.json +1 -1
- package/src/logger-impl.ts +2 -2
- package/src/logger.ts +10 -3
- package/src/node/index.ts +0 -1
- package/src/node/node-sys-abstraction.ts +45 -1
- package/src/runtime.ts +13 -3
- package/src/sys-env.ts +36 -109
- package/src/test/index.ts +2 -0
- package/src/uri.ts +2 -2
- package/src/web/web-sys-abstraction.ts +42 -2
- package/sys-abstraction-GNnBj2sz.d.cts +102 -0
- package/sys-abstraction-GNnBj2sz.d.ts +102 -0
- package/test/index.cjs +2681 -0
- package/test/index.cjs.map +1 -0
- package/test/index.d.cts +3 -0
- package/test/index.d.ts +3 -0
- package/test/index.js +14 -0
- package/test/index.js.map +1 -0
- package/ts/base-sys-abstraction.test.js +8 -2
- package/ts/base-sys-abstraction.test.js.map +1 -1
- package/ts/cf/cf-sys-abstraction.d.ts +24 -0
- package/ts/cf/cf-sys-abstraction.d.ts.map +1 -0
- package/ts/cf/cf-sys-abstraction.js +72 -0
- package/ts/cf/cf-sys-abstraction.js.map +1 -0
- package/ts/cf/index.d.ts +2 -0
- package/ts/cf/index.d.ts.map +1 -0
- package/ts/cf/index.js +2 -0
- package/ts/cf/index.js.map +1 -0
- package/ts/crypto.test.js +1 -1
- package/ts/crypto.test.js.map +1 -1
- package/ts/{node → deno}/deno-file-service.d.ts.map +1 -1
- package/ts/{node → deno}/deno-file-service.js +1 -1
- package/ts/{node → deno}/deno-file-service.js.map +1 -1
- package/ts/deno/deno-sys-abstraction.d.ts +43 -0
- package/ts/deno/deno-sys-abstraction.d.ts.map +1 -0
- package/ts/{node → deno}/deno-sys-abstraction.js +46 -2
- package/ts/deno/deno-sys-abstraction.js.map +1 -0
- package/ts/deno/index.d.ts +3 -0
- package/ts/deno/index.d.ts.map +1 -0
- package/ts/deno/index.js +3 -0
- package/ts/deno/index.js.map +1 -0
- package/ts/index.d.ts +1 -2
- package/ts/index.d.ts.map +1 -1
- package/ts/index.js +1 -2
- package/ts/index.js.map +1 -1
- package/ts/logger-impl.js +2 -2
- package/ts/logger-impl.js.map +1 -1
- package/ts/logger.d.ts.map +1 -1
- package/ts/logger.js +9 -3
- package/ts/logger.js.map +1 -1
- package/ts/logger.test.js +9 -9
- package/ts/logger.test.js.map +1 -1
- package/ts/node/index.d.ts +0 -1
- package/ts/node/index.d.ts.map +1 -1
- package/ts/node/index.js +0 -1
- package/ts/node/index.js.map +1 -1
- package/ts/node/node-sys-abstraction.d.ts +14 -1
- package/ts/node/node-sys-abstraction.d.ts.map +1 -1
- package/ts/node/node-sys-abstraction.js +43 -0
- package/ts/node/node-sys-abstraction.js.map +1 -1
- package/ts/runtime.d.ts +1 -0
- package/ts/runtime.d.ts.map +1 -1
- package/ts/runtime.js +10 -3
- package/ts/runtime.js.map +1 -1
- package/ts/sys-env.d.ts +2 -11
- package/ts/sys-env.d.ts.map +1 -1
- package/ts/sys-env.js +29 -98
- package/ts/sys-env.js.map +1 -1
- package/ts/sys-env.test.js +68 -3
- package/ts/sys-env.test.js.map +1 -1
- package/ts/test/index.d.ts +3 -0
- package/ts/test/index.d.ts.map +1 -0
- package/ts/test/index.js +3 -0
- package/ts/test/index.js.map +1 -0
- package/ts/test/test-exit-handler.js +1 -1
- package/ts/uri.d.ts +2 -2
- package/ts/uri.d.ts.map +1 -1
- package/ts/web/web-sys-abstraction.d.ts +27 -0
- package/ts/web/web-sys-abstraction.d.ts.map +1 -1
- package/ts/web/web-sys-abstraction.js +35 -1
- package/ts/web/web-sys-abstraction.js.map +1 -1
- package/utils/index.js +6 -4
- package/web/index.cjs +391 -64
- package/web/index.cjs.map +1 -1
- package/web/index.d.cts +28 -2
- package/web/index.d.ts +28 -2
- package/web/index.js +5 -2
- package/base-sys-abstraction-BkEiLHl0.d.ts +0 -193
- package/base-sys-abstraction-Qj7pkY1N.d.cts +0 -193
- package/chunk-3RHIVQAA.js.map +0 -1
- package/chunk-N3NUTN4B.js +0 -87
- package/chunk-N3NUTN4B.js.map +0 -1
- package/chunk-N5LQQXOU.js +0 -610
- package/chunk-N5LQQXOU.js.map +0 -1
- package/ts/node/deno-sys-abstraction.d.ts +0 -22
- package/ts/node/deno-sys-abstraction.d.ts.map +0 -1
- package/ts/node/deno-sys-abstraction.js.map +0 -1
- /package/ts/{node → deno}/deno-file-service.d.ts +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/deno/index.ts","../../../src/time.ts","../../../src/base-sys-abstraction.ts","../../../src/future.ts","../../../src/resolve-once.ts","../../../src/runtime.ts","../../../src/node/node-file-service.ts","../../../src/txt-en-decoder.ts","../../../src/node/node-sys-abstraction.ts","../../../src/web/web-sys-abstraction.ts","../../../src/cf/cf-sys-abstraction.ts","../../../src/sys-env.ts","../../../src/deno/deno-file-service.ts","../../../src/deno/deno-sys-abstraction.ts"],"sourcesContent":["export * from \"./deno-sys-abstraction.js\";\nexport * from \"./deno-file-service.js\";\n","export abstract class Time {\n abstract Now(add?: number): Date;\n abstract Sleep(duration: Duration): Promise<void>;\n TimeSince(start: Date): Duration {\n const now = this.Now();\n return now.getTime() - start.getTime();\n }\n}\n\nexport type Duration = number;\n\nexport enum TimeUnits {\n Microsecond = 1,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Second = 1000 * Microsecond,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Minute = 60 * Second,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Hour = 60 * Minute,\n}\n","import { FileService } from \"./file-service.js\";\nimport { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, SysAbstraction } from \"./sys-abstraction.js\";\nimport { Time } from \"./time.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\n\nexport class SysTime extends Time {\n Now(): Date {\n return new Date();\n }\n Sleep(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, duration);\n });\n }\n}\n\nexport class ConstTime extends Time {\n Now(): Date {\n return new Date(2021, 1, 1, 0, 0, 0, 0);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Sleep(duration: number): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport class StepTime extends Time {\n _step: Date;\n readonly _start: Date;\n constructor() {\n super();\n this._step = new ConstTime().Now();\n this._start = this._step;\n }\n Now(steps = 1): Date {\n // if (this._step.getTime() === 0) {\n // this._step = new ConstTime().Now();\n // return this._step;\n // }\n for (let i = 0; steps > 0 && i < steps; i++) {\n this._step = new Date(this._step.getTime() + 1000);\n }\n if (steps < 1) {\n this._step = new Date(this._start.getTime() + steps * -1000);\n }\n // this._step = new Date(this._step.getTime() + 1000);\n return this._step;\n }\n Sleep(duration: number): Promise<void> {\n this._step = new Date(this._step.getTime() + duration);\n return Promise.resolve();\n }\n}\n\nexport function TimeFactory(timeMode: TimeMode): Time {\n switch (timeMode) {\n case TimeMode.REAL:\n return new SysTime();\n case TimeMode.CONST:\n return new ConstTime();\n case TimeMode.STEP:\n return new StepTime();\n }\n return new SysTime();\n}\n\nexport class RandomService {\n readonly _mode: RandomMode;\n _step = 0;\n constructor(mode: RandomMode) {\n this._mode = mode;\n }\n Random0ToValue(value: number): number {\n switch (this._mode) {\n case RandomMode.CONST:\n return 0.5 * value;\n case RandomMode.STEP:\n this._step += 0.0001;\n return this._step * value;\n case RandomMode.RANDOM:\n return Math.random() * value;\n default:\n throw new Error(\"Unknown RandomMode\");\n }\n }\n}\n\nexport class IdService {\n readonly _mode: IDMode;\n _step = 0;\n constructor(mode?: IDMode) {\n if (!mode) {\n mode = IDMode.UUID;\n }\n this._mode = mode;\n }\n NextId(): string {\n switch (this._mode) {\n case IDMode.UUID:\n return crypto.randomUUID();\n case IDMode.CONST:\n return \"VeryUniqueID\";\n case IDMode.STEP:\n return `STEPId-${this._step++}`;\n default:\n throw new Error(\"Unknown IDMode\");\n }\n }\n}\n\nexport interface BaseSysAbstractionParams {\n readonly TxtEnDecoder: TxtEnDecoder;\n readonly FileSystem: FileService;\n readonly SystemService: SystemService;\n}\n\nexport interface ExitHandler {\n readonly hdl: VoidFunc;\n readonly id: string;\n}\n\nexport interface ExitService {\n injectExitHandlers(hdls: ExitHandler[]): void;\n exit(code: number): void;\n}\n\n// some black magic to make it work with CF workers\nfunction consumeReadableStream(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n writeFn: (chunk: Uint8Array) => Promise<void>,\n): void {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n writeFn(value)\n .then(() => {\n consumeReadableStream(reader, writeFn);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:writeFn\", e);\n });\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:read\", e);\n });\n}\n\nfunction CFWriteableStream(writeFn: (chunk: Uint8Array) => Promise<void>): WritableStream {\n const ts = new TransformStream();\n consumeReadableStream(ts.readable.getReader(), writeFn);\n return ts.writable;\n}\n\nexport class BaseSysAbstraction {\n readonly _time: SysTime = new SysTime();\n readonly _stdout: WritableStream;\n readonly _stderr: WritableStream;\n\n readonly _idService: IdService = new IdService();\n readonly _randomService: RandomService = new RandomService(RandomMode.RANDOM);\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n readonly _txtEnDe: TxtEnDecoder;\n\n constructor(params: BaseSysAbstractionParams) {\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n this._txtEnDe = params.TxtEnDecoder;\n const decoder = this._txtEnDe;\n this._stdout = CFWriteableStream(async (chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n });\n this._stderr = CFWriteableStream(async (chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n });\n /* this is not CF worker compatible\n this._stdout = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n resolve();\n });\n },\n });\n this._stderr = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n resolve();\n });\n },\n });\n */\n }\n}\n\nexport interface WrapperSysAbstractionParams {\n readonly TimeMode?: TimeMode;\n readonly IdMode?: IDMode;\n readonly Stdout?: WritableStream<Uint8Array>;\n readonly Stderr?: WritableStream<Uint8Array>;\n readonly RandomMode?: RandomMode;\n readonly FileSystem?: FileService;\n readonly SystemService?: SystemService;\n readonly TxtEnDecoder?: TxtEnDecoder;\n}\n\nexport class WrapperSysAbstraction implements SysAbstraction {\n readonly _time: Time;\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n constructor(base: BaseSysAbstraction, params?: WrapperSysAbstractionParams) {\n this._time = base._time;\n this._stdout = base._stdout;\n this._stderr = base._stderr;\n this._idService = base._idService;\n this._randomService = base._randomService;\n this._fileSystem = base._fileSystem;\n this._systemService = base._systemService;\n if (params) {\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\n }\n if (params.Stdout) {\n this._stdout = params.Stdout;\n }\n if (params.Stderr) {\n this._stderr = params.Stderr;\n }\n if (params.IdMode) {\n this._idService = new IdService(params.IdMode);\n }\n if (params.RandomMode) {\n this._randomService = new RandomService(params.RandomMode);\n }\n if (params.FileSystem) {\n this._fileSystem = params.FileSystem;\n }\n if (params.SystemService) {\n this._systemService = params.SystemService;\n }\n }\n }\n Time(): Time {\n return this._time;\n }\n NextId(): string {\n return this._idService.NextId();\n }\n Random0ToValue(value: number): number {\n return this._randomService.Random0ToValue(value);\n }\n Stdout(): WritableStream {\n return this._stdout;\n }\n Stderr(): WritableStream {\n return this._stderr;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n// export const BaseSysAbstraction = new BaseSysAbstractionImpl()\n","export class Future<T> {\n readonly #promise: Promise<T>;\n #resolveFn: (value: T) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n #rejectFn: (reason: unknown) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolveFn = resolve;\n this.#rejectFn = reject;\n });\n }\n\n async asPromise(): Promise<T> {\n return this.#promise;\n }\n\n resolve(value: T): void {\n this.#resolveFn(value);\n }\n reject(reason: unknown): void {\n this.#rejectFn(reason);\n }\n}\n","import { Future } from \"./future.js\";\n\ninterface ResolveSeqItem<T, C> {\n readonly future: Future<T>;\n readonly fn: (c: C) => Promise<T>;\n readonly id?: number;\n}\n\nexport class ResolveSeq<T, C = void> {\n readonly ctx: C;\n constructor(ctx?: C) {\n this.ctx = ctx as C;\n }\n reset(): void {\n /* noop */\n }\n async _step(item?: ResolveSeqItem<T, C> | undefined): Promise<void> {\n if (!item) {\n // done\n return;\n }\n item\n .fn(this.ctx)\n .then((value) => item.future.resolve(value))\n .catch((e) => item.future.reject(e as Error))\n .finally(() => {\n this._seqFutures.shift();\n this._step(this._seqFutures[0]);\n });\n }\n readonly _seqFutures: ResolveSeqItem<T, C>[] = [];\n async add(fn: (c: C) => Promise<T>, id?: number): Promise<T> {\n const future = new Future<T>();\n this._seqFutures.push({ future, fn, id });\n if (this._seqFutures.length === 1) {\n this._step(this._seqFutures[0]);\n }\n return future.asPromise();\n }\n}\n\nexport class ResolveOnce<T, CTX = void> {\n _onceDone = false;\n readonly _onceFutures: Future<T>[] = [];\n _onceOk = false;\n _onceValue?: T;\n _onceError?: Error;\n _isPromise = false;\n\n readonly ctx: CTX;\n\n constructor(ctx?: CTX) {\n this.ctx = ctx as CTX;\n }\n\n get ready(): boolean {\n return this._onceDone;\n }\n\n reset(): void {\n this._onceDone = false;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceError = undefined;\n this._onceFutures.length = 0;\n }\n\n // T extends Option<infer U> ? U : T\n once<R>(fn: (c: CTX) => R): R {\n if (this._onceDone) {\n if (this._onceError) {\n if (this._isPromise) {\n return Promise.reject(this._onceError) as unknown as R;\n } else {\n throw this._onceError;\n }\n }\n if (this._onceOk) {\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Promise.resolve(this._onceValue!) as unknown as R;\n } else {\n return this._onceValue as unknown as R;\n }\n }\n throw new Error(\"ResolveOnce.once impossible\");\n }\n const future = new Future<T>();\n this._onceFutures.push(future);\n if (this._onceFutures.length === 1) {\n const okFn = (value: T): void => {\n this._onceValue = value;\n this._onceOk = true;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.resolve(this._onceValue!));\n }\n this._onceFutures.length = 0;\n };\n const catchFn = (e: Error): void => {\n this._onceError = e as Error;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.reject(this._onceError!));\n }\n this._onceFutures.length = 0;\n };\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n (ret as Promise<T>).then(okFn).catch(catchFn);\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n }\n if (this._isPromise) {\n return future.asPromise() as unknown as R;\n } else {\n // abit funky but i don't want to impl the return just once\n return this.once(fn);\n }\n }\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n private readonly _map = new Map<K, T>();\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T) {\n this.factory = factory;\n }\n\n async asyncGet(key: () => Promise<K>): Promise<T> {\n return this.get(await key());\n }\n\n get(key: K | (() => K)): T {\n if (typeof key === \"function\") {\n key = (key as () => K)();\n }\n let keyed = this._map.get(key);\n if (!keyed) {\n keyed = this.factory(key);\n this._map.set(key, keyed);\n }\n return keyed;\n }\n\n unget(key: K): void {\n const keyed = this._map.get(key);\n keyed?.reset();\n this._map.delete(key);\n }\n\n reset(): void {\n this._map.forEach((keyed) => keyed.reset());\n this._map.clear();\n }\n}\n\nexport class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {\n constructor() {\n super((key) => new ResolveOnce<T, K>(key));\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor() {\n super((key) => new ResolveSeq<T, K>(key));\n }\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n isCFWorker: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSet(value: string, ref: any = globalThis): boolean {\n const [head, ...tail] = value.split(\".\");\n if ([\"object\", \"function\"].includes(typeof ref) && ref && [\"object\", \"function\"].includes(typeof ref[head]) && ref[head]) {\n if (tail.length <= 1) {\n return true;\n }\n return isSet(tail.join(\".\"), ref[head]);\n }\n return false;\n}\n\n// caches.default or WebSocketPair\n\nexport function runtimeFn(): Runtime {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const gt: any = globalThis;\n let isReactNative =\n isSet(\"navigator.product\") && typeof gt[\"navigator\"] === \"object\" && gt[\"navigator\"][\"product\"] === \"ReactNative\";\n let isNodeIsh = false;\n if (!isSet(\"Deno\")) {\n isNodeIsh = isSet(\"process.versions.node\") && !isReactNative;\n }\n let isDeno = isSet(\"Deno\");\n const isCFWorker = isSet(\"caches.default\") && isSet(\"WebSocketPair\");\n if (isCFWorker) {\n isDeno = false;\n isNodeIsh = false;\n isReactNative = false;\n }\n return {\n isNodeIsh,\n isBrowser: !(isNodeIsh || isDeno || isCFWorker || isReactNative),\n isDeno,\n isReactNative,\n isCFWorker,\n };\n}\n","import path from \"node:path\";\nimport fs from \"node:fs\";\nimport process from \"node:process\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { TxtEnDecoder, Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class NodeFileService implements FileService {\n readonly baseDir: string;\n constructor(baseDir: string = process.cwd()) {\n this.baseDir = this.abs(baseDir);\n }\n\n // nodeImport(fname: string): string {\n // // console.log('nodeImport:'+ fname);\n // if (path.isAbsolute(fname)) {\n // return fname;\n // } else {\n // return \"./\" + path.normalize(fname);\n // }\n // }\n\n readFileString(fname: string): Promise<string> {\n return fs.promises.readFile(fname, { encoding: \"utf-8\" });\n }\n\n dirname(fname: string): string {\n return path.dirname(fname);\n }\n basename(fname: string): string {\n return path.basename(fname);\n }\n\n join(...paths: string[]): string {\n return path.join(...paths);\n }\n\n relative(from: string, to?: string): string {\n if (to === undefined) {\n to = from;\n from = process.cwd();\n }\n const ret = path.relative(from, to);\n // console.log('relative:'+ from + \" -> \" + to + \"= \" + ret);\n return ret;\n }\n\n abs(fname: string): string {\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n const cwd = process.cwd();\n return path.resolve(cwd, fname);\n }\n }\n\n isAbsolute(fname: string): boolean {\n return path.isAbsolute(fname);\n }\n\n async writeFileString(fname: string, content: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): Promise<void> {\n const o = await this.create(fname);\n const wr = o.stream.getWriter();\n await wr.write(ende.encode(content));\n await wr.close();\n }\n\n async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!path.isAbsolute(fname)) {\n oName = this.abs(fname);\n }\n\n const base = path.dirname(oName);\n await fs.promises.mkdir(base, { recursive: true });\n const out = fs.createWriteStream(oName);\n return {\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk): void {\n out.write(chunk);\n },\n close(): void {\n out.close();\n },\n abort(): void {\n throw new Error(\"not implemented\");\n },\n }),\n };\n }\n}\n","export interface TxtEnDecoder {\n encode(str: string): Uint8Array;\n decode(data: Uint8Array): string;\n}\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\nexport class Utf8EnDecoder implements TxtEnDecoder {\n encode(str: string): Uint8Array {\n return encoder.encode(str);\n }\n decode(data: Uint8Array): string {\n return decoder.decode(data);\n }\n}\n\nconst utf8EnDecoder = new Utf8EnDecoder();\nexport function Utf8EnDecoderSingleton(): TxtEnDecoder {\n return utf8EnDecoder;\n}\n","import { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport {\n BaseSysAbstraction,\n ExitHandler,\n ExitService,\n WrapperSysAbstraction,\n WrapperSysAbstractionParams,\n} from \"../base-sys-abstraction.js\";\nimport { NodeFileService } from \"./node-file-service.js\";\nimport { Env, EnvActions, envFactory, EnvFactoryOpts } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport process from \"node:process\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\n\nconst once = new ResolveOnce<NodeEnvActions>();\nexport class NodeEnvActions implements EnvActions {\n readonly #node = globalThis as unknown as { process: { env: Record<string, string> } };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new NodeEnvActions(opts));\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env[key] = env.get(key) || \"\";\n }\n return env;\n }\n\n active(): boolean {\n return runtimeFn().isNodeIsh;\n // typeof this.#node === \"object\" && typeof this.#node.process === \"object\" && typeof this.#node.process.env === \"object\";\n }\n readonly _env: Record<string, string> = this.active() ? this.#node.process.env : {};\n keys(): string[] {\n return Object.keys(this._env);\n }\n get(key: string): string | undefined {\n return this._env[key];\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env[key] = value;\n }\n }\n delete(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._env[key];\n }\n}\n\nexport class NodeExitServiceImpl implements ExitService {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"unhandledRejection\", (reason: string, p: Promise<unknown>) => {\n this.exit(19);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"uncaughtException\", (error: Error) => {\n this.exit(18);\n });\n process.on(\"close\", () => {\n this.exit(0);\n });\n process.on(\"exit\", () => {\n this.exit(0);\n });\n process.on(\"SIGQUIT\", () => {\n this.exit(3);\n });\n process.on(\"SIGINT\", () => {\n this.exit(2);\n });\n process.on(\"SIGTERM\", () => {\n this.exit(9);\n });\n }\n _exitHandlers: ExitHandler[] = [];\n injectExitHandlers(hdls: ExitHandler[]): void {\n // console.log(\"ExitService: injecting exit handlers\", hdls)\n this._exitHandlers = hdls;\n }\n invoked = false;\n readonly _handleExit = async (): Promise<void> => {\n if (this.invoked) {\n // console.error(\"ExitService: already invoked\");\n return;\n }\n this.invoked = true;\n for (const h of this._exitHandlers) {\n try {\n // console.log(`ExitService: calling handler ${h.id}`)\n const ret = h.hdl();\n // console.log(`ExitService: called handler ${h.id}`, ret)\n if (typeof (ret as Promise<void>).then === \"function\") {\n await ret;\n }\n } finally {\n // ignore\n }\n }\n };\n\n exit(code: number): void {\n // console.log(\"ExitService: exit called\", code)\n this._handleExit()\n .then(() => {\n process.exit(code);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\"ExitService: failed to handle exit\", err);\n process.exit(code);\n });\n }\n}\n\nexport class NodeSystemService implements SystemService {\n static readonly _exitHandlers: ExitHandler[] = [];\n readonly _exitService: ExitService = new NodeExitServiceImpl();\n constructor() {\n this._exitService.injectExitHandlers(NodeSystemService._exitHandlers);\n }\n\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return process.argv;\n }\n\n OnExit(hdl: VoidFunc): VoidFunc {\n const id = crypto.randomUUID();\n NodeSystemService._exitHandlers.push({ hdl, id });\n return () => {\n const idx = NodeSystemService._exitHandlers.findIndex((h) => h.id === id);\n if (idx >= 0) {\n NodeSystemService._exitHandlers.splice(idx, 1);\n }\n };\n }\n\n Exit(code: number): void {\n this._exitService.exit(code);\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new NodeFileService(),\n SystemService: new NodeSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, EnvActions, envFactory, EnvFactoryOpts } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nconst once = new ResolveOnce<BrowserEnvActions>();\nexport class BrowserEnvActions implements EnvActions {\n readonly env: Map<string, string> = new Map<string, string>();\n readonly opts: Partial<EnvFactoryOpts>;\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new BrowserEnvActions(opts));\n }\n\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n get(key: string): string | undefined {\n return this.env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.env.set(key, value);\n }\n }\n delete(key: string): void {\n this.env.delete(key);\n }\n keys(): string[] {\n return Array.from(this.env.keys());\n }\n active(): boolean {\n return true; // that should work on every runtime\n }\n\n register(env: Env): Env {\n const sym = Symbol.for(this.opts.symbol || \"CP_ENV\");\n const browser = globalThis as unknown as Record<symbol, Env>;\n browser[sym] = env;\n return env;\n }\n}\n\nexport class WebFileService implements FileService {\n get baseDir(): string {\n throw new Error(\"basedir-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n create(fname: string): Promise<NamedWritableStream> {\n throw new Error(\"create-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileString(fname: string): Promise<string> {\n throw new Error(\"readFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileString(fname: string, content: string): Promise<void> {\n throw new Error(\"writeFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abs(fname: string): string {\n throw new Error(\"abs-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n join(...paths: string[]): string {\n throw new Error(\"join-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n relative(from: string, to?: string | undefined): string {\n throw new Error(\"relative-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname(fname: string): string {\n throw new Error(\"dirname-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n basename(fname: string): string {\n throw new Error(\"basename-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n nodeImport(fname: string): string {\n throw new Error(\"nodeImport-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isAbsolute(fname: string): boolean {\n throw new Error(\"isAbsolute-Method not implemented.\");\n }\n}\n\nclass WebSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function WebSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new WebSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, EnvActions, envFactory, EnvFactoryOpts, EnvImpl } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { WebFileService } from \"../web/web-sys-abstraction.js\";\n\nconst once = new ResolveOnce<CFEnvActions>();\nexport class CFEnvActions implements EnvActions {\n readonly cfEnv: Map<string, string>;\n env?: EnvImpl;\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new CFEnvActions(opts));\n }\n static inject(o: Record<string, string>): void {\n const env = CFEnvActions.new({}) as CFEnvActions;\n for (const key in o) {\n const value = o[key];\n if (typeof value === \"string\") {\n env.env?.set(key, value);\n }\n }\n }\n private constructor(env: Partial<EnvFactoryOpts>) {\n this.cfEnv = new Map<string, string>(Object.entries(env.presetEnv || {}));\n }\n active(): boolean {\n return runtimeFn().isCFWorker;\n }\n register(env: Env): Env {\n this.env = env as EnvImpl;\n return env;\n }\n get(key: string): string | undefined {\n return this.cfEnv.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.cfEnv.set(key, value);\n }\n }\n delete(key: string): void {\n this.cfEnv.delete(key);\n }\n keys(): string[] {\n return Array.from(this.cfEnv.keys());\n }\n}\n\nexport class CFSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new CFSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { DenoEnvActions } from \"./deno/deno-sys-abstraction.js\";\nimport { NodeEnvActions } from \"./node/node-sys-abstraction.js\";\nimport { BrowserEnvActions } from \"./web/web-sys-abstraction.js\";\nimport { CFEnvActions } from \"./cf/cf-sys-abstraction.js\";\nimport { KeyedResolvOnce } from \"./resolve-once.js\";\n\nexport interface EnvMap {\n get(key: string): string | undefined;\n set(key: string, value?: string): void;\n delete(key: string): void;\n keys(): string[];\n}\nexport interface EnvActions extends EnvMap {\n active(): boolean;\n register(env: Env): Env;\n}\n\nexport interface EnvFactoryOpts {\n readonly symbol: string; // default \"CP_ENV\" used by BrowserEnvActions\n readonly presetEnv: Map<string, string>;\n}\n\ntype OnSetFn = (key: string, value?: string) => void;\nexport interface OnSetItem {\n readonly filter: Set<string>;\n readonly fn: OnSetFn;\n}\n\nexport interface Env extends EnvMap {\n onSet(fn: OnSetFn, ...filter: string[]): void;\n}\n\nexport type EnvFactoryFn = (opts: Partial<EnvFactoryOpts>) => EnvActions;\n\nconst envActions: { id: string; fn: EnvFactoryFn }[] = [\n { id: \"cf\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => CFEnvActions.new(opts) },\n { id: \"node\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => NodeEnvActions.new(opts) },\n { id: \"deno\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => DenoEnvActions.new(opts) },\n { id: \"browser\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => BrowserEnvActions.new(opts) },\n];\n\nexport function registerEnvAction(fn: EnvFactoryFn): () => void {\n const id = `id-${Math.random()}`;\n envActions.unshift({ id, fn });\n // rerun envFactory\n _envFactories.unget(id);\n return () => {\n const index = envActions.findIndex((i) => i.id === id);\n if (index >= 0) {\n envActions.splice(index, 1);\n }\n };\n}\n\nconst _envFactories = new KeyedResolvOnce<Env>();\nexport function envFactory(opts: Partial<EnvFactoryOpts> = {}): Env {\n const found = envActions.find((fi) => fi.fn(opts).active());\n if (!found) {\n throw new Error(\"SysContainer:envFactory: no env available\");\n }\n return _envFactories.get(found.id).once(() => {\n const action = found.fn(opts);\n const ret = new EnvImpl(action, opts);\n action.register(ret);\n return ret;\n });\n}\n\nexport class EnvImpl implements Env {\n readonly _map: EnvMap;\n constructor(map: EnvMap, opts: Partial<EnvFactoryOpts> = {}) {\n this._map = map;\n this._updatePresets(opts.presetEnv);\n }\n _updatePresets(presetEnv?: Map<string, string>): void {\n if (!presetEnv) {\n return;\n }\n for (const [key, value] of presetEnv) {\n this._map.set(key, value);\n }\n }\n _applyOnSet(onSet: OnSetItem[], key?: string, value?: string): void {\n onSet.forEach((item) => {\n let keys: string[] = [];\n if (key) {\n keys = [key];\n } else {\n keys = this._map.keys();\n }\n keys\n .filter((k) => {\n if (item.filter.size === 0) {\n return true;\n }\n if (item.filter.has(k)) {\n return true;\n }\n return false;\n })\n .forEach((k) => {\n let v;\n if (!key && !value) {\n // init\n v = this._map.get(k);\n } else if (key && !value) {\n // del\n v = undefined;\n } else {\n // set\n v = value;\n }\n item.fn(k, v);\n });\n });\n }\n readonly _onSet: OnSetItem[] = [];\n keys(): string[] {\n return this._map.keys();\n }\n // filter is not set all sets passed\n onSet(fn: OnSetFn, ...filter: string[]): void {\n const item: OnSetItem = { filter: new Set(filter), fn };\n this._onSet.push(item);\n this._applyOnSet([item]);\n }\n get(key: string): string | undefined {\n return this._map.get(key);\n }\n set(key: string, value?: string): void {\n if (!value) {\n return;\n }\n this._map.set(key, value);\n this._applyOnSet(this._onSet, key, value);\n }\n delete(key: string): void {\n this._map.delete(key);\n this._applyOnSet(this._onSet, key);\n }\n}\n\n// export const envImpl = new EnvImpl();\n","import * as path from \"node:path\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { TxtEnDecoder, Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nconst Deno = (globalThis as unknown as { Deno: unknown }).Deno as {\n cwd(): string;\n readFile(fname: string): Promise<Uint8Array>;\n mkdir(base: string, options: { recursive: boolean }): Promise<void>;\n open(fname: string, options: { write: boolean; create: boolean; truncate: boolean }): Promise<WritableStream>;\n};\n\nexport class DenoFileService implements FileService {\n readonly baseDir: string;\n readonly txtEnde: TxtEnDecoder;\n constructor(baseDir: string = Deno.cwd(), txtEnde: TxtEnDecoder = Utf8EnDecoderSingleton()) {\n this.baseDir = this.abs(baseDir);\n this.txtEnde = txtEnde;\n }\n\n // nodeImport(fname: string): string {\n // // console.log('nodeImport:'+ fname);\n // if (path.isAbsolute(fname)) {\n // return fname;\n // } else {\n // return \"./\" + path.normalize(fname);\n // }\n // }\n\n async readFileString(fname: string): Promise<string> {\n return this.txtEnde.decode(await Deno.readFile(fname));\n }\n\n dirname(fname: string): string {\n return path.dirname(fname);\n }\n basename(fname: string): string {\n return path.basename(fname);\n }\n\n join(...paths: string[]): string {\n return path.join(...paths);\n }\n\n relative(from: string, to?: string): string {\n if (to === undefined) {\n to = from;\n from = Deno.cwd();\n }\n const ret = path.relative(from, to);\n // console.log('relative:'+ from + \" -> \" + to + \"= \" + ret);\n return ret;\n }\n\n abs(fname: string): string {\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n const cwd = Deno.cwd();\n return path.resolve(cwd, fname);\n }\n }\n\n isAbsolute(fname: string): boolean {\n return path.isAbsolute(fname);\n }\n\n async writeFileString(fname: string, content: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): Promise<void> {\n const o = await this.create(fname);\n const wr = o.stream.getWriter();\n await wr.write(ende.encode(content));\n await wr.close();\n }\n\n async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!path.isAbsolute(fname)) {\n oName = this.abs(fname);\n }\n\n const base = path.dirname(oName);\n await Deno.mkdir(base, { recursive: true });\n const out = await Deno.open(oName, {\n write: true,\n create: true,\n truncate: true,\n });\n return {\n name: oName,\n stream: out,\n };\n }\n}\n","import {\n ExitService,\n ExitHandler,\n BaseSysAbstraction,\n WrapperSysAbstractionParams,\n WrapperSysAbstraction,\n} from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, EnvActions, envFactory, EnvFactoryOpts } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n// import * as process from \"node:process\";\nimport { DenoFileService } from \"./deno-file-service.js\";\n\nconst Deno = (globalThis as unknown as { Deno: unknown }).Deno as {\n addSignalListener(sig: string, hdl: () => void): void;\n exit(code?: number): void;\n args: string[];\n};\n\ninterface DenoEnv {\n get: (key: string) => string | undefined;\n toObject: () => Record<string, string>;\n set: (key: string, value: string) => void;\n has: (key: string) => boolean;\n delete: (key: string) => void;\n}\n\nconst once = new ResolveOnce<DenoEnvActions>();\nexport class DenoEnvActions implements EnvActions {\n readonly #deno = globalThis as unknown as {\n Deno: {\n env: DenoEnv;\n };\n };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new DenoEnvActions(opts));\n }\n\n get _env(): DenoEnv {\n return this.#deno.Deno.env;\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env.set(key, env.get(key) || \"\");\n }\n return env;\n }\n active(): boolean {\n return runtimeFn().isDeno;\n }\n keys(): string[] {\n return Object.keys(this._env.toObject());\n }\n get(key: string): string | undefined {\n return this._env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env.set(key, value);\n }\n }\n delete(key: string): void {\n this._env.delete(key);\n }\n}\n\nexport class DenoExitServiceImpl implements ExitService {\n constructor() {\n globalThis.addEventListener(\"unhandledrejection\", (e) => {\n e.preventDefault();\n this.exit(19);\n });\n globalThis.addEventListener(\"error\", () => {\n this.exit(19);\n });\n globalThis.addEventListener(\"uncaughtException\", () => {\n this.exit(19);\n });\n\n // process.on(\"close\", () => {\n // this.exit(0);\n // });\n globalThis.addEventListener(\"unload\", () => {\n this.exit(0);\n // console.log('goodbye!');\n });\n\n // process.on(\"exit\", () => {\n // });\n Deno.addSignalListener(\"SIGQUIT\", () => {\n this.exit(3);\n });\n Deno.addSignalListener(\"SIGINT\", () => {\n this.exit(2);\n });\n Deno.addSignalListener(\"SIGTERM\", () => {\n this.exit(9);\n });\n }\n _exitHandlers: ExitHandler[] = [];\n injectExitHandlers(hdls: ExitHandler[]): void {\n // console.log(\"ExitService: injecting exit handlers\", hdls)\n this._exitHandlers = hdls;\n }\n invoked = false;\n readonly _handleExit = async (): Promise<void> => {\n if (this.invoked) {\n // console.error(\"ExitService: already invoked\");\n return;\n }\n this.invoked = true;\n for (const h of this._exitHandlers) {\n try {\n // console.log(`ExitService: calling handler ${h.id}`)\n const ret = h.hdl();\n // console.log(`ExitService: called handler ${h.id}`, ret)\n if (typeof (ret as Promise<void>).then === \"function\") {\n await ret;\n }\n } finally {\n // ignore\n }\n }\n };\n\n exit(code: number): void {\n // console.log(\"ExitService: exit called\", code)\n this._handleExit()\n .then(() => {\n Deno.exit(code);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\"ExitService: failed to handle exit\", err);\n Deno.exit(code);\n });\n }\n}\n\nexport class DenoSystemService implements SystemService {\n static readonly _exitHandlers: ExitHandler[] = [];\n readonly _exitService: ExitService = new DenoExitServiceImpl();\n constructor() {\n this._exitService.injectExitHandlers(DenoSystemService._exitHandlers);\n }\n\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return Deno.args;\n }\n\n OnExit(hdl: VoidFunc): VoidFunc {\n const id = crypto.randomUUID();\n DenoSystemService._exitHandlers.push({ hdl, id });\n return () => {\n const idx = DenoSystemService._exitHandlers.findIndex((h) => h.id === id);\n if (idx >= 0) {\n DenoSystemService._exitHandlers.splice(idx, 1);\n }\n };\n }\n\n Exit(code: number): void {\n this._exitService.exit(code);\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function DenoSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new DenoFileService(),\n SystemService: new DenoSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":"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","names":["resolve","decoder","resolve","import_node_process","process","once","once","EnvImpl","path","Deno","once"]}
|
package/deno/index.d.cts
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base-sys-abstraction-DWtPI7Kg.cjs';
|
2
|
+
import { E as EnvActions, b as EnvFactoryOpts, c as Env, S as SystemService, V as VoidFunc, d as SysAbstraction, F as FileService, N as NamedWritableStream } from '../sys-abstraction-GNnBj2sz.cjs';
|
3
|
+
import { T as TxtEnDecoder } from '../txt-en-decoder-CZYJUju2.cjs';
|
4
|
+
|
5
|
+
interface DenoEnv {
|
6
|
+
get: (key: string) => string | undefined;
|
7
|
+
toObject: () => Record<string, string>;
|
8
|
+
set: (key: string, value: string) => void;
|
9
|
+
has: (key: string) => boolean;
|
10
|
+
delete: (key: string) => void;
|
11
|
+
}
|
12
|
+
declare class DenoEnvActions implements EnvActions {
|
13
|
+
#private;
|
14
|
+
static new(opts: Partial<EnvFactoryOpts>): EnvActions;
|
15
|
+
get _env(): DenoEnv;
|
16
|
+
readonly opts: Partial<EnvFactoryOpts>;
|
17
|
+
private constructor();
|
18
|
+
register(env: Env): Env;
|
19
|
+
active(): boolean;
|
20
|
+
keys(): string[];
|
21
|
+
get(key: string): string | undefined;
|
22
|
+
set(key: string, value?: string): void;
|
23
|
+
delete(key: string): void;
|
24
|
+
}
|
25
|
+
declare class DenoExitServiceImpl implements ExitService {
|
26
|
+
constructor();
|
27
|
+
_exitHandlers: ExitHandler[];
|
28
|
+
injectExitHandlers(hdls: ExitHandler[]): void;
|
29
|
+
invoked: boolean;
|
30
|
+
readonly _handleExit: () => Promise<void>;
|
31
|
+
exit(code: number): void;
|
32
|
+
}
|
33
|
+
declare class DenoSystemService implements SystemService {
|
34
|
+
static readonly _exitHandlers: ExitHandler[];
|
35
|
+
readonly _exitService: ExitService;
|
36
|
+
constructor();
|
37
|
+
Env(): Env;
|
38
|
+
Args(): string[];
|
39
|
+
OnExit(hdl: VoidFunc): VoidFunc;
|
40
|
+
Exit(code: number): void;
|
41
|
+
}
|
42
|
+
declare function DenoSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
|
43
|
+
|
44
|
+
declare class DenoFileService implements FileService {
|
45
|
+
readonly baseDir: string;
|
46
|
+
readonly txtEnde: TxtEnDecoder;
|
47
|
+
constructor(baseDir?: string, txtEnde?: TxtEnDecoder);
|
48
|
+
readFileString(fname: string): Promise<string>;
|
49
|
+
dirname(fname: string): string;
|
50
|
+
basename(fname: string): string;
|
51
|
+
join(...paths: string[]): string;
|
52
|
+
relative(from: string, to?: string): string;
|
53
|
+
abs(fname: string): string;
|
54
|
+
isAbsolute(fname: string): boolean;
|
55
|
+
writeFileString(fname: string, content: string, ende?: TxtEnDecoder): Promise<void>;
|
56
|
+
create(fname: string): Promise<NamedWritableStream>;
|
57
|
+
}
|
58
|
+
|
59
|
+
export { DenoEnvActions, DenoExitServiceImpl, DenoFileService, DenoSysAbstraction, DenoSystemService };
|
package/deno/index.d.ts
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base-sys-abstraction-CR_Z-Ceg.js';
|
2
|
+
import { E as EnvActions, b as EnvFactoryOpts, c as Env, S as SystemService, V as VoidFunc, d as SysAbstraction, F as FileService, N as NamedWritableStream } from '../sys-abstraction-GNnBj2sz.js';
|
3
|
+
import { T as TxtEnDecoder } from '../txt-en-decoder-CZYJUju2.js';
|
4
|
+
|
5
|
+
interface DenoEnv {
|
6
|
+
get: (key: string) => string | undefined;
|
7
|
+
toObject: () => Record<string, string>;
|
8
|
+
set: (key: string, value: string) => void;
|
9
|
+
has: (key: string) => boolean;
|
10
|
+
delete: (key: string) => void;
|
11
|
+
}
|
12
|
+
declare class DenoEnvActions implements EnvActions {
|
13
|
+
#private;
|
14
|
+
static new(opts: Partial<EnvFactoryOpts>): EnvActions;
|
15
|
+
get _env(): DenoEnv;
|
16
|
+
readonly opts: Partial<EnvFactoryOpts>;
|
17
|
+
private constructor();
|
18
|
+
register(env: Env): Env;
|
19
|
+
active(): boolean;
|
20
|
+
keys(): string[];
|
21
|
+
get(key: string): string | undefined;
|
22
|
+
set(key: string, value?: string): void;
|
23
|
+
delete(key: string): void;
|
24
|
+
}
|
25
|
+
declare class DenoExitServiceImpl implements ExitService {
|
26
|
+
constructor();
|
27
|
+
_exitHandlers: ExitHandler[];
|
28
|
+
injectExitHandlers(hdls: ExitHandler[]): void;
|
29
|
+
invoked: boolean;
|
30
|
+
readonly _handleExit: () => Promise<void>;
|
31
|
+
exit(code: number): void;
|
32
|
+
}
|
33
|
+
declare class DenoSystemService implements SystemService {
|
34
|
+
static readonly _exitHandlers: ExitHandler[];
|
35
|
+
readonly _exitService: ExitService;
|
36
|
+
constructor();
|
37
|
+
Env(): Env;
|
38
|
+
Args(): string[];
|
39
|
+
OnExit(hdl: VoidFunc): VoidFunc;
|
40
|
+
Exit(code: number): void;
|
41
|
+
}
|
42
|
+
declare function DenoSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
|
43
|
+
|
44
|
+
declare class DenoFileService implements FileService {
|
45
|
+
readonly baseDir: string;
|
46
|
+
readonly txtEnde: TxtEnDecoder;
|
47
|
+
constructor(baseDir?: string, txtEnde?: TxtEnDecoder);
|
48
|
+
readFileString(fname: string): Promise<string>;
|
49
|
+
dirname(fname: string): string;
|
50
|
+
basename(fname: string): string;
|
51
|
+
join(...paths: string[]): string;
|
52
|
+
relative(from: string, to?: string): string;
|
53
|
+
abs(fname: string): string;
|
54
|
+
isAbsolute(fname: string): boolean;
|
55
|
+
writeFileString(fname: string, content: string, ende?: TxtEnDecoder): Promise<void>;
|
56
|
+
create(fname: string): Promise<NamedWritableStream>;
|
57
|
+
}
|
58
|
+
|
59
|
+
export { DenoEnvActions, DenoExitServiceImpl, DenoFileService, DenoSysAbstraction, DenoSystemService };
|
package/deno/index.js
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
import {
|
2
|
+
DenoEnvActions,
|
3
|
+
DenoExitServiceImpl,
|
4
|
+
DenoFileService,
|
5
|
+
DenoSysAbstraction,
|
6
|
+
DenoSystemService
|
7
|
+
} from "../chunk-DZPKZQIT.js";
|
8
|
+
import "../chunk-PPS4L4VW.js";
|
9
|
+
export {
|
10
|
+
DenoEnvActions,
|
11
|
+
DenoExitServiceImpl,
|
12
|
+
DenoFileService,
|
13
|
+
DenoSysAbstraction,
|
14
|
+
DenoSystemService
|
15
|
+
};
|
16
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
@@ -0,0 +1,318 @@
|
|
1
|
+
import { T as TxtEnDecoder } from './txt-en-decoder-CZYJUju2.cjs';
|
2
|
+
import { d as SysAbstraction } from './sys-abstraction-GNnBj2sz.cjs';
|
3
|
+
|
4
|
+
declare abstract class Option<T> {
|
5
|
+
static Some<T>(t: T): Option<T>;
|
6
|
+
static None<T>(): Option<T>;
|
7
|
+
static Is<T>(t: unknown): t is Option<T>;
|
8
|
+
static From<T>(t?: T): Option<T>;
|
9
|
+
IsNone(): boolean;
|
10
|
+
IsSome(): boolean;
|
11
|
+
Unwrap(): T;
|
12
|
+
abstract is_none(): boolean;
|
13
|
+
abstract is_some(): boolean;
|
14
|
+
abstract unwrap(): T;
|
15
|
+
}
|
16
|
+
declare class Some<T> extends Option<T> {
|
17
|
+
private _t;
|
18
|
+
constructor(_t: T);
|
19
|
+
is_none(): boolean;
|
20
|
+
is_some(): boolean;
|
21
|
+
unwrap(): T;
|
22
|
+
}
|
23
|
+
declare class None<T> extends Option<T> {
|
24
|
+
is_none(): boolean;
|
25
|
+
is_some(): boolean;
|
26
|
+
unwrap(): T;
|
27
|
+
}
|
28
|
+
type WithoutOption<T> = T extends Option<infer U> ? U : T;
|
29
|
+
|
30
|
+
declare abstract class Result<T, E = Error> {
|
31
|
+
static Ok<T = void>(t: T): Result<T, Error>;
|
32
|
+
static Err<T, E extends Error = Error>(t: E | string | Result<unknown, E>): Result<T, E>;
|
33
|
+
static Is<T>(t: unknown): t is Result<T>;
|
34
|
+
isOk(): boolean;
|
35
|
+
isErr(): boolean;
|
36
|
+
Ok(): T;
|
37
|
+
Err(): E;
|
38
|
+
abstract is_ok(): boolean;
|
39
|
+
abstract is_err(): boolean;
|
40
|
+
abstract unwrap(): T;
|
41
|
+
abstract unwrap_err(): E;
|
42
|
+
}
|
43
|
+
declare class ResultOK<T> extends Result<T, Error> {
|
44
|
+
private _t;
|
45
|
+
constructor(t: T);
|
46
|
+
is_ok(): boolean;
|
47
|
+
is_err(): boolean;
|
48
|
+
unwrap_err(): Error;
|
49
|
+
unwrap(): T;
|
50
|
+
}
|
51
|
+
declare class ResultError<T extends Error> extends Result<never, T> {
|
52
|
+
private _error;
|
53
|
+
constructor(t: T);
|
54
|
+
is_ok(): boolean;
|
55
|
+
is_err(): boolean;
|
56
|
+
unwrap(): never;
|
57
|
+
unwrap_err(): T;
|
58
|
+
}
|
59
|
+
type WithoutResult<T> = T extends Result<infer U> ? U : T;
|
60
|
+
type WithResult<T> = T extends Promise<infer U> ? Promise<Result<U>> : Result<T>;
|
61
|
+
declare function exception2Result<FN extends () => Promise<T> | T, T>(fn: FN): WithResult<ReturnType<FN>>;
|
62
|
+
|
63
|
+
type StripCommand = string | RegExp;
|
64
|
+
|
65
|
+
type NullOrUndef = null | undefined;
|
66
|
+
type OneKey<K extends string, V = string> = Record<K, V>;
|
67
|
+
type MsgFn = (...keys: string[]) => string;
|
68
|
+
declare class _REQUIRED {
|
69
|
+
readonly val = "REQUIRED";
|
70
|
+
}
|
71
|
+
declare class _OPTIONAL {
|
72
|
+
readonly val = "OPTIONAL";
|
73
|
+
}
|
74
|
+
interface _key {
|
75
|
+
readonly REQUIRED: _REQUIRED;
|
76
|
+
readonly OPTIONAL: _OPTIONAL;
|
77
|
+
}
|
78
|
+
declare const key: _key;
|
79
|
+
type KeysParam = (string | MsgFn | Record<string, _REQUIRED | _OPTIONAL | unknown>)[];
|
80
|
+
interface URIInterface<R extends URIInterface<R>> {
|
81
|
+
readonly getParams: Iterable<[string, string]>;
|
82
|
+
hasParam(key: string): boolean;
|
83
|
+
getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined;
|
84
|
+
getParamResult(key: string, msgFn?: (key: string) => string): Result<string>;
|
85
|
+
getParamsResult(...keys: KeysParam): Result<Record<string, string>>;
|
86
|
+
clone(): R;
|
87
|
+
asURL(): URL;
|
88
|
+
toString(): string;
|
89
|
+
toJSON(): string;
|
90
|
+
asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject>;
|
91
|
+
}
|
92
|
+
interface URIObject {
|
93
|
+
readonly style: "host" | "path";
|
94
|
+
readonly protocol: string;
|
95
|
+
readonly pathname: string;
|
96
|
+
readonly searchParams: Record<string, string>;
|
97
|
+
}
|
98
|
+
interface PathURIObject extends URIObject {
|
99
|
+
readonly style: "path";
|
100
|
+
}
|
101
|
+
interface HostURIObject extends URIObject {
|
102
|
+
readonly style: "host";
|
103
|
+
readonly hostname: string;
|
104
|
+
readonly port: string;
|
105
|
+
}
|
106
|
+
declare function isURL(value: unknown): value is URL;
|
107
|
+
declare class MutableURL extends URL {
|
108
|
+
private readonly _sysURL;
|
109
|
+
private _protocol;
|
110
|
+
private _pathname;
|
111
|
+
private _hasHostpart;
|
112
|
+
readonly hash: string;
|
113
|
+
constructor(urlStr: string);
|
114
|
+
clone(): MutableURL;
|
115
|
+
get host(): string;
|
116
|
+
get port(): string;
|
117
|
+
set port(p: string);
|
118
|
+
get hostname(): string;
|
119
|
+
set hostname(h: string);
|
120
|
+
set pathname(p: string);
|
121
|
+
get pathname(): string;
|
122
|
+
get protocol(): string;
|
123
|
+
set protocol(p: string);
|
124
|
+
get searchParams(): URLSearchParams;
|
125
|
+
toString(): string;
|
126
|
+
}
|
127
|
+
declare class BuildURI implements URIInterface<BuildURI> {
|
128
|
+
_url: MutableURL;
|
129
|
+
private constructor();
|
130
|
+
static is(value: unknown): value is BuildURI;
|
131
|
+
static from(strURLUri?: CoerceURI, defaultProtocol?: string): BuildURI;
|
132
|
+
port(p: string): BuildURI;
|
133
|
+
hostname(h: string): BuildURI;
|
134
|
+
protocol(p: string): BuildURI;
|
135
|
+
pathname(p: string): BuildURI;
|
136
|
+
resolve(p: CoerceURI): BuildURI;
|
137
|
+
appendRelative(p: CoerceURI): BuildURI;
|
138
|
+
cleanParams(): BuildURI;
|
139
|
+
delParam(key: string): BuildURI;
|
140
|
+
defParam(key: string, str: string): BuildURI;
|
141
|
+
setParam(key: string, str: string): BuildURI;
|
142
|
+
hasParam(key: string): boolean;
|
143
|
+
get getParams(): Iterable<[string, string]>;
|
144
|
+
getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined;
|
145
|
+
getParamResult(key: string, msgFn?: (key: string) => string): Result<string>;
|
146
|
+
getParamsResult(...keys: KeysParam): Result<Record<string, string>>;
|
147
|
+
toString(): string;
|
148
|
+
toJSON(): string;
|
149
|
+
asURL(): URL;
|
150
|
+
asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject>;
|
151
|
+
clone(): BuildURI;
|
152
|
+
URI(): URI;
|
153
|
+
}
|
154
|
+
type CoerceURI = string | URI | MutableURL | URL | BuildURI | NullOrUndef;
|
155
|
+
declare const hasHostPartProtocols: Set<string>;
|
156
|
+
declare class URI implements URIInterface<URI> {
|
157
|
+
static protocolHasHostpart(protocol: string): () => void;
|
158
|
+
static merge(into: CoerceURI, from: CoerceURI, defaultProtocol?: string): URI;
|
159
|
+
static is(value: unknown): value is URI;
|
160
|
+
static from(strURLUri?: CoerceURI, defaultProtocol?: string): URI;
|
161
|
+
static fromResult(strURLUri?: CoerceURI, defaultProtocol?: string): Result<URI>;
|
162
|
+
readonly _url: MutableURL;
|
163
|
+
private constructor();
|
164
|
+
build(): BuildURI;
|
165
|
+
get hostname(): string;
|
166
|
+
get port(): string;
|
167
|
+
get host(): string;
|
168
|
+
get protocol(): string;
|
169
|
+
get pathname(): string;
|
170
|
+
get getParams(): Iterable<[string, string]>;
|
171
|
+
hasParam(key: string): boolean;
|
172
|
+
getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined;
|
173
|
+
getParamResult(key: string, msgFn?: (key: string) => string): Result<string>;
|
174
|
+
getParamsResult(...keys: KeysParam): Result<Record<string, string>>;
|
175
|
+
clone(): URI;
|
176
|
+
asURL(): URL;
|
177
|
+
toString(): string;
|
178
|
+
toJSON(): string;
|
179
|
+
asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject>;
|
180
|
+
}
|
181
|
+
|
182
|
+
declare enum Level {
|
183
|
+
WARN = "warn",
|
184
|
+
DEBUG = "debug",
|
185
|
+
INFO = "info",
|
186
|
+
ERROR = "error"
|
187
|
+
}
|
188
|
+
type Serialized = string | number | boolean;
|
189
|
+
type FnSerialized = () => Serialized | Serialized[];
|
190
|
+
declare class LogValue {
|
191
|
+
readonly fn: FnSerialized;
|
192
|
+
constructor(fn: FnSerialized);
|
193
|
+
value(): Serialized | Serialized[];
|
194
|
+
toJSON(): Serialized | Serialized[];
|
195
|
+
}
|
196
|
+
type LogSerializable = Record<string, LogValue | Promise<LogValue>>;
|
197
|
+
declare function asyncLogValue(val: () => Promise<Serialized>): Promise<LogValue>;
|
198
|
+
type LogValueArg = LogValue | Serialized | Serialized[] | FnSerialized | undefined | null;
|
199
|
+
interface LogValueState {
|
200
|
+
readonly state?: Set<unknown>;
|
201
|
+
readonly ignoreAttr: Option<RegExp>;
|
202
|
+
}
|
203
|
+
declare function logValue(val: LogValueArg, ctx: LogValueState): LogValue;
|
204
|
+
interface Sized {
|
205
|
+
size: number;
|
206
|
+
}
|
207
|
+
interface Lengthed {
|
208
|
+
length: number;
|
209
|
+
}
|
210
|
+
type SizeOrLength = Sized | Lengthed;
|
211
|
+
interface LogFormatter {
|
212
|
+
format(attr: LogSerializable): Uint8Array;
|
213
|
+
}
|
214
|
+
interface LevelHandler {
|
215
|
+
enableLevel(level: Level, ...modules: string[]): void;
|
216
|
+
disableLevel(level: Level, ...modules: string[]): void;
|
217
|
+
setExposeStack(enable?: boolean): void;
|
218
|
+
setIgnoreAttr(re?: RegExp): void;
|
219
|
+
ignoreAttr: Option<RegExp>;
|
220
|
+
isStackExposed: boolean;
|
221
|
+
setDebug(...modules: (string | string[])[]): void;
|
222
|
+
isEnabled(ilevel: unknown, module: unknown): boolean;
|
223
|
+
}
|
224
|
+
type HttpType = Response | Result<Response> | Request | Result<Request>;
|
225
|
+
interface LoggerInterface<R> {
|
226
|
+
readonly levelHandler: LevelHandler;
|
227
|
+
TxtEnDe(): TxtEnDecoder;
|
228
|
+
Module(key: string): R;
|
229
|
+
EnableLevel(level: Level, ...modules: string[]): R;
|
230
|
+
DisableLevel(level: Level, ...modules: string[]): R;
|
231
|
+
Attributes(): Record<string, unknown>;
|
232
|
+
SetDebug(...modules: (string | string[])[]): R;
|
233
|
+
SetIgnoreAttribute(re?: RegExp): R;
|
234
|
+
SetExposeStack(enable?: boolean): R;
|
235
|
+
SetFormatter(fmt: LogFormatter): R;
|
236
|
+
Ref(key: string, action: {
|
237
|
+
toString: () => string;
|
238
|
+
} | FnSerialized): R;
|
239
|
+
Result<T>(key: string, res: Result<T>): R;
|
240
|
+
Url(url: CoerceURI, key?: string): R;
|
241
|
+
Len(value: unknown, key?: string): R;
|
242
|
+
Hash(value: unknown, key?: string): R;
|
243
|
+
Str<T extends string | Record<string, string>>(key: T, value?: T extends string ? string : undefined): R;
|
244
|
+
Uint64<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;
|
245
|
+
Int<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;
|
246
|
+
Bool<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;
|
247
|
+
Any<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;
|
248
|
+
Http(...mix: (HttpType | string)[]): R;
|
249
|
+
Pair(x: Record<string, unknown>): R;
|
250
|
+
Error(): R;
|
251
|
+
Warn(): R;
|
252
|
+
Debug(): R;
|
253
|
+
Log(): R;
|
254
|
+
WithLevel(level: Level): R;
|
255
|
+
Err(err: unknown | Result<unknown> | Error): R;
|
256
|
+
Info(): R;
|
257
|
+
Timestamp(): R;
|
258
|
+
Dur(key: string, nsec: number): R;
|
259
|
+
}
|
260
|
+
declare function IsLogger(obj: unknown): obj is Logger;
|
261
|
+
interface WithLogger extends LoggerInterface<WithLogger> {
|
262
|
+
Logger(): Logger;
|
263
|
+
}
|
264
|
+
interface AsError {
|
265
|
+
AsError(): Error;
|
266
|
+
ResultError<T>(): Result<T>;
|
267
|
+
}
|
268
|
+
interface Logger extends LoggerInterface<Logger> {
|
269
|
+
With(): WithLogger;
|
270
|
+
Msg(...args: string[]): AsError;
|
271
|
+
Flush(): Promise<void>;
|
272
|
+
}
|
273
|
+
|
274
|
+
declare class Future<T> {
|
275
|
+
#private;
|
276
|
+
constructor();
|
277
|
+
asPromise(): Promise<T>;
|
278
|
+
resolve(value: T): void;
|
279
|
+
reject(reason: unknown): void;
|
280
|
+
}
|
281
|
+
|
282
|
+
declare class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
|
283
|
+
private readonly _bufferArr;
|
284
|
+
constructor(bufferArr: Uint8Array[]);
|
285
|
+
readonly _resolveClosed: Future<undefined>;
|
286
|
+
readonly closed: Promise<undefined>;
|
287
|
+
readonly desiredSize: number | null;
|
288
|
+
readonly ready: Promise<undefined>;
|
289
|
+
abort(reason?: any): Promise<void>;
|
290
|
+
close(): Promise<void>;
|
291
|
+
releaseLock(): void;
|
292
|
+
write(chunk?: Uint8Array): Promise<void>;
|
293
|
+
}
|
294
|
+
declare class LogCollector implements WritableStream<Uint8Array> {
|
295
|
+
readonly locked: boolean;
|
296
|
+
private _writer?;
|
297
|
+
private readonly _pass?;
|
298
|
+
private readonly _bufferArr;
|
299
|
+
private readonly _txtEnDe;
|
300
|
+
constructor(pass?: WritableStreamDefaultWriter<Uint8Array>, txtEnDe?: TxtEnDecoder);
|
301
|
+
abort(reason?: Uint8Array): Promise<void>;
|
302
|
+
close(): Promise<void>;
|
303
|
+
getWriter(): WritableStreamDefaultWriter<Uint8Array>;
|
304
|
+
Logs(notJsonLine?: boolean): any[];
|
305
|
+
}
|
306
|
+
|
307
|
+
interface MockLoggerReturn {
|
308
|
+
readonly logger: Logger;
|
309
|
+
readonly logCollector: LogCollector;
|
310
|
+
}
|
311
|
+
declare function MockLogger(params?: {
|
312
|
+
readonly sys?: SysAbstraction;
|
313
|
+
readonly pass?: WritableStreamDefaultWriter<Uint8Array>;
|
314
|
+
moduleName?: string | string[];
|
315
|
+
readonly disableDebug?: boolean;
|
316
|
+
}): MockLoggerReturn;
|
317
|
+
|
318
|
+
export { type AsError as A, type HostURIObject as B, type CoerceURI as C, isURL as D, MutableURL as E, type FnSerialized as F, BuildURI as G, type HttpType as H, IsLogger as I, hasHostPartProtocols as J, type KeysParam as K, type LogFormatter as L, type MockLoggerReturn as M, None as N, Option as O, type PathURIObject as P, URI as Q, Result as R, type Serialized as S, type URIInterface as U, type WithLogger as W, type LogSerializable as a, type LevelHandler as b, type Logger as c, Level as d, Future as e, LogValue as f, asyncLogValue as g, type LogValueArg as h, type LogValueState as i, type Sized as j, type Lengthed as k, logValue as l, type SizeOrLength as m, type LoggerInterface as n, LogWriteStream as o, LogCollector as p, MockLogger as q, ResultOK as r, ResultError as s, type WithoutResult as t, exception2Result as u, Some as v, type WithoutOption as w, type MsgFn as x, key as y, type URIObject as z };
|