@adviser/cement 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base_sys_abstraction-BCdXJHNa.d.ts +21 -0
- package/base_sys_abstraction-BYZvxqsW.d.cts +21 -0
- package/chunk-J2IM7FHM.js +65 -0
- package/chunk-J2IM7FHM.js.map +1 -0
- package/chunk-MWAFFTM4.js +82 -0
- package/chunk-MWAFFTM4.js.map +1 -0
- package/chunk-PZTL4UNG.js +233 -0
- package/chunk-PZTL4UNG.js.map +1 -0
- package/index.cjs +987 -0
- package/index.cjs.map +1 -0
- package/index.d.cts +196 -0
- package/index.d.ts +196 -11
- package/index.js +611 -26
- package/index.js.map +1 -1
- package/node/index.cjs +436 -0
- package/node/index.cjs.map +1 -0
- package/node/index.d.cts +47 -0
- package/node/index.d.ts +47 -4
- package/node/index.js +215 -17
- package/node/index.js.map +1 -1
- package/package.json +34 -8
- package/sys_abstraction-CjljYIkv.d.cts +65 -0
- package/sys_abstraction-CjljYIkv.d.ts +65 -0
- package/utils/index.cjs +270 -0
- package/utils/index.cjs.map +1 -0
- package/utils/index.d.cts +33 -0
- package/utils/index.d.ts +33 -6
- package/utils/index.js +232 -20
- package/utils/index.js.map +1 -1
- package/web/index.cjs +286 -0
- package/web/index.cjs.map +1 -0
- package/web/index.d.cts +6 -0
- package/web/index.d.ts +6 -2
- package/web/index.js +7 -16
- package/web/index.js.map +1 -1
- package/base_sys_abstraction.d.ts +0 -79
- package/base_sys_abstraction.d.ts.map +0 -1
- package/base_sys_abstraction.js +0 -186
- package/base_sys_abstraction.js.map +0 -1
- package/base_sys_abstraction.test.d.ts +0 -2
- package/base_sys_abstraction.test.d.ts.map +0 -1
- package/base_sys_abstraction.test.js +0 -77
- package/base_sys_abstraction.test.js.map +0 -1
- package/file_service.d.ts +0 -18
- package/file_service.d.ts.map +0 -1
- package/file_service.js +0 -3
- package/file_service.js.map +0 -1
- package/future.d.ts +0 -8
- package/future.d.ts.map +0 -1
- package/future.js +0 -42
- package/future.js.map +0 -1
- package/future.test.d.ts +0 -2
- package/future.test.d.ts.map +0 -1
- package/future.test.js +0 -30
- package/future.test.js.map +0 -1
- package/index.d.ts.map +0 -1
- package/logger.d.ts +0 -36
- package/logger.d.ts.map +0 -1
- package/logger.js +0 -11
- package/logger.js.map +0 -1
- package/logger.test.d.ts +0 -2
- package/logger.test.d.ts.map +0 -1
- package/logger.test.js +0 -372
- package/logger.test.js.map +0 -1
- package/logger_impl.d.ts +0 -64
- package/logger_impl.d.ts.map +0 -1
- package/logger_impl.js +0 -331
- package/logger_impl.js.map +0 -1
- package/node/index.d.ts.map +0 -1
- package/node/mock_file_service.d.ts +0 -11
- package/node/mock_file_service.d.ts.map +0 -1
- package/node/mock_file_service.js +0 -38
- package/node/mock_file_service.js.map +0 -1
- package/node/mock_file_service.test.d.ts +0 -2
- package/node/mock_file_service.test.d.ts.map +0 -1
- package/node/mock_file_service.test.js +0 -19
- package/node/mock_file_service.test.js.map +0 -1
- package/node/node_file_service.d.ts +0 -16
- package/node/node_file_service.d.ts.map +0 -1
- package/node/node_file_service.js +0 -84
- package/node/node_file_service.js.map +0 -1
- package/node/node_sys_abstraction.d.ts +0 -21
- package/node/node_sys_abstraction.d.ts.map +0 -1
- package/node/node_sys_abstraction.js +0 -101
- package/node/node_sys_abstraction.js.map +0 -1
- package/node/node_sys_abstraction.test.d.ts +0 -2
- package/node/node_sys_abstraction.test.d.ts.map +0 -1
- package/node/node_sys_abstraction.test.js +0 -57
- package/node/node_sys_abstraction.test.js.map +0 -1
- package/option.d.ts +0 -25
- package/option.d.ts.map +0 -1
- package/option.js +0 -53
- package/option.js.map +0 -1
- package/result.d.ts +0 -31
- package/result.d.ts.map +0 -1
- package/result.js +0 -69
- package/result.js.map +0 -1
- package/result.test.d.ts +0 -2
- package/result.test.d.ts.map +0 -1
- package/result.test.js +0 -39
- package/result.test.js.map +0 -1
- package/sys_abstraction.d.ts +0 -35
- package/sys_abstraction.d.ts.map +0 -1
- package/sys_abstraction.js +0 -35
- package/sys_abstraction.js.map +0 -1
- package/test/log_collector.d.ts +0 -22
- package/test/log_collector.d.ts.map +0 -1
- package/test/log_collector.js +0 -66
- package/test/log_collector.js.map +0 -1
- package/test/mock_logger.d.ts +0 -13
- package/test/mock_logger.d.ts.map +0 -1
- package/test/mock_logger.js +0 -30
- package/test/mock_logger.js.map +0 -1
- package/test/mock_logger.test.d.ts +0 -2
- package/test/mock_logger.test.d.ts.map +0 -1
- package/test/mock_logger.test.js +0 -49
- package/test/mock_logger.test.js.map +0 -1
- package/test/test-exit-handler.d.ts +0 -1
- package/test/test-exit-handler.d.ts.map +0 -1
- package/test/test-exit-handler.js +0 -76
- package/test/test-exit-handler.js.map +0 -1
- package/time.d.ts +0 -13
- package/time.d.ts.map +0 -1
- package/time.js +0 -18
- package/time.js.map +0 -1
- package/utils/index.d.ts.map +0 -1
- package/utils/rebuffer.d.ts +0 -3
- package/utils/rebuffer.d.ts.map +0 -1
- package/utils/rebuffer.js +0 -65
- package/utils/rebuffer.js.map +0 -1
- package/utils/rebuffer.test.d.ts +0 -2
- package/utils/rebuffer.test.d.ts.map +0 -1
- package/utils/rebuffer.test.js +0 -79
- package/utils/rebuffer.test.js.map +0 -1
- package/utils/stream2string.d.ts +0 -3
- package/utils/stream2string.d.ts.map +0 -1
- package/utils/stream2string.js +0 -53
- package/utils/stream2string.js.map +0 -1
- package/utils/stream2string.test.d.ts +0 -2
- package/utils/stream2string.test.d.ts.map +0 -1
- package/utils/stream2string.test.js +0 -31
- package/utils/stream2string.test.js.map +0 -1
- package/utils/stream_map.d.ts +0 -9
- package/utils/stream_map.d.ts.map +0 -1
- package/utils/stream_map.js +0 -67
- package/utils/stream_map.js.map +0 -1
- package/utils/stream_map.test.d.ts +0 -2
- package/utils/stream_map.test.d.ts.map +0 -1
- package/utils/stream_map.test.js +0 -89
- package/utils/stream_map.test.js.map +0 -1
- package/utils/stream_test_helper.d.ts +0 -15
- package/utils/stream_test_helper.d.ts.map +0 -1
- package/utils/stream_test_helper.js +0 -42
- package/utils/stream_test_helper.js.map +0 -1
- package/utils/string2stream.d.ts +0 -3
- package/utils/string2stream.d.ts.map +0 -1
- package/utils/string2stream.js +0 -18
- package/utils/string2stream.js.map +0 -1
- package/utils/string2stream.test.d.ts +0 -2
- package/utils/string2stream.test.d.ts.map +0 -1
- package/utils/string2stream.test.js +0 -9
- package/utils/string2stream.test.js.map +0 -1
- package/web/index.d.ts.map +0 -1
- package/web/web_sys_abstraction.d.ts +0 -4
- package/web/web_sys_abstraction.d.ts.map +0 -1
- package/web/web_sys_abstraction.js +0 -65
- package/web/web_sys_abstraction.js.map +0 -1
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,gDAA8B;AAC9B,2CAAyB;AACzB,oDAAkC;AAClC,yCAAuB;AACvB,uDAAqC;AACrC,qDAAmC;AACnC,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB"}
|
|
1
|
+
{"version":3,"sources":["../../src/logger.ts","../../src/logger_impl.ts","../../src/test/log_collector.ts","../../src/test/mock_logger.ts","../../src/result.ts","../../src/option.ts","../../src/future.ts"],"sourcesContent":["export enum Level {\n WARN = \"warn\",\n DEBUG = \"debug\",\n INFO = \"info\",\n ERROR = \"error\",\n}\n\nexport interface LoggerInterface<R> {\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 SetDebug(...modules: (string | string[])[]): R;\n\n Str(key: string, value: string): R;\n Error(): R;\n Warn(): R;\n Debug(): R;\n Log(): R;\n WithLevel(level: Level): R;\n\n Err(err: unknown): R; // could be Error, or something which coerces to string\n Info(): R;\n Timestamp(): R;\n Any(key: string, value: unknown): R;\n Dur(key: string, nsec: number): R;\n Uint64(key: string, value: number): R;\n}\nexport interface WithLogger extends LoggerInterface<WithLogger> {\n Logger(): Logger;\n}\n\nexport interface AsError {\n AsError(): Error;\n}\n\nexport interface Logger extends LoggerInterface<Logger> {\n With(): WithLogger;\n\n Msg(...args: string[]): AsError;\n Flush(): Promise<void>;\n}\n","// import { v4 } from \"uuid\";\nimport { AsError, Level, Logger, WithLogger } from \"./logger\";\nimport { WebSysAbstraction } from \"./web/web_sys_abstraction\";\nimport { SysAbstraction } from \"./sys_abstraction\";\n\nconst encoder = new TextEncoder();\n\ntype JsonRecord = Record<string, string | number | boolean | unknown>;\n\nexport interface LevelHandler {\n enableLevel(level: Level, ...modules: string[]): void;\n disableLevel(level: Level, ...modules: string[]): void;\n setDebug(...modules: (string | string[])[]): void;\n isEnabled(ilevel: unknown, module: unknown): boolean;\n}\n\nexport class LevelHandlerImpl implements LevelHandler {\n readonly _globalLevels = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);\n readonly _modules = new Map<string, Set<Level>>();\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 forModules(level: Level, fnAction: (p: string) => void, ...modules: (string | string[])[]): void {\n for (const m of modules.flat()) {\n const parts = m\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\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 (module !== undefined) {\n const levels = this._modules.get(module as string);\n if (levels && levels.has(level)) {\n return true;\n }\n }\n if (level === undefined) {\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 class LogWriter {\n readonly _out: WritableStream<Uint8Array>;\n readonly _toFlush: (() => Promise<void>)[] = [];\n\n constructor(out: WritableStream<Uint8Array>) {\n this._out = out;\n }\n\n write(encoded: Uint8Array) {\n const my = async () => {\n // const val = Math.random();\n // console.log(\">>>My:\", val)\n try {\n const writer = this._out.getWriter();\n await writer.ready;\n await writer.write(encoded);\n await writer.releaseLock();\n } catch (err) {\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 = Array<() => 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?.().finally(() => {\n // console.log(\"<<<Msg:\", this._toFlush.length)\n this._flush(this._toFlush);\n });\n }\n}\n\nexport interface LoggerImplParams {\n readonly out?: WritableStream<Uint8Array>;\n readonly logWriter?: LogWriter;\n readonly sys?: SysAbstraction;\n readonly withAttributes?: JsonRecord;\n readonly levelHandler?: LevelHandler;\n}\nexport class LoggerImpl implements Logger {\n readonly _sys: SysAbstraction;\n readonly _attributes: JsonRecord = {};\n readonly _withAttributes: JsonRecord;\n readonly _logWriter: LogWriter;\n readonly _levelHandler: LevelHandler;\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 = WebSysAbstraction();\n } else {\n this._sys = params.sys;\n }\n if (params.logWriter) {\n this._logWriter = params.logWriter;\n } else {\n if (!params.out) {\n this._logWriter = new LogWriter(this._sys.Stdout());\n } else {\n this._logWriter = new LogWriter(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 = levelSingleton;\n }\n // console.log(\"LoggerImpl\", this._id, this._attributes, this._withAttributes)\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\"] = key;\n this._withAttributes[\"module\"] = key;\n return this;\n }\n SetDebug(...modules: (string | string[])[]): Logger {\n this._levelHandler.setDebug(...modules);\n\n return this;\n }\n\n Timestamp(): Logger {\n this._attributes[\"ts\"] = this._sys.Time().Now().toISOString();\n return this;\n }\n Warn(): Logger {\n this._attributes[\"level\"] = Level.WARN;\n return this;\n }\n Log(): Logger {\n return this;\n }\n Debug(): Logger {\n this._attributes[\"level\"] = Level.DEBUG;\n return this;\n }\n Error(): Logger {\n this._attributes[\"level\"] = Level.ERROR;\n return this;\n }\n Info(): Logger {\n this._attributes[\"level\"] = Level.INFO;\n return this;\n }\n Err(err: unknown): Logger {\n if (err instanceof Error) {\n this._attributes[\"error\"] = err.message;\n } else {\n this._attributes[\"error\"] = \"\" + err;\n }\n return this;\n }\n WithLevel(l: Level): Logger {\n this._attributes[\"level\"] = l;\n return this;\n }\n\n Str(key: string, value: string): Logger {\n this._attributes[key] = value;\n return this;\n }\n\n Any(key: string, value: string | number | boolean | JsonRecord): Logger {\n this._attributes[key] = value;\n return this;\n }\n Dur(key: string, nsec: number): Logger {\n this._attributes[key] = `${nsec}ms`;\n // new Intl.DurationFormat(\"en\", { style: \"narrow\" }).format(nsec);\n return this;\n }\n Uint64(key: string, value: number): Logger {\n this._attributes[key] = value;\n return this;\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 withAttributes: {\n module: this._attributes[\"module\"],\n ...this._withAttributes,\n },\n }),\n );\n }\n\n _resetAttributes(fn: () => Error): Error {\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 Msg(...args: string[]): AsError {\n const error = this._resetAttributes(() => {\n const doWrite = this._levelHandler.isEnabled(this._attributes[\"level\"], this._attributes[\"module\"]);\n this._attributes[\"msg\"] = args.join(\" \");\n if (typeof this._attributes[\"msg\"] === \"string\" && !this._attributes[\"msg\"].trim().length) {\n delete this._attributes[\"msg\"];\n }\n if (this._attributes[\"ts\"] === \"ETERNITY\") {\n this.Timestamp();\n }\n const str = JSON.stringify(this._attributes);\n if (doWrite) {\n const encoded = encoder.encode(str + \"\\n\");\n this._logWriter.write(encoded);\n }\n return new Error(str);\n });\n return {\n AsError: () => error,\n };\n }\n}\n\nclass WithLoggerBuilder implements WithLogger {\n readonly _li: LoggerImpl;\n constructor(li: LoggerImpl) {\n this._li = li;\n }\n Logger(): Logger {\n Object.assign(this._li._withAttributes, this._li._attributes);\n // console.log(\"WithLoggerBuilder.Logger\", this._li._id, this._li._withAttributes);\n console.log(`Logger:${JSON.stringify([...(this._li._levelHandler as LevelHandlerImpl)._globalLevels])}`);\n return this._li;\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 Str(key: string, value: string): WithLogger {\n this._li.Str(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._attributes[\"ts\"] = \"ETERNITY\";\n return this;\n }\n Any(key: string, value: JsonRecord): 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, value: number): WithLogger {\n this._li.Uint64(key, value);\n return this;\n }\n}\n","class LogWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _bufferArr: Uint8Array[] = [];\n\n _resolveClosed: (value?: PromiseLike<undefined>) => void;\n closed: Promise<undefined>;\n desiredSize: number | null = null;\n ready: Promise<undefined> = Promise.resolve(undefined);\n\n constructor() {\n this._resolveClosed = () => {\n // do nothing\n };\n this.closed = new Promise((resolve) => {\n this._resolveClosed = resolve;\n });\n }\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 close(): Promise<void> {\n this._resolveClosed();\n return Promise.resolve(undefined);\n }\n releaseLock(): void {\n // do nothing\n }\n write(chunk?: Uint8Array): Promise<void> {\n chunk && this._bufferArr.push(chunk);\n return Promise.resolve(undefined);\n }\n}\n\nexport class LogCollector implements WritableStream<Uint8Array> {\n readonly locked: boolean = false;\n _writer?: LogWriter;\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 this._writer = new LogWriter();\n }\n return this._writer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logs(): any[] {\n if (!this._writer) {\n return [];\n }\n const jsonNlStr = new TextDecoder().decode(\n new Uint8Array(\n (function* (res: Uint8Array[]) {\n for (const x of res) {\n yield* x;\n }\n })(this._writer._bufferArr),\n ),\n );\n const splitStr = jsonNlStr.split(\"\\n\");\n const filterStr = splitStr.filter((a) => a.length);\n const mapStr = filterStr.map((a) => JSON.parse(a));\n return mapStr;\n }\n}\n","import { Logger } from \"../logger\";\nimport { LevelHandlerImpl, LoggerImpl } from \"../logger_impl\";\nimport { SysAbstraction } from \"../sys_abstraction\";\nimport { LogCollector } from \"./log_collector\";\n\nexport interface MockLoggerReturn {\n readonly logger: Logger;\n readonly logCollector: LogCollector;\n}\n\nexport function MockLogger(params?: {\n readonly sys?: SysAbstraction;\n moduleName?: string | string[];\n readonly disableDebug?: boolean;\n}): MockLoggerReturn {\n const lc = new LogCollector();\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 !params?.disableDebug && logger.SetDebug(...modNames);\n return {\n logCollector: lc,\n logger,\n };\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T extends Error = Error>(t: T | string): Result<never, T> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as T);\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n return t instanceof Result;\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/*\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","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 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","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) {\n this.#resolveFn(value);\n }\n reject(reason: unknown) {\n this.#rejectFn(reason);\n }\n}\n"],"mappings":"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","names":["Level","LogWriter"]}
|
package/node/index.cjs
ADDED
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/node/index.ts
|
|
31
|
+
var node_exports = {};
|
|
32
|
+
__export(node_exports, {
|
|
33
|
+
ExitServiceImpl: () => ExitServiceImpl,
|
|
34
|
+
MockFileService: () => MockFileService,
|
|
35
|
+
NodeFileService: () => NodeFileService,
|
|
36
|
+
NodeSysAbstraction: () => NodeSysAbstraction,
|
|
37
|
+
NodeSystemService: () => NodeSystemService
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(node_exports);
|
|
40
|
+
|
|
41
|
+
// src/node/node_file_service.ts
|
|
42
|
+
var import_node_path = __toESM(require("path"), 1);
|
|
43
|
+
var import_node_fs = __toESM(require("fs"), 1);
|
|
44
|
+
var NodeFileService = class {
|
|
45
|
+
constructor(baseDir = process.cwd()) {
|
|
46
|
+
this.baseDir = this.abs(baseDir);
|
|
47
|
+
}
|
|
48
|
+
nodeImport(fname) {
|
|
49
|
+
if (import_node_path.default.isAbsolute(fname)) {
|
|
50
|
+
return fname;
|
|
51
|
+
} else {
|
|
52
|
+
return "./" + import_node_path.default.normalize(fname);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
readFileString(fname) {
|
|
56
|
+
return import_node_fs.default.promises.readFile(fname, { encoding: "utf-8" });
|
|
57
|
+
}
|
|
58
|
+
dirname(fname) {
|
|
59
|
+
return import_node_path.default.dirname(fname);
|
|
60
|
+
}
|
|
61
|
+
basename(fname) {
|
|
62
|
+
return import_node_path.default.basename(fname);
|
|
63
|
+
}
|
|
64
|
+
join(...paths) {
|
|
65
|
+
return import_node_path.default.join(...paths);
|
|
66
|
+
}
|
|
67
|
+
relative(from, to) {
|
|
68
|
+
if (to === void 0) {
|
|
69
|
+
to = from;
|
|
70
|
+
from = process.cwd();
|
|
71
|
+
}
|
|
72
|
+
const ret = import_node_path.default.relative(from, to);
|
|
73
|
+
return ret;
|
|
74
|
+
}
|
|
75
|
+
abs(fname) {
|
|
76
|
+
if (import_node_path.default.isAbsolute(fname)) {
|
|
77
|
+
return fname;
|
|
78
|
+
} else {
|
|
79
|
+
const cwd = process.cwd();
|
|
80
|
+
return import_node_path.default.resolve(cwd, fname);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
isAbsolute(fname) {
|
|
84
|
+
return import_node_path.default.isAbsolute(fname);
|
|
85
|
+
}
|
|
86
|
+
async writeFileString(fname, content) {
|
|
87
|
+
const o = await this.create(fname);
|
|
88
|
+
const wr = o.stream.getWriter();
|
|
89
|
+
await wr.write(new TextEncoder().encode(content));
|
|
90
|
+
await wr.close();
|
|
91
|
+
}
|
|
92
|
+
async create(fname) {
|
|
93
|
+
let oName = fname;
|
|
94
|
+
if (!import_node_path.default.isAbsolute(fname)) {
|
|
95
|
+
oName = this.abs(fname);
|
|
96
|
+
}
|
|
97
|
+
const base = import_node_path.default.dirname(oName);
|
|
98
|
+
await import_node_fs.default.promises.mkdir(base, { recursive: true });
|
|
99
|
+
const out = import_node_fs.default.createWriteStream(oName);
|
|
100
|
+
return {
|
|
101
|
+
name: oName,
|
|
102
|
+
stream: new WritableStream({
|
|
103
|
+
write(chunk) {
|
|
104
|
+
out.write(chunk);
|
|
105
|
+
},
|
|
106
|
+
close() {
|
|
107
|
+
out.close();
|
|
108
|
+
},
|
|
109
|
+
abort() {
|
|
110
|
+
throw new Error("not implemented");
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// src/time.ts
|
|
118
|
+
var Time = class {
|
|
119
|
+
TimeSince(start) {
|
|
120
|
+
const now = this.Now();
|
|
121
|
+
return now.getTime() - start.getTime();
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// src/base_sys_abstraction.ts
|
|
126
|
+
var SysTime = class extends Time {
|
|
127
|
+
Now() {
|
|
128
|
+
return /* @__PURE__ */ new Date();
|
|
129
|
+
}
|
|
130
|
+
Sleep(duration) {
|
|
131
|
+
return new Promise((resolve) => {
|
|
132
|
+
setTimeout(() => {
|
|
133
|
+
resolve();
|
|
134
|
+
}, duration);
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
var ConstTime = class extends Time {
|
|
139
|
+
Now() {
|
|
140
|
+
return new Date(2021, 1, 1, 0, 0, 0, 0);
|
|
141
|
+
}
|
|
142
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
143
|
+
Sleep(duration) {
|
|
144
|
+
return Promise.resolve();
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
var StepTime = class extends Time {
|
|
148
|
+
constructor() {
|
|
149
|
+
super();
|
|
150
|
+
this._step = new ConstTime().Now();
|
|
151
|
+
}
|
|
152
|
+
Now() {
|
|
153
|
+
if (this._step.getTime() === 0) {
|
|
154
|
+
this._step = new ConstTime().Now();
|
|
155
|
+
return this._step;
|
|
156
|
+
}
|
|
157
|
+
this._step = new Date(this._step.getTime() + 1e3);
|
|
158
|
+
return this._step;
|
|
159
|
+
}
|
|
160
|
+
Sleep(duration) {
|
|
161
|
+
this._step = new Date(this._step.getTime() + duration);
|
|
162
|
+
return Promise.resolve();
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
function TimeFactory(timeMode) {
|
|
166
|
+
switch (timeMode) {
|
|
167
|
+
case "real" /* REAL */:
|
|
168
|
+
return new SysTime();
|
|
169
|
+
case "const" /* CONST */:
|
|
170
|
+
return new ConstTime();
|
|
171
|
+
case "step" /* STEP */:
|
|
172
|
+
return new StepTime();
|
|
173
|
+
}
|
|
174
|
+
return new SysTime();
|
|
175
|
+
}
|
|
176
|
+
var RandomService = class {
|
|
177
|
+
constructor(mode) {
|
|
178
|
+
this._step = 0;
|
|
179
|
+
this._mode = mode;
|
|
180
|
+
}
|
|
181
|
+
Random0ToValue(value) {
|
|
182
|
+
switch (this._mode) {
|
|
183
|
+
case "const" /* CONST */:
|
|
184
|
+
return 0.5 * value;
|
|
185
|
+
case "step" /* STEP */:
|
|
186
|
+
this._step += 1e-4;
|
|
187
|
+
return this._step * value;
|
|
188
|
+
case "random" /* RANDOM */:
|
|
189
|
+
return Math.random() * value;
|
|
190
|
+
default:
|
|
191
|
+
throw new Error("Unknown RandomMode");
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
var IdService = class {
|
|
196
|
+
constructor(mode) {
|
|
197
|
+
this._step = 0;
|
|
198
|
+
if (!mode) {
|
|
199
|
+
mode = "uuid" /* UUID */;
|
|
200
|
+
}
|
|
201
|
+
this._mode = mode;
|
|
202
|
+
}
|
|
203
|
+
NextId() {
|
|
204
|
+
switch (this._mode) {
|
|
205
|
+
case "uuid" /* UUID */:
|
|
206
|
+
return crypto.randomUUID();
|
|
207
|
+
case "const" /* CONST */:
|
|
208
|
+
return "VeryUniqueID";
|
|
209
|
+
case "step" /* STEP */:
|
|
210
|
+
return `STEPId-${this._step++}`;
|
|
211
|
+
default:
|
|
212
|
+
throw new Error("Unknown IDMode");
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
var decoder = new TextDecoder();
|
|
217
|
+
var BaseSysAbstraction = class {
|
|
218
|
+
constructor(params) {
|
|
219
|
+
this._time = new SysTime();
|
|
220
|
+
this._stdout = new WritableStream({
|
|
221
|
+
write(chunk) {
|
|
222
|
+
return new Promise((resolve) => {
|
|
223
|
+
const decoded = decoder.decode(chunk);
|
|
224
|
+
console.log(decoded.trimEnd());
|
|
225
|
+
resolve();
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
this._stderr = new WritableStream({
|
|
230
|
+
write(chunk) {
|
|
231
|
+
return new Promise((resolve) => {
|
|
232
|
+
const decoded = decoder.decode(chunk);
|
|
233
|
+
console.error(decoded.trimEnd());
|
|
234
|
+
resolve();
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
this._idService = new IdService();
|
|
239
|
+
this._randomService = new RandomService("random" /* RANDOM */);
|
|
240
|
+
this._fileSystem = params.FileSystem;
|
|
241
|
+
this._systemService = params.SystemService;
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
var WrapperSysAbstraction = class {
|
|
245
|
+
constructor(base, params) {
|
|
246
|
+
this._time = base._time;
|
|
247
|
+
this._stdout = base._stdout;
|
|
248
|
+
this._stderr = base._stderr;
|
|
249
|
+
this._idService = base._idService;
|
|
250
|
+
this._randomService = base._randomService;
|
|
251
|
+
this._fileSystem = base._fileSystem;
|
|
252
|
+
this._systemService = base._systemService;
|
|
253
|
+
if (params) {
|
|
254
|
+
if (params.TimeMode) {
|
|
255
|
+
this._time = TimeFactory(params.TimeMode);
|
|
256
|
+
}
|
|
257
|
+
if (params.Stdout) {
|
|
258
|
+
this._stdout = params.Stdout;
|
|
259
|
+
}
|
|
260
|
+
if (params.Stderr) {
|
|
261
|
+
this._stderr = params.Stderr;
|
|
262
|
+
}
|
|
263
|
+
if (params.IdMode) {
|
|
264
|
+
this._idService = new IdService(params.IdMode);
|
|
265
|
+
}
|
|
266
|
+
if (params.RandomMode) {
|
|
267
|
+
this._randomService = new RandomService(params.RandomMode);
|
|
268
|
+
}
|
|
269
|
+
if (params.FileSystem) {
|
|
270
|
+
this._fileSystem = params.FileSystem;
|
|
271
|
+
}
|
|
272
|
+
if (params.SystemService) {
|
|
273
|
+
this._systemService = params.SystemService;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
Time() {
|
|
278
|
+
return this._time;
|
|
279
|
+
}
|
|
280
|
+
NextId() {
|
|
281
|
+
return this._idService.NextId();
|
|
282
|
+
}
|
|
283
|
+
Random0ToValue(value) {
|
|
284
|
+
return this._randomService.Random0ToValue(value);
|
|
285
|
+
}
|
|
286
|
+
Stdout() {
|
|
287
|
+
return this._stdout;
|
|
288
|
+
}
|
|
289
|
+
Stderr() {
|
|
290
|
+
return this._stderr;
|
|
291
|
+
}
|
|
292
|
+
System() {
|
|
293
|
+
return this._systemService;
|
|
294
|
+
}
|
|
295
|
+
FileSystem() {
|
|
296
|
+
return this._fileSystem;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
// src/node/node_sys_abstraction.ts
|
|
301
|
+
var ExitServiceImpl = class {
|
|
302
|
+
constructor() {
|
|
303
|
+
this._exitHandlers = [];
|
|
304
|
+
this.invoked = false;
|
|
305
|
+
this._handleExit = async () => {
|
|
306
|
+
if (this.invoked) {
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
this.invoked = true;
|
|
310
|
+
for (const h of this._exitHandlers) {
|
|
311
|
+
try {
|
|
312
|
+
const ret = h.hdl();
|
|
313
|
+
if (typeof ret.then === "function") {
|
|
314
|
+
await ret;
|
|
315
|
+
}
|
|
316
|
+
} finally {
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
};
|
|
320
|
+
process.on("unhandledRejection", (reason, p) => {
|
|
321
|
+
this.exit(19);
|
|
322
|
+
});
|
|
323
|
+
process.on("uncaughtException", (error) => {
|
|
324
|
+
this.exit(18);
|
|
325
|
+
});
|
|
326
|
+
process.on("close", () => {
|
|
327
|
+
this.exit(0);
|
|
328
|
+
});
|
|
329
|
+
process.on("exit", () => {
|
|
330
|
+
this.exit(0);
|
|
331
|
+
});
|
|
332
|
+
process.on("SIGQUIT", () => {
|
|
333
|
+
this.exit(3);
|
|
334
|
+
});
|
|
335
|
+
process.on("SIGINT", () => {
|
|
336
|
+
this.exit(2);
|
|
337
|
+
});
|
|
338
|
+
process.on("SIGTERM", () => {
|
|
339
|
+
this.exit(9);
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
injectExitHandlers(hdls) {
|
|
343
|
+
this._exitHandlers = hdls;
|
|
344
|
+
}
|
|
345
|
+
exit(code) {
|
|
346
|
+
this._handleExit().then(() => {
|
|
347
|
+
process.exit(code);
|
|
348
|
+
}).catch((err) => {
|
|
349
|
+
console.error("ExitService: failed to handle exit", err);
|
|
350
|
+
process.exit(code);
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
var _NodeSystemService = class _NodeSystemService {
|
|
355
|
+
constructor() {
|
|
356
|
+
this._exitService = new ExitServiceImpl();
|
|
357
|
+
this._exitService.injectExitHandlers(_NodeSystemService._exitHandlers);
|
|
358
|
+
}
|
|
359
|
+
Env() {
|
|
360
|
+
return process.env;
|
|
361
|
+
}
|
|
362
|
+
Args() {
|
|
363
|
+
return process.argv;
|
|
364
|
+
}
|
|
365
|
+
OnExit(hdl) {
|
|
366
|
+
const id = crypto.randomUUID();
|
|
367
|
+
_NodeSystemService._exitHandlers.push({ hdl, id });
|
|
368
|
+
return () => {
|
|
369
|
+
const idx = _NodeSystemService._exitHandlers.findIndex((h) => h.id === id);
|
|
370
|
+
if (idx >= 0) {
|
|
371
|
+
_NodeSystemService._exitHandlers.splice(idx, 1);
|
|
372
|
+
}
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
Exit(code) {
|
|
376
|
+
this._exitService.exit(code);
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
_NodeSystemService._exitHandlers = [];
|
|
380
|
+
var NodeSystemService = _NodeSystemService;
|
|
381
|
+
var my = void 0;
|
|
382
|
+
function NodeSysAbstraction(param) {
|
|
383
|
+
if (!my) {
|
|
384
|
+
my = new BaseSysAbstraction({
|
|
385
|
+
FileSystem: new NodeFileService(),
|
|
386
|
+
SystemService: new NodeSystemService()
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
return new WrapperSysAbstraction(my, param);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
// src/node/mock_file_service.ts
|
|
393
|
+
var MockFileService = class extends NodeFileService {
|
|
394
|
+
constructor() {
|
|
395
|
+
super(...arguments);
|
|
396
|
+
this.files = {};
|
|
397
|
+
}
|
|
398
|
+
// override abs(fname: string): string {
|
|
399
|
+
// return this.join("/mock/", fname);
|
|
400
|
+
// }
|
|
401
|
+
async create(fname) {
|
|
402
|
+
let oName = fname;
|
|
403
|
+
if (!this.isAbsolute(fname)) {
|
|
404
|
+
oName = await this.abs(fname);
|
|
405
|
+
}
|
|
406
|
+
const fc = {
|
|
407
|
+
name: oName,
|
|
408
|
+
content: ""
|
|
409
|
+
};
|
|
410
|
+
this.files[oName] = fc;
|
|
411
|
+
this.files[fname] = fc;
|
|
412
|
+
const decoder2 = new TextDecoder();
|
|
413
|
+
return {
|
|
414
|
+
name: oName,
|
|
415
|
+
stream: new WritableStream({
|
|
416
|
+
write(chunk) {
|
|
417
|
+
fc.content = fc.content + decoder2.decode(chunk);
|
|
418
|
+
},
|
|
419
|
+
close() {
|
|
420
|
+
},
|
|
421
|
+
abort() {
|
|
422
|
+
throw new Error("not implemented");
|
|
423
|
+
}
|
|
424
|
+
})
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
};
|
|
428
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
429
|
+
0 && (module.exports = {
|
|
430
|
+
ExitServiceImpl,
|
|
431
|
+
MockFileService,
|
|
432
|
+
NodeFileService,
|
|
433
|
+
NodeSysAbstraction,
|
|
434
|
+
NodeSystemService
|
|
435
|
+
});
|
|
436
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/node/index.ts","../../../src/node/node_file_service.ts","../../../src/time.ts","../../../src/base_sys_abstraction.ts","../../../src/node/node_sys_abstraction.ts","../../../src/node/mock_file_service.ts"],"sourcesContent":["export * from \"./node_file_service\";\nexport * from \"./node_sys_abstraction\";\nexport * from \"./mock_file_service\";\n","import path from \"node:path\";\nimport fs from \"node:fs\";\nimport { FileService, NamedWritableStream } from \"../file_service\";\n\nexport class NodeFileService implements FileService {\n readonly baseDir: string;\n constructor(baseDir: string = process.cwd()) {\n this.baseDir = this.abs(baseDir);\n }\n\n nodeImport(fname: string): string {\n // console.log('nodeImport:'+ fname);\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n return \"./\" + path.normalize(fname);\n }\n }\n\n readFileString(fname: string): Promise<string> {\n return fs.promises.readFile(fname, { encoding: \"utf-8\" });\n }\n\n dirname(fname: string): string {\n return path.dirname(fname);\n }\n basename(fname: string): string {\n return path.basename(fname);\n }\n\n join(...paths: string[]): string {\n return path.join(...paths);\n }\n\n relative(from: string, to?: string): string {\n if (to === undefined) {\n to = from;\n from = process.cwd();\n }\n const ret = path.relative(from, to);\n // console.log('relative:'+ from + \" -> \" + to + \"= \" + ret);\n return ret;\n }\n\n abs(fname: string): string {\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n const cwd = process.cwd();\n return path.resolve(cwd, fname);\n }\n }\n\n isAbsolute(fname: string): boolean {\n return path.isAbsolute(fname);\n }\n\n async writeFileString(fname: string, content: string): Promise<void> {\n const o = await this.create(fname);\n const wr = o.stream.getWriter();\n await wr.write(new TextEncoder().encode(content));\n await wr.close();\n }\n\n async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!path.isAbsolute(fname)) {\n oName = this.abs(fname);\n }\n\n const base = path.dirname(oName);\n await fs.promises.mkdir(base, { recursive: true });\n const out = fs.createWriteStream(oName);\n return {\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk) {\n out.write(chunk);\n },\n close() {\n out.close();\n },\n abort() {\n throw new Error(\"not implemented\");\n },\n }),\n };\n }\n}\n","export abstract class Time {\n abstract Now(): Date;\n abstract Sleep(duration: Duration): Promise<void>;\n TimeSince(start: Date): Duration {\n const now = this.Now();\n return now.getTime() - start.getTime();\n }\n}\n\nexport type Duration = number;\n\nexport enum TimeUnits {\n Microsecond = 1,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Second = 1000 * Microsecond,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Minute = 60 * Second,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Hour = 60 * Minute,\n}\n","import { FileService } from \"./file_service\";\nimport { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, SysAbstraction } from \"./sys_abstraction\";\nimport { Time } from \"./time\";\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 constructor() {\n super();\n this._step = new ConstTime().Now();\n }\n Now() {\n if (this._step.getTime() === 0) {\n this._step = new ConstTime().Now();\n return this._step;\n }\n this._step = new Date(this._step.getTime() + 1000);\n return this._step;\n }\n Sleep(duration: number): Promise<void> {\n this._step = new Date(this._step.getTime() + duration);\n return Promise.resolve();\n }\n}\n\nexport function TimeFactory(timeMode: TimeMode): Time {\n switch (timeMode) {\n case TimeMode.REAL:\n return new SysTime();\n case TimeMode.CONST:\n return new ConstTime();\n case TimeMode.STEP:\n return new StepTime();\n }\n return new SysTime();\n}\n\nexport class RandomService {\n readonly _mode: RandomMode;\n _step = 0;\n constructor(mode: RandomMode) {\n this._mode = mode;\n }\n Random0ToValue(value: number): number {\n switch (this._mode) {\n case RandomMode.CONST:\n return 0.5 * value;\n case RandomMode.STEP:\n this._step += 0.0001;\n return this._step * value;\n case RandomMode.RANDOM:\n return Math.random() * value;\n default:\n throw new Error(\"Unknown RandomMode\");\n }\n }\n}\n\nexport class IdService {\n readonly _mode: IDMode;\n _step = 0;\n constructor(mode?: IDMode) {\n if (!mode) {\n mode = IDMode.UUID;\n }\n this._mode = mode;\n }\n NextId(): string {\n switch (this._mode) {\n case IDMode.UUID:\n return crypto.randomUUID();\n case IDMode.CONST:\n return \"VeryUniqueID\";\n case IDMode.STEP:\n return `STEPId-${this._step++}`;\n default:\n throw new Error(\"Unknown IDMode\");\n }\n }\n}\n\nexport interface BaseSysAbstractionParams {\n readonly 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\nconst decoder = new TextDecoder();\nexport class BaseSysAbstraction {\n readonly _time = new SysTime();\n readonly _stdout = new WritableStream({\n write(chunk) {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n console.log(decoded.trimEnd());\n resolve();\n });\n },\n });\n readonly _stderr = new WritableStream({\n write(chunk) {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n console.error(decoded.trimEnd());\n resolve();\n });\n },\n });\n\n readonly _idService = new IdService();\n readonly _randomService = new RandomService(RandomMode.RANDOM);\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n\n constructor(params: BaseSysAbstractionParams) {\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n }\n}\n\nexport interface WrapperSysAbstractionParams {\n readonly TimeMode?: TimeMode;\n readonly IdMode?: IDMode;\n readonly Stdout?: WritableStream<Uint8Array>;\n readonly Stderr?: WritableStream<Uint8Array>;\n readonly RandomMode?: RandomMode;\n readonly FileSystem?: FileService;\n readonly SystemService?: SystemService;\n}\n\nexport class WrapperSysAbstraction implements SysAbstraction {\n readonly _time: Time;\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n constructor(base: BaseSysAbstraction, params?: WrapperSysAbstractionParams) {\n this._time = base._time;\n this._stdout = base._stdout;\n this._stderr = base._stderr;\n this._idService = base._idService;\n this._randomService = base._randomService;\n this._fileSystem = base._fileSystem;\n this._systemService = base._systemService;\n if (params) {\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\n }\n if (params.Stdout) {\n this._stdout = params.Stdout;\n }\n if (params.Stderr) {\n this._stderr = params.Stderr;\n }\n if (params.IdMode) {\n this._idService = new IdService(params.IdMode);\n }\n if (params.RandomMode) {\n this._randomService = new RandomService(params.RandomMode);\n }\n if (params.FileSystem) {\n this._fileSystem = params.FileSystem;\n }\n if (params.SystemService) {\n this._systemService = params.SystemService;\n }\n }\n }\n Time(): Time {\n return this._time;\n }\n NextId(): string {\n return this._idService.NextId();\n }\n Random0ToValue(value: number): number {\n return this._randomService.Random0ToValue(value);\n }\n Stdout(): WritableStream {\n return this._stdout;\n }\n Stderr(): WritableStream {\n return this._stderr;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n// export const BaseSysAbstraction = new BaseSysAbstractionImpl()\n","import { SysAbstraction, SystemService, VoidFunc } from \"../sys_abstraction\";\nimport {\n BaseSysAbstraction,\n ExitHandler,\n ExitService,\n WrapperSysAbstraction,\n WrapperSysAbstractionParams,\n} from \"../base_sys_abstraction\";\nimport { NodeFileService } from \"./node_file_service\";\n\nexport class ExitServiceImpl implements ExitService {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"unhandledRejection\", (reason: string, p: Promise<unknown>) => {\n this.exit(19);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"uncaughtException\", (error: Error) => {\n this.exit(18);\n });\n process.on(\"close\", () => {\n this.exit(0);\n });\n process.on(\"exit\", () => {\n this.exit(0);\n });\n process.on(\"SIGQUIT\", () => {\n this.exit(3);\n });\n process.on(\"SIGINT\", () => {\n this.exit(2);\n });\n process.on(\"SIGTERM\", () => {\n this.exit(9);\n });\n }\n _exitHandlers: ExitHandler[] = [];\n injectExitHandlers(hdls: ExitHandler[]): void {\n // console.log(\"ExitService: injecting exit handlers\", hdls)\n this._exitHandlers = hdls;\n }\n invoked = false;\n readonly _handleExit = async (): Promise<void> => {\n if (this.invoked) {\n // console.error(\"ExitService: already invoked\");\n return;\n }\n this.invoked = true;\n for (const h of this._exitHandlers) {\n try {\n // console.log(`ExitService: calling handler ${h.id}`)\n const ret = h.hdl();\n // console.log(`ExitService: called handler ${h.id}`, ret)\n if (typeof (ret as Promise<void>).then === \"function\") {\n await ret;\n }\n } finally {\n // ignore\n }\n }\n };\n\n exit(code: number): void {\n // console.log(\"ExitService: exit called\", code)\n this._handleExit()\n .then(() => {\n process.exit(code);\n })\n .catch((err) => {\n console.error(\"ExitService: failed to handle exit\", err);\n process.exit(code);\n });\n }\n}\n\nexport class NodeSystemService implements SystemService {\n static readonly _exitHandlers: ExitHandler[] = [];\n readonly _exitService: ExitService = new ExitServiceImpl();\n constructor() {\n this._exitService.injectExitHandlers(NodeSystemService._exitHandlers);\n }\n\n Env() {\n return process.env as Record<string, string>;\n }\n\n Args() {\n return process.argv;\n }\n\n OnExit(hdl: VoidFunc): VoidFunc {\n const id = crypto.randomUUID();\n NodeSystemService._exitHandlers.push({ hdl, id });\n return () => {\n const idx = NodeSystemService._exitHandlers.findIndex((h) => h.id === id);\n if (idx >= 0) {\n NodeSystemService._exitHandlers.splice(idx, 1);\n }\n };\n }\n\n Exit(code: number): void {\n this._exitService.exit(code);\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n FileSystem: new NodeFileService(),\n SystemService: new NodeSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { NamedWritableStream } from \"../file_service\";\nimport { NodeFileService } from \"./node_file_service\";\n\nexport interface FileCollector {\n readonly name: string;\n content: string;\n}\n\nexport class MockFileService extends NodeFileService {\n readonly files = {} as Record<string, FileCollector>;\n\n // override abs(fname: string): string {\n // return this.join(\"/mock/\", fname);\n // }\n\n override async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!this.isAbsolute(fname)) {\n oName = await this.abs(fname);\n }\n\n const fc = {\n name: oName,\n content: \"\",\n };\n this.files[oName] = fc;\n this.files[fname] = fc;\n const decoder = new TextDecoder();\n\n return {\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk) {\n fc.content = fc.content + decoder.decode(chunk);\n },\n close() {\n // do nothing\n },\n abort() {\n throw new Error(\"not implemented\");\n },\n }),\n };\n }\n}\n"],"mappings":"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","names":["path","fs","decoder"]}
|
package/node/index.d.cts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { F as FileService, N as NamedWritableStream, b as SystemService, V as VoidFunc, S as SysAbstraction } from '../sys_abstraction-CjljYIkv.cjs';
|
|
2
|
+
import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base_sys_abstraction-BYZvxqsW.cjs';
|
|
3
|
+
|
|
4
|
+
declare class NodeFileService implements FileService {
|
|
5
|
+
readonly baseDir: string;
|
|
6
|
+
constructor(baseDir?: string);
|
|
7
|
+
nodeImport(fname: string): string;
|
|
8
|
+
readFileString(fname: string): Promise<string>;
|
|
9
|
+
dirname(fname: string): string;
|
|
10
|
+
basename(fname: string): string;
|
|
11
|
+
join(...paths: string[]): string;
|
|
12
|
+
relative(from: string, to?: string): string;
|
|
13
|
+
abs(fname: string): string;
|
|
14
|
+
isAbsolute(fname: string): boolean;
|
|
15
|
+
writeFileString(fname: string, content: string): Promise<void>;
|
|
16
|
+
create(fname: string): Promise<NamedWritableStream>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class ExitServiceImpl implements ExitService {
|
|
20
|
+
constructor();
|
|
21
|
+
_exitHandlers: ExitHandler[];
|
|
22
|
+
injectExitHandlers(hdls: ExitHandler[]): void;
|
|
23
|
+
invoked: boolean;
|
|
24
|
+
readonly _handleExit: () => Promise<void>;
|
|
25
|
+
exit(code: number): void;
|
|
26
|
+
}
|
|
27
|
+
declare class NodeSystemService implements SystemService {
|
|
28
|
+
static readonly _exitHandlers: ExitHandler[];
|
|
29
|
+
readonly _exitService: ExitService;
|
|
30
|
+
constructor();
|
|
31
|
+
Env(): Record<string, string>;
|
|
32
|
+
Args(): string[];
|
|
33
|
+
OnExit(hdl: VoidFunc): VoidFunc;
|
|
34
|
+
Exit(code: number): void;
|
|
35
|
+
}
|
|
36
|
+
declare function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
|
|
37
|
+
|
|
38
|
+
interface FileCollector {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
content: string;
|
|
41
|
+
}
|
|
42
|
+
declare class MockFileService extends NodeFileService {
|
|
43
|
+
readonly files: Record<string, FileCollector>;
|
|
44
|
+
create(fname: string): Promise<NamedWritableStream>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ExitServiceImpl, type FileCollector, MockFileService, NodeFileService, NodeSysAbstraction, NodeSystemService };
|
package/node/index.d.ts
CHANGED
|
@@ -1,4 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { F as FileService, N as NamedWritableStream, b as SystemService, V as VoidFunc, S as SysAbstraction } from '../sys_abstraction-CjljYIkv.js';
|
|
2
|
+
import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base_sys_abstraction-BCdXJHNa.js';
|
|
3
|
+
|
|
4
|
+
declare class NodeFileService implements FileService {
|
|
5
|
+
readonly baseDir: string;
|
|
6
|
+
constructor(baseDir?: string);
|
|
7
|
+
nodeImport(fname: string): string;
|
|
8
|
+
readFileString(fname: string): Promise<string>;
|
|
9
|
+
dirname(fname: string): string;
|
|
10
|
+
basename(fname: string): string;
|
|
11
|
+
join(...paths: string[]): string;
|
|
12
|
+
relative(from: string, to?: string): string;
|
|
13
|
+
abs(fname: string): string;
|
|
14
|
+
isAbsolute(fname: string): boolean;
|
|
15
|
+
writeFileString(fname: string, content: string): Promise<void>;
|
|
16
|
+
create(fname: string): Promise<NamedWritableStream>;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
declare class ExitServiceImpl implements ExitService {
|
|
20
|
+
constructor();
|
|
21
|
+
_exitHandlers: ExitHandler[];
|
|
22
|
+
injectExitHandlers(hdls: ExitHandler[]): void;
|
|
23
|
+
invoked: boolean;
|
|
24
|
+
readonly _handleExit: () => Promise<void>;
|
|
25
|
+
exit(code: number): void;
|
|
26
|
+
}
|
|
27
|
+
declare class NodeSystemService implements SystemService {
|
|
28
|
+
static readonly _exitHandlers: ExitHandler[];
|
|
29
|
+
readonly _exitService: ExitService;
|
|
30
|
+
constructor();
|
|
31
|
+
Env(): Record<string, string>;
|
|
32
|
+
Args(): string[];
|
|
33
|
+
OnExit(hdl: VoidFunc): VoidFunc;
|
|
34
|
+
Exit(code: number): void;
|
|
35
|
+
}
|
|
36
|
+
declare function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
|
|
37
|
+
|
|
38
|
+
interface FileCollector {
|
|
39
|
+
readonly name: string;
|
|
40
|
+
content: string;
|
|
41
|
+
}
|
|
42
|
+
declare class MockFileService extends NodeFileService {
|
|
43
|
+
readonly files: Record<string, FileCollector>;
|
|
44
|
+
create(fname: string): Promise<NamedWritableStream>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ExitServiceImpl, type FileCollector, MockFileService, NodeFileService, NodeSysAbstraction, NodeSystemService };
|