@adviser/cement 0.3.6 → 0.3.7

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 (127) hide show
  1. package/{base-sys-abstraction-CKI4xiRR.d.ts → base-sys-abstraction-Cqb4snul.d.ts} +2 -2
  2. package/{base-sys-abstraction-DLnSeH4s.d.cts → base-sys-abstraction-WS7lNbFm.d.cts} +2 -2
  3. package/cf/index.cjs +59 -8
  4. package/cf/index.cjs.map +1 -1
  5. package/cf/index.d.cts +19 -4
  6. package/cf/index.d.ts +19 -4
  7. package/cf/index.js +5 -3
  8. package/cf/index.js.map +1 -1
  9. package/{chunk-QDDO6NOK.js → chunk-BVZ6HD34.js} +66 -7
  10. package/chunk-BVZ6HD34.js.map +1 -0
  11. package/{chunk-N5ISHPJ6.js → chunk-H5JLIMWA.js} +41 -2
  12. package/{chunk-N5ISHPJ6.js.map → chunk-H5JLIMWA.js.map} +1 -1
  13. package/{chunk-OIIUVSUX.js → chunk-K5TIGJ6I.js} +3 -3
  14. package/{chunk-Z7F6652G.js → chunk-LNS2K5WL.js} +4 -4
  15. package/{chunk-4QRZPFED.js → chunk-SCFB6I2C.js} +58 -57
  16. package/{chunk-4QRZPFED.js.map → chunk-SCFB6I2C.js.map} +1 -1
  17. package/deno/index.cjs +57 -8
  18. package/deno/index.cjs.map +1 -1
  19. package/deno/index.d.cts +3 -3
  20. package/deno/index.d.ts +3 -3
  21. package/deno/index.js +2 -2
  22. package/{get-params-result-Bhy5997x.d.ts → get-params-result-CXYbMEcV.d.cts} +13 -7
  23. package/{get-params-result-Bhy5997x.d.cts → get-params-result-CXYbMEcV.d.ts} +13 -7
  24. package/{index-CcNS7k5i.d.cts → index-BH1SIYUK.d.cts} +2 -2
  25. package/{index-DjN6Y4N2.d.ts → index-BQMIP01w.d.ts} +19 -3
  26. package/{index-6ofzOS0J.d.ts → index-BeXMFEyF.d.ts} +2 -2
  27. package/{index-TZQHtEZo.d.cts → index-C6hvxtE7.d.cts} +19 -3
  28. package/index.cjs +180 -14
  29. package/index.cjs.map +1 -1
  30. package/index.d.cts +27 -10
  31. package/index.d.ts +27 -10
  32. package/index.js +83 -7
  33. package/index.js.map +1 -1
  34. package/metafile-cjs.json +1 -0
  35. package/metafile-esm.json +1 -0
  36. package/node/index.cjs +139 -90
  37. package/node/index.cjs.map +1 -1
  38. package/node/index.d.cts +3 -3
  39. package/node/index.d.ts +3 -3
  40. package/node/index.js +2 -2
  41. package/package.json +2 -2
  42. package/src/cf/index.ts +1 -0
  43. package/src/http_header.ts +1 -1
  44. package/src/index.ts +5 -1
  45. package/src/json-en-decoder.ts +83 -0
  46. package/src/jsr.json +1 -1
  47. package/src/path-ops.ts +30 -0
  48. package/src/txt-en-decoder.ts +38 -9
  49. package/src/utils/coerce-uint8.ts +53 -0
  50. package/src/utils/index.ts +3 -0
  51. package/src/utils/sorted-object.ts +18 -0
  52. package/src/utils/uint8array-equal.ts +11 -0
  53. package/{sys-abstraction-BRDT_TIU.d.cts → sys-abstraction-B-0XMe9V.d.cts} +2 -2
  54. package/{sys-abstraction-Bd0EzwO6.d.ts → sys-abstraction-CZa-VyNs.d.ts} +2 -2
  55. package/test/index.cjs +150 -101
  56. package/test/index.cjs.map +1 -1
  57. package/test/index.d.cts +3 -3
  58. package/test/index.d.ts +3 -3
  59. package/test/index.js +4 -4
  60. package/ts/src/cf/index.d.ts +1 -0
  61. package/ts/src/cf/index.d.ts.map +1 -1
  62. package/ts/src/cf/index.js +1 -0
  63. package/ts/src/cf/index.js.map +1 -1
  64. package/ts/src/http_header.d.ts +1 -1
  65. package/ts/src/http_header.d.ts.map +1 -1
  66. package/ts/src/http_header.js.map +1 -1
  67. package/ts/src/index.d.ts +2 -0
  68. package/ts/src/index.d.ts.map +1 -1
  69. package/ts/src/index.js +2 -0
  70. package/ts/src/index.js.map +1 -1
  71. package/ts/src/json-en-decoder.d.ts +12 -0
  72. package/ts/src/json-en-decoder.d.ts.map +1 -0
  73. package/ts/src/json-en-decoder.js +41 -0
  74. package/ts/src/json-en-decoder.js.map +1 -0
  75. package/ts/src/json-en-decoder.test.d.ts +2 -0
  76. package/ts/src/json-en-decoder.test.d.ts.map +1 -0
  77. package/ts/src/json-en-decoder.test.js +18 -0
  78. package/ts/src/json-en-decoder.test.js.map +1 -0
  79. package/ts/src/path-ops.d.ts +7 -0
  80. package/ts/src/path-ops.d.ts.map +1 -0
  81. package/ts/src/path-ops.js +33 -0
  82. package/ts/src/path-ops.js.map +1 -0
  83. package/ts/src/path-ops.test.d.ts +2 -0
  84. package/ts/src/path-ops.test.d.ts.map +1 -0
  85. package/ts/src/path-ops.test.js +23 -0
  86. package/ts/src/path-ops.test.js.map +1 -0
  87. package/ts/src/txt-en-decoder.d.ts +7 -6
  88. package/ts/src/txt-en-decoder.d.ts.map +1 -1
  89. package/ts/src/txt-en-decoder.js +30 -6
  90. package/ts/src/txt-en-decoder.js.map +1 -1
  91. package/ts/src/txt-en-decoder.test.d.ts +2 -0
  92. package/ts/src/txt-en-decoder.test.d.ts.map +1 -0
  93. package/ts/src/txt-en-decoder.test.js +60 -0
  94. package/ts/src/txt-en-decoder.test.js.map +1 -0
  95. package/ts/src/utils/coerce-uint8.d.ts +8 -0
  96. package/ts/src/utils/coerce-uint8.d.ts.map +1 -0
  97. package/ts/src/utils/coerce-uint8.js +34 -0
  98. package/ts/src/utils/coerce-uint8.js.map +1 -0
  99. package/ts/src/utils/index.d.ts +3 -0
  100. package/ts/src/utils/index.d.ts.map +1 -1
  101. package/ts/src/utils/index.js +3 -0
  102. package/ts/src/utils/index.js.map +1 -1
  103. package/ts/src/utils/sorted-objec.test.d.ts +2 -0
  104. package/ts/src/utils/sorted-objec.test.d.ts.map +1 -0
  105. package/ts/src/utils/sorted-objec.test.js +20 -0
  106. package/ts/src/utils/sorted-objec.test.js.map +1 -0
  107. package/ts/src/utils/sorted-object.d.ts +4 -0
  108. package/ts/src/utils/sorted-object.d.ts.map +1 -0
  109. package/ts/src/utils/sorted-object.js +16 -0
  110. package/ts/src/utils/sorted-object.js.map +1 -0
  111. package/ts/src/utils/uint8array-equal.d.ts +2 -0
  112. package/ts/src/utils/uint8array-equal.d.ts.map +1 -0
  113. package/ts/src/utils/uint8array-equal.js +12 -0
  114. package/ts/src/utils/uint8array-equal.js.map +1 -0
  115. package/utils/index.cjs +182 -87
  116. package/utils/index.cjs.map +1 -1
  117. package/utils/index.d.cts +2 -2
  118. package/utils/index.d.ts +2 -2
  119. package/utils/index.js +14 -2
  120. package/web/index.cjs +57 -8
  121. package/web/index.cjs.map +1 -1
  122. package/web/index.d.cts +3 -3
  123. package/web/index.d.ts +3 -3
  124. package/web/index.js +3 -3
  125. package/chunk-QDDO6NOK.js.map +0 -1
  126. /package/{chunk-OIIUVSUX.js.map → chunk-K5TIGJ6I.js.map} +0 -0
  127. /package/{chunk-Z7F6652G.js.map → chunk-LNS2K5WL.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- import { T as Time, b as TimeMode, R as RandomMode, I as IDMode, F as FileService, S as SystemService, V as VoidFunc, a as SysAbstraction } from './sys-abstraction-Bd0EzwO6.js';
2
- import { T as TxtEnDecoder } from './get-params-result-Bhy5997x.js';
1
+ import { T as Time, a as TimeMode, R as RandomMode, I as IDMode, F as FileService, b as SystemService, V as VoidFunc, S as SysAbstraction } from './sys-abstraction-CZa-VyNs.js';
2
+ import { T as TxtEnDecoder } from './get-params-result-CXYbMEcV.js';
3
3
 
4
4
  declare class SysTime extends Time {
5
5
  Now(): Date;
@@ -1,5 +1,5 @@
1
- import { T as Time, b as TimeMode, R as RandomMode, I as IDMode, F as FileService, S as SystemService, V as VoidFunc, a as SysAbstraction } from './sys-abstraction-BRDT_TIU.cjs';
2
- import { T as TxtEnDecoder } from './get-params-result-Bhy5997x.cjs';
1
+ import { T as Time, a as TimeMode, R as RandomMode, I as IDMode, F as FileService, b as SystemService, V as VoidFunc, S as SysAbstraction } from './sys-abstraction-B-0XMe9V.cjs';
2
+ import { T as TxtEnDecoder } from './get-params-result-CXYbMEcV.cjs';
3
3
 
4
4
  declare class SysTime extends Time {
5
5
  Now(): Date;
package/cf/index.cjs CHANGED
@@ -27,6 +27,7 @@ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "
27
27
  // src/cf/index.ts
28
28
  var cf_exports = {};
29
29
  __export(cf_exports, {
30
+ CFEnvActions: () => CFEnvActions,
30
31
  CFSysAbstraction: () => CFSysAbstraction,
31
32
  CFSystemService: () => CFSystemService
32
33
  });
@@ -160,14 +161,14 @@ var BaseSysAbstraction = class {
160
161
  this._fileSystem = params.FileSystem;
161
162
  this._systemService = params.SystemService;
162
163
  this._txtEnDe = params.TxtEnDecoder;
163
- const decoder2 = this._txtEnDe;
164
+ const decoder = this._txtEnDe;
164
165
  this._stdout = CFWriteableStream((chunk) => {
165
- const decoded = decoder2.decode(chunk);
166
+ const decoded = decoder.decode(chunk);
166
167
  console.log(decoded.trimEnd());
167
168
  return Promise.resolve();
168
169
  });
169
170
  this._stderr = CFWriteableStream((chunk) => {
170
- const decoded = decoder2.decode(chunk);
171
+ const decoded = decoder.decode(chunk);
171
172
  console.error(decoded.trimEnd());
172
173
  return Promise.resolve();
173
174
  });
@@ -851,19 +852,68 @@ var EnvImpl = class {
851
852
  }
852
853
  };
853
854
 
855
+ // src/utils/coerce-uint8.ts
856
+ var globalBuffer = globalThis;
857
+ function coerceIntoUint8(raw) {
858
+ if (raw instanceof ArrayBuffer) {
859
+ return Result.Ok(new Uint8Array(raw));
860
+ }
861
+ if (ArrayBuffer.isView(raw)) {
862
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
863
+ }
864
+ if (raw instanceof Blob) {
865
+ return Result.Err("Blob not supported");
866
+ }
867
+ if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
868
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
869
+ }
870
+ if (raw instanceof Uint8Array) {
871
+ return Result.Ok(raw);
872
+ }
873
+ if (Result.Is(raw)) {
874
+ if (raw.isErr()) {
875
+ return Result.Err(raw);
876
+ }
877
+ return coerceIntoUint8(raw.unwrap());
878
+ }
879
+ return Result.Err("Not a Uint8Array");
880
+ }
881
+
854
882
  // src/txt-en-decoder.ts
855
- var encoder = new TextEncoder();
856
- var decoder = new TextDecoder();
857
883
  var Utf8EnDecoder = class {
884
+ constructor() {
885
+ this.encoder = new TextEncoder();
886
+ this.decoder = new TextDecoder();
887
+ }
858
888
  encode(str) {
859
- return encoder.encode(str);
889
+ return this.encoder.encode(str);
860
890
  }
861
891
  decode(data) {
862
- return decoder.decode(data);
892
+ if (Result.Is(data)) {
893
+ if (data.isErr()) {
894
+ throw data.Err();
895
+ }
896
+ const unwrapped = data.unwrap();
897
+ if (typeof unwrapped === "string") {
898
+ return this.decode(unwrapped);
899
+ }
900
+ }
901
+ if (typeof data === "string") {
902
+ return data;
903
+ }
904
+ return this.decoder.decode(coerceIntoUint8(data).Ok());
905
+ }
906
+ async asyncDecode(data) {
907
+ let resolved = await data;
908
+ if (resolved instanceof Blob) {
909
+ resolved = await resolved.arrayBuffer();
910
+ }
911
+ return this.decode(resolved);
863
912
  }
864
913
  };
865
- var utf8EnDecoder = new Utf8EnDecoder();
914
+ var utf8EnDecoder;
866
915
  function Utf8EnDecoderSingleton() {
916
+ utf8EnDecoder = utf8EnDecoder != null ? utf8EnDecoder : new Utf8EnDecoder();
867
917
  return utf8EnDecoder;
868
918
  }
869
919
 
@@ -944,6 +994,7 @@ function CFSysAbstraction(param2) {
944
994
  }
945
995
  // Annotate the CommonJS export names for ESM import in node:
946
996
  0 && (module.exports = {
997
+ CFEnvActions,
947
998
  CFSysAbstraction,
948
999
  CFSystemService
949
1000
  });
package/cf/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cf/index.ts","../../../src/time.ts","../../../src/base-sys-abstraction.ts","../../../src/future.ts","../../../src/resolve-once.ts","../../../src/runtime.ts","../../../src/deno/deno-env-actions.ts","../../../src/node/node-env-actions.ts","../../../src/web/web-env-actions.ts","../../../src/cf/cf-env-actions.ts","../../../src/result.ts","../../../src/utils/get-params-result.ts","../../../src/sys-env.ts","../../../src/txt-en-decoder.ts","../../../src/web/web-sys-abstraction.ts","../../../src/cf/cf-sys-abstraction.ts"],"sourcesContent":["export * from \"./cf-sys-abstraction.js\";\n","export abstract class Time {\n abstract Now(add?: number): Date;\n abstract Sleep(duration: Duration): Promise<void>;\n TimeSince(start: Date): Duration {\n const now = this.Now();\n return now.getTime() - start.getTime();\n }\n}\n\nexport type Duration = number;\n\nexport enum TimeUnits {\n Microsecond = 1,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Second = 1000 * Microsecond,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Minute = 60 * Second,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Hour = 60 * Minute,\n}\n","import { FileService } from \"./file-service.js\";\nimport { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, SysAbstraction } from \"./sys-abstraction.js\";\nimport { Time } from \"./time.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\n\nexport class SysTime extends Time {\n Now(): Date {\n return new Date();\n }\n Sleep(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, duration);\n });\n }\n}\n\nexport class ConstTime extends Time {\n Now(): Date {\n return new Date(2021, 1, 1, 0, 0, 0, 0);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Sleep(duration: number): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport class StepTime extends Time {\n _step: Date;\n readonly _start: Date;\n constructor() {\n super();\n this._step = new ConstTime().Now();\n this._start = this._step;\n }\n Now(steps = 1): Date {\n // if (this._step.getTime() === 0) {\n // this._step = new ConstTime().Now();\n // return this._step;\n // }\n for (let i = 0; steps > 0 && i < steps; i++) {\n this._step = new Date(this._step.getTime() + 1000);\n }\n if (steps < 1) {\n this._step = new Date(this._start.getTime() + steps * -1000);\n }\n // this._step = new Date(this._step.getTime() + 1000);\n return this._step;\n }\n Sleep(duration: number): Promise<void> {\n this._step = new Date(this._step.getTime() + duration);\n return Promise.resolve();\n }\n}\n\nexport function TimeFactory(timeMode: TimeMode): Time {\n switch (timeMode) {\n case TimeMode.REAL:\n return new SysTime();\n case TimeMode.CONST:\n return new ConstTime();\n case TimeMode.STEP:\n return new StepTime();\n }\n return new SysTime();\n}\n\nexport class RandomService {\n readonly _mode: RandomMode;\n _step = 0;\n constructor(mode: RandomMode) {\n this._mode = mode;\n }\n Random0ToValue(value: number): number {\n switch (this._mode) {\n case RandomMode.CONST:\n return 0.5 * value;\n case RandomMode.STEP:\n this._step += 0.0001;\n return this._step * value;\n case RandomMode.RANDOM:\n return Math.random() * value;\n default:\n throw new Error(\"Unknown RandomMode\");\n }\n }\n}\n\nexport class IdService {\n readonly _mode: IDMode;\n _step = 0;\n constructor(mode?: IDMode) {\n if (!mode) {\n mode = IDMode.UUID;\n }\n this._mode = mode;\n }\n NextId(): string {\n switch (this._mode) {\n case IDMode.UUID:\n return crypto.randomUUID();\n case IDMode.CONST:\n return \"VeryUniqueID\";\n case IDMode.STEP:\n return `STEPId-${this._step++}`;\n default:\n throw new Error(\"Unknown IDMode\");\n }\n }\n}\n\nexport interface BaseSysAbstractionParams {\n readonly TxtEnDecoder: TxtEnDecoder;\n readonly FileSystem: FileService;\n readonly SystemService: SystemService;\n}\n\nexport interface ExitHandler {\n readonly hdl: VoidFunc;\n readonly id: string;\n}\n\nexport interface ExitService {\n injectExitHandlers(hdls: ExitHandler[]): void;\n exit(code: number): void;\n}\n\n// some black magic to make it work with CF workers\nfunction consumeReadableStream(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n writeFn: (chunk: Uint8Array) => Promise<void>,\n): void {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n writeFn(value)\n .then(() => {\n consumeReadableStream(reader, writeFn);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:writeFn\", e);\n });\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:read\", e);\n });\n}\n\nfunction CFWriteableStream(writeFn: (chunk: Uint8Array) => Promise<void>): WritableStream<Uint8Array> {\n const ts = new TransformStream<Uint8Array, Uint8Array>();\n consumeReadableStream(ts.readable.getReader(), writeFn);\n return ts.writable;\n}\n\nexport class BaseSysAbstraction {\n readonly _time: SysTime = new SysTime();\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n\n readonly _idService: IdService = new IdService();\n readonly _randomService: RandomService = new RandomService(RandomMode.RANDOM);\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n readonly _txtEnDe: TxtEnDecoder;\n\n constructor(params: BaseSysAbstractionParams) {\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n this._txtEnDe = params.TxtEnDecoder;\n const decoder = this._txtEnDe;\n this._stdout = CFWriteableStream((chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n return Promise.resolve();\n });\n this._stderr = CFWriteableStream((chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n return Promise.resolve();\n });\n /* this is not CF worker compatible\n this._stdout = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n resolve();\n });\n },\n });\n this._stderr = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n resolve();\n });\n },\n });\n */\n }\n}\n\nexport interface WrapperSysAbstractionParams {\n readonly TimeMode?: TimeMode;\n readonly IdMode?: IDMode;\n readonly Stdout?: WritableStream<Uint8Array>;\n readonly Stderr?: WritableStream<Uint8Array>;\n readonly RandomMode?: RandomMode;\n readonly FileSystem?: FileService;\n readonly SystemService?: SystemService;\n readonly TxtEnDecoder?: TxtEnDecoder;\n}\n\nexport class WrapperSysAbstraction implements SysAbstraction {\n readonly _time: Time;\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n constructor(base: BaseSysAbstraction, params?: WrapperSysAbstractionParams) {\n this._time = base._time;\n this._stdout = base._stdout;\n this._stderr = base._stderr;\n this._idService = base._idService;\n this._randomService = base._randomService;\n this._fileSystem = base._fileSystem;\n this._systemService = base._systemService;\n if (params) {\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\n }\n if (params.Stdout) {\n this._stdout = params.Stdout;\n }\n if (params.Stderr) {\n this._stderr = params.Stderr;\n }\n if (params.IdMode) {\n this._idService = new IdService(params.IdMode);\n }\n if (params.RandomMode) {\n this._randomService = new RandomService(params.RandomMode);\n }\n if (params.FileSystem) {\n this._fileSystem = params.FileSystem;\n }\n if (params.SystemService) {\n this._systemService = params.SystemService;\n }\n }\n }\n Time(): Time {\n return this._time;\n }\n NextId(): string {\n return this._idService.NextId();\n }\n Random0ToValue(value: number): number {\n return this._randomService.Random0ToValue(value);\n }\n Stdout(): WritableStream {\n return this._stdout;\n }\n Stderr(): WritableStream {\n return this._stderr;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n// export const BaseSysAbstraction = new BaseSysAbstractionImpl()\n","export class Future<T> {\n readonly #promise: Promise<T>;\n #resolveFn: (value: T) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n #rejectFn: (reason: unknown) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolveFn = resolve;\n this.#rejectFn = reject;\n });\n }\n\n async asPromise(): Promise<T> {\n return this.#promise;\n }\n\n resolve(value: T): void {\n this.#resolveFn(value);\n }\n reject(reason: unknown): void {\n this.#rejectFn(reason);\n }\n}\n","import { Future } from \"./future.js\";\n\ninterface ResolveSeqItem<T, C> {\n readonly future: Future<T>;\n readonly fn: (c: C) => Promise<T>;\n readonly id?: number;\n}\n\nexport class ResolveSeq<T, C = void> {\n readonly ctx: C;\n constructor(ctx?: C) {\n this.ctx = ctx as C;\n }\n reset(): void {\n /* noop */\n }\n _step(item?: ResolveSeqItem<T, C>): Promise<void> {\n if (!item) {\n // done\n return Promise.resolve();\n }\n item\n .fn(this.ctx)\n .then((value) => item.future.resolve(value))\n .catch((e) => item.future.reject(e as Error))\n .finally(() => {\n this._seqFutures.shift();\n void this._step(this._seqFutures[0]);\n });\n return Promise.resolve();\n }\n readonly _seqFutures: ResolveSeqItem<T, C>[] = [];\n async add(fn: (c: C) => Promise<T>, id?: number): Promise<T> {\n const future = new Future<T>();\n this._seqFutures.push({ future, fn, id });\n if (this._seqFutures.length === 1) {\n void this._step(this._seqFutures[0]);\n }\n return future.asPromise();\n }\n}\n\nexport class ResolveOnce<T, CTX = void> {\n _onceDone = false;\n readonly _onceFutures: Future<T>[] = [];\n _onceOk = false;\n _onceValue?: T;\n _onceError?: Error;\n _isPromise = false;\n\n readonly ctx: CTX;\n\n constructor(ctx?: CTX) {\n this.ctx = ctx as CTX;\n }\n\n get ready(): boolean {\n return this._onceDone;\n }\n\n reset(): void {\n this._onceDone = false;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceError = undefined;\n this._onceFutures.length = 0;\n }\n\n // T extends Option<infer U> ? U : T\n once<R>(fn: (c: CTX) => R): R {\n if (this._onceDone) {\n if (this._onceError) {\n if (this._isPromise) {\n return Promise.reject(this._onceError) as unknown as R;\n } else {\n throw this._onceError;\n }\n }\n if (this._onceOk) {\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Promise.resolve(this._onceValue!) as unknown as R;\n } else {\n return this._onceValue as unknown as R;\n }\n }\n throw new Error(\"ResolveOnce.once impossible\");\n }\n const future = new Future<T>();\n this._onceFutures.push(future);\n if (this._onceFutures.length === 1) {\n const okFn = (value: T): void => {\n this._onceValue = value;\n this._onceOk = true;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.resolve(this._onceValue!));\n }\n this._onceFutures.length = 0;\n };\n const catchFn = (e: Error): void => {\n this._onceError = e;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.reject(this._onceError!));\n }\n this._onceFutures.length = 0;\n };\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n (ret as Promise<T>).then(okFn).catch(catchFn);\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n }\n if (this._isPromise) {\n return future.asPromise() as unknown as R;\n } else {\n // abit funky but i don't want to impl the return just once\n return this.once(fn);\n }\n }\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n private readonly _map = new Map<K, T>();\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T) {\n this.factory = factory;\n }\n\n async asyncGet(key: () => Promise<K>): Promise<T> {\n return this.get(await key());\n }\n\n get(key: K | (() => K)): T {\n if (typeof key === \"function\") {\n key = (key as () => K)();\n }\n let keyed = this._map.get(key);\n if (!keyed) {\n keyed = this.factory(key);\n this._map.set(key, keyed);\n }\n return keyed;\n }\n\n unget(key: K): void {\n const keyed = this._map.get(key);\n keyed?.reset();\n this._map.delete(key);\n }\n\n reset(): void {\n this._map.forEach((keyed) => keyed.reset());\n this._map.clear();\n }\n}\n\nexport class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {\n constructor() {\n super((key) => new ResolveOnce<T, K>(key));\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor() {\n super((key) => new ResolveSeq<T, K>(key));\n }\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n isCFWorker: boolean;\n}\n\nfunction isSet(value: string, ref: Record<string, unknown> = globalThis): boolean {\n const [head, ...tail] = value.split(\".\");\n if ([\"object\", \"function\"].includes(typeof ref) && ref && [\"object\", \"function\"].includes(typeof ref[head]) && ref[head]) {\n if (tail.length <= 1) {\n return true;\n }\n return isSet(tail.join(\".\"), ref[head] as Record<string, unknown>);\n }\n return false;\n}\n\n// caches.default or WebSocketPair\n\nexport function runtimeFn(): Runtime {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const gt: any = globalThis;\n let isReactNative =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isSet(\"navigator.product\") && typeof gt[\"navigator\"] === \"object\" && gt[\"navigator\"][\"product\"] === \"ReactNative\";\n let isNodeIsh = false;\n if (!isSet(\"Deno\")) {\n isNodeIsh = isSet(\"process.versions.node\") && !isReactNative;\n }\n let isDeno = isSet(\"Deno\");\n const isCFWorker = isSet(\"caches.default\") && isSet(\"WebSocketPair\");\n if (isCFWorker) {\n isDeno = false;\n isNodeIsh = false;\n isReactNative = false;\n }\n return {\n isNodeIsh,\n isBrowser: !(isNodeIsh || isDeno || isCFWorker || isReactNative),\n isDeno,\n isReactNative,\n isCFWorker,\n };\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\n\ninterface DenoEnv {\n get: (key: string) => string | undefined;\n toObject: () => Record<string, string>;\n set: (key: string, value: string) => void;\n has: (key: string) => boolean;\n delete: (key: string) => void;\n}\n\nconst once = new ResolveOnce<DenoEnvActions>();\nexport class DenoEnvActions implements EnvActions {\n readonly #deno = globalThis as unknown as {\n Deno: {\n env: DenoEnv;\n };\n };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new DenoEnvActions(opts));\n }\n\n get _env(): DenoEnv {\n return this.#deno.Deno.env;\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env.set(key, env.get(key) || \"\");\n }\n return env;\n }\n active(): boolean {\n return runtimeFn().isDeno;\n }\n keys(): string[] {\n return Object.keys(this._env.toObject());\n }\n get(key: string): string | undefined {\n return this._env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env.set(key, value);\n }\n }\n delete(key: string): void {\n this._env.delete(key);\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<NodeEnvActions>();\nexport class NodeEnvActions implements EnvActions {\n readonly #node = globalThis as unknown as { process: { env: Record<string, string> } };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new NodeEnvActions(opts));\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env[key] = env.get(key) || \"\";\n }\n return env;\n }\n\n active(): boolean {\n return runtimeFn().isNodeIsh;\n // typeof this.#node === \"object\" && typeof this.#node.process === \"object\" && typeof this.#node.process.env === \"object\";\n }\n readonly _env: Record<string, string> = this.active() ? this.#node.process.env : {};\n keys(): string[] {\n return Object.keys(this._env);\n }\n get(key: string): string | undefined {\n return this._env[key];\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env[key] = value;\n }\n }\n delete(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._env[key];\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { EnvActions, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<BrowserEnvActions>();\nexport class BrowserEnvActions implements EnvActions {\n readonly env: Map<string, string> = new Map<string, string>();\n readonly opts: Partial<EnvFactoryOpts>;\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new BrowserEnvActions(opts));\n }\n\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n get(key: string): string | undefined {\n return this.env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.env.set(key, value);\n }\n }\n delete(key: string): void {\n this.env.delete(key);\n }\n keys(): string[] {\n return Array.from(this.env.keys());\n }\n active(): boolean {\n return true; // that should work on every runtime\n }\n\n register(env: Env): Env {\n const sym = Symbol.for(this.opts.symbol || \"CP_ENV\");\n const browser = globalThis as unknown as Record<symbol, Env>;\n browser[sym] = env;\n return env;\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { EnvActions, EnvImpl, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<CFEnvActions>();\nexport class CFEnvActions implements EnvActions {\n readonly injectOnRegister: Record<string, string> = {};\n readonly cfEnv: Map<string, string>;\n env?: EnvImpl;\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new CFEnvActions(opts));\n }\n static inject(o: Record<string, string>): void {\n const env = CFEnvActions.new({}) as CFEnvActions;\n for (const key in o) {\n const value = o[key];\n if (typeof value === \"string\") {\n if (env.env) {\n env.env.set(key, value);\n } else {\n env.injectOnRegister[key] = value;\n }\n }\n }\n }\n private constructor(env: Partial<EnvFactoryOpts>) {\n this.cfEnv = new Map<string, string>(Object.entries(env.presetEnv || {}));\n }\n active(): boolean {\n return runtimeFn().isCFWorker;\n }\n register(env: Env): Env {\n this.env = env as EnvImpl;\n for (const key in this.injectOnRegister) {\n env.set(key, this.injectOnRegister[key]);\n }\n return env;\n }\n get(key: string): string | undefined {\n return this.cfEnv.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.cfEnv.set(key, value);\n }\n }\n delete(key: string): void {\n this.cfEnv.delete(key);\n }\n keys(): string[] {\n return Array.from(this.cfEnv.keys());\n }\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T = void>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T, E extends Error = Error>(t: E | string | Result<unknown, E>): Result<T, E> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as E);\n }\n if (Result.Is(t)) {\n if (t.is_ok()) {\n return new ResultError(new Error(\"Result Error is Ok\") as E);\n }\n return t as Result<T, E>;\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n// type WithoutPromise<T> = T extends Promise<infer U> ? U : T;\ntype WithResult<T> = T extends Promise<infer U> ? Promise<Result<U>> : Result<T>;\n\nexport function exception2Result<FN extends () => Promise<T> | T, T>(fn: FN): WithResult<ReturnType<FN>> {\n try {\n const res = fn();\n if (res instanceof Promise) {\n return res.then((value) => Result.Ok(value)).catch((e) => Result.Err(e)) as WithResult<ReturnType<FN>>;\n }\n return Result.Ok(res) as WithResult<ReturnType<FN>>;\n } catch (e) {\n return Result.Err(e as Error) as WithResult<ReturnType<FN>>;\n }\n}\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","import { Result } from \"../result.js\";\n\nclass _REQUIRED {\n readonly val = \"REQUIRED\";\n}\nclass _OPTIONAL {\n readonly val = \"OPTIONAL\";\n}\n\nexport interface Param {\n readonly REQUIRED: _REQUIRED;\n readonly OPTIONAL: _OPTIONAL;\n}\n\nexport const param: Param = {\n REQUIRED: new _REQUIRED(),\n OPTIONAL: new _OPTIONAL(),\n};\n\nexport type MsgFn = (...keys: string[]) => string;\nexport type KeysParam = (string | MsgFn | Record<string, _REQUIRED | _OPTIONAL | number | string | boolean | undefined | null>)[];\n\nexport function getParamsResult(\n keys: KeysParam,\n getParam: { getParam: (key: string) => string | undefined },\n): Result<Record<string, string>> {\n const keyDef = keys.flat().reduce(\n (acc, i) => {\n if (typeof i === \"string\") {\n acc.push({ key: i, def: undefined, isOptional: false });\n } else if (typeof i === \"object\") {\n acc.push(\n ...Object.keys(i).map((k) => ({\n key: k,\n def: typeof i[k] === \"string\" ? i[k] : undefined,\n isOptional: i[k] === param.OPTIONAL,\n })),\n );\n }\n return acc;\n },\n [] as { key: string; def?: string; isOptional: boolean }[],\n );\n //.filter((k) => typeof k === \"string\");\n const msgFn =\n keys.find((k) => typeof k === \"function\") ||\n ((...keys: string[]): string => {\n const msg = keys.join(\",\");\n return `missing parameters: ${msg}`;\n });\n const errors: string[] = [];\n const result: Record<string, string> = {};\n for (const kd of keyDef) {\n const val = getParam.getParam(kd.key);\n if (val === undefined) {\n if (typeof kd.def === \"string\") {\n result[kd.key] = kd.def;\n } else {\n if (!kd.isOptional) {\n errors.push(kd.key);\n }\n }\n } else {\n result[kd.key] = val;\n }\n }\n if (errors.length) {\n return Result.Err(msgFn(...errors));\n }\n return Result.Ok(result);\n}\n","import { DenoEnvActions } from \"./deno/deno-env-actions.js\";\nimport { NodeEnvActions } from \"./node/node-env-actions.js\";\nimport { BrowserEnvActions } from \"./web/web-env-actions.js\";\nimport { CFEnvActions } from \"./cf/cf-env-actions.js\";\nimport { KeyedResolvOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\n\nexport type EnvTuple = ([string, string] | [string, string][] | Record<string, string> | Iterator<[string, string]>)[];\n\nexport interface EnvMap {\n get(key: string): string | undefined;\n set(key: string, value?: string): void;\n delete(key: string): void;\n keys(): string[];\n}\nexport interface EnvActions extends EnvMap {\n active(): boolean;\n register(env: Env): Env;\n}\n\nexport interface EnvFactoryOpts {\n readonly symbol: string; // default \"CP_ENV\" used by BrowserEnvActions\n readonly presetEnv: Map<string, string>;\n}\n\ntype OnSetFn = (key: string, value?: string) => void;\nexport interface OnSetItem {\n readonly filter: Set<string>;\n readonly fn: OnSetFn;\n}\n\nexport interface Env extends EnvMap {\n onSet(fn: OnSetFn, ...filter: string[]): void;\n\n gets(...kparams: KeysParam): Result<Record<string, string>>;\n sets(...keys: EnvTuple): void;\n}\n\nexport type EnvFactoryFn = (opts: Partial<EnvFactoryOpts>) => EnvActions;\n\nconst envActions: { id: string; fn: EnvFactoryFn }[] = [\n { id: \"cf\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => CFEnvActions.new(opts) },\n { id: \"node\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => NodeEnvActions.new(opts) },\n { id: \"deno\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => DenoEnvActions.new(opts) },\n { id: \"browser\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => BrowserEnvActions.new(opts) },\n];\n\nexport function registerEnvAction(fn: EnvFactoryFn): () => void {\n const id = `id-${Math.random()}`;\n envActions.unshift({ id, fn });\n // rerun envFactory\n _envFactories.unget(id);\n return () => {\n const index = envActions.findIndex((i) => i.id === id);\n if (index >= 0) {\n envActions.splice(index, 1);\n }\n };\n}\n\nconst _envFactories = new KeyedResolvOnce<Env>();\nexport function envFactory(opts: Partial<EnvFactoryOpts> = {}): Env {\n const found = envActions.find((fi) => fi.fn(opts).active());\n if (!found) {\n throw new Error(\"SysContainer:envFactory: no env available\");\n }\n return _envFactories.get(found.id).once(() => {\n const action = found.fn(opts);\n const ret = new EnvImpl(action, opts);\n action.register(ret);\n return ret;\n });\n}\n\nfunction isIterable(obj: unknown): obj is Iterable<[string, string]> {\n // checks for null and undefined\n if (obj == null) {\n return false;\n }\n return typeof (obj as Record<symbol, unknown>)[Symbol.iterator] === \"function\";\n}\n\nexport class EnvImpl implements Env {\n readonly _map: EnvMap;\n constructor(map: EnvMap, opts: Partial<EnvFactoryOpts> = {}) {\n this._map = map;\n this._updatePresets(opts.presetEnv);\n }\n gets(...kparams: KeysParam): Result<Record<string, string>> {\n return getParamsResult(kparams, {\n getParam: (k) => this.get(k),\n });\n }\n sets(...keys: EnvTuple): void {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n if (key.length === 2) {\n const [k, v] = key;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n return;\n }\n }\n for (const item of key) {\n if (Array.isArray(item)) {\n // [string, string]\n if (item.length === 2) {\n const [k, v] = item;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n } else {\n if (isIterable(key)) {\n for (const [k, v] of key) {\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n } else {\n const rKey = key as Record<string, string>;\n for (const k in rKey) {\n const v = rKey[k];\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n });\n }\n _updatePresets(presetEnv?: Map<string, string>): void {\n if (!presetEnv) {\n return;\n }\n for (const [key, value] of presetEnv) {\n this._map.set(key, value);\n }\n }\n _applyOnSet(onSet: OnSetItem[], key?: string, value?: string): void {\n onSet.forEach((item) => {\n let keys: string[] = [];\n if (key) {\n keys = [key];\n } else {\n keys = this._map.keys();\n }\n keys\n .filter((k) => {\n if (item.filter.size === 0) {\n return true;\n }\n if (item.filter.has(k)) {\n return true;\n }\n return false;\n })\n .forEach((k) => {\n let v;\n if (!key && !value) {\n // init\n v = this._map.get(k);\n } else if (key && !value) {\n // del\n v = undefined;\n } else {\n // set\n v = value;\n }\n item.fn(k, v);\n });\n });\n }\n readonly _onSet: OnSetItem[] = [];\n keys(): string[] {\n return this._map.keys();\n }\n // filter is not set all sets passed\n onSet(fn: OnSetFn, ...filter: string[]): void {\n const item: OnSetItem = { filter: new Set(filter), fn };\n this._onSet.push(item);\n this._applyOnSet([item]);\n }\n get(key: string): string | undefined {\n return this._map.get(key);\n }\n set(key: string, value?: string): void {\n if (!value) {\n return;\n }\n this._map.set(key, value);\n this._applyOnSet(this._onSet, key, value);\n }\n delete(key: string): void {\n this._map.delete(key);\n this._applyOnSet(this._onSet, key);\n }\n}\n\n// export const envImpl = new EnvImpl();\n","export interface TxtEnDecoder {\n encode(str: string): Uint8Array;\n decode(data: Uint8Array): string;\n}\n\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\n\nexport class Utf8EnDecoder implements TxtEnDecoder {\n encode(str: string): Uint8Array {\n return encoder.encode(str);\n }\n decode(data: Uint8Array): string {\n return decoder.decode(data);\n }\n}\n\nconst utf8EnDecoder = new Utf8EnDecoder();\nexport function Utf8EnDecoderSingleton(): TxtEnDecoder {\n return utf8EnDecoder;\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class WebFileService implements FileService {\n get baseDir(): string {\n throw new Error(\"basedir-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n create(fname: string): Promise<NamedWritableStream> {\n throw new Error(\"create-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileString(fname: string): Promise<string> {\n throw new Error(\"readFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileString(fname: string, content: string): Promise<void> {\n throw new Error(\"writeFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abs(fname: string): string {\n throw new Error(\"abs-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n join(...paths: string[]): string {\n throw new Error(\"join-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n relative(from: string, to?: string): string {\n throw new Error(\"relative-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname(fname: string): string {\n throw new Error(\"dirname-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n basename(fname: string): string {\n throw new Error(\"basename-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n nodeImport(fname: string): string {\n throw new Error(\"nodeImport-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isAbsolute(fname: string): boolean {\n throw new Error(\"isAbsolute-Method not implemented.\");\n }\n}\n\nclass WebSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function WebSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new WebSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { WebFileService } from \"../web/web-sys-abstraction.js\";\n\nexport class CFSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new CFSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":"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","names":["decoder","once","once","once","keys","param"]}
1
+ {"version":3,"sources":["../../../src/cf/index.ts","../../../src/time.ts","../../../src/base-sys-abstraction.ts","../../../src/future.ts","../../../src/resolve-once.ts","../../../src/runtime.ts","../../../src/deno/deno-env-actions.ts","../../../src/node/node-env-actions.ts","../../../src/web/web-env-actions.ts","../../../src/cf/cf-env-actions.ts","../../../src/result.ts","../../../src/utils/get-params-result.ts","../../../src/sys-env.ts","../../../src/utils/coerce-uint8.ts","../../../src/txt-en-decoder.ts","../../../src/web/web-sys-abstraction.ts","../../../src/cf/cf-sys-abstraction.ts"],"sourcesContent":["export * from \"./cf-sys-abstraction.js\";\nexport * from \"./cf-env-actions.js\";\n","export abstract class Time {\n abstract Now(add?: number): Date;\n abstract Sleep(duration: Duration): Promise<void>;\n TimeSince(start: Date): Duration {\n const now = this.Now();\n return now.getTime() - start.getTime();\n }\n}\n\nexport type Duration = number;\n\nexport enum TimeUnits {\n Microsecond = 1,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Second = 1000 * Microsecond,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Minute = 60 * Second,\n // eslint-disable-next-line @typescript-eslint/prefer-literal-enum-member\n Hour = 60 * Minute,\n}\n","import { FileService } from \"./file-service.js\";\nimport { TimeMode, RandomMode, IDMode, SystemService, VoidFunc, SysAbstraction } from \"./sys-abstraction.js\";\nimport { Time } from \"./time.js\";\nimport { TxtEnDecoder } from \"./txt-en-decoder.js\";\n\nexport class SysTime extends Time {\n Now(): Date {\n return new Date();\n }\n Sleep(duration: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, duration);\n });\n }\n}\n\nexport class ConstTime extends Time {\n Now(): Date {\n return new Date(2021, 1, 1, 0, 0, 0, 0);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Sleep(duration: number): Promise<void> {\n return Promise.resolve();\n }\n}\n\nexport class StepTime extends Time {\n _step: Date;\n readonly _start: Date;\n constructor() {\n super();\n this._step = new ConstTime().Now();\n this._start = this._step;\n }\n Now(steps = 1): Date {\n // if (this._step.getTime() === 0) {\n // this._step = new ConstTime().Now();\n // return this._step;\n // }\n for (let i = 0; steps > 0 && i < steps; i++) {\n this._step = new Date(this._step.getTime() + 1000);\n }\n if (steps < 1) {\n this._step = new Date(this._start.getTime() + steps * -1000);\n }\n // this._step = new Date(this._step.getTime() + 1000);\n return this._step;\n }\n Sleep(duration: number): Promise<void> {\n this._step = new Date(this._step.getTime() + duration);\n return Promise.resolve();\n }\n}\n\nexport function TimeFactory(timeMode: TimeMode): Time {\n switch (timeMode) {\n case TimeMode.REAL:\n return new SysTime();\n case TimeMode.CONST:\n return new ConstTime();\n case TimeMode.STEP:\n return new StepTime();\n }\n return new SysTime();\n}\n\nexport class RandomService {\n readonly _mode: RandomMode;\n _step = 0;\n constructor(mode: RandomMode) {\n this._mode = mode;\n }\n Random0ToValue(value: number): number {\n switch (this._mode) {\n case RandomMode.CONST:\n return 0.5 * value;\n case RandomMode.STEP:\n this._step += 0.0001;\n return this._step * value;\n case RandomMode.RANDOM:\n return Math.random() * value;\n default:\n throw new Error(\"Unknown RandomMode\");\n }\n }\n}\n\nexport class IdService {\n readonly _mode: IDMode;\n _step = 0;\n constructor(mode?: IDMode) {\n if (!mode) {\n mode = IDMode.UUID;\n }\n this._mode = mode;\n }\n NextId(): string {\n switch (this._mode) {\n case IDMode.UUID:\n return crypto.randomUUID();\n case IDMode.CONST:\n return \"VeryUniqueID\";\n case IDMode.STEP:\n return `STEPId-${this._step++}`;\n default:\n throw new Error(\"Unknown IDMode\");\n }\n }\n}\n\nexport interface BaseSysAbstractionParams {\n readonly TxtEnDecoder: TxtEnDecoder;\n readonly FileSystem: FileService;\n readonly SystemService: SystemService;\n}\n\nexport interface ExitHandler {\n readonly hdl: VoidFunc;\n readonly id: string;\n}\n\nexport interface ExitService {\n injectExitHandlers(hdls: ExitHandler[]): void;\n exit(code: number): void;\n}\n\n// some black magic to make it work with CF workers\nfunction consumeReadableStream(\n reader: ReadableStreamDefaultReader<Uint8Array>,\n writeFn: (chunk: Uint8Array) => Promise<void>,\n): void {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n writeFn(value)\n .then(() => {\n consumeReadableStream(reader, writeFn);\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:writeFn\", e);\n });\n })\n .catch((e) => {\n // eslint-disable-next-line no-console\n console.error(\"consumeReadableStream:read\", e);\n });\n}\n\nfunction CFWriteableStream(writeFn: (chunk: Uint8Array) => Promise<void>): WritableStream<Uint8Array> {\n const ts = new TransformStream<Uint8Array, Uint8Array>();\n consumeReadableStream(ts.readable.getReader(), writeFn);\n return ts.writable;\n}\n\nexport class BaseSysAbstraction {\n readonly _time: SysTime = new SysTime();\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n\n readonly _idService: IdService = new IdService();\n readonly _randomService: RandomService = new RandomService(RandomMode.RANDOM);\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n readonly _txtEnDe: TxtEnDecoder;\n\n constructor(params: BaseSysAbstractionParams) {\n this._fileSystem = params.FileSystem;\n this._systemService = params.SystemService;\n this._txtEnDe = params.TxtEnDecoder;\n const decoder = this._txtEnDe;\n this._stdout = CFWriteableStream((chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n return Promise.resolve();\n });\n this._stderr = CFWriteableStream((chunk) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n return Promise.resolve();\n });\n /* this is not CF worker compatible\n this._stdout = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.log(decoded.trimEnd());\n resolve();\n });\n },\n });\n this._stderr = new WritableStream({\n write(chunk): Promise<void> {\n return new Promise((resolve) => {\n const decoded = decoder.decode(chunk);\n // eslint-disable-next-line no-console\n console.error(decoded.trimEnd());\n resolve();\n });\n },\n });\n */\n }\n}\n\nexport interface WrapperSysAbstractionParams {\n readonly TimeMode?: TimeMode;\n readonly IdMode?: IDMode;\n readonly Stdout?: WritableStream<Uint8Array>;\n readonly Stderr?: WritableStream<Uint8Array>;\n readonly RandomMode?: RandomMode;\n readonly FileSystem?: FileService;\n readonly SystemService?: SystemService;\n readonly TxtEnDecoder?: TxtEnDecoder;\n}\n\nexport class WrapperSysAbstraction implements SysAbstraction {\n readonly _time: Time;\n readonly _stdout: WritableStream<Uint8Array>;\n readonly _stderr: WritableStream<Uint8Array>;\n readonly _idService: IdService;\n readonly _randomService: RandomService;\n readonly _fileSystem: FileService;\n readonly _systemService: SystemService;\n constructor(base: BaseSysAbstraction, params?: WrapperSysAbstractionParams) {\n this._time = base._time;\n this._stdout = base._stdout;\n this._stderr = base._stderr;\n this._idService = base._idService;\n this._randomService = base._randomService;\n this._fileSystem = base._fileSystem;\n this._systemService = base._systemService;\n if (params) {\n if (params.TimeMode) {\n this._time = TimeFactory(params.TimeMode);\n }\n if (params.Stdout) {\n this._stdout = params.Stdout;\n }\n if (params.Stderr) {\n this._stderr = params.Stderr;\n }\n if (params.IdMode) {\n this._idService = new IdService(params.IdMode);\n }\n if (params.RandomMode) {\n this._randomService = new RandomService(params.RandomMode);\n }\n if (params.FileSystem) {\n this._fileSystem = params.FileSystem;\n }\n if (params.SystemService) {\n this._systemService = params.SystemService;\n }\n }\n }\n Time(): Time {\n return this._time;\n }\n NextId(): string {\n return this._idService.NextId();\n }\n Random0ToValue(value: number): number {\n return this._randomService.Random0ToValue(value);\n }\n Stdout(): WritableStream {\n return this._stdout;\n }\n Stderr(): WritableStream {\n return this._stderr;\n }\n\n System(): SystemService {\n return this._systemService;\n }\n FileSystem(): FileService {\n return this._fileSystem;\n }\n}\n// export const BaseSysAbstraction = new BaseSysAbstractionImpl()\n","export class Future<T> {\n readonly #promise: Promise<T>;\n #resolveFn: (value: T) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n #rejectFn: (reason: unknown) => void = () => {\n throw new Error(\"This Promise is not working as expected.\");\n };\n\n constructor() {\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolveFn = resolve;\n this.#rejectFn = reject;\n });\n }\n\n async asPromise(): Promise<T> {\n return this.#promise;\n }\n\n resolve(value: T): void {\n this.#resolveFn(value);\n }\n reject(reason: unknown): void {\n this.#rejectFn(reason);\n }\n}\n","import { Future } from \"./future.js\";\n\ninterface ResolveSeqItem<T, C> {\n readonly future: Future<T>;\n readonly fn: (c: C) => Promise<T>;\n readonly id?: number;\n}\n\nexport class ResolveSeq<T, C = void> {\n readonly ctx: C;\n constructor(ctx?: C) {\n this.ctx = ctx as C;\n }\n reset(): void {\n /* noop */\n }\n _step(item?: ResolveSeqItem<T, C>): Promise<void> {\n if (!item) {\n // done\n return Promise.resolve();\n }\n item\n .fn(this.ctx)\n .then((value) => item.future.resolve(value))\n .catch((e) => item.future.reject(e as Error))\n .finally(() => {\n this._seqFutures.shift();\n void this._step(this._seqFutures[0]);\n });\n return Promise.resolve();\n }\n readonly _seqFutures: ResolveSeqItem<T, C>[] = [];\n async add(fn: (c: C) => Promise<T>, id?: number): Promise<T> {\n const future = new Future<T>();\n this._seqFutures.push({ future, fn, id });\n if (this._seqFutures.length === 1) {\n void this._step(this._seqFutures[0]);\n }\n return future.asPromise();\n }\n}\n\nexport class ResolveOnce<T, CTX = void> {\n _onceDone = false;\n readonly _onceFutures: Future<T>[] = [];\n _onceOk = false;\n _onceValue?: T;\n _onceError?: Error;\n _isPromise = false;\n\n readonly ctx: CTX;\n\n constructor(ctx?: CTX) {\n this.ctx = ctx as CTX;\n }\n\n get ready(): boolean {\n return this._onceDone;\n }\n\n reset(): void {\n this._onceDone = false;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceError = undefined;\n this._onceFutures.length = 0;\n }\n\n // T extends Option<infer U> ? U : T\n once<R>(fn: (c: CTX) => R): R {\n if (this._onceDone) {\n if (this._onceError) {\n if (this._isPromise) {\n return Promise.reject(this._onceError) as unknown as R;\n } else {\n throw this._onceError;\n }\n }\n if (this._onceOk) {\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return Promise.resolve(this._onceValue!) as unknown as R;\n } else {\n return this._onceValue as unknown as R;\n }\n }\n throw new Error(\"ResolveOnce.once impossible\");\n }\n const future = new Future<T>();\n this._onceFutures.push(future);\n if (this._onceFutures.length === 1) {\n const okFn = (value: T): void => {\n this._onceValue = value;\n this._onceOk = true;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.resolve(this._onceValue!));\n }\n this._onceFutures.length = 0;\n };\n const catchFn = (e: Error): void => {\n this._onceError = e;\n this._onceOk = false;\n this._onceValue = undefined;\n this._onceDone = true;\n if (this._isPromise) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this._onceFutures.forEach((f) => f.reject(this._onceError!));\n }\n this._onceFutures.length = 0;\n };\n try {\n const ret = fn(this.ctx);\n if (typeof (ret as Promise<T>).then === \"function\") {\n this._isPromise = true;\n (ret as Promise<T>).then(okFn).catch(catchFn);\n } else {\n okFn(ret as unknown as T);\n }\n } catch (e) {\n catchFn(e as Error);\n }\n }\n if (this._isPromise) {\n return future.asPromise() as unknown as R;\n } else {\n // abit funky but i don't want to impl the return just once\n return this.once(fn);\n }\n }\n}\n\nexport class Keyed<T extends { reset: () => void }, K = string> {\n private readonly _map = new Map<K, T>();\n\n readonly factory: (key: K) => T;\n constructor(factory: (key: K) => T) {\n this.factory = factory;\n }\n\n async asyncGet(key: () => Promise<K>): Promise<T> {\n return this.get(await key());\n }\n\n get(key: K | (() => K)): T {\n if (typeof key === \"function\") {\n key = (key as () => K)();\n }\n let keyed = this._map.get(key);\n if (!keyed) {\n keyed = this.factory(key);\n this._map.set(key, keyed);\n }\n return keyed;\n }\n\n unget(key: K): void {\n const keyed = this._map.get(key);\n keyed?.reset();\n this._map.delete(key);\n }\n\n reset(): void {\n this._map.forEach((keyed) => keyed.reset());\n this._map.clear();\n }\n}\n\nexport class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {\n constructor() {\n super((key) => new ResolveOnce<T, K>(key));\n }\n}\n\nexport class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {\n constructor() {\n super((key) => new ResolveSeq<T, K>(key));\n }\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n isCFWorker: boolean;\n}\n\nfunction isSet(value: string, ref: Record<string, unknown> = globalThis): boolean {\n const [head, ...tail] = value.split(\".\");\n if ([\"object\", \"function\"].includes(typeof ref) && ref && [\"object\", \"function\"].includes(typeof ref[head]) && ref[head]) {\n if (tail.length <= 1) {\n return true;\n }\n return isSet(tail.join(\".\"), ref[head] as Record<string, unknown>);\n }\n return false;\n}\n\n// caches.default or WebSocketPair\n\nexport function runtimeFn(): Runtime {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const gt: any = globalThis;\n let isReactNative =\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n isSet(\"navigator.product\") && typeof gt[\"navigator\"] === \"object\" && gt[\"navigator\"][\"product\"] === \"ReactNative\";\n let isNodeIsh = false;\n if (!isSet(\"Deno\")) {\n isNodeIsh = isSet(\"process.versions.node\") && !isReactNative;\n }\n let isDeno = isSet(\"Deno\");\n const isCFWorker = isSet(\"caches.default\") && isSet(\"WebSocketPair\");\n if (isCFWorker) {\n isDeno = false;\n isNodeIsh = false;\n isReactNative = false;\n }\n return {\n isNodeIsh,\n isBrowser: !(isNodeIsh || isDeno || isCFWorker || isReactNative),\n isDeno,\n isReactNative,\n isCFWorker,\n };\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\n\ninterface DenoEnv {\n get: (key: string) => string | undefined;\n toObject: () => Record<string, string>;\n set: (key: string, value: string) => void;\n has: (key: string) => boolean;\n delete: (key: string) => void;\n}\n\nconst once = new ResolveOnce<DenoEnvActions>();\nexport class DenoEnvActions implements EnvActions {\n readonly #deno = globalThis as unknown as {\n Deno: {\n env: DenoEnv;\n };\n };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new DenoEnvActions(opts));\n }\n\n get _env(): DenoEnv {\n return this.#deno.Deno.env;\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env.set(key, env.get(key) || \"\");\n }\n return env;\n }\n active(): boolean {\n return runtimeFn().isDeno;\n }\n keys(): string[] {\n return Object.keys(this._env.toObject());\n }\n get(key: string): string | undefined {\n return this._env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env.set(key, value);\n }\n }\n delete(key: string): void {\n this._env.delete(key);\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { Env, EnvActions, EnvFactoryOpts } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<NodeEnvActions>();\nexport class NodeEnvActions implements EnvActions {\n readonly #node = globalThis as unknown as { process: { env: Record<string, string> } };\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new NodeEnvActions(opts));\n }\n\n readonly opts: Partial<EnvFactoryOpts>;\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n register(env: Env): Env {\n for (const key of env.keys()) {\n this._env[key] = env.get(key) || \"\";\n }\n return env;\n }\n\n active(): boolean {\n return runtimeFn().isNodeIsh;\n // typeof this.#node === \"object\" && typeof this.#node.process === \"object\" && typeof this.#node.process.env === \"object\";\n }\n readonly _env: Record<string, string> = this.active() ? this.#node.process.env : {};\n keys(): string[] {\n return Object.keys(this._env);\n }\n get(key: string): string | undefined {\n return this._env[key];\n }\n set(key: string, value?: string): void {\n if (value) {\n this._env[key] = value;\n }\n }\n delete(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._env[key];\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { EnvActions, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<BrowserEnvActions>();\nexport class BrowserEnvActions implements EnvActions {\n readonly env: Map<string, string> = new Map<string, string>();\n readonly opts: Partial<EnvFactoryOpts>;\n\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new BrowserEnvActions(opts));\n }\n\n private constructor(opts: Partial<EnvFactoryOpts>) {\n this.opts = opts;\n }\n\n get(key: string): string | undefined {\n return this.env.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.env.set(key, value);\n }\n }\n delete(key: string): void {\n this.env.delete(key);\n }\n keys(): string[] {\n return Array.from(this.env.keys());\n }\n active(): boolean {\n return true; // that should work on every runtime\n }\n\n register(env: Env): Env {\n const sym = Symbol.for(this.opts.symbol || \"CP_ENV\");\n const browser = globalThis as unknown as Record<symbol, Env>;\n browser[sym] = env;\n return env;\n }\n}\n","import { ResolveOnce } from \"../resolve-once.js\";\nimport { runtimeFn } from \"../runtime.js\";\nimport { EnvActions, EnvImpl, EnvFactoryOpts, Env } from \"../sys-env.js\";\n\nconst once = new ResolveOnce<CFEnvActions>();\nexport class CFEnvActions implements EnvActions {\n readonly injectOnRegister: Record<string, string> = {};\n readonly cfEnv: Map<string, string>;\n env?: EnvImpl;\n static new(opts: Partial<EnvFactoryOpts>): EnvActions {\n return once.once(() => new CFEnvActions(opts));\n }\n static inject(o: Record<string, string>): void {\n const env = CFEnvActions.new({}) as CFEnvActions;\n for (const key in o) {\n const value = o[key];\n if (typeof value === \"string\") {\n if (env.env) {\n env.env.set(key, value);\n } else {\n env.injectOnRegister[key] = value;\n }\n }\n }\n }\n private constructor(env: Partial<EnvFactoryOpts>) {\n this.cfEnv = new Map<string, string>(Object.entries(env.presetEnv || {}));\n }\n active(): boolean {\n return runtimeFn().isCFWorker;\n }\n register(env: Env): Env {\n this.env = env as EnvImpl;\n for (const key in this.injectOnRegister) {\n env.set(key, this.injectOnRegister[key]);\n }\n return env;\n }\n get(key: string): string | undefined {\n return this.cfEnv.get(key);\n }\n set(key: string, value?: string): void {\n if (value) {\n this.cfEnv.set(key, value);\n }\n }\n delete(key: string): void {\n this.cfEnv.delete(key);\n }\n keys(): string[] {\n return Array.from(this.cfEnv.keys());\n }\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T = void>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T, E extends Error = Error>(t: E | string | Result<unknown, E>): Result<T, E> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as E);\n }\n if (Result.Is(t)) {\n if (t.is_ok()) {\n return new ResultError(new Error(\"Result Error is Ok\") as E);\n }\n return t as Result<T, E>;\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n// type WithoutPromise<T> = T extends Promise<infer U> ? U : T;\ntype WithResult<T> = T extends Promise<infer U> ? Promise<Result<U>> : Result<T>;\n\nexport function exception2Result<FN extends () => Promise<T> | T, T>(fn: FN): WithResult<ReturnType<FN>> {\n try {\n const res = fn();\n if (res instanceof Promise) {\n return res.then((value) => Result.Ok(value)).catch((e) => Result.Err(e)) as WithResult<ReturnType<FN>>;\n }\n return Result.Ok(res) as WithResult<ReturnType<FN>>;\n } catch (e) {\n return Result.Err(e as Error) as WithResult<ReturnType<FN>>;\n }\n}\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","import { Result } from \"../result.js\";\n\nclass _REQUIRED {\n readonly val = \"REQUIRED\";\n}\nclass _OPTIONAL {\n readonly val = \"OPTIONAL\";\n}\n\nexport interface Param {\n readonly REQUIRED: _REQUIRED;\n readonly OPTIONAL: _OPTIONAL;\n}\n\nexport const param: Param = {\n REQUIRED: new _REQUIRED(),\n OPTIONAL: new _OPTIONAL(),\n};\n\nexport type MsgFn = (...keys: string[]) => string;\nexport type KeysParam = (string | MsgFn | Record<string, _REQUIRED | _OPTIONAL | number | string | boolean | undefined | null>)[];\n\nexport function getParamsResult(\n keys: KeysParam,\n getParam: { getParam: (key: string) => string | undefined },\n): Result<Record<string, string>> {\n const keyDef = keys.flat().reduce(\n (acc, i) => {\n if (typeof i === \"string\") {\n acc.push({ key: i, def: undefined, isOptional: false });\n } else if (typeof i === \"object\") {\n acc.push(\n ...Object.keys(i).map((k) => ({\n key: k,\n def: typeof i[k] === \"string\" ? i[k] : undefined,\n isOptional: i[k] === param.OPTIONAL,\n })),\n );\n }\n return acc;\n },\n [] as { key: string; def?: string; isOptional: boolean }[],\n );\n //.filter((k) => typeof k === \"string\");\n const msgFn =\n keys.find((k) => typeof k === \"function\") ||\n ((...keys: string[]): string => {\n const msg = keys.join(\",\");\n return `missing parameters: ${msg}`;\n });\n const errors: string[] = [];\n const result: Record<string, string> = {};\n for (const kd of keyDef) {\n const val = getParam.getParam(kd.key);\n if (val === undefined) {\n if (typeof kd.def === \"string\") {\n result[kd.key] = kd.def;\n } else {\n if (!kd.isOptional) {\n errors.push(kd.key);\n }\n }\n } else {\n result[kd.key] = val;\n }\n }\n if (errors.length) {\n return Result.Err(msgFn(...errors));\n }\n return Result.Ok(result);\n}\n","import { DenoEnvActions } from \"./deno/deno-env-actions.js\";\nimport { NodeEnvActions } from \"./node/node-env-actions.js\";\nimport { BrowserEnvActions } from \"./web/web-env-actions.js\";\nimport { CFEnvActions } from \"./cf/cf-env-actions.js\";\nimport { KeyedResolvOnce } from \"./resolve-once.js\";\nimport { Result } from \"./result.js\";\nimport { getParamsResult, KeysParam } from \"./utils/get-params-result.js\";\n\nexport type EnvTuple = ([string, string] | [string, string][] | Record<string, string> | Iterator<[string, string]>)[];\n\nexport interface EnvMap {\n get(key: string): string | undefined;\n set(key: string, value?: string): void;\n delete(key: string): void;\n keys(): string[];\n}\nexport interface EnvActions extends EnvMap {\n active(): boolean;\n register(env: Env): Env;\n}\n\nexport interface EnvFactoryOpts {\n readonly symbol: string; // default \"CP_ENV\" used by BrowserEnvActions\n readonly presetEnv: Map<string, string>;\n}\n\ntype OnSetFn = (key: string, value?: string) => void;\nexport interface OnSetItem {\n readonly filter: Set<string>;\n readonly fn: OnSetFn;\n}\n\nexport interface Env extends EnvMap {\n onSet(fn: OnSetFn, ...filter: string[]): void;\n\n gets(...kparams: KeysParam): Result<Record<string, string>>;\n sets(...keys: EnvTuple): void;\n}\n\nexport type EnvFactoryFn = (opts: Partial<EnvFactoryOpts>) => EnvActions;\n\nconst envActions: { id: string; fn: EnvFactoryFn }[] = [\n { id: \"cf\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => CFEnvActions.new(opts) },\n { id: \"node\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => NodeEnvActions.new(opts) },\n { id: \"deno\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => DenoEnvActions.new(opts) },\n { id: \"browser\", fn: (opts: Partial<EnvFactoryOpts>): EnvActions => BrowserEnvActions.new(opts) },\n];\n\nexport function registerEnvAction(fn: EnvFactoryFn): () => void {\n const id = `id-${Math.random()}`;\n envActions.unshift({ id, fn });\n // rerun envFactory\n _envFactories.unget(id);\n return () => {\n const index = envActions.findIndex((i) => i.id === id);\n if (index >= 0) {\n envActions.splice(index, 1);\n }\n };\n}\n\nconst _envFactories = new KeyedResolvOnce<Env>();\nexport function envFactory(opts: Partial<EnvFactoryOpts> = {}): Env {\n const found = envActions.find((fi) => fi.fn(opts).active());\n if (!found) {\n throw new Error(\"SysContainer:envFactory: no env available\");\n }\n return _envFactories.get(found.id).once(() => {\n const action = found.fn(opts);\n const ret = new EnvImpl(action, opts);\n action.register(ret);\n return ret;\n });\n}\n\nfunction isIterable(obj: unknown): obj is Iterable<[string, string]> {\n // checks for null and undefined\n if (obj == null) {\n return false;\n }\n return typeof (obj as Record<symbol, unknown>)[Symbol.iterator] === \"function\";\n}\n\nexport class EnvImpl implements Env {\n readonly _map: EnvMap;\n constructor(map: EnvMap, opts: Partial<EnvFactoryOpts> = {}) {\n this._map = map;\n this._updatePresets(opts.presetEnv);\n }\n gets(...kparams: KeysParam): Result<Record<string, string>> {\n return getParamsResult(kparams, {\n getParam: (k) => this.get(k),\n });\n }\n sets(...keys: EnvTuple): void {\n keys.forEach((key) => {\n if (Array.isArray(key)) {\n if (key.length === 2) {\n const [k, v] = key;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n return;\n }\n }\n for (const item of key) {\n if (Array.isArray(item)) {\n // [string, string]\n if (item.length === 2) {\n const [k, v] = item;\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n } else {\n if (isIterable(key)) {\n for (const [k, v] of key) {\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n } else {\n const rKey = key as Record<string, string>;\n for (const k in rKey) {\n const v = rKey[k];\n if (typeof k === \"string\" && typeof v === \"string\") {\n this.set(k, v);\n }\n }\n }\n }\n });\n }\n _updatePresets(presetEnv?: Map<string, string>): void {\n if (!presetEnv) {\n return;\n }\n for (const [key, value] of presetEnv) {\n this._map.set(key, value);\n }\n }\n _applyOnSet(onSet: OnSetItem[], key?: string, value?: string): void {\n onSet.forEach((item) => {\n let keys: string[] = [];\n if (key) {\n keys = [key];\n } else {\n keys = this._map.keys();\n }\n keys\n .filter((k) => {\n if (item.filter.size === 0) {\n return true;\n }\n if (item.filter.has(k)) {\n return true;\n }\n return false;\n })\n .forEach((k) => {\n let v;\n if (!key && !value) {\n // init\n v = this._map.get(k);\n } else if (key && !value) {\n // del\n v = undefined;\n } else {\n // set\n v = value;\n }\n item.fn(k, v);\n });\n });\n }\n readonly _onSet: OnSetItem[] = [];\n keys(): string[] {\n return this._map.keys();\n }\n // filter is not set all sets passed\n onSet(fn: OnSetFn, ...filter: string[]): void {\n const item: OnSetItem = { filter: new Set(filter), fn };\n this._onSet.push(item);\n this._applyOnSet([item]);\n }\n get(key: string): string | undefined {\n return this._map.get(key);\n }\n set(key: string, value?: string): void {\n if (!value) {\n return;\n }\n this._map.set(key, value);\n this._applyOnSet(this._onSet, key, value);\n }\n delete(key: string): void {\n this._map.delete(key);\n this._applyOnSet(this._onSet, key);\n }\n}\n\n// export const envImpl = new EnvImpl();\n","import { Result } from \"../result.js\";\n\n// Tested in txt-en-decoder.test.ts\n\ninterface GlobalBuffer {\n Buffer?: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isBuffer: (obj: any) => obj is {\n buffer: ArrayBufferLike;\n byteOffset: number;\n byteLength: number;\n };\n };\n}\nconst globalBuffer = globalThis as GlobalBuffer;\n\nexport type ToUInt8Plain = Uint8Array | ArrayBuffer | ArrayBufferView;\nexport type ToUInt8Async = ToUInt8Plain | Blob;\nexport type ToUInt8 = ToUInt8Plain | Result<ToUInt8Plain>;\nexport type AsyncToUInt8 = ToUInt8Async | Result<ToUInt8Async> | Promise<ToUInt8Async> | Promise<Result<ToUInt8Async>>;\n\nexport function coerceIntoUint8(raw: ToUInt8): Result<Uint8Array> {\n if (raw instanceof ArrayBuffer) {\n return Result.Ok(new Uint8Array(raw));\n }\n if (ArrayBuffer.isView(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Blob) {\n return Result.Err(\"Blob not supported\");\n }\n if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {\n return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));\n }\n if (raw instanceof Uint8Array) {\n return Result.Ok(raw);\n }\n if (Result.Is(raw)) {\n if (raw.isErr()) {\n return Result.Err(raw);\n }\n return coerceIntoUint8(raw.unwrap());\n }\n return Result.Err(\"Not a Uint8Array\");\n}\n\nexport async function asyncCoerceIntoUint8(raw: AsyncToUInt8): Promise<Result<Uint8Array>> {\n let resolved = await raw;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return coerceIntoUint8(resolved as ToUInt8);\n}\n","import { Result } from \"./result.js\";\nimport { coerceIntoUint8, ToUInt8 } from \"./utils/coerce-uint8.js\";\n\nexport type ToEnDecoder = ToUInt8 | string | Result<string>;\nexport type AsyncToEnDecoder = ToEnDecoder | Blob | Promise<ToEnDecoder | Blob>;\n\nexport interface TxtEnDecoder {\n encode(input: string): Uint8Array;\n decode(input: ToEnDecoder): string;\n asyncDecode(input: AsyncToEnDecoder): Promise<string>;\n}\n\nclass Utf8EnDecoder implements TxtEnDecoder {\n readonly encoder = new TextEncoder();\n readonly decoder = new TextDecoder();\n\n encode(str: string): Uint8Array {\n return this.encoder.encode(str);\n }\n decode(data: ToEnDecoder): string {\n if (Result.Is(data)) {\n if (data.isErr()) {\n throw data.Err();\n }\n // only for string let do coerceInto the work\n const unwrapped = data.unwrap();\n if (typeof unwrapped === \"string\") {\n return this.decode(unwrapped);\n }\n }\n if (typeof data === \"string\") {\n return data;\n }\n return this.decoder.decode(coerceIntoUint8(data as ToUInt8).Ok());\n }\n\n async asyncDecode(data: AsyncToEnDecoder): Promise<string> {\n let resolved = await data;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return this.decode(resolved);\n }\n}\n\nlet utf8EnDecoder: TxtEnDecoder;\nexport function Utf8EnDecoderSingleton(): TxtEnDecoder {\n utf8EnDecoder = utf8EnDecoder ?? new Utf8EnDecoder();\n return utf8EnDecoder;\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { FileService, NamedWritableStream } from \"../file-service.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport class WebFileService implements FileService {\n get baseDir(): string {\n throw new Error(\"basedir-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n create(fname: string): Promise<NamedWritableStream> {\n throw new Error(\"create-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileString(fname: string): Promise<string> {\n throw new Error(\"readFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileString(fname: string, content: string): Promise<void> {\n throw new Error(\"writeFileString-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abs(fname: string): string {\n throw new Error(\"abs-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n join(...paths: string[]): string {\n throw new Error(\"join-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n relative(from: string, to?: string): string {\n throw new Error(\"relative-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dirname(fname: string): string {\n throw new Error(\"dirname-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n basename(fname: string): string {\n throw new Error(\"basename-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n nodeImport(fname: string): string {\n throw new Error(\"nodeImport-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n isAbsolute(fname: string): boolean {\n throw new Error(\"isAbsolute-Method not implemented.\");\n }\n}\n\nclass WebSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function WebSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new WebSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n","import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { WebFileService } from \"../web/web-sys-abstraction.js\";\n\nexport class CFSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new CFSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":"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","names":["once","once","once","keys","param"]}
package/cf/index.d.cts CHANGED
@@ -1,6 +1,6 @@
1
- import { W as WrapperSysAbstractionParams } from '../base-sys-abstraction-DLnSeH4s.cjs';
2
- import { S as SystemService, E as Env, V as VoidFunc, a as SysAbstraction } from '../sys-abstraction-BRDT_TIU.cjs';
3
- import '../get-params-result-Bhy5997x.cjs';
1
+ import { W as WrapperSysAbstractionParams } from '../base-sys-abstraction-WS7lNbFm.cjs';
2
+ import { b as SystemService, E as Env, V as VoidFunc, S as SysAbstraction, c as EnvActions, d as EnvImpl, e as EnvFactoryOpts } from '../sys-abstraction-B-0XMe9V.cjs';
3
+ import '../get-params-result-CXYbMEcV.cjs';
4
4
 
5
5
  declare class CFSystemService implements SystemService {
6
6
  Env(): Env;
@@ -10,4 +10,19 @@ declare class CFSystemService implements SystemService {
10
10
  }
11
11
  declare function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
12
12
 
13
- export { CFSysAbstraction, CFSystemService };
13
+ declare class CFEnvActions implements EnvActions {
14
+ readonly injectOnRegister: Record<string, string>;
15
+ readonly cfEnv: Map<string, string>;
16
+ env?: EnvImpl;
17
+ static new(opts: Partial<EnvFactoryOpts>): EnvActions;
18
+ static inject(o: Record<string, string>): void;
19
+ private constructor();
20
+ active(): boolean;
21
+ register(env: Env): Env;
22
+ get(key: string): string | undefined;
23
+ set(key: string, value?: string): void;
24
+ delete(key: string): void;
25
+ keys(): string[];
26
+ }
27
+
28
+ export { CFEnvActions, CFSysAbstraction, CFSystemService };
package/cf/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { W as WrapperSysAbstractionParams } from '../base-sys-abstraction-CKI4xiRR.js';
2
- import { S as SystemService, E as Env, V as VoidFunc, a as SysAbstraction } from '../sys-abstraction-Bd0EzwO6.js';
3
- import '../get-params-result-Bhy5997x.js';
1
+ import { W as WrapperSysAbstractionParams } from '../base-sys-abstraction-Cqb4snul.js';
2
+ import { b as SystemService, E as Env, V as VoidFunc, S as SysAbstraction, c as EnvActions, d as EnvImpl, e as EnvFactoryOpts } from '../sys-abstraction-CZa-VyNs.js';
3
+ import '../get-params-result-CXYbMEcV.js';
4
4
 
5
5
  declare class CFSystemService implements SystemService {
6
6
  Env(): Env;
@@ -10,4 +10,19 @@ declare class CFSystemService implements SystemService {
10
10
  }
11
11
  declare function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction;
12
12
 
13
- export { CFSysAbstraction, CFSystemService };
13
+ declare class CFEnvActions implements EnvActions {
14
+ readonly injectOnRegister: Record<string, string>;
15
+ readonly cfEnv: Map<string, string>;
16
+ env?: EnvImpl;
17
+ static new(opts: Partial<EnvFactoryOpts>): EnvActions;
18
+ static inject(o: Record<string, string>): void;
19
+ private constructor();
20
+ active(): boolean;
21
+ register(env: Env): Env;
22
+ get(key: string): string | undefined;
23
+ set(key: string, value?: string): void;
24
+ delete(key: string): void;
25
+ keys(): string[];
26
+ }
27
+
28
+ export { CFEnvActions, CFSysAbstraction, CFSystemService };
package/cf/index.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import {
2
2
  WebFileService
3
- } from "../chunk-OIIUVSUX.js";
3
+ } from "../chunk-K5TIGJ6I.js";
4
4
  import {
5
5
  BaseSysAbstraction,
6
+ CFEnvActions,
6
7
  WrapperSysAbstraction,
7
8
  envFactory
8
- } from "../chunk-4QRZPFED.js";
9
+ } from "../chunk-SCFB6I2C.js";
9
10
  import {
10
11
  Utf8EnDecoderSingleton
11
- } from "../chunk-QDDO6NOK.js";
12
+ } from "../chunk-BVZ6HD34.js";
12
13
 
13
14
  // src/cf/cf-sys-abstraction.ts
14
15
  var CFSystemService = class {
@@ -39,6 +40,7 @@ function CFSysAbstraction(param) {
39
40
  return new WrapperSysAbstraction(my, param);
40
41
  }
41
42
  export {
43
+ CFEnvActions,
42
44
  CFSysAbstraction,
43
45
  CFSystemService
44
46
  };
package/cf/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cf/cf-sys-abstraction.ts"],"sourcesContent":["import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { WebFileService } from \"../web/web-sys-abstraction.js\";\n\nexport class CFSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new CFSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":";;;;;;;;;;;;;AAMO,IAAM,kBAAN,MAA+C;AAAA,EACpD,MAAW;AACT,WAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAiB;AACf,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA;AAAA,EAEA,OAAO,KAAyB;AAC9B,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA;AAAA,EAEA,KAAK,MAAoB;AACvB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;AAEA,IAAI,KAAqC;AAClC,SAAS,iBAAiB,OAAqD;AACpF,MAAI,CAAC,IAAI;AACP,SAAK,IAAI,mBAAmB;AAAA,MAC1B,eAAc,+BAAO,iBAAgB,uBAAuB;AAAA,MAC5D,YAAY,IAAI,eAAe;AAAA,MAC/B,eAAe,IAAI,gBAAgB;AAAA,IACrC,CAAC;AAAA,EACH;AACA,SAAO,IAAI,sBAAsB,IAAI,KAAK;AAC5C;","names":[]}
1
+ {"version":3,"sources":["../../../src/cf/cf-sys-abstraction.ts"],"sourcesContent":["import { BaseSysAbstraction, WrapperSysAbstraction, WrapperSysAbstractionParams } from \"../base-sys-abstraction.js\";\nimport { SysAbstraction, SystemService, VoidFunc } from \"../sys-abstraction.js\";\nimport { Env, envFactory } from \"../sys-env.js\";\nimport { Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\nimport { WebFileService } from \"../web/web-sys-abstraction.js\";\n\nexport class CFSystemService implements SystemService {\n Env(): Env {\n return envFactory();\n }\n Args(): string[] {\n throw new Error(\"Args-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n OnExit(hdl: VoidFunc): VoidFunc {\n throw new Error(\"OnExit-Method not implemented.\");\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Exit(code: number): void {\n throw new Error(\"Exit-Method not implemented.\");\n }\n}\n\nlet my: BaseSysAbstraction | undefined = undefined;\nexport function CFSysAbstraction(param?: WrapperSysAbstractionParams): SysAbstraction {\n if (!my) {\n my = new BaseSysAbstraction({\n TxtEnDecoder: param?.TxtEnDecoder || Utf8EnDecoderSingleton(),\n FileSystem: new WebFileService(),\n SystemService: new CFSystemService(),\n });\n }\n return new WrapperSysAbstraction(my, param);\n}\n"],"mappings":";;;;;;;;;;;;;;AAMO,IAAM,kBAAN,MAA+C;AAAA,EACpD,MAAW;AACT,WAAO,WAAW;AAAA,EACpB;AAAA,EACA,OAAiB;AACf,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AAAA;AAAA,EAEA,OAAO,KAAyB;AAC9B,UAAM,IAAI,MAAM,gCAAgC;AAAA,EAClD;AAAA;AAAA,EAEA,KAAK,MAAoB;AACvB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAChD;AACF;AAEA,IAAI,KAAqC;AAClC,SAAS,iBAAiB,OAAqD;AACpF,MAAI,CAAC,IAAI;AACP,SAAK,IAAI,mBAAmB;AAAA,MAC1B,eAAc,+BAAO,iBAAgB,uBAAuB;AAAA,MAC5D,YAAY,IAAI,eAAe;AAAA,MAC/B,eAAe,IAAI,gBAAgB;AAAA,IACrC,CAAC;AAAA,EACH;AACA,SAAO,IAAI,sBAAsB,IAAI,KAAK;AAC5C;","names":[]}
@@ -10,6 +10,7 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
10
10
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
11
11
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
12
12
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
13
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
13
14
 
14
15
  // src/result.ts
15
16
  var Result = class _Result {
@@ -161,19 +162,75 @@ function getParamsResult(keys, getParam) {
161
162
  return Result.Ok(result);
162
163
  }
163
164
 
165
+ // src/utils/coerce-uint8.ts
166
+ var globalBuffer = globalThis;
167
+ function coerceIntoUint8(raw) {
168
+ if (raw instanceof ArrayBuffer) {
169
+ return Result.Ok(new Uint8Array(raw));
170
+ }
171
+ if (ArrayBuffer.isView(raw)) {
172
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
173
+ }
174
+ if (raw instanceof Blob) {
175
+ return Result.Err("Blob not supported");
176
+ }
177
+ if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
178
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
179
+ }
180
+ if (raw instanceof Uint8Array) {
181
+ return Result.Ok(raw);
182
+ }
183
+ if (Result.Is(raw)) {
184
+ if (raw.isErr()) {
185
+ return Result.Err(raw);
186
+ }
187
+ return coerceIntoUint8(raw.unwrap());
188
+ }
189
+ return Result.Err("Not a Uint8Array");
190
+ }
191
+ async function asyncCoerceIntoUint8(raw) {
192
+ let resolved = await raw;
193
+ if (resolved instanceof Blob) {
194
+ resolved = await resolved.arrayBuffer();
195
+ }
196
+ return coerceIntoUint8(resolved);
197
+ }
198
+
164
199
  // src/txt-en-decoder.ts
165
- var encoder = new TextEncoder();
166
- var decoder = new TextDecoder();
167
200
  var Utf8EnDecoder = class {
201
+ constructor() {
202
+ this.encoder = new TextEncoder();
203
+ this.decoder = new TextDecoder();
204
+ }
168
205
  encode(str) {
169
- return encoder.encode(str);
206
+ return this.encoder.encode(str);
170
207
  }
171
208
  decode(data) {
172
- return decoder.decode(data);
209
+ if (Result.Is(data)) {
210
+ if (data.isErr()) {
211
+ throw data.Err();
212
+ }
213
+ const unwrapped = data.unwrap();
214
+ if (typeof unwrapped === "string") {
215
+ return this.decode(unwrapped);
216
+ }
217
+ }
218
+ if (typeof data === "string") {
219
+ return data;
220
+ }
221
+ return this.decoder.decode(coerceIntoUint8(data).Ok());
222
+ }
223
+ async asyncDecode(data) {
224
+ let resolved = await data;
225
+ if (resolved instanceof Blob) {
226
+ resolved = await resolved.arrayBuffer();
227
+ }
228
+ return this.decode(resolved);
173
229
  }
174
230
  };
175
- var utf8EnDecoder = new Utf8EnDecoder();
231
+ var utf8EnDecoder;
176
232
  function Utf8EnDecoderSingleton() {
233
+ utf8EnDecoder = utf8EnDecoder != null ? utf8EnDecoder : new Utf8EnDecoder();
177
234
  return utf8EnDecoder;
178
235
  }
179
236
 
@@ -182,13 +239,15 @@ export {
182
239
  __privateGet,
183
240
  __privateAdd,
184
241
  __privateSet,
242
+ __privateMethod,
185
243
  Result,
186
244
  ResultOK,
187
245
  ResultError,
188
246
  exception2Result,
189
247
  param,
190
248
  getParamsResult,
191
- Utf8EnDecoder,
249
+ coerceIntoUint8,
250
+ asyncCoerceIntoUint8,
192
251
  Utf8EnDecoderSingleton
193
252
  };
194
- //# sourceMappingURL=chunk-QDDO6NOK.js.map
253
+ //# sourceMappingURL=chunk-BVZ6HD34.js.map