@adviser/cement 0.3.19 → 0.4.0

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 (173) hide show
  1. package/base-sys-abstraction-DgTynXGV.d.cts +95 -0
  2. package/base-sys-abstraction-h0dB3nZ5.d.ts +95 -0
  3. package/cf/index.cjs +232 -283
  4. package/cf/index.cjs.map +1 -1
  5. package/cf/index.d.cts +10 -8
  6. package/cf/index.d.ts +10 -8
  7. package/cf/index.js +6 -41
  8. package/cf/index.js.map +1 -1
  9. package/{chunk-GDTTUMIL.js → chunk-6F3ACVHD.js} +62 -22
  10. package/chunk-6F3ACVHD.js.map +1 -0
  11. package/{chunk-PHS255C5.js → chunk-FOALXQST.js} +1 -68
  12. package/chunk-FOALXQST.js.map +1 -0
  13. package/{chunk-23MCJYE6.js → chunk-X3IV2RYT.js} +422 -602
  14. package/chunk-X3IV2RYT.js.map +1 -0
  15. package/chunk-YKGCONBX.js +677 -0
  16. package/chunk-YKGCONBX.js.map +1 -0
  17. package/{chunk-55W4AK2Z.js → chunk-YVACAIUX.js} +5 -5
  18. package/deno/index.cjs +257 -241
  19. package/deno/index.cjs.map +1 -1
  20. package/deno/index.d.cts +3 -5
  21. package/deno/index.d.ts +3 -5
  22. package/deno/index.js +14 -16
  23. package/deno/index.js.map +1 -1
  24. package/{index-D1j1fPYg.d.ts → index-N0bkrgSt.d.ts} +15 -3
  25. package/{index-Cp1NspHH.d.cts → index-TtYD7HhB.d.cts} +15 -3
  26. package/index.cjs +1851 -1709
  27. package/index.cjs.map +1 -1
  28. package/index.d.cts +9 -8
  29. package/index.d.ts +9 -8
  30. package/index.js +21 -16
  31. package/index.js.map +1 -1
  32. package/metafile-cjs.json +1 -1
  33. package/metafile-esm.json +1 -1
  34. package/node/index.cjs +499 -474
  35. package/node/index.cjs.map +1 -1
  36. package/node/index.d.cts +3 -5
  37. package/node/index.d.ts +3 -5
  38. package/node/index.js +14 -16
  39. package/node/index.js.map +1 -1
  40. package/package.json +6 -6
  41. package/src/base-sys-abstraction.ts +106 -116
  42. package/src/cf/cf-basic-sys-abstraction.ts +79 -0
  43. package/src/cf/index.ts +1 -1
  44. package/src/cf-test-main.ts +10 -1
  45. package/src/deno/deno-basic-sys-abstraction.ts +39 -0
  46. package/src/deno/deno-file-service.ts +1 -1
  47. package/src/deno/deno-sys-abstraction.ts +19 -22
  48. package/src/jsr.json +1 -1
  49. package/src/log-writer-impl.ts +6 -0
  50. package/src/logger-impl.ts +17 -19
  51. package/src/node/node-basic-sys-abstraction.ts +59 -0
  52. package/src/node/node-sys-abstraction.ts +19 -22
  53. package/src/sys-abstraction.ts +12 -6
  54. package/src/test/mock-logger.ts +2 -2
  55. package/src/txt-en-decoder.ts +3 -3
  56. package/src/uri.ts +71 -0
  57. package/src/web/index.ts +1 -1
  58. package/src/web/web-basic-sys-abstraction.ts +105 -0
  59. package/{sys-abstraction-B0x6IE7r.d.ts → sys-abstraction-CeAxxg9H.d.ts} +11 -7
  60. package/{sys-abstraction-BTs3Vzy4.d.cts → sys-abstraction-DDAwGTnk.d.cts} +11 -7
  61. package/test/index.cjs +1534 -1419
  62. package/test/index.cjs.map +1 -1
  63. package/test/index.d.cts +2 -2
  64. package/test/index.d.ts +2 -2
  65. package/test/index.js +4 -5
  66. package/ts/smoke/smoke.js +7 -8
  67. package/ts/smoke/smoke.js.map +1 -1
  68. package/ts/src/base-basic-sys-abstraction.test.d.ts +2 -0
  69. package/ts/src/base-basic-sys-abstraction.test.d.ts.map +1 -0
  70. package/ts/src/{base-sys-abstraction.test.js → base-basic-sys-abstraction.test.js} +9 -9
  71. package/ts/src/base-basic-sys-abstraction.test.js.map +1 -0
  72. package/ts/src/base-sys-abstraction.d.ts +33 -21
  73. package/ts/src/base-sys-abstraction.d.ts.map +1 -1
  74. package/ts/src/base-sys-abstraction.js +54 -67
  75. package/ts/src/base-sys-abstraction.js.map +1 -1
  76. package/ts/src/cf/cf-basic-sys-abstraction.d.ts +14 -0
  77. package/ts/src/cf/cf-basic-sys-abstraction.d.ts.map +1 -0
  78. package/ts/src/cf/cf-basic-sys-abstraction.js +67 -0
  79. package/ts/src/cf/cf-basic-sys-abstraction.js.map +1 -0
  80. package/ts/src/cf/index.d.ts +1 -1
  81. package/ts/src/cf/index.d.ts.map +1 -1
  82. package/ts/src/cf/index.js +1 -1
  83. package/ts/src/cf/index.js.map +1 -1
  84. package/ts/src/cf-test-main.d.ts.map +1 -1
  85. package/ts/src/cf-test-main.js +7 -1
  86. package/ts/src/cf-test-main.js.map +1 -1
  87. package/ts/src/deno/deno-basic-sys-abstraction.d.ts +14 -0
  88. package/ts/src/deno/deno-basic-sys-abstraction.d.ts.map +1 -0
  89. package/ts/src/deno/deno-basic-sys-abstraction.js +35 -0
  90. package/ts/src/deno/deno-basic-sys-abstraction.js.map +1 -0
  91. package/ts/src/deno/deno-file-service.d.ts +1 -1
  92. package/ts/src/deno/deno-file-service.d.ts.map +1 -1
  93. package/ts/src/deno/deno-sys-abstraction.d.ts +3 -6
  94. package/ts/src/deno/deno-sys-abstraction.d.ts.map +1 -1
  95. package/ts/src/deno/deno-sys-abstraction.js +13 -17
  96. package/ts/src/deno/deno-sys-abstraction.js.map +1 -1
  97. package/ts/src/log-writer-impl.d.ts +1 -0
  98. package/ts/src/log-writer-impl.d.ts.map +1 -1
  99. package/ts/src/log-writer-impl.js +1 -0
  100. package/ts/src/log-writer-impl.js.map +1 -1
  101. package/ts/src/logger-impl.d.ts +3 -3
  102. package/ts/src/logger-impl.d.ts.map +1 -1
  103. package/ts/src/logger-impl.js +3 -18
  104. package/ts/src/logger-impl.js.map +1 -1
  105. package/ts/src/logger.test.js +3 -4
  106. package/ts/src/logger.test.js.map +1 -1
  107. package/ts/src/node/node-basic-sys-abstraction.d.ts +25 -0
  108. package/ts/src/node/node-basic-sys-abstraction.d.ts.map +1 -0
  109. package/ts/src/node/node-basic-sys-abstraction.js +44 -0
  110. package/ts/src/node/node-basic-sys-abstraction.js.map +1 -0
  111. package/ts/src/node/node-sys-abstraction.d.ts +3 -6
  112. package/ts/src/node/node-sys-abstraction.d.ts.map +1 -1
  113. package/ts/src/node/node-sys-abstraction.js +13 -17
  114. package/ts/src/node/node-sys-abstraction.js.map +1 -1
  115. package/ts/src/node/node-sys-abstraction.test.js +1 -1
  116. package/ts/src/node/node-sys-abstraction.test.js.map +1 -1
  117. package/ts/src/resolve-once.test.js +1 -1
  118. package/ts/src/sys-abstraction.d.ts +10 -6
  119. package/ts/src/sys-abstraction.d.ts.map +1 -1
  120. package/ts/src/test/mock-logger.d.ts +2 -2
  121. package/ts/src/test/mock-logger.d.ts.map +1 -1
  122. package/ts/src/test/mock-logger.js.map +1 -1
  123. package/ts/src/tracer.test.js +5 -8
  124. package/ts/src/tracer.test.js.map +1 -1
  125. package/ts/src/txt-en-decoder.d.ts.map +1 -1
  126. package/ts/src/txt-en-decoder.js +3 -3
  127. package/ts/src/txt-en-decoder.js.map +1 -1
  128. package/ts/src/uri.d.ts +12 -0
  129. package/ts/src/uri.d.ts.map +1 -1
  130. package/ts/src/uri.js +55 -0
  131. package/ts/src/uri.js.map +1 -1
  132. package/ts/src/uri.test.js +48 -0
  133. package/ts/src/uri.test.js.map +1 -1
  134. package/ts/src/web/index.d.ts +1 -1
  135. package/ts/src/web/index.d.ts.map +1 -1
  136. package/ts/src/web/index.js +1 -1
  137. package/ts/src/web/index.js.map +1 -1
  138. package/ts/src/web/web-basic-sys-abstraction.d.ts +4 -0
  139. package/ts/src/web/web-basic-sys-abstraction.d.ts.map +1 -0
  140. package/ts/src/web/web-basic-sys-abstraction.js +45 -0
  141. package/ts/src/web/web-basic-sys-abstraction.js.map +1 -0
  142. package/ts/vitest.workspace.d.ts +1 -1
  143. package/utils/index.cjs +132 -3
  144. package/utils/index.cjs.map +1 -1
  145. package/utils/index.js +5 -5
  146. package/web/index.cjs +277 -281
  147. package/web/index.cjs.map +1 -1
  148. package/web/index.d.cts +4 -17
  149. package/web/index.d.ts +4 -17
  150. package/web/index.js +4 -7
  151. package/base-sys-abstraction-BnBZ6zd0.d.ts +0 -84
  152. package/base-sys-abstraction-DAZ8tx5F.d.cts +0 -84
  153. package/chunk-23MCJYE6.js.map +0 -1
  154. package/chunk-GDTTUMIL.js.map +0 -1
  155. package/chunk-H6MLKWIZ.js +0 -88
  156. package/chunk-H6MLKWIZ.js.map +0 -1
  157. package/chunk-LXTKPZ6M.js +0 -255
  158. package/chunk-LXTKPZ6M.js.map +0 -1
  159. package/chunk-PHS255C5.js.map +0 -1
  160. package/src/cf/cf-sys-abstraction.ts +0 -34
  161. package/src/web/web-sys-abstraction.ts +0 -80
  162. package/ts/src/base-sys-abstraction.test.d.ts +0 -2
  163. package/ts/src/base-sys-abstraction.test.d.ts.map +0 -1
  164. package/ts/src/base-sys-abstraction.test.js.map +0 -1
  165. package/ts/src/cf/cf-sys-abstraction.d.ts +0 -11
  166. package/ts/src/cf/cf-sys-abstraction.d.ts.map +0 -1
  167. package/ts/src/cf/cf-sys-abstraction.js +0 -30
  168. package/ts/src/cf/cf-sys-abstraction.js.map +0 -1
  169. package/ts/src/web/web-sys-abstraction.d.ts +0 -18
  170. package/ts/src/web/web-sys-abstraction.d.ts.map +0 -1
  171. package/ts/src/web/web-sys-abstraction.js +0 -64
  172. package/ts/src/web/web-sys-abstraction.js.map +0 -1
  173. /package/{chunk-55W4AK2Z.js.map → chunk-YVACAIUX.js.map} +0 -0
package/node/index.cjs CHANGED
@@ -50,449 +50,6 @@ var import_node_path = __toESM(require("path"), 1);
50
50
  var import_node_fs = __toESM(require("fs"), 1);
51
51
  var import_node_process = __toESM(require("process"), 1);
52
52
 
53
- // src/result.ts
54
- var Result = class _Result {
55
- static Ok(t) {
56
- return new ResultOK(t);
57
- }
58
- static Err(t) {
59
- if (typeof t === "string") {
60
- return new ResultError(new Error(t));
61
- }
62
- if (_Result.Is(t)) {
63
- if (t.is_ok()) {
64
- return new ResultError(new Error("Result Error is Ok"));
65
- }
66
- return t;
67
- }
68
- return new ResultError(t);
69
- }
70
- static Is(t) {
71
- if (!t) {
72
- return false;
73
- }
74
- if (t instanceof _Result) {
75
- return true;
76
- }
77
- const rt = t;
78
- if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === "function")) {
79
- return true;
80
- }
81
- return false;
82
- }
83
- isOk() {
84
- return this.is_ok();
85
- }
86
- isErr() {
87
- return this.is_err();
88
- }
89
- Ok() {
90
- return this.unwrap();
91
- }
92
- Err() {
93
- return this.unwrap_err();
94
- }
95
- };
96
- var ResultOK = class extends Result {
97
- constructor(t) {
98
- super();
99
- this._t = t;
100
- }
101
- is_ok() {
102
- return true;
103
- }
104
- is_err() {
105
- return false;
106
- }
107
- unwrap_err() {
108
- throw new Error("Result is Ok");
109
- }
110
- unwrap() {
111
- return this._t;
112
- }
113
- };
114
- var ResultError = class extends Result {
115
- constructor(t) {
116
- super();
117
- this._error = t;
118
- }
119
- is_ok() {
120
- return false;
121
- }
122
- is_err() {
123
- return true;
124
- }
125
- unwrap() {
126
- throw new Error(`Result is Err: ${this._error}`);
127
- }
128
- unwrap_err() {
129
- return this._error;
130
- }
131
- };
132
-
133
- // src/utils/coerce-uint8.ts
134
- var globalBuffer = globalThis;
135
- function coerceIntoUint8(raw) {
136
- if (raw instanceof ArrayBuffer) {
137
- return Result.Ok(new Uint8Array(raw));
138
- }
139
- if (ArrayBuffer.isView(raw)) {
140
- return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
141
- }
142
- if (raw instanceof Blob) {
143
- return Result.Err("Blob not supported");
144
- }
145
- if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
146
- return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
147
- }
148
- if (raw instanceof Uint8Array) {
149
- return Result.Ok(raw);
150
- }
151
- if (Result.Is(raw)) {
152
- if (raw.isErr()) {
153
- return Result.Err(raw);
154
- }
155
- return coerceIntoUint8(raw.unwrap());
156
- }
157
- return Result.Err("Not a Uint8Array");
158
- }
159
-
160
- // src/txt-en-decoder.ts
161
- var TxtOps = class {
162
- constructor() {
163
- this.encoder = new TextEncoder();
164
- this.decoder = new TextDecoder();
165
- }
166
- encode(str) {
167
- return this.encoder.encode(str);
168
- }
169
- decode(data) {
170
- if (Result.Is(data)) {
171
- if (data.isErr()) {
172
- throw data.Err();
173
- }
174
- const unwrapped = data.unwrap();
175
- if (typeof unwrapped === "string") {
176
- return this.decode(unwrapped);
177
- }
178
- }
179
- if (typeof data === "string") {
180
- return data;
181
- }
182
- return this.decoder.decode(coerceIntoUint8(data).Ok());
183
- }
184
- async asyncDecode(data) {
185
- let resolved = await data;
186
- if (resolved instanceof Blob) {
187
- resolved = await resolved.arrayBuffer();
188
- }
189
- return this.decode(resolved);
190
- }
191
- };
192
- var txtEnDecoder;
193
- function TxtEnDecoderSingleton() {
194
- txtEnDecoder = txtEnDecoder != null ? txtEnDecoder : new TxtOps();
195
- return txtEnDecoder;
196
- }
197
-
198
- // src/node/node-file-service.ts
199
- var NodeFileService = class {
200
- constructor(baseDir = import_node_process.default.cwd()) {
201
- this.baseDir = this.abs(baseDir);
202
- }
203
- // nodeImport(fname: string): string {
204
- // // console.log('nodeImport:'+ fname);
205
- // if (path.isAbsolute(fname)) {
206
- // return fname;
207
- // } else {
208
- // return "./" + path.normalize(fname);
209
- // }
210
- // }
211
- readFileString(fname) {
212
- return import_node_fs.default.promises.readFile(fname, { encoding: "utf-8" });
213
- }
214
- dirname(fname) {
215
- return import_node_path.default.dirname(fname);
216
- }
217
- basename(fname) {
218
- return import_node_path.default.basename(fname);
219
- }
220
- join(...paths) {
221
- return import_node_path.default.join(...paths);
222
- }
223
- relative(from, to) {
224
- if (to === void 0) {
225
- to = from;
226
- from = import_node_process.default.cwd();
227
- }
228
- const ret = import_node_path.default.relative(from, to);
229
- return ret;
230
- }
231
- abs(fname) {
232
- if (import_node_path.default.isAbsolute(fname)) {
233
- return fname;
234
- } else {
235
- const cwd = import_node_process.default.cwd();
236
- return import_node_path.default.resolve(cwd, fname);
237
- }
238
- }
239
- isAbsolute(fname) {
240
- return import_node_path.default.isAbsolute(fname);
241
- }
242
- async writeFileString(fname, content, ende = TxtEnDecoderSingleton()) {
243
- const o = await this.create(fname);
244
- const wr = o.stream.getWriter();
245
- await wr.write(ende.encode(content));
246
- await wr.close();
247
- }
248
- async create(fname) {
249
- let oName = fname;
250
- if (!import_node_path.default.isAbsolute(fname)) {
251
- oName = this.abs(fname);
252
- }
253
- const base = import_node_path.default.dirname(oName);
254
- await import_node_fs.default.promises.mkdir(base, { recursive: true });
255
- const out = import_node_fs.default.createWriteStream(oName);
256
- return {
257
- name: oName,
258
- stream: new WritableStream({
259
- write(chunk) {
260
- out.write(chunk);
261
- },
262
- close() {
263
- out.close();
264
- },
265
- abort() {
266
- throw new Error("not implemented");
267
- }
268
- })
269
- };
270
- }
271
- };
272
-
273
- // src/sys-abstraction.ts
274
- var TimeMode = {
275
- REAL: "real",
276
- CONST: "const",
277
- STEP: "step"
278
- };
279
- var RandomMode = {
280
- CONST: "const",
281
- STEP: "step",
282
- RANDOM: "random"
283
- };
284
- var IDMode = {
285
- UUID: "uuid",
286
- CONST: "const",
287
- STEP: "step"
288
- };
289
-
290
- // src/time.ts
291
- var Time = class {
292
- TimeSince(start) {
293
- const now = this.Now();
294
- return now.getTime() - start.getTime();
295
- }
296
- };
297
- var TimeUnits = {
298
- Microsecond: 1,
299
- Second: 1e3 * 1,
300
- //Microsecond,
301
- Minute: 60 * 1e3 * 1,
302
- //Second,
303
- Hour: 60 * 60 * 1e3 * 1
304
- // Minute,
305
- };
306
-
307
- // src/base-sys-abstraction.ts
308
- var SysTime = class extends Time {
309
- Now() {
310
- return /* @__PURE__ */ new Date();
311
- }
312
- Sleep(duration) {
313
- return new Promise((resolve) => {
314
- setTimeout(() => {
315
- resolve();
316
- }, duration);
317
- });
318
- }
319
- };
320
- var ConstTime = class extends Time {
321
- Now() {
322
- return new Date(2021, 1, 1, 0, 0, 0, 0);
323
- }
324
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
325
- Sleep(duration) {
326
- return Promise.resolve();
327
- }
328
- };
329
- var StepTime = class extends Time {
330
- constructor() {
331
- super();
332
- this._step = new ConstTime().Now();
333
- this._start = this._step;
334
- }
335
- Now(steps = 1) {
336
- for (let i = 0; steps > 0 && i < steps; i++) {
337
- this._step = new Date(this._step.getTime() + 1e3);
338
- }
339
- if (steps < 1) {
340
- this._step = new Date(this._start.getTime() + steps * -1e3);
341
- }
342
- return this._step;
343
- }
344
- Sleep(duration) {
345
- this._step = new Date(this._step.getTime() + duration);
346
- return Promise.resolve();
347
- }
348
- };
349
- function TimeFactory(timeMode) {
350
- switch (timeMode) {
351
- case TimeMode.REAL:
352
- return new SysTime();
353
- case TimeMode.CONST:
354
- return new ConstTime();
355
- case TimeMode.STEP:
356
- return new StepTime();
357
- }
358
- return new SysTime();
359
- }
360
- var RandomService = class {
361
- constructor(mode) {
362
- this._step = 0;
363
- this._mode = mode;
364
- }
365
- Random0ToValue(value) {
366
- switch (this._mode) {
367
- case RandomMode.CONST:
368
- return 0.5 * value;
369
- case RandomMode.STEP:
370
- this._step += 1e-4;
371
- return this._step * value;
372
- case RandomMode.RANDOM:
373
- return Math.random() * value;
374
- default:
375
- throw new Error("Unknown RandomMode");
376
- }
377
- }
378
- };
379
- var IdService = class {
380
- constructor(mode) {
381
- this._step = 0;
382
- if (!mode) {
383
- mode = IDMode.UUID;
384
- }
385
- this._mode = mode;
386
- }
387
- NextId() {
388
- switch (this._mode) {
389
- case IDMode.UUID:
390
- return crypto.randomUUID();
391
- case IDMode.CONST:
392
- return "VeryUniqueID";
393
- case IDMode.STEP:
394
- return `STEPId-${this._step++}`;
395
- default:
396
- throw new Error("Unknown IDMode");
397
- }
398
- }
399
- };
400
- function consumeReadableStream(reader, writeFn) {
401
- reader.read().then(({ done, value }) => {
402
- if (done) {
403
- return;
404
- }
405
- writeFn(value).then(() => {
406
- consumeReadableStream(reader, writeFn);
407
- }).catch((e) => {
408
- console.error("consumeReadableStream:writeFn", e);
409
- });
410
- }).catch((e) => {
411
- console.error("consumeReadableStream:read", e);
412
- });
413
- }
414
- function CFWriteableStream(writeFn) {
415
- const ts = new TransformStream();
416
- consumeReadableStream(ts.readable.getReader(), writeFn);
417
- return ts.writable;
418
- }
419
- var BaseSysAbstraction = class {
420
- constructor(params) {
421
- this._time = new SysTime();
422
- this._idService = new IdService();
423
- this._randomService = new RandomService(RandomMode.RANDOM);
424
- this._fileSystem = params.FileSystem;
425
- this._systemService = params.SystemService;
426
- this._txtEnDe = params.TxtEnDecoder;
427
- const decoder = this._txtEnDe;
428
- this._stdout = CFWriteableStream((chunk) => {
429
- const decoded = decoder.decode(chunk);
430
- console.log(decoded.trimEnd());
431
- return Promise.resolve();
432
- });
433
- this._stderr = CFWriteableStream((chunk) => {
434
- const decoded = decoder.decode(chunk);
435
- console.error(decoded.trimEnd());
436
- return Promise.resolve();
437
- });
438
- }
439
- };
440
- var WrapperSysAbstraction = class {
441
- constructor(base, params) {
442
- this._time = base._time;
443
- this._stdout = base._stdout;
444
- this._stderr = base._stderr;
445
- this._idService = base._idService;
446
- this._randomService = base._randomService;
447
- this._fileSystem = base._fileSystem;
448
- this._systemService = base._systemService;
449
- if (params) {
450
- if (params.TimeMode) {
451
- this._time = TimeFactory(params.TimeMode);
452
- }
453
- if (params.Stdout) {
454
- this._stdout = params.Stdout;
455
- }
456
- if (params.Stderr) {
457
- this._stderr = params.Stderr;
458
- }
459
- if (params.IdMode) {
460
- this._idService = new IdService(params.IdMode);
461
- }
462
- if (params.RandomMode) {
463
- this._randomService = new RandomService(params.RandomMode);
464
- }
465
- if (params.FileSystem) {
466
- this._fileSystem = params.FileSystem;
467
- }
468
- if (params.SystemService) {
469
- this._systemService = params.SystemService;
470
- }
471
- }
472
- }
473
- Time() {
474
- return this._time;
475
- }
476
- NextId() {
477
- return this._idService.NextId();
478
- }
479
- Random0ToValue(value) {
480
- return this._randomService.Random0ToValue(value);
481
- }
482
- Stdout() {
483
- return this._stdout;
484
- }
485
- Stderr() {
486
- return this._stderr;
487
- }
488
- System() {
489
- return this._systemService;
490
- }
491
- FileSystem() {
492
- return this._fileSystem;
493
- }
494
- };
495
-
496
53
  // src/future.ts
497
54
  var _promise, _resolveFn, _rejectFn;
498
55
  var Future = class {
@@ -617,6 +174,86 @@ var LRUMap = class {
617
174
  // }
618
175
  };
619
176
 
177
+ // src/result.ts
178
+ var Result = class _Result {
179
+ static Ok(t) {
180
+ return new ResultOK(t);
181
+ }
182
+ static Err(t) {
183
+ if (typeof t === "string") {
184
+ return new ResultError(new Error(t));
185
+ }
186
+ if (_Result.Is(t)) {
187
+ if (t.is_ok()) {
188
+ return new ResultError(new Error("Result Error is Ok"));
189
+ }
190
+ return t;
191
+ }
192
+ return new ResultError(t);
193
+ }
194
+ static Is(t) {
195
+ if (!t) {
196
+ return false;
197
+ }
198
+ if (t instanceof _Result) {
199
+ return true;
200
+ }
201
+ const rt = t;
202
+ if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === "function")) {
203
+ return true;
204
+ }
205
+ return false;
206
+ }
207
+ isOk() {
208
+ return this.is_ok();
209
+ }
210
+ isErr() {
211
+ return this.is_err();
212
+ }
213
+ Ok() {
214
+ return this.unwrap();
215
+ }
216
+ Err() {
217
+ return this.unwrap_err();
218
+ }
219
+ };
220
+ var ResultOK = class extends Result {
221
+ constructor(t) {
222
+ super();
223
+ this._t = t;
224
+ }
225
+ is_ok() {
226
+ return true;
227
+ }
228
+ is_err() {
229
+ return false;
230
+ }
231
+ unwrap_err() {
232
+ throw new Error("Result is Ok");
233
+ }
234
+ unwrap() {
235
+ return this._t;
236
+ }
237
+ };
238
+ var ResultError = class extends Result {
239
+ constructor(t) {
240
+ super();
241
+ this._error = t;
242
+ }
243
+ is_ok() {
244
+ return false;
245
+ }
246
+ is_err() {
247
+ return true;
248
+ }
249
+ unwrap() {
250
+ throw new Error(`Result is Err: ${this._error}`);
251
+ }
252
+ unwrap_err() {
253
+ return this._error;
254
+ }
255
+ };
256
+
620
257
  // src/resolve-once.ts
621
258
  var ResolveOnce = class {
622
259
  constructor(ctx) {
@@ -746,26 +383,165 @@ var KeyedResolvOnce = class extends Keyed {
746
383
  constructor(kp = {}) {
747
384
  super((key) => new ResolveOnce(key), kp);
748
385
  }
749
- /**
750
- *
751
- * @returns The values of the resolved keys
752
- */
753
- values() {
754
- return Array.from(this._map.entries()).filter(([_, v]) => v._onceDone).map(([k, v]) => {
755
- if (v._onceDone) {
756
- if (v._onceError) {
757
- return {
758
- key: k,
759
- value: Result.Err(v._onceError)
760
- };
386
+ /**
387
+ *
388
+ * @returns The values of the resolved keys
389
+ */
390
+ values() {
391
+ return Array.from(this._map.entries()).filter(([_, v]) => v._onceDone).map(([k, v]) => {
392
+ if (v._onceDone) {
393
+ if (v._onceError) {
394
+ return {
395
+ key: k,
396
+ value: Result.Err(v._onceError)
397
+ };
398
+ }
399
+ return {
400
+ key: k,
401
+ value: Result.Ok(v._onceValue)
402
+ };
403
+ }
404
+ throw new Error("KeyedResolvOnce.values impossible");
405
+ });
406
+ }
407
+ };
408
+
409
+ // src/utils/coerce-uint8.ts
410
+ var globalBuffer = globalThis;
411
+ function coerceIntoUint8(raw) {
412
+ if (raw instanceof ArrayBuffer) {
413
+ return Result.Ok(new Uint8Array(raw));
414
+ }
415
+ if (ArrayBuffer.isView(raw)) {
416
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
417
+ }
418
+ if (raw instanceof Blob) {
419
+ return Result.Err("Blob not supported");
420
+ }
421
+ if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
422
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
423
+ }
424
+ if (raw instanceof Uint8Array) {
425
+ return Result.Ok(raw);
426
+ }
427
+ if (Result.Is(raw)) {
428
+ if (raw.isErr()) {
429
+ return Result.Err(raw);
430
+ }
431
+ return coerceIntoUint8(raw.unwrap());
432
+ }
433
+ return Result.Err("Not a Uint8Array");
434
+ }
435
+
436
+ // src/txt-en-decoder.ts
437
+ var TxtOps = class {
438
+ constructor() {
439
+ this.encoder = new TextEncoder();
440
+ this.decoder = new TextDecoder();
441
+ }
442
+ encode(str) {
443
+ return this.encoder.encode(str);
444
+ }
445
+ decode(data) {
446
+ if (Result.Is(data)) {
447
+ if (data.isErr()) {
448
+ throw data.Err();
449
+ }
450
+ const unwrapped = data.unwrap();
451
+ if (typeof unwrapped === "string") {
452
+ return this.decode(unwrapped);
453
+ }
454
+ }
455
+ if (typeof data === "string") {
456
+ return data;
457
+ }
458
+ return this.decoder.decode(coerceIntoUint8(data).Ok());
459
+ }
460
+ async asyncDecode(data) {
461
+ let resolved = await data;
462
+ if (resolved instanceof Blob) {
463
+ resolved = await resolved.arrayBuffer();
464
+ }
465
+ return this.decode(resolved);
466
+ }
467
+ };
468
+ var txtEnDecoder = new ResolveOnce();
469
+ function TxtEnDecoderSingleton() {
470
+ return txtEnDecoder.once(() => new TxtOps());
471
+ }
472
+
473
+ // src/node/node-file-service.ts
474
+ var NodeFileService = class {
475
+ constructor(baseDir = import_node_process.default.cwd()) {
476
+ this.baseDir = this.abs(baseDir);
477
+ }
478
+ // nodeImport(fname: string): string {
479
+ // // console.log('nodeImport:'+ fname);
480
+ // if (path.isAbsolute(fname)) {
481
+ // return fname;
482
+ // } else {
483
+ // return "./" + path.normalize(fname);
484
+ // }
485
+ // }
486
+ readFileString(fname) {
487
+ return import_node_fs.default.promises.readFile(fname, { encoding: "utf-8" });
488
+ }
489
+ dirname(fname) {
490
+ return import_node_path.default.dirname(fname);
491
+ }
492
+ basename(fname) {
493
+ return import_node_path.default.basename(fname);
494
+ }
495
+ join(...paths) {
496
+ return import_node_path.default.join(...paths);
497
+ }
498
+ relative(from, to) {
499
+ if (to === void 0) {
500
+ to = from;
501
+ from = import_node_process.default.cwd();
502
+ }
503
+ const ret = import_node_path.default.relative(from, to);
504
+ return ret;
505
+ }
506
+ abs(fname) {
507
+ if (import_node_path.default.isAbsolute(fname)) {
508
+ return fname;
509
+ } else {
510
+ const cwd = import_node_process.default.cwd();
511
+ return import_node_path.default.resolve(cwd, fname);
512
+ }
513
+ }
514
+ isAbsolute(fname) {
515
+ return import_node_path.default.isAbsolute(fname);
516
+ }
517
+ async writeFileString(fname, content, ende = TxtEnDecoderSingleton()) {
518
+ const o = await this.create(fname);
519
+ const wr = o.stream.getWriter();
520
+ await wr.write(ende.encode(content));
521
+ await wr.close();
522
+ }
523
+ async create(fname) {
524
+ let oName = fname;
525
+ if (!import_node_path.default.isAbsolute(fname)) {
526
+ oName = this.abs(fname);
527
+ }
528
+ const base = import_node_path.default.dirname(oName);
529
+ await import_node_fs.default.promises.mkdir(base, { recursive: true });
530
+ const out = import_node_fs.default.createWriteStream(oName);
531
+ return {
532
+ name: oName,
533
+ stream: new WritableStream({
534
+ write(chunk) {
535
+ out.write(chunk);
536
+ },
537
+ close() {
538
+ out.close();
539
+ },
540
+ abort() {
541
+ throw new Error("not implemented");
761
542
  }
762
- return {
763
- key: k,
764
- value: Result.Ok(v._onceValue)
765
- };
766
- }
767
- throw new Error("KeyedResolvOnce.values impossible");
768
- });
543
+ })
544
+ };
769
545
  }
770
546
  };
771
547
 
@@ -806,6 +582,40 @@ function runtimeFn() {
806
582
  };
807
583
  }
808
584
 
585
+ // src/sys-abstraction.ts
586
+ var TimeMode = {
587
+ REAL: "real",
588
+ CONST: "const",
589
+ STEP: "step"
590
+ };
591
+ var RandomMode = {
592
+ CONST: "const",
593
+ STEP: "step",
594
+ RANDOM: "random"
595
+ };
596
+ var IDMode = {
597
+ UUID: "uuid",
598
+ CONST: "const",
599
+ STEP: "step"
600
+ };
601
+
602
+ // src/time.ts
603
+ var Time = class {
604
+ TimeSince(start) {
605
+ const now = this.Now();
606
+ return now.getTime() - start.getTime();
607
+ }
608
+ };
609
+ var TimeUnits = {
610
+ Microsecond: 1,
611
+ Second: 1e3 * 1,
612
+ //Microsecond,
613
+ Minute: 60 * 1e3 * 1,
614
+ //Second,
615
+ Hour: 60 * 60 * 1e3 * 1
616
+ // Minute,
617
+ };
618
+
809
619
  // src/deno/deno-env-actions.ts
810
620
  var once = new ResolveOnce();
811
621
  var _deno;
@@ -1169,6 +979,224 @@ var EnvImpl = class {
1169
979
  }
1170
980
  };
1171
981
 
982
+ // src/web/web-basic-sys-abstraction.ts
983
+ var baseSysAbstraction = new ResolveOnce();
984
+
985
+ // src/cf/cf-basic-sys-abstraction.ts
986
+ var baseSysAbstraction2 = new ResolveOnce();
987
+
988
+ // src/deno/deno-basic-sys-abstraction.ts
989
+ var baseSysAbstraction3 = new ResolveOnce();
990
+
991
+ // src/node/node-basic-sys-abstraction.ts
992
+ var NodeRuntimeService = class {
993
+ constructor(ende) {
994
+ this._txtEnDe = ende;
995
+ this._gthis = globalThis;
996
+ }
997
+ Env() {
998
+ return envFactory();
999
+ }
1000
+ Args() {
1001
+ return this._gthis.process.argv;
1002
+ }
1003
+ Stdout() {
1004
+ return new WritableStream({
1005
+ write: (chunk) => {
1006
+ this._gthis.process.stdout.write(chunk);
1007
+ }
1008
+ });
1009
+ }
1010
+ Stderr() {
1011
+ return new WritableStream({
1012
+ write: (chunk) => {
1013
+ this._gthis.process.stderr.write(chunk);
1014
+ }
1015
+ });
1016
+ }
1017
+ };
1018
+ var baseSysAbstraction4 = new ResolveOnce();
1019
+ function NodeBasicSysAbstraction(param2) {
1020
+ var _a;
1021
+ const my = baseSysAbstraction4.once(() => {
1022
+ return new BaseBasicSysAbstraction({
1023
+ TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || TxtEnDecoderSingleton()
1024
+ });
1025
+ });
1026
+ return new WrapperBasicSysAbstraction(my, {
1027
+ basicRuntimeService: new NodeRuntimeService((_a = param2 == null ? void 0 : param2.TxtEnDecoder) != null ? _a : my._txtEnDe),
1028
+ ...param2
1029
+ });
1030
+ }
1031
+
1032
+ // src/base-sys-abstraction.ts
1033
+ var SysTime = class extends Time {
1034
+ Now() {
1035
+ return /* @__PURE__ */ new Date();
1036
+ }
1037
+ Sleep(duration) {
1038
+ return new Promise((resolve) => {
1039
+ setTimeout(() => {
1040
+ resolve();
1041
+ }, duration);
1042
+ });
1043
+ }
1044
+ };
1045
+ var ConstTime = class extends Time {
1046
+ Now() {
1047
+ return new Date(2021, 1, 1, 0, 0, 0, 0);
1048
+ }
1049
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1050
+ Sleep(duration) {
1051
+ return Promise.resolve();
1052
+ }
1053
+ };
1054
+ var StepTime = class extends Time {
1055
+ constructor() {
1056
+ super();
1057
+ this._step = new ConstTime().Now();
1058
+ this._start = this._step;
1059
+ }
1060
+ Now(steps = 1) {
1061
+ for (let i = 0; steps > 0 && i < steps; i++) {
1062
+ this._step = new Date(this._step.getTime() + 1e3);
1063
+ }
1064
+ if (steps < 1) {
1065
+ this._step = new Date(this._start.getTime() + steps * -1e3);
1066
+ }
1067
+ return this._step;
1068
+ }
1069
+ Sleep(duration) {
1070
+ this._step = new Date(this._step.getTime() + duration);
1071
+ return Promise.resolve();
1072
+ }
1073
+ };
1074
+ function TimeFactory(timeMode) {
1075
+ switch (timeMode) {
1076
+ case TimeMode.REAL:
1077
+ return new SysTime();
1078
+ case TimeMode.CONST:
1079
+ return new ConstTime();
1080
+ case TimeMode.STEP:
1081
+ return new StepTime();
1082
+ }
1083
+ return new SysTime();
1084
+ }
1085
+ var RandomService = class {
1086
+ constructor(mode) {
1087
+ this._step = 0;
1088
+ this._mode = mode;
1089
+ }
1090
+ Random0ToValue(value) {
1091
+ switch (this._mode) {
1092
+ case RandomMode.CONST:
1093
+ return 0.5 * value;
1094
+ case RandomMode.STEP:
1095
+ this._step += 1e-4;
1096
+ return this._step * value;
1097
+ case RandomMode.RANDOM:
1098
+ return Math.random() * value;
1099
+ default:
1100
+ throw new Error("Unknown RandomMode");
1101
+ }
1102
+ }
1103
+ };
1104
+ var IdService = class {
1105
+ constructor(mode) {
1106
+ this._step = 0;
1107
+ if (!mode) {
1108
+ mode = IDMode.UUID;
1109
+ }
1110
+ this._mode = mode;
1111
+ }
1112
+ NextId() {
1113
+ switch (this._mode) {
1114
+ case IDMode.UUID:
1115
+ return crypto.randomUUID();
1116
+ case IDMode.CONST:
1117
+ return "VeryUniqueID";
1118
+ case IDMode.STEP:
1119
+ return `STEPId-${this._step++}`;
1120
+ default:
1121
+ throw new Error("Unknown IDMode");
1122
+ }
1123
+ }
1124
+ };
1125
+ var BaseBasicSysAbstraction = class {
1126
+ constructor(params) {
1127
+ this._time = new SysTime();
1128
+ // system independent services
1129
+ this._idService = new IdService();
1130
+ this._randomService = new RandomService(RandomMode.RANDOM);
1131
+ this._txtEnDe = params.TxtEnDecoder;
1132
+ }
1133
+ };
1134
+ var BaseSysAbstraction = class extends BaseBasicSysAbstraction {
1135
+ constructor(params) {
1136
+ super(params);
1137
+ this._fileSystem = params.FileSystem;
1138
+ this._systemService = params.SystemService;
1139
+ }
1140
+ };
1141
+ var WrapperBasicSysAbstraction = class {
1142
+ constructor(base, params) {
1143
+ this._time = base._time;
1144
+ this._basicRuntimeService = params.basicRuntimeService;
1145
+ this._idService = base._idService;
1146
+ this._randomService = base._randomService;
1147
+ if (params.TimeMode) {
1148
+ this._time = TimeFactory(params.TimeMode);
1149
+ }
1150
+ if (params.IdMode) {
1151
+ this._idService = new IdService(params.IdMode);
1152
+ }
1153
+ if (params.RandomMode) {
1154
+ this._randomService = new RandomService(params.RandomMode);
1155
+ }
1156
+ }
1157
+ Time() {
1158
+ return this._time;
1159
+ }
1160
+ NextId() {
1161
+ return this._idService.NextId();
1162
+ }
1163
+ Random0ToValue(value) {
1164
+ return this._randomService.Random0ToValue(value);
1165
+ }
1166
+ Stdout() {
1167
+ return this._basicRuntimeService.Stdout();
1168
+ }
1169
+ Stderr() {
1170
+ return this._basicRuntimeService.Stderr();
1171
+ }
1172
+ Env() {
1173
+ return this._basicRuntimeService.Env();
1174
+ }
1175
+ Args() {
1176
+ return this._basicRuntimeService.Args();
1177
+ }
1178
+ // System(): SystemService {
1179
+ // return this._systemService;
1180
+ // }
1181
+ // FileSystem(): FileService {
1182
+ // return this._fileSystem;
1183
+ // }
1184
+ };
1185
+ var WrapperRuntimeSysAbstraction = class extends WrapperBasicSysAbstraction {
1186
+ constructor(base, params) {
1187
+ var _a, _b;
1188
+ super(base, params);
1189
+ this._systemService = (_a = params.systemService) != null ? _a : base._systemService;
1190
+ this._fileSystem = (_b = params.fileSystem) != null ? _b : base._fileSystem;
1191
+ }
1192
+ System() {
1193
+ return this._systemService;
1194
+ }
1195
+ FileSystem() {
1196
+ return this._fileSystem;
1197
+ }
1198
+ };
1199
+
1172
1200
  // src/node/node-sys-abstraction.ts
1173
1201
  var import_node_process2 = __toESM(require("process"), 1);
1174
1202
  var NodeExitServiceImpl = class {
@@ -1229,12 +1257,6 @@ var _NodeSystemService = class _NodeSystemService {
1229
1257
  this._exitService = new NodeExitServiceImpl();
1230
1258
  this._exitService.injectExitHandlers(_NodeSystemService._exitHandlers);
1231
1259
  }
1232
- Env() {
1233
- return envFactory();
1234
- }
1235
- Args() {
1236
- return import_node_process2.default.argv;
1237
- }
1238
1260
  OnExit(hdl) {
1239
1261
  const id = crypto.randomUUID();
1240
1262
  _NodeSystemService._exitHandlers.push({ hdl, id });
@@ -1251,16 +1273,19 @@ var _NodeSystemService = class _NodeSystemService {
1251
1273
  };
1252
1274
  _NodeSystemService._exitHandlers = [];
1253
1275
  var NodeSystemService = _NodeSystemService;
1254
- var my = void 0;
1276
+ var baseSysAbstraction5 = new ResolveOnce();
1255
1277
  function NodeSysAbstraction(param2) {
1256
- if (!my) {
1257
- my = new BaseSysAbstraction({
1278
+ const my = baseSysAbstraction5.once(
1279
+ () => new BaseSysAbstraction({
1258
1280
  TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || TxtEnDecoderSingleton(),
1259
1281
  FileSystem: new NodeFileService(),
1260
1282
  SystemService: new NodeSystemService()
1261
- });
1262
- }
1263
- return new WrapperSysAbstraction(my, param2);
1283
+ })
1284
+ );
1285
+ return new WrapperRuntimeSysAbstraction(my, {
1286
+ basicRuntimeService: NodeBasicSysAbstraction(param2),
1287
+ ...param2
1288
+ });
1264
1289
  }
1265
1290
 
1266
1291
  // src/node/mock-file-service.ts