@adviser/cement 0.3.7 → 0.3.8

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.
Files changed (109) hide show
  1. package/{base-sys-abstraction-WS7lNbFm.d.cts → base-sys-abstraction-4Vw4QGaI.d.cts} +2 -2
  2. package/{base-sys-abstraction-Cqb4snul.d.ts → base-sys-abstraction-8v83VyEU.d.ts} +2 -2
  3. package/cf/index.cjs +6 -6
  4. package/cf/index.cjs.map +1 -1
  5. package/cf/index.d.cts +3 -3
  6. package/cf/index.d.ts +3 -3
  7. package/cf/index.js +5 -5
  8. package/cf/index.js.map +1 -1
  9. package/{chunk-BVZ6HD34.js → chunk-A57BAYWU.js} +7 -7
  10. package/{chunk-BVZ6HD34.js.map → chunk-A57BAYWU.js.map} +1 -1
  11. package/{chunk-SCFB6I2C.js → chunk-GVZIH356.js} +2 -2
  12. package/{chunk-LNS2K5WL.js → chunk-TPIXB3KY.js} +7 -7
  13. package/chunk-TPIXB3KY.js.map +1 -0
  14. package/{chunk-K5TIGJ6I.js → chunk-TRSU5M6V.js} +5 -5
  15. package/chunk-TRSU5M6V.js.map +1 -0
  16. package/{chunk-H5JLIMWA.js → chunk-W53WEZWY.js} +4 -4
  17. package/{chunk-H5JLIMWA.js.map → chunk-W53WEZWY.js.map} +1 -1
  18. package/deno/index.cjs +8 -8
  19. package/deno/index.cjs.map +1 -1
  20. package/deno/index.d.cts +3 -3
  21. package/deno/index.d.ts +3 -3
  22. package/deno/index.js +6 -6
  23. package/deno/index.js.map +1 -1
  24. package/{get-params-result-CXYbMEcV.d.ts → get-params-result-C2cbgB78.d.cts} +2 -2
  25. package/{get-params-result-CXYbMEcV.d.cts → get-params-result-C2cbgB78.d.ts} +2 -2
  26. package/{index-BeXMFEyF.d.ts → index-CbOCsgzP.d.ts} +2 -2
  27. package/{index-C6hvxtE7.d.cts → index-Dpc3oVOD.d.cts} +1 -1
  28. package/{index-BH1SIYUK.d.cts → index-EnKo_jNv.d.cts} +2 -2
  29. package/{index-BQMIP01w.d.ts → index-MWn9Xel9.d.ts} +1 -1
  30. package/index.cjs +16 -16
  31. package/index.cjs.map +1 -1
  32. package/index.d.cts +11 -11
  33. package/index.d.ts +11 -11
  34. package/index.js +12 -12
  35. package/index.js.map +1 -1
  36. package/metafile-cjs.json +1 -1
  37. package/metafile-esm.json +1 -1
  38. package/node/index.cjs +7 -7
  39. package/node/index.cjs.map +1 -1
  40. package/node/index.d.cts +3 -3
  41. package/node/index.d.ts +3 -3
  42. package/node/index.js +5 -5
  43. package/node/index.js.map +1 -1
  44. package/package.json +1 -1
  45. package/src/cf/cf-sys-abstraction.ts +2 -2
  46. package/src/deno/deno-file-service.ts +3 -3
  47. package/src/deno/deno-sys-abstraction.ts +2 -2
  48. package/src/json-en-decoder.ts +9 -9
  49. package/src/jsr.json +1 -1
  50. package/src/logger-impl.ts +2 -2
  51. package/src/node/node-file-service.ts +2 -2
  52. package/src/node/node-sys-abstraction.ts +2 -2
  53. package/src/test/log-write-stream.ts +2 -2
  54. package/src/txt-en-decoder.ts +5 -5
  55. package/src/utils/string2stream.ts +2 -2
  56. package/src/web/web-sys-abstraction.ts +2 -2
  57. package/{sys-abstraction-B-0XMe9V.d.cts → sys-abstraction-3OXhCVsu.d.cts} +1 -1
  58. package/{sys-abstraction-CZa-VyNs.d.ts → sys-abstraction-DXeSUn9x.d.ts} +1 -1
  59. package/test/index.cjs +8 -8
  60. package/test/index.cjs.map +1 -1
  61. package/test/index.d.cts +3 -3
  62. package/test/index.d.ts +3 -3
  63. package/test/index.js +4 -4
  64. package/ts/src/cf/cf-sys-abstraction.js +2 -2
  65. package/ts/src/cf/cf-sys-abstraction.js.map +1 -1
  66. package/ts/src/deno/deno-file-service.d.ts.map +1 -1
  67. package/ts/src/deno/deno-file-service.js +3 -3
  68. package/ts/src/deno/deno-file-service.js.map +1 -1
  69. package/ts/src/deno/deno-sys-abstraction.js +2 -2
  70. package/ts/src/deno/deno-sys-abstraction.js.map +1 -1
  71. package/ts/src/json-en-decoder.d.ts +2 -2
  72. package/ts/src/json-en-decoder.d.ts.map +1 -1
  73. package/ts/src/json-en-decoder.js +6 -6
  74. package/ts/src/json-en-decoder.js.map +1 -1
  75. package/ts/src/logger-impl.d.ts.map +1 -1
  76. package/ts/src/logger-impl.js +2 -2
  77. package/ts/src/logger-impl.js.map +1 -1
  78. package/ts/src/node/node-file-service.d.ts.map +1 -1
  79. package/ts/src/node/node-file-service.js +2 -2
  80. package/ts/src/node/node-file-service.js.map +1 -1
  81. package/ts/src/node/node-sys-abstraction.js +2 -2
  82. package/ts/src/node/node-sys-abstraction.js.map +1 -1
  83. package/ts/src/test/log-write-stream.d.ts.map +1 -1
  84. package/ts/src/test/log-write-stream.js +2 -2
  85. package/ts/src/test/log-write-stream.js.map +1 -1
  86. package/ts/src/txt-en-decoder.d.ts +1 -1
  87. package/ts/src/txt-en-decoder.d.ts.map +1 -1
  88. package/ts/src/txt-en-decoder.js +5 -5
  89. package/ts/src/txt-en-decoder.js.map +1 -1
  90. package/ts/src/txt-en-decoder.test.js +3 -15
  91. package/ts/src/txt-en-decoder.test.js.map +1 -1
  92. package/ts/src/utils/string2stream.d.ts.map +1 -1
  93. package/ts/src/utils/string2stream.js +2 -2
  94. package/ts/src/utils/string2stream.js.map +1 -1
  95. package/ts/src/web/web-sys-abstraction.js +2 -2
  96. package/ts/src/web/web-sys-abstraction.js.map +1 -1
  97. package/utils/index.cjs +6 -6
  98. package/utils/index.cjs.map +1 -1
  99. package/utils/index.d.cts +2 -2
  100. package/utils/index.d.ts +2 -2
  101. package/utils/index.js +2 -2
  102. package/web/index.cjs +6 -6
  103. package/web/index.cjs.map +1 -1
  104. package/web/index.d.cts +3 -3
  105. package/web/index.d.ts +3 -3
  106. package/web/index.js +3 -3
  107. package/chunk-K5TIGJ6I.js.map +0 -1
  108. package/chunk-LNS2K5WL.js.map +0 -1
  109. /package/{chunk-SCFB6I2C.js.map → chunk-GVZIH356.js.map} +0 -0
package/node/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { F as FileService, N as NamedWritableStream, b as SystemService, E as Env, V as VoidFunc, S as SysAbstraction } from '../sys-abstraction-CZa-VyNs.js';
2
- import { T as TxtEnDecoder } from '../get-params-result-CXYbMEcV.js';
3
- import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base-sys-abstraction-Cqb4snul.js';
1
+ import { F as FileService, N as NamedWritableStream, b as SystemService, E as Env, V as VoidFunc, S as SysAbstraction } from '../sys-abstraction-DXeSUn9x.js';
2
+ import { T as TxtEnDecoder } from '../get-params-result-C2cbgB78.js';
3
+ import { E as ExitService, a as ExitHandler, W as WrapperSysAbstractionParams } from '../base-sys-abstraction-8v83VyEU.js';
4
4
 
5
5
  declare class NodeFileService implements FileService {
6
6
  readonly baseDir: string;
package/node/index.js CHANGED
@@ -2,10 +2,10 @@ import {
2
2
  BaseSysAbstraction,
3
3
  WrapperSysAbstraction,
4
4
  envFactory
5
- } from "../chunk-SCFB6I2C.js";
5
+ } from "../chunk-GVZIH356.js";
6
6
  import {
7
- Utf8EnDecoderSingleton
8
- } from "../chunk-BVZ6HD34.js";
7
+ TxtEnDecoderSingleton
8
+ } from "../chunk-A57BAYWU.js";
9
9
 
10
10
  // src/node/node-file-service.ts
11
11
  import path from "node:path";
@@ -54,7 +54,7 @@ var NodeFileService = class {
54
54
  isAbsolute(fname) {
55
55
  return path.isAbsolute(fname);
56
56
  }
57
- async writeFileString(fname, content, ende = Utf8EnDecoderSingleton()) {
57
+ async writeFileString(fname, content, ende = TxtEnDecoderSingleton()) {
58
58
  const o = await this.create(fname);
59
59
  const wr = o.stream.getWriter();
60
60
  await wr.write(ende.encode(content));
@@ -171,7 +171,7 @@ var my = void 0;
171
171
  function NodeSysAbstraction(param) {
172
172
  if (!my) {
173
173
  my = new BaseSysAbstraction({
174
- TxtEnDecoder: (param == null ? void 0 : param.TxtEnDecoder) || Utf8EnDecoderSingleton(),
174
+ TxtEnDecoder: (param == null ? void 0 : param.TxtEnDecoder) || TxtEnDecoderSingleton(),
175
175
  FileSystem: new NodeFileService(),
176
176
  SystemService: new NodeSystemService()
177
177
  });
package/node/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/node/node-file-service.ts","../../../src/node/node-sys-abstraction.ts","../../../src/node/mock-file-service.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs\";\nimport process from \"node:process\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { TxtEnDecoder, Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class NodeFileService implements FileService {\n readonly baseDir: string;\n constructor(baseDir: string = process.cwd()) {\n this.baseDir = this.abs(baseDir);\n }\n\n // nodeImport(fname: string): string {\n // // console.log('nodeImport:'+ fname);\n // if (path.isAbsolute(fname)) {\n // return fname;\n // } else {\n // return \"./\" + path.normalize(fname);\n // }\n // }\n\n readFileString(fname: string): Promise<string> {\n return fs.promises.readFile(fname, { encoding: \"utf-8\" });\n }\n\n dirname(fname: string): string {\n return path.dirname(fname);\n }\n basename(fname: string): string {\n return path.basename(fname);\n }\n\n join(...paths: string[]): string {\n return path.join(...paths);\n }\n\n relative(from: string, to?: string): string {\n if (to === undefined) {\n to = from;\n from = process.cwd();\n }\n const ret = path.relative(from, to);\n // console.log('relative:'+ from + \" -> \" + to + \"= \" + ret);\n return ret;\n }\n\n abs(fname: string): string {\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n const cwd = process.cwd();\n return path.resolve(cwd, fname);\n }\n }\n\n isAbsolute(fname: string): boolean {\n return path.isAbsolute(fname);\n }\n\n async writeFileString(fname: string, content: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): Promise<void> {\n const o = await this.create(fname);\n const wr = o.stream.getWriter();\n await wr.write(ende.encode(content));\n await wr.close();\n }\n\n async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!path.isAbsolute(fname)) {\n oName = this.abs(fname);\n }\n\n const base = path.dirname(oName);\n await fs.promises.mkdir(base, { recursive: true });\n const out = fs.createWriteStream(oName);\n return {\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk): void {\n out.write(chunk);\n },\n close(): void {\n out.close();\n },\n abort(): void {\n throw new Error(\"not implemented\");\n },\n }),\n };\n }\n}\n","import { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport {\n BaseSysAbstraction,\n ExitHandler,\n ExitService,\n WrapperSysAbstraction,\n WrapperSysAbstractionParams,\n} from \"../base-sys-abstraction.js\";\nimport { NodeFileService } from \"./node-file-service.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport process from \"node:process\";\n\nexport class NodeExitServiceImpl implements ExitService {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"unhandledRejection\", (reason: string, p: Promise<unknown>) => {\n this.exit(19);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"uncaughtException\", (error: Error) => {\n this.exit(18);\n });\n process.on(\"close\", () => {\n this.exit(0);\n });\n process.on(\"exit\", () => {\n this.exit(0);\n });\n process.on(\"SIGQUIT\", () => {\n this.exit(3);\n });\n process.on(\"SIGINT\", () => {\n this.exit(2);\n });\n process.on(\"SIGTERM\", () => {\n this.exit(9);\n });\n }\n _exitHandlers: ExitHandler[] = [];\n injectExitHandlers(hdls: ExitHandler[]): void {\n // console.log(\"ExitService: injecting exit handlers\", hdls)\n this._exitHandlers = hdls;\n }\n invoked = false;\n readonly _handleExit = async (): Promise<void> => {\n if (this.invoked) {\n // console.error(\"ExitService: already invoked\");\n return;\n }\n this.invoked = true;\n for (const h of this._exitHandlers) {\n try {\n // console.log(`ExitService: calling handler ${h.id}`)\n const ret = h.hdl();\n // console.log(`ExitService: called handler ${h.id}`, ret)\n if (typeof (ret as Promise<void>).then === \"function\") {\n await ret;\n }\n } finally {\n // ignore\n }\n }\n };\n\n exit(code: number): void {\n // console.log(\"ExitService: exit called\", code)\n this._handleExit()\n .then(() => {\n process.exit(code);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\"ExitService: failed to handle exit\", err);\n process.exit(code);\n });\n }\n}\n\nexport class NodeSystemService implements SystemService {\n static readonly _exitHandlers: ExitHandler[] = [];\n readonly _exitService: ExitService = new NodeExitServiceImpl();\n constructor() {\n this._exitService.injectExitHandlers(NodeSystemService._exitHandlers);\n }\n\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return process.argv;\n }\n\n OnExit(hdl: VoidFunc): VoidFunc {\n const id = crypto.randomUUID();\n NodeSystemService._exitHandlers.push({ hdl, id });\n return () => {\n const idx = NodeSystemService._exitHandlers.findIndex((h) => h.id === id);\n if (idx >= 0) {\n NodeSystemService._exitHandlers.splice(idx, 1);\n }\n };\n }\n\n Exit(code: number): void {\n this._exitService.exit(code);\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new NodeFileService(),\n SystemService: new NodeSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { NamedWritableStream } from \"../file-service.js\";\nimport { NodeFileService } from \"./node-file-service.js\";\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 create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!this.isAbsolute(fname)) {\n oName = 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 Promise.resolve({\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk): void {\n fc.content = fc.content + decoder.decode(chunk);\n },\n close(): void {\n // do nothing\n },\n abort(): void {\n throw new Error(\"not implemented\");\n },\n }),\n });\n }\n}\n"],"mappings":"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","names":["process"]}
1
+ {"version":3,"sources":["../../../src/node/node-file-service.ts","../../../src/node/node-sys-abstraction.ts","../../../src/node/mock-file-service.ts"],"sourcesContent":["import path from \"node:path\";\nimport fs from \"node:fs\";\nimport process from \"node:process\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class NodeFileService implements FileService {\n readonly baseDir: string;\n constructor(baseDir: string = process.cwd()) {\n this.baseDir = this.abs(baseDir);\n }\n\n // nodeImport(fname: string): string {\n // // console.log('nodeImport:'+ fname);\n // if (path.isAbsolute(fname)) {\n // return fname;\n // } else {\n // return \"./\" + path.normalize(fname);\n // }\n // }\n\n readFileString(fname: string): Promise<string> {\n return fs.promises.readFile(fname, { encoding: \"utf-8\" });\n }\n\n dirname(fname: string): string {\n return path.dirname(fname);\n }\n basename(fname: string): string {\n return path.basename(fname);\n }\n\n join(...paths: string[]): string {\n return path.join(...paths);\n }\n\n relative(from: string, to?: string): string {\n if (to === undefined) {\n to = from;\n from = process.cwd();\n }\n const ret = path.relative(from, to);\n // console.log('relative:'+ from + \" -> \" + to + \"= \" + ret);\n return ret;\n }\n\n abs(fname: string): string {\n if (path.isAbsolute(fname)) {\n return fname;\n } else {\n const cwd = process.cwd();\n return path.resolve(cwd, fname);\n }\n }\n\n isAbsolute(fname: string): boolean {\n return path.isAbsolute(fname);\n }\n\n async writeFileString(fname: string, content: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): Promise<void> {\n const o = await this.create(fname);\n const wr = o.stream.getWriter();\n await wr.write(ende.encode(content));\n await wr.close();\n }\n\n async create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!path.isAbsolute(fname)) {\n oName = this.abs(fname);\n }\n\n const base = path.dirname(oName);\n await fs.promises.mkdir(base, { recursive: true });\n const out = fs.createWriteStream(oName);\n return {\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk): void {\n out.write(chunk);\n },\n close(): void {\n out.close();\n },\n abort(): void {\n throw new Error(\"not implemented\");\n },\n }),\n };\n }\n}\n","import { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport {\n BaseSysAbstraction,\n ExitHandler,\n ExitService,\n WrapperSysAbstraction,\n WrapperSysAbstractionParams,\n} from \"../base-sys-abstraction.js\";\nimport { NodeFileService } from \"./node-file-service.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport process from \"node:process\";\n\nexport class NodeExitServiceImpl implements ExitService {\n constructor() {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"unhandledRejection\", (reason: string, p: Promise<unknown>) => {\n this.exit(19);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n process.on(\"uncaughtException\", (error: Error) => {\n this.exit(18);\n });\n process.on(\"close\", () => {\n this.exit(0);\n });\n process.on(\"exit\", () => {\n this.exit(0);\n });\n process.on(\"SIGQUIT\", () => {\n this.exit(3);\n });\n process.on(\"SIGINT\", () => {\n this.exit(2);\n });\n process.on(\"SIGTERM\", () => {\n this.exit(9);\n });\n }\n _exitHandlers: ExitHandler[] = [];\n injectExitHandlers(hdls: ExitHandler[]): void {\n // console.log(\"ExitService: injecting exit handlers\", hdls)\n this._exitHandlers = hdls;\n }\n invoked = false;\n readonly _handleExit = async (): Promise<void> => {\n if (this.invoked) {\n // console.error(\"ExitService: already invoked\");\n return;\n }\n this.invoked = true;\n for (const h of this._exitHandlers) {\n try {\n // console.log(`ExitService: calling handler ${h.id}`)\n const ret = h.hdl();\n // console.log(`ExitService: called handler ${h.id}`, ret)\n if (typeof (ret as Promise<void>).then === \"function\") {\n await ret;\n }\n } finally {\n // ignore\n }\n }\n };\n\n exit(code: number): void {\n // console.log(\"ExitService: exit called\", code)\n this._handleExit()\n .then(() => {\n process.exit(code);\n })\n .catch((err) => {\n // eslint-disable-next-line no-console\n console.error(\"ExitService: failed to handle exit\", err);\n process.exit(code);\n });\n }\n}\n\nexport class NodeSystemService implements SystemService {\n static readonly _exitHandlers: ExitHandler[] = [];\n readonly _exitService: ExitService = new NodeExitServiceImpl();\n constructor() {\n this._exitService.injectExitHandlers(NodeSystemService._exitHandlers);\n }\n\n Env(): Env {\n return envFactory();\n }\n\n Args(): string[] {\n return process.argv;\n }\n\n OnExit(hdl: VoidFunc): VoidFunc {\n const id = crypto.randomUUID();\n NodeSystemService._exitHandlers.push({ hdl, id });\n return () => {\n const idx = NodeSystemService._exitHandlers.findIndex((h) => h.id === id);\n if (idx >= 0) {\n NodeSystemService._exitHandlers.splice(idx, 1);\n }\n };\n }\n\n Exit(code: number): void {\n this._exitService.exit(code);\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),\n FileSystem: new NodeFileService(),\n SystemService: new NodeSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { NamedWritableStream } from \"../file-service.js\";\nimport { NodeFileService } from \"./node-file-service.js\";\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 create(fname: string): Promise<NamedWritableStream> {\n let oName = fname;\n if (!this.isAbsolute(fname)) {\n oName = 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 Promise.resolve({\n name: oName,\n stream: new WritableStream<Uint8Array>({\n write(chunk): void {\n fc.content = fc.content + decoder.decode(chunk);\n },\n close(): void {\n // do nothing\n },\n abort(): void {\n throw new Error(\"not implemented\");\n },\n }),\n });\n }\n}\n"],"mappings":"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","names":["process"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.3.7",
3
+ "version": "0.3.8",
4
4
  "description": "better try/catch/finally handling",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -1,7 +1,7 @@
1
1
  import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from "../base-sys-abstraction.js";
2
2
  import { SysAbstraction, SystemService, VoidFunc } from "../sys-abstraction.js";
3
3
  import { Env, envFactory } from "../sys-env.js";
4
- import { Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
4
+ import { TxtEnDecoderSingleton } from "../txt-en-decoder.js";
5
5
  import { WebFileService } from "../web/web-sys-abstraction.js";
6
6
 
7
7
  export class CFSystemService implements SystemService {
@@ -25,7 +25,7 @@ let my: BaseSysAbstraction | undefined = undefined;
25
25
  export function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {
26
26
  if (!my) {
27
27
  my = new BaseSysAbstraction({
28
- TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),
28
+ TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),
29
29
  FileSystem: new WebFileService(),
30
30
  SystemService: new CFSystemService(),
31
31
  });
@@ -1,6 +1,6 @@
1
1
  import * as path from "node:path";
2
2
  import { FileService, NamedWritableStream } from "../file-service.js";
3
- import { TxtEnDecoder, Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
3
+ import { TxtEnDecoder, TxtEnDecoderSingleton } from "../txt-en-decoder.js";
4
4
 
5
5
  const Deno = (globalThis as unknown as { Deno: unknown }).Deno as {
6
6
  cwd(): string;
@@ -12,7 +12,7 @@ const Deno = (globalThis as unknown as { Deno: unknown }).Deno as {
12
12
  export class DenoFileService implements FileService {
13
13
  readonly baseDir: string;
14
14
  readonly txtEnde: TxtEnDecoder;
15
- constructor(baseDir: string = Deno.cwd(), txtEnde: TxtEnDecoder = Utf8EnDecoderSingleton()) {
15
+ constructor(baseDir: string = Deno.cwd(), txtEnde: TxtEnDecoder = TxtEnDecoderSingleton()) {
16
16
  this.baseDir = this.abs(baseDir);
17
17
  this.txtEnde = txtEnde;
18
18
  }
@@ -64,7 +64,7 @@ export class DenoFileService implements FileService {
64
64
  return path.isAbsolute(fname);
65
65
  }
66
66
 
67
- async writeFileString(fname: string, content: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): Promise<void> {
67
+ async writeFileString(fname: string, content: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): Promise<void> {
68
68
  const o = await this.create(fname);
69
69
  const wr = o.stream.getWriter();
70
70
  await wr.write(ende.encode(content));
@@ -7,7 +7,7 @@ import {
7
7
  } from "../base-sys-abstraction.js";
8
8
  import { SysAbstraction, SystemService, VoidFunc } from "../sys-abstraction.js";
9
9
  import { Env, envFactory } from "../sys-env.js";
10
- import { Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
10
+ import { TxtEnDecoderSingleton } from "../txt-en-decoder.js";
11
11
  // import * as process from "node:process";
12
12
  import { DenoFileService } from "./deno-file-service.js";
13
13
 
@@ -125,7 +125,7 @@ let my: BaseSysAbstraction | undefined = undefined;
125
125
  export function DenoSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {
126
126
  if (!my) {
127
127
  my = new BaseSysAbstraction({
128
- TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),
128
+ TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),
129
129
  FileSystem: new DenoFileService(),
130
130
  SystemService: new DenoSystemService(),
131
131
  });
@@ -1,7 +1,7 @@
1
1
  import { exception2Result, Result } from "./result.js";
2
- import { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, Utf8EnDecoderSingleton } from "./txt-en-decoder.js";
2
+ import { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, TxtEnDecoderSingleton as TxtEnDecoderSingleton } from "./txt-en-decoder.js";
3
3
 
4
- export interface JSONEndeCoder {
4
+ export interface JSONEnDecoder {
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
6
  stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;
7
7
  asyncStringify<T>(
@@ -25,7 +25,7 @@ export interface JSONEndeCoder {
25
25
  asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>>;
26
26
  }
27
27
 
28
- class JSONOps implements JSONEndeCoder {
28
+ class JSONOps implements JSONEnDecoder {
29
29
  readonly txtOps: TxtEnDecoder;
30
30
  constructor(txtOps: TxtEnDecoder) {
31
31
  this.txtOps = txtOps;
@@ -68,16 +68,16 @@ class JSONOps implements JSONEndeCoder {
68
68
  }
69
69
  }
70
70
 
71
- let jsonEnCoder: JSONEndeCoder;
72
- export function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEndeCoder {
71
+ let jsonEnDecoder: JSONEnDecoder;
72
+ export function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder {
73
73
  let needNew = false;
74
- if (txtEnde && txtEnde !== Utf8EnDecoderSingleton()) {
74
+ if (txtEnde && txtEnde !== TxtEnDecoderSingleton()) {
75
75
  needNew = !!txtEnde;
76
- txtEnde = txtEnde ?? Utf8EnDecoderSingleton();
76
+ txtEnde = txtEnde ?? TxtEnDecoderSingleton();
77
77
  }
78
78
  if (needNew && txtEnde) {
79
79
  return new JSONOps(txtEnde);
80
80
  }
81
- jsonEnCoder = jsonEnCoder ?? new JSONOps(Utf8EnDecoderSingleton());
82
- return jsonEnCoder;
81
+ jsonEnDecoder = jsonEnDecoder ?? new JSONOps(TxtEnDecoderSingleton());
82
+ return jsonEnDecoder;
83
83
  }
package/src/jsr.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adviser/cement",
3
- "version": "0.3.7",
3
+ "version": "0.3.8",
4
4
  "exports": {
5
5
  ".": "./index.ts",
6
6
  "./web": "./web/index.ts",
@@ -26,7 +26,7 @@ import { CoerceURI, URI } from "./uri.js";
26
26
  import { runtimeFn } from "./runtime.js";
27
27
  import { ConsoleWriterStream } from "./utils/console-write-stream.js";
28
28
  import { LogWriterStream } from "./log-writer-impl.js";
29
- import { TxtEnDecoder, Utf8EnDecoderSingleton } from "./txt-en-decoder.js";
29
+ import { TxtEnDecoder, TxtEnDecoderSingleton } from "./txt-en-decoder.js";
30
30
  import { LevelHandlerSingleton } from "./log-level-impl.js";
31
31
 
32
32
  function getLen(value: unknown, lvs: LogValueState): LogValue {
@@ -126,7 +126,7 @@ export class LoggerImpl implements Logger {
126
126
  this._sys = params.sys;
127
127
  }
128
128
  if (!params.txtEnDe) {
129
- this._txtEnDe = Utf8EnDecoderSingleton();
129
+ this._txtEnDe = TxtEnDecoderSingleton();
130
130
  } else {
131
131
  this._txtEnDe = params.txtEnDe;
132
132
  }
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import fs from "node:fs";
3
3
  import process from "node:process";
4
4
  import { FileService, NamedWritableStream } from "../file-service.js";
5
- import { TxtEnDecoder, Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
5
+ import { TxtEnDecoder, TxtEnDecoderSingleton } from "../txt-en-decoder.js";
6
6
 
7
7
  export class NodeFileService implements FileService {
8
8
  readonly baseDir: string;
@@ -57,7 +57,7 @@ export class NodeFileService implements FileService {
57
57
  return path.isAbsolute(fname);
58
58
  }
59
59
 
60
- async writeFileString(fname: string, content: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): Promise<void> {
60
+ async writeFileString(fname: string, content: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): Promise<void> {
61
61
  const o = await this.create(fname);
62
62
  const wr = o.stream.getWriter();
63
63
  await wr.write(ende.encode(content));
@@ -8,7 +8,7 @@ import {
8
8
  } from "../base-sys-abstraction.js";
9
9
  import { NodeFileService } from "./node-file-service.js";
10
10
  import { Env, envFactory } from "../sys-env.js";
11
- import { Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
11
+ import { TxtEnDecoderSingleton } from "../txt-en-decoder.js";
12
12
  import process from "node:process";
13
13
 
14
14
  export class NodeExitServiceImpl implements ExitService {
@@ -112,7 +112,7 @@ let my: BaseSysAbstraction | undefined = undefined;
112
112
  export function NodeSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {
113
113
  if (!my) {
114
114
  my = new BaseSysAbstraction({
115
- TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),
115
+ TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),
116
116
  FileSystem: new NodeFileService(),
117
117
  SystemService: new NodeSystemService(),
118
118
  });
@@ -1,6 +1,6 @@
1
1
  import { FanoutWriteStream } from "../utils/fanout-write-stream.js";
2
2
  import { Future } from "../future.js";
3
- import { TxtEnDecoder, Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
3
+ import { TxtEnDecoder, TxtEnDecoderSingleton } from "../txt-en-decoder.js";
4
4
 
5
5
  export class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
6
6
  private readonly _bufferArr: Uint8Array[];
@@ -42,7 +42,7 @@ export class LogCollector implements WritableStream<Uint8Array> {
42
42
 
43
43
  constructor(pass?: WritableStreamDefaultWriter<Uint8Array>, txtEnDe?: TxtEnDecoder) {
44
44
  this._pass = pass;
45
- this._txtEnDe = txtEnDe || Utf8EnDecoderSingleton();
45
+ this._txtEnDe = txtEnDe || TxtEnDecoderSingleton();
46
46
  }
47
47
 
48
48
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -10,7 +10,7 @@ export interface TxtEnDecoder {
10
10
  asyncDecode(input: AsyncToEnDecoder): Promise<string>;
11
11
  }
12
12
 
13
- class Utf8EnDecoder implements TxtEnDecoder {
13
+ class TxtOps implements TxtEnDecoder {
14
14
  readonly encoder = new TextEncoder();
15
15
  readonly decoder = new TextDecoder();
16
16
 
@@ -43,8 +43,8 @@ class Utf8EnDecoder implements TxtEnDecoder {
43
43
  }
44
44
  }
45
45
 
46
- let utf8EnDecoder: TxtEnDecoder;
47
- export function Utf8EnDecoderSingleton(): TxtEnDecoder {
48
- utf8EnDecoder = utf8EnDecoder ?? new Utf8EnDecoder();
49
- return utf8EnDecoder;
46
+ let txtEnDecoder: TxtEnDecoder;
47
+ export function TxtEnDecoderSingleton(): TxtEnDecoder {
48
+ txtEnDecoder = txtEnDecoder ?? new TxtOps();
49
+ return txtEnDecoder;
50
50
  }
@@ -1,6 +1,6 @@
1
- import { TxtEnDecoder, Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
1
+ import { TxtEnDecoder, TxtEnDecoderSingleton } from "../txt-en-decoder.js";
2
2
 
3
- export function string2stream(str: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): ReadableStream<Uint8Array> {
3
+ export function string2stream(str: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): ReadableStream<Uint8Array> {
4
4
  return uint8array2stream(ende.encode(str));
5
5
  }
6
6
 
@@ -2,7 +2,7 @@ import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams
2
2
  import { FileService, NamedWritableStream } from "../file-service.js";
3
3
  import { SysAbstraction, SystemService, VoidFunc } from "../sys-abstraction.js";
4
4
  import { Env, envFactory } from "../sys-env.js";
5
- import { Utf8EnDecoderSingleton } from "../txt-en-decoder.js";
5
+ import { TxtEnDecoderSingleton } from "../txt-en-decoder.js";
6
6
 
7
7
  export class WebFileService implements FileService {
8
8
  get baseDir(): string {
@@ -71,7 +71,7 @@ let my: BaseSysAbstraction | undefined = undefined;
71
71
  export function WebSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {
72
72
  if (!my) {
73
73
  my = new BaseSysAbstraction({
74
- TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),
74
+ TxtEnDecoder: param?.TxtEnDecoder || TxtEnDecoderSingleton(),
75
75
  FileSystem: new WebFileService(),
76
76
  SystemService: new WebSystemService(),
77
77
  });
@@ -1,4 +1,4 @@
1
- import { K as KeysParam, R as Result } from './get-params-result-CXYbMEcV.cjs';
1
+ import { K as KeysParam, R as Result } from './get-params-result-C2cbgB78.cjs';
2
2
 
3
3
  interface NamedWritableStream {
4
4
  readonly name: string;
@@ -1,4 +1,4 @@
1
- import { K as KeysParam, R as Result } from './get-params-result-CXYbMEcV.js';
1
+ import { K as KeysParam, R as Result } from './get-params-result-C2cbgB78.js';
2
2
 
3
3
  interface NamedWritableStream {
4
4
  readonly name: string;
package/test/index.cjs CHANGED
@@ -218,7 +218,7 @@ function coerceIntoUint8(raw) {
218
218
  }
219
219
 
220
220
  // src/txt-en-decoder.ts
221
- var Utf8EnDecoder = class {
221
+ var TxtOps = class {
222
222
  constructor() {
223
223
  this.encoder = new TextEncoder();
224
224
  this.decoder = new TextDecoder();
@@ -249,10 +249,10 @@ var Utf8EnDecoder = class {
249
249
  return this.decode(resolved);
250
250
  }
251
251
  };
252
- var utf8EnDecoder;
253
- function Utf8EnDecoderSingleton() {
254
- utf8EnDecoder = utf8EnDecoder != null ? utf8EnDecoder : new Utf8EnDecoder();
255
- return utf8EnDecoder;
252
+ var txtEnDecoder;
253
+ function TxtEnDecoderSingleton() {
254
+ txtEnDecoder = txtEnDecoder != null ? txtEnDecoder : new TxtOps();
255
+ return txtEnDecoder;
256
256
  }
257
257
 
258
258
  // src/test/log-write-stream.ts
@@ -286,7 +286,7 @@ var LogCollector = class {
286
286
  this.locked = false;
287
287
  this._bufferArr = [];
288
288
  this._pass = pass;
289
- this._txtEnDe = txtEnDe || Utf8EnDecoderSingleton();
289
+ this._txtEnDe = txtEnDe || TxtEnDecoderSingleton();
290
290
  }
291
291
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
292
292
  abort(reason) {
@@ -1411,7 +1411,7 @@ var my = void 0;
1411
1411
  function WebSysAbstraction(param2) {
1412
1412
  if (!my) {
1413
1413
  my = new BaseSysAbstraction({
1414
- TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || Utf8EnDecoderSingleton(),
1414
+ TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || TxtEnDecoderSingleton(),
1415
1415
  FileSystem: new WebFileService(),
1416
1416
  SystemService: new WebSystemService()
1417
1417
  });
@@ -2170,7 +2170,7 @@ var LoggerImpl = class _LoggerImpl {
2170
2170
  this._sys = params.sys;
2171
2171
  }
2172
2172
  if (!params.txtEnDe) {
2173
- this._txtEnDe = Utf8EnDecoderSingleton();
2173
+ this._txtEnDe = TxtEnDecoderSingleton();
2174
2174
  } else {
2175
2175
  this._txtEnDe = params.txtEnDe;
2176
2176
  }