@adviser/cement 0.4.0 → 0.4.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/cf/index.cjs.map +1 -1
- package/cf/index.js +2 -2
- package/{chunk-YVACAIUX.js → chunk-C5L2FW7O.js} +5 -4
- package/chunk-C5L2FW7O.js.map +1 -0
- package/{chunk-YKGCONBX.js → chunk-MBLJQD6G.js} +9 -2
- package/chunk-MBLJQD6G.js.map +1 -0
- package/{chunk-6F3ACVHD.js → chunk-S5OZRDIH.js} +6 -5
- package/chunk-S5OZRDIH.js.map +1 -0
- package/{chunk-X3IV2RYT.js → chunk-XJ3SFZPE.js} +2 -2
- package/deno/index.cjs.map +1 -1
- package/deno/index.js +2 -2
- package/index.cjs +100 -51
- package/index.cjs.map +1 -1
- package/index.d.cts +10 -1
- package/index.d.ts +10 -1
- package/index.js +44 -5
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/index.cjs.map +1 -1
- package/node/index.js +2 -2
- package/package.json +2 -2
- package/src/coerce-binary.ts +39 -0
- package/src/index.ts +2 -0
- package/src/is-promise.ts +15 -0
- package/src/jsr.json +1 -1
- package/src/logger-impl.ts +1 -1
- package/src/logger.ts +2 -1
- package/src/result.ts +3 -1
- package/src/tracer.ts +2 -1
- package/src/utils/stream-map.ts +3 -1
- package/test/index.cjs +55 -49
- package/test/index.cjs.map +1 -1
- package/test/index.js +3 -3
- package/ts/src/coerce-binary.d.ts +6 -0
- package/ts/src/coerce-binary.d.ts.map +1 -0
- package/ts/src/coerce-binary.js +32 -0
- package/ts/src/coerce-binary.js.map +1 -0
- package/ts/src/coerce-binary.test.d.ts +2 -0
- package/ts/src/coerce-binary.test.d.ts.map +1 -0
- package/ts/src/coerce-binary.test.js +39 -0
- package/ts/src/coerce-binary.test.js.map +1 -0
- package/ts/src/index.d.ts +2 -0
- package/ts/src/index.d.ts.map +1 -1
- package/ts/src/index.js +2 -0
- package/ts/src/index.js.map +1 -1
- package/ts/src/is-promise.d.ts +3 -0
- package/ts/src/is-promise.d.ts.map +1 -0
- package/ts/src/is-promise.js +10 -0
- package/ts/src/is-promise.js.map +1 -0
- package/ts/src/is-promise.test.d.ts +2 -0
- package/ts/src/is-promise.test.d.ts.map +1 -0
- package/ts/src/is-promise.test.js +48 -0
- package/ts/src/is-promise.test.js.map +1 -0
- package/ts/src/logger-impl.d.ts +1 -1
- package/ts/src/logger-impl.d.ts.map +1 -1
- package/ts/src/logger-impl.js +1 -1
- package/ts/src/logger-impl.js.map +1 -1
- package/ts/src/logger.d.ts.map +1 -1
- package/ts/src/logger.js +2 -1
- package/ts/src/logger.js.map +1 -1
- package/ts/src/result.d.ts.map +1 -1
- package/ts/src/result.js +2 -1
- package/ts/src/result.js.map +1 -1
- package/ts/src/tracer.d.ts.map +1 -1
- package/ts/src/tracer.js +2 -1
- package/ts/src/tracer.js.map +1 -1
- package/ts/src/utils/stream-map.d.ts.map +1 -1
- package/ts/src/utils/stream-map.js +2 -1
- package/ts/src/utils/stream-map.js.map +1 -1
- package/utils/index.cjs +7 -1
- package/utils/index.cjs.map +1 -1
- package/utils/index.js +2 -2
- package/web/index.cjs.map +1 -1
- package/web/index.js +2 -2
- package/chunk-6F3ACVHD.js.map +0 -1
- package/chunk-YKGCONBX.js.map +0 -1
- package/chunk-YVACAIUX.js.map +0 -1
- /package/{chunk-X3IV2RYT.js.map → chunk-XJ3SFZPE.js.map} +0 -0
package/index.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/logger-impl.ts","../../src/bin2text.ts","../../src/logger.ts","../../src/result.ts","../../src/types.ts","../../src/utils/get-params-result.ts","../../src/utils/relative-path.ts","../../src/utils/stripper.ts","../../src/uri.ts","../../src/log-writer-impl.ts","../../src/future.ts","../../src/lru-map-set.ts","../../src/resolve-once.ts","../../src/utils/coerce-uint8.ts","../../src/txt-en-decoder.ts","../../src/option.ts","../../src/log-level-impl.ts","../../src/runtime.ts","../../src/sys-abstraction.ts","../../src/time.ts","../../src/deno/deno-env-actions.ts","../../src/node/node-env-actions.ts","../../src/web/web-env-actions.ts","../../src/cf/cf-env-actions.ts","../../src/sys-env.ts","../../src/utils/console-write-stream.ts","../../src/web/web-basic-sys-abstraction.ts","../../src/cf/cf-basic-sys-abstraction.ts","../../src/deno/deno-basic-sys-abstraction.ts","../../src/node/node-basic-sys-abstraction.ts","../../src/base-sys-abstraction.ts","../../src/utils/fanout-write-stream.ts","../../src/test/log-write-stream.ts","../../src/test/mock-logger.ts","../../src/tracer.ts","../../src/crypto.ts","../../src/version.ts","../../src/http_header.ts","../../src/path-ops.ts","../../src/json-en-decoder.ts","../../src/utils/index.ts","../../src/utils/stream-map.ts","../../src/utils/rebuffer.ts","../../src/utils/stream2string.ts","../../src/utils/string2stream.ts","../../src/utils/sorted-object.ts","../../src/utils/uint8array-equal.ts"],"sourcesContent":["export * from \"./file-service.js\";\nexport * from \"./logger-impl.js\";\nexport * from \"./logger.js\";\nexport * from \"./sys-abstraction.js\";\nexport * from \"./sys-env.js\";\nexport * from \"./time.js\";\nexport * from \"./test/index.js\";\nexport * from \"./txt-en-decoder.js\";\nexport * from \"./log-level-impl.js\";\nexport * from \"./result.js\";\nexport * from \"./option.js\";\nexport * from \"./future.js\";\nexport * from \"./tracer.js\";\nexport * from \"./resolve-once.js\";\nexport * from \"./runtime.js\";\nexport * from \"./uri.js\";\nexport * from \"./crypto.js\";\nexport * from \"./base-sys-abstraction.js\";\nexport * from \"./bin2text.js\";\nexport * from \"./version.js\";\nexport * from \"./http_header.js\";\nexport * from \"./path-ops.js\";\nexport * from \"./json-en-decoder.js\";\nexport * from \"./types.js\";\nexport * from \"./lru-map-set.js\";\n\n// ugly\nexport * as utils from \"./utils/index.js\";\n// import * as utils from \"./utils/index.js\";\n\n// export const param = utils.param;\n","// import { v4 } from \"uuid\";\nimport YAML from \"yaml\";\nimport {\n AsError,\n FnSerialized,\n LogSerializable,\n Level,\n Logger,\n logValue,\n Serialized,\n WithLogger,\n // sanitizeSerialize,\n Sized,\n Lengthed,\n LogValue,\n LevelHandler,\n LogFormatter,\n LogValueArg,\n HttpType,\n LogValueState,\n} from \"./logger.js\";\nimport { BasicSysAbstraction } from \"./sys-abstraction.js\";\nimport { Result } from \"./result.js\";\nimport { CoerceURI, URI } from \"./uri.js\";\nimport { LogWriterStream } from \"./log-writer-impl.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\nimport { LevelHandlerSingleton } from \"./log-level-impl.js\";\nimport { BasicSysAbstractionFactory } from \"./base-sys-abstraction.js\";\n\nfunction getLen(value: unknown, lvs: LogValueState): LogValue {\n if (Array.isArray(value)) {\n return logValue(() => value.length, lvs);\n } else if (typeof value === \"string\") {\n return logValue(() => value.length, lvs);\n } else if (typeof value === \"object\" && value !== null) {\n if (typeof (value as Sized).size === \"number\") {\n return logValue(() => (value as Sized).size, lvs);\n } else if (typeof (value as Lengthed).length === \"number\") {\n return logValue(() => (value as Lengthed).length, lvs);\n }\n return logValue(() => Object.keys(value).length, lvs);\n }\n return logValue(() => -1, lvs);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction hash(value: unknown): string {\n // const hasher = createHash(\"sha256\");\n // hasher.update(JSON.stringify(value, removeSelfRef()));\n // return hasher.digest(\"hex\");\n return \"not implemented\";\n}\n\nfunction toLogValue(lop: LogValue | Promise<LogValue>): LogValue | undefined {\n if (lop && typeof (lop as Promise<LogValue>).then === \"function\") {\n throw new Error(\"async logValue Not implemented\");\n }\n return lop as LogValue;\n}\n\nexport class JSONFormatter implements LogFormatter {\n private readonly _txtEnDe: TxtEnDecoder;\n private readonly _space?: number;\n constructor(txtEnde: TxtEnDecoder, space?: number) {\n this._txtEnDe = txtEnde;\n this._space = space;\n }\n format(attr: LogSerializable): Uint8Array {\n let ret: string;\n try {\n ret = JSON.stringify(attr, null, this._space);\n } catch (e) {\n ret = JSON.stringify({ internal: { message: (e as Error).message, stack: (e as Error).stack } });\n }\n return this._txtEnDe.encode(ret + \"\\n\");\n }\n}\n\nexport class YAMLFormatter implements LogFormatter {\n private readonly _txtEnDe: TxtEnDecoder;\n private readonly _space?: number;\n constructor(txtEnde: TxtEnDecoder, space?: number) {\n this._txtEnDe = txtEnde;\n this._space = space;\n }\n format(attr: LogSerializable): Uint8Array {\n return this._txtEnDe.encode(\"---\\n\" + YAML.stringify(attr, null, this._space) + \"\\n\");\n }\n}\n\nexport interface LoggerImplParams {\n readonly out?: WritableStream<Uint8Array>;\n readonly logWriter?: LogWriterStream;\n readonly sys?: BasicSysAbstraction;\n readonly withAttributes?: LogSerializable;\n readonly levelHandler?: LevelHandler;\n readonly txtEnDe?: TxtEnDecoder;\n readonly formatter?: LogFormatter;\n}\n\nfunction toLogValueCtx(lvh: LevelHandler): LogValueState {\n return {\n ignoreAttr: lvh.ignoreAttr,\n };\n}\n\nexport class LoggerImpl implements Logger {\n readonly _sys: BasicSysAbstraction;\n readonly _attributes: LogSerializable = {};\n readonly _withAttributes: LogSerializable;\n readonly _logWriter: LogWriterStream;\n readonly levelHandler: LevelHandler;\n readonly _txtEnDe: TxtEnDecoder;\n _formatter: LogFormatter;\n // readonly _id: string = \"logger-\" + Math.random().toString(36)\n\n constructor(params?: LoggerImplParams) {\n if (!params) {\n params = {};\n }\n if (!params.sys) {\n this._sys = BasicSysAbstractionFactory();\n } else {\n this._sys = params.sys;\n }\n if (!params.txtEnDe) {\n this._txtEnDe = TxtEnDecoderSingleton();\n } else {\n this._txtEnDe = params.txtEnDe;\n }\n if (!params.formatter) {\n this._formatter = new JSONFormatter(this._txtEnDe);\n } else {\n this._formatter = params.formatter;\n }\n\n if (params.logWriter) {\n this._logWriter = params.logWriter;\n } else {\n if (!params.out) {\n // const rt = runtimeFn();\n // let stream: WritableStream<Uint8Array>;\n // if (rt.isBrowser) {\n // stream = new ConsoleWriterStream();\n // } else {\n // if (rt.isNodeIsh || rt.isReactNative || rt.isDeno || rt.isCFWorker) {\n // stream = this._sys.Stdout();\n // } else {\n // throw new Error(\"No output defined for runtime\");\n // }\n // }\n this._logWriter = new LogWriterStream(this._sys.Stdout());\n } else {\n this._logWriter = new LogWriterStream(params.out);\n }\n }\n if (!params.withAttributes) {\n this._withAttributes = {};\n } else {\n this._withAttributes = { ...params.withAttributes };\n }\n this._attributes = { ...this._withAttributes };\n if (params.levelHandler) {\n this.levelHandler = params.levelHandler;\n } else {\n this.levelHandler = LevelHandlerSingleton();\n }\n // console.log(\"LoggerImpl\", this._id, this._attributes, this._withAttributes)\n }\n\n TxtEnDe(): TxtEnDecoder {\n return this._txtEnDe;\n }\n\n Attributes(): Record<string, unknown> {\n return JSON.parse(JSON.stringify(this._attributes, null)) as Record<string, unknown>;\n // return Array.from(Object.entries(this._attributes)).reduce(\n // (acc, [key, value]) => {\n // if (value instanceof LogValue) {\n // acc[key] = value.value();\n // }\n // return acc;\n // },\n // {} as Record<string, unknown>,\n // );\n }\n\n SetExposeStack(enable?: boolean): Logger {\n this.levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): Logger {\n this.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): Logger {\n this.levelHandler.disableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): Logger {\n this._attributes[\"module\"] = logValue(key, toLogValueCtx(this.levelHandler));\n this._withAttributes[\"module\"] = logValue(key, toLogValueCtx(this.levelHandler));\n return this;\n }\n // if the string is \"*\" it will enable for all modules\n SetDebug(...modules: (string | string[])[]): Logger {\n this.levelHandler.setDebug(...modules);\n return this;\n }\n\n SetIgnoreAttribute(re?: RegExp): Logger {\n this.levelHandler.setIgnoreAttr(re);\n return this;\n }\n\n SetFormatter(formatter: LogFormatter): Logger {\n this._formatter = formatter;\n return this;\n }\n\n Timestamp(): Logger {\n this._attributes[\"ts\"] = logValue(() => this._sys.Time().Now().toISOString(), toLogValueCtx(this.levelHandler));\n return this;\n }\n Warn(): Logger {\n this._attributes[\"level\"] = logValue(Level.WARN, toLogValueCtx(this.levelHandler));\n return this;\n }\n Log(): Logger {\n return this;\n }\n Debug(): Logger {\n this._attributes[\"level\"] = logValue(Level.DEBUG, toLogValueCtx(this.levelHandler));\n return this;\n }\n Error(): Logger {\n this._attributes[\"level\"] = logValue(Level.ERROR, toLogValueCtx(this.levelHandler));\n return this;\n }\n Info(): Logger {\n this._attributes[\"level\"] = logValue(Level.INFO, toLogValueCtx(this.levelHandler));\n return this;\n }\n Err<T>(err: T | Result<T> | Error): Logger {\n let key = \"error\";\n if (Result.Is(err)) {\n if (err.isOk()) {\n key = \"noerror\";\n err = err.Ok();\n } else {\n err = err.Err();\n }\n }\n if (err instanceof Error) {\n if (err.cause) {\n this.coerceKey(key, {\n message: err.message,\n cause: err.cause,\n });\n } else {\n this._attributes[key] = logValue(err.message, toLogValueCtx(this.levelHandler));\n }\n if (this.levelHandler.isStackExposed) {\n this._attributes[\"stack\"] = logValue(\n err.stack?.split(/[\\r\\n]+/).map((s) => s.trim()),\n toLogValueCtx(this.levelHandler),\n );\n }\n } else {\n this.Any(key, err as LogSerializable);\n }\n return this;\n }\n WithLevel(l: Level): Logger {\n this._attributes[\"level\"] = logValue(l, toLogValueCtx(this.levelHandler));\n return this;\n }\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): Logger {\n if (typeof action === \"function\") {\n this._attributes[key] = logValue(action as FnSerialized, toLogValueCtx(this.levelHandler));\n } else if (typeof action.toString === \"function\") {\n this._attributes[key] = logValue(() => action.toString(), toLogValueCtx(this.levelHandler));\n } else {\n this._attributes[key] = logValue(\"INVALID REF\", toLogValueCtx(this.levelHandler));\n }\n return this;\n }\n Bool(key: string | Record<string, unknown>, value: unknown): Logger {\n this.coerceKey(key, !!value);\n // this._attributes[key] = logValue(!!value);\n return this;\n }\n\n Http(...mix: (HttpType | string)[]): Logger {\n const key: string | undefined = mix.find((x) => typeof x === \"string\");\n mix = mix.filter((x) => typeof x !== \"string\");\n const resErrors = mix.filter((x) => Result.Is(x) && x.isErr()) as Result<unknown, Error>[];\n if (resErrors.length) {\n this.Err(resErrors.map((x) => x.Err().message).join(\"\\n\"));\n return this;\n }\n const req = mix\n .map((reqOrResult) => (Result.Is(reqOrResult) ? reqOrResult.Ok() : reqOrResult))\n .find((req) => typeof (req as Response).status !== \"number\") as Request | undefined;\n const res = mix\n .map((resOrResult) => (Result.Is(resOrResult) ? resOrResult.Ok() : resOrResult))\n .find((res) => typeof (res as Response).status === \"number\") as Response | undefined;\n let reqAndOrres: { res: Response; req: Request } | Response | Request | undefined;\n if (res && req) {\n reqAndOrres = { res, req };\n } else if (!res && !req) {\n reqAndOrres = undefined;\n } else if (res) {\n reqAndOrres = res;\n } else if (req) {\n reqAndOrres = req;\n }\n if (reqAndOrres) {\n this.Any(key || \"Http\", reqAndOrres as unknown as LogSerializable);\n }\n return this;\n }\n Pair(x: Record<string, unknown>): Logger {\n for (const key of Object.keys(x)) {\n const value = x[key];\n if (value instanceof LogValue) {\n this._attributes[key] = value;\n continue;\n }\n if (Result.Is(value)) {\n this.Result(key, value);\n continue;\n }\n this.Any(key, value as LogSerializable);\n }\n return this;\n }\n\n Result<T>(key: string, res: Result<T, Error>): Logger {\n if (res.isOk()) {\n this._attributes[key] = logValue(res.Ok() as Serialized, toLogValueCtx(this.levelHandler));\n } else {\n this.Err(res.Err());\n }\n return this;\n }\n\n Len(value: unknown, key = \"len\"): Logger {\n this._attributes[key] = getLen(value, toLogValueCtx(this.levelHandler));\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Hash(value: unknown, key = \"hash\"): Logger {\n throw new Error(\"Not implemented\");\n // this._attributes[key] = asyncLogValue(\n // async () => `${getLen(value, toLogValueCtx(this.levelHandler)).value()}:${await hash(value)}`,\n // );\n // return this;\n }\n\n Url(url: CoerceURI, key = \"url\"): Logger {\n this.Ref(key, () => URI.from(url).toString());\n return this;\n }\n\n private coerceKey(key: string | Record<string, unknown>, value?: unknown): void {\n if (typeof key === \"string\") {\n this._attributes[key] = logValue(value as LogValueArg, toLogValueCtx(this.levelHandler));\n } else {\n this.Pair(key);\n }\n }\n\n Str(key: string | Record<string, string>, value?: string): Logger {\n this.coerceKey(key, value);\n return this;\n }\n\n Any(key: string | Record<string, unknown>, value?: unknown): Logger {\n this.coerceKey(key, value);\n //this._attributes[coerceKey(key)] = logValue(value as LogValueArg);\n return this;\n }\n Dur(key: string, nsec: number): Logger {\n this._attributes[key] = logValue(`${nsec}ms`, toLogValueCtx(this.levelHandler));\n // new Intl.DurationFormat(\"en\", { style: \"narrow\" }).format(nsec);\n return this;\n }\n Uint64(key: string | Record<string, number>, value?: number): Logger {\n this.coerceKey(key, value);\n //this._attributes[coerceKey(key)] = logValue(value);\n return this;\n }\n Int(key: string | Record<string, number>, value?: number): Logger {\n return this.Uint64(key, value);\n }\n\n async Flush(): Promise<void> {\n return new Promise((resolve) => {\n this._logWriter._flush(undefined, resolve);\n });\n }\n\n With(): WithLogger {\n // console.log(\"WithLoggerBuilder.With\", this._id, this._attributes, this._withAttributes);\n return new WithLoggerBuilder(\n new LoggerImpl({\n logWriter: this._logWriter,\n sys: this._sys,\n levelHandler: this.levelHandler,\n formatter: this._formatter,\n withAttributes: {\n module: this._attributes[\"module\"],\n ...this._withAttributes,\n },\n }),\n );\n }\n\n _resetAttributes(fn: () => () => Uint8Array): () => Uint8Array {\n const ret = fn();\n Object.keys(this._attributes).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n });\n Object.assign(this._attributes, this._withAttributes);\n return ret;\n }\n\n Msg(...args: string[]): AsError {\n const fnError = this._resetAttributes(() => {\n const doWrite = this.levelHandler.isEnabled(\n toLogValue(this._attributes[\"level\"])?.value(),\n toLogValue(this._attributes[\"module\"])?.value(),\n );\n this._attributes[\"msg\"] = logValue(args.join(\" \"), toLogValueCtx(this.levelHandler));\n const msg = this._attributes[\"msg\"].value();\n if (typeof msg === \"string\" && !msg.trim().length) {\n delete this._attributes[\"msg\"];\n }\n let fnRet = (): Uint8Array => this._formatter.format({ ...this._attributes });\n if (doWrite) {\n const encoded = fnRet();\n this._logWriter.write(encoded);\n fnRet = (): Uint8Array => encoded;\n }\n return fnRet;\n });\n const asError = (): Error => new Error(this._txtEnDe.decode(fnError()));\n return {\n ResultError: () => Result.Err(asError()),\n AsError: asError,\n };\n }\n}\n\nclass WithLoggerBuilder implements WithLogger {\n readonly _li: LoggerImpl;\n readonly levelHandler: LevelHandler;\n constructor(li: LoggerImpl) {\n this._li = li;\n this.levelHandler = li.levelHandler;\n }\n\n TxtEnDe(): TxtEnDecoder {\n return this._li.TxtEnDe();\n }\n\n Logger(): Logger {\n Object.assign(this._li._withAttributes, this._li._attributes);\n return this._li;\n }\n\n Attributes(): Record<string, unknown> {\n return { ...this._li._attributes };\n }\n\n SetExposeStack(enable?: boolean): WithLogger {\n this._li.levelHandler.setExposeStack(enable);\n return this;\n }\n\n SetIgnoreAttribute(re?: RegExp): WithLogger {\n this._li.levelHandler.setIgnoreAttr(re);\n return this;\n }\n\n SetFormatter(fmt: LogFormatter): WithLogger {\n this._li.SetFormatter(fmt);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): WithLogger {\n this._li.Module(key);\n return this;\n }\n SetDebug(...modules: (string | string[])[]): WithLogger {\n this._li.SetDebug(...modules);\n return this;\n }\n\n Http(...mix: (HttpType | string)[]): WithLogger {\n this._li.Http(...mix);\n return this;\n }\n Pair(x: Record<string, unknown>): WithLogger {\n this._li.Pair(x);\n return this;\n }\n\n Str(key: string | Record<string, string>, value?: string): WithLogger {\n this._li.Str(key, value);\n return this;\n }\n\n Len(value: unknown, key?: string): WithLogger {\n this._li.Len(value, key);\n return this;\n }\n\n Hash(value: unknown, key?: string): WithLogger {\n this._li.Hash(value, key);\n return this;\n }\n\n Ref(key: string, action: Serialized | FnSerialized): WithLogger {\n this._li.Ref(key, action);\n return this;\n }\n Bool(key: string | Record<string, unknown>, value?: unknown): WithLogger {\n this._li.Bool(key, value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): WithLogger {\n this._li.Result(key, res);\n return this;\n }\n Url(url: CoerceURI, key?: string): WithLogger {\n this._li.Url(url, key);\n return this;\n }\n Int(key: string | Record<string, number>, value?: number): WithLogger {\n this._li.Int(key, value);\n return this;\n }\n\n Log(): WithLogger {\n this._li.Log();\n return this;\n }\n\n WithLevel(level: Level): WithLogger {\n this._li.WithLevel(level);\n return this;\n }\n\n Error(): WithLogger {\n this._li.Error();\n return this;\n }\n Warn(): WithLogger {\n this._li.Error();\n return this;\n }\n Debug(): WithLogger {\n this._li.Debug();\n return this;\n }\n Err(err: unknown): WithLogger {\n this._li.Err(err);\n return this;\n }\n Info(): WithLogger {\n this._li.Info();\n return this;\n }\n Timestamp(): WithLogger {\n this._li.Timestamp();\n return this;\n }\n Any<T>(key: string | Record<string, unknown>, value?: T | LogSerializable): WithLogger {\n this._li.Any(key, value);\n return this;\n }\n Dur(key: string, nsec: number): WithLogger {\n this._li.Dur(key, nsec);\n return this;\n }\n Uint64(key: string | Record<string, number>, value?: number): WithLogger {\n this._li.Uint64(key, value);\n return this;\n }\n}\n","export function bin2text(hex: ArrayBufferView, lineFn: (line: string) => void, size = 0): void {\n const arr = new Uint8Array(hex.buffer, hex.byteOffset, hex.byteLength);\n let cutted = \" \";\n if (size == 0) {\n size = arr.length;\n }\n size = Math.min(size, arr.length);\n const cols = 16;\n for (let line = 0; line < size; line += cols) {\n if (line + cols <= size || arr.length == size) {\n // normal line\n } else {\n line = arr.length - (arr.length % cols);\n size = arr.length;\n cutted = \">>\";\n }\n const l: string[] = [line.toString(16).padStart(4, \"0\"), cutted];\n for (let col = 0; col < cols; col++) {\n if (line + col < size) {\n l.push(arr[line + col].toString(16).padStart(2, \"0\"));\n } else {\n l.push(\" \");\n }\n // l.push((col > 0 && col % 4 === 3) ? \" \" : \" \");\n l.push(\" \");\n }\n for (let col = 0; col < cols; col++) {\n if (line + col < size) {\n const ch = arr[line + col];\n l.push(ch >= 32 && ch < 127 ? String.fromCharCode(ch) : \".\");\n }\n }\n lineFn(l.join(\"\"));\n }\n}\n\nexport function bin2string(hex: ArrayBufferView, size = 0): string {\n const collector: string[] = [];\n bin2text(\n hex,\n (line) => {\n collector.push(line);\n },\n size,\n );\n return collector.join(\"\\n\");\n}\n","import { bin2string } from \"./bin2text.js\";\nimport { Option } from \"./option.js\";\nimport { Result } from \"./result.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\nimport { CoerceURI } from \"./uri.js\";\n\nexport const Level = {\n WARN: \"warn\",\n DEBUG: \"debug\",\n INFO: \"info\",\n ERROR: \"error\",\n};\n\nexport type Level = (typeof Level)[keyof typeof Level];\n\nexport type Serialized = string | number | boolean;\nexport type FnSerialized = () => Serialized | Serialized[];\n\nexport class LogValue {\n constructor(readonly fn: FnSerialized) {}\n value(): Serialized | Serialized[] {\n try {\n // console.log(\"LogValue.value\", this.fn.toString());\n return this.fn();\n } catch (e) {\n return `LogValue:${(e as Error).message}`;\n }\n }\n toJSON(): Serialized | Serialized[] {\n return this.value();\n }\n}\n\nexport type LogSerializable = Record<string, LogValue | Promise<LogValue>>;\n\n// export function sanitizeSerialize(lineEnd?: string): (key: unknown, val: unknown) => unknown {\n// const cache = new Set();\n// return function (this: unknown, key: unknown, value: unknown) {\n// if (typeof value === \"object\" && value !== null) {\n// // Duplicate reference found, discard key\n// if (cache.has(value)) return \"...\";\n// cache.add(value);\n// }\n// return lineEnd ? value + lineEnd : value;\n// };\n// }\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function asyncLogValue(val: () => Promise<Serialized>): Promise<LogValue> {\n // return Promise.resolve(logValue(val));\n throw new Error(\"Not implemented\");\n}\n\nexport type LogValueArg = LogValue | Serialized | Serialized[] | FnSerialized | undefined | null;\n\nexport interface LogValueState {\n readonly state?: Set<unknown>;\n readonly ignoreAttr: Option<RegExp>;\n}\n\nexport function logValue(val: LogValueArg, ctx: LogValueState): LogValue {\n return logValueInternal(val, {\n ...ctx,\n state: ctx.state || new Set<unknown>([Math.random()]),\n });\n}\n\ntype LogValueStateInternal = LogValueState & { readonly state: Set<unknown> };\n\nfunction logValueInternal(val: LogValueArg, ctx: LogValueStateInternal): LogValue {\n ctx = {\n ...ctx,\n state: ctx.state || new Set<unknown>([Math.random()]),\n } satisfies LogValueStateInternal;\n switch (typeof val) {\n case \"function\":\n return new LogValue(val);\n case \"string\": {\n try {\n const ret = JSON.parse(val) as LogValueArg;\n if (typeof ret === \"object\" && ret !== null) {\n return logValueInternal(ret, ctx);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n try {\n const url = new URL(val);\n return new LogValue(() => url.toString());\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // ignore\n }\n }\n if (val.match(/[\\n\\r]/)) {\n const lines = val.split(/[\\n\\r]+/).map((v) => v.trim());\n return new LogValue(() => lines);\n }\n return new LogValue(() => val.toString());\n }\n case \"number\":\n return new LogValue(() => val);\n case \"boolean\":\n return new LogValue(() => val);\n case \"object\": {\n if (val === null) {\n return new LogValue(() => \"null\");\n }\n if (ArrayBuffer.isView(val)) {\n try {\n // should be injected\n const decoder = new TextDecoder();\n const asStr = decoder.decode(val);\n const obj = JSON.parse(asStr) as LogValueArg;\n return logValueInternal(obj, ctx);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return logValueInternal(bin2string(val, 512), ctx);\n }\n }\n if (Array.isArray(val)) {\n return new LogValue(() =>\n (val as Serialized[]).map((v) => logValue(v, { ...ctx, state: undefined }).value() as Serialized),\n );\n }\n // if (val instanceof Response) {\n // // my = my.clone() as unknown as LogValue | Serialized[] | null\n // // const rval = my as unknown as Partial<Response>;\n // // delete rval.clone\n // // delete rval.blob\n // }\n if (val instanceof Headers) {\n return new LogValue(() => Object.fromEntries(val.entries()) as unknown as Serialized);\n }\n if (val instanceof ReadableStream) {\n return new LogValue(() => \">Stream<\");\n }\n if (val instanceof Promise) {\n return new LogValue(() => \">Promise<\");\n }\n\n // Duplicate reference found, discard key\n if (ctx.state?.has(val)) {\n return new LogValue(() => \"...\");\n }\n ctx.state?.add(val);\n if (typeof val.toJSON === \"function\") {\n return new LogValue(() => val.toJSON());\n }\n\n const res: Record<string, LogValue> = {};\n const typedVal = val as unknown as Record<string, LogValueArg>;\n for (const key in typedVal) {\n if (ctx.ignoreAttr.IsSome() && ctx.ignoreAttr.unwrap().test(key)) {\n continue;\n }\n const element = typedVal[key];\n if (element instanceof LogValue) {\n res[key] = element;\n } else {\n if (typeof element !== \"function\") {\n res[key] = logValueInternal(element, ctx);\n }\n }\n }\n // ugly as hell cast but how declare a self-referencing type?\n return new LogValue(() => res as unknown as Serialized);\n }\n default:\n if (!val) {\n return new LogValue(() => \"--Falsy--\");\n }\n throw new Error(`Invalid type:${typeof val}`);\n }\n}\n\nexport interface Sized {\n size: number;\n}\nexport interface Lengthed {\n length: number;\n}\nexport type SizeOrLength = Sized | Lengthed;\n\nexport interface LogFormatter {\n format(attr: LogSerializable): Uint8Array;\n}\n\nexport interface LevelHandler {\n enableLevel(level: Level, ...modules: string[]): void;\n disableLevel(level: Level, ...modules: string[]): void;\n setExposeStack(enable?: boolean): void;\n setIgnoreAttr(re?: RegExp): void;\n ignoreAttr: Option<RegExp>;\n isStackExposed: boolean;\n setDebug(...modules: (string | string[])[]): void;\n isEnabled(ilevel: unknown, module: unknown): boolean;\n}\n\nexport type HttpType = Response | Result<Response> | Request | Result<Request>;\n\nexport interface LoggerInterface<R> {\n readonly levelHandler: LevelHandler;\n TxtEnDe(): TxtEnDecoder;\n Module(key: string): R;\n // if modules is empty, set for all Levels\n EnableLevel(level: Level, ...modules: string[]): R;\n DisableLevel(level: Level, ...modules: string[]): R;\n\n Attributes(): Record<string, unknown>;\n\n SetDebug(...modules: (string | string[])[]): R;\n // default is /^_/\n SetIgnoreAttribute(re?: RegExp): R;\n SetExposeStack(enable?: boolean): R;\n SetFormatter(fmt: LogFormatter): R;\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): R;\n Result<T>(key: string, res: Result<T>): R;\n // default key url\n Url(url: CoerceURI, key?: string): R;\n // len\n Len(value: unknown, key?: string): R;\n\n Hash(value: unknown, key?: string): R;\n\n Str<T extends string | Record<string, string>>(key: T, value?: T extends string ? string : undefined): R;\n Uint64<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;\n Int<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;\n Bool<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;\n Any<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;\n\n // first string is the key\n // first response is Response\n // first request is Request\n Http(...mix: (HttpType | string)[]): R;\n Pair(x: Record<string, unknown>): R;\n\n Error(): R;\n Warn(): R;\n Debug(): R;\n Log(): R;\n WithLevel(level: Level): R;\n\n Err<T>(err: T | Result<T> | Error): R; // could be Error, or something which coerces to string\n Info(): R;\n Timestamp(): R;\n Dur(key: string, nsec: number): R;\n}\n\nexport function IsLogger(obj: unknown): obj is Logger {\n return (\n typeof obj === \"object\" &&\n [\n \"Module\",\n \"EnableLevel\",\n \"DisableLevel\",\n \"SetDebug\",\n \"Str\",\n \"Error\",\n \"Warn\",\n \"Debug\",\n \"Log\",\n \"WithLevel\",\n \"Err\",\n \"Info\",\n \"Timestamp\",\n \"Any\",\n \"Dur\",\n \"Uint64\",\n ]\n .map((fn) => typeof (obj as Record<string, unknown>)[fn] === \"function\")\n .reduce((a, b) => a && b, true)\n );\n}\n\nexport interface WithLogger extends LoggerInterface<WithLogger> {\n Logger(): Logger;\n}\n\nexport interface AsError {\n AsError(): Error;\n ResultError<T>(): Result<T>;\n}\n\nexport interface Logger extends LoggerInterface<Logger> {\n With(): WithLogger;\n\n Msg(...args: string[]): AsError;\n Flush(): Promise<void>;\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T = void>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T, E extends Error = Error>(t: E | string | Result<unknown, E>): Result<T, E> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as E);\n }\n if (Result.Is(t)) {\n if (t.is_ok()) {\n return new ResultError(new Error(\"Result Error is Ok\") as E);\n }\n return t as Result<T, E>;\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n// type WithoutPromise<T> = T extends Promise<infer U> ? U : T;\ntype WithResult<T> = T extends Promise<infer U> ? Promise<Result<U>> : Result<T>;\n\nexport function exception2Result<FN extends () => Promise<T> | T, T>(fn: FN): WithResult<ReturnType<FN>> {\n try {\n const res = fn();\n if (res instanceof Promise) {\n return res.then((value) => Result.Ok(value)).catch((e) => Result.Err(e)) as WithResult<ReturnType<FN>>;\n }\n return Result.Ok(res) as WithResult<ReturnType<FN>>;\n } catch (e) {\n return Result.Err(e as Error) as WithResult<ReturnType<FN>>;\n }\n}\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","interface IType {\n readonly type: string;\n}\nclass _Required implements IType {\n readonly type = \"REQUIRED\";\n}\n\nclass _Optional implements IType {\n readonly type = \"OPTIONAL\";\n}\n\nexport const param: {\n REQUIRED: _Required;\n OPTIONAL: _Optional;\n} = {\n REQUIRED: new _Required(),\n OPTIONAL: new _Optional(),\n};\nexport type param = (typeof param)[keyof typeof param];\n","import { Result } from \"../result.js\";\nimport { param } from \"../types.js\";\n\nexport type MsgFn = (...keys: string[]) => string;\nexport type KeysParam = (string | MsgFn | Record<string, param | number | string | boolean | undefined | null>)[];\n\nexport function getParamsResult(\n keys: KeysParam,\n getParam: { getParam: (key: string) => string | undefined },\n): Result<Record<string, string>> {\n const keyDef = keys.flat().reduce(\n (acc, i) => {\n if (typeof i === \"string\") {\n acc.push({ key: i, def: undefined, isOptional: false });\n } else if (typeof i === \"object\") {\n acc.push(\n ...Object.keys(i).map((k) => ({\n key: k,\n def: typeof i[k] === \"string\" ? i[k] : undefined,\n isOptional: i[k] === param.OPTIONAL,\n })),\n );\n }\n return acc;\n },\n [] as { key: string; def?: string; isOptional: boolean }[],\n );\n //.filter((k) => typeof k === \"string\");\n const msgFn =\n keys.find((k) => typeof k === \"function\") ||\n ((...keys: string[]): string => {\n const msg = keys.join(\",\");\n return `missing parameters: ${msg}`;\n });\n const errors: string[] = [];\n const result: Record<string, string> = {};\n for (const kd of keyDef) {\n const val = getParam.getParam(kd.key);\n if (val === undefined) {\n if (typeof kd.def === \"string\") {\n result[kd.key] = kd.def;\n } else {\n if (!kd.isOptional) {\n errors.push(kd.key);\n }\n }\n } else {\n result[kd.key] = val;\n }\n }\n if (errors.length) {\n return Result.Err(msgFn(...errors));\n }\n return Result.Ok(result);\n}\n","export const PartType = {\n Slash: 0x1,\n Root: 0x3,\n Up: 0x4 /* /../ */,\n Noop: 0x8 /* ./ */,\n // RootUp = 0x8 /* ../ */,\n};\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport type PathItem = string | PartType;\n\nexport class Path {\n readonly parts: PathItem[];\n constructor(parts: PathItem[] = []) {\n this.parts = parts;\n }\n\n toString(): string {\n return this.parts\n .map((part) => {\n if (typeof part === \"string\") {\n return part;\n } else {\n switch (part) {\n case PartType.Slash:\n case PartType.Root:\n return \"/\";\n case PartType.Up:\n return \"..\";\n default:\n return part;\n }\n }\n })\n .join(\"\");\n }\n\n add(part: PathItem): void {\n if (this.parts.includes(PartType.Root) && part === PartType.Root) {\n throw new Error(\"Cannot add absolute part to absolute path\");\n }\n const last = this.parts[this.parts.length - 1] as PartType;\n if (last & PartType.Slash && part === PartType.Slash) {\n return;\n }\n switch (part) {\n case \".\":\n this.parts.push(PartType.Noop);\n return;\n case \"..\":\n part = PartType.Up;\n }\n\n // if (part === PartType.Up && last === PartType.Slash) {\n // this.parts[this.parts.length - 1] = PartType.Up\n // return\n // }\n if (last === PartType.Noop && part === PartType.Slash) {\n if (last === PartType.Noop) {\n this.parts.pop();\n }\n return;\n }\n this.parts.push(part);\n }\n}\n\nexport function splitPath(path: string): Path {\n const p = new Path();\n if (path === \"\") {\n return p;\n }\n for (let count = 0; path.length; count++) {\n // const ipath = path\n if (path.match(/^\\/+/)) {\n if (count === 0) {\n p.add(PartType.Root);\n } else {\n p.add(PartType.Slash);\n }\n path = path.replace(/^\\/+/, \"\");\n } else {\n const part = path.replace(/\\/.*$/, \"\");\n p.add(part);\n path = path.replace(/^[^/]+/, \"\");\n }\n }\n return p;\n}\n\nexport function pathJoin(...paths: string[]): string {\n let prev = \"\";\n const res: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n if (path === \"\") {\n continue;\n }\n // i + 1 !== paths.length &&\n if (!(prev.endsWith(\"/\") || path.startsWith(\"/\"))) {\n if (prev !== \"\") {\n res.push(\"/\");\n }\n res.push(path);\n } else {\n res.push(path);\n }\n prev = path;\n }\n return res.join(\"\");\n}\n\nexport function relativePath(path: string, relative: string): string {\n const relativeParts = splitPath(relative);\n let result: string;\n if (relativeParts.parts[0] === PartType.Root) {\n result = relative;\n } else {\n result = pathJoin(path, relative);\n }\n const unoptPath = splitPath(result);\n // console.log(\"What\", result, unoptPath.parts)\n const out: PathItem[] = [];\n let topUp = false;\n for (const part of unoptPath.parts) {\n switch (part) {\n case PartType.Root:\n out.push(PartType.Root);\n break;\n case PartType.Up:\n if (out.length && !topUp) {\n const last = out.length - 1;\n if (typeof out[last] === \"string\" && (out[last - 1] as PartType) == PartType.Root) {\n out.pop();\n } else {\n out.pop();\n out.pop();\n }\n if (out.length === 0) {\n topUp = !topUp ? true : topUp;\n out.push(PartType.Up);\n }\n } else {\n out.push(PartType.Up);\n }\n break;\n case PartType.Slash:\n if (!((out[out.length - 1] as PartType) & PartType.Slash)) {\n out.push(PartType.Slash);\n }\n break;\n default:\n out.push(part);\n break;\n }\n }\n return new Path(out).toString();\n // return pathParts\n // .filter((part, index) => part !== relativeParts[index])\n // .join(\"\")\n}\n","export type StripCommand = string | RegExp;\n\nexport function stripper<T extends ArrayLike<S> | S, S>(\n strip: StripCommand | StripCommand[],\n obj: T,\n): T extends ArrayLike<unknown> ? Record<string, unknown>[] : Record<string, unknown> {\n const strips = Array.isArray(strip) ? strip : [strip];\n const restrips = strips.map((s) => {\n if (typeof s === \"string\") {\n const escaped = s.replace(/[-\\\\[\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\^\\\\$\\\\|]/g, \"\\\\$&\");\n return new RegExp(`^${escaped}$`);\n }\n return s;\n });\n return localStripper(undefined, restrips, obj) as T extends ArrayLike<unknown>\n ? Record<string, unknown>[]\n : Record<string, unknown>;\n}\n\nfunction localStripper<T>(path: string | undefined, restrips: RegExp[], obj: T): unknown {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((i) => localStripper(path, restrips, i));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ret = { ...obj } as Record<string, any>;\n const matcher = (key: string, nextPath: string): boolean => {\n for (const re of restrips) {\n if (re.test(key) || re.test(nextPath)) {\n return true;\n }\n }\n return false;\n };\n for (const key in ret) {\n if (Object.prototype.hasOwnProperty.call(ret, key)) {\n let nextPath: string;\n if (path) {\n nextPath = [path, key].join(\".\");\n } else {\n nextPath = key;\n }\n if (matcher(key, nextPath)) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete ret[key];\n continue;\n }\n if (typeof ret[key] === \"object\") {\n if (Array.isArray(ret[key])) {\n ret[key] = ret[key].reduce((acc: unknown[], v, i) => {\n const toDelete = matcher(key, `${nextPath}[${i}]`);\n if (!toDelete) {\n acc.push(localStripper(`${nextPath}[${i}]`, restrips, v));\n }\n return acc;\n }, []);\n } else {\n ret[key] = localStripper(nextPath, restrips, ret[key]);\n }\n }\n }\n }\n return ret;\n}\n","import type { DeepWritable } from \"ts-essentials\";\nimport { exception2Result, Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\nimport { relativePath } from \"./utils/relative-path.js\";\nimport { StripCommand, stripper } from \"./utils/stripper.js\";\n// import { param } from \"./types.js\";\n\ntype NullOrUndef = null | undefined;\n\ntype OneKey<K extends string, V = string> = Record<K, V>;\n\n/** @xdeprecated use param from get-params-result */\n// export const key = param;\n\n/*\n if KeyParam is a Object\n if the right side is a string, it is the default value\n if the right side is a !string | REQUIRED, it is required\n*/\n\n// type ReturnType<T extends (...args: KeysParam) => unknown> = T extends (...args: KeysParam) => infer R ? R : unknown;\n\n// function fetchData<T extends (...args: any[]) => Promise<any>>(fn: T): ReturnType<T> {\n// return fn();\n// }\n// type ReturnObject<T extends KeysParam> = {\n// [K in keyof T]: string;\n// };\n\nexport interface URIInterface<R extends URIInterface<R>> {\n // readonly hostname: string;\n // readonly port: string;\n // readonly host: string;\n // readonly protocol: string;\n // readonly pathname: string;\n readonly getParams: Iterable<[string, string]>;\n\n hasParam(key: string): boolean;\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined;\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string>;\n getParamsResult(...keys: KeysParam): Result<Record<string, string>>;\n match(other: CoerceURI): MatchResult;\n clone(): R;\n asURL(): URL;\n toString(): string;\n toJSON(): string;\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject>;\n}\n\nexport interface MatchResult {\n readonly score: number;\n readonly protocol: boolean;\n readonly hostname: boolean;\n readonly port: boolean;\n readonly pathname: boolean;\n readonly pathParts: string[];\n readonly params: Record<string, string>;\n}\n\nfunction match(iref: CoerceURI, ioth: CoerceURI): MatchResult {\n const mr: DeepWritable<MatchResult> = {\n score: 0,\n protocol: false,\n hostname: false,\n port: false,\n pathname: false,\n pathParts: [],\n params: {},\n };\n const ref = URI.from(iref);\n const oth = URI.from(ioth);\n if (ref.protocol === oth.protocol) {\n mr.score += 1;\n mr.protocol = true;\n }\n try {\n const refH = ref.hostname;\n const refP = ref.port;\n if (refH === oth.hostname) {\n mr.score += 1;\n mr.hostname = true;\n }\n if (refP.length && refP === oth.port) {\n mr.score += 1;\n mr.port = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // ignore\n }\n if (ref.pathname.length && ref.pathname !== \"/\") {\n const pref = ref.pathname.split(\"/\").filter((p) => p.length);\n const poth = oth.pathname.split(\"/\").filter((p) => p.length);\n for (let i = 0; i < pref.length && i < poth.length; i++) {\n if (poth[i] === pref[i]) {\n mr.score += 1;\n mr.pathname = true;\n mr.pathParts.push(pref[i]);\n }\n }\n }\n for (const [key, value] of ref.getParams) {\n if (oth.getParam(key) === value) {\n mr.score += 1;\n mr.params[key] = value;\n }\n }\n return mr;\n}\n\nfunction coerceKey(key: string | OneKey<string>, def?: string): { key: string; def?: string } {\n if (typeof key === \"object\") {\n const keys = Object.keys(key);\n if (keys.length !== 1) {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n return { key: keys[0], def: key[keys[0]] };\n }\n return { key, def: def };\n}\n\nexport interface URIObject {\n readonly style: \"host\" | \"path\";\n readonly protocol: string;\n readonly pathname: string;\n readonly searchParams: Record<string, string>;\n}\n\nexport interface PathURIObject extends URIObject {\n readonly style: \"path\";\n}\n\nexport interface HostURIObject extends URIObject {\n readonly style: \"host\";\n readonly hostname: string;\n readonly port: string;\n}\n\nfunction falsy2undef<T>(value: T | NullOrUndef): T | undefined {\n return value === undefined || value === null ? undefined : value;\n}\n\nfunction ensureURLWithDefaultProto(url: string | URL, defaultProtocol: string): MutableURL {\n if (!url) {\n return new MutableURL(`${defaultProtocol}//`);\n }\n if (typeof url === \"string\") {\n try {\n return new MutableURL(url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return new MutableURL(`${defaultProtocol}//${url}`);\n }\n } else {\n return new MutableURL(url.toString());\n }\n}\n\nexport function isURL(value: unknown): value is URL {\n return (\n value instanceof URL ||\n (!!value &&\n typeof (value as URL).searchParams === \"object\" &&\n typeof (value as URL).searchParams.sort === \"function\" &&\n typeof (value as URL).hash === \"string\")\n );\n}\n\n// due to that the System URL class is has a strange behavior\n// on different platforms, we need to implement our own URL class\nexport class MutableURL extends URL {\n private readonly _sysURL: URL;\n // private readonly _urlStr: string;\n\n private _protocol: string;\n private _pathname: string;\n private _hasHostpart: boolean;\n\n override readonly hash: string;\n\n constructor(urlStr: string) {\n super(\"defect://does.not.exist\");\n const partedURL = urlStr.split(\":\");\n this._hasHostpart = hasHostPartProtocols.has(partedURL[0]);\n let hostPartUrl = [\"http\", ...partedURL.slice(1)].join(\":\");\n if (!this._hasHostpart) {\n const pathname = hostPartUrl.replace(/http:\\/\\/[/]*/, \"\").replace(/[#?].*$/, \"\");\n hostPartUrl = hostPartUrl.replace(/http:\\/\\//, `http://localhost/${pathname}`);\n }\n try {\n this._sysURL = new URL(hostPartUrl);\n } catch (ie) {\n const e = ie as Error;\n e.message = `${e.message} for URL: ${urlStr}`;\n throw e;\n }\n this._protocol = `${partedURL[0]}:`; // this._sysURL.protocol.replace(new RegExp(\"^cement-\"), \"\");\n if (this._hasHostpart) {\n this._pathname = this._sysURL.pathname;\n } else {\n this._pathname = urlStr.replace(new RegExp(`^${this._protocol}//`), \"\").replace(/[#?].*$/, \"\");\n }\n this.hash = this._sysURL.hash;\n }\n\n clone(): MutableURL {\n return new MutableURL(this.toString());\n }\n\n override get host(): string {\n if (!this._hasHostpart) {\n throw new Error(\n `you can use hostname only if protocol is ${this.toString()} ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`,\n );\n }\n return this._sysURL.host;\n }\n\n override get port(): string {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n return this._sysURL.port;\n }\n\n override set port(p: string) {\n if (!this._hasHostpart) {\n throw new Error(`you can use port only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n this._sysURL.port = p;\n }\n\n override get hostname(): string {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n return this._sysURL.hostname;\n }\n\n override set hostname(h: string) {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n this._sysURL.hostname = h;\n }\n\n override set pathname(p: string) {\n this._pathname = p;\n }\n\n override get pathname(): string {\n return this._pathname;\n }\n\n override get protocol(): string {\n return this._protocol;\n }\n\n override set protocol(p: string) {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n this._protocol = p;\n }\n\n override get searchParams(): URLSearchParams {\n return this._sysURL.searchParams;\n }\n\n override toString(): string {\n let search = \"\";\n if (this._sysURL.searchParams.size) {\n for (const [key, value] of Array.from(this._sysURL.searchParams.entries()).sort((a, b) => a[0].localeCompare(b[0]))) {\n search += `${!search.length ? \"?\" : \"&\"}${key}=${encodeURIComponent(value)}`;\n }\n }\n let hostpart = \"\";\n if (this._hasHostpart) {\n hostpart = this._sysURL.hostname;\n if (this._sysURL.port) {\n hostpart += `:${this._sysURL.port}`;\n }\n if (!this._pathname.startsWith(\"/\")) {\n hostpart += \"/\";\n }\n }\n return `${this._protocol}//${hostpart}${this._pathname}${search}`;\n }\n}\n\nfunction from<T>(fac: (url: MutableURL) => T, strURLUri: CoerceURI | undefined, defaultProtocol: string): T {\n switch (typeof falsy2undef(strURLUri)) {\n case \"undefined\":\n return fac(new MutableURL(`${defaultProtocol}///`));\n case \"string\":\n return fac(ensureURLWithDefaultProto(strURLUri as string, defaultProtocol));\n case \"object\":\n if (BuildURI.is(strURLUri)) {\n return fac(new MutableURL(strURLUri._url.toString()));\n } else if (URI.is(strURLUri)) {\n return fac(new MutableURL(strURLUri._url.toString()));\n } else if (isURL(strURLUri)) {\n return fac(new MutableURL(strURLUri.toString()));\n }\n throw new Error(`unknown object type: ${strURLUri}`);\n default:\n throw new Error(`Invalid argument: ${typeof strURLUri}`);\n }\n}\n\nfunction getParamResult(\n key: string,\n val: string | undefined,\n msgFn: (key: string) => string = (key) => {\n return `missing parameter: ${key}`;\n },\n): Result<string> {\n if (val === undefined) {\n return Result.Err(msgFn(key));\n }\n return Result.Ok(val);\n}\n\nexport class BuildURI implements URIInterface<BuildURI> {\n _url: MutableURL; // pathname needs this\n private constructor(url: MutableURL) {\n this._url = url;\n }\n\n static is(value: unknown): value is BuildURI {\n return (\n value instanceof BuildURI ||\n (!!value && typeof (value as BuildURI).delParam === \"function\" && typeof (value as BuildURI).setParam === \"function\")\n );\n }\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): BuildURI {\n return from((url) => new BuildURI(url), strURLUri, defaultProtocol);\n }\n\n match(other: CoerceURI): MatchResult {\n return match(this.URI(), URI.from(other));\n }\n\n port(p: string): BuildURI {\n this._url.port = p;\n return this;\n }\n\n hostname(h: string): BuildURI {\n this._url.hostname = h;\n return this;\n }\n\n protocol(p: string): BuildURI {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n this._url.protocol = p;\n return this;\n }\n\n pathname(p: string): BuildURI {\n this._url.pathname = p;\n return this;\n }\n\n // could pass a relative path or a full URL\n // if relative path, it will be appended to the current path\n resolve(p: CoerceURI): BuildURI {\n if (!p) {\n return this;\n }\n if (typeof p === \"string\") {\n // relative path\n if (!p.match(/^[a-zA-Z0-9]+:/)) {\n if (p.startsWith(\"/\")) {\n this.pathname(p);\n return this;\n }\n return this.appendRelative(p);\n }\n }\n this._url = new MutableURL(p.toString());\n return this;\n }\n\n appendRelative(p: CoerceURI): BuildURI {\n const appendUrl = URI.from(p);\n const pathname = \"./\" + appendUrl.pathname;\n const basePath = this._url.pathname;\n /*\n * cases\n * pathname \"\" basePAth \"\" -> \"\"\n * pathname \"/\" basePath \"\" -> \"/\"\n * pathname \"\" basePath \"/\" -> \"/\"\n * pathname \"/\" basePath \"/\" -> \"/\"\n * pathname \"ab\" basePath \"\" -> \"/ab\"\n * pathname \"ab\" basePath \"/\" -> \"/ab\"\n * pathname \"ab\" basePath \"/ab/\" -> \"/ab/ab\"\n * pathname \"/ab/\" basePath \"/ab/\" -> \"/ab/ab/\"\n */\n this.pathname(relativePath(basePath, pathname));\n // if (pathname.startsWith(\"/\")) {\n // pathname = pathname.replace(/^\\//, \"\");\n // }\n // if (basePath.length > 0) {\n // basePath = basePath.replace(/\\/$/, \"\");\n // }\n // this.pathname(basePath + \"/\" + pathname);\n for (const [key, value] of appendUrl.getParams) {\n this.setParam(key, value);\n }\n return this;\n }\n\n cleanParams(): BuildURI {\n for (const key of Array.from(this._url.searchParams.keys())) {\n this._url.searchParams.delete(key);\n }\n return this;\n }\n\n delParam(key: string): BuildURI {\n this._url.searchParams.delete(key);\n return this;\n }\n\n defParam(key: string, str: string): BuildURI {\n if (!this._url.searchParams.has(key)) {\n this._url.searchParams.set(key, str);\n }\n return this;\n }\n\n setParam(key: string, str: string): BuildURI {\n this._url.searchParams.set(key, str);\n return this;\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined {\n const { key: k, def: d } = coerceKey(key, def);\n let val = this._url.searchParams.get(k);\n if (!falsy2undef(val) && d) {\n val = d;\n }\n return falsy2undef(val) as T extends string ? string : string | undefined;\n }\n\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string> {\n return getParamResult(key, this.getParam(key), msgFn);\n }\n\n getParamsResult(...keys: KeysParam): Result<Record<string, string>> {\n return getParamsResult(keys, this);\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n toJSON(): string {\n return this.toString();\n }\n\n asURL(): URL {\n return this.URI().asURL();\n }\n\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject> {\n return this.URI().asObj(...strips);\n }\n\n clone(): BuildURI {\n return BuildURI.from(this.toString());\n }\n\n URI(): URI {\n return URI.from(this._url);\n }\n}\n\nexport type CoerceURI = string | URI | MutableURL | URL | BuildURI | NullOrUndef;\n\nexport function isCoerceURI(value: unknown): value is CoerceURI {\n if (!value) {\n return false;\n }\n if (isURL(value)) {\n // includes MutableURL\n return true;\n }\n if (URI.is(value)) {\n return true;\n }\n if (BuildURI.is(value)) {\n return true;\n }\n if (typeof value === \"string\") {\n return true;\n }\n return false;\n}\n\nexport const hasHostPartProtocols: Set<string> = new Set<string>([\"http\", \"https\", \"ws\", \"wss\"]);\n\n// non mutable URL Implementation\nexport class URI implements URIInterface<URI> {\n static protocolHasHostpart(protocol: string): () => void {\n protocol = protocol.replace(/:$/, \"\");\n hasHostPartProtocols.add(protocol);\n return () => {\n hasHostPartProtocols.delete(protocol);\n };\n }\n\n match(other: CoerceURI): MatchResult {\n return match(this, other);\n }\n\n // if no protocol is provided, default to file:\n static merge(into: CoerceURI, from: CoerceURI, defaultProtocol = \"file:\"): URI {\n const intoUrl = BuildURI.from(into, defaultProtocol);\n const fromUrl = URI.from(from, defaultProtocol);\n\n intoUrl.protocol(fromUrl.protocol);\n const fPath = fromUrl.pathname;\n if (!(fPath.length === 0 || fPath === \"/\" || fPath === \"./\")) {\n intoUrl.pathname(fromUrl.pathname);\n }\n for (const [key, value] of fromUrl.getParams) {\n intoUrl.setParam(key, value);\n }\n return intoUrl.URI();\n }\n\n static is(value: unknown): value is URI {\n return (\n value instanceof URI ||\n (!!value &&\n typeof (value as URI).asURL === \"function\" &&\n typeof (value as URI).getParam === \"function\" &&\n typeof (value as URI).hasParam === \"function\")\n );\n }\n\n // if no protocol is provided, default to file:\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): URI {\n return from((url) => new URI(url), strURLUri, defaultProtocol);\n }\n\n static fromResult(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): Result<URI> {\n return exception2Result(() => from((url) => new URI(url), strURLUri, defaultProtocol)) as Result<URI>;\n }\n\n readonly _url: MutableURL;\n private constructor(url: MutableURL) {\n this._url = url.clone();\n }\n\n build(): BuildURI {\n return BuildURI.from(this._url);\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n // get password(): string {\n // return this._url.password;\n // }\n\n get port(): string {\n return this._url.port;\n }\n\n get host(): string {\n return this._url.host;\n }\n\n // get username(): string {\n // return this._url.username;\n // }\n\n // get search(): string {\n // return this._url.search;\n // }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n get pathname(): string {\n return this._url.pathname;\n // return this._url\n // .toString()\n // .replace(/^.*:\\/\\//, \"\")\n // .replace(/\\?.*$/, \"\");\n }\n\n // get hash(): string {\n // return this._url.hash;\n // }\n\n // get host(): string {\n // return this._url.host;\n // }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined {\n const { key: k, def: d } = coerceKey(key, def);\n let val = this._url.searchParams.get(k);\n if (!falsy2undef(val) && d) {\n val = d;\n }\n return falsy2undef(val) as T extends string ? string : string | undefined;\n }\n\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string> {\n return getParamResult(key, this.getParam(key), msgFn);\n }\n\n getParamsResult(...keys: KeysParam): Result<Record<string, string>> {\n return getParamsResult(keys, this);\n }\n\n clone(): URI {\n return new URI(this._url);\n }\n\n asURL(): URL {\n // const url = new URL(this._url.toString());\n // url.searchParams.sort();\n return this._url.clone() as unknown as URL;\n }\n\n toString(): string {\n // this._url.searchParams.sort();\n return this._url.toString();\n }\n toJSON(): string {\n return this.toString();\n }\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject> {\n const pathURI: PathURIObject = {\n style: \"path\",\n protocol: this.protocol,\n pathname: this.pathname,\n searchParams: Object.fromEntries(this.getParams),\n };\n if (hasHostPartProtocols.has(this.protocol.replace(/:$/, \"\"))) {\n return stripper(strips, {\n ...pathURI,\n style: \"host\",\n hostname: this.hostname,\n port: this.port,\n }) as Partial<HostURIObject>;\n }\n return stripper(strips, pathURI) as Partial<PathURIObject>;\n }\n}\n","export class LogWriterStream {\n readonly _out: WritableStream<Uint8Array>;\n readonly _toFlush: (() => Promise<void>)[] = [];\n\n readonly _id: number;\n\n constructor(out: WritableStream<Uint8Array>) {\n this._out = out;\n this._id = Math.random();\n // console.log(\">>>My:constructor:\", this._id);\n }\n\n write(encoded: Uint8Array): void {\n const my = async (): Promise<void> => {\n // const val = Math.random();\n // console.log(\">>>My:\", encoded)\n try {\n // console.log(\">>>My:getWriter:get:\", this._id);\n const writer = this._out.getWriter();\n await writer.ready;\n await writer.write(encoded);\n writer.releaseLock();\n // console.log(\">>>My:getWriter:release\", this._id);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Chunk error:\", err);\n }\n // console.log(\"<<<My:\", val)\n };\n this._toFlush.push(my);\n this._flush();\n }\n\n _flushIsRunning = false;\n _flushDoneFns: (() => void)[] = [];\n _flush(toFlush: (() => Promise<void>)[] | undefined = undefined, done?: () => void): void {\n if (done) {\n this._flushDoneFns.push(done);\n }\n\n if (this._toFlush.length == 0) {\n // console.log(\"Flush is stopped\", this._toFlush.length)\n this._flushIsRunning = false;\n this._flushDoneFns.forEach((fn) => fn());\n this._flushDoneFns = [];\n return;\n }\n\n if (!toFlush && this._toFlush.length == 1 && !this._flushIsRunning) {\n this._flushIsRunning = true;\n // console.log(\"Flush is started\", this._toFlush.length)\n } else if (!toFlush) {\n // console.log(\"flush queue check but is running\", this._toFlush.length)\n return;\n }\n\n // console.log(\">>>Msg:\", this._toFlush.length)\n const my = this._toFlush.shift();\n my?.()\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"Flush error:\", e);\n })\n .finally(() => {\n // console.log(\"<<<Msg:\", this._toFlush.length)\n this._flush(this._toFlush);\n });\n }\n}\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","export interface LRUParam {\n readonly maxEntries: number;\n readonly maxAge: number; // not implemented\n}\n\nexport class LRUSet<T> {\n private readonly _lruMap: LRUMap<T, T>;\n\n constructor(param: Partial<LRUParam> = {}) {\n this._lruMap = new LRUMap<T, T>(param);\n }\n\n setParam(param: Partial<LRUParam> = {}): void {\n this._lruMap.setParam(param);\n }\n\n get size(): number {\n return this._lruMap.size;\n }\n\n has(key: T): boolean {\n return this._lruMap.has(key);\n }\n\n add(key: T): void {\n this._lruMap.set(key, key);\n }\n\n delete(key: T): void {\n this._lruMap.delete(key);\n }\n\n clear(): void {\n this._lruMap.clear();\n }\n\n forEach(callbackfn: (value: T, key: T) => void): void {\n this._lruMap.forEach((value) => callbackfn(value, value));\n }\n\n entries(): IterableIterator<[T, T]> {\n return this._lruMap.entries();\n }\n}\n\nexport class LRUMap<T, K> {\n private _map: Map<T, K> = new Map<T, K>();\n private param: LRUParam;\n\n constructor(c: Partial<LRUParam> = {}) {\n this.param = {\n maxEntries: c.maxEntries || 100,\n maxAge: c.maxAge || 0,\n };\n }\n\n private touch(key: T): K {\n if (!this._map.has(key)) {\n throw new Error(`key not found in cache: ${key as unknown as string}`);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const value = this._map.get(key)!;\n this._map.delete(key);\n this._map.set(key, value);\n return value;\n }\n\n setParam(param: Partial<LRUParam> = {}): void {\n if (typeof param.maxEntries === \"number\") {\n (this.param as { maxEntries: number }).maxEntries = param.maxEntries;\n if (param.maxEntries > 0 && this._map.size > param.maxEntries) {\n const toDelete: T[] = [];\n let cacheSize = this._map.size;\n for (const key of this._map.keys()) {\n if (cacheSize > param.maxEntries) {\n toDelete.push(key);\n cacheSize--;\n } else {\n break;\n }\n }\n for (const key of toDelete) {\n this._map.delete(key);\n }\n }\n }\n }\n\n has(key: T): boolean {\n return this._map.has(key);\n }\n\n get size(): number {\n return this._map.size;\n }\n\n async getSet(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined> {\n const val = this.get(key);\n if (val) {\n return val;\n } else {\n const val = await createFN(key);\n this.set(key, val as K);\n return val;\n }\n }\n\n get(key: T): K | undefined {\n if (this._map.has(key)) {\n return this.touch(key);\n }\n return this._map.get(key);\n }\n\n set(key: T, value: K): void {\n this._map.delete(key);\n if (this.param.maxEntries > 0 && this._map.size >= this.param.maxEntries) {\n // delete the least recently accessed\n // const key = Array.from(this.cache.keys())[0];\n // this.cache.delete(key) or\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._map.delete(this._map.keys().next().value!);\n this._map.set(key, value);\n } else {\n this._map.set(key, value);\n }\n }\n\n delete(key: T): void {\n this._map.delete(key);\n }\n\n clear(): void {\n this._map.clear();\n }\n\n forEach(callbackfn: (value: K, key: T, map: Map<T, K>) => void): void {\n this._map.forEach(callbackfn);\n }\n\n entries(): IterableIterator<[T, K]> {\n return this._map.entries();\n }\n // *entries(): IterableIterator<[T, K]> {\n // for (const x of this._cache.entries()) {\n // yield x;\n // }\n // }\n\n // getLeastRecent(): K {\n // return Array.from(this.cache)[0];\n // }\n\n // getMostRecent(): K {\n // return Array.from(this.cache)[this.cache.size - 1];\n // }\n}\n","import { Future } from \"./future.js\";\nimport { LRUMap, LRUParam } from \"./lru-map-set.js\";\nimport { Result } from \"./result.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\n readonly _flushWaiting: Future<void>[] = [];\n flush(): Promise<void> {\n if (this._seqFutures.length > 0) {\n const waitForFlush = new Future<void>();\n this._flushWaiting?.push(waitForFlush);\n return waitForFlush.asPromise();\n }\n return Promise.resolve();\n }\n _step(item?: ResolveSeqItem<T, C>): Promise<void> {\n if (!item) {\n // done\n this._flushWaiting.forEach((f) => f.resolve());\n this._flushWaiting?.splice(0, this._flushWaiting.length);\n return Promise.resolve();\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 void this._step(this._seqFutures[0]);\n });\n return Promise.resolve();\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 void 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 _inProgress?: Future<T>;\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 if (this._inProgress) {\n const idx = this._onceFutures.findIndex((f) => f === this._inProgress);\n if (idx >= 0) {\n // leave the current in progress future\n this._onceFutures.push(...this._onceFutures.splice(2).slice(1));\n }\n } else {\n this._onceFutures.length = 0;\n }\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;\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 this._inProgress = future;\n // let inCriticalSection = false;\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n // inCriticalSection = true;\n (ret as Promise<T>)\n .then(okFn)\n .catch(catchFn)\n .finally(() => {\n this._inProgress = undefined;\n });\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n if (!this._isPromise) {\n this._inProgress = undefined;\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 interface KeyedParam {\n readonly lru: Partial<LRUParam>;\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n protected readonly _map: LRUMap<K, T>;\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T, params: Partial<KeyedParam>) {\n this.factory = factory;\n this._map = new LRUMap<K, T>(params?.lru ?? { maxEntries: -1 });\n }\n\n setParam(params: KeyedParam): void {\n this._map.setParam(params.lru);\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(kp: Partial<KeyedParam> = {}) {\n super((key) => new ResolveOnce<T, K>(key), kp);\n }\n\n /**\n *\n * @returns The values of the resolved keys\n */\n values(): { key: K; value: Result<T> }[] {\n return (\n Array.from(this._map.entries())\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, v]) => v._onceDone)\n .map(([k, v]) => {\n if (v._onceDone) {\n if (v._onceError) {\n return {\n key: k,\n value: Result.Err(v._onceError),\n };\n }\n return {\n key: k,\n value: Result.Ok(v._onceValue as T),\n };\n }\n throw new Error(\"KeyedResolvOnce.values impossible\");\n })\n );\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor(kp: Partial<KeyedParam> = {}) {\n super((key) => new ResolveSeq<T, K>(key), kp);\n }\n}\n","import { Result } from \"../result.js\";\n\n// Tested in txt-en-decoder.test.ts\n\ninterface GlobalBuffer {\n Buffer?: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isBuffer: (obj: any) => obj is {\n buffer: ArrayBufferLike;\n byteOffset: number;\n byteLength: number;\n };\n };\n}\nconst globalBuffer = globalThis as GlobalBuffer;\n\nexport type ToUInt8Plain = Uint8Array | ArrayBuffer | ArrayBufferView;\nexport type ToUInt8Async = ToUInt8Plain | Blob;\nexport type ToUInt8 = ToUInt8Plain | Result<ToUInt8Plain>;\nexport type AsyncToUInt8 = ToUInt8Async | Result<ToUInt8Async> | Promise<ToUInt8Async> | Promise<Result<ToUInt8Async>>;\n\nexport function coerceIntoUint8(raw: ToUInt8): Result<Uint8Array> {\n if (raw instanceof ArrayBuffer) {\n return Result.Ok(new Uint8Array(raw));\n }\n if (ArrayBuffer.isView(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Blob) {\n return Result.Err(\"Blob not supported\");\n }\n if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Uint8Array) {\n return Result.Ok(raw);\n }\n if (Result.Is(raw)) {\n if (raw.isErr()) {\n return Result.Err(raw);\n }\n return coerceIntoUint8(raw.unwrap());\n }\n return Result.Err(\"Not a Uint8Array\");\n}\n\nexport async function asyncCoerceIntoUint8(raw: AsyncToUInt8): Promise<Result<Uint8Array>> {\n let resolved = await raw;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return coerceIntoUint8(resolved as ToUInt8);\n}\n","import { ResolveOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { coerceIntoUint8, ToUInt8 } from \"./utils/coerce-uint8.js\";\n\nexport type ToEnDecoder = ToUInt8 | string | Result<string>;\nexport type AsyncToEnDecoder = ToEnDecoder | Blob | Promise<ToEnDecoder | Blob>;\n\nexport interface TxtEnDecoder {\n encode(input: string): Uint8Array;\n decode(input: ToEnDecoder): string;\n asyncDecode(input: AsyncToEnDecoder): Promise<string>;\n}\n\nclass TxtOps implements TxtEnDecoder {\n readonly encoder = new TextEncoder();\n readonly decoder = new TextDecoder();\n\n encode(str: string): Uint8Array {\n return this.encoder.encode(str);\n }\n decode(data: ToEnDecoder): string {\n if (Result.Is(data)) {\n if (data.isErr()) {\n throw data.Err();\n }\n // only for string let do coerceInto the work\n const unwrapped = data.unwrap();\n if (typeof unwrapped === \"string\") {\n return this.decode(unwrapped);\n }\n }\n if (typeof data === \"string\") {\n return data;\n }\n return this.decoder.decode(coerceIntoUint8(data as ToUInt8).Ok());\n }\n\n async asyncDecode(data: AsyncToEnDecoder): Promise<string> {\n let resolved = await data;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return this.decode(resolved);\n }\n}\n\nconst txtEnDecoder = new ResolveOnce<TxtEnDecoder>();\nexport function TxtEnDecoderSingleton(): TxtEnDecoder {\n return txtEnDecoder.once(() => new TxtOps());\n}\n","export abstract class Option<T> {\n static Some<T>(t: T): Option<T> {\n return new Some(t);\n }\n\n static None<T>(): Option<T> {\n return new None();\n }\n\n static Is<T>(t: unknown): t is Option<T> {\n return t instanceof Option;\n }\n\n static From<T>(t?: T): Option<T> {\n if (!t) {\n return new None();\n }\n return new Some(t);\n }\n\n IsNone(): boolean {\n return this.is_none();\n }\n\n IsSome(): boolean {\n return this.is_some();\n }\n Unwrap(): T {\n return this.unwrap();\n }\n\n abstract is_none(): boolean;\n abstract is_some(): boolean;\n abstract unwrap(): T;\n}\n\nexport class Some<T> extends Option<T> {\n private _t: T;\n constructor(_t: T) {\n super();\n this._t = _t;\n }\n\n is_none(): boolean {\n return false;\n }\n is_some(): boolean {\n return true;\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class None<T> extends Option<T> {\n is_none(): boolean {\n return true;\n }\n is_some(): boolean {\n return false;\n }\n unwrap(): T {\n throw new Error(\"None.unwrap\");\n }\n}\n\nexport type WithoutOption<T> = T extends Option<infer U> ? U : T;\n","import { LevelHandler, Level } from \"./logger.js\";\nimport { Option } from \"./option.js\";\n\nexport class LevelHandlerImpl implements LevelHandler {\n readonly _globalLevels: Set<Level> = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);\n readonly _modules: Map<string, Set<Level>> = new Map<string, Set<Level>>();\n\n ignoreAttr: Option<RegExp> = Option.Some(/^_/);\n isStackExposed = false;\n enableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.add(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, level]));\n },\n ...modules,\n );\n }\n disableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.delete(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.delete(p);\n },\n ...modules,\n );\n }\n\n setExposeStack(enable?: boolean): void {\n this.isStackExposed = !!enable;\n }\n\n setIgnoreAttr(re?: RegExp): void {\n this.ignoreAttr = Option.From(re);\n }\n\n forModules(level: Level, fnAction: (p: string) => void, ...modules: (string | string[])[]): void {\n for (const m of modules.flat()) {\n if (typeof m !== \"string\") {\n continue;\n }\n const parts = m\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length);\n for (const p of parts) {\n fnAction(p);\n }\n }\n }\n setDebug(...modules: (string | string[])[]): void {\n this.forModules(\n Level.DEBUG,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, Level.DEBUG]));\n },\n ...modules,\n );\n }\n isEnabled(ilevel: unknown, module: unknown): boolean {\n const level = ilevel as Level; // what if it's not a level?\n if (typeof module === \"string\") {\n const levels = this._modules.get(module);\n if (levels && levels.has(level)) {\n return true;\n }\n }\n const wlevel = this._modules.get(\"*\");\n if (wlevel && typeof level === \"string\") {\n if (wlevel.has(level)) {\n return true;\n }\n }\n if (typeof level !== \"string\") {\n // this is a plain log\n return true;\n }\n return this._globalLevels.has(level);\n }\n}\n\nconst levelSingleton = new LevelHandlerImpl();\n\nexport function LevelHandlerSingleton(): LevelHandler {\n return levelSingleton;\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n isCFWorker: boolean;\n}\n\nfunction isSet(value: string, ref: Record<string, unknown> = 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] as Record<string, unknown>);\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 { FileService } from \"./file-service.js\";\nimport { Env } from \"./sys-env.js\";\nimport { Time } from \"./time.js\";\n\nexport const TimeMode = {\n REAL: \"real\",\n CONST: \"const\",\n STEP: \"step\",\n};\nexport type TimeMode = (typeof TimeMode)[keyof typeof TimeMode];\n\nexport const RandomMode = {\n CONST: \"const\",\n STEP: \"step\",\n RANDOM: \"random\",\n};\nexport type RandomMode = (typeof RandomMode)[keyof typeof RandomMode];\n\nexport const IDMode = {\n UUID: \"uuid\",\n CONST: \"const\",\n STEP: \"step\",\n};\nexport type IDMode = (typeof IDMode)[keyof typeof IDMode];\n\nexport function String2TimeMode(s?: string): TimeMode {\n switch (s?.toLowerCase()) {\n case \"real\":\n return TimeMode.REAL;\n case \"const\":\n return TimeMode.CONST;\n case \"step\":\n return TimeMode.STEP;\n default:\n return TimeMode.REAL;\n }\n}\n\nexport type VoidFunc = () => void | Promise<void>;\n\nexport interface SystemService {\n OnExit(hdl: VoidFunc): VoidFunc;\n Exit(code: number): void;\n}\n\nexport interface RuntimeSysAbstraction extends BasicSysAbstraction {\n System(): SystemService;\n FileSystem(): FileService;\n}\n\nexport interface BasicRuntimeService {\n Stdout(): WritableStream<Uint8Array>;\n Stderr(): WritableStream<Uint8Array>;\n Env(): Env;\n Args(): string[];\n}\n\nexport interface BasicSysAbstraction extends BasicRuntimeService {\n Time(): Time;\n NextId(): string;\n Random0ToValue(value: number): number;\n}\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 const TimeUnits = {\n Microsecond: 1,\n Second: 1000 * 1, //Microsecond,\n Minute: 60 * 1000 * 1, //Second,\n Hour: 60 * 60 * 1000 * 1, // Minute,\n};\nexport type TimeUnit = keyof typeof TimeUnits;\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { EnvActions, EnvFactoryOpts, Env } from \"../sys-env.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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { EnvActions, EnvImpl, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<CFEnvActions>();\nexport class CFEnvActions implements EnvActions {\n readonly injectOnRegister: Record<string, string> = {};\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 if (env.env) {\n env.env.set(key, value);\n } else {\n env.injectOnRegister[key] = value;\n }\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 for (const key in this.injectOnRegister) {\n env.set(key, this.injectOnRegister[key]);\n }\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","import { DenoEnvActions } from \"./deno/deno-env-actions.js\";\nimport { NodeEnvActions } from \"./node/node-env-actions.js\";\nimport { BrowserEnvActions } from \"./web/web-env-actions.js\";\nimport { CFEnvActions } from \"./cf/cf-env-actions.js\";\nimport { KeyedResolvOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\n\nexport type EnvTuple = ([string, string] | [string, string][] | Record<string, string> | Iterator<[string, string]>)[];\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 gets(...kparams: KeysParam): Result<Record<string, string>>;\n sets(...keys: EnvTuple): 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\nfunction isIterable(obj: unknown): obj is Iterable<[string, string]> {\n // checks for null and undefined\n if (obj == null) {\n return false;\n }\n return typeof (obj as Record<symbol, unknown>)[Symbol.iterator] === \"function\";\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 gets(...kparams: KeysParam): Result<Record<string, string>> {\n return getParamsResult(kparams, {\n getParam: (k) => this.get(k),\n });\n }\n sets(...keys: EnvTuple): void {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n if (key.length === 2) {\n const [k, v] = key;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n return;\n }\n }\n for (const item of key) {\n if (Array.isArray(item)) {\n // [string, string]\n if (item.length === 2) {\n const [k, v] = item;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n } else {\n if (isIterable(key)) {\n for (const [k, v] of key) {\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n } else {\n const rKey = key as Record<string, string>;\n for (const k in rKey) {\n const v = rKey[k];\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n });\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","export class ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder: TextDecoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n write(chunk?: Uint8Array): Promise<void> {\n let strObj: string | { level: string } = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n strObj = JSON.parse(strObj) as { level: string };\n output = strObj.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(strObj);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(strObj);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(strObj);\n }\n return Promise.resolve();\n }\n}\n\nexport class ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n close(): Promise<void> {\n return Promise.resolve();\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { ConsoleWriterStream } from \"../utils/console-write-stream.js\";\n\n// export 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): 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 BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n Stdout(): WritableStream<Uint8Array> {\n return new ConsoleWriterStream();\n // const decoder = this._txtEnDe;\n // return 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 }\n Stderr(): WritableStream<Uint8Array> {\n const decoder = this._txtEnDe;\n return 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\nconst baseSysAbstraction = new ResolveOnce();\nexport function WebBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new WebSystemService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class CFRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return CFWriteableStream((chunk) => {\n const decoded = this._txtEnDe.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n return Promise.resolve();\n });\n }\n Stderr(): WritableStream<Uint8Array> {\n return CFWriteableStream((chunk) => {\n const decoded = this._txtEnDe.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n return Promise.resolve();\n });\n }\n}\n\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<Uint8Array> {\n const ts = new TransformStream<Uint8Array, Uint8Array>();\n consumeReadableStream(ts.readable.getReader(), writeFn);\n return ts.writable;\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function CFBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new CFRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class DenoRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return globalThis.Deno.args;\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return globalThis.Deno.stdout.writable;\n }\n Stderr(): WritableStream<Uint8Array> {\n return globalThis.Deno.stderr.writable;\n }\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function DenoBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new DenoRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class NodeRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n readonly _gthis: {\n process: {\n argv: string[];\n stdout: {\n write(chunk: Uint8Array): void;\n };\n stderr: {\n write(chunk: Uint8Array): void;\n };\n };\n };\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n this._gthis = globalThis as unknown as NodeRuntimeService[\"_gthis\"];\n }\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return this._gthis.process.argv;\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return new WritableStream({\n write: (chunk: Uint8Array): void => {\n this._gthis.process.stdout.write(chunk);\n },\n });\n }\n Stderr(): WritableStream<Uint8Array> {\n return new WritableStream<Uint8Array>({\n write: (chunk: Uint8Array): void => {\n this._gthis.process.stderr.write(chunk);\n },\n });\n }\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function NodeBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new NodeRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { FileService } from \"./file-service.js\";\nimport { runtimeFn } from \"./runtime.js\";\nimport {\n TimeMode,\n RandomMode,\n IDMode,\n SystemService,\n VoidFunc,\n BasicSysAbstraction,\n BasicRuntimeService,\n} from \"./sys-abstraction.js\";\nimport { Time } from \"./time.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\nimport { WebBasicSysAbstraction } from \"./web/web-basic-sys-abstraction.js\";\nimport { Env } from \"./sys-env.js\";\nimport { CFBasicSysAbstraction } from \"./cf/cf-basic-sys-abstraction.js\";\nimport { DenoBasicSysAbstraction } from \"./deno/deno-basic-sys-abstraction.js\";\nimport { NodeBasicSysAbstraction } from \"./node/node-basic-sys-abstraction.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 BaseBasicSysAbstractionParams {\n readonly TxtEnDecoder: TxtEnDecoder;\n}\n\nexport interface BaseSysAbstractionParams extends BaseBasicSysAbstractionParams {\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\n\nexport class BaseBasicSysAbstraction {\n readonly _time: SysTime = new SysTime();\n\n // system independent services\n readonly _idService: IdService = new IdService();\n readonly _randomService: RandomService = new RandomService(RandomMode.RANDOM);\n readonly _txtEnDe: TxtEnDecoder;\n\n constructor(params: BaseBasicSysAbstractionParams) {\n this._txtEnDe = params.TxtEnDecoder;\n }\n}\n\nexport class BaseSysAbstraction extends BaseBasicSysAbstraction {\n // system related services\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n\n constructor(params: BaseSysAbstractionParams) {\n super(params);\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n }\n}\n\nexport interface BasicSysAbstractionParams {\n readonly TimeMode: TimeMode;\n readonly IdMode: IDMode;\n readonly RandomMode: RandomMode;\n // readonly FileSystem: FileService;\n // readonly SystemService: SystemService;\n readonly TxtEnDecoder: TxtEnDecoder;\n // readonly BasicRuntimeService: BasicSysAbstraction;\n}\n\nexport type WrapperBasicSysAbstractionParams = Partial<BasicRuntimeService & BasicSysAbstractionParams>;\n\nexport function BasicSysAbstractionFactory(params?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const fn = runtimeFn();\n switch (true) {\n case fn.isBrowser:\n return WebBasicSysAbstraction(params);\n case fn.isDeno:\n return DenoBasicSysAbstraction(params);\n case fn.isCFWorker:\n return CFBasicSysAbstraction(params);\n case fn.isNodeIsh:\n return NodeBasicSysAbstraction(params);\n default:\n throw new Error(\"Unknown runtime\");\n }\n}\n\nexport class WrapperBasicSysAbstraction implements BasicSysAbstraction {\n readonly _time: Time;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _basicRuntimeService: BasicRuntimeService;\n constructor(\n base: BaseBasicSysAbstraction,\n params: Partial<BasicSysAbstractionParams> & { basicRuntimeService: BasicRuntimeService },\n ) {\n this._time = base._time;\n this._basicRuntimeService = params.basicRuntimeService;\n this._idService = base._idService;\n this._randomService = base._randomService;\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\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 }\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._basicRuntimeService.Stdout();\n }\n Stderr(): WritableStream {\n return this._basicRuntimeService.Stderr();\n }\n Env(): Env {\n return this._basicRuntimeService.Env();\n }\n Args(): string[] {\n return this._basicRuntimeService.Args();\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\nexport class WrapperRuntimeSysAbstraction extends WrapperBasicSysAbstraction {\n readonly _systemService: SystemService;\n readonly _fileSystem: FileService;\n constructor(\n base: BaseSysAbstraction,\n params: Partial<BaseBasicSysAbstraction> & {\n systemService?: SystemService;\n fileSystem?: FileService;\n basicRuntimeService: BasicRuntimeService;\n },\n ) {\n super(base, params);\n this._systemService = params.systemService ?? base._systemService;\n this._fileSystem = params.fileSystem ?? base._fileSystem;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n","export class FanoutWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n","import { FanoutWriteStream } from \"../utils/fanout-write-stream.js\";\nimport { Future } from \"../future.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n private readonly _bufferArr: Uint8Array[];\n\n constructor(bufferArr: Uint8Array[]) {\n this._bufferArr = bufferArr;\n }\n\n readonly _resolveClosed: Future<undefined> = new Future<undefined>();\n readonly closed: Promise<undefined> = this._resolveClosed.asPromise();\n readonly desiredSize: number | null = null;\n readonly ready: Promise<undefined> = Promise.resolve(undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n await this.closed;\n return Promise.resolve(undefined);\n }\n releaseLock(): void {\n // do nothing\n }\n async write(chunk?: Uint8Array): Promise<void> {\n if (chunk) {\n this._bufferArr.push(chunk);\n }\n return Promise.resolve(undefined);\n }\n}\n\nexport class LogCollector implements WritableStream<Uint8Array> {\n readonly locked: boolean = false;\n private _writer?: FanoutWriteStream;\n private readonly _pass?: WritableStreamDefaultWriter<Uint8Array>;\n private readonly _bufferArr: Uint8Array[] = [];\n private readonly _txtEnDe: TxtEnDecoder;\n\n constructor(pass?: WritableStreamDefaultWriter<Uint8Array>, txtEnDe?: TxtEnDecoder) {\n this._pass = pass;\n this._txtEnDe = txtEnDe || TxtEnDecoderSingleton();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abort(reason?: Uint8Array): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async close(): Promise<void> {\n if (this._writer) {\n const ret = await this._writer.close();\n this._writer = undefined;\n return ret;\n }\n return Promise.resolve(undefined);\n }\n\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (!this._writer) {\n const dests: WritableStreamDefaultWriter<Uint8Array>[] = [new LogWriteStream(this._bufferArr)];\n if (this._pass) {\n dests.push(this._pass);\n }\n this._writer = new FanoutWriteStream(dests);\n }\n return this._writer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logs(notJsonLine = false): any[] {\n if (!this._writer) {\n return [];\n }\n const jsonNlStr = this._txtEnDe.decode(\n new Uint8Array(\n (function* (res: Uint8Array[]): Generator<number, void, undefined> {\n for (const x of res) {\n yield* x;\n }\n })(this._bufferArr),\n ),\n );\n if (!notJsonLine) {\n const splitStr = jsonNlStr.split(\"\\n\");\n const filterStr = splitStr.filter((a) => a.length);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const mapStr = filterStr.map((a) => JSON.parse(a));\n return mapStr;\n }\n return jsonNlStr.split(\"\\n\").filter((a) => a.length);\n }\n}\n","import { LevelHandlerImpl } from \"../log-level-impl.js\";\nimport { Logger } from \"../logger.js\";\nimport { LoggerImpl } from \"../logger-impl.js\";\nimport { LogCollector } from \"./log-write-stream.js\";\nimport { BasicSysAbstraction } from \"../sys-abstraction.js\";\n\nexport interface MockLoggerReturn {\n readonly logger: Logger;\n readonly logCollector: LogCollector;\n}\n\nexport function MockLogger(params?: {\n readonly sys?: BasicSysAbstraction;\n readonly pass?: WritableStreamDefaultWriter<Uint8Array>;\n moduleName?: string | string[];\n readonly disableDebug?: boolean;\n}): MockLoggerReturn {\n const lc = new LogCollector(params?.pass);\n let modNames = [\"MockLogger\"];\n if (typeof params?.moduleName === \"string\") {\n modNames = [params?.moduleName];\n } else if (Array.isArray(params?.moduleName)) {\n modNames = [...params.moduleName, ...modNames];\n }\n const logger = new LoggerImpl({\n out: lc,\n sys: params?.sys,\n levelHandler: new LevelHandlerImpl(),\n })\n .With()\n .Module(modNames[0])\n .Logger();\n if (!params?.disableDebug) {\n logger.SetDebug(...modNames);\n }\n return {\n logCollector: lc,\n logger,\n };\n}\n","import type { MarkWritable } from \"ts-essentials\";\nimport { Time } from \"./time.js\";\nimport { Logger } from \"./logger.js\";\n\nexport type TraceCtx = {\n readonly spanId: string;\n readonly time: Time;\n readonly parent: TraceNode;\n readonly metrics: Map<string, Metric<unknown>>;\n readonly logger?: Logger;\n} & Record<string, unknown>;\n\nexport type CleanCtx = {\n readonly spanId: string;\n} & Record<string, unknown>;\n\nexport type TraceCtxParam = {\n readonly spanId: string;\n} & Partial<{\n readonly time: Time;\n readonly parent: TraceNode;\n readonly logger: Logger;\n}> &\n Record<string, unknown>;\n\nexport class Metric<T> {\n value?: T;\n readonly path: string;\n\n constructor(path: string) {\n this.path = path;\n }\n\n set(value: T): void {\n this.value = value;\n }\n\n add<R extends number | ArrayLike<T>>(value: R): void {\n if (typeof value === \"number\") {\n if (this.value === undefined) {\n this.value = 0 as T;\n }\n this.value = ((this.value as number) + value) as T;\n } else if (Array.isArray(value)) {\n if (!Array.isArray(this.value)) {\n this.value = [] as T;\n }\n (this.value as T[]).push(...value);\n } else {\n throw new Error(\"add only support number or array\");\n }\n }\n}\n\nexport type MetricMap = Map<string, Metric<unknown>>;\n\nexport class Metrics {\n readonly tracenode: TraceNode;\n private readonly map: MetricMap;\n\n readonly spanRefs: MetricMap = new Map<string, Metric<unknown>>();\n constructor(tracenode: TraceNode) {\n this.tracenode = tracenode;\n this.map = tracenode.ctx.metrics;\n }\n\n toJSON(): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n for (const [key, value] of this.map) {\n obj[key] = value.value;\n }\n return obj;\n }\n\n get<T>(ipath: string): Metric<T> {\n const path = ipath.replace(/[/]+/g, \"/\").trim();\n if (path.startsWith(\"/\")) {\n if (path.slice(1).length === 0) {\n throw new Error(`Metrics path must contain value /:${path}`);\n }\n let metric = this.map.get(path);\n if (!metric) {\n metric = new Metric<T>(path);\n this.map.set(path, metric);\n }\n this.spanRefs.set(path, metric);\n return metric as Metric<T>;\n } else if (path.includes(\"/\")) {\n throw new Error(`Metrics path must start with /:${path}`);\n }\n const rootPath = this.tracenode.getRootPath();\n return this.get(`${rootPath}/${path}`);\n }\n}\n\nexport interface Invokaction {\n readonly result: \"success\" | \"error\";\n readonly start: number;\n readonly end: number;\n readonly metrics?: Metrics;\n}\n\nexport type TraceNodeMap = Map<string, TraceNode>;\n\nexport class TraceNode {\n readonly childs: TraceNodeMap = new Map<string, TraceNode>();\n\n readonly invokations: Invokaction[] = [];\n\n readonly spanId: string;\n readonly ctx: TraceCtx;\n readonly metrics: Metrics;\n\n static root(time: Time, logger?: Logger): TraceNode {\n return new TraceNode({\n spanId: \"root\",\n time,\n logger,\n metrics: new Map(),\n parent: undefined as unknown as TraceNode,\n });\n }\n\n constructor(ctx: TraceCtx) {\n this.spanId = ctx.spanId;\n this.ctx = ctx;\n this.metrics = new Metrics(this);\n }\n\n getRootPath(rpath: string[] = []): string {\n if (!this.ctx.parent) {\n return \"/\" + rpath.reverse().join(\"/\");\n }\n return this.ctx.parent.getRootPath(rpath.concat(this.ctx.spanId));\n }\n\n invokes(): { ctx: CleanCtx; invokations: Invokaction[] } {\n const cleanCtx = { ...this.ctx } as CleanCtx;\n delete cleanCtx.parent;\n delete cleanCtx.time;\n delete cleanCtx.logger;\n delete cleanCtx.metrics;\n const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs });\n const metricsRefs = Object.keys(spanRefs).length > 0 ? { metricRefs: spanRefs } : {};\n return {\n ctx: cleanCtx,\n invokations: this.invokations,\n ...metricsRefs,\n };\n }\n\n ctxWith(spanId: string, logger?: Logger): TraceCtxParam {\n const ctx = {\n ...this.ctx,\n spanId,\n };\n if (logger) {\n ctx.logger = logger;\n }\n return ctx;\n }\n\n // <V extends () => Promise<T> | T, T>(id: string, fn: V): ReturnType<V>\n span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V> {\n let ctx: TraceCtx;\n if (typeof inSpanId === \"string\") {\n ctx = {\n ...this.ctx,\n spanId: inSpanId,\n parent: this,\n };\n } else {\n ctx = {\n ...this.ctx,\n ...inSpanId,\n parent: this,\n };\n }\n if (ctx.logger) {\n ctx = {\n ...ctx,\n ...ctx.logger.Attributes(),\n };\n }\n const spanId = ctx.spanId;\n let spanTrace = this.childs.get(spanId);\n if (!spanTrace) {\n spanTrace = new TraceNode(ctx);\n this.childs.set(spanId.toString(), spanTrace);\n }\n const invokation: MarkWritable<MarkWritable<Invokaction, \"end\">, \"result\"> = {\n start: this.ctx.time.Now().getTime(),\n end: 0,\n result: \"success\",\n };\n spanTrace.invokations.push(invokation);\n try {\n const possiblePromise = fn(spanTrace);\n if (possiblePromise instanceof Promise) {\n return possiblePromise\n .then((v) => {\n return v;\n })\n .catch((e) => {\n invokation.result = \"error\";\n throw e;\n })\n .finally(() => {\n invokation.end = this.ctx.time.Now().getTime();\n }) as ReturnType<V>;\n }\n invokation.end = this.ctx.time.Now().getTime();\n return possiblePromise as ReturnType<V>;\n } catch (e) {\n invokation.result = \"error\";\n invokation.end = this.ctx.time.Now().getTime();\n throw e;\n }\n }\n}\n","export interface CTJsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\nexport type CTKeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\nexport type CTKeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\n\nexport interface CTAlgorithm {\n name: string;\n}\nexport type CTAlgorithmIdentifier = CTAlgorithm | string;\n\nexport interface CTRsaHashedImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n}\n\nexport type CTNamedCurve = string;\nexport interface CTEcKeyImportParams extends CTAlgorithm {\n namedCurve: CTNamedCurve;\n}\n\nexport interface CTHmacImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n length?: number;\n}\n\nexport interface CTAesKeyAlgorithm extends CTAlgorithm {\n length: number;\n}\n\nexport type CTKeyType = \"private\" | \"public\" | \"secret\";\n\nexport interface CTCryptoKey {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */\n readonly algorithm: CTAlgorithm;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */\n readonly extractable: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */\n readonly type: CTKeyType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */\n readonly usages: CTKeyUsage[];\n}\n\ninterface CTArrayBufferTypes {\n ArrayBuffer: ArrayBuffer;\n}\ntype CTArrayBufferLike = CTArrayBufferTypes[keyof CTArrayBufferTypes];\n\nexport interface CTArrayBufferView {\n /**\n * The ArrayBuffer instance referenced by the array.\n */\n buffer: CTArrayBufferLike;\n\n /**\n * The length in bytes of the array.\n */\n byteLength: number;\n\n /**\n * The offset in bytes of the array.\n */\n byteOffset: number;\n}\n\nexport type CTBufferSource = CTArrayBufferView | ArrayBuffer | Uint8Array;\n\nexport interface CryptoRuntime {\n importKey(\n format: CTKeyFormat,\n keyData: CTJsonWebKey | CTBufferSource,\n algorithm: CTAlgorithmIdentifier | CTRsaHashedImportParams | CTEcKeyImportParams | CTHmacImportParams | CTAesKeyAlgorithm,\n extractable: boolean,\n keyUsages: CTKeyUsage[],\n ): Promise<CTCryptoKey>;\n exportKey(format: CTKeyFormat, key: CTCryptoKey): Promise<CTJsonWebKey | ArrayBuffer>;\n\n //(format: \"raw\", key: ArrayBuffer, algo: string, extractable: boolean, usages: string[]) => Promise<CryptoKey>;\n decrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n encrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n digestSHA256(data: Uint8Array): Promise<ArrayBuffer>;\n randomBytes(size: number): Uint8Array;\n}\n\nfunction randomBytes(size: number): Uint8Array {\n const bytes = new Uint8Array(size);\n if (size > 0) {\n crypto.getRandomValues(bytes);\n }\n return bytes;\n}\n\nfunction digestSHA256(data: Uint8Array): Promise<ArrayBuffer> {\n return Promise.resolve(crypto.subtle.digest(\"SHA-256\", data));\n}\n\nexport function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): CryptoRuntime {\n const runtime = {\n importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),\n exportKey: cryptoOpts.exportKey || crypto.subtle.exportKey.bind(crypto.subtle),\n encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),\n decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),\n randomBytes: cryptoOpts.randomBytes || randomBytes,\n digestSHA256: cryptoOpts.digestSHA256 || digestSHA256,\n };\n // console.log(\"cryptoOpts\", cryptoOpts, opts)\n return runtime;\n}\n","export const VERSION: string = Object.keys({\n __packageVersion__: \"xxxx\",\n})[0];\n","export class HeadersImpl extends Headers {\n readonly _headers: Map<string, string>;\n\n constructor(init: Map<string, string>) {\n super();\n this._headers = init;\n }\n\n override [Symbol.iterator](): IterableIterator<[string, string]> {\n return this.entries();\n }\n\n override entries(): IterableIterator<[string, string]> {\n return this._headers.entries();\n }\n override keys(): IterableIterator<string> {\n return this._headers.keys();\n }\n override values(): IterableIterator<string> {\n return this._headers.values();\n }\n\n override append(key: string, value: string | string[] | undefined): HeadersImpl {\n const values = this._headers.get(key);\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (Array.isArray(value)) {\n this._headers.set(key, [values, ...value].filter((i) => i).join(\", \"));\n } else {\n this._headers.set(key, [values, value].filter((i) => i).join(\", \"));\n }\n return this;\n }\n}\n\nexport class HttpHeader {\n readonly _headers: Map<string, string[]> = new Map<string, string[]>();\n\n static from(headers?: HeadersInit | Headers | HttpHeader): HttpHeader {\n if (headers instanceof HttpHeader) {\n return headers.Clone();\n }\n const h = new HttpHeader();\n if (headers) {\n if (Array.isArray(headers)) {\n for (const [k, v] of headers as [string, string][]) {\n if (v) {\n h.Add(k, v);\n }\n }\n } else if (headers instanceof Headers) {\n for (const [k, v] of headers.entries()) {\n if (v) {\n h.Add(\n k,\n v.split(\",\").map((v) => v.trim()),\n );\n }\n }\n } else {\n for (const k in headers) {\n const v = (headers as Record<string, string | string[]>)[k];\n (Array.isArray(v) ? v : [v]).forEach((v) => {\n h.Add(k, v);\n });\n }\n }\n }\n return h;\n }\n\n _asStringString(): Map<string, string> {\n const ret = new Map<string, string>();\n for (const [key, values] of this._headers) {\n ret.set(key, values.join(\", \"));\n }\n return ret;\n }\n\n _key(key: string): string {\n return key.toLowerCase();\n }\n Values(key: string): string[] {\n const values = this._headers.get(this._key(key));\n return values || [];\n }\n Get(key: string): string | undefined {\n const values = this._headers.get(this._key(key));\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[0];\n }\n Set(key: string, valueOr: string | string[]): HttpHeader {\n const value = Array.isArray(valueOr) ? valueOr : [valueOr];\n this._headers.set(this._key(key), value);\n return this;\n }\n Add(key: string, value: string | string[] | undefined): HttpHeader {\n if (typeof value === \"undefined\") {\n return this;\n }\n const vs = Array.isArray(value) ? value : [value];\n const values = this._headers.get(this._key(key));\n if (values === undefined) {\n this._headers.set(this._key(key), vs);\n } else {\n values.push(...vs);\n }\n return this;\n }\n Del(ey: string): HttpHeader {\n this._headers.delete(this._key(ey));\n return this;\n }\n Items(): [string, string[]][] {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Array.from(this._headers).filter(([_, vs]) => vs.length > 0);\n }\n SortItems(): [string, string[]][] {\n return this.Items().sort(([[a]], [[b]]) => a.localeCompare(b));\n }\n Clone(): HttpHeader {\n const clone = new HttpHeader();\n for (const [key, values] of this._headers.entries()) {\n clone._headers.set(key, values.slice());\n }\n return clone;\n }\n AsRecordStringStringArray(): Record<string, string[]> {\n const obj: Record<string, string[]> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = [...values];\n }\n return obj;\n }\n AsRecordStringString(): Record<string, string> {\n const obj: Record<string, string> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values.join(\", \");\n }\n return obj;\n }\n AsHeaderInit(): HeadersInit {\n const obj: HeadersInit = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values[0];\n }\n return obj;\n }\n AsHeaders(): Headers {\n return new HeadersImpl(this._asStringString());\n }\n Merge(other?: HttpHeader): HttpHeader {\n const ret = this.Clone();\n if (other) {\n for (const [key, values] of other.Items()) {\n ret.Add(key, values);\n }\n }\n return ret;\n }\n}\n","export interface PathOps {\n join(...args: string[]): string;\n dirname(path: string): string;\n basename(path: string): string;\n}\n\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n #parts(path: string): { dirname: string; basename: string } {\n const splitted = path.split(\"/\");\n const last = splitted.pop();\n if (splitted.length && last === \"\") {\n return this.#parts(this.join(...splitted));\n }\n return {\n dirname: this.join(...splitted),\n basename: last ?? \"\",\n };\n }\n dirname(path: string): string {\n return this.#parts(path).dirname;\n }\n basename(path: string): string {\n return this.#parts(path).basename;\n }\n}\n\nexport const pathOps: PathOps = new pathOpsImpl();\n","import { exception2Result, Result } from \"./result.js\";\nimport { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, TxtEnDecoderSingleton as TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\n\nexport interface JSONEnDecoder {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;\n asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array;\n asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>>;\n}\n\nclass JSONOps implements JSONEnDecoder {\n readonly txtOps: TxtEnDecoder;\n constructor(txtOps: TxtEnDecoder) {\n this.txtOps = txtOps;\n }\n async asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string> {\n const resolved = await input;\n return this.stringify(resolved, replacer, space);\n }\n async asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array> {\n const resolved = await input;\n return this.uint8ify(resolved, replacer, space);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>> {\n return this.parse(await this.txtOps.asyncDecode(input), reviver);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string {\n return JSON.stringify(Result.Is(input) ? input.unwrap() : input, replacer, space);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array {\n return this.txtOps.encode(this.stringify(input, replacer, space));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T> {\n return exception2Result(() => JSON.parse(this.txtOps.decode(input), reviver) as T) as Result<T>;\n }\n}\n\nlet jsonEnDecoder: JSONEnDecoder;\nexport function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder {\n let needNew = false;\n if (txtEnde && txtEnde !== TxtEnDecoderSingleton()) {\n needNew = !!txtEnde;\n txtEnde = txtEnde ?? TxtEnDecoderSingleton();\n }\n if (needNew && txtEnde) {\n return new JSONOps(txtEnde);\n }\n jsonEnDecoder = jsonEnDecoder ?? new JSONOps(TxtEnDecoderSingleton());\n return jsonEnDecoder;\n}\n","export * from \"./rebuffer.js\";\nexport * from \"./stream-map.js\";\nexport * from \"./stream2string.js\";\nexport * from \"./string2stream.js\";\nexport * from \"./console-write-stream.js\";\nexport * from \"./fanout-write-stream.js\";\nexport * from \"./get-params-result.js\";\nexport * from \"./stripper.js\";\nexport * from \"./sorted-object.js\";\nexport * from \"./uint8array-equal.js\";\nexport * from \"./coerce-uint8.js\";\n","export interface StreamMap<T, U> {\n Map(s: T, idx: number): U | Promise<U>;\n readonly Close?: () => void;\n}\nexport function streamMap<T, U>(s: ReadableStream<T>, sm: StreamMap<T, U>): ReadableStream<U> {\n const state = { reader: s.getReader(), streamMap: sm, idx: 0 };\n return new ReadableStream<U>({\n async pull(controller): Promise<void> {\n const { done, value } = await state.reader.read();\n if (done) {\n if (state.streamMap.Close) {\n state.streamMap.Close();\n }\n controller.close();\n return;\n }\n const promiseOrU = state.streamMap.Map(value, state.idx++);\n let mapped: U;\n if (promiseOrU instanceof Promise || typeof (promiseOrU as { then: () => void }).then === \"function\") {\n mapped = await promiseOrU;\n } else {\n mapped = promiseOrU;\n }\n controller.enqueue(mapped);\n },\n });\n}\n\nexport async function devnull<T>(a: ReadableStream<T>): Promise<number> {\n const reader = a.getReader();\n let cnt = 0;\n while (true) {\n const { done } = await reader.read();\n if (done) {\n break;\n }\n cnt++;\n }\n return cnt;\n}\n\nexport function array2stream<T>(a: T[]): ReadableStream<T> {\n let i = 0;\n return new ReadableStream<T>({\n pull(controller): void {\n if (i >= a.length) {\n controller.close();\n return;\n }\n controller.enqueue(a[i]);\n i++;\n },\n });\n}\n\nexport async function stream2array<T>(a: ReadableStream<T>): Promise<T[]> {\n const ret: T[] = [];\n const reader = a.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n ret.push(value);\n }\n return ret;\n}\n","import { array2stream, stream2array } from \"./stream-map.js\";\n\ninterface ReChunkResult {\n readonly rest: Uint8Array;\n readonly chunk: Uint8Array;\n}\n\nexport async function rebufferArray(a: Uint8Array[], chunkSize: number): Promise<Uint8Array[]> {\n return stream2array(rebuffer(array2stream(a), chunkSize));\n}\n\nfunction reChunk(cs: Uint8Array[], chunkSize: number): ReChunkResult {\n const len = cs.reduce((acc, v) => acc + v.length, 0);\n const last = cs[cs.length - 1];\n const lastOfs = len - last.length;\n // console.log(\"reChunk\", len, lastOfs, last.length, chunkSize, chunkSize - lastOfs)\n const rest = last.subarray(chunkSize - lastOfs);\n cs[cs.length - 1] = last.subarray(0, chunkSize - lastOfs);\n const chunk = new Uint8Array(chunkSize);\n let ofs = 0;\n for (const c of cs) {\n chunk.set(c, ofs);\n ofs += c.length;\n }\n return { rest, chunk };\n}\n\ninterface pumpState {\n readonly reader: ReadableStreamDefaultReader<Uint8Array>;\n tmp: Uint8Array[];\n tmpLen: number;\n readonly chunkSize: number;\n}\n\nfunction pump(ps: pumpState, controller: ReadableStreamDefaultController<Uint8Array>, next: () => void): void {\n ps.reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n if (ps.tmpLen > 0) {\n controller.enqueue(reChunk(ps.tmp, ps.tmpLen).chunk);\n }\n controller.close();\n next();\n return;\n }\n if (ps.tmpLen + value.length > ps.chunkSize) {\n ps.tmp.push(value);\n const res = reChunk(ps.tmp, ps.chunkSize);\n controller.enqueue(res.chunk);\n ps.tmp = [res.rest];\n ps.tmpLen = res.rest.length;\n next();\n return;\n } else if (value.length) {\n ps.tmp.push(value);\n ps.tmpLen += value.length;\n }\n pump(ps, controller, next);\n })\n .catch((err) => {\n controller.error(err);\n next();\n });\n}\n\nexport function rebuffer(a: ReadableStream<Uint8Array>, chunkSize: number): ReadableStream<Uint8Array> {\n const state: pumpState = {\n reader: a.getReader(),\n tmp: [],\n tmpLen: 0,\n chunkSize,\n };\n return new ReadableStream<Uint8Array>({\n async pull(controller): Promise<void> {\n return new Promise<void>((resolve) => {\n pump(state, controller, resolve);\n });\n },\n });\n}\n","export async function stream2string(stream?: ReadableStream<Uint8Array> | null, maxSize?: number): Promise<string> {\n if (!stream) {\n return Promise.resolve(\"\");\n }\n const reader = stream.getReader();\n let res = \"\";\n const decoder = new TextDecoder();\n let rSize = 0;\n while (typeof maxSize === \"undefined\" || rSize < maxSize) {\n try {\n const read = await reader.read();\n if (read.done) {\n break;\n }\n if (maxSize && rSize + read.value.length > maxSize) {\n read.value = read.value.slice(0, maxSize - rSize);\n }\n const block = decoder.decode(read.value, { stream: true });\n rSize += read.value.length;\n res += block;\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n\nexport async function stream2uint8array(stream?: ReadableStream<Uint8Array> | null): Promise<Uint8Array> {\n if (!stream) {\n return Promise.resolve(new Uint8Array());\n }\n const reader = stream.getReader();\n let res = new Uint8Array();\n // eslint-disable-next-line no-constant-condition\n while (1) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n res = new Uint8Array([...res, ...value]);\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n","import { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport function string2stream(str: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): ReadableStream<Uint8Array> {\n return uint8array2stream(ende.encode(str));\n}\n\nexport function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(str);\n controller.close();\n },\n });\n}\n","export function toSortedObjectArray<T>(set?: T): Record<string, unknown>[] {\n if (!set) return [];\n return toSortedArray(set).map(([k, v]) => ({ [k]: v }));\n}\n\nexport function toSortedArray<T>(set?: T): [string, unknown][] {\n if (!set) return [];\n return Object.entries(set).sort(([a], [b]) => a.localeCompare(b));\n}\n\nexport function toSortedObject<S, T extends NonNullable<S>>(set?: T): T {\n if (!set) return set as T;\n return Object.fromEntries(toSortedArray(set)) as T;\n // return toSortedArray(set).reduce((acc, cur) => {\n // acc[cur[0]] = cur[1];\n // return acc\n // }, {} as Record<string, unknown>) as T;\n}\n","export 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":["e","keys","key","from","param","val","module","once","once","once","param","baseSysAbstraction","param","baseSysAbstraction","param","baseSysAbstraction","param","YAML","req","res","v"]}
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/logger-impl.ts","../../src/is-promise.ts","../../src/bin2text.ts","../../src/logger.ts","../../src/result.ts","../../src/types.ts","../../src/utils/get-params-result.ts","../../src/utils/relative-path.ts","../../src/utils/stripper.ts","../../src/uri.ts","../../src/future.ts","../../src/lru-map-set.ts","../../src/resolve-once.ts","../../src/utils/coerce-uint8.ts","../../src/txt-en-decoder.ts","../../src/option.ts","../../src/log-level-impl.ts","../../src/runtime.ts","../../src/sys-abstraction.ts","../../src/time.ts","../../src/deno/deno-env-actions.ts","../../src/node/node-env-actions.ts","../../src/web/web-env-actions.ts","../../src/cf/cf-env-actions.ts","../../src/sys-env.ts","../../src/utils/console-write-stream.ts","../../src/web/web-basic-sys-abstraction.ts","../../src/cf/cf-basic-sys-abstraction.ts","../../src/deno/deno-basic-sys-abstraction.ts","../../src/node/node-basic-sys-abstraction.ts","../../src/base-sys-abstraction.ts","../../src/log-writer-impl.ts","../../src/utils/fanout-write-stream.ts","../../src/test/log-write-stream.ts","../../src/test/mock-logger.ts","../../src/tracer.ts","../../src/crypto.ts","../../src/version.ts","../../src/http_header.ts","../../src/path-ops.ts","../../src/json-en-decoder.ts","../../src/coerce-binary.ts","../../src/utils/index.ts","../../src/utils/stream-map.ts","../../src/utils/rebuffer.ts","../../src/utils/stream2string.ts","../../src/utils/string2stream.ts","../../src/utils/sorted-object.ts","../../src/utils/uint8array-equal.ts"],"sourcesContent":["export * from \"./file-service.js\";\nexport * from \"./logger-impl.js\";\nexport * from \"./logger.js\";\nexport * from \"./sys-abstraction.js\";\nexport * from \"./sys-env.js\";\nexport * from \"./time.js\";\nexport * from \"./test/index.js\";\nexport * from \"./txt-en-decoder.js\";\nexport * from \"./log-level-impl.js\";\nexport * from \"./result.js\";\nexport * from \"./option.js\";\nexport * from \"./future.js\";\nexport * from \"./tracer.js\";\nexport * from \"./resolve-once.js\";\nexport * from \"./runtime.js\";\nexport * from \"./uri.js\";\nexport * from \"./crypto.js\";\nexport * from \"./base-sys-abstraction.js\";\nexport * from \"./bin2text.js\";\nexport * from \"./version.js\";\nexport * from \"./http_header.js\";\nexport * from \"./path-ops.js\";\nexport * from \"./json-en-decoder.js\";\nexport * from \"./types.js\";\nexport * from \"./lru-map-set.js\";\nexport * from \"./coerce-binary.js\";\nexport * from \"./is-promise.js\";\n\n// ugly\nexport * as utils from \"./utils/index.js\";\n// import * as utils from \"./utils/index.js\";\n\n// export const param = utils.param;\n","// import { v4 } from \"uuid\";\nimport YAML from \"yaml\";\nimport {\n AsError,\n FnSerialized,\n LogSerializable,\n Level,\n Logger,\n logValue,\n Serialized,\n WithLogger,\n // sanitizeSerialize,\n Sized,\n Lengthed,\n LogValue,\n LevelHandler,\n LogFormatter,\n LogValueArg,\n HttpType,\n LogValueState,\n} from \"./logger.js\";\nimport { BasicSysAbstraction } from \"./sys-abstraction.js\";\nimport { Result } from \"./result.js\";\nimport { CoerceURI, URI } from \"./uri.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\nimport { LevelHandlerSingleton } from \"./log-level-impl.js\";\nimport { BasicSysAbstractionFactory } from \"./base-sys-abstraction.js\";\nimport { LogWriterStream } from \"./log-writer-impl.js\";\n\nfunction getLen(value: unknown, lvs: LogValueState): LogValue {\n if (Array.isArray(value)) {\n return logValue(() => value.length, lvs);\n } else if (typeof value === \"string\") {\n return logValue(() => value.length, lvs);\n } else if (typeof value === \"object\" && value !== null) {\n if (typeof (value as Sized).size === \"number\") {\n return logValue(() => (value as Sized).size, lvs);\n } else if (typeof (value as Lengthed).length === \"number\") {\n return logValue(() => (value as Lengthed).length, lvs);\n }\n return logValue(() => Object.keys(value).length, lvs);\n }\n return logValue(() => -1, lvs);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction hash(value: unknown): string {\n // const hasher = createHash(\"sha256\");\n // hasher.update(JSON.stringify(value, removeSelfRef()));\n // return hasher.digest(\"hex\");\n return \"not implemented\";\n}\n\nfunction toLogValue(lop: LogValue | Promise<LogValue>): LogValue | undefined {\n if (lop && typeof (lop as Promise<LogValue>).then === \"function\") {\n throw new Error(\"async logValue Not implemented\");\n }\n return lop as LogValue;\n}\n\nexport class JSONFormatter implements LogFormatter {\n private readonly _txtEnDe: TxtEnDecoder;\n private readonly _space?: number;\n constructor(txtEnde: TxtEnDecoder, space?: number) {\n this._txtEnDe = txtEnde;\n this._space = space;\n }\n format(attr: LogSerializable): Uint8Array {\n let ret: string;\n try {\n ret = JSON.stringify(attr, null, this._space);\n } catch (e) {\n ret = JSON.stringify({ internal: { message: (e as Error).message, stack: (e as Error).stack } });\n }\n return this._txtEnDe.encode(ret + \"\\n\");\n }\n}\n\nexport class YAMLFormatter implements LogFormatter {\n private readonly _txtEnDe: TxtEnDecoder;\n private readonly _space?: number;\n constructor(txtEnde: TxtEnDecoder, space?: number) {\n this._txtEnDe = txtEnde;\n this._space = space;\n }\n format(attr: LogSerializable): Uint8Array {\n return this._txtEnDe.encode(\"---\\n\" + YAML.stringify(attr, null, this._space) + \"\\n\");\n }\n}\n\nexport interface LoggerImplParams {\n readonly out?: WritableStream<Uint8Array>;\n readonly logWriter?: LogWriterStream;\n readonly sys?: BasicSysAbstraction;\n readonly withAttributes?: LogSerializable;\n readonly levelHandler?: LevelHandler;\n readonly txtEnDe?: TxtEnDecoder;\n readonly formatter?: LogFormatter;\n}\n\nfunction toLogValueCtx(lvh: LevelHandler): LogValueState {\n return {\n ignoreAttr: lvh.ignoreAttr,\n };\n}\n\nexport class LoggerImpl implements Logger {\n readonly _sys: BasicSysAbstraction;\n readonly _attributes: LogSerializable = {};\n readonly _withAttributes: LogSerializable;\n readonly _logWriter: LogWriterStream;\n readonly levelHandler: LevelHandler;\n readonly _txtEnDe: TxtEnDecoder;\n _formatter: LogFormatter;\n // readonly _id: string = \"logger-\" + Math.random().toString(36)\n\n constructor(params?: LoggerImplParams) {\n if (!params) {\n params = {};\n }\n if (!params.sys) {\n this._sys = BasicSysAbstractionFactory();\n } else {\n this._sys = params.sys;\n }\n if (!params.txtEnDe) {\n this._txtEnDe = TxtEnDecoderSingleton();\n } else {\n this._txtEnDe = params.txtEnDe;\n }\n if (!params.formatter) {\n this._formatter = new JSONFormatter(this._txtEnDe);\n } else {\n this._formatter = params.formatter;\n }\n\n if (params.logWriter) {\n this._logWriter = params.logWriter;\n } else {\n if (!params.out) {\n // const rt = runtimeFn();\n // let stream: WritableStream<Uint8Array>;\n // if (rt.isBrowser) {\n // stream = new ConsoleWriterStream();\n // } else {\n // if (rt.isNodeIsh || rt.isReactNative || rt.isDeno || rt.isCFWorker) {\n // stream = this._sys.Stdout();\n // } else {\n // throw new Error(\"No output defined for runtime\");\n // }\n // }\n this._logWriter = new LogWriterStream(this._sys.Stdout());\n } else {\n this._logWriter = new LogWriterStream(params.out);\n }\n }\n if (!params.withAttributes) {\n this._withAttributes = {};\n } else {\n this._withAttributes = { ...params.withAttributes };\n }\n this._attributes = { ...this._withAttributes };\n if (params.levelHandler) {\n this.levelHandler = params.levelHandler;\n } else {\n this.levelHandler = LevelHandlerSingleton();\n }\n // console.log(\"LoggerImpl\", this._id, this._attributes, this._withAttributes)\n }\n\n TxtEnDe(): TxtEnDecoder {\n return this._txtEnDe;\n }\n\n Attributes(): Record<string, unknown> {\n return JSON.parse(JSON.stringify(this._attributes, null)) as Record<string, unknown>;\n // return Array.from(Object.entries(this._attributes)).reduce(\n // (acc, [key, value]) => {\n // if (value instanceof LogValue) {\n // acc[key] = value.value();\n // }\n // return acc;\n // },\n // {} as Record<string, unknown>,\n // );\n }\n\n SetExposeStack(enable?: boolean): Logger {\n this.levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): Logger {\n this.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): Logger {\n this.levelHandler.disableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): Logger {\n this._attributes[\"module\"] = logValue(key, toLogValueCtx(this.levelHandler));\n this._withAttributes[\"module\"] = logValue(key, toLogValueCtx(this.levelHandler));\n return this;\n }\n // if the string is \"*\" it will enable for all modules\n SetDebug(...modules: (string | string[])[]): Logger {\n this.levelHandler.setDebug(...modules);\n return this;\n }\n\n SetIgnoreAttribute(re?: RegExp): Logger {\n this.levelHandler.setIgnoreAttr(re);\n return this;\n }\n\n SetFormatter(formatter: LogFormatter): Logger {\n this._formatter = formatter;\n return this;\n }\n\n Timestamp(): Logger {\n this._attributes[\"ts\"] = logValue(() => this._sys.Time().Now().toISOString(), toLogValueCtx(this.levelHandler));\n return this;\n }\n Warn(): Logger {\n this._attributes[\"level\"] = logValue(Level.WARN, toLogValueCtx(this.levelHandler));\n return this;\n }\n Log(): Logger {\n return this;\n }\n Debug(): Logger {\n this._attributes[\"level\"] = logValue(Level.DEBUG, toLogValueCtx(this.levelHandler));\n return this;\n }\n Error(): Logger {\n this._attributes[\"level\"] = logValue(Level.ERROR, toLogValueCtx(this.levelHandler));\n return this;\n }\n Info(): Logger {\n this._attributes[\"level\"] = logValue(Level.INFO, toLogValueCtx(this.levelHandler));\n return this;\n }\n Err<T>(err: T | Result<T> | Error): Logger {\n let key = \"error\";\n if (Result.Is(err)) {\n if (err.isOk()) {\n key = \"noerror\";\n err = err.Ok();\n } else {\n err = err.Err();\n }\n }\n if (err instanceof Error) {\n if (err.cause) {\n this.coerceKey(key, {\n message: err.message,\n cause: err.cause,\n });\n } else {\n this._attributes[key] = logValue(err.message, toLogValueCtx(this.levelHandler));\n }\n if (this.levelHandler.isStackExposed) {\n this._attributes[\"stack\"] = logValue(\n err.stack?.split(/[\\r\\n]+/).map((s) => s.trim()),\n toLogValueCtx(this.levelHandler),\n );\n }\n } else {\n this.Any(key, err as LogSerializable);\n }\n return this;\n }\n WithLevel(l: Level): Logger {\n this._attributes[\"level\"] = logValue(l, toLogValueCtx(this.levelHandler));\n return this;\n }\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): Logger {\n if (typeof action === \"function\") {\n this._attributes[key] = logValue(action as FnSerialized, toLogValueCtx(this.levelHandler));\n } else if (typeof action.toString === \"function\") {\n this._attributes[key] = logValue(() => action.toString(), toLogValueCtx(this.levelHandler));\n } else {\n this._attributes[key] = logValue(\"INVALID REF\", toLogValueCtx(this.levelHandler));\n }\n return this;\n }\n Bool(key: string | Record<string, unknown>, value: unknown): Logger {\n this.coerceKey(key, !!value);\n // this._attributes[key] = logValue(!!value);\n return this;\n }\n\n Http(...mix: (HttpType | string)[]): Logger {\n const key: string | undefined = mix.find((x) => typeof x === \"string\");\n mix = mix.filter((x) => typeof x !== \"string\");\n const resErrors = mix.filter((x) => Result.Is(x) && x.isErr()) as Result<unknown, Error>[];\n if (resErrors.length) {\n this.Err(resErrors.map((x) => x.Err().message).join(\"\\n\"));\n return this;\n }\n const req = mix\n .map((reqOrResult) => (Result.Is(reqOrResult) ? reqOrResult.Ok() : reqOrResult))\n .find((req) => typeof (req as Response).status !== \"number\") as Request | undefined;\n const res = mix\n .map((resOrResult) => (Result.Is(resOrResult) ? resOrResult.Ok() : resOrResult))\n .find((res) => typeof (res as Response).status === \"number\") as Response | undefined;\n let reqAndOrres: { res: Response; req: Request } | Response | Request | undefined;\n if (res && req) {\n reqAndOrres = { res, req };\n } else if (!res && !req) {\n reqAndOrres = undefined;\n } else if (res) {\n reqAndOrres = res;\n } else if (req) {\n reqAndOrres = req;\n }\n if (reqAndOrres) {\n this.Any(key || \"Http\", reqAndOrres as unknown as LogSerializable);\n }\n return this;\n }\n Pair(x: Record<string, unknown>): Logger {\n for (const key of Object.keys(x)) {\n const value = x[key];\n if (value instanceof LogValue) {\n this._attributes[key] = value;\n continue;\n }\n if (Result.Is(value)) {\n this.Result(key, value);\n continue;\n }\n this.Any(key, value as LogSerializable);\n }\n return this;\n }\n\n Result<T>(key: string, res: Result<T, Error>): Logger {\n if (res.isOk()) {\n this._attributes[key] = logValue(res.Ok() as Serialized, toLogValueCtx(this.levelHandler));\n } else {\n this.Err(res.Err());\n }\n return this;\n }\n\n Len(value: unknown, key = \"len\"): Logger {\n this._attributes[key] = getLen(value, toLogValueCtx(this.levelHandler));\n return this;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Hash(value: unknown, key = \"hash\"): Logger {\n throw new Error(\"Not implemented\");\n // this._attributes[key] = asyncLogValue(\n // async () => `${getLen(value, toLogValueCtx(this.levelHandler)).value()}:${await hash(value)}`,\n // );\n // return this;\n }\n\n Url(url: CoerceURI, key = \"url\"): Logger {\n this.Ref(key, () => URI.from(url).toString());\n return this;\n }\n\n private coerceKey(key: string | Record<string, unknown>, value?: unknown): void {\n if (typeof key === \"string\") {\n this._attributes[key] = logValue(value as LogValueArg, toLogValueCtx(this.levelHandler));\n } else {\n this.Pair(key);\n }\n }\n\n Str(key: string | Record<string, string>, value?: string): Logger {\n this.coerceKey(key, value);\n return this;\n }\n\n Any(key: string | Record<string, unknown>, value?: unknown): Logger {\n this.coerceKey(key, value);\n //this._attributes[coerceKey(key)] = logValue(value as LogValueArg);\n return this;\n }\n Dur(key: string, nsec: number): Logger {\n this._attributes[key] = logValue(`${nsec}ms`, toLogValueCtx(this.levelHandler));\n // new Intl.DurationFormat(\"en\", { style: \"narrow\" }).format(nsec);\n return this;\n }\n Uint64(key: string | Record<string, number>, value?: number): Logger {\n this.coerceKey(key, value);\n //this._attributes[coerceKey(key)] = logValue(value);\n return this;\n }\n Int(key: string | Record<string, number>, value?: number): Logger {\n return this.Uint64(key, value);\n }\n\n async Flush(): Promise<void> {\n return new Promise((resolve) => {\n this._logWriter._flush(undefined, resolve);\n });\n }\n\n With(): WithLogger {\n // console.log(\"WithLoggerBuilder.With\", this._id, this._attributes, this._withAttributes);\n return new WithLoggerBuilder(\n new LoggerImpl({\n logWriter: this._logWriter,\n sys: this._sys,\n levelHandler: this.levelHandler,\n formatter: this._formatter,\n withAttributes: {\n module: this._attributes[\"module\"],\n ...this._withAttributes,\n },\n }),\n );\n }\n\n _resetAttributes(fn: () => () => Uint8Array): () => Uint8Array {\n const ret = fn();\n Object.keys(this._attributes).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n });\n Object.assign(this._attributes, this._withAttributes);\n return ret;\n }\n\n Msg(...args: string[]): AsError {\n const fnError = this._resetAttributes(() => {\n const doWrite = this.levelHandler.isEnabled(\n toLogValue(this._attributes[\"level\"])?.value(),\n toLogValue(this._attributes[\"module\"])?.value(),\n );\n this._attributes[\"msg\"] = logValue(args.join(\" \"), toLogValueCtx(this.levelHandler));\n const msg = this._attributes[\"msg\"].value();\n if (typeof msg === \"string\" && !msg.trim().length) {\n delete this._attributes[\"msg\"];\n }\n let fnRet = (): Uint8Array => this._formatter.format({ ...this._attributes });\n if (doWrite) {\n const encoded = fnRet();\n this._logWriter.write(encoded);\n fnRet = (): Uint8Array => encoded;\n }\n return fnRet;\n });\n const asError = (): Error => new Error(this._txtEnDe.decode(fnError()));\n return {\n ResultError: () => Result.Err(asError()),\n AsError: asError,\n };\n }\n}\n\nclass WithLoggerBuilder implements WithLogger {\n readonly _li: LoggerImpl;\n readonly levelHandler: LevelHandler;\n constructor(li: LoggerImpl) {\n this._li = li;\n this.levelHandler = li.levelHandler;\n }\n\n TxtEnDe(): TxtEnDecoder {\n return this._li.TxtEnDe();\n }\n\n Logger(): Logger {\n Object.assign(this._li._withAttributes, this._li._attributes);\n return this._li;\n }\n\n Attributes(): Record<string, unknown> {\n return { ...this._li._attributes };\n }\n\n SetExposeStack(enable?: boolean): WithLogger {\n this._li.levelHandler.setExposeStack(enable);\n return this;\n }\n\n SetIgnoreAttribute(re?: RegExp): WithLogger {\n this._li.levelHandler.setIgnoreAttr(re);\n return this;\n }\n\n SetFormatter(fmt: LogFormatter): WithLogger {\n this._li.SetFormatter(fmt);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li.levelHandler.enableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): WithLogger {\n this._li.Module(key);\n return this;\n }\n SetDebug(...modules: (string | string[])[]): WithLogger {\n this._li.SetDebug(...modules);\n return this;\n }\n\n Http(...mix: (HttpType | string)[]): WithLogger {\n this._li.Http(...mix);\n return this;\n }\n Pair(x: Record<string, unknown>): WithLogger {\n this._li.Pair(x);\n return this;\n }\n\n Str(key: string | Record<string, string>, value?: string): WithLogger {\n this._li.Str(key, value);\n return this;\n }\n\n Len(value: unknown, key?: string): WithLogger {\n this._li.Len(value, key);\n return this;\n }\n\n Hash(value: unknown, key?: string): WithLogger {\n this._li.Hash(value, key);\n return this;\n }\n\n Ref(key: string, action: Serialized | FnSerialized): WithLogger {\n this._li.Ref(key, action);\n return this;\n }\n Bool(key: string | Record<string, unknown>, value?: unknown): WithLogger {\n this._li.Bool(key, value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): WithLogger {\n this._li.Result(key, res);\n return this;\n }\n Url(url: CoerceURI, key?: string): WithLogger {\n this._li.Url(url, key);\n return this;\n }\n Int(key: string | Record<string, number>, value?: number): WithLogger {\n this._li.Int(key, value);\n return this;\n }\n\n Log(): WithLogger {\n this._li.Log();\n return this;\n }\n\n WithLevel(level: Level): WithLogger {\n this._li.WithLevel(level);\n return this;\n }\n\n Error(): WithLogger {\n this._li.Error();\n return this;\n }\n Warn(): WithLogger {\n this._li.Error();\n return this;\n }\n Debug(): WithLogger {\n this._li.Debug();\n return this;\n }\n Err(err: unknown): WithLogger {\n this._li.Err(err);\n return this;\n }\n Info(): WithLogger {\n this._li.Info();\n return this;\n }\n Timestamp(): WithLogger {\n this._li.Timestamp();\n return this;\n }\n Any<T>(key: string | Record<string, unknown>, value?: T | LogSerializable): WithLogger {\n this._li.Any(key, value);\n return this;\n }\n Dur(key: string, nsec: number): WithLogger {\n this._li.Dur(key, nsec);\n return this;\n }\n Uint64(key: string | Record<string, number>, value?: number): WithLogger {\n this._li.Uint64(key, value);\n return this;\n }\n}\n","export type UnPromisify<T> = T extends Promise<infer U> ? U : T;\n\nexport function isPromise<T>(a: T): a is T extends Promise<unknown> ? T : never {\n const mayBe = a as unknown as { then: () => void; catch: () => void; finally: () => void };\n return (\n mayBe instanceof Promise ||\n !!(\n mayBe &&\n mayBe !== null &&\n typeof mayBe.then === \"function\" &&\n typeof mayBe.catch === \"function\" &&\n typeof mayBe.finally === \"function\"\n )\n );\n}\n","export function bin2text(hex: ArrayBufferView, lineFn: (line: string) => void, size = 0): void {\n const arr = new Uint8Array(hex.buffer, hex.byteOffset, hex.byteLength);\n let cutted = \" \";\n if (size == 0) {\n size = arr.length;\n }\n size = Math.min(size, arr.length);\n const cols = 16;\n for (let line = 0; line < size; line += cols) {\n if (line + cols <= size || arr.length == size) {\n // normal line\n } else {\n line = arr.length - (arr.length % cols);\n size = arr.length;\n cutted = \">>\";\n }\n const l: string[] = [line.toString(16).padStart(4, \"0\"), cutted];\n for (let col = 0; col < cols; col++) {\n if (line + col < size) {\n l.push(arr[line + col].toString(16).padStart(2, \"0\"));\n } else {\n l.push(\" \");\n }\n // l.push((col > 0 && col % 4 === 3) ? \" \" : \" \");\n l.push(\" \");\n }\n for (let col = 0; col < cols; col++) {\n if (line + col < size) {\n const ch = arr[line + col];\n l.push(ch >= 32 && ch < 127 ? String.fromCharCode(ch) : \".\");\n }\n }\n lineFn(l.join(\"\"));\n }\n}\n\nexport function bin2string(hex: ArrayBufferView, size = 0): string {\n const collector: string[] = [];\n bin2text(\n hex,\n (line) => {\n collector.push(line);\n },\n size,\n );\n return collector.join(\"\\n\");\n}\n","import { isPromise } from \"./is-promise.js\";\nimport { bin2string } from \"./bin2text.js\";\nimport { Option } from \"./option.js\";\nimport { Result } from \"./result.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\nimport { CoerceURI } from \"./uri.js\";\n\nexport const Level = {\n WARN: \"warn\",\n DEBUG: \"debug\",\n INFO: \"info\",\n ERROR: \"error\",\n};\n\nexport type Level = (typeof Level)[keyof typeof Level];\n\nexport type Serialized = string | number | boolean;\nexport type FnSerialized = () => Serialized | Serialized[];\n\nexport class LogValue {\n constructor(readonly fn: FnSerialized) {}\n value(): Serialized | Serialized[] {\n try {\n // console.log(\"LogValue.value\", this.fn.toString());\n return this.fn();\n } catch (e) {\n return `LogValue:${(e as Error).message}`;\n }\n }\n toJSON(): Serialized | Serialized[] {\n return this.value();\n }\n}\n\nexport type LogSerializable = Record<string, LogValue | Promise<LogValue>>;\n\n// export function sanitizeSerialize(lineEnd?: string): (key: unknown, val: unknown) => unknown {\n// const cache = new Set();\n// return function (this: unknown, key: unknown, value: unknown) {\n// if (typeof value === \"object\" && value !== null) {\n// // Duplicate reference found, discard key\n// if (cache.has(value)) return \"...\";\n// cache.add(value);\n// }\n// return lineEnd ? value + lineEnd : value;\n// };\n// }\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function asyncLogValue(val: () => Promise<Serialized>): Promise<LogValue> {\n // return Promise.resolve(logValue(val));\n throw new Error(\"Not implemented\");\n}\n\nexport type LogValueArg = LogValue | Serialized | Serialized[] | FnSerialized | undefined | null;\n\nexport interface LogValueState {\n readonly state?: Set<unknown>;\n readonly ignoreAttr: Option<RegExp>;\n}\n\nexport function logValue(val: LogValueArg, ctx: LogValueState): LogValue {\n return logValueInternal(val, {\n ...ctx,\n state: ctx.state || new Set<unknown>([Math.random()]),\n });\n}\n\ntype LogValueStateInternal = LogValueState & { readonly state: Set<unknown> };\n\nfunction logValueInternal(val: LogValueArg, ctx: LogValueStateInternal): LogValue {\n ctx = {\n ...ctx,\n state: ctx.state || new Set<unknown>([Math.random()]),\n } satisfies LogValueStateInternal;\n switch (typeof val) {\n case \"function\":\n return new LogValue(val);\n case \"string\": {\n try {\n const ret = JSON.parse(val) as LogValueArg;\n if (typeof ret === \"object\" && ret !== null) {\n return logValueInternal(ret, ctx);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n try {\n const url = new URL(val);\n return new LogValue(() => url.toString());\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // ignore\n }\n }\n if (val.match(/[\\n\\r]/)) {\n const lines = val.split(/[\\n\\r]+/).map((v) => v.trim());\n return new LogValue(() => lines);\n }\n return new LogValue(() => val.toString());\n }\n case \"number\":\n return new LogValue(() => val);\n case \"boolean\":\n return new LogValue(() => val);\n case \"object\": {\n if (val === null) {\n return new LogValue(() => \"null\");\n }\n if (ArrayBuffer.isView(val)) {\n try {\n // should be injected\n const decoder = new TextDecoder();\n const asStr = decoder.decode(val);\n const obj = JSON.parse(asStr) as LogValueArg;\n return logValueInternal(obj, ctx);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return logValueInternal(bin2string(val, 512), ctx);\n }\n }\n if (Array.isArray(val)) {\n return new LogValue(() =>\n (val as Serialized[]).map((v) => logValue(v, { ...ctx, state: undefined }).value() as Serialized),\n );\n }\n // if (val instanceof Response) {\n // // my = my.clone() as unknown as LogValue | Serialized[] | null\n // // const rval = my as unknown as Partial<Response>;\n // // delete rval.clone\n // // delete rval.blob\n // }\n if (val instanceof Headers) {\n return new LogValue(() => Object.fromEntries(val.entries()) as unknown as Serialized);\n }\n if (val instanceof ReadableStream) {\n return new LogValue(() => \">Stream<\");\n }\n if (isPromise(val)) {\n return new LogValue(() => \">Promise<\");\n }\n\n // Duplicate reference found, discard key\n if (ctx.state?.has(val)) {\n return new LogValue(() => \"...\");\n }\n ctx.state?.add(val);\n if (typeof val.toJSON === \"function\") {\n return new LogValue(() => val.toJSON());\n }\n\n const res: Record<string, LogValue> = {};\n const typedVal = val as unknown as Record<string, LogValueArg>;\n for (const key in typedVal) {\n if (ctx.ignoreAttr.IsSome() && ctx.ignoreAttr.unwrap().test(key)) {\n continue;\n }\n const element = typedVal[key];\n if (element instanceof LogValue) {\n res[key] = element;\n } else {\n if (typeof element !== \"function\") {\n res[key] = logValueInternal(element, ctx);\n }\n }\n }\n // ugly as hell cast but how declare a self-referencing type?\n return new LogValue(() => res as unknown as Serialized);\n }\n default:\n if (!val) {\n return new LogValue(() => \"--Falsy--\");\n }\n throw new Error(`Invalid type:${typeof val}`);\n }\n}\n\nexport interface Sized {\n size: number;\n}\nexport interface Lengthed {\n length: number;\n}\nexport type SizeOrLength = Sized | Lengthed;\n\nexport interface LogFormatter {\n format(attr: LogSerializable): Uint8Array;\n}\n\nexport interface LevelHandler {\n enableLevel(level: Level, ...modules: string[]): void;\n disableLevel(level: Level, ...modules: string[]): void;\n setExposeStack(enable?: boolean): void;\n setIgnoreAttr(re?: RegExp): void;\n ignoreAttr: Option<RegExp>;\n isStackExposed: boolean;\n setDebug(...modules: (string | string[])[]): void;\n isEnabled(ilevel: unknown, module: unknown): boolean;\n}\n\nexport type HttpType = Response | Result<Response> | Request | Result<Request>;\n\nexport interface LoggerInterface<R> {\n readonly levelHandler: LevelHandler;\n TxtEnDe(): TxtEnDecoder;\n Module(key: string): R;\n // if modules is empty, set for all Levels\n EnableLevel(level: Level, ...modules: string[]): R;\n DisableLevel(level: Level, ...modules: string[]): R;\n\n Attributes(): Record<string, unknown>;\n\n SetDebug(...modules: (string | string[])[]): R;\n // default is /^_/\n SetIgnoreAttribute(re?: RegExp): R;\n SetExposeStack(enable?: boolean): R;\n SetFormatter(fmt: LogFormatter): R;\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): R;\n Result<T>(key: string, res: Result<T>): R;\n // default key url\n Url(url: CoerceURI, key?: string): R;\n // len\n Len(value: unknown, key?: string): R;\n\n Hash(value: unknown, key?: string): R;\n\n Str<T extends string | Record<string, string>>(key: T, value?: T extends string ? string : undefined): R;\n Uint64<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;\n Int<T extends string | Record<string, number>>(key: T, value?: T extends string ? number : undefined): R;\n Bool<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;\n Any<T extends string | Record<string, unknown>>(key: T, value?: T extends string ? unknown : undefined): R;\n\n // first string is the key\n // first response is Response\n // first request is Request\n Http(...mix: (HttpType | string)[]): R;\n Pair(x: Record<string, unknown>): R;\n\n Error(): R;\n Warn(): R;\n Debug(): R;\n Log(): R;\n WithLevel(level: Level): R;\n\n Err<T>(err: T | Result<T> | Error): R; // could be Error, or something which coerces to string\n Info(): R;\n Timestamp(): R;\n Dur(key: string, nsec: number): R;\n}\n\nexport function IsLogger(obj: unknown): obj is Logger {\n return (\n typeof obj === \"object\" &&\n [\n \"Module\",\n \"EnableLevel\",\n \"DisableLevel\",\n \"SetDebug\",\n \"Str\",\n \"Error\",\n \"Warn\",\n \"Debug\",\n \"Log\",\n \"WithLevel\",\n \"Err\",\n \"Info\",\n \"Timestamp\",\n \"Any\",\n \"Dur\",\n \"Uint64\",\n ]\n .map((fn) => typeof (obj as Record<string, unknown>)[fn] === \"function\")\n .reduce((a, b) => a && b, true)\n );\n}\n\nexport interface WithLogger extends LoggerInterface<WithLogger> {\n Logger(): Logger;\n}\n\nexport interface AsError {\n AsError(): Error;\n ResultError<T>(): Result<T>;\n}\n\nexport interface Logger extends LoggerInterface<Logger> {\n With(): WithLogger;\n\n Msg(...args: string[]): AsError;\n Flush(): Promise<void>;\n}\n","import { isPromise } from \"./is-promise.js\";\n\nexport abstract class Result<T, E = Error> {\n static Ok<T = void>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T, E extends Error = Error>(t: E | string | Result<unknown, E>): Result<T, E> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as E);\n }\n if (Result.Is(t)) {\n if (t.is_ok()) {\n return new ResultError(new Error(\"Result Error is Ok\") as E);\n }\n return t as Result<T, E>;\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n// type WithoutPromise<T> = T extends Promise<infer U> ? U : T;\ntype WithResult<T> = T extends Promise<infer U> ? Promise<Result<U>> : Result<T>;\n\nexport function exception2Result<FN extends () => Promise<T> | T, T>(fn: FN): WithResult<ReturnType<FN>> {\n try {\n const res = fn();\n if (isPromise(res)) {\n return res.then((value) => Result.Ok(value)).catch((e) => Result.Err(e)) as WithResult<ReturnType<FN>>;\n }\n return Result.Ok(res) as WithResult<ReturnType<FN>>;\n } catch (e) {\n return Result.Err(e as Error) as WithResult<ReturnType<FN>>;\n }\n}\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","interface IType {\n readonly type: string;\n}\nclass _Required implements IType {\n readonly type = \"REQUIRED\";\n}\n\nclass _Optional implements IType {\n readonly type = \"OPTIONAL\";\n}\n\nexport const param: {\n REQUIRED: _Required;\n OPTIONAL: _Optional;\n} = {\n REQUIRED: new _Required(),\n OPTIONAL: new _Optional(),\n};\nexport type param = (typeof param)[keyof typeof param];\n","import { Result } from \"../result.js\";\nimport { param } from \"../types.js\";\n\nexport type MsgFn = (...keys: string[]) => string;\nexport type KeysParam = (string | MsgFn | Record<string, param | number | string | boolean | undefined | null>)[];\n\nexport function getParamsResult(\n keys: KeysParam,\n getParam: { getParam: (key: string) => string | undefined },\n): Result<Record<string, string>> {\n const keyDef = keys.flat().reduce(\n (acc, i) => {\n if (typeof i === \"string\") {\n acc.push({ key: i, def: undefined, isOptional: false });\n } else if (typeof i === \"object\") {\n acc.push(\n ...Object.keys(i).map((k) => ({\n key: k,\n def: typeof i[k] === \"string\" ? i[k] : undefined,\n isOptional: i[k] === param.OPTIONAL,\n })),\n );\n }\n return acc;\n },\n [] as { key: string; def?: string; isOptional: boolean }[],\n );\n //.filter((k) => typeof k === \"string\");\n const msgFn =\n keys.find((k) => typeof k === \"function\") ||\n ((...keys: string[]): string => {\n const msg = keys.join(\",\");\n return `missing parameters: ${msg}`;\n });\n const errors: string[] = [];\n const result: Record<string, string> = {};\n for (const kd of keyDef) {\n const val = getParam.getParam(kd.key);\n if (val === undefined) {\n if (typeof kd.def === \"string\") {\n result[kd.key] = kd.def;\n } else {\n if (!kd.isOptional) {\n errors.push(kd.key);\n }\n }\n } else {\n result[kd.key] = val;\n }\n }\n if (errors.length) {\n return Result.Err(msgFn(...errors));\n }\n return Result.Ok(result);\n}\n","export const PartType = {\n Slash: 0x1,\n Root: 0x3,\n Up: 0x4 /* /../ */,\n Noop: 0x8 /* ./ */,\n // RootUp = 0x8 /* ../ */,\n};\n\nexport type PartType = (typeof PartType)[keyof typeof PartType];\n\nexport type PathItem = string | PartType;\n\nexport class Path {\n readonly parts: PathItem[];\n constructor(parts: PathItem[] = []) {\n this.parts = parts;\n }\n\n toString(): string {\n return this.parts\n .map((part) => {\n if (typeof part === \"string\") {\n return part;\n } else {\n switch (part) {\n case PartType.Slash:\n case PartType.Root:\n return \"/\";\n case PartType.Up:\n return \"..\";\n default:\n return part;\n }\n }\n })\n .join(\"\");\n }\n\n add(part: PathItem): void {\n if (this.parts.includes(PartType.Root) && part === PartType.Root) {\n throw new Error(\"Cannot add absolute part to absolute path\");\n }\n const last = this.parts[this.parts.length - 1] as PartType;\n if (last & PartType.Slash && part === PartType.Slash) {\n return;\n }\n switch (part) {\n case \".\":\n this.parts.push(PartType.Noop);\n return;\n case \"..\":\n part = PartType.Up;\n }\n\n // if (part === PartType.Up && last === PartType.Slash) {\n // this.parts[this.parts.length - 1] = PartType.Up\n // return\n // }\n if (last === PartType.Noop && part === PartType.Slash) {\n if (last === PartType.Noop) {\n this.parts.pop();\n }\n return;\n }\n this.parts.push(part);\n }\n}\n\nexport function splitPath(path: string): Path {\n const p = new Path();\n if (path === \"\") {\n return p;\n }\n for (let count = 0; path.length; count++) {\n // const ipath = path\n if (path.match(/^\\/+/)) {\n if (count === 0) {\n p.add(PartType.Root);\n } else {\n p.add(PartType.Slash);\n }\n path = path.replace(/^\\/+/, \"\");\n } else {\n const part = path.replace(/\\/.*$/, \"\");\n p.add(part);\n path = path.replace(/^[^/]+/, \"\");\n }\n }\n return p;\n}\n\nexport function pathJoin(...paths: string[]): string {\n let prev = \"\";\n const res: string[] = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n if (path === \"\") {\n continue;\n }\n // i + 1 !== paths.length &&\n if (!(prev.endsWith(\"/\") || path.startsWith(\"/\"))) {\n if (prev !== \"\") {\n res.push(\"/\");\n }\n res.push(path);\n } else {\n res.push(path);\n }\n prev = path;\n }\n return res.join(\"\");\n}\n\nexport function relativePath(path: string, relative: string): string {\n const relativeParts = splitPath(relative);\n let result: string;\n if (relativeParts.parts[0] === PartType.Root) {\n result = relative;\n } else {\n result = pathJoin(path, relative);\n }\n const unoptPath = splitPath(result);\n // console.log(\"What\", result, unoptPath.parts)\n const out: PathItem[] = [];\n let topUp = false;\n for (const part of unoptPath.parts) {\n switch (part) {\n case PartType.Root:\n out.push(PartType.Root);\n break;\n case PartType.Up:\n if (out.length && !topUp) {\n const last = out.length - 1;\n if (typeof out[last] === \"string\" && (out[last - 1] as PartType) == PartType.Root) {\n out.pop();\n } else {\n out.pop();\n out.pop();\n }\n if (out.length === 0) {\n topUp = !topUp ? true : topUp;\n out.push(PartType.Up);\n }\n } else {\n out.push(PartType.Up);\n }\n break;\n case PartType.Slash:\n if (!((out[out.length - 1] as PartType) & PartType.Slash)) {\n out.push(PartType.Slash);\n }\n break;\n default:\n out.push(part);\n break;\n }\n }\n return new Path(out).toString();\n // return pathParts\n // .filter((part, index) => part !== relativeParts[index])\n // .join(\"\")\n}\n","export type StripCommand = string | RegExp;\n\nexport function stripper<T extends ArrayLike<S> | S, S>(\n strip: StripCommand | StripCommand[],\n obj: T,\n): T extends ArrayLike<unknown> ? Record<string, unknown>[] : Record<string, unknown> {\n const strips = Array.isArray(strip) ? strip : [strip];\n const restrips = strips.map((s) => {\n if (typeof s === \"string\") {\n const escaped = s.replace(/[-\\\\[\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\^\\\\$\\\\|]/g, \"\\\\$&\");\n return new RegExp(`^${escaped}$`);\n }\n return s;\n });\n return localStripper(undefined, restrips, obj) as T extends ArrayLike<unknown>\n ? Record<string, unknown>[]\n : Record<string, unknown>;\n}\n\nfunction localStripper<T>(path: string | undefined, restrips: RegExp[], obj: T): unknown {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((i) => localStripper(path, restrips, i));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ret = { ...obj } as Record<string, any>;\n const matcher = (key: string, nextPath: string): boolean => {\n for (const re of restrips) {\n if (re.test(key) || re.test(nextPath)) {\n return true;\n }\n }\n return false;\n };\n for (const key in ret) {\n if (Object.prototype.hasOwnProperty.call(ret, key)) {\n let nextPath: string;\n if (path) {\n nextPath = [path, key].join(\".\");\n } else {\n nextPath = key;\n }\n if (matcher(key, nextPath)) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete ret[key];\n continue;\n }\n if (typeof ret[key] === \"object\") {\n if (Array.isArray(ret[key])) {\n ret[key] = ret[key].reduce((acc: unknown[], v, i) => {\n const toDelete = matcher(key, `${nextPath}[${i}]`);\n if (!toDelete) {\n acc.push(localStripper(`${nextPath}[${i}]`, restrips, v));\n }\n return acc;\n }, []);\n } else {\n ret[key] = localStripper(nextPath, restrips, ret[key]);\n }\n }\n }\n }\n return ret;\n}\n","import type { DeepWritable } from \"ts-essentials\";\nimport { exception2Result, Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\nimport { relativePath } from \"./utils/relative-path.js\";\nimport { StripCommand, stripper } from \"./utils/stripper.js\";\n// import { param } from \"./types.js\";\n\ntype NullOrUndef = null | undefined;\n\ntype OneKey<K extends string, V = string> = Record<K, V>;\n\n/** @xdeprecated use param from get-params-result */\n// export const key = param;\n\n/*\n if KeyParam is a Object\n if the right side is a string, it is the default value\n if the right side is a !string | REQUIRED, it is required\n*/\n\n// type ReturnType<T extends (...args: KeysParam) => unknown> = T extends (...args: KeysParam) => infer R ? R : unknown;\n\n// function fetchData<T extends (...args: any[]) => Promise<any>>(fn: T): ReturnType<T> {\n// return fn();\n// }\n// type ReturnObject<T extends KeysParam> = {\n// [K in keyof T]: string;\n// };\n\nexport interface URIInterface<R extends URIInterface<R>> {\n // readonly hostname: string;\n // readonly port: string;\n // readonly host: string;\n // readonly protocol: string;\n // readonly pathname: string;\n readonly getParams: Iterable<[string, string]>;\n\n hasParam(key: string): boolean;\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined;\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string>;\n getParamsResult(...keys: KeysParam): Result<Record<string, string>>;\n match(other: CoerceURI): MatchResult;\n clone(): R;\n asURL(): URL;\n toString(): string;\n toJSON(): string;\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject>;\n}\n\nexport interface MatchResult {\n readonly score: number;\n readonly protocol: boolean;\n readonly hostname: boolean;\n readonly port: boolean;\n readonly pathname: boolean;\n readonly pathParts: string[];\n readonly params: Record<string, string>;\n}\n\nfunction match(iref: CoerceURI, ioth: CoerceURI): MatchResult {\n const mr: DeepWritable<MatchResult> = {\n score: 0,\n protocol: false,\n hostname: false,\n port: false,\n pathname: false,\n pathParts: [],\n params: {},\n };\n const ref = URI.from(iref);\n const oth = URI.from(ioth);\n if (ref.protocol === oth.protocol) {\n mr.score += 1;\n mr.protocol = true;\n }\n try {\n const refH = ref.hostname;\n const refP = ref.port;\n if (refH === oth.hostname) {\n mr.score += 1;\n mr.hostname = true;\n }\n if (refP.length && refP === oth.port) {\n mr.score += 1;\n mr.port = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // ignore\n }\n if (ref.pathname.length && ref.pathname !== \"/\") {\n const pref = ref.pathname.split(\"/\").filter((p) => p.length);\n const poth = oth.pathname.split(\"/\").filter((p) => p.length);\n for (let i = 0; i < pref.length && i < poth.length; i++) {\n if (poth[i] === pref[i]) {\n mr.score += 1;\n mr.pathname = true;\n mr.pathParts.push(pref[i]);\n }\n }\n }\n for (const [key, value] of ref.getParams) {\n if (oth.getParam(key) === value) {\n mr.score += 1;\n mr.params[key] = value;\n }\n }\n return mr;\n}\n\nfunction coerceKey(key: string | OneKey<string>, def?: string): { key: string; def?: string } {\n if (typeof key === \"object\") {\n const keys = Object.keys(key);\n if (keys.length !== 1) {\n throw new Error(`Invalid key: ${JSON.stringify(key)}`);\n }\n return { key: keys[0], def: key[keys[0]] };\n }\n return { key, def: def };\n}\n\nexport interface URIObject {\n readonly style: \"host\" | \"path\";\n readonly protocol: string;\n readonly pathname: string;\n readonly searchParams: Record<string, string>;\n}\n\nexport interface PathURIObject extends URIObject {\n readonly style: \"path\";\n}\n\nexport interface HostURIObject extends URIObject {\n readonly style: \"host\";\n readonly hostname: string;\n readonly port: string;\n}\n\nfunction falsy2undef<T>(value: T | NullOrUndef): T | undefined {\n return value === undefined || value === null ? undefined : value;\n}\n\nfunction ensureURLWithDefaultProto(url: string | URL, defaultProtocol: string): MutableURL {\n if (!url) {\n return new MutableURL(`${defaultProtocol}//`);\n }\n if (typeof url === \"string\") {\n try {\n return new MutableURL(url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return new MutableURL(`${defaultProtocol}//${url}`);\n }\n } else {\n return new MutableURL(url.toString());\n }\n}\n\nexport function isURL(value: unknown): value is URL {\n return (\n value instanceof URL ||\n (!!value &&\n typeof (value as URL).searchParams === \"object\" &&\n typeof (value as URL).searchParams.sort === \"function\" &&\n typeof (value as URL).hash === \"string\")\n );\n}\n\n// due to that the System URL class is has a strange behavior\n// on different platforms, we need to implement our own URL class\nexport class MutableURL extends URL {\n private readonly _sysURL: URL;\n // private readonly _urlStr: string;\n\n private _protocol: string;\n private _pathname: string;\n private _hasHostpart: boolean;\n\n override readonly hash: string;\n\n constructor(urlStr: string) {\n super(\"defect://does.not.exist\");\n const partedURL = urlStr.split(\":\");\n this._hasHostpart = hasHostPartProtocols.has(partedURL[0]);\n let hostPartUrl = [\"http\", ...partedURL.slice(1)].join(\":\");\n if (!this._hasHostpart) {\n const pathname = hostPartUrl.replace(/http:\\/\\/[/]*/, \"\").replace(/[#?].*$/, \"\");\n hostPartUrl = hostPartUrl.replace(/http:\\/\\//, `http://localhost/${pathname}`);\n }\n try {\n this._sysURL = new URL(hostPartUrl);\n } catch (ie) {\n const e = ie as Error;\n e.message = `${e.message} for URL: ${urlStr}`;\n throw e;\n }\n this._protocol = `${partedURL[0]}:`; // this._sysURL.protocol.replace(new RegExp(\"^cement-\"), \"\");\n if (this._hasHostpart) {\n this._pathname = this._sysURL.pathname;\n } else {\n this._pathname = urlStr.replace(new RegExp(`^${this._protocol}//`), \"\").replace(/[#?].*$/, \"\");\n }\n this.hash = this._sysURL.hash;\n }\n\n clone(): MutableURL {\n return new MutableURL(this.toString());\n }\n\n override get host(): string {\n if (!this._hasHostpart) {\n throw new Error(\n `you can use hostname only if protocol is ${this.toString()} ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`,\n );\n }\n return this._sysURL.host;\n }\n\n override get port(): string {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n return this._sysURL.port;\n }\n\n override set port(p: string) {\n if (!this._hasHostpart) {\n throw new Error(`you can use port only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n this._sysURL.port = p;\n }\n\n override get hostname(): string {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n return this._sysURL.hostname;\n }\n\n override set hostname(h: string) {\n if (!this._hasHostpart) {\n throw new Error(`you can use hostname only if protocol is ${JSON.stringify(Array.from(hasHostPartProtocols.keys()))}`);\n }\n this._sysURL.hostname = h;\n }\n\n override set pathname(p: string) {\n this._pathname = p;\n }\n\n override get pathname(): string {\n return this._pathname;\n }\n\n override get protocol(): string {\n return this._protocol;\n }\n\n override set protocol(p: string) {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n this._protocol = p;\n }\n\n override get searchParams(): URLSearchParams {\n return this._sysURL.searchParams;\n }\n\n override toString(): string {\n let search = \"\";\n if (this._sysURL.searchParams.size) {\n for (const [key, value] of Array.from(this._sysURL.searchParams.entries()).sort((a, b) => a[0].localeCompare(b[0]))) {\n search += `${!search.length ? \"?\" : \"&\"}${key}=${encodeURIComponent(value)}`;\n }\n }\n let hostpart = \"\";\n if (this._hasHostpart) {\n hostpart = this._sysURL.hostname;\n if (this._sysURL.port) {\n hostpart += `:${this._sysURL.port}`;\n }\n if (!this._pathname.startsWith(\"/\")) {\n hostpart += \"/\";\n }\n }\n return `${this._protocol}//${hostpart}${this._pathname}${search}`;\n }\n}\n\nfunction from<T>(fac: (url: MutableURL) => T, strURLUri: CoerceURI | undefined, defaultProtocol: string): T {\n switch (typeof falsy2undef(strURLUri)) {\n case \"undefined\":\n return fac(new MutableURL(`${defaultProtocol}///`));\n case \"string\":\n return fac(ensureURLWithDefaultProto(strURLUri as string, defaultProtocol));\n case \"object\":\n if (BuildURI.is(strURLUri)) {\n return fac(new MutableURL(strURLUri._url.toString()));\n } else if (URI.is(strURLUri)) {\n return fac(new MutableURL(strURLUri._url.toString()));\n } else if (isURL(strURLUri)) {\n return fac(new MutableURL(strURLUri.toString()));\n }\n throw new Error(`unknown object type: ${strURLUri}`);\n default:\n throw new Error(`Invalid argument: ${typeof strURLUri}`);\n }\n}\n\nfunction getParamResult(\n key: string,\n val: string | undefined,\n msgFn: (key: string) => string = (key) => {\n return `missing parameter: ${key}`;\n },\n): Result<string> {\n if (val === undefined) {\n return Result.Err(msgFn(key));\n }\n return Result.Ok(val);\n}\n\nexport class BuildURI implements URIInterface<BuildURI> {\n _url: MutableURL; // pathname needs this\n private constructor(url: MutableURL) {\n this._url = url;\n }\n\n static is(value: unknown): value is BuildURI {\n return (\n value instanceof BuildURI ||\n (!!value && typeof (value as BuildURI).delParam === \"function\" && typeof (value as BuildURI).setParam === \"function\")\n );\n }\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): BuildURI {\n return from((url) => new BuildURI(url), strURLUri, defaultProtocol);\n }\n\n match(other: CoerceURI): MatchResult {\n return match(this.URI(), URI.from(other));\n }\n\n port(p: string): BuildURI {\n this._url.port = p;\n return this;\n }\n\n hostname(h: string): BuildURI {\n this._url.hostname = h;\n return this;\n }\n\n protocol(p: string): BuildURI {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n this._url.protocol = p;\n return this;\n }\n\n pathname(p: string): BuildURI {\n this._url.pathname = p;\n return this;\n }\n\n // could pass a relative path or a full URL\n // if relative path, it will be appended to the current path\n resolve(p: CoerceURI): BuildURI {\n if (!p) {\n return this;\n }\n if (typeof p === \"string\") {\n // relative path\n if (!p.match(/^[a-zA-Z0-9]+:/)) {\n if (p.startsWith(\"/\")) {\n this.pathname(p);\n return this;\n }\n return this.appendRelative(p);\n }\n }\n this._url = new MutableURL(p.toString());\n return this;\n }\n\n appendRelative(p: CoerceURI): BuildURI {\n const appendUrl = URI.from(p);\n const pathname = \"./\" + appendUrl.pathname;\n const basePath = this._url.pathname;\n /*\n * cases\n * pathname \"\" basePAth \"\" -> \"\"\n * pathname \"/\" basePath \"\" -> \"/\"\n * pathname \"\" basePath \"/\" -> \"/\"\n * pathname \"/\" basePath \"/\" -> \"/\"\n * pathname \"ab\" basePath \"\" -> \"/ab\"\n * pathname \"ab\" basePath \"/\" -> \"/ab\"\n * pathname \"ab\" basePath \"/ab/\" -> \"/ab/ab\"\n * pathname \"/ab/\" basePath \"/ab/\" -> \"/ab/ab/\"\n */\n this.pathname(relativePath(basePath, pathname));\n // if (pathname.startsWith(\"/\")) {\n // pathname = pathname.replace(/^\\//, \"\");\n // }\n // if (basePath.length > 0) {\n // basePath = basePath.replace(/\\/$/, \"\");\n // }\n // this.pathname(basePath + \"/\" + pathname);\n for (const [key, value] of appendUrl.getParams) {\n this.setParam(key, value);\n }\n return this;\n }\n\n cleanParams(): BuildURI {\n for (const key of Array.from(this._url.searchParams.keys())) {\n this._url.searchParams.delete(key);\n }\n return this;\n }\n\n delParam(key: string): BuildURI {\n this._url.searchParams.delete(key);\n return this;\n }\n\n defParam(key: string, str: string): BuildURI {\n if (!this._url.searchParams.has(key)) {\n this._url.searchParams.set(key, str);\n }\n return this;\n }\n\n setParam(key: string, str: string): BuildURI {\n this._url.searchParams.set(key, str);\n return this;\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined {\n const { key: k, def: d } = coerceKey(key, def);\n let val = this._url.searchParams.get(k);\n if (!falsy2undef(val) && d) {\n val = d;\n }\n return falsy2undef(val) as T extends string ? string : string | undefined;\n }\n\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string> {\n return getParamResult(key, this.getParam(key), msgFn);\n }\n\n getParamsResult(...keys: KeysParam): Result<Record<string, string>> {\n return getParamsResult(keys, this);\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n toJSON(): string {\n return this.toString();\n }\n\n asURL(): URL {\n return this.URI().asURL();\n }\n\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject> {\n return this.URI().asObj(...strips);\n }\n\n clone(): BuildURI {\n return BuildURI.from(this.toString());\n }\n\n URI(): URI {\n return URI.from(this._url);\n }\n}\n\nexport type CoerceURI = string | URI | MutableURL | URL | BuildURI | NullOrUndef;\n\nexport function isCoerceURI(value: unknown): value is CoerceURI {\n if (!value) {\n return false;\n }\n if (isURL(value)) {\n // includes MutableURL\n return true;\n }\n if (URI.is(value)) {\n return true;\n }\n if (BuildURI.is(value)) {\n return true;\n }\n if (typeof value === \"string\") {\n return true;\n }\n return false;\n}\n\nexport const hasHostPartProtocols: Set<string> = new Set<string>([\"http\", \"https\", \"ws\", \"wss\"]);\n\n// non mutable URL Implementation\nexport class URI implements URIInterface<URI> {\n static protocolHasHostpart(protocol: string): () => void {\n protocol = protocol.replace(/:$/, \"\");\n hasHostPartProtocols.add(protocol);\n return () => {\n hasHostPartProtocols.delete(protocol);\n };\n }\n\n match(other: CoerceURI): MatchResult {\n return match(this, other);\n }\n\n // if no protocol is provided, default to file:\n static merge(into: CoerceURI, from: CoerceURI, defaultProtocol = \"file:\"): URI {\n const intoUrl = BuildURI.from(into, defaultProtocol);\n const fromUrl = URI.from(from, defaultProtocol);\n\n intoUrl.protocol(fromUrl.protocol);\n const fPath = fromUrl.pathname;\n if (!(fPath.length === 0 || fPath === \"/\" || fPath === \"./\")) {\n intoUrl.pathname(fromUrl.pathname);\n }\n for (const [key, value] of fromUrl.getParams) {\n intoUrl.setParam(key, value);\n }\n return intoUrl.URI();\n }\n\n static is(value: unknown): value is URI {\n return (\n value instanceof URI ||\n (!!value &&\n typeof (value as URI).asURL === \"function\" &&\n typeof (value as URI).getParam === \"function\" &&\n typeof (value as URI).hasParam === \"function\")\n );\n }\n\n // if no protocol is provided, default to file:\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): URI {\n return from((url) => new URI(url), strURLUri, defaultProtocol);\n }\n\n static fromResult(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): Result<URI> {\n return exception2Result(() => from((url) => new URI(url), strURLUri, defaultProtocol)) as Result<URI>;\n }\n\n readonly _url: MutableURL;\n private constructor(url: MutableURL) {\n this._url = url.clone();\n }\n\n build(): BuildURI {\n return BuildURI.from(this._url);\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n // get password(): string {\n // return this._url.password;\n // }\n\n get port(): string {\n return this._url.port;\n }\n\n get host(): string {\n return this._url.host;\n }\n\n // get username(): string {\n // return this._url.username;\n // }\n\n // get search(): string {\n // return this._url.search;\n // }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n get pathname(): string {\n return this._url.pathname;\n // return this._url\n // .toString()\n // .replace(/^.*:\\/\\//, \"\")\n // .replace(/\\?.*$/, \"\");\n }\n\n // get hash(): string {\n // return this._url.hash;\n // }\n\n // get host(): string {\n // return this._url.host;\n // }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n\n getParam<T extends string | undefined>(key: string | OneKey<string>, def?: T): T extends string ? string : string | undefined {\n const { key: k, def: d } = coerceKey(key, def);\n let val = this._url.searchParams.get(k);\n if (!falsy2undef(val) && d) {\n val = d;\n }\n return falsy2undef(val) as T extends string ? string : string | undefined;\n }\n\n getParamResult(key: string, msgFn?: (key: string) => string): Result<string> {\n return getParamResult(key, this.getParam(key), msgFn);\n }\n\n getParamsResult(...keys: KeysParam): Result<Record<string, string>> {\n return getParamsResult(keys, this);\n }\n\n clone(): URI {\n return new URI(this._url);\n }\n\n asURL(): URL {\n // const url = new URL(this._url.toString());\n // url.searchParams.sort();\n return this._url.clone() as unknown as URL;\n }\n\n toString(): string {\n // this._url.searchParams.sort();\n return this._url.toString();\n }\n toJSON(): string {\n return this.toString();\n }\n asObj(...strips: StripCommand[]): Partial<HostURIObject | PathURIObject> {\n const pathURI: PathURIObject = {\n style: \"path\",\n protocol: this.protocol,\n pathname: this.pathname,\n searchParams: Object.fromEntries(this.getParams),\n };\n if (hasHostPartProtocols.has(this.protocol.replace(/:$/, \"\"))) {\n return stripper(strips, {\n ...pathURI,\n style: \"host\",\n hostname: this.hostname,\n port: this.port,\n }) as Partial<HostURIObject>;\n }\n return stripper(strips, pathURI) as Partial<PathURIObject>;\n }\n}\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","export interface LRUParam {\n readonly maxEntries: number;\n readonly maxAge: number; // not implemented\n}\n\nexport class LRUSet<T> {\n private readonly _lruMap: LRUMap<T, T>;\n\n constructor(param: Partial<LRUParam> = {}) {\n this._lruMap = new LRUMap<T, T>(param);\n }\n\n setParam(param: Partial<LRUParam> = {}): void {\n this._lruMap.setParam(param);\n }\n\n get size(): number {\n return this._lruMap.size;\n }\n\n has(key: T): boolean {\n return this._lruMap.has(key);\n }\n\n add(key: T): void {\n this._lruMap.set(key, key);\n }\n\n delete(key: T): void {\n this._lruMap.delete(key);\n }\n\n clear(): void {\n this._lruMap.clear();\n }\n\n forEach(callbackfn: (value: T, key: T) => void): void {\n this._lruMap.forEach((value) => callbackfn(value, value));\n }\n\n entries(): IterableIterator<[T, T]> {\n return this._lruMap.entries();\n }\n}\n\nexport class LRUMap<T, K> {\n private _map: Map<T, K> = new Map<T, K>();\n private param: LRUParam;\n\n constructor(c: Partial<LRUParam> = {}) {\n this.param = {\n maxEntries: c.maxEntries || 100,\n maxAge: c.maxAge || 0,\n };\n }\n\n private touch(key: T): K {\n if (!this._map.has(key)) {\n throw new Error(`key not found in cache: ${key as unknown as string}`);\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const value = this._map.get(key)!;\n this._map.delete(key);\n this._map.set(key, value);\n return value;\n }\n\n setParam(param: Partial<LRUParam> = {}): void {\n if (typeof param.maxEntries === \"number\") {\n (this.param as { maxEntries: number }).maxEntries = param.maxEntries;\n if (param.maxEntries > 0 && this._map.size > param.maxEntries) {\n const toDelete: T[] = [];\n let cacheSize = this._map.size;\n for (const key of this._map.keys()) {\n if (cacheSize > param.maxEntries) {\n toDelete.push(key);\n cacheSize--;\n } else {\n break;\n }\n }\n for (const key of toDelete) {\n this._map.delete(key);\n }\n }\n }\n }\n\n has(key: T): boolean {\n return this._map.has(key);\n }\n\n get size(): number {\n return this._map.size;\n }\n\n async getSet(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined> {\n const val = this.get(key);\n if (val) {\n return val;\n } else {\n const val = await createFN(key);\n this.set(key, val as K);\n return val;\n }\n }\n\n get(key: T): K | undefined {\n if (this._map.has(key)) {\n return this.touch(key);\n }\n return this._map.get(key);\n }\n\n set(key: T, value: K): void {\n this._map.delete(key);\n if (this.param.maxEntries > 0 && this._map.size >= this.param.maxEntries) {\n // delete the least recently accessed\n // const key = Array.from(this.cache.keys())[0];\n // this.cache.delete(key) or\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._map.delete(this._map.keys().next().value!);\n this._map.set(key, value);\n } else {\n this._map.set(key, value);\n }\n }\n\n delete(key: T): void {\n this._map.delete(key);\n }\n\n clear(): void {\n this._map.clear();\n }\n\n forEach(callbackfn: (value: K, key: T, map: Map<T, K>) => void): void {\n this._map.forEach(callbackfn);\n }\n\n entries(): IterableIterator<[T, K]> {\n return this._map.entries();\n }\n // *entries(): IterableIterator<[T, K]> {\n // for (const x of this._cache.entries()) {\n // yield x;\n // }\n // }\n\n // getLeastRecent(): K {\n // return Array.from(this.cache)[0];\n // }\n\n // getMostRecent(): K {\n // return Array.from(this.cache)[this.cache.size - 1];\n // }\n}\n","import { Future } from \"./future.js\";\nimport { LRUMap, LRUParam } from \"./lru-map-set.js\";\nimport { Result } from \"./result.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\n readonly _flushWaiting: Future<void>[] = [];\n flush(): Promise<void> {\n if (this._seqFutures.length > 0) {\n const waitForFlush = new Future<void>();\n this._flushWaiting?.push(waitForFlush);\n return waitForFlush.asPromise();\n }\n return Promise.resolve();\n }\n _step(item?: ResolveSeqItem<T, C>): Promise<void> {\n if (!item) {\n // done\n this._flushWaiting.forEach((f) => f.resolve());\n this._flushWaiting?.splice(0, this._flushWaiting.length);\n return Promise.resolve();\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 void this._step(this._seqFutures[0]);\n });\n return Promise.resolve();\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 void 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 _inProgress?: Future<T>;\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 if (this._inProgress) {\n const idx = this._onceFutures.findIndex((f) => f === this._inProgress);\n if (idx >= 0) {\n // leave the current in progress future\n this._onceFutures.push(...this._onceFutures.splice(2).slice(1));\n }\n } else {\n this._onceFutures.length = 0;\n }\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;\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 this._inProgress = future;\n // let inCriticalSection = false;\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n // inCriticalSection = true;\n (ret as Promise<T>)\n .then(okFn)\n .catch(catchFn)\n .finally(() => {\n this._inProgress = undefined;\n });\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n if (!this._isPromise) {\n this._inProgress = undefined;\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 interface KeyedParam {\n readonly lru: Partial<LRUParam>;\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n protected readonly _map: LRUMap<K, T>;\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T, params: Partial<KeyedParam>) {\n this.factory = factory;\n this._map = new LRUMap<K, T>(params?.lru ?? { maxEntries: -1 });\n }\n\n setParam(params: KeyedParam): void {\n this._map.setParam(params.lru);\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(kp: Partial<KeyedParam> = {}) {\n super((key) => new ResolveOnce<T, K>(key), kp);\n }\n\n /**\n *\n * @returns The values of the resolved keys\n */\n values(): { key: K; value: Result<T> }[] {\n return (\n Array.from(this._map.entries())\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n .filter(([_, v]) => v._onceDone)\n .map(([k, v]) => {\n if (v._onceDone) {\n if (v._onceError) {\n return {\n key: k,\n value: Result.Err(v._onceError),\n };\n }\n return {\n key: k,\n value: Result.Ok(v._onceValue as T),\n };\n }\n throw new Error(\"KeyedResolvOnce.values impossible\");\n })\n );\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor(kp: Partial<KeyedParam> = {}) {\n super((key) => new ResolveSeq<T, K>(key), kp);\n }\n}\n","import { Result } from \"../result.js\";\n\n// Tested in txt-en-decoder.test.ts\n\ninterface GlobalBuffer {\n Buffer?: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isBuffer: (obj: any) => obj is {\n buffer: ArrayBufferLike;\n byteOffset: number;\n byteLength: number;\n };\n };\n}\nconst globalBuffer = globalThis as GlobalBuffer;\n\nexport type ToUInt8Plain = Uint8Array | ArrayBuffer | ArrayBufferView;\nexport type ToUInt8Async = ToUInt8Plain | Blob;\nexport type ToUInt8 = ToUInt8Plain | Result<ToUInt8Plain>;\nexport type AsyncToUInt8 = ToUInt8Async | Result<ToUInt8Async> | Promise<ToUInt8Async> | Promise<Result<ToUInt8Async>>;\n\nexport function coerceIntoUint8(raw: ToUInt8): Result<Uint8Array> {\n if (raw instanceof ArrayBuffer) {\n return Result.Ok(new Uint8Array(raw));\n }\n if (ArrayBuffer.isView(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Blob) {\n return Result.Err(\"Blob not supported\");\n }\n if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Uint8Array) {\n return Result.Ok(raw);\n }\n if (Result.Is(raw)) {\n if (raw.isErr()) {\n return Result.Err(raw);\n }\n return coerceIntoUint8(raw.unwrap());\n }\n return Result.Err(\"Not a Uint8Array\");\n}\n\nexport async function asyncCoerceIntoUint8(raw: AsyncToUInt8): Promise<Result<Uint8Array>> {\n let resolved = await raw;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return coerceIntoUint8(resolved as ToUInt8);\n}\n","import { ResolveOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { coerceIntoUint8, ToUInt8 } from \"./utils/coerce-uint8.js\";\n\nexport type ToEnDecoder = ToUInt8 | string | Result<string>;\nexport type AsyncToEnDecoder = ToEnDecoder | Blob | Promise<ToEnDecoder | Blob>;\n\nexport interface TxtEnDecoder {\n encode(input: string): Uint8Array;\n decode(input: ToEnDecoder): string;\n asyncDecode(input: AsyncToEnDecoder): Promise<string>;\n}\n\nclass TxtOps implements TxtEnDecoder {\n readonly encoder = new TextEncoder();\n readonly decoder = new TextDecoder();\n\n encode(str: string): Uint8Array {\n return this.encoder.encode(str);\n }\n decode(data: ToEnDecoder): string {\n if (Result.Is(data)) {\n if (data.isErr()) {\n throw data.Err();\n }\n // only for string let do coerceInto the work\n const unwrapped = data.unwrap();\n if (typeof unwrapped === \"string\") {\n return this.decode(unwrapped);\n }\n }\n if (typeof data === \"string\") {\n return data;\n }\n return this.decoder.decode(coerceIntoUint8(data as ToUInt8).Ok());\n }\n\n async asyncDecode(data: AsyncToEnDecoder): Promise<string> {\n let resolved = await data;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return this.decode(resolved);\n }\n}\n\nconst txtEnDecoder = new ResolveOnce<TxtEnDecoder>();\nexport function TxtEnDecoderSingleton(): TxtEnDecoder {\n return txtEnDecoder.once(() => new TxtOps());\n}\n","export abstract class Option<T> {\n static Some<T>(t: T): Option<T> {\n return new Some(t);\n }\n\n static None<T>(): Option<T> {\n return new None();\n }\n\n static Is<T>(t: unknown): t is Option<T> {\n return t instanceof Option;\n }\n\n static From<T>(t?: T): Option<T> {\n if (!t) {\n return new None();\n }\n return new Some(t);\n }\n\n IsNone(): boolean {\n return this.is_none();\n }\n\n IsSome(): boolean {\n return this.is_some();\n }\n Unwrap(): T {\n return this.unwrap();\n }\n\n abstract is_none(): boolean;\n abstract is_some(): boolean;\n abstract unwrap(): T;\n}\n\nexport class Some<T> extends Option<T> {\n private _t: T;\n constructor(_t: T) {\n super();\n this._t = _t;\n }\n\n is_none(): boolean {\n return false;\n }\n is_some(): boolean {\n return true;\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class None<T> extends Option<T> {\n is_none(): boolean {\n return true;\n }\n is_some(): boolean {\n return false;\n }\n unwrap(): T {\n throw new Error(\"None.unwrap\");\n }\n}\n\nexport type WithoutOption<T> = T extends Option<infer U> ? U : T;\n","import { LevelHandler, Level } from \"./logger.js\";\nimport { Option } from \"./option.js\";\n\nexport class LevelHandlerImpl implements LevelHandler {\n readonly _globalLevels: Set<Level> = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);\n readonly _modules: Map<string, Set<Level>> = new Map<string, Set<Level>>();\n\n ignoreAttr: Option<RegExp> = Option.Some(/^_/);\n isStackExposed = false;\n enableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.add(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, level]));\n },\n ...modules,\n );\n }\n disableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.delete(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.delete(p);\n },\n ...modules,\n );\n }\n\n setExposeStack(enable?: boolean): void {\n this.isStackExposed = !!enable;\n }\n\n setIgnoreAttr(re?: RegExp): void {\n this.ignoreAttr = Option.From(re);\n }\n\n forModules(level: Level, fnAction: (p: string) => void, ...modules: (string | string[])[]): void {\n for (const m of modules.flat()) {\n if (typeof m !== \"string\") {\n continue;\n }\n const parts = m\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length);\n for (const p of parts) {\n fnAction(p);\n }\n }\n }\n setDebug(...modules: (string | string[])[]): void {\n this.forModules(\n Level.DEBUG,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, Level.DEBUG]));\n },\n ...modules,\n );\n }\n isEnabled(ilevel: unknown, module: unknown): boolean {\n const level = ilevel as Level; // what if it's not a level?\n if (typeof module === \"string\") {\n const levels = this._modules.get(module);\n if (levels && levels.has(level)) {\n return true;\n }\n }\n const wlevel = this._modules.get(\"*\");\n if (wlevel && typeof level === \"string\") {\n if (wlevel.has(level)) {\n return true;\n }\n }\n if (typeof level !== \"string\") {\n // this is a plain log\n return true;\n }\n return this._globalLevels.has(level);\n }\n}\n\nconst levelSingleton = new LevelHandlerImpl();\n\nexport function LevelHandlerSingleton(): LevelHandler {\n return levelSingleton;\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n isCFWorker: boolean;\n}\n\nfunction isSet(value: string, ref: Record<string, unknown> = 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] as Record<string, unknown>);\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 // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\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 { FileService } from \"./file-service.js\";\nimport { Env } from \"./sys-env.js\";\nimport { Time } from \"./time.js\";\n\nexport const TimeMode = {\n REAL: \"real\",\n CONST: \"const\",\n STEP: \"step\",\n};\nexport type TimeMode = (typeof TimeMode)[keyof typeof TimeMode];\n\nexport const RandomMode = {\n CONST: \"const\",\n STEP: \"step\",\n RANDOM: \"random\",\n};\nexport type RandomMode = (typeof RandomMode)[keyof typeof RandomMode];\n\nexport const IDMode = {\n UUID: \"uuid\",\n CONST: \"const\",\n STEP: \"step\",\n};\nexport type IDMode = (typeof IDMode)[keyof typeof IDMode];\n\nexport function String2TimeMode(s?: string): TimeMode {\n switch (s?.toLowerCase()) {\n case \"real\":\n return TimeMode.REAL;\n case \"const\":\n return TimeMode.CONST;\n case \"step\":\n return TimeMode.STEP;\n default:\n return TimeMode.REAL;\n }\n}\n\nexport type VoidFunc = () => void | Promise<void>;\n\nexport interface SystemService {\n OnExit(hdl: VoidFunc): VoidFunc;\n Exit(code: number): void;\n}\n\nexport interface RuntimeSysAbstraction extends BasicSysAbstraction {\n System(): SystemService;\n FileSystem(): FileService;\n}\n\nexport interface BasicRuntimeService {\n Stdout(): WritableStream<Uint8Array>;\n Stderr(): WritableStream<Uint8Array>;\n Env(): Env;\n Args(): string[];\n}\n\nexport interface BasicSysAbstraction extends BasicRuntimeService {\n Time(): Time;\n NextId(): string;\n Random0ToValue(value: number): number;\n}\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 const TimeUnits = {\n Microsecond: 1,\n Second: 1000 * 1, //Microsecond,\n Minute: 60 * 1000 * 1, //Second,\n Hour: 60 * 60 * 1000 * 1, // Minute,\n};\nexport type TimeUnit = keyof typeof TimeUnits;\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { EnvActions, EnvFactoryOpts, Env } from \"../sys-env.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","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { EnvActions, EnvImpl, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<CFEnvActions>();\nexport class CFEnvActions implements EnvActions {\n readonly injectOnRegister: Record<string, string> = {};\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 if (env.env) {\n env.env.set(key, value);\n } else {\n env.injectOnRegister[key] = value;\n }\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 for (const key in this.injectOnRegister) {\n env.set(key, this.injectOnRegister[key]);\n }\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","import { DenoEnvActions } from \"./deno/deno-env-actions.js\";\nimport { NodeEnvActions } from \"./node/node-env-actions.js\";\nimport { BrowserEnvActions } from \"./web/web-env-actions.js\";\nimport { CFEnvActions } from \"./cf/cf-env-actions.js\";\nimport { KeyedResolvOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\n\nexport type EnvTuple = ([string, string] | [string, string][] | Record<string, string> | Iterator<[string, string]>)[];\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 gets(...kparams: KeysParam): Result<Record<string, string>>;\n sets(...keys: EnvTuple): 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\nfunction isIterable(obj: unknown): obj is Iterable<[string, string]> {\n // checks for null and undefined\n if (obj == null) {\n return false;\n }\n return typeof (obj as Record<symbol, unknown>)[Symbol.iterator] === \"function\";\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 gets(...kparams: KeysParam): Result<Record<string, string>> {\n return getParamsResult(kparams, {\n getParam: (k) => this.get(k),\n });\n }\n sets(...keys: EnvTuple): void {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n if (key.length === 2) {\n const [k, v] = key;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n return;\n }\n }\n for (const item of key) {\n if (Array.isArray(item)) {\n // [string, string]\n if (item.length === 2) {\n const [k, v] = item;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n } else {\n if (isIterable(key)) {\n for (const [k, v] of key) {\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n } else {\n const rKey = key as Record<string, string>;\n for (const k in rKey) {\n const v = rKey[k];\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n });\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","export class ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder: TextDecoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n write(chunk?: Uint8Array): Promise<void> {\n let strObj: string | { level: string } = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n strObj = JSON.parse(strObj) as { level: string };\n output = strObj.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(strObj);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(strObj);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(strObj);\n }\n return Promise.resolve();\n }\n}\n\nexport class ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n close(): Promise<void> {\n return Promise.resolve();\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { ConsoleWriterStream } from \"../utils/console-write-stream.js\";\n\n// export 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): 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 BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n Stdout(): WritableStream<Uint8Array> {\n return new ConsoleWriterStream();\n // const decoder = this._txtEnDe;\n // return 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 }\n Stderr(): WritableStream<Uint8Array> {\n const decoder = this._txtEnDe;\n return 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\nconst baseSysAbstraction = new ResolveOnce();\nexport function WebBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new WebSystemService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class CFRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return CFWriteableStream((chunk) => {\n const decoded = this._txtEnDe.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n return Promise.resolve();\n });\n }\n Stderr(): WritableStream<Uint8Array> {\n return CFWriteableStream((chunk) => {\n const decoded = this._txtEnDe.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n return Promise.resolve();\n });\n }\n}\n\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<Uint8Array> {\n const ts = new TransformStream<Uint8Array, Uint8Array>();\n consumeReadableStream(ts.readable.getReader(), writeFn);\n return ts.writable;\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function CFBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new CFRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class DenoRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n }\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return globalThis.Deno.args;\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return globalThis.Deno.stdout.writable;\n }\n Stderr(): WritableStream<Uint8Array> {\n return globalThis.Deno.stderr.writable;\n }\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function DenoBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new DenoRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { BaseBasicSysAbstraction, WrapperBasicSysAbstraction, WrapperBasicSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { ResolveOnce } from \"../resolve-once.js\";\nimport { BasicRuntimeService, BasicSysAbstraction } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class NodeRuntimeService implements BasicRuntimeService {\n readonly _txtEnDe: TxtEnDecoder;\n readonly _gthis: {\n process: {\n argv: string[];\n stdout: {\n write(chunk: Uint8Array): void;\n };\n stderr: {\n write(chunk: Uint8Array): void;\n };\n };\n };\n constructor(ende: TxtEnDecoder) {\n this._txtEnDe = ende;\n this._gthis = globalThis as unknown as NodeRuntimeService[\"_gthis\"];\n }\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return this._gthis.process.argv;\n }\n\n Stdout(): WritableStream<Uint8Array> {\n return new WritableStream({\n write: (chunk: Uint8Array): void => {\n this._gthis.process.stdout.write(chunk);\n },\n });\n }\n Stderr(): WritableStream<Uint8Array> {\n return new WritableStream<Uint8Array>({\n write: (chunk: Uint8Array): void => {\n this._gthis.process.stderr.write(chunk);\n },\n });\n }\n}\n\nconst baseSysAbstraction = new ResolveOnce<BaseBasicSysAbstraction>();\nexport function NodeBasicSysAbstraction(param?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const my = baseSysAbstraction.once(() => {\n return new BaseBasicSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n });\n });\n return new WrapperBasicSysAbstraction(my, {\n basicRuntimeService: new NodeRuntimeService(param?.TxtEnDecoder ?? my._txtEnDe),\n ...param,\n });\n}\n","import { FileService } from \"./file-service.js\";\nimport { runtimeFn } from \"./runtime.js\";\nimport {\n TimeMode,\n RandomMode,\n IDMode,\n SystemService,\n VoidFunc,\n BasicSysAbstraction,\n BasicRuntimeService,\n} from \"./sys-abstraction.js\";\nimport { Time } from \"./time.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\nimport { WebBasicSysAbstraction } from \"./web/web-basic-sys-abstraction.js\";\nimport { Env } from \"./sys-env.js\";\nimport { CFBasicSysAbstraction } from \"./cf/cf-basic-sys-abstraction.js\";\nimport { DenoBasicSysAbstraction } from \"./deno/deno-basic-sys-abstraction.js\";\nimport { NodeBasicSysAbstraction } from \"./node/node-basic-sys-abstraction.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 BaseBasicSysAbstractionParams {\n readonly TxtEnDecoder: TxtEnDecoder;\n}\n\nexport interface BaseSysAbstractionParams extends BaseBasicSysAbstractionParams {\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\n\nexport class BaseBasicSysAbstraction {\n readonly _time: SysTime = new SysTime();\n\n // system independent services\n readonly _idService: IdService = new IdService();\n readonly _randomService: RandomService = new RandomService(RandomMode.RANDOM);\n readonly _txtEnDe: TxtEnDecoder;\n\n constructor(params: BaseBasicSysAbstractionParams) {\n this._txtEnDe = params.TxtEnDecoder;\n }\n}\n\nexport class BaseSysAbstraction extends BaseBasicSysAbstraction {\n // system related services\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n\n constructor(params: BaseSysAbstractionParams) {\n super(params);\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n }\n}\n\nexport interface BasicSysAbstractionParams {\n readonly TimeMode: TimeMode;\n readonly IdMode: IDMode;\n readonly RandomMode: RandomMode;\n // readonly FileSystem: FileService;\n // readonly SystemService: SystemService;\n readonly TxtEnDecoder: TxtEnDecoder;\n // readonly BasicRuntimeService: BasicSysAbstraction;\n}\n\nexport type WrapperBasicSysAbstractionParams = Partial<BasicRuntimeService & BasicSysAbstractionParams>;\n\nexport function BasicSysAbstractionFactory(params?: WrapperBasicSysAbstractionParams): BasicSysAbstraction {\n const fn = runtimeFn();\n switch (true) {\n case fn.isBrowser:\n return WebBasicSysAbstraction(params);\n case fn.isDeno:\n return DenoBasicSysAbstraction(params);\n case fn.isCFWorker:\n return CFBasicSysAbstraction(params);\n case fn.isNodeIsh:\n return NodeBasicSysAbstraction(params);\n default:\n throw new Error(\"Unknown runtime\");\n }\n}\n\nexport class WrapperBasicSysAbstraction implements BasicSysAbstraction {\n readonly _time: Time;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _basicRuntimeService: BasicRuntimeService;\n constructor(\n base: BaseBasicSysAbstraction,\n params: Partial<BasicSysAbstractionParams> & { basicRuntimeService: BasicRuntimeService },\n ) {\n this._time = base._time;\n this._basicRuntimeService = params.basicRuntimeService;\n this._idService = base._idService;\n this._randomService = base._randomService;\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\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 }\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._basicRuntimeService.Stdout();\n }\n Stderr(): WritableStream {\n return this._basicRuntimeService.Stderr();\n }\n Env(): Env {\n return this._basicRuntimeService.Env();\n }\n Args(): string[] {\n return this._basicRuntimeService.Args();\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\nexport class WrapperRuntimeSysAbstraction extends WrapperBasicSysAbstraction {\n readonly _systemService: SystemService;\n readonly _fileSystem: FileService;\n constructor(\n base: BaseSysAbstraction,\n params: Partial<BaseBasicSysAbstraction> & {\n systemService?: SystemService;\n fileSystem?: FileService;\n basicRuntimeService: BasicRuntimeService;\n },\n ) {\n super(base, params);\n this._systemService = params.systemService ?? base._systemService;\n this._fileSystem = params.fileSystem ?? base._fileSystem;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n","export class LogWriterStream {\n readonly _out: WritableStream<Uint8Array>;\n readonly _toFlush: (() => Promise<void>)[] = [];\n\n readonly _id: number;\n\n constructor(out: WritableStream<Uint8Array>) {\n this._out = out;\n this._id = Math.random();\n // console.log(\">>>My:constructor:\", this._id);\n }\n\n write(encoded: Uint8Array): void {\n const my = async (): Promise<void> => {\n // const val = Math.random();\n // console.log(\">>>My:\", encoded)\n try {\n // console.log(\">>>My:getWriter:get:\", this._id);\n const writer = this._out.getWriter();\n await writer.ready;\n await writer.write(encoded);\n writer.releaseLock();\n // console.log(\">>>My:getWriter:release\", this._id);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Chunk error:\", err);\n }\n // console.log(\"<<<My:\", val)\n };\n this._toFlush.push(my);\n this._flush();\n }\n\n _flushIsRunning = false;\n _flushDoneFns: (() => void)[] = [];\n _flush(toFlush: (() => Promise<void>)[] | undefined = undefined, done?: () => void): void {\n if (done) {\n this._flushDoneFns.push(done);\n }\n\n if (this._toFlush.length == 0) {\n // console.log(\"Flush is stopped\", this._toFlush.length)\n this._flushIsRunning = false;\n this._flushDoneFns.forEach((fn) => fn());\n this._flushDoneFns = [];\n return;\n }\n\n if (!toFlush && this._toFlush.length == 1 && !this._flushIsRunning) {\n this._flushIsRunning = true;\n // console.log(\"Flush is started\", this._toFlush.length)\n } else if (!toFlush) {\n // console.log(\"flush queue check but is running\", this._toFlush.length)\n return;\n }\n\n // console.log(\">>>Msg:\", this._toFlush.length)\n const my = this._toFlush.shift();\n my?.()\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"Flush error:\", e);\n })\n .finally(() => {\n // console.log(\"<<<Msg:\", this._toFlush.length)\n this._flush(this._toFlush);\n });\n }\n}\n","export class FanoutWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n","import { FanoutWriteStream } from \"../utils/fanout-write-stream.js\";\nimport { Future } from \"../future.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n private readonly _bufferArr: Uint8Array[];\n\n constructor(bufferArr: Uint8Array[]) {\n this._bufferArr = bufferArr;\n }\n\n readonly _resolveClosed: Future<undefined> = new Future<undefined>();\n readonly closed: Promise<undefined> = this._resolveClosed.asPromise();\n readonly desiredSize: number | null = null;\n readonly ready: Promise<undefined> = Promise.resolve(undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n await this.closed;\n return Promise.resolve(undefined);\n }\n releaseLock(): void {\n // do nothing\n }\n async write(chunk?: Uint8Array): Promise<void> {\n if (chunk) {\n this._bufferArr.push(chunk);\n }\n return Promise.resolve(undefined);\n }\n}\n\nexport class LogCollector implements WritableStream<Uint8Array> {\n readonly locked: boolean = false;\n private _writer?: FanoutWriteStream;\n private readonly _pass?: WritableStreamDefaultWriter<Uint8Array>;\n private readonly _bufferArr: Uint8Array[] = [];\n private readonly _txtEnDe: TxtEnDecoder;\n\n constructor(pass?: WritableStreamDefaultWriter<Uint8Array>, txtEnDe?: TxtEnDecoder) {\n this._pass = pass;\n this._txtEnDe = txtEnDe || TxtEnDecoderSingleton();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abort(reason?: Uint8Array): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async close(): Promise<void> {\n if (this._writer) {\n const ret = await this._writer.close();\n this._writer = undefined;\n return ret;\n }\n return Promise.resolve(undefined);\n }\n\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (!this._writer) {\n const dests: WritableStreamDefaultWriter<Uint8Array>[] = [new LogWriteStream(this._bufferArr)];\n if (this._pass) {\n dests.push(this._pass);\n }\n this._writer = new FanoutWriteStream(dests);\n }\n return this._writer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logs(notJsonLine = false): any[] {\n if (!this._writer) {\n return [];\n }\n const jsonNlStr = this._txtEnDe.decode(\n new Uint8Array(\n (function* (res: Uint8Array[]): Generator<number, void, undefined> {\n for (const x of res) {\n yield* x;\n }\n })(this._bufferArr),\n ),\n );\n if (!notJsonLine) {\n const splitStr = jsonNlStr.split(\"\\n\");\n const filterStr = splitStr.filter((a) => a.length);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const mapStr = filterStr.map((a) => JSON.parse(a));\n return mapStr;\n }\n return jsonNlStr.split(\"\\n\").filter((a) => a.length);\n }\n}\n","import { LevelHandlerImpl } from \"../log-level-impl.js\";\nimport { Logger } from \"../logger.js\";\nimport { LoggerImpl } from \"../logger-impl.js\";\nimport { LogCollector } from \"./log-write-stream.js\";\nimport { BasicSysAbstraction } from \"../sys-abstraction.js\";\n\nexport interface MockLoggerReturn {\n readonly logger: Logger;\n readonly logCollector: LogCollector;\n}\n\nexport function MockLogger(params?: {\n readonly sys?: BasicSysAbstraction;\n readonly pass?: WritableStreamDefaultWriter<Uint8Array>;\n moduleName?: string | string[];\n readonly disableDebug?: boolean;\n}): MockLoggerReturn {\n const lc = new LogCollector(params?.pass);\n let modNames = [\"MockLogger\"];\n if (typeof params?.moduleName === \"string\") {\n modNames = [params?.moduleName];\n } else if (Array.isArray(params?.moduleName)) {\n modNames = [...params.moduleName, ...modNames];\n }\n const logger = new LoggerImpl({\n out: lc,\n sys: params?.sys,\n levelHandler: new LevelHandlerImpl(),\n })\n .With()\n .Module(modNames[0])\n .Logger();\n if (!params?.disableDebug) {\n logger.SetDebug(...modNames);\n }\n return {\n logCollector: lc,\n logger,\n };\n}\n","import type { MarkWritable } from \"ts-essentials\";\nimport { Time } from \"./time.js\";\nimport { Logger } from \"./logger.js\";\nimport { isPromise } from \"./is-promise.js\";\n\nexport type TraceCtx = {\n readonly spanId: string;\n readonly time: Time;\n readonly parent: TraceNode;\n readonly metrics: Map<string, Metric<unknown>>;\n readonly logger?: Logger;\n} & Record<string, unknown>;\n\nexport type CleanCtx = {\n readonly spanId: string;\n} & Record<string, unknown>;\n\nexport type TraceCtxParam = {\n readonly spanId: string;\n} & Partial<{\n readonly time: Time;\n readonly parent: TraceNode;\n readonly logger: Logger;\n}> &\n Record<string, unknown>;\n\nexport class Metric<T> {\n value?: T;\n readonly path: string;\n\n constructor(path: string) {\n this.path = path;\n }\n\n set(value: T): void {\n this.value = value;\n }\n\n add<R extends number | ArrayLike<T>>(value: R): void {\n if (typeof value === \"number\") {\n if (this.value === undefined) {\n this.value = 0 as T;\n }\n this.value = ((this.value as number) + value) as T;\n } else if (Array.isArray(value)) {\n if (!Array.isArray(this.value)) {\n this.value = [] as T;\n }\n (this.value as T[]).push(...value);\n } else {\n throw new Error(\"add only support number or array\");\n }\n }\n}\n\nexport type MetricMap = Map<string, Metric<unknown>>;\n\nexport class Metrics {\n readonly tracenode: TraceNode;\n private readonly map: MetricMap;\n\n readonly spanRefs: MetricMap = new Map<string, Metric<unknown>>();\n constructor(tracenode: TraceNode) {\n this.tracenode = tracenode;\n this.map = tracenode.ctx.metrics;\n }\n\n toJSON(): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n for (const [key, value] of this.map) {\n obj[key] = value.value;\n }\n return obj;\n }\n\n get<T>(ipath: string): Metric<T> {\n const path = ipath.replace(/[/]+/g, \"/\").trim();\n if (path.startsWith(\"/\")) {\n if (path.slice(1).length === 0) {\n throw new Error(`Metrics path must contain value /:${path}`);\n }\n let metric = this.map.get(path);\n if (!metric) {\n metric = new Metric<T>(path);\n this.map.set(path, metric);\n }\n this.spanRefs.set(path, metric);\n return metric as Metric<T>;\n } else if (path.includes(\"/\")) {\n throw new Error(`Metrics path must start with /:${path}`);\n }\n const rootPath = this.tracenode.getRootPath();\n return this.get(`${rootPath}/${path}`);\n }\n}\n\nexport interface Invokaction {\n readonly result: \"success\" | \"error\";\n readonly start: number;\n readonly end: number;\n readonly metrics?: Metrics;\n}\n\nexport type TraceNodeMap = Map<string, TraceNode>;\n\nexport class TraceNode {\n readonly childs: TraceNodeMap = new Map<string, TraceNode>();\n\n readonly invokations: Invokaction[] = [];\n\n readonly spanId: string;\n readonly ctx: TraceCtx;\n readonly metrics: Metrics;\n\n static root(time: Time, logger?: Logger): TraceNode {\n return new TraceNode({\n spanId: \"root\",\n time,\n logger,\n metrics: new Map(),\n parent: undefined as unknown as TraceNode,\n });\n }\n\n constructor(ctx: TraceCtx) {\n this.spanId = ctx.spanId;\n this.ctx = ctx;\n this.metrics = new Metrics(this);\n }\n\n getRootPath(rpath: string[] = []): string {\n if (!this.ctx.parent) {\n return \"/\" + rpath.reverse().join(\"/\");\n }\n return this.ctx.parent.getRootPath(rpath.concat(this.ctx.spanId));\n }\n\n invokes(): { ctx: CleanCtx; invokations: Invokaction[] } {\n const cleanCtx = { ...this.ctx } as CleanCtx;\n delete cleanCtx.parent;\n delete cleanCtx.time;\n delete cleanCtx.logger;\n delete cleanCtx.metrics;\n const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs });\n const metricsRefs = Object.keys(spanRefs).length > 0 ? { metricRefs: spanRefs } : {};\n return {\n ctx: cleanCtx,\n invokations: this.invokations,\n ...metricsRefs,\n };\n }\n\n ctxWith(spanId: string, logger?: Logger): TraceCtxParam {\n const ctx = {\n ...this.ctx,\n spanId,\n };\n if (logger) {\n ctx.logger = logger;\n }\n return ctx;\n }\n\n // <V extends () => Promise<T> | T, T>(id: string, fn: V): ReturnType<V>\n span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V> {\n let ctx: TraceCtx;\n if (typeof inSpanId === \"string\") {\n ctx = {\n ...this.ctx,\n spanId: inSpanId,\n parent: this,\n };\n } else {\n ctx = {\n ...this.ctx,\n ...inSpanId,\n parent: this,\n };\n }\n if (ctx.logger) {\n ctx = {\n ...ctx,\n ...ctx.logger.Attributes(),\n };\n }\n const spanId = ctx.spanId;\n let spanTrace = this.childs.get(spanId);\n if (!spanTrace) {\n spanTrace = new TraceNode(ctx);\n this.childs.set(spanId.toString(), spanTrace);\n }\n const invokation: MarkWritable<MarkWritable<Invokaction, \"end\">, \"result\"> = {\n start: this.ctx.time.Now().getTime(),\n end: 0,\n result: \"success\",\n };\n spanTrace.invokations.push(invokation);\n try {\n const possiblePromise = fn(spanTrace);\n if (isPromise(possiblePromise)) {\n return possiblePromise\n .then((v) => {\n return v;\n })\n .catch((e) => {\n invokation.result = \"error\";\n throw e;\n })\n .finally(() => {\n invokation.end = this.ctx.time.Now().getTime();\n }) as ReturnType<V>;\n }\n invokation.end = this.ctx.time.Now().getTime();\n return possiblePromise as ReturnType<V>;\n } catch (e) {\n invokation.result = \"error\";\n invokation.end = this.ctx.time.Now().getTime();\n throw e;\n }\n }\n}\n","export interface CTJsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\nexport type CTKeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\nexport type CTKeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\n\nexport interface CTAlgorithm {\n name: string;\n}\nexport type CTAlgorithmIdentifier = CTAlgorithm | string;\n\nexport interface CTRsaHashedImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n}\n\nexport type CTNamedCurve = string;\nexport interface CTEcKeyImportParams extends CTAlgorithm {\n namedCurve: CTNamedCurve;\n}\n\nexport interface CTHmacImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n length?: number;\n}\n\nexport interface CTAesKeyAlgorithm extends CTAlgorithm {\n length: number;\n}\n\nexport type CTKeyType = \"private\" | \"public\" | \"secret\";\n\nexport interface CTCryptoKey {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */\n readonly algorithm: CTAlgorithm;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */\n readonly extractable: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */\n readonly type: CTKeyType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */\n readonly usages: CTKeyUsage[];\n}\n\ninterface CTArrayBufferTypes {\n ArrayBuffer: ArrayBuffer;\n}\ntype CTArrayBufferLike = CTArrayBufferTypes[keyof CTArrayBufferTypes];\n\nexport interface CTArrayBufferView {\n /**\n * The ArrayBuffer instance referenced by the array.\n */\n buffer: CTArrayBufferLike;\n\n /**\n * The length in bytes of the array.\n */\n byteLength: number;\n\n /**\n * The offset in bytes of the array.\n */\n byteOffset: number;\n}\n\nexport type CTBufferSource = CTArrayBufferView | ArrayBuffer | Uint8Array;\n\nexport interface CryptoRuntime {\n importKey(\n format: CTKeyFormat,\n keyData: CTJsonWebKey | CTBufferSource,\n algorithm: CTAlgorithmIdentifier | CTRsaHashedImportParams | CTEcKeyImportParams | CTHmacImportParams | CTAesKeyAlgorithm,\n extractable: boolean,\n keyUsages: CTKeyUsage[],\n ): Promise<CTCryptoKey>;\n exportKey(format: CTKeyFormat, key: CTCryptoKey): Promise<CTJsonWebKey | ArrayBuffer>;\n\n //(format: \"raw\", key: ArrayBuffer, algo: string, extractable: boolean, usages: string[]) => Promise<CryptoKey>;\n decrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n encrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n digestSHA256(data: Uint8Array): Promise<ArrayBuffer>;\n randomBytes(size: number): Uint8Array;\n}\n\nfunction randomBytes(size: number): Uint8Array {\n const bytes = new Uint8Array(size);\n if (size > 0) {\n crypto.getRandomValues(bytes);\n }\n return bytes;\n}\n\nfunction digestSHA256(data: Uint8Array): Promise<ArrayBuffer> {\n return Promise.resolve(crypto.subtle.digest(\"SHA-256\", data));\n}\n\nexport function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): CryptoRuntime {\n const runtime = {\n importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),\n exportKey: cryptoOpts.exportKey || crypto.subtle.exportKey.bind(crypto.subtle),\n encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),\n decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),\n randomBytes: cryptoOpts.randomBytes || randomBytes,\n digestSHA256: cryptoOpts.digestSHA256 || digestSHA256,\n };\n // console.log(\"cryptoOpts\", cryptoOpts, opts)\n return runtime;\n}\n","export const VERSION: string = Object.keys({\n __packageVersion__: \"xxxx\",\n})[0];\n","export class HeadersImpl extends Headers {\n readonly _headers: Map<string, string>;\n\n constructor(init: Map<string, string>) {\n super();\n this._headers = init;\n }\n\n override [Symbol.iterator](): IterableIterator<[string, string]> {\n return this.entries();\n }\n\n override entries(): IterableIterator<[string, string]> {\n return this._headers.entries();\n }\n override keys(): IterableIterator<string> {\n return this._headers.keys();\n }\n override values(): IterableIterator<string> {\n return this._headers.values();\n }\n\n override append(key: string, value: string | string[] | undefined): HeadersImpl {\n const values = this._headers.get(key);\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (Array.isArray(value)) {\n this._headers.set(key, [values, ...value].filter((i) => i).join(\", \"));\n } else {\n this._headers.set(key, [values, value].filter((i) => i).join(\", \"));\n }\n return this;\n }\n}\n\nexport class HttpHeader {\n readonly _headers: Map<string, string[]> = new Map<string, string[]>();\n\n static from(headers?: HeadersInit | Headers | HttpHeader): HttpHeader {\n if (headers instanceof HttpHeader) {\n return headers.Clone();\n }\n const h = new HttpHeader();\n if (headers) {\n if (Array.isArray(headers)) {\n for (const [k, v] of headers as [string, string][]) {\n if (v) {\n h.Add(k, v);\n }\n }\n } else if (headers instanceof Headers) {\n for (const [k, v] of headers.entries()) {\n if (v) {\n h.Add(\n k,\n v.split(\",\").map((v) => v.trim()),\n );\n }\n }\n } else {\n for (const k in headers) {\n const v = (headers as Record<string, string | string[]>)[k];\n (Array.isArray(v) ? v : [v]).forEach((v) => {\n h.Add(k, v);\n });\n }\n }\n }\n return h;\n }\n\n _asStringString(): Map<string, string> {\n const ret = new Map<string, string>();\n for (const [key, values] of this._headers) {\n ret.set(key, values.join(\", \"));\n }\n return ret;\n }\n\n _key(key: string): string {\n return key.toLowerCase();\n }\n Values(key: string): string[] {\n const values = this._headers.get(this._key(key));\n return values || [];\n }\n Get(key: string): string | undefined {\n const values = this._headers.get(this._key(key));\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[0];\n }\n Set(key: string, valueOr: string | string[]): HttpHeader {\n const value = Array.isArray(valueOr) ? valueOr : [valueOr];\n this._headers.set(this._key(key), value);\n return this;\n }\n Add(key: string, value: string | string[] | undefined): HttpHeader {\n if (typeof value === \"undefined\") {\n return this;\n }\n const vs = Array.isArray(value) ? value : [value];\n const values = this._headers.get(this._key(key));\n if (values === undefined) {\n this._headers.set(this._key(key), vs);\n } else {\n values.push(...vs);\n }\n return this;\n }\n Del(ey: string): HttpHeader {\n this._headers.delete(this._key(ey));\n return this;\n }\n Items(): [string, string[]][] {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Array.from(this._headers).filter(([_, vs]) => vs.length > 0);\n }\n SortItems(): [string, string[]][] {\n return this.Items().sort(([[a]], [[b]]) => a.localeCompare(b));\n }\n Clone(): HttpHeader {\n const clone = new HttpHeader();\n for (const [key, values] of this._headers.entries()) {\n clone._headers.set(key, values.slice());\n }\n return clone;\n }\n AsRecordStringStringArray(): Record<string, string[]> {\n const obj: Record<string, string[]> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = [...values];\n }\n return obj;\n }\n AsRecordStringString(): Record<string, string> {\n const obj: Record<string, string> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values.join(\", \");\n }\n return obj;\n }\n AsHeaderInit(): HeadersInit {\n const obj: HeadersInit = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values[0];\n }\n return obj;\n }\n AsHeaders(): Headers {\n return new HeadersImpl(this._asStringString());\n }\n Merge(other?: HttpHeader): HttpHeader {\n const ret = this.Clone();\n if (other) {\n for (const [key, values] of other.Items()) {\n ret.Add(key, values);\n }\n }\n return ret;\n }\n}\n","export interface PathOps {\n join(...args: string[]): string;\n dirname(path: string): string;\n basename(path: string): string;\n}\n\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n #parts(path: string): { dirname: string; basename: string } {\n const splitted = path.split(\"/\");\n const last = splitted.pop();\n if (splitted.length && last === \"\") {\n return this.#parts(this.join(...splitted));\n }\n return {\n dirname: this.join(...splitted),\n basename: last ?? \"\",\n };\n }\n dirname(path: string): string {\n return this.#parts(path).dirname;\n }\n basename(path: string): string {\n return this.#parts(path).basename;\n }\n}\n\nexport const pathOps: PathOps = new pathOpsImpl();\n","import { exception2Result, Result } from \"./result.js\";\nimport { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, TxtEnDecoderSingleton as TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\n\nexport interface JSONEnDecoder {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;\n asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array;\n asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>>;\n}\n\nclass JSONOps implements JSONEnDecoder {\n readonly txtOps: TxtEnDecoder;\n constructor(txtOps: TxtEnDecoder) {\n this.txtOps = txtOps;\n }\n async asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string> {\n const resolved = await input;\n return this.stringify(resolved, replacer, space);\n }\n async asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array> {\n const resolved = await input;\n return this.uint8ify(resolved, replacer, space);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>> {\n return this.parse(await this.txtOps.asyncDecode(input), reviver);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string {\n return JSON.stringify(Result.Is(input) ? input.unwrap() : input, replacer, space);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array {\n return this.txtOps.encode(this.stringify(input, replacer, space));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T> {\n return exception2Result(() => JSON.parse(this.txtOps.decode(input), reviver) as T) as Result<T>;\n }\n}\n\nlet jsonEnDecoder: JSONEnDecoder;\nexport function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder {\n let needNew = false;\n if (txtEnde && txtEnde !== TxtEnDecoderSingleton()) {\n needNew = !!txtEnde;\n txtEnde = txtEnde ?? TxtEnDecoderSingleton();\n }\n if (needNew && txtEnde) {\n return new JSONOps(txtEnde);\n }\n jsonEnDecoder = jsonEnDecoder ?? new JSONOps(TxtEnDecoderSingleton());\n return jsonEnDecoder;\n}\n","export type CoerceBinaryInput = string | ArrayBufferLike | ArrayBufferView | Uint8Array; // | SharedArrayBuffer\n\nexport async function top_uint8(input: CoerceBinaryInput | Blob): Promise<Uint8Array> {\n if (input instanceof Blob) {\n return new Uint8Array(await input.arrayBuffer());\n }\n return to_uint8(input);\n}\n\nexport function to_uint8(input: CoerceBinaryInput, encoder?: TextEncoder): Uint8Array {\n if (typeof input === \"string\") {\n return (encoder ?? new TextEncoder()).encode(input);\n }\n if (input instanceof ArrayBuffer /* || input instanceof SharedArrayBuffer */) {\n return new Uint8Array(input);\n }\n\n if (input instanceof Uint8Array) {\n return input;\n }\n // not nice but we make the cloudflare types happy\n return new Uint8Array(input as unknown as ArrayBufferLike);\n}\n\nexport function to_blob(input: CoerceBinaryInput | Blob, encoder?: TextEncoder): Blob {\n if (input instanceof Blob) {\n return input;\n }\n return new Blob([to_uint8(input, encoder)]);\n}\n\nexport function to_arraybuf(input: CoerceBinaryInput, encoder?: TextEncoder): ArrayBuffer {\n if (input instanceof ArrayBuffer) {\n return input;\n }\n const u8 = to_uint8(input, encoder);\n return u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer;\n // return to_uint8(input).buffer; // as ArrayBuffer;\n}\n","export * from \"./rebuffer.js\";\nexport * from \"./stream-map.js\";\nexport * from \"./stream2string.js\";\nexport * from \"./string2stream.js\";\nexport * from \"./console-write-stream.js\";\nexport * from \"./fanout-write-stream.js\";\nexport * from \"./get-params-result.js\";\nexport * from \"./stripper.js\";\nexport * from \"./sorted-object.js\";\nexport * from \"./uint8array-equal.js\";\nexport * from \"./coerce-uint8.js\";\n","import { isPromise } from \"../is-promise.js\";\n\nexport interface StreamMap<T, U> {\n Map(s: T, idx: number): U | Promise<U>;\n readonly Close?: () => void;\n}\nexport function streamMap<T, U>(s: ReadableStream<T>, sm: StreamMap<T, U>): ReadableStream<U> {\n const state = { reader: s.getReader(), streamMap: sm, idx: 0 };\n return new ReadableStream<U>({\n async pull(controller): Promise<void> {\n const { done, value } = await state.reader.read();\n if (done) {\n if (state.streamMap.Close) {\n state.streamMap.Close();\n }\n controller.close();\n return;\n }\n const promiseOrU = state.streamMap.Map(value, state.idx++);\n let mapped: U;\n if (isPromise(promiseOrU)) {\n mapped = await promiseOrU;\n } else {\n mapped = promiseOrU;\n }\n controller.enqueue(mapped);\n },\n });\n}\n\nexport async function devnull<T>(a: ReadableStream<T>): Promise<number> {\n const reader = a.getReader();\n let cnt = 0;\n while (true) {\n const { done } = await reader.read();\n if (done) {\n break;\n }\n cnt++;\n }\n return cnt;\n}\n\nexport function array2stream<T>(a: T[]): ReadableStream<T> {\n let i = 0;\n return new ReadableStream<T>({\n pull(controller): void {\n if (i >= a.length) {\n controller.close();\n return;\n }\n controller.enqueue(a[i]);\n i++;\n },\n });\n}\n\nexport async function stream2array<T>(a: ReadableStream<T>): Promise<T[]> {\n const ret: T[] = [];\n const reader = a.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n ret.push(value);\n }\n return ret;\n}\n","import { array2stream, stream2array } from \"./stream-map.js\";\n\ninterface ReChunkResult {\n readonly rest: Uint8Array;\n readonly chunk: Uint8Array;\n}\n\nexport async function rebufferArray(a: Uint8Array[], chunkSize: number): Promise<Uint8Array[]> {\n return stream2array(rebuffer(array2stream(a), chunkSize));\n}\n\nfunction reChunk(cs: Uint8Array[], chunkSize: number): ReChunkResult {\n const len = cs.reduce((acc, v) => acc + v.length, 0);\n const last = cs[cs.length - 1];\n const lastOfs = len - last.length;\n // console.log(\"reChunk\", len, lastOfs, last.length, chunkSize, chunkSize - lastOfs)\n const rest = last.subarray(chunkSize - lastOfs);\n cs[cs.length - 1] = last.subarray(0, chunkSize - lastOfs);\n const chunk = new Uint8Array(chunkSize);\n let ofs = 0;\n for (const c of cs) {\n chunk.set(c, ofs);\n ofs += c.length;\n }\n return { rest, chunk };\n}\n\ninterface pumpState {\n readonly reader: ReadableStreamDefaultReader<Uint8Array>;\n tmp: Uint8Array[];\n tmpLen: number;\n readonly chunkSize: number;\n}\n\nfunction pump(ps: pumpState, controller: ReadableStreamDefaultController<Uint8Array>, next: () => void): void {\n ps.reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n if (ps.tmpLen > 0) {\n controller.enqueue(reChunk(ps.tmp, ps.tmpLen).chunk);\n }\n controller.close();\n next();\n return;\n }\n if (ps.tmpLen + value.length > ps.chunkSize) {\n ps.tmp.push(value);\n const res = reChunk(ps.tmp, ps.chunkSize);\n controller.enqueue(res.chunk);\n ps.tmp = [res.rest];\n ps.tmpLen = res.rest.length;\n next();\n return;\n } else if (value.length) {\n ps.tmp.push(value);\n ps.tmpLen += value.length;\n }\n pump(ps, controller, next);\n })\n .catch((err) => {\n controller.error(err);\n next();\n });\n}\n\nexport function rebuffer(a: ReadableStream<Uint8Array>, chunkSize: number): ReadableStream<Uint8Array> {\n const state: pumpState = {\n reader: a.getReader(),\n tmp: [],\n tmpLen: 0,\n chunkSize,\n };\n return new ReadableStream<Uint8Array>({\n async pull(controller): Promise<void> {\n return new Promise<void>((resolve) => {\n pump(state, controller, resolve);\n });\n },\n });\n}\n","export async function stream2string(stream?: ReadableStream<Uint8Array> | null, maxSize?: number): Promise<string> {\n if (!stream) {\n return Promise.resolve(\"\");\n }\n const reader = stream.getReader();\n let res = \"\";\n const decoder = new TextDecoder();\n let rSize = 0;\n while (typeof maxSize === \"undefined\" || rSize < maxSize) {\n try {\n const read = await reader.read();\n if (read.done) {\n break;\n }\n if (maxSize && rSize + read.value.length > maxSize) {\n read.value = read.value.slice(0, maxSize - rSize);\n }\n const block = decoder.decode(read.value, { stream: true });\n rSize += read.value.length;\n res += block;\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n\nexport async function stream2uint8array(stream?: ReadableStream<Uint8Array> | null): Promise<Uint8Array> {\n if (!stream) {\n return Promise.resolve(new Uint8Array());\n }\n const reader = stream.getReader();\n let res = new Uint8Array();\n // eslint-disable-next-line no-constant-condition\n while (1) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n res = new Uint8Array([...res, ...value]);\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n","import { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport function string2stream(str: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): ReadableStream<Uint8Array> {\n return uint8array2stream(ende.encode(str));\n}\n\nexport function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(str);\n controller.close();\n },\n });\n}\n","export function toSortedObjectArray<T>(set?: T): Record<string, unknown>[] {\n if (!set) return [];\n return toSortedArray(set).map(([k, v]) => ({ [k]: v }));\n}\n\nexport function toSortedArray<T>(set?: T): [string, unknown][] {\n if (!set) return [];\n return Object.entries(set).sort(([a], [b]) => a.localeCompare(b));\n}\n\nexport function toSortedObject<S, T extends NonNullable<S>>(set?: T): T {\n if (!set) return set as T;\n return Object.fromEntries(toSortedArray(set)) as T;\n // return toSortedArray(set).reduce((acc, cur) => {\n // acc[cur[0]] = cur[1];\n // return acc\n // }, {} as Record<string, unknown>) as T;\n}\n","export 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":["e","keys","key","from","param","val","module","once","once","once","param","baseSysAbstraction","param","baseSysAbstraction","param","baseSysAbstraction","param","YAML","req","res","v"]}
|