@adviser/cement 0.3.6 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/{base-sys-abstraction-DLnSeH4s.d.cts → base-sys-abstraction-4Vw4QGaI.d.cts} +2 -2
  2. package/{base-sys-abstraction-CKI4xiRR.d.ts → base-sys-abstraction-8v83VyEU.d.ts} +2 -2
  3. package/cf/index.cjs +63 -12
  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 +7 -5
  8. package/cf/index.js.map +1 -1
  9. package/{chunk-QDDO6NOK.js → chunk-A57BAYWU.js} +70 -11
  10. package/chunk-A57BAYWU.js.map +1 -0
  11. package/{chunk-4QRZPFED.js → chunk-GVZIH356.js} +58 -57
  12. package/{chunk-4QRZPFED.js.map → chunk-GVZIH356.js.map} +1 -1
  13. package/{chunk-Z7F6652G.js → chunk-TPIXB3KY.js} +7 -7
  14. package/chunk-TPIXB3KY.js.map +1 -0
  15. package/{chunk-OIIUVSUX.js → chunk-TRSU5M6V.js} +5 -5
  16. package/chunk-TRSU5M6V.js.map +1 -0
  17. package/{chunk-N5ISHPJ6.js → chunk-W53WEZWY.js} +43 -4
  18. package/chunk-W53WEZWY.js.map +1 -0
  19. package/deno/index.cjs +63 -14
  20. package/deno/index.cjs.map +1 -1
  21. package/deno/index.d.cts +3 -3
  22. package/deno/index.d.ts +3 -3
  23. package/deno/index.js +6 -6
  24. package/deno/index.js.map +1 -1
  25. package/{get-params-result-Bhy5997x.d.ts → get-params-result-C2cbgB78.d.cts} +14 -8
  26. package/{get-params-result-Bhy5997x.d.cts → get-params-result-C2cbgB78.d.ts} +14 -8
  27. package/{index-6ofzOS0J.d.ts → index-CbOCsgzP.d.ts} +2 -2
  28. package/{index-TZQHtEZo.d.cts → index-Dpc3oVOD.d.cts} +19 -3
  29. package/{index-CcNS7k5i.d.cts → index-EnKo_jNv.d.cts} +2 -2
  30. package/{index-DjN6Y4N2.d.ts → index-MWn9Xel9.d.ts} +19 -3
  31. package/index.cjs +189 -23
  32. package/index.cjs.map +1 -1
  33. package/index.d.cts +27 -10
  34. package/index.d.ts +27 -10
  35. package/index.js +85 -9
  36. package/index.js.map +1 -1
  37. package/metafile-cjs.json +1 -0
  38. package/metafile-esm.json +1 -0
  39. package/node/index.cjs +144 -95
  40. package/node/index.cjs.map +1 -1
  41. package/node/index.d.cts +3 -3
  42. package/node/index.d.ts +3 -3
  43. package/node/index.js +5 -5
  44. package/node/index.js.map +1 -1
  45. package/package.json +2 -2
  46. package/src/cf/cf-sys-abstraction.ts +2 -2
  47. package/src/cf/index.ts +1 -0
  48. package/src/deno/deno-file-service.ts +3 -3
  49. package/src/deno/deno-sys-abstraction.ts +2 -2
  50. package/src/http_header.ts +1 -1
  51. package/src/index.ts +5 -1
  52. package/src/json-en-decoder.ts +83 -0
  53. package/src/jsr.json +1 -1
  54. package/src/logger-impl.ts +2 -2
  55. package/src/node/node-file-service.ts +2 -2
  56. package/src/node/node-sys-abstraction.ts +2 -2
  57. package/src/path-ops.ts +30 -0
  58. package/src/test/log-write-stream.ts +2 -2
  59. package/src/txt-en-decoder.ts +40 -11
  60. package/src/utils/coerce-uint8.ts +53 -0
  61. package/src/utils/index.ts +3 -0
  62. package/src/utils/sorted-object.ts +18 -0
  63. package/src/utils/string2stream.ts +2 -2
  64. package/src/utils/uint8array-equal.ts +11 -0
  65. package/src/web/web-sys-abstraction.ts +2 -2
  66. package/{sys-abstraction-BRDT_TIU.d.cts → sys-abstraction-3OXhCVsu.d.cts} +2 -2
  67. package/{sys-abstraction-Bd0EzwO6.d.ts → sys-abstraction-DXeSUn9x.d.ts} +2 -2
  68. package/test/index.cjs +156 -107
  69. package/test/index.cjs.map +1 -1
  70. package/test/index.d.cts +3 -3
  71. package/test/index.d.ts +3 -3
  72. package/test/index.js +4 -4
  73. package/ts/src/cf/cf-sys-abstraction.js +2 -2
  74. package/ts/src/cf/cf-sys-abstraction.js.map +1 -1
  75. package/ts/src/cf/index.d.ts +1 -0
  76. package/ts/src/cf/index.d.ts.map +1 -1
  77. package/ts/src/cf/index.js +1 -0
  78. package/ts/src/cf/index.js.map +1 -1
  79. package/ts/src/deno/deno-file-service.d.ts.map +1 -1
  80. package/ts/src/deno/deno-file-service.js +3 -3
  81. package/ts/src/deno/deno-file-service.js.map +1 -1
  82. package/ts/src/deno/deno-sys-abstraction.js +2 -2
  83. package/ts/src/deno/deno-sys-abstraction.js.map +1 -1
  84. package/ts/src/http_header.d.ts +1 -1
  85. package/ts/src/http_header.d.ts.map +1 -1
  86. package/ts/src/http_header.js.map +1 -1
  87. package/ts/src/index.d.ts +2 -0
  88. package/ts/src/index.d.ts.map +1 -1
  89. package/ts/src/index.js +2 -0
  90. package/ts/src/index.js.map +1 -1
  91. package/ts/src/json-en-decoder.d.ts +12 -0
  92. package/ts/src/json-en-decoder.d.ts.map +1 -0
  93. package/ts/src/json-en-decoder.js +41 -0
  94. package/ts/src/json-en-decoder.js.map +1 -0
  95. package/ts/src/json-en-decoder.test.d.ts +2 -0
  96. package/ts/src/json-en-decoder.test.d.ts.map +1 -0
  97. package/ts/src/json-en-decoder.test.js +18 -0
  98. package/ts/src/json-en-decoder.test.js.map +1 -0
  99. package/ts/src/logger-impl.d.ts.map +1 -1
  100. package/ts/src/logger-impl.js +2 -2
  101. package/ts/src/logger-impl.js.map +1 -1
  102. package/ts/src/node/node-file-service.d.ts.map +1 -1
  103. package/ts/src/node/node-file-service.js +2 -2
  104. package/ts/src/node/node-file-service.js.map +1 -1
  105. package/ts/src/node/node-sys-abstraction.js +2 -2
  106. package/ts/src/node/node-sys-abstraction.js.map +1 -1
  107. package/ts/src/path-ops.d.ts +7 -0
  108. package/ts/src/path-ops.d.ts.map +1 -0
  109. package/ts/src/path-ops.js +33 -0
  110. package/ts/src/path-ops.js.map +1 -0
  111. package/ts/src/path-ops.test.d.ts +2 -0
  112. package/ts/src/path-ops.test.d.ts.map +1 -0
  113. package/ts/src/path-ops.test.js +23 -0
  114. package/ts/src/path-ops.test.js.map +1 -0
  115. package/ts/src/test/log-write-stream.d.ts.map +1 -1
  116. package/ts/src/test/log-write-stream.js +2 -2
  117. package/ts/src/test/log-write-stream.js.map +1 -1
  118. package/ts/src/txt-en-decoder.d.ts +8 -7
  119. package/ts/src/txt-en-decoder.d.ts.map +1 -1
  120. package/ts/src/txt-en-decoder.js +32 -8
  121. package/ts/src/txt-en-decoder.js.map +1 -1
  122. package/ts/src/txt-en-decoder.test.d.ts +2 -0
  123. package/ts/src/txt-en-decoder.test.d.ts.map +1 -0
  124. package/ts/src/txt-en-decoder.test.js +48 -0
  125. package/ts/src/txt-en-decoder.test.js.map +1 -0
  126. package/ts/src/utils/coerce-uint8.d.ts +8 -0
  127. package/ts/src/utils/coerce-uint8.d.ts.map +1 -0
  128. package/ts/src/utils/coerce-uint8.js +34 -0
  129. package/ts/src/utils/coerce-uint8.js.map +1 -0
  130. package/ts/src/utils/index.d.ts +3 -0
  131. package/ts/src/utils/index.d.ts.map +1 -1
  132. package/ts/src/utils/index.js +3 -0
  133. package/ts/src/utils/index.js.map +1 -1
  134. package/ts/src/utils/sorted-objec.test.d.ts +2 -0
  135. package/ts/src/utils/sorted-objec.test.d.ts.map +1 -0
  136. package/ts/src/utils/sorted-objec.test.js +20 -0
  137. package/ts/src/utils/sorted-objec.test.js.map +1 -0
  138. package/ts/src/utils/sorted-object.d.ts +4 -0
  139. package/ts/src/utils/sorted-object.d.ts.map +1 -0
  140. package/ts/src/utils/sorted-object.js +16 -0
  141. package/ts/src/utils/sorted-object.js.map +1 -0
  142. package/ts/src/utils/string2stream.d.ts.map +1 -1
  143. package/ts/src/utils/string2stream.js +2 -2
  144. package/ts/src/utils/string2stream.js.map +1 -1
  145. package/ts/src/utils/uint8array-equal.d.ts +2 -0
  146. package/ts/src/utils/uint8array-equal.d.ts.map +1 -0
  147. package/ts/src/utils/uint8array-equal.js +12 -0
  148. package/ts/src/utils/uint8array-equal.js.map +1 -0
  149. package/ts/src/web/web-sys-abstraction.js +2 -2
  150. package/ts/src/web/web-sys-abstraction.js.map +1 -1
  151. package/utils/index.cjs +186 -91
  152. package/utils/index.cjs.map +1 -1
  153. package/utils/index.d.cts +2 -2
  154. package/utils/index.d.ts +2 -2
  155. package/utils/index.js +14 -2
  156. package/web/index.cjs +61 -12
  157. package/web/index.cjs.map +1 -1
  158. package/web/index.d.cts +3 -3
  159. package/web/index.d.ts +3 -3
  160. package/web/index.js +3 -3
  161. package/chunk-N5ISHPJ6.js.map +0 -1
  162. package/chunk-OIIUVSUX.js.map +0 -1
  163. package/chunk-QDDO6NOK.js.map +0 -1
  164. package/chunk-Z7F6652G.js.map +0 -1
package/utils/index.cjs CHANGED
@@ -23,7 +23,10 @@ __export(utils_exports, {
23
23
  ConsoleWriterStream: () => ConsoleWriterStream,
24
24
  ConsoleWriterStreamDefaultWriter: () => ConsoleWriterStreamDefaultWriter,
25
25
  FanoutWriteStream: () => FanoutWriteStream,
26
+ UInt8ArrayEqual: () => UInt8ArrayEqual,
26
27
  array2stream: () => array2stream,
28
+ asyncCoerceIntoUint8: () => asyncCoerceIntoUint8,
29
+ coerceIntoUint8: () => coerceIntoUint8,
27
30
  devnull: () => devnull,
28
31
  getParamsResult: () => getParamsResult,
29
32
  param: () => param,
@@ -35,6 +38,9 @@ __export(utils_exports, {
35
38
  streamMap: () => streamMap,
36
39
  string2stream: () => string2stream,
37
40
  stripper: () => stripper,
41
+ toSortedArray: () => toSortedArray,
42
+ toSortedObject: () => toSortedObject,
43
+ toSortedObjectArray: () => toSortedObjectArray,
38
44
  uint8array2stream: () => uint8array2stream
39
45
  });
40
46
  module.exports = __toCommonJS(utils_exports);
@@ -170,7 +176,7 @@ async function stream2string(stream, maxSize) {
170
176
  }
171
177
  const reader = stream.getReader();
172
178
  let res = "";
173
- const decoder2 = new TextDecoder();
179
+ const decoder = new TextDecoder();
174
180
  let rSize = 0;
175
181
  while (typeof maxSize === "undefined" || rSize < maxSize) {
176
182
  try {
@@ -181,7 +187,7 @@ async function stream2string(stream, maxSize) {
181
187
  if (maxSize && rSize + read.value.length > maxSize) {
182
188
  read.value = read.value.slice(0, maxSize - rSize);
183
189
  }
184
- const block = decoder2.decode(read.value, { stream: true });
190
+ const block = decoder.decode(read.value, { stream: true });
185
191
  rSize += read.value.length;
186
192
  res += block;
187
193
  } catch (err) {
@@ -210,24 +216,160 @@ async function stream2uint8array(stream) {
210
216
  return Promise.resolve(res);
211
217
  }
212
218
 
219
+ // src/result.ts
220
+ var Result = class _Result {
221
+ static Ok(t) {
222
+ return new ResultOK(t);
223
+ }
224
+ static Err(t) {
225
+ if (typeof t === "string") {
226
+ return new ResultError(new Error(t));
227
+ }
228
+ if (_Result.Is(t)) {
229
+ if (t.is_ok()) {
230
+ return new ResultError(new Error("Result Error is Ok"));
231
+ }
232
+ return t;
233
+ }
234
+ return new ResultError(t);
235
+ }
236
+ static Is(t) {
237
+ if (!t) {
238
+ return false;
239
+ }
240
+ if (t instanceof _Result) {
241
+ return true;
242
+ }
243
+ const rt = t;
244
+ if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === "function")) {
245
+ return true;
246
+ }
247
+ return false;
248
+ }
249
+ isOk() {
250
+ return this.is_ok();
251
+ }
252
+ isErr() {
253
+ return this.is_err();
254
+ }
255
+ Ok() {
256
+ return this.unwrap();
257
+ }
258
+ Err() {
259
+ return this.unwrap_err();
260
+ }
261
+ };
262
+ var ResultOK = class extends Result {
263
+ constructor(t) {
264
+ super();
265
+ this._t = t;
266
+ }
267
+ is_ok() {
268
+ return true;
269
+ }
270
+ is_err() {
271
+ return false;
272
+ }
273
+ unwrap_err() {
274
+ throw new Error("Result is Ok");
275
+ }
276
+ unwrap() {
277
+ return this._t;
278
+ }
279
+ };
280
+ var ResultError = class extends Result {
281
+ constructor(t) {
282
+ super();
283
+ this._error = t;
284
+ }
285
+ is_ok() {
286
+ return false;
287
+ }
288
+ is_err() {
289
+ return true;
290
+ }
291
+ unwrap() {
292
+ throw new Error(`Result is Err: ${this._error}`);
293
+ }
294
+ unwrap_err() {
295
+ return this._error;
296
+ }
297
+ };
298
+
299
+ // src/utils/coerce-uint8.ts
300
+ var globalBuffer = globalThis;
301
+ function coerceIntoUint8(raw) {
302
+ if (raw instanceof ArrayBuffer) {
303
+ return Result.Ok(new Uint8Array(raw));
304
+ }
305
+ if (ArrayBuffer.isView(raw)) {
306
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
307
+ }
308
+ if (raw instanceof Blob) {
309
+ return Result.Err("Blob not supported");
310
+ }
311
+ if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
312
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
313
+ }
314
+ if (raw instanceof Uint8Array) {
315
+ return Result.Ok(raw);
316
+ }
317
+ if (Result.Is(raw)) {
318
+ if (raw.isErr()) {
319
+ return Result.Err(raw);
320
+ }
321
+ return coerceIntoUint8(raw.unwrap());
322
+ }
323
+ return Result.Err("Not a Uint8Array");
324
+ }
325
+ async function asyncCoerceIntoUint8(raw) {
326
+ let resolved = await raw;
327
+ if (resolved instanceof Blob) {
328
+ resolved = await resolved.arrayBuffer();
329
+ }
330
+ return coerceIntoUint8(resolved);
331
+ }
332
+
213
333
  // src/txt-en-decoder.ts
214
- var encoder = new TextEncoder();
215
- var decoder = new TextDecoder();
216
- var Utf8EnDecoder = class {
334
+ var TxtOps = class {
335
+ constructor() {
336
+ this.encoder = new TextEncoder();
337
+ this.decoder = new TextDecoder();
338
+ }
217
339
  encode(str) {
218
- return encoder.encode(str);
340
+ return this.encoder.encode(str);
219
341
  }
220
342
  decode(data) {
221
- return decoder.decode(data);
343
+ if (Result.Is(data)) {
344
+ if (data.isErr()) {
345
+ throw data.Err();
346
+ }
347
+ const unwrapped = data.unwrap();
348
+ if (typeof unwrapped === "string") {
349
+ return this.decode(unwrapped);
350
+ }
351
+ }
352
+ if (typeof data === "string") {
353
+ return data;
354
+ }
355
+ return this.decoder.decode(coerceIntoUint8(data).Ok());
356
+ }
357
+ async asyncDecode(data) {
358
+ let resolved = await data;
359
+ if (resolved instanceof Blob) {
360
+ resolved = await resolved.arrayBuffer();
361
+ }
362
+ return this.decode(resolved);
222
363
  }
223
364
  };
224
- var utf8EnDecoder = new Utf8EnDecoder();
225
- function Utf8EnDecoderSingleton() {
226
- return utf8EnDecoder;
365
+ var txtEnDecoder;
366
+ function TxtEnDecoderSingleton() {
367
+ txtEnDecoder = txtEnDecoder != null ? txtEnDecoder : new TxtOps();
368
+ return txtEnDecoder;
227
369
  }
228
370
 
229
371
  // src/utils/string2stream.ts
230
- function string2stream(str, ende = Utf8EnDecoderSingleton()) {
372
+ function string2stream(str, ende = TxtEnDecoderSingleton()) {
231
373
  return uint8array2stream(ende.encode(str));
232
374
  }
233
375
  function uint8array2stream(str) {
@@ -330,86 +472,6 @@ var FanoutWriteStream = class {
330
472
  }
331
473
  };
332
474
 
333
- // src/result.ts
334
- var Result = class _Result {
335
- static Ok(t) {
336
- return new ResultOK(t);
337
- }
338
- static Err(t) {
339
- if (typeof t === "string") {
340
- return new ResultError(new Error(t));
341
- }
342
- if (_Result.Is(t)) {
343
- if (t.is_ok()) {
344
- return new ResultError(new Error("Result Error is Ok"));
345
- }
346
- return t;
347
- }
348
- return new ResultError(t);
349
- }
350
- static Is(t) {
351
- if (!t) {
352
- return false;
353
- }
354
- if (t instanceof _Result) {
355
- return true;
356
- }
357
- const rt = t;
358
- if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === "function")) {
359
- return true;
360
- }
361
- return false;
362
- }
363
- isOk() {
364
- return this.is_ok();
365
- }
366
- isErr() {
367
- return this.is_err();
368
- }
369
- Ok() {
370
- return this.unwrap();
371
- }
372
- Err() {
373
- return this.unwrap_err();
374
- }
375
- };
376
- var ResultOK = class extends Result {
377
- constructor(t) {
378
- super();
379
- this._t = t;
380
- }
381
- is_ok() {
382
- return true;
383
- }
384
- is_err() {
385
- return false;
386
- }
387
- unwrap_err() {
388
- throw new Error("Result is Ok");
389
- }
390
- unwrap() {
391
- return this._t;
392
- }
393
- };
394
- var ResultError = class extends Result {
395
- constructor(t) {
396
- super();
397
- this._error = t;
398
- }
399
- is_ok() {
400
- return false;
401
- }
402
- is_err() {
403
- return true;
404
- }
405
- unwrap() {
406
- throw new Error(`Result is Err: ${this._error}`);
407
- }
408
- unwrap_err() {
409
- return this._error;
410
- }
411
- };
412
-
413
475
  // src/utils/get-params-result.ts
414
476
  var _REQUIRED = class {
415
477
  constructor() {
@@ -526,12 +588,42 @@ function localStripper(path, restrips, obj) {
526
588
  }
527
589
  return ret;
528
590
  }
591
+
592
+ // src/utils/sorted-object.ts
593
+ function toSortedObjectArray(set) {
594
+ if (!set) return [];
595
+ return toSortedArray(set).map(([k, v]) => ({ [k]: v }));
596
+ }
597
+ function toSortedArray(set) {
598
+ if (!set) return [];
599
+ return Object.entries(set).sort(([a], [b]) => a.localeCompare(b));
600
+ }
601
+ function toSortedObject(set) {
602
+ if (!set) return set;
603
+ return Object.fromEntries(toSortedArray(set));
604
+ }
605
+
606
+ // src/utils/uint8array-equal.ts
607
+ function UInt8ArrayEqual(a, b) {
608
+ if (a.length !== b.length) {
609
+ return false;
610
+ }
611
+ for (let i = 0; i < a.length; i++) {
612
+ if (a[i] !== b[i]) {
613
+ return false;
614
+ }
615
+ }
616
+ return true;
617
+ }
529
618
  // Annotate the CommonJS export names for ESM import in node:
530
619
  0 && (module.exports = {
531
620
  ConsoleWriterStream,
532
621
  ConsoleWriterStreamDefaultWriter,
533
622
  FanoutWriteStream,
623
+ UInt8ArrayEqual,
534
624
  array2stream,
625
+ asyncCoerceIntoUint8,
626
+ coerceIntoUint8,
535
627
  devnull,
536
628
  getParamsResult,
537
629
  param,
@@ -543,6 +635,9 @@ function localStripper(path, restrips, obj) {
543
635
  streamMap,
544
636
  string2stream,
545
637
  stripper,
638
+ toSortedArray,
639
+ toSortedObject,
640
+ toSortedObjectArray,
546
641
  uint8array2stream
547
642
  });
548
643
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/utils/index.ts","../../../src/utils/stream-map.ts","../../../src/utils/rebuffer.ts","../../../src/utils/stream2string.ts","../../../src/txt-en-decoder.ts","../../../src/utils/string2stream.ts","../../../src/utils/console-write-stream.ts","../../../src/utils/fanout-write-stream.ts","../../../src/result.ts","../../../src/utils/get-params-result.ts","../../../src/utils/stripper.ts"],"sourcesContent":["export * from \"./rebuffer.js\";\nexport * from \"./stream-map.js\";\nexport * from \"./stream2string.js\";\nexport * from \"./string2stream.js\";\nexport * from \"./console-write-stream.js\";\nexport * from \"./fanout-write-stream.js\";\nexport * from \"./get-params-result.js\";\nexport * from \"./stripper.js\";\n","export interface StreamMap<T, U> {\n Map(s: T, idx: number): U | Promise<U>;\n readonly Close?: () => void;\n}\nexport function streamMap<T, U>(s: ReadableStream<T>, sm: StreamMap<T, U>): ReadableStream<U> {\n const state = { reader: s.getReader(), streamMap: sm, idx: 0 };\n return new ReadableStream<U>({\n async pull(controller): Promise<void> {\n const { done, value } = await state.reader.read();\n if (done) {\n if (state.streamMap.Close) {\n state.streamMap.Close();\n }\n controller.close();\n return;\n }\n const promiseOrU = state.streamMap.Map(value, state.idx++);\n let mapped: U;\n if (promiseOrU instanceof Promise || typeof (promiseOrU as { then: () => void }).then === \"function\") {\n mapped = await promiseOrU;\n } else {\n mapped = promiseOrU;\n }\n controller.enqueue(mapped);\n },\n });\n}\n\nexport async function devnull<T>(a: ReadableStream<T>): Promise<number> {\n const reader = a.getReader();\n let cnt = 0;\n while (true) {\n const { done } = await reader.read();\n if (done) {\n break;\n }\n cnt++;\n }\n return cnt;\n}\n\nexport function array2stream<T>(a: T[]): ReadableStream<T> {\n let i = 0;\n return new ReadableStream<T>({\n pull(controller): void {\n if (i >= a.length) {\n controller.close();\n return;\n }\n controller.enqueue(a[i]);\n i++;\n },\n });\n}\n\nexport async function stream2array<T>(a: ReadableStream<T>): Promise<T[]> {\n const ret: T[] = [];\n const reader = a.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n ret.push(value);\n }\n return ret;\n}\n","import { array2stream, stream2array } from \"./stream-map.js\";\n\ninterface ReChunkResult {\n readonly rest: Uint8Array;\n readonly chunk: Uint8Array;\n}\n\nexport async function rebufferArray(a: Uint8Array[], chunkSize: number): Promise<Uint8Array[]> {\n return stream2array(rebuffer(array2stream(a), chunkSize));\n}\n\nfunction reChunk(cs: Uint8Array[], chunkSize: number): ReChunkResult {\n const len = cs.reduce((acc, v) => acc + v.length, 0);\n const last = cs[cs.length - 1];\n const lastOfs = len - last.length;\n // console.log(\"reChunk\", len, lastOfs, last.length, chunkSize, chunkSize - lastOfs)\n const rest = last.subarray(chunkSize - lastOfs);\n cs[cs.length - 1] = last.subarray(0, chunkSize - lastOfs);\n const chunk = new Uint8Array(chunkSize);\n let ofs = 0;\n for (const c of cs) {\n chunk.set(c, ofs);\n ofs += c.length;\n }\n return { rest, chunk };\n}\n\ninterface pumpState {\n readonly reader: ReadableStreamDefaultReader<Uint8Array>;\n tmp: Uint8Array[];\n tmpLen: number;\n readonly chunkSize: number;\n}\n\nfunction pump(ps: pumpState, controller: ReadableStreamDefaultController<Uint8Array>, next: () => void): void {\n ps.reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n if (ps.tmpLen > 0) {\n controller.enqueue(reChunk(ps.tmp, ps.tmpLen).chunk);\n }\n controller.close();\n next();\n return;\n }\n if (ps.tmpLen + value.length > ps.chunkSize) {\n ps.tmp.push(value);\n const res = reChunk(ps.tmp, ps.chunkSize);\n controller.enqueue(res.chunk);\n ps.tmp = [res.rest];\n ps.tmpLen = res.rest.length;\n next();\n return;\n } else if (value.length) {\n ps.tmp.push(value);\n ps.tmpLen += value.length;\n }\n pump(ps, controller, next);\n })\n .catch((err) => {\n controller.error(err);\n next();\n });\n}\n\nexport function rebuffer(a: ReadableStream<Uint8Array>, chunkSize: number): ReadableStream<Uint8Array> {\n const state: pumpState = {\n reader: a.getReader(),\n tmp: [],\n tmpLen: 0,\n chunkSize,\n };\n return new ReadableStream<Uint8Array>({\n async pull(controller): Promise<void> {\n return new Promise<void>((resolve) => {\n pump(state, controller, resolve);\n });\n },\n });\n}\n","export async function stream2string(stream?: ReadableStream<Uint8Array> | null, maxSize?: number): Promise<string> {\n if (!stream) {\n return Promise.resolve(\"\");\n }\n const reader = stream.getReader();\n let res = \"\";\n const decoder = new TextDecoder();\n let rSize = 0;\n while (typeof maxSize === \"undefined\" || rSize < maxSize) {\n try {\n const read = await reader.read();\n if (read.done) {\n break;\n }\n if (maxSize && rSize + read.value.length > maxSize) {\n read.value = read.value.slice(0, maxSize - rSize);\n }\n const block = decoder.decode(read.value, { stream: true });\n rSize += read.value.length;\n res += block;\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n\nexport async function stream2uint8array(stream?: ReadableStream<Uint8Array> | null): Promise<Uint8Array> {\n if (!stream) {\n return Promise.resolve(new Uint8Array());\n }\n const reader = stream.getReader();\n let res = new Uint8Array();\n // eslint-disable-next-line no-constant-condition\n while (1) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n res = new Uint8Array([...res, ...value]);\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n","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 { TxtEnDecoder, Utf8EnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport function string2stream(str: string, ende: TxtEnDecoder = Utf8EnDecoderSingleton()): ReadableStream<Uint8Array> {\n return uint8array2stream(ende.encode(str));\n}\n\nexport function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(str);\n controller.close();\n },\n });\n}\n","export class ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder: TextDecoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n write(chunk?: Uint8Array): Promise<void> {\n let strObj: string | { level: string } = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n strObj = JSON.parse(strObj) as { level: string };\n output = strObj.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(strObj);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(strObj);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(strObj);\n }\n return Promise.resolve();\n }\n}\n\nexport class ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n close(): Promise<void> {\n return Promise.resolve();\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n","export class FanoutWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n","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","export type StripCommand = string | RegExp;\n\nexport function stripper<T extends ArrayLike<S> | S, S>(\n strip: StripCommand | StripCommand[],\n obj: T,\n): T extends ArrayLike<unknown> ? Record<string, unknown>[] : Record<string, unknown> {\n const strips = Array.isArray(strip) ? strip : [strip];\n const restrips = strips.map((s) => {\n if (typeof s === \"string\") {\n const escaped = s.replace(/[-\\\\[\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\^\\\\$\\\\|]/g, \"\\\\$&\");\n return new RegExp(`^${escaped}$`);\n }\n return s;\n });\n return localStripper(undefined, restrips, obj) as T extends ArrayLike<unknown>\n ? Record<string, unknown>[]\n : Record<string, unknown>;\n}\n\nfunction localStripper<T>(path: string | undefined, restrips: RegExp[], obj: T): unknown {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((i) => localStripper(path, restrips, i));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ret = { ...obj } as Record<string, any>;\n const matcher = (key: string, nextPath: string): boolean => {\n for (const re of restrips) {\n if (re.test(key) || re.test(nextPath)) {\n return true;\n }\n }\n return false;\n };\n for (const key in ret) {\n if (Object.prototype.hasOwnProperty.call(ret, key)) {\n let nextPath: string;\n if (path) {\n nextPath = [path, key].join(\".\");\n } else {\n nextPath = key;\n }\n if (matcher(key, nextPath)) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete ret[key];\n continue;\n }\n if (typeof ret[key] === \"object\") {\n if (Array.isArray(ret[key])) {\n ret[key] = ret[key].reduce((acc: unknown[], v, i) => {\n const toDelete = matcher(key, `${nextPath}[${i}]`);\n if (!toDelete) {\n acc.push(localStripper(`${nextPath}[${i}]`, restrips, v));\n }\n return acc;\n }, []);\n } else {\n ret[key] = localStripper(nextPath, restrips, ret[key]);\n }\n }\n }\n }\n return ret;\n}\n"],"mappings":"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","names":["decoder","keys"]}
1
+ {"version":3,"sources":["../../../src/utils/index.ts","../../../src/utils/stream-map.ts","../../../src/utils/rebuffer.ts","../../../src/utils/stream2string.ts","../../../src/result.ts","../../../src/utils/coerce-uint8.ts","../../../src/txt-en-decoder.ts","../../../src/utils/string2stream.ts","../../../src/utils/console-write-stream.ts","../../../src/utils/fanout-write-stream.ts","../../../src/utils/get-params-result.ts","../../../src/utils/stripper.ts","../../../src/utils/sorted-object.ts","../../../src/utils/uint8array-equal.ts"],"sourcesContent":["export * from \"./rebuffer.js\";\nexport * from \"./stream-map.js\";\nexport * from \"./stream2string.js\";\nexport * from \"./string2stream.js\";\nexport * from \"./console-write-stream.js\";\nexport * from \"./fanout-write-stream.js\";\nexport * from \"./get-params-result.js\";\nexport * from \"./stripper.js\";\nexport * from \"./sorted-object.js\";\nexport * from \"./uint8array-equal.js\";\nexport * from \"./coerce-uint8.js\";\n","export interface StreamMap<T, U> {\n Map(s: T, idx: number): U | Promise<U>;\n readonly Close?: () => void;\n}\nexport function streamMap<T, U>(s: ReadableStream<T>, sm: StreamMap<T, U>): ReadableStream<U> {\n const state = { reader: s.getReader(), streamMap: sm, idx: 0 };\n return new ReadableStream<U>({\n async pull(controller): Promise<void> {\n const { done, value } = await state.reader.read();\n if (done) {\n if (state.streamMap.Close) {\n state.streamMap.Close();\n }\n controller.close();\n return;\n }\n const promiseOrU = state.streamMap.Map(value, state.idx++);\n let mapped: U;\n if (promiseOrU instanceof Promise || typeof (promiseOrU as { then: () => void }).then === \"function\") {\n mapped = await promiseOrU;\n } else {\n mapped = promiseOrU;\n }\n controller.enqueue(mapped);\n },\n });\n}\n\nexport async function devnull<T>(a: ReadableStream<T>): Promise<number> {\n const reader = a.getReader();\n let cnt = 0;\n while (true) {\n const { done } = await reader.read();\n if (done) {\n break;\n }\n cnt++;\n }\n return cnt;\n}\n\nexport function array2stream<T>(a: T[]): ReadableStream<T> {\n let i = 0;\n return new ReadableStream<T>({\n pull(controller): void {\n if (i >= a.length) {\n controller.close();\n return;\n }\n controller.enqueue(a[i]);\n i++;\n },\n });\n}\n\nexport async function stream2array<T>(a: ReadableStream<T>): Promise<T[]> {\n const ret: T[] = [];\n const reader = a.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n ret.push(value);\n }\n return ret;\n}\n","import { array2stream, stream2array } from \"./stream-map.js\";\n\ninterface ReChunkResult {\n readonly rest: Uint8Array;\n readonly chunk: Uint8Array;\n}\n\nexport async function rebufferArray(a: Uint8Array[], chunkSize: number): Promise<Uint8Array[]> {\n return stream2array(rebuffer(array2stream(a), chunkSize));\n}\n\nfunction reChunk(cs: Uint8Array[], chunkSize: number): ReChunkResult {\n const len = cs.reduce((acc, v) => acc + v.length, 0);\n const last = cs[cs.length - 1];\n const lastOfs = len - last.length;\n // console.log(\"reChunk\", len, lastOfs, last.length, chunkSize, chunkSize - lastOfs)\n const rest = last.subarray(chunkSize - lastOfs);\n cs[cs.length - 1] = last.subarray(0, chunkSize - lastOfs);\n const chunk = new Uint8Array(chunkSize);\n let ofs = 0;\n for (const c of cs) {\n chunk.set(c, ofs);\n ofs += c.length;\n }\n return { rest, chunk };\n}\n\ninterface pumpState {\n readonly reader: ReadableStreamDefaultReader<Uint8Array>;\n tmp: Uint8Array[];\n tmpLen: number;\n readonly chunkSize: number;\n}\n\nfunction pump(ps: pumpState, controller: ReadableStreamDefaultController<Uint8Array>, next: () => void): void {\n ps.reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n if (ps.tmpLen > 0) {\n controller.enqueue(reChunk(ps.tmp, ps.tmpLen).chunk);\n }\n controller.close();\n next();\n return;\n }\n if (ps.tmpLen + value.length > ps.chunkSize) {\n ps.tmp.push(value);\n const res = reChunk(ps.tmp, ps.chunkSize);\n controller.enqueue(res.chunk);\n ps.tmp = [res.rest];\n ps.tmpLen = res.rest.length;\n next();\n return;\n } else if (value.length) {\n ps.tmp.push(value);\n ps.tmpLen += value.length;\n }\n pump(ps, controller, next);\n })\n .catch((err) => {\n controller.error(err);\n next();\n });\n}\n\nexport function rebuffer(a: ReadableStream<Uint8Array>, chunkSize: number): ReadableStream<Uint8Array> {\n const state: pumpState = {\n reader: a.getReader(),\n tmp: [],\n tmpLen: 0,\n chunkSize,\n };\n return new ReadableStream<Uint8Array>({\n async pull(controller): Promise<void> {\n return new Promise<void>((resolve) => {\n pump(state, controller, resolve);\n });\n },\n });\n}\n","export async function stream2string(stream?: ReadableStream<Uint8Array> | null, maxSize?: number): Promise<string> {\n if (!stream) {\n return Promise.resolve(\"\");\n }\n const reader = stream.getReader();\n let res = \"\";\n const decoder = new TextDecoder();\n let rSize = 0;\n while (typeof maxSize === \"undefined\" || rSize < maxSize) {\n try {\n const read = await reader.read();\n if (read.done) {\n break;\n }\n if (maxSize && rSize + read.value.length > maxSize) {\n read.value = read.value.slice(0, maxSize - rSize);\n }\n const block = decoder.decode(read.value, { stream: true });\n rSize += read.value.length;\n res += block;\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n\nexport async function stream2uint8array(stream?: ReadableStream<Uint8Array> | null): Promise<Uint8Array> {\n if (!stream) {\n return Promise.resolve(new Uint8Array());\n }\n const reader = stream.getReader();\n let res = new Uint8Array();\n // eslint-disable-next-line no-constant-condition\n while (1) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n res = new Uint8Array([...res, ...value]);\n } catch (err) {\n return Promise.reject(err as Error);\n }\n }\n return Promise.resolve(res);\n}\n","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\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 TxtOps implements TxtEnDecoder {\n readonly encoder = new TextEncoder();\n readonly decoder = new TextDecoder();\n\n encode(str: string): Uint8Array {\n return this.encoder.encode(str);\n }\n decode(data: ToEnDecoder): string {\n if (Result.Is(data)) {\n if (data.isErr()) {\n throw data.Err();\n }\n // only for string let do coerceInto the work\n const unwrapped = data.unwrap();\n if (typeof unwrapped === \"string\") {\n return this.decode(unwrapped);\n }\n }\n if (typeof data === \"string\") {\n return data;\n }\n return this.decoder.decode(coerceIntoUint8(data as ToUInt8).Ok());\n }\n\n async asyncDecode(data: AsyncToEnDecoder): Promise<string> {\n let resolved = await data;\n if (resolved instanceof Blob) {\n resolved = await resolved.arrayBuffer();\n }\n return this.decode(resolved);\n }\n}\n\nlet txtEnDecoder: TxtEnDecoder;\nexport function TxtEnDecoderSingleton(): TxtEnDecoder {\n txtEnDecoder = txtEnDecoder ?? new TxtOps();\n return txtEnDecoder;\n}\n","import { TxtEnDecoder, TxtEnDecoderSingleton } from \"../txt-en-decoder.js\";\n\nexport function string2stream(str: string, ende: TxtEnDecoder = TxtEnDecoderSingleton()): ReadableStream<Uint8Array> {\n return uint8array2stream(ende.encode(str));\n}\n\nexport function uint8array2stream(str: Uint8Array): ReadableStream<Uint8Array> {\n return new ReadableStream<Uint8Array>({\n start(controller): void {\n controller.enqueue(str);\n controller.close();\n },\n });\n}\n","export class ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder: TextDecoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n write(chunk?: Uint8Array): Promise<void> {\n let strObj: string | { level: string } = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n strObj = JSON.parse(strObj) as { level: string };\n output = strObj.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(strObj);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(strObj);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(strObj);\n }\n return Promise.resolve();\n }\n}\n\nexport class ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n close(): Promise<void> {\n return Promise.resolve();\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n","export class FanoutWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n","import { 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","export type StripCommand = string | RegExp;\n\nexport function stripper<T extends ArrayLike<S> | S, S>(\n strip: StripCommand | StripCommand[],\n obj: T,\n): T extends ArrayLike<unknown> ? Record<string, unknown>[] : Record<string, unknown> {\n const strips = Array.isArray(strip) ? strip : [strip];\n const restrips = strips.map((s) => {\n if (typeof s === \"string\") {\n const escaped = s.replace(/[-\\\\[\\]\\\\/\\\\{\\\\}\\\\(\\\\)\\\\*\\\\+\\\\?\\\\.\\\\\\\\^\\\\$\\\\|]/g, \"\\\\$&\");\n return new RegExp(`^${escaped}$`);\n }\n return s;\n });\n return localStripper(undefined, restrips, obj) as T extends ArrayLike<unknown>\n ? Record<string, unknown>[]\n : Record<string, unknown>;\n}\n\nfunction localStripper<T>(path: string | undefined, restrips: RegExp[], obj: T): unknown {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n if (Array.isArray(obj)) {\n return obj.map((i) => localStripper(path, restrips, i));\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const ret = { ...obj } as Record<string, any>;\n const matcher = (key: string, nextPath: string): boolean => {\n for (const re of restrips) {\n if (re.test(key) || re.test(nextPath)) {\n return true;\n }\n }\n return false;\n };\n for (const key in ret) {\n if (Object.prototype.hasOwnProperty.call(ret, key)) {\n let nextPath: string;\n if (path) {\n nextPath = [path, key].join(\".\");\n } else {\n nextPath = key;\n }\n if (matcher(key, nextPath)) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete ret[key];\n continue;\n }\n if (typeof ret[key] === \"object\") {\n if (Array.isArray(ret[key])) {\n ret[key] = ret[key].reduce((acc: unknown[], v, i) => {\n const toDelete = matcher(key, `${nextPath}[${i}]`);\n if (!toDelete) {\n acc.push(localStripper(`${nextPath}[${i}]`, restrips, v));\n }\n return acc;\n }, []);\n } else {\n ret[key] = localStripper(nextPath, restrips, ret[key]);\n }\n }\n }\n }\n return ret;\n}\n","export function toSortedObjectArray<T>(set?: T): Record<string, unknown>[] {\n if (!set) return [];\n return toSortedArray(set).map(([k, v]) => ({ [k]: v }));\n}\n\nexport function toSortedArray<T>(set?: T): [string, unknown][] {\n if (!set) return [];\n return Object.entries(set).sort(([a], [b]) => a.localeCompare(b));\n}\n\nexport function toSortedObject<S, T extends NonNullable<S>>(set?: T): T {\n if (!set) return set as T;\n return Object.fromEntries(toSortedArray(set)) as T;\n // return toSortedArray(set).reduce((acc, cur) => {\n // acc[cur[0]] = cur[1];\n // return acc\n // }, {} as Record<string, unknown>) as T;\n}\n","export function UInt8ArrayEqual(a: Uint8Array, b: Uint8Array): boolean {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":"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","names":["keys"]}
package/utils/index.d.cts CHANGED
@@ -1,3 +1,3 @@
1
- export { i as ConsoleWriterStream, C as ConsoleWriterStreamDefaultWriter, F as FanoutWriteStream, S as StreamMap, b as array2stream, d as devnull, a as rebuffer, r as rebufferArray, c as stream2array, e as stream2string, f as stream2uint8array, s as streamMap, g as string2stream, h as uint8array2stream } from '../index-TZQHtEZo.cjs';
2
- export { K as KeysParam, M as MsgFn, P as Param, g as getParamsResult, p as param } from '../get-params-result-Bhy5997x.cjs';
1
+ export { i as ConsoleWriterStream, C as ConsoleWriterStreamDefaultWriter, F as FanoutWriteStream, S as StreamMap, U as UInt8ArrayEqual, b as array2stream, d as devnull, a as rebuffer, r as rebufferArray, c as stream2array, e as stream2string, f as stream2uint8array, s as streamMap, g as string2stream, j as toSortedArray, k as toSortedObject, t as toSortedObjectArray, h as uint8array2stream } from '../index-Dpc3oVOD.cjs';
2
+ export { A as AsyncToUInt8, K as KeysParam, M as MsgFn, P as Param, a as ToUInt8, b as ToUInt8Async, c as ToUInt8Plain, d as asyncCoerceIntoUint8, e as coerceIntoUint8, g as getParamsResult, p as param } from '../get-params-result-C2cbgB78.cjs';
3
3
  export { S as StripCommand, s as stripper } from '../stripper-BpBUUZ9p.cjs';
package/utils/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { i as ConsoleWriterStream, C as ConsoleWriterStreamDefaultWriter, F as FanoutWriteStream, S as StreamMap, b as array2stream, d as devnull, a as rebuffer, r as rebufferArray, c as stream2array, e as stream2string, f as stream2uint8array, s as streamMap, g as string2stream, h as uint8array2stream } from '../index-DjN6Y4N2.js';
2
- export { K as KeysParam, M as MsgFn, P as Param, g as getParamsResult, p as param } from '../get-params-result-Bhy5997x.js';
1
+ export { i as ConsoleWriterStream, C as ConsoleWriterStreamDefaultWriter, F as FanoutWriteStream, S as StreamMap, U as UInt8ArrayEqual, b as array2stream, d as devnull, a as rebuffer, r as rebufferArray, c as stream2array, e as stream2string, f as stream2uint8array, s as streamMap, g as string2stream, j as toSortedArray, k as toSortedObject, t as toSortedObjectArray, h as uint8array2stream } from '../index-MWn9Xel9.js';
2
+ export { A as AsyncToUInt8, K as KeysParam, M as MsgFn, P as Param, a as ToUInt8, b as ToUInt8Async, c as ToUInt8Plain, d as asyncCoerceIntoUint8, e as coerceIntoUint8, g as getParamsResult, p as param } from '../get-params-result-C2cbgB78.js';
3
3
  export { S as StripCommand, s as stripper } from '../stripper-BpBUUZ9p.js';
package/utils/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import {
2
+ UInt8ArrayEqual,
2
3
  array2stream,
3
4
  devnull,
4
5
  rebuffer,
@@ -8,8 +9,11 @@ import {
8
9
  stream2uint8array,
9
10
  streamMap,
10
11
  string2stream,
12
+ toSortedArray,
13
+ toSortedObject,
14
+ toSortedObjectArray,
11
15
  uint8array2stream
12
- } from "../chunk-N5ISHPJ6.js";
16
+ } from "../chunk-W53WEZWY.js";
13
17
  import {
14
18
  ConsoleWriterStream,
15
19
  ConsoleWriterStreamDefaultWriter,
@@ -17,14 +21,19 @@ import {
17
21
  stripper
18
22
  } from "../chunk-PHS255C5.js";
19
23
  import {
24
+ asyncCoerceIntoUint8,
25
+ coerceIntoUint8,
20
26
  getParamsResult,
21
27
  param
22
- } from "../chunk-QDDO6NOK.js";
28
+ } from "../chunk-A57BAYWU.js";
23
29
  export {
24
30
  ConsoleWriterStream,
25
31
  ConsoleWriterStreamDefaultWriter,
26
32
  FanoutWriteStream,
33
+ UInt8ArrayEqual,
27
34
  array2stream,
35
+ asyncCoerceIntoUint8,
36
+ coerceIntoUint8,
28
37
  devnull,
29
38
  getParamsResult,
30
39
  param,
@@ -36,6 +45,9 @@ export {
36
45
  streamMap,
37
46
  string2stream,
38
47
  stripper,
48
+ toSortedArray,
49
+ toSortedObject,
50
+ toSortedObjectArray,
39
51
  uint8array2stream
40
52
  };
41
53
  //# sourceMappingURL=index.js.map
package/web/index.cjs CHANGED
@@ -160,14 +160,14 @@ var BaseSysAbstraction = class {
160
160
  this._fileSystem = params.FileSystem;
161
161
  this._systemService = params.SystemService;
162
162
  this._txtEnDe = params.TxtEnDecoder;
163
- const decoder2 = this._txtEnDe;
163
+ const decoder = this._txtEnDe;
164
164
  this._stdout = CFWriteableStream((chunk) => {
165
- const decoded = decoder2.decode(chunk);
165
+ const decoded = decoder.decode(chunk);
166
166
  console.log(decoded.trimEnd());
167
167
  return Promise.resolve();
168
168
  });
169
169
  this._stderr = CFWriteableStream((chunk) => {
170
- const decoded = decoder2.decode(chunk);
170
+ const decoded = decoder.decode(chunk);
171
171
  console.error(decoded.trimEnd());
172
172
  return Promise.resolve();
173
173
  });
@@ -851,20 +851,69 @@ var EnvImpl = class {
851
851
  }
852
852
  };
853
853
 
854
+ // src/utils/coerce-uint8.ts
855
+ var globalBuffer = globalThis;
856
+ function coerceIntoUint8(raw) {
857
+ if (raw instanceof ArrayBuffer) {
858
+ return Result.Ok(new Uint8Array(raw));
859
+ }
860
+ if (ArrayBuffer.isView(raw)) {
861
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
862
+ }
863
+ if (raw instanceof Blob) {
864
+ return Result.Err("Blob not supported");
865
+ }
866
+ if (globalBuffer.Buffer && globalBuffer.Buffer.isBuffer(raw)) {
867
+ return Result.Ok(new Uint8Array(raw.buffer, raw.byteOffset, raw.byteLength));
868
+ }
869
+ if (raw instanceof Uint8Array) {
870
+ return Result.Ok(raw);
871
+ }
872
+ if (Result.Is(raw)) {
873
+ if (raw.isErr()) {
874
+ return Result.Err(raw);
875
+ }
876
+ return coerceIntoUint8(raw.unwrap());
877
+ }
878
+ return Result.Err("Not a Uint8Array");
879
+ }
880
+
854
881
  // src/txt-en-decoder.ts
855
- var encoder = new TextEncoder();
856
- var decoder = new TextDecoder();
857
- var Utf8EnDecoder = class {
882
+ var TxtOps = class {
883
+ constructor() {
884
+ this.encoder = new TextEncoder();
885
+ this.decoder = new TextDecoder();
886
+ }
858
887
  encode(str) {
859
- return encoder.encode(str);
888
+ return this.encoder.encode(str);
860
889
  }
861
890
  decode(data) {
862
- return decoder.decode(data);
891
+ if (Result.Is(data)) {
892
+ if (data.isErr()) {
893
+ throw data.Err();
894
+ }
895
+ const unwrapped = data.unwrap();
896
+ if (typeof unwrapped === "string") {
897
+ return this.decode(unwrapped);
898
+ }
899
+ }
900
+ if (typeof data === "string") {
901
+ return data;
902
+ }
903
+ return this.decoder.decode(coerceIntoUint8(data).Ok());
904
+ }
905
+ async asyncDecode(data) {
906
+ let resolved = await data;
907
+ if (resolved instanceof Blob) {
908
+ resolved = await resolved.arrayBuffer();
909
+ }
910
+ return this.decode(resolved);
863
911
  }
864
912
  };
865
- var utf8EnDecoder = new Utf8EnDecoder();
866
- function Utf8EnDecoderSingleton() {
867
- return utf8EnDecoder;
913
+ var txtEnDecoder;
914
+ function TxtEnDecoderSingleton() {
915
+ txtEnDecoder = txtEnDecoder != null ? txtEnDecoder : new TxtOps();
916
+ return txtEnDecoder;
868
917
  }
869
918
 
870
919
  // src/web/web-sys-abstraction.ts
@@ -933,7 +982,7 @@ var my = void 0;
933
982
  function WebSysAbstraction(param2) {
934
983
  if (!my) {
935
984
  my = new BaseSysAbstraction({
936
- TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || Utf8EnDecoderSingleton(),
985
+ TxtEnDecoder: (param2 == null ? void 0 : param2.TxtEnDecoder) || TxtEnDecoderSingleton(),
937
986
  FileSystem: new WebFileService(),
938
987
  SystemService: new WebSystemService()
939
988
  });