@adviser/cement 0.3.20 → 0.4.1

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 (178) 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-PHS255C5.js → chunk-FOALXQST.js} +1 -68
  10. package/chunk-FOALXQST.js.map +1 -0
  11. package/{chunk-UEER5ZC2.js → chunk-NPMIRK4R.js} +8 -22
  12. package/chunk-NPMIRK4R.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-BhmvYS_t.d.ts → index-N0bkrgSt.d.ts} +2 -2
  25. package/{index-DoK1OTgQ.d.cts → index-TtYD7HhB.d.cts} +2 -2
  26. package/index.cjs +1935 -1806
  27. package/index.cjs.map +1 -1
  28. package/index.d.cts +15 -8
  29. package/index.d.ts +15 -8
  30. package/index.js +58 -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 +5 -5
  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/coerce-binary.ts +39 -0
  46. package/src/deno/deno-basic-sys-abstraction.ts +39 -0
  47. package/src/deno/deno-file-service.ts +1 -1
  48. package/src/deno/deno-sys-abstraction.ts +19 -22
  49. package/src/index.ts +1 -0
  50. package/src/jsr.json +1 -1
  51. package/src/log-writer-impl.ts +6 -0
  52. package/src/logger-impl.ts +18 -20
  53. package/src/node/node-basic-sys-abstraction.ts +59 -0
  54. package/src/node/node-sys-abstraction.ts +19 -22
  55. package/src/sys-abstraction.ts +12 -6
  56. package/src/test/mock-logger.ts +2 -2
  57. package/src/txt-en-decoder.ts +3 -3
  58. package/src/web/index.ts +1 -1
  59. package/src/web/web-basic-sys-abstraction.ts +105 -0
  60. package/{sys-abstraction-B0x6IE7r.d.ts → sys-abstraction-CeAxxg9H.d.ts} +11 -7
  61. package/{sys-abstraction-BTs3Vzy4.d.cts → sys-abstraction-DDAwGTnk.d.cts} +11 -7
  62. package/test/index.cjs +1146 -1085
  63. package/test/index.cjs.map +1 -1
  64. package/test/index.d.cts +2 -2
  65. package/test/index.d.ts +2 -2
  66. package/test/index.js +4 -5
  67. package/ts/smoke/smoke.js +7 -8
  68. package/ts/smoke/smoke.js.map +1 -1
  69. package/ts/src/base-basic-sys-abstraction.test.d.ts +2 -0
  70. package/ts/src/base-basic-sys-abstraction.test.d.ts.map +1 -0
  71. package/ts/src/{base-sys-abstraction.test.js → base-basic-sys-abstraction.test.js} +9 -9
  72. package/ts/src/base-basic-sys-abstraction.test.js.map +1 -0
  73. package/ts/src/base-sys-abstraction.d.ts +33 -21
  74. package/ts/src/base-sys-abstraction.d.ts.map +1 -1
  75. package/ts/src/base-sys-abstraction.js +54 -67
  76. package/ts/src/base-sys-abstraction.js.map +1 -1
  77. package/ts/src/cf/cf-basic-sys-abstraction.d.ts +14 -0
  78. package/ts/src/cf/cf-basic-sys-abstraction.d.ts.map +1 -0
  79. package/ts/src/cf/cf-basic-sys-abstraction.js +67 -0
  80. package/ts/src/cf/cf-basic-sys-abstraction.js.map +1 -0
  81. package/ts/src/cf/index.d.ts +1 -1
  82. package/ts/src/cf/index.d.ts.map +1 -1
  83. package/ts/src/cf/index.js +1 -1
  84. package/ts/src/cf/index.js.map +1 -1
  85. package/ts/src/cf-test-main.d.ts.map +1 -1
  86. package/ts/src/cf-test-main.js +7 -1
  87. package/ts/src/cf-test-main.js.map +1 -1
  88. package/ts/src/coerce-binary.d.ts +6 -0
  89. package/ts/src/coerce-binary.d.ts.map +1 -0
  90. package/ts/src/coerce-binary.js +32 -0
  91. package/ts/src/coerce-binary.js.map +1 -0
  92. package/ts/src/coerce-binary.test.d.ts +2 -0
  93. package/ts/src/coerce-binary.test.d.ts.map +1 -0
  94. package/ts/src/coerce-binary.test.js +39 -0
  95. package/ts/src/coerce-binary.test.js.map +1 -0
  96. package/ts/src/deno/deno-basic-sys-abstraction.d.ts +14 -0
  97. package/ts/src/deno/deno-basic-sys-abstraction.d.ts.map +1 -0
  98. package/ts/src/deno/deno-basic-sys-abstraction.js +35 -0
  99. package/ts/src/deno/deno-basic-sys-abstraction.js.map +1 -0
  100. package/ts/src/deno/deno-file-service.d.ts +1 -1
  101. package/ts/src/deno/deno-file-service.d.ts.map +1 -1
  102. package/ts/src/deno/deno-sys-abstraction.d.ts +3 -6
  103. package/ts/src/deno/deno-sys-abstraction.d.ts.map +1 -1
  104. package/ts/src/deno/deno-sys-abstraction.js +13 -17
  105. package/ts/src/deno/deno-sys-abstraction.js.map +1 -1
  106. package/ts/src/index.d.ts +1 -0
  107. package/ts/src/index.d.ts.map +1 -1
  108. package/ts/src/index.js +1 -0
  109. package/ts/src/index.js.map +1 -1
  110. package/ts/src/log-writer-impl.d.ts +1 -0
  111. package/ts/src/log-writer-impl.d.ts.map +1 -1
  112. package/ts/src/log-writer-impl.js +1 -0
  113. package/ts/src/log-writer-impl.js.map +1 -1
  114. package/ts/src/logger-impl.d.ts +4 -4
  115. package/ts/src/logger-impl.d.ts.map +1 -1
  116. package/ts/src/logger-impl.js +4 -19
  117. package/ts/src/logger-impl.js.map +1 -1
  118. package/ts/src/logger.test.js +3 -4
  119. package/ts/src/logger.test.js.map +1 -1
  120. package/ts/src/node/node-basic-sys-abstraction.d.ts +25 -0
  121. package/ts/src/node/node-basic-sys-abstraction.d.ts.map +1 -0
  122. package/ts/src/node/node-basic-sys-abstraction.js +44 -0
  123. package/ts/src/node/node-basic-sys-abstraction.js.map +1 -0
  124. package/ts/src/node/node-sys-abstraction.d.ts +3 -6
  125. package/ts/src/node/node-sys-abstraction.d.ts.map +1 -1
  126. package/ts/src/node/node-sys-abstraction.js +13 -17
  127. package/ts/src/node/node-sys-abstraction.js.map +1 -1
  128. package/ts/src/node/node-sys-abstraction.test.js +1 -1
  129. package/ts/src/node/node-sys-abstraction.test.js.map +1 -1
  130. package/ts/src/sys-abstraction.d.ts +10 -6
  131. package/ts/src/sys-abstraction.d.ts.map +1 -1
  132. package/ts/src/test/mock-logger.d.ts +2 -2
  133. package/ts/src/test/mock-logger.d.ts.map +1 -1
  134. package/ts/src/test/mock-logger.js.map +1 -1
  135. package/ts/src/tracer.test.js +5 -8
  136. package/ts/src/tracer.test.js.map +1 -1
  137. package/ts/src/txt-en-decoder.d.ts.map +1 -1
  138. package/ts/src/txt-en-decoder.js +3 -3
  139. package/ts/src/txt-en-decoder.js.map +1 -1
  140. package/ts/src/web/index.d.ts +1 -1
  141. package/ts/src/web/index.d.ts.map +1 -1
  142. package/ts/src/web/index.js +1 -1
  143. package/ts/src/web/index.js.map +1 -1
  144. package/ts/src/web/web-basic-sys-abstraction.d.ts +4 -0
  145. package/ts/src/web/web-basic-sys-abstraction.d.ts.map +1 -0
  146. package/ts/src/web/web-basic-sys-abstraction.js +45 -0
  147. package/ts/src/web/web-basic-sys-abstraction.js.map +1 -0
  148. package/utils/index.cjs +132 -3
  149. package/utils/index.cjs.map +1 -1
  150. package/utils/index.js +5 -5
  151. package/web/index.cjs +277 -281
  152. package/web/index.cjs.map +1 -1
  153. package/web/index.d.cts +4 -17
  154. package/web/index.d.ts +4 -17
  155. package/web/index.js +4 -7
  156. package/base-sys-abstraction-BnBZ6zd0.d.ts +0 -84
  157. package/base-sys-abstraction-DAZ8tx5F.d.cts +0 -84
  158. package/chunk-23MCJYE6.js.map +0 -1
  159. package/chunk-H6MLKWIZ.js +0 -88
  160. package/chunk-H6MLKWIZ.js.map +0 -1
  161. package/chunk-LXTKPZ6M.js +0 -255
  162. package/chunk-LXTKPZ6M.js.map +0 -1
  163. package/chunk-PHS255C5.js.map +0 -1
  164. package/chunk-UEER5ZC2.js.map +0 -1
  165. package/src/cf/cf-sys-abstraction.ts +0 -34
  166. package/src/web/web-sys-abstraction.ts +0 -80
  167. package/ts/src/base-sys-abstraction.test.d.ts +0 -2
  168. package/ts/src/base-sys-abstraction.test.d.ts.map +0 -1
  169. package/ts/src/base-sys-abstraction.test.js.map +0 -1
  170. package/ts/src/cf/cf-sys-abstraction.d.ts +0 -11
  171. package/ts/src/cf/cf-sys-abstraction.d.ts.map +0 -1
  172. package/ts/src/cf/cf-sys-abstraction.js +0 -30
  173. package/ts/src/cf/cf-sys-abstraction.js.map +0 -1
  174. package/ts/src/web/web-sys-abstraction.d.ts +0 -18
  175. package/ts/src/web/web-sys-abstraction.d.ts.map +0 -1
  176. package/ts/src/web/web-sys-abstraction.js +0 -64
  177. package/ts/src/web/web-sys-abstraction.js.map +0 -1
  178. /package/{chunk-55W4AK2Z.js.map → chunk-YVACAIUX.js.map} +0 -0
package/index.d.cts CHANGED
@@ -1,16 +1,17 @@
1
- import { S as SysAbstraction, T as Time } from './sys-abstraction-BTs3Vzy4.cjs';
2
- export { D as Duration, E as Env, c as EnvActions, i as EnvFactoryFn, e as EnvFactoryOpts, d as EnvImpl, h as EnvMap, g as EnvTuple, F as FileService, I as IDMode, N as NamedWritableStream, O as OnSetItem, R as RandomMode, f as String2TimeMode, b as SystemService, a as TimeMode, l as TimeUnit, k as TimeUnits, V as VoidFunc, j as envFactory, r as registerEnvAction } from './sys-abstraction-BTs3Vzy4.cjs';
3
- import { L as LogFormatter, a as LogSerializable, b as LevelHandler, c as Logger, d as Level, F as FnSerialized, H as HttpType, C as CoerceURI, W as WithLogger, A as AsError, O as Option, e as Future } from './index-DoK1OTgQ.cjs';
4
- export { B as BuildURI, v as HostURIObject, I as IsLogger, k as Lengthed, p as LogCollector, f as LogValue, h as LogValueArg, i as LogValueState, o as LogWriteStream, n as LoggerInterface, t as MatchResult, q as MockLogger, M as MockLoggerReturn, x as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, D as URI, U as URIInterface, u as URIObject, s as WithoutOption, g as asyncLogValue, z as hasHostPartProtocols, y as isCoerceURI, w as isURL, l as logValue } from './index-DoK1OTgQ.cjs';
1
+ import { B as BasicSysAbstraction, T as Time } from './sys-abstraction-DDAwGTnk.cjs';
2
+ export { b as BasicRuntimeService, D as Duration, E as Env, c as EnvActions, j as EnvFactoryFn, e as EnvFactoryOpts, d as EnvImpl, i as EnvMap, h as EnvTuple, F as FileService, I as IDMode, N as NamedWritableStream, O as OnSetItem, R as RandomMode, f as RuntimeSysAbstraction, g as String2TimeMode, S as SystemService, a as TimeMode, m as TimeUnit, l as TimeUnits, V as VoidFunc, k as envFactory, r as registerEnvAction } from './sys-abstraction-DDAwGTnk.cjs';
3
+ import { L as LogFormatter, a as LogSerializable, b as LevelHandler, c as Logger, d as Level, F as FnSerialized, H as HttpType, C as CoerceURI, W as WithLogger, A as AsError, O as Option, e as Future } from './index-TtYD7HhB.cjs';
4
+ export { B as BuildURI, v as HostURIObject, I as IsLogger, k as Lengthed, p as LogCollector, f as LogValue, h as LogValueArg, i as LogValueState, o as LogWriteStream, n as LoggerInterface, t as MatchResult, q as MockLogger, M as MockLoggerReturn, x as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, D as URI, U as URIInterface, u as URIObject, s as WithoutOption, g as asyncLogValue, z as hasHostPartProtocols, y as isCoerceURI, w as isURL, l as logValue } from './index-TtYD7HhB.cjs';
5
5
  import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder } from './get-params-result-4xHM5s4_.cjs';
6
6
  export { k as ResultError, j as ResultOK, i as TxtEnDecoderSingleton, W as WithoutResult, l as exception2Result, p as param } from './get-params-result-4xHM5s4_.cjs';
7
- export { c as BaseSysAbstraction, B as BaseSysAbstractionParams, C as ConstTime, a as ExitHandler, E as ExitService, I as IdService, R as RandomService, b as StepTime, S as SysTime, T as TimeFactory, d as WrapperSysAbstraction, W as WrapperSysAbstractionParams } from './base-sys-abstraction-DAZ8tx5F.cjs';
7
+ export { d as BaseBasicSysAbstraction, B as BaseBasicSysAbstractionParams, e as BaseSysAbstraction, c as BaseSysAbstractionParams, g as BasicSysAbstractionFactory, f as BasicSysAbstractionParams, C as ConstTime, a as ExitHandler, E as ExitService, I as IdService, R as RandomService, b as StepTime, S as SysTime, T as TimeFactory, h as WrapperBasicSysAbstraction, W as WrapperBasicSysAbstractionParams, i as WrapperRuntimeSysAbstraction } from './base-sys-abstraction-DgTynXGV.cjs';
8
8
  export { i as utils } from './index-LQOsS7gM.cjs';
9
9
  import './stripper-BpBUUZ9p.cjs';
10
10
 
11
11
  declare class LogWriterStream {
12
12
  readonly _out: WritableStream<Uint8Array>;
13
13
  readonly _toFlush: (() => Promise<void>)[];
14
+ readonly _id: number;
14
15
  constructor(out: WritableStream<Uint8Array>);
15
16
  write(encoded: Uint8Array): void;
16
17
  _flushIsRunning: boolean;
@@ -33,14 +34,14 @@ declare class YAMLFormatter implements LogFormatter {
33
34
  interface LoggerImplParams {
34
35
  readonly out?: WritableStream<Uint8Array>;
35
36
  readonly logWriter?: LogWriterStream;
36
- readonly sys?: SysAbstraction;
37
+ readonly sys?: BasicSysAbstraction;
37
38
  readonly withAttributes?: LogSerializable;
38
39
  readonly levelHandler?: LevelHandler;
39
40
  readonly txtEnDe?: TxtEnDecoder;
40
41
  readonly formatter?: LogFormatter;
41
42
  }
42
43
  declare class LoggerImpl implements Logger {
43
- readonly _sys: SysAbstraction;
44
+ readonly _sys: BasicSysAbstraction;
44
45
  readonly _attributes: LogSerializable;
45
46
  readonly _withAttributes: LogSerializable;
46
47
  readonly _logWriter: LogWriterStream;
@@ -382,4 +383,10 @@ interface JSONEnDecoder {
382
383
  }
383
384
  declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
384
385
 
385
- export { AsError, AsyncToEnDecoder, type CTAesKeyAlgorithm, type CTAlgorithm, type CTAlgorithmIdentifier, type CTArrayBufferView, type CTBufferSource, type CTCryptoKey, type CTEcKeyImportParams, type CTHmacImportParams, type CTJsonWebKey, type CTKeyFormat, type CTKeyType, type CTKeyUsage, type CTNamedCurve, type CTRsaHashedImportParams, type CleanCtx, CoerceURI, type CryptoRuntime, FnSerialized, Future, HeadersImpl, HttpHeader, HttpType, type Invokaction, type JSONEnDecoder, JSONEnDecoderSingleton, JSONFormatter, Keyed, type KeyedParam, KeyedResolvOnce, KeyedResolvSeq, LRUMap, type LRUParam, LRUSet, Level, LevelHandler, LevelHandlerImpl, LevelHandlerSingleton, LogFormatter, LogSerializable, Logger, LoggerImpl, type LoggerImplParams, Metric, type MetricMap, Metrics, Option, type PathOps, ResolveOnce, ResolveSeq, Result, type Runtime, SysAbstraction, Time, ToEnDecoder, type TraceCtx, type TraceCtxParam, TraceNode, type TraceNodeMap, TxtEnDecoder, VERSION, WithLogger, YAMLFormatter, bin2string, bin2text, pathOps, runtimeFn, toCryptoRuntime };
386
+ type CoerceBinaryInput = string | ArrayBufferLike | ArrayBufferView | Uint8Array;
387
+ declare function top_uint8(input: CoerceBinaryInput | Blob): Promise<Uint8Array>;
388
+ declare function to_uint8(input: CoerceBinaryInput, encoder?: TextEncoder): Uint8Array;
389
+ declare function to_blob(input: CoerceBinaryInput | Blob, encoder?: TextEncoder): Blob;
390
+ declare function to_arraybuf(input: CoerceBinaryInput, encoder?: TextEncoder): ArrayBuffer;
391
+
392
+ export { AsError, AsyncToEnDecoder, BasicSysAbstraction, type CTAesKeyAlgorithm, type CTAlgorithm, type CTAlgorithmIdentifier, type CTArrayBufferView, type CTBufferSource, type CTCryptoKey, type CTEcKeyImportParams, type CTHmacImportParams, type CTJsonWebKey, type CTKeyFormat, type CTKeyType, type CTKeyUsage, type CTNamedCurve, type CTRsaHashedImportParams, type CleanCtx, type CoerceBinaryInput, CoerceURI, type CryptoRuntime, FnSerialized, Future, HeadersImpl, HttpHeader, HttpType, type Invokaction, type JSONEnDecoder, JSONEnDecoderSingleton, JSONFormatter, Keyed, type KeyedParam, KeyedResolvOnce, KeyedResolvSeq, LRUMap, type LRUParam, LRUSet, Level, LevelHandler, LevelHandlerImpl, LevelHandlerSingleton, LogFormatter, LogSerializable, Logger, LoggerImpl, type LoggerImplParams, Metric, type MetricMap, Metrics, Option, type PathOps, ResolveOnce, ResolveSeq, Result, type Runtime, Time, ToEnDecoder, type TraceCtx, type TraceCtxParam, TraceNode, type TraceNodeMap, TxtEnDecoder, VERSION, WithLogger, YAMLFormatter, bin2string, bin2text, pathOps, runtimeFn, toCryptoRuntime, to_arraybuf, to_blob, to_uint8, top_uint8 };
package/index.d.ts CHANGED
@@ -1,16 +1,17 @@
1
- import { S as SysAbstraction, T as Time } from './sys-abstraction-B0x6IE7r.js';
2
- export { D as Duration, E as Env, c as EnvActions, i as EnvFactoryFn, e as EnvFactoryOpts, d as EnvImpl, h as EnvMap, g as EnvTuple, F as FileService, I as IDMode, N as NamedWritableStream, O as OnSetItem, R as RandomMode, f as String2TimeMode, b as SystemService, a as TimeMode, l as TimeUnit, k as TimeUnits, V as VoidFunc, j as envFactory, r as registerEnvAction } from './sys-abstraction-B0x6IE7r.js';
3
- import { L as LogFormatter, a as LogSerializable, b as LevelHandler, c as Logger, d as Level, F as FnSerialized, H as HttpType, C as CoerceURI, W as WithLogger, A as AsError, O as Option, e as Future } from './index-BhmvYS_t.js';
4
- export { B as BuildURI, v as HostURIObject, I as IsLogger, k as Lengthed, p as LogCollector, f as LogValue, h as LogValueArg, i as LogValueState, o as LogWriteStream, n as LoggerInterface, t as MatchResult, q as MockLogger, M as MockLoggerReturn, x as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, D as URI, U as URIInterface, u as URIObject, s as WithoutOption, g as asyncLogValue, z as hasHostPartProtocols, y as isCoerceURI, w as isURL, l as logValue } from './index-BhmvYS_t.js';
1
+ import { B as BasicSysAbstraction, T as Time } from './sys-abstraction-CeAxxg9H.js';
2
+ export { b as BasicRuntimeService, D as Duration, E as Env, c as EnvActions, j as EnvFactoryFn, e as EnvFactoryOpts, d as EnvImpl, i as EnvMap, h as EnvTuple, F as FileService, I as IDMode, N as NamedWritableStream, O as OnSetItem, R as RandomMode, f as RuntimeSysAbstraction, g as String2TimeMode, S as SystemService, a as TimeMode, m as TimeUnit, l as TimeUnits, V as VoidFunc, k as envFactory, r as registerEnvAction } from './sys-abstraction-CeAxxg9H.js';
3
+ import { L as LogFormatter, a as LogSerializable, b as LevelHandler, c as Logger, d as Level, F as FnSerialized, H as HttpType, C as CoerceURI, W as WithLogger, A as AsError, O as Option, e as Future } from './index-N0bkrgSt.js';
4
+ export { B as BuildURI, v as HostURIObject, I as IsLogger, k as Lengthed, p as LogCollector, f as LogValue, h as LogValueArg, i as LogValueState, o as LogWriteStream, n as LoggerInterface, t as MatchResult, q as MockLogger, M as MockLoggerReturn, x as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, D as URI, U as URIInterface, u as URIObject, s as WithoutOption, g as asyncLogValue, z as hasHostPartProtocols, y as isCoerceURI, w as isURL, l as logValue } from './index-N0bkrgSt.js';
5
5
  import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder } from './get-params-result-4xHM5s4_.js';
6
6
  export { k as ResultError, j as ResultOK, i as TxtEnDecoderSingleton, W as WithoutResult, l as exception2Result, p as param } from './get-params-result-4xHM5s4_.js';
7
- export { c as BaseSysAbstraction, B as BaseSysAbstractionParams, C as ConstTime, a as ExitHandler, E as ExitService, I as IdService, R as RandomService, b as StepTime, S as SysTime, T as TimeFactory, d as WrapperSysAbstraction, W as WrapperSysAbstractionParams } from './base-sys-abstraction-BnBZ6zd0.js';
7
+ export { d as BaseBasicSysAbstraction, B as BaseBasicSysAbstractionParams, e as BaseSysAbstraction, c as BaseSysAbstractionParams, g as BasicSysAbstractionFactory, f as BasicSysAbstractionParams, C as ConstTime, a as ExitHandler, E as ExitService, I as IdService, R as RandomService, b as StepTime, S as SysTime, T as TimeFactory, h as WrapperBasicSysAbstraction, W as WrapperBasicSysAbstractionParams, i as WrapperRuntimeSysAbstraction } from './base-sys-abstraction-h0dB3nZ5.js';
8
8
  export { i as utils } from './index-CMLb7JSe.js';
9
9
  import './stripper-BpBUUZ9p.js';
10
10
 
11
11
  declare class LogWriterStream {
12
12
  readonly _out: WritableStream<Uint8Array>;
13
13
  readonly _toFlush: (() => Promise<void>)[];
14
+ readonly _id: number;
14
15
  constructor(out: WritableStream<Uint8Array>);
15
16
  write(encoded: Uint8Array): void;
16
17
  _flushIsRunning: boolean;
@@ -33,14 +34,14 @@ declare class YAMLFormatter implements LogFormatter {
33
34
  interface LoggerImplParams {
34
35
  readonly out?: WritableStream<Uint8Array>;
35
36
  readonly logWriter?: LogWriterStream;
36
- readonly sys?: SysAbstraction;
37
+ readonly sys?: BasicSysAbstraction;
37
38
  readonly withAttributes?: LogSerializable;
38
39
  readonly levelHandler?: LevelHandler;
39
40
  readonly txtEnDe?: TxtEnDecoder;
40
41
  readonly formatter?: LogFormatter;
41
42
  }
42
43
  declare class LoggerImpl implements Logger {
43
- readonly _sys: SysAbstraction;
44
+ readonly _sys: BasicSysAbstraction;
44
45
  readonly _attributes: LogSerializable;
45
46
  readonly _withAttributes: LogSerializable;
46
47
  readonly _logWriter: LogWriterStream;
@@ -382,4 +383,10 @@ interface JSONEnDecoder {
382
383
  }
383
384
  declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
384
385
 
385
- export { AsError, AsyncToEnDecoder, type CTAesKeyAlgorithm, type CTAlgorithm, type CTAlgorithmIdentifier, type CTArrayBufferView, type CTBufferSource, type CTCryptoKey, type CTEcKeyImportParams, type CTHmacImportParams, type CTJsonWebKey, type CTKeyFormat, type CTKeyType, type CTKeyUsage, type CTNamedCurve, type CTRsaHashedImportParams, type CleanCtx, CoerceURI, type CryptoRuntime, FnSerialized, Future, HeadersImpl, HttpHeader, HttpType, type Invokaction, type JSONEnDecoder, JSONEnDecoderSingleton, JSONFormatter, Keyed, type KeyedParam, KeyedResolvOnce, KeyedResolvSeq, LRUMap, type LRUParam, LRUSet, Level, LevelHandler, LevelHandlerImpl, LevelHandlerSingleton, LogFormatter, LogSerializable, Logger, LoggerImpl, type LoggerImplParams, Metric, type MetricMap, Metrics, Option, type PathOps, ResolveOnce, ResolveSeq, Result, type Runtime, SysAbstraction, Time, ToEnDecoder, type TraceCtx, type TraceCtxParam, TraceNode, type TraceNodeMap, TxtEnDecoder, VERSION, WithLogger, YAMLFormatter, bin2string, bin2text, pathOps, runtimeFn, toCryptoRuntime };
386
+ type CoerceBinaryInput = string | ArrayBufferLike | ArrayBufferView | Uint8Array;
387
+ declare function top_uint8(input: CoerceBinaryInput | Blob): Promise<Uint8Array>;
388
+ declare function to_uint8(input: CoerceBinaryInput, encoder?: TextEncoder): Uint8Array;
389
+ declare function to_blob(input: CoerceBinaryInput | Blob, encoder?: TextEncoder): Blob;
390
+ declare function to_arraybuf(input: CoerceBinaryInput, encoder?: TextEncoder): ArrayBuffer;
391
+
392
+ export { AsError, AsyncToEnDecoder, BasicSysAbstraction, type CTAesKeyAlgorithm, type CTAlgorithm, type CTAlgorithmIdentifier, type CTArrayBufferView, type CTBufferSource, type CTCryptoKey, type CTEcKeyImportParams, type CTHmacImportParams, type CTJsonWebKey, type CTKeyFormat, type CTKeyType, type CTKeyUsage, type CTNamedCurve, type CTRsaHashedImportParams, type CleanCtx, type CoerceBinaryInput, CoerceURI, type CryptoRuntime, FnSerialized, Future, HeadersImpl, HttpHeader, HttpType, type Invokaction, type JSONEnDecoder, JSONEnDecoderSingleton, JSONFormatter, Keyed, type KeyedParam, KeyedResolvOnce, KeyedResolvSeq, LRUMap, type LRUParam, LRUSet, Level, LevelHandler, LevelHandlerImpl, LevelHandlerSingleton, LogFormatter, LogSerializable, Logger, LoggerImpl, type LoggerImplParams, Metric, type MetricMap, Metrics, Option, type PathOps, ResolveOnce, ResolveSeq, Result, type Runtime, Time, ToEnDecoder, type TraceCtx, type TraceCtxParam, TraceNode, type TraceNodeMap, TxtEnDecoder, VERSION, WithLogger, YAMLFormatter, bin2string, bin2text, pathOps, runtimeFn, toCryptoRuntime, to_arraybuf, to_blob, to_uint8, top_uint8 };
package/index.js CHANGED
@@ -23,28 +23,21 @@ import {
23
23
  isCoerceURI,
24
24
  isURL,
25
25
  logValue
26
- } from "./chunk-UEER5ZC2.js";
26
+ } from "./chunk-NPMIRK4R.js";
27
27
  import {
28
28
  utils_exports
29
- } from "./chunk-55W4AK2Z.js";
30
- import "./chunk-PHS255C5.js";
31
- import "./chunk-H6MLKWIZ.js";
29
+ } from "./chunk-YVACAIUX.js";
30
+ import "./chunk-FOALXQST.js";
32
31
  import {
32
+ BaseBasicSysAbstraction,
33
33
  BaseSysAbstraction,
34
+ BasicSysAbstractionFactory,
34
35
  ConstTime,
35
36
  EnvImpl,
36
- Future,
37
37
  IDMode,
38
38
  IdService,
39
- Keyed,
40
- KeyedResolvOnce,
41
- KeyedResolvSeq,
42
- LRUMap,
43
- LRUSet,
44
39
  RandomMode,
45
40
  RandomService,
46
- ResolveOnce,
47
- ResolveSeq,
48
41
  StepTime,
49
42
  String2TimeMode,
50
43
  SysTime,
@@ -52,12 +45,21 @@ import {
52
45
  TimeFactory,
53
46
  TimeMode,
54
47
  TimeUnits,
55
- WrapperSysAbstraction,
48
+ WrapperBasicSysAbstraction,
49
+ WrapperRuntimeSysAbstraction,
56
50
  envFactory,
57
51
  registerEnvAction,
58
52
  runtimeFn
59
- } from "./chunk-23MCJYE6.js";
53
+ } from "./chunk-X3IV2RYT.js";
60
54
  import {
55
+ Future,
56
+ Keyed,
57
+ KeyedResolvOnce,
58
+ KeyedResolvSeq,
59
+ LRUMap,
60
+ LRUSet,
61
+ ResolveOnce,
62
+ ResolveSeq,
61
63
  Result,
62
64
  ResultError,
63
65
  ResultOK,
@@ -66,7 +68,7 @@ import {
66
68
  __privateMethod,
67
69
  exception2Result,
68
70
  param
69
- } from "./chunk-LXTKPZ6M.js";
71
+ } from "./chunk-YKGCONBX.js";
70
72
 
71
73
  // src/tracer.ts
72
74
  var Metric = class {
@@ -487,8 +489,43 @@ function JSONEnDecoderSingleton(txtEnde) {
487
489
  jsonEnDecoder = jsonEnDecoder != null ? jsonEnDecoder : new JSONOps(TxtEnDecoderSingleton());
488
490
  return jsonEnDecoder;
489
491
  }
492
+
493
+ // src/coerce-binary.ts
494
+ async function top_uint8(input) {
495
+ if (input instanceof Blob) {
496
+ return new Uint8Array(await input.arrayBuffer());
497
+ }
498
+ return to_uint8(input);
499
+ }
500
+ function to_uint8(input, encoder) {
501
+ if (typeof input === "string") {
502
+ return (encoder != null ? encoder : new TextEncoder()).encode(input);
503
+ }
504
+ if (input instanceof ArrayBuffer) {
505
+ return new Uint8Array(input);
506
+ }
507
+ if (input instanceof Uint8Array) {
508
+ return input;
509
+ }
510
+ return new Uint8Array(input);
511
+ }
512
+ function to_blob(input, encoder) {
513
+ if (input instanceof Blob) {
514
+ return input;
515
+ }
516
+ return new Blob([to_uint8(input, encoder)]);
517
+ }
518
+ function to_arraybuf(input, encoder) {
519
+ if (input instanceof ArrayBuffer) {
520
+ return input;
521
+ }
522
+ const u8 = to_uint8(input, encoder);
523
+ return u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength);
524
+ }
490
525
  export {
526
+ BaseBasicSysAbstraction,
491
527
  BaseSysAbstraction,
528
+ BasicSysAbstractionFactory,
492
529
  BuildURI,
493
530
  ConstTime,
494
531
  EnvImpl,
@@ -537,7 +574,8 @@ export {
537
574
  TxtEnDecoderSingleton,
538
575
  URI,
539
576
  VERSION,
540
- WrapperSysAbstraction,
577
+ WrapperBasicSysAbstraction,
578
+ WrapperRuntimeSysAbstraction,
541
579
  YAMLFormatter,
542
580
  asyncLogValue,
543
581
  bin2string,
@@ -553,6 +591,10 @@ export {
553
591
  registerEnvAction,
554
592
  runtimeFn,
555
593
  toCryptoRuntime,
594
+ to_arraybuf,
595
+ to_blob,
596
+ to_uint8,
597
+ top_uint8,
556
598
  utils_exports as utils
557
599
  };
558
600
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tracer.ts","../../src/crypto.ts","../../src/version.ts","../../src/http_header.ts","../../src/path-ops.ts","../../src/json-en-decoder.ts"],"sourcesContent":["import type { MarkWritable } from \"ts-essentials\";\nimport { Time } from \"./time.js\";\nimport { Logger } from \"./logger.js\";\n\nexport type TraceCtx = {\n readonly spanId: string;\n readonly time: Time;\n readonly parent: TraceNode;\n readonly metrics: Map<string, Metric<unknown>>;\n readonly logger?: Logger;\n} & Record<string, unknown>;\n\nexport type CleanCtx = {\n readonly spanId: string;\n} & Record<string, unknown>;\n\nexport type TraceCtxParam = {\n readonly spanId: string;\n} & Partial<{\n readonly time: Time;\n readonly parent: TraceNode;\n readonly logger: Logger;\n}> &\n Record<string, unknown>;\n\nexport class Metric<T> {\n value?: T;\n readonly path: string;\n\n constructor(path: string) {\n this.path = path;\n }\n\n set(value: T): void {\n this.value = value;\n }\n\n add<R extends number | ArrayLike<T>>(value: R): void {\n if (typeof value === \"number\") {\n if (this.value === undefined) {\n this.value = 0 as T;\n }\n this.value = ((this.value as number) + value) as T;\n } else if (Array.isArray(value)) {\n if (!Array.isArray(this.value)) {\n this.value = [] as T;\n }\n (this.value as T[]).push(...value);\n } else {\n throw new Error(\"add only support number or array\");\n }\n }\n}\n\nexport type MetricMap = Map<string, Metric<unknown>>;\n\nexport class Metrics {\n readonly tracenode: TraceNode;\n private readonly map: MetricMap;\n\n readonly spanRefs: MetricMap = new Map<string, Metric<unknown>>();\n constructor(tracenode: TraceNode) {\n this.tracenode = tracenode;\n this.map = tracenode.ctx.metrics;\n }\n\n toJSON(): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n for (const [key, value] of this.map) {\n obj[key] = value.value;\n }\n return obj;\n }\n\n get<T>(ipath: string): Metric<T> {\n const path = ipath.replace(/[/]+/g, \"/\").trim();\n if (path.startsWith(\"/\")) {\n if (path.slice(1).length === 0) {\n throw new Error(`Metrics path must contain value /:${path}`);\n }\n let metric = this.map.get(path);\n if (!metric) {\n metric = new Metric<T>(path);\n this.map.set(path, metric);\n }\n this.spanRefs.set(path, metric);\n return metric as Metric<T>;\n } else if (path.includes(\"/\")) {\n throw new Error(`Metrics path must start with /:${path}`);\n }\n const rootPath = this.tracenode.getRootPath();\n return this.get(`${rootPath}/${path}`);\n }\n}\n\nexport interface Invokaction {\n readonly result: \"success\" | \"error\";\n readonly start: number;\n readonly end: number;\n readonly metrics?: Metrics;\n}\n\nexport type TraceNodeMap = Map<string, TraceNode>;\n\nexport class TraceNode {\n readonly childs: TraceNodeMap = new Map<string, TraceNode>();\n\n readonly invokations: Invokaction[] = [];\n\n readonly spanId: string;\n readonly ctx: TraceCtx;\n readonly metrics: Metrics;\n\n static root(time: Time, logger?: Logger): TraceNode {\n return new TraceNode({\n spanId: \"root\",\n time,\n logger,\n metrics: new Map(),\n parent: undefined as unknown as TraceNode,\n });\n }\n\n constructor(ctx: TraceCtx) {\n this.spanId = ctx.spanId;\n this.ctx = ctx;\n this.metrics = new Metrics(this);\n }\n\n getRootPath(rpath: string[] = []): string {\n if (!this.ctx.parent) {\n return \"/\" + rpath.reverse().join(\"/\");\n }\n return this.ctx.parent.getRootPath(rpath.concat(this.ctx.spanId));\n }\n\n invokes(): { ctx: CleanCtx; invokations: Invokaction[] } {\n const cleanCtx = { ...this.ctx } as CleanCtx;\n delete cleanCtx.parent;\n delete cleanCtx.time;\n delete cleanCtx.logger;\n delete cleanCtx.metrics;\n const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs });\n const metricsRefs = Object.keys(spanRefs).length > 0 ? { metricRefs: spanRefs } : {};\n return {\n ctx: cleanCtx,\n invokations: this.invokations,\n ...metricsRefs,\n };\n }\n\n ctxWith(spanId: string, logger?: Logger): TraceCtxParam {\n const ctx = {\n ...this.ctx,\n spanId,\n };\n if (logger) {\n ctx.logger = logger;\n }\n return ctx;\n }\n\n // <V extends () => Promise<T> | T, T>(id: string, fn: V): ReturnType<V>\n span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V> {\n let ctx: TraceCtx;\n if (typeof inSpanId === \"string\") {\n ctx = {\n ...this.ctx,\n spanId: inSpanId,\n parent: this,\n };\n } else {\n ctx = {\n ...this.ctx,\n ...inSpanId,\n parent: this,\n };\n }\n if (ctx.logger) {\n ctx = {\n ...ctx,\n ...ctx.logger.Attributes(),\n };\n }\n const spanId = ctx.spanId;\n let spanTrace = this.childs.get(spanId);\n if (!spanTrace) {\n spanTrace = new TraceNode(ctx);\n this.childs.set(spanId.toString(), spanTrace);\n }\n const invokation: MarkWritable<MarkWritable<Invokaction, \"end\">, \"result\"> = {\n start: this.ctx.time.Now().getTime(),\n end: 0,\n result: \"success\",\n };\n spanTrace.invokations.push(invokation);\n try {\n const possiblePromise = fn(spanTrace);\n if (possiblePromise instanceof Promise) {\n return possiblePromise\n .then((v) => {\n return v;\n })\n .catch((e) => {\n invokation.result = \"error\";\n throw e;\n })\n .finally(() => {\n invokation.end = this.ctx.time.Now().getTime();\n }) as ReturnType<V>;\n }\n invokation.end = this.ctx.time.Now().getTime();\n return possiblePromise as ReturnType<V>;\n } catch (e) {\n invokation.result = \"error\";\n invokation.end = this.ctx.time.Now().getTime();\n throw e;\n }\n }\n}\n","export interface CTJsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\nexport type CTKeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\nexport type CTKeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\n\nexport interface CTAlgorithm {\n name: string;\n}\nexport type CTAlgorithmIdentifier = CTAlgorithm | string;\n\nexport interface CTRsaHashedImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n}\n\nexport type CTNamedCurve = string;\nexport interface CTEcKeyImportParams extends CTAlgorithm {\n namedCurve: CTNamedCurve;\n}\n\nexport interface CTHmacImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n length?: number;\n}\n\nexport interface CTAesKeyAlgorithm extends CTAlgorithm {\n length: number;\n}\n\nexport type CTKeyType = \"private\" | \"public\" | \"secret\";\n\nexport interface CTCryptoKey {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */\n readonly algorithm: CTAlgorithm;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */\n readonly extractable: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */\n readonly type: CTKeyType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */\n readonly usages: CTKeyUsage[];\n}\n\ninterface CTArrayBufferTypes {\n ArrayBuffer: ArrayBuffer;\n}\ntype CTArrayBufferLike = CTArrayBufferTypes[keyof CTArrayBufferTypes];\n\nexport interface CTArrayBufferView {\n /**\n * The ArrayBuffer instance referenced by the array.\n */\n buffer: CTArrayBufferLike;\n\n /**\n * The length in bytes of the array.\n */\n byteLength: number;\n\n /**\n * The offset in bytes of the array.\n */\n byteOffset: number;\n}\n\nexport type CTBufferSource = CTArrayBufferView | ArrayBuffer | Uint8Array;\n\nexport interface CryptoRuntime {\n importKey(\n format: CTKeyFormat,\n keyData: CTJsonWebKey | CTBufferSource,\n algorithm: CTAlgorithmIdentifier | CTRsaHashedImportParams | CTEcKeyImportParams | CTHmacImportParams | CTAesKeyAlgorithm,\n extractable: boolean,\n keyUsages: CTKeyUsage[],\n ): Promise<CTCryptoKey>;\n exportKey(format: CTKeyFormat, key: CTCryptoKey): Promise<CTJsonWebKey | ArrayBuffer>;\n\n //(format: \"raw\", key: ArrayBuffer, algo: string, extractable: boolean, usages: string[]) => Promise<CryptoKey>;\n decrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n encrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n digestSHA256(data: Uint8Array): Promise<ArrayBuffer>;\n randomBytes(size: number): Uint8Array;\n}\n\nfunction randomBytes(size: number): Uint8Array {\n const bytes = new Uint8Array(size);\n if (size > 0) {\n crypto.getRandomValues(bytes);\n }\n return bytes;\n}\n\nfunction digestSHA256(data: Uint8Array): Promise<ArrayBuffer> {\n return Promise.resolve(crypto.subtle.digest(\"SHA-256\", data));\n}\n\nexport function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): CryptoRuntime {\n const runtime = {\n importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),\n exportKey: cryptoOpts.exportKey || crypto.subtle.exportKey.bind(crypto.subtle),\n encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),\n decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),\n randomBytes: cryptoOpts.randomBytes || randomBytes,\n digestSHA256: cryptoOpts.digestSHA256 || digestSHA256,\n };\n // console.log(\"cryptoOpts\", cryptoOpts, opts)\n return runtime;\n}\n","export const VERSION: string = Object.keys({\n __packageVersion__: \"xxxx\",\n})[0];\n","export class HeadersImpl extends Headers {\n readonly _headers: Map<string, string>;\n\n constructor(init: Map<string, string>) {\n super();\n this._headers = init;\n }\n\n override [Symbol.iterator](): IterableIterator<[string, string]> {\n return this.entries();\n }\n\n override entries(): IterableIterator<[string, string]> {\n return this._headers.entries();\n }\n override keys(): IterableIterator<string> {\n return this._headers.keys();\n }\n override values(): IterableIterator<string> {\n return this._headers.values();\n }\n\n override append(key: string, value: string | string[] | undefined): HeadersImpl {\n const values = this._headers.get(key);\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (Array.isArray(value)) {\n this._headers.set(key, [values, ...value].filter((i) => i).join(\", \"));\n } else {\n this._headers.set(key, [values, value].filter((i) => i).join(\", \"));\n }\n return this;\n }\n}\n\nexport class HttpHeader {\n readonly _headers: Map<string, string[]> = new Map<string, string[]>();\n\n static from(headers?: HeadersInit | Headers | HttpHeader): HttpHeader {\n if (headers instanceof HttpHeader) {\n return headers.Clone();\n }\n const h = new HttpHeader();\n if (headers) {\n if (Array.isArray(headers)) {\n for (const [k, v] of headers as [string, string][]) {\n if (v) {\n h.Add(k, v);\n }\n }\n } else if (headers instanceof Headers) {\n for (const [k, v] of headers.entries()) {\n if (v) {\n h.Add(\n k,\n v.split(\",\").map((v) => v.trim()),\n );\n }\n }\n } else {\n for (const k in headers) {\n const v = (headers as Record<string, string | string[]>)[k];\n (Array.isArray(v) ? v : [v]).forEach((v) => {\n h.Add(k, v);\n });\n }\n }\n }\n return h;\n }\n\n _asStringString(): Map<string, string> {\n const ret = new Map<string, string>();\n for (const [key, values] of this._headers) {\n ret.set(key, values.join(\", \"));\n }\n return ret;\n }\n\n _key(key: string): string {\n return key.toLowerCase();\n }\n Values(key: string): string[] {\n const values = this._headers.get(this._key(key));\n return values || [];\n }\n Get(key: string): string | undefined {\n const values = this._headers.get(this._key(key));\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[0];\n }\n Set(key: string, valueOr: string | string[]): HttpHeader {\n const value = Array.isArray(valueOr) ? valueOr : [valueOr];\n this._headers.set(this._key(key), value);\n return this;\n }\n Add(key: string, value: string | string[] | undefined): HttpHeader {\n if (typeof value === \"undefined\") {\n return this;\n }\n const vs = Array.isArray(value) ? value : [value];\n const values = this._headers.get(this._key(key));\n if (values === undefined) {\n this._headers.set(this._key(key), vs);\n } else {\n values.push(...vs);\n }\n return this;\n }\n Del(ey: string): HttpHeader {\n this._headers.delete(this._key(ey));\n return this;\n }\n Items(): [string, string[]][] {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Array.from(this._headers).filter(([_, vs]) => vs.length > 0);\n }\n SortItems(): [string, string[]][] {\n return this.Items().sort(([[a]], [[b]]) => a.localeCompare(b));\n }\n Clone(): HttpHeader {\n const clone = new HttpHeader();\n for (const [key, values] of this._headers.entries()) {\n clone._headers.set(key, values.slice());\n }\n return clone;\n }\n AsRecordStringStringArray(): Record<string, string[]> {\n const obj: Record<string, string[]> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = [...values];\n }\n return obj;\n }\n AsRecordStringString(): Record<string, string> {\n const obj: Record<string, string> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values.join(\", \");\n }\n return obj;\n }\n AsHeaderInit(): HeadersInit {\n const obj: HeadersInit = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values[0];\n }\n return obj;\n }\n AsHeaders(): Headers {\n return new HeadersImpl(this._asStringString());\n }\n Merge(other?: HttpHeader): HttpHeader {\n const ret = this.Clone();\n if (other) {\n for (const [key, values] of other.Items()) {\n ret.Add(key, values);\n }\n }\n return ret;\n }\n}\n","export interface PathOps {\n join(...args: string[]): string;\n dirname(path: string): string;\n basename(path: string): string;\n}\n\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n #parts(path: string): { dirname: string; basename: string } {\n const splitted = path.split(\"/\");\n const last = splitted.pop();\n if (splitted.length && last === \"\") {\n return this.#parts(this.join(...splitted));\n }\n return {\n dirname: this.join(...splitted),\n basename: last ?? \"\",\n };\n }\n dirname(path: string): string {\n return this.#parts(path).dirname;\n }\n basename(path: string): string {\n return this.#parts(path).basename;\n }\n}\n\nexport const pathOps: PathOps = new pathOpsImpl();\n","import { exception2Result, Result } from \"./result.js\";\nimport { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, TxtEnDecoderSingleton as TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\n\nexport interface JSONEnDecoder {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;\n asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array;\n asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>>;\n}\n\nclass JSONOps implements JSONEnDecoder {\n readonly txtOps: TxtEnDecoder;\n constructor(txtOps: TxtEnDecoder) {\n this.txtOps = txtOps;\n }\n async asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string> {\n const resolved = await input;\n return this.stringify(resolved, replacer, space);\n }\n async asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array> {\n const resolved = await input;\n return this.uint8ify(resolved, replacer, space);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>> {\n return this.parse(await this.txtOps.asyncDecode(input), reviver);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string {\n return JSON.stringify(Result.Is(input) ? input.unwrap() : input, replacer, space);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array {\n return this.txtOps.encode(this.stringify(input, replacer, space));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T> {\n return exception2Result(() => JSON.parse(this.txtOps.decode(input), reviver) as T) as Result<T>;\n }\n}\n\nlet jsonEnDecoder: JSONEnDecoder;\nexport function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder {\n let needNew = false;\n if (txtEnde && txtEnde !== TxtEnDecoderSingleton()) {\n needNew = !!txtEnde;\n txtEnde = txtEnde ?? TxtEnDecoderSingleton();\n }\n if (needNew && txtEnde) {\n return new JSONOps(txtEnde);\n }\n jsonEnDecoder = jsonEnDecoder ?? new JSONOps(TxtEnDecoderSingleton());\n return jsonEnDecoder;\n}\n"],"mappings":"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","names":["v"]}
1
+ {"version":3,"sources":["../../src/tracer.ts","../../src/crypto.ts","../../src/version.ts","../../src/http_header.ts","../../src/path-ops.ts","../../src/json-en-decoder.ts","../../src/coerce-binary.ts"],"sourcesContent":["import type { MarkWritable } from \"ts-essentials\";\nimport { Time } from \"./time.js\";\nimport { Logger } from \"./logger.js\";\n\nexport type TraceCtx = {\n readonly spanId: string;\n readonly time: Time;\n readonly parent: TraceNode;\n readonly metrics: Map<string, Metric<unknown>>;\n readonly logger?: Logger;\n} & Record<string, unknown>;\n\nexport type CleanCtx = {\n readonly spanId: string;\n} & Record<string, unknown>;\n\nexport type TraceCtxParam = {\n readonly spanId: string;\n} & Partial<{\n readonly time: Time;\n readonly parent: TraceNode;\n readonly logger: Logger;\n}> &\n Record<string, unknown>;\n\nexport class Metric<T> {\n value?: T;\n readonly path: string;\n\n constructor(path: string) {\n this.path = path;\n }\n\n set(value: T): void {\n this.value = value;\n }\n\n add<R extends number | ArrayLike<T>>(value: R): void {\n if (typeof value === \"number\") {\n if (this.value === undefined) {\n this.value = 0 as T;\n }\n this.value = ((this.value as number) + value) as T;\n } else if (Array.isArray(value)) {\n if (!Array.isArray(this.value)) {\n this.value = [] as T;\n }\n (this.value as T[]).push(...value);\n } else {\n throw new Error(\"add only support number or array\");\n }\n }\n}\n\nexport type MetricMap = Map<string, Metric<unknown>>;\n\nexport class Metrics {\n readonly tracenode: TraceNode;\n private readonly map: MetricMap;\n\n readonly spanRefs: MetricMap = new Map<string, Metric<unknown>>();\n constructor(tracenode: TraceNode) {\n this.tracenode = tracenode;\n this.map = tracenode.ctx.metrics;\n }\n\n toJSON(): Record<string, unknown> {\n const obj: Record<string, unknown> = {};\n for (const [key, value] of this.map) {\n obj[key] = value.value;\n }\n return obj;\n }\n\n get<T>(ipath: string): Metric<T> {\n const path = ipath.replace(/[/]+/g, \"/\").trim();\n if (path.startsWith(\"/\")) {\n if (path.slice(1).length === 0) {\n throw new Error(`Metrics path must contain value /:${path}`);\n }\n let metric = this.map.get(path);\n if (!metric) {\n metric = new Metric<T>(path);\n this.map.set(path, metric);\n }\n this.spanRefs.set(path, metric);\n return metric as Metric<T>;\n } else if (path.includes(\"/\")) {\n throw new Error(`Metrics path must start with /:${path}`);\n }\n const rootPath = this.tracenode.getRootPath();\n return this.get(`${rootPath}/${path}`);\n }\n}\n\nexport interface Invokaction {\n readonly result: \"success\" | \"error\";\n readonly start: number;\n readonly end: number;\n readonly metrics?: Metrics;\n}\n\nexport type TraceNodeMap = Map<string, TraceNode>;\n\nexport class TraceNode {\n readonly childs: TraceNodeMap = new Map<string, TraceNode>();\n\n readonly invokations: Invokaction[] = [];\n\n readonly spanId: string;\n readonly ctx: TraceCtx;\n readonly metrics: Metrics;\n\n static root(time: Time, logger?: Logger): TraceNode {\n return new TraceNode({\n spanId: \"root\",\n time,\n logger,\n metrics: new Map(),\n parent: undefined as unknown as TraceNode,\n });\n }\n\n constructor(ctx: TraceCtx) {\n this.spanId = ctx.spanId;\n this.ctx = ctx;\n this.metrics = new Metrics(this);\n }\n\n getRootPath(rpath: string[] = []): string {\n if (!this.ctx.parent) {\n return \"/\" + rpath.reverse().join(\"/\");\n }\n return this.ctx.parent.getRootPath(rpath.concat(this.ctx.spanId));\n }\n\n invokes(): { ctx: CleanCtx; invokations: Invokaction[] } {\n const cleanCtx = { ...this.ctx } as CleanCtx;\n delete cleanCtx.parent;\n delete cleanCtx.time;\n delete cleanCtx.logger;\n delete cleanCtx.metrics;\n const spanRefs = this.metrics.toJSON.call({ map: this.metrics.spanRefs });\n const metricsRefs = Object.keys(spanRefs).length > 0 ? { metricRefs: spanRefs } : {};\n return {\n ctx: cleanCtx,\n invokations: this.invokations,\n ...metricsRefs,\n };\n }\n\n ctxWith(spanId: string, logger?: Logger): TraceCtxParam {\n const ctx = {\n ...this.ctx,\n spanId,\n };\n if (logger) {\n ctx.logger = logger;\n }\n return ctx;\n }\n\n // <V extends () => Promise<T> | T, T>(id: string, fn: V): ReturnType<V>\n span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V> {\n let ctx: TraceCtx;\n if (typeof inSpanId === \"string\") {\n ctx = {\n ...this.ctx,\n spanId: inSpanId,\n parent: this,\n };\n } else {\n ctx = {\n ...this.ctx,\n ...inSpanId,\n parent: this,\n };\n }\n if (ctx.logger) {\n ctx = {\n ...ctx,\n ...ctx.logger.Attributes(),\n };\n }\n const spanId = ctx.spanId;\n let spanTrace = this.childs.get(spanId);\n if (!spanTrace) {\n spanTrace = new TraceNode(ctx);\n this.childs.set(spanId.toString(), spanTrace);\n }\n const invokation: MarkWritable<MarkWritable<Invokaction, \"end\">, \"result\"> = {\n start: this.ctx.time.Now().getTime(),\n end: 0,\n result: \"success\",\n };\n spanTrace.invokations.push(invokation);\n try {\n const possiblePromise = fn(spanTrace);\n if (possiblePromise instanceof Promise) {\n return possiblePromise\n .then((v) => {\n return v;\n })\n .catch((e) => {\n invokation.result = \"error\";\n throw e;\n })\n .finally(() => {\n invokation.end = this.ctx.time.Now().getTime();\n }) as ReturnType<V>;\n }\n invokation.end = this.ctx.time.Now().getTime();\n return possiblePromise as ReturnType<V>;\n } catch (e) {\n invokation.result = \"error\";\n invokation.end = this.ctx.time.Now().getTime();\n throw e;\n }\n }\n}\n","export interface CTJsonWebKey {\n alg?: string;\n crv?: string;\n d?: string;\n dp?: string;\n dq?: string;\n e?: string;\n ext?: boolean;\n k?: string;\n key_ops?: string[];\n kty?: string;\n n?: string;\n oth?: RsaOtherPrimesInfo[];\n p?: string;\n q?: string;\n qi?: string;\n use?: string;\n x?: string;\n y?: string;\n}\n\nexport type CTKeyFormat = \"jwk\" | \"pkcs8\" | \"raw\" | \"spki\";\nexport type CTKeyUsage = \"decrypt\" | \"deriveBits\" | \"deriveKey\" | \"encrypt\" | \"sign\" | \"unwrapKey\" | \"verify\" | \"wrapKey\";\n\nexport interface CTAlgorithm {\n name: string;\n}\nexport type CTAlgorithmIdentifier = CTAlgorithm | string;\n\nexport interface CTRsaHashedImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n}\n\nexport type CTNamedCurve = string;\nexport interface CTEcKeyImportParams extends CTAlgorithm {\n namedCurve: CTNamedCurve;\n}\n\nexport interface CTHmacImportParams extends CTAlgorithm {\n hash: CTAlgorithmIdentifier;\n length?: number;\n}\n\nexport interface CTAesKeyAlgorithm extends CTAlgorithm {\n length: number;\n}\n\nexport type CTKeyType = \"private\" | \"public\" | \"secret\";\n\nexport interface CTCryptoKey {\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/algorithm) */\n readonly algorithm: CTAlgorithm;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/extractable) */\n readonly extractable: boolean;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/type) */\n readonly type: CTKeyType;\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/CryptoKey/usages) */\n readonly usages: CTKeyUsage[];\n}\n\ninterface CTArrayBufferTypes {\n ArrayBuffer: ArrayBuffer;\n}\ntype CTArrayBufferLike = CTArrayBufferTypes[keyof CTArrayBufferTypes];\n\nexport interface CTArrayBufferView {\n /**\n * The ArrayBuffer instance referenced by the array.\n */\n buffer: CTArrayBufferLike;\n\n /**\n * The length in bytes of the array.\n */\n byteLength: number;\n\n /**\n * The offset in bytes of the array.\n */\n byteOffset: number;\n}\n\nexport type CTBufferSource = CTArrayBufferView | ArrayBuffer | Uint8Array;\n\nexport interface CryptoRuntime {\n importKey(\n format: CTKeyFormat,\n keyData: CTJsonWebKey | CTBufferSource,\n algorithm: CTAlgorithmIdentifier | CTRsaHashedImportParams | CTEcKeyImportParams | CTHmacImportParams | CTAesKeyAlgorithm,\n extractable: boolean,\n keyUsages: CTKeyUsage[],\n ): Promise<CTCryptoKey>;\n exportKey(format: CTKeyFormat, key: CTCryptoKey): Promise<CTJsonWebKey | ArrayBuffer>;\n\n //(format: \"raw\", key: ArrayBuffer, algo: string, extractable: boolean, usages: string[]) => Promise<CryptoKey>;\n decrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n encrypt(algo: { name: string; iv: Uint8Array; tagLength: number }, key: CTCryptoKey, data: Uint8Array): Promise<ArrayBuffer>;\n digestSHA256(data: Uint8Array): Promise<ArrayBuffer>;\n randomBytes(size: number): Uint8Array;\n}\n\nfunction randomBytes(size: number): Uint8Array {\n const bytes = new Uint8Array(size);\n if (size > 0) {\n crypto.getRandomValues(bytes);\n }\n return bytes;\n}\n\nfunction digestSHA256(data: Uint8Array): Promise<ArrayBuffer> {\n return Promise.resolve(crypto.subtle.digest(\"SHA-256\", data));\n}\n\nexport function toCryptoRuntime(cryptoOpts: Partial<CryptoRuntime> = {}): CryptoRuntime {\n const runtime = {\n importKey: cryptoOpts.importKey || crypto.subtle.importKey.bind(crypto.subtle),\n exportKey: cryptoOpts.exportKey || crypto.subtle.exportKey.bind(crypto.subtle),\n encrypt: cryptoOpts.encrypt || crypto.subtle.encrypt.bind(crypto.subtle),\n decrypt: cryptoOpts.decrypt || crypto.subtle.decrypt.bind(crypto.subtle),\n randomBytes: cryptoOpts.randomBytes || randomBytes,\n digestSHA256: cryptoOpts.digestSHA256 || digestSHA256,\n };\n // console.log(\"cryptoOpts\", cryptoOpts, opts)\n return runtime;\n}\n","export const VERSION: string = Object.keys({\n __packageVersion__: \"xxxx\",\n})[0];\n","export class HeadersImpl extends Headers {\n readonly _headers: Map<string, string>;\n\n constructor(init: Map<string, string>) {\n super();\n this._headers = init;\n }\n\n override [Symbol.iterator](): IterableIterator<[string, string]> {\n return this.entries();\n }\n\n override entries(): IterableIterator<[string, string]> {\n return this._headers.entries();\n }\n override keys(): IterableIterator<string> {\n return this._headers.keys();\n }\n override values(): IterableIterator<string> {\n return this._headers.values();\n }\n\n override append(key: string, value: string | string[] | undefined): HeadersImpl {\n const values = this._headers.get(key);\n if (typeof value === \"undefined\") {\n value = \"\";\n }\n if (Array.isArray(value)) {\n this._headers.set(key, [values, ...value].filter((i) => i).join(\", \"));\n } else {\n this._headers.set(key, [values, value].filter((i) => i).join(\", \"));\n }\n return this;\n }\n}\n\nexport class HttpHeader {\n readonly _headers: Map<string, string[]> = new Map<string, string[]>();\n\n static from(headers?: HeadersInit | Headers | HttpHeader): HttpHeader {\n if (headers instanceof HttpHeader) {\n return headers.Clone();\n }\n const h = new HttpHeader();\n if (headers) {\n if (Array.isArray(headers)) {\n for (const [k, v] of headers as [string, string][]) {\n if (v) {\n h.Add(k, v);\n }\n }\n } else if (headers instanceof Headers) {\n for (const [k, v] of headers.entries()) {\n if (v) {\n h.Add(\n k,\n v.split(\",\").map((v) => v.trim()),\n );\n }\n }\n } else {\n for (const k in headers) {\n const v = (headers as Record<string, string | string[]>)[k];\n (Array.isArray(v) ? v : [v]).forEach((v) => {\n h.Add(k, v);\n });\n }\n }\n }\n return h;\n }\n\n _asStringString(): Map<string, string> {\n const ret = new Map<string, string>();\n for (const [key, values] of this._headers) {\n ret.set(key, values.join(\", \"));\n }\n return ret;\n }\n\n _key(key: string): string {\n return key.toLowerCase();\n }\n Values(key: string): string[] {\n const values = this._headers.get(this._key(key));\n return values || [];\n }\n Get(key: string): string | undefined {\n const values = this._headers.get(this._key(key));\n if (values === undefined || values.length === 0) {\n return undefined;\n }\n return values[0];\n }\n Set(key: string, valueOr: string | string[]): HttpHeader {\n const value = Array.isArray(valueOr) ? valueOr : [valueOr];\n this._headers.set(this._key(key), value);\n return this;\n }\n Add(key: string, value: string | string[] | undefined): HttpHeader {\n if (typeof value === \"undefined\") {\n return this;\n }\n const vs = Array.isArray(value) ? value : [value];\n const values = this._headers.get(this._key(key));\n if (values === undefined) {\n this._headers.set(this._key(key), vs);\n } else {\n values.push(...vs);\n }\n return this;\n }\n Del(ey: string): HttpHeader {\n this._headers.delete(this._key(ey));\n return this;\n }\n Items(): [string, string[]][] {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Array.from(this._headers).filter(([_, vs]) => vs.length > 0);\n }\n SortItems(): [string, string[]][] {\n return this.Items().sort(([[a]], [[b]]) => a.localeCompare(b));\n }\n Clone(): HttpHeader {\n const clone = new HttpHeader();\n for (const [key, values] of this._headers.entries()) {\n clone._headers.set(key, values.slice());\n }\n return clone;\n }\n AsRecordStringStringArray(): Record<string, string[]> {\n const obj: Record<string, string[]> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = [...values];\n }\n return obj;\n }\n AsRecordStringString(): Record<string, string> {\n const obj: Record<string, string> = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values.join(\", \");\n }\n return obj;\n }\n AsHeaderInit(): HeadersInit {\n const obj: HeadersInit = {};\n for (const [key, values] of this._headers.entries()) {\n obj[key] = values[0];\n }\n return obj;\n }\n AsHeaders(): Headers {\n return new HeadersImpl(this._asStringString());\n }\n Merge(other?: HttpHeader): HttpHeader {\n const ret = this.Clone();\n if (other) {\n for (const [key, values] of other.Items()) {\n ret.Add(key, values);\n }\n }\n return ret;\n }\n}\n","export interface PathOps {\n join(...args: string[]): string;\n dirname(path: string): string;\n basename(path: string): string;\n}\n\nclass pathOpsImpl implements PathOps {\n join(...paths: string[]): string {\n return paths.map((i) => i.replace(/\\/+$/, \"\")).join(\"/\");\n }\n #parts(path: string): { dirname: string; basename: string } {\n const splitted = path.split(\"/\");\n const last = splitted.pop();\n if (splitted.length && last === \"\") {\n return this.#parts(this.join(...splitted));\n }\n return {\n dirname: this.join(...splitted),\n basename: last ?? \"\",\n };\n }\n dirname(path: string): string {\n return this.#parts(path).dirname;\n }\n basename(path: string): string {\n return this.#parts(path).basename;\n }\n}\n\nexport const pathOps: PathOps = new pathOpsImpl();\n","import { exception2Result, Result } from \"./result.js\";\nimport { AsyncToEnDecoder, ToEnDecoder, TxtEnDecoder, TxtEnDecoderSingleton as TxtEnDecoderSingleton } from \"./txt-en-decoder.js\";\n\nexport interface JSONEnDecoder {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string;\n asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string>;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array;\n asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>>;\n}\n\nclass JSONOps implements JSONEnDecoder {\n readonly txtOps: TxtEnDecoder;\n constructor(txtOps: TxtEnDecoder) {\n this.txtOps = txtOps;\n }\n async asyncStringify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<string> {\n const resolved = await input;\n return this.stringify(resolved, replacer, space);\n }\n async asyncUint8ify<T>(\n input: Promise<Result<T> | T>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n replacer?: (this: any, key: string, value: any) => any,\n space?: string | number,\n ): Promise<Uint8Array> {\n const resolved = await input;\n return this.uint8ify(resolved, replacer, space);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async asyncParse<T>(input: AsyncToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Promise<Result<T>> {\n return this.parse(await this.txtOps.asyncDecode(input), reviver);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n stringify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string {\n return JSON.stringify(Result.Is(input) ? input.unwrap() : input, replacer, space);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n uint8ify<T>(input: Result<T> | T, replacer?: (this: any, key: string, value: any) => any, space?: string | number): Uint8Array {\n return this.txtOps.encode(this.stringify(input, replacer, space));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n parse<T>(input: ToEnDecoder, reviver?: (this: any, key: string, value: any) => any): Result<T> {\n return exception2Result(() => JSON.parse(this.txtOps.decode(input), reviver) as T) as Result<T>;\n }\n}\n\nlet jsonEnDecoder: JSONEnDecoder;\nexport function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder {\n let needNew = false;\n if (txtEnde && txtEnde !== TxtEnDecoderSingleton()) {\n needNew = !!txtEnde;\n txtEnde = txtEnde ?? TxtEnDecoderSingleton();\n }\n if (needNew && txtEnde) {\n return new JSONOps(txtEnde);\n }\n jsonEnDecoder = jsonEnDecoder ?? new JSONOps(TxtEnDecoderSingleton());\n return jsonEnDecoder;\n}\n","export type CoerceBinaryInput = string | ArrayBufferLike | ArrayBufferView | Uint8Array; // | SharedArrayBuffer\n\nexport async function top_uint8(input: CoerceBinaryInput | Blob): Promise<Uint8Array> {\n if (input instanceof Blob) {\n return new Uint8Array(await input.arrayBuffer());\n }\n return to_uint8(input);\n}\n\nexport function to_uint8(input: CoerceBinaryInput, encoder?: TextEncoder): Uint8Array {\n if (typeof input === \"string\") {\n return (encoder ?? new TextEncoder()).encode(input);\n }\n if (input instanceof ArrayBuffer /* || input instanceof SharedArrayBuffer */) {\n return new Uint8Array(input);\n }\n\n if (input instanceof Uint8Array) {\n return input;\n }\n // not nice but we make the cloudflare types happy\n return new Uint8Array(input as unknown as ArrayBufferLike);\n}\n\nexport function to_blob(input: CoerceBinaryInput | Blob, encoder?: TextEncoder): Blob {\n if (input instanceof Blob) {\n return input;\n }\n return new Blob([to_uint8(input, encoder)]);\n}\n\nexport function to_arraybuf(input: CoerceBinaryInput, encoder?: TextEncoder): ArrayBuffer {\n if (input instanceof ArrayBuffer) {\n return input;\n }\n const u8 = to_uint8(input, encoder);\n return u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer;\n // return to_uint8(input).buffer; // as ArrayBuffer;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,IAAM,SAAN,MAAgB;AAAA,EAIrB,YAAY,MAAc;AACxB,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,IAAI,OAAgB;AAClB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,IAAqC,OAAgB;AACnD,QAAI,OAAO,UAAU,UAAU;AAC7B,UAAI,KAAK,UAAU,QAAW;AAC5B,aAAK,QAAQ;AAAA,MACf;AACA,WAAK,QAAU,KAAK,QAAmB;AAAA,IACzC,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,UAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC9B,aAAK,QAAQ,CAAC;AAAA,MAChB;AACA,MAAC,KAAK,MAAc,KAAK,GAAG,KAAK;AAAA,IACnC,OAAO;AACL,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAAA,EACF;AACF;AAIO,IAAM,UAAN,MAAc;AAAA,EAKnB,YAAY,WAAsB;AADlC,SAAS,WAAsB,oBAAI,IAA6B;AAE9D,SAAK,YAAY;AACjB,SAAK,MAAM,UAAU,IAAI;AAAA,EAC3B;AAAA,EAEA,SAAkC;AAChC,UAAM,MAA+B,CAAC;AACtC,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;AACnC,UAAI,GAAG,IAAI,MAAM;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,IAAO,OAA0B;AAC/B,UAAM,OAAO,MAAM,QAAQ,SAAS,GAAG,EAAE,KAAK;AAC9C,QAAI,KAAK,WAAW,GAAG,GAAG;AACxB,UAAI,KAAK,MAAM,CAAC,EAAE,WAAW,GAAG;AAC9B,cAAM,IAAI,MAAM,qCAAqC,IAAI,EAAE;AAAA,MAC7D;AACA,UAAI,SAAS,KAAK,IAAI,IAAI,IAAI;AAC9B,UAAI,CAAC,QAAQ;AACX,iBAAS,IAAI,OAAU,IAAI;AAC3B,aAAK,IAAI,IAAI,MAAM,MAAM;AAAA,MAC3B;AACA,WAAK,SAAS,IAAI,MAAM,MAAM;AAC9B,aAAO;AAAA,IACT,WAAW,KAAK,SAAS,GAAG,GAAG;AAC7B,YAAM,IAAI,MAAM,kCAAkC,IAAI,EAAE;AAAA,IAC1D;AACA,UAAM,WAAW,KAAK,UAAU,YAAY;AAC5C,WAAO,KAAK,IAAI,GAAG,QAAQ,IAAI,IAAI,EAAE;AAAA,EACvC;AACF;AAWO,IAAM,YAAN,MAAM,WAAU;AAAA,EAmBrB,YAAY,KAAe;AAlB3B,SAAS,SAAuB,oBAAI,IAAuB;AAE3D,SAAS,cAA6B,CAAC;AAiBrC,SAAK,SAAS,IAAI;AAClB,SAAK,MAAM;AACX,SAAK,UAAU,IAAI,QAAQ,IAAI;AAAA,EACjC;AAAA,EAdA,OAAO,KAAK,MAAY,QAA4B;AAClD,WAAO,IAAI,WAAU;AAAA,MACnB,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,SAAS,oBAAI,IAAI;AAAA,MACjB,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AAAA,EAQA,YAAY,QAAkB,CAAC,GAAW;AACxC,QAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,aAAO,MAAM,MAAM,QAAQ,EAAE,KAAK,GAAG;AAAA,IACvC;AACA,WAAO,KAAK,IAAI,OAAO,YAAY,MAAM,OAAO,KAAK,IAAI,MAAM,CAAC;AAAA,EAClE;AAAA,EAEA,UAAyD;AACvD,UAAM,WAAW,EAAE,GAAG,KAAK,IAAI;AAC/B,WAAO,SAAS;AAChB,WAAO,SAAS;AAChB,WAAO,SAAS;AAChB,WAAO,SAAS;AAChB,UAAM,WAAW,KAAK,QAAQ,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,SAAS,CAAC;AACxE,UAAM,cAAc,OAAO,KAAK,QAAQ,EAAE,SAAS,IAAI,EAAE,YAAY,SAAS,IAAI,CAAC;AACnF,WAAO;AAAA,MACL,KAAK;AAAA,MACL,aAAa,KAAK;AAAA,MAClB,GAAG;AAAA,IACL;AAAA,EACF;AAAA,EAEA,QAAQ,QAAgB,QAAgC;AACtD,UAAM,MAAM;AAAA,MACV,GAAG,KAAK;AAAA,MACR;AAAA,IACF;AACA,QAAI,QAAQ;AACV,UAAI,SAAS;AAAA,IACf;AACA,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,KAAwD,UAAkC,IAAsB;AAC9G,QAAI;AACJ,QAAI,OAAO,aAAa,UAAU;AAChC,YAAM;AAAA,QACJ,GAAG,KAAK;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,MACV;AAAA,IACF,OAAO;AACL,YAAM;AAAA,QACJ,GAAG,KAAK;AAAA,QACR,GAAG;AAAA,QACH,QAAQ;AAAA,MACV;AAAA,IACF;AACA,QAAI,IAAI,QAAQ;AACd,YAAM;AAAA,QACJ,GAAG;AAAA,QACH,GAAG,IAAI,OAAO,WAAW;AAAA,MAC3B;AAAA,IACF;AACA,UAAM,SAAS,IAAI;AACnB,QAAI,YAAY,KAAK,OAAO,IAAI,MAAM;AACtC,QAAI,CAAC,WAAW;AACd,kBAAY,IAAI,WAAU,GAAG;AAC7B,WAAK,OAAO,IAAI,OAAO,SAAS,GAAG,SAAS;AAAA,IAC9C;AACA,UAAM,aAAuE;AAAA,MAC3E,OAAO,KAAK,IAAI,KAAK,IAAI,EAAE,QAAQ;AAAA,MACnC,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AACA,cAAU,YAAY,KAAK,UAAU;AACrC,QAAI;AACF,YAAM,kBAAkB,GAAG,SAAS;AACpC,UAAI,2BAA2B,SAAS;AACtC,eAAO,gBACJ,KAAK,CAAC,MAAM;AACX,iBAAO;AAAA,QACT,CAAC,EACA,MAAM,CAAC,MAAM;AACZ,qBAAW,SAAS;AACpB,gBAAM;AAAA,QACR,CAAC,EACA,QAAQ,MAAM;AACb,qBAAW,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,QAAQ;AAAA,QAC/C,CAAC;AAAA,MACL;AACA,iBAAW,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,QAAQ;AAC7C,aAAO;AAAA,IACT,SAAS,GAAG;AACV,iBAAW,SAAS;AACpB,iBAAW,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,QAAQ;AAC7C,YAAM;AAAA,IACR;AAAA,EACF;AACF;;;ACtHA,SAAS,YAAY,MAA0B;AAC7C,QAAM,QAAQ,IAAI,WAAW,IAAI;AACjC,MAAI,OAAO,GAAG;AACZ,WAAO,gBAAgB,KAAK;AAAA,EAC9B;AACA,SAAO;AACT;AAEA,SAAS,aAAa,MAAwC;AAC5D,SAAO,QAAQ,QAAQ,OAAO,OAAO,OAAO,WAAW,IAAI,CAAC;AAC9D;AAEO,SAAS,gBAAgB,aAAqC,CAAC,GAAkB;AACtF,QAAM,UAAU;AAAA,IACd,WAAW,WAAW,aAAa,OAAO,OAAO,UAAU,KAAK,OAAO,MAAM;AAAA,IAC7E,WAAW,WAAW,aAAa,OAAO,OAAO,UAAU,KAAK,OAAO,MAAM;AAAA,IAC7E,SAAS,WAAW,WAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,MAAM;AAAA,IACvE,SAAS,WAAW,WAAW,OAAO,OAAO,QAAQ,KAAK,OAAO,MAAM;AAAA,IACvE,aAAa,WAAW,eAAe;AAAA,IACvC,cAAc,WAAW,gBAAgB;AAAA,EAC3C;AAEA,SAAO;AACT;;;AC5HO,IAAM,UAAkB,OAAO,KAAK;AAAA,EACzC,oBAAoB;AACtB,CAAC,EAAE,CAAC;;;ACFG,IAAM,cAAN,cAA0B,QAAQ;AAAA,EAGvC,YAAY,MAA2B;AACrC,UAAM;AACN,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,CAAU,OAAO,QAAQ,IAAwC;AAC/D,WAAO,KAAK,QAAQ;AAAA,EACtB;AAAA,EAES,UAA8C;AACrD,WAAO,KAAK,SAAS,QAAQ;AAAA,EAC/B;AAAA,EACS,OAAiC;AACxC,WAAO,KAAK,SAAS,KAAK;AAAA,EAC5B;AAAA,EACS,SAAmC;AAC1C,WAAO,KAAK,SAAS,OAAO;AAAA,EAC9B;AAAA,EAES,OAAO,KAAa,OAAmD;AAC9E,UAAM,SAAS,KAAK,SAAS,IAAI,GAAG;AACpC,QAAI,OAAO,UAAU,aAAa;AAChC,cAAQ;AAAA,IACV;AACA,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACvE,OAAO;AACL,WAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACpE;AACA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,aAAN,MAAM,YAAW;AAAA,EAAjB;AACL,SAAS,WAAkC,oBAAI,IAAsB;AAAA;AAAA,EAErE,OAAO,KAAK,SAA0D;AACpE,QAAI,mBAAmB,aAAY;AACjC,aAAO,QAAQ,MAAM;AAAA,IACvB;AACA,UAAM,IAAI,IAAI,YAAW;AACzB,QAAI,SAAS;AACX,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,mBAAW,CAAC,GAAG,CAAC,KAAK,SAA+B;AAClD,cAAI,GAAG;AACL,cAAE,IAAI,GAAG,CAAC;AAAA,UACZ;AAAA,QACF;AAAA,MACF,WAAW,mBAAmB,SAAS;AACrC,mBAAW,CAAC,GAAG,CAAC,KAAK,QAAQ,QAAQ,GAAG;AACtC,cAAI,GAAG;AACL,cAAE;AAAA,cACA;AAAA,cACA,EAAE,MAAM,GAAG,EAAE,IAAI,CAACA,OAAMA,GAAE,KAAK,CAAC;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,mBAAW,KAAK,SAAS;AACvB,gBAAM,IAAK,QAA8C,CAAC;AAC1D,WAAC,MAAM,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,QAAQ,CAACA,OAAM;AAC1C,cAAE,IAAI,GAAGA,EAAC;AAAA,UACZ,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,kBAAuC;AACrC,UAAM,MAAM,oBAAI,IAAoB;AACpC,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,UAAU;AACzC,UAAI,IAAI,KAAK,OAAO,KAAK,IAAI,CAAC;AAAA,IAChC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,KAAqB;AACxB,WAAO,IAAI,YAAY;AAAA,EACzB;AAAA,EACA,OAAO,KAAuB;AAC5B,UAAM,SAAS,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,CAAC;AAC/C,WAAO,UAAU,CAAC;AAAA,EACpB;AAAA,EACA,IAAI,KAAiC;AACnC,UAAM,SAAS,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,CAAC;AAC/C,QAAI,WAAW,UAAa,OAAO,WAAW,GAAG;AAC/C,aAAO;AAAA,IACT;AACA,WAAO,OAAO,CAAC;AAAA,EACjB;AAAA,EACA,IAAI,KAAa,SAAwC;AACvD,UAAM,QAAQ,MAAM,QAAQ,OAAO,IAAI,UAAU,CAAC,OAAO;AACzD,SAAK,SAAS,IAAI,KAAK,KAAK,GAAG,GAAG,KAAK;AACvC,WAAO;AAAA,EACT;AAAA,EACA,IAAI,KAAa,OAAkD;AACjE,QAAI,OAAO,UAAU,aAAa;AAChC,aAAO;AAAA,IACT;AACA,UAAM,KAAK,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK;AAChD,UAAM,SAAS,KAAK,SAAS,IAAI,KAAK,KAAK,GAAG,CAAC;AAC/C,QAAI,WAAW,QAAW;AACxB,WAAK,SAAS,IAAI,KAAK,KAAK,GAAG,GAAG,EAAE;AAAA,IACtC,OAAO;AACL,aAAO,KAAK,GAAG,EAAE;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EACA,IAAI,IAAwB;AAC1B,SAAK,SAAS,OAAO,KAAK,KAAK,EAAE,CAAC;AAClC,WAAO;AAAA,EACT;AAAA,EACA,QAA8B;AAE5B,WAAO,MAAM,KAAK,KAAK,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;AAAA,EACpE;AAAA,EACA,YAAkC;AAChC,WAAO,KAAK,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAAA,EAC/D;AAAA,EACA,QAAoB;AAClB,UAAM,QAAQ,IAAI,YAAW;AAC7B,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,QAAQ,GAAG;AACnD,YAAM,SAAS,IAAI,KAAK,OAAO,MAAM,CAAC;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AAAA,EACA,4BAAsD;AACpD,UAAM,MAAgC,CAAC;AACvC,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,QAAQ,GAAG;AACnD,UAAI,GAAG,IAAI,CAAC,GAAG,MAAM;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AAAA,EACA,uBAA+C;AAC7C,UAAM,MAA8B,CAAC;AACrC,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,QAAQ,GAAG;AACnD,UAAI,GAAG,IAAI,OAAO,KAAK,IAAI;AAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAAA,EACA,eAA4B;AAC1B,UAAM,MAAmB,CAAC;AAC1B,eAAW,CAAC,KAAK,MAAM,KAAK,KAAK,SAAS,QAAQ,GAAG;AACnD,UAAI,GAAG,IAAI,OAAO,CAAC;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AAAA,EACA,YAAqB;AACnB,WAAO,IAAI,YAAY,KAAK,gBAAgB,CAAC;AAAA,EAC/C;AAAA,EACA,MAAM,OAAgC;AACpC,UAAM,MAAM,KAAK,MAAM;AACvB,QAAI,OAAO;AACT,iBAAW,CAAC,KAAK,MAAM,KAAK,MAAM,MAAM,GAAG;AACzC,YAAI,IAAI,KAAK,MAAM;AAAA,MACrB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACF;;;ACnKA;AAMA,IAAM,cAAN,MAAqC;AAAA,EAArC;AAAA;AAAA;AAAA,EACE,QAAQ,OAAyB;AAC/B,WAAO,MAAM,IAAI,CAAC,MAAM,EAAE,QAAQ,QAAQ,EAAE,CAAC,EAAE,KAAK,GAAG;AAAA,EACzD;AAAA,EAYA,QAAQ,MAAsB;AAC5B,WAAO,sBAAK,kCAAL,WAAY,MAAM;AAAA,EAC3B;AAAA,EACA,SAAS,MAAsB;AAC7B,WAAO,sBAAK,kCAAL,WAAY,MAAM;AAAA,EAC3B;AACF;AArBA;AAIE,WAAM,SAAC,MAAqD;AAC1D,QAAM,WAAW,KAAK,MAAM,GAAG;AAC/B,QAAM,OAAO,SAAS,IAAI;AAC1B,MAAI,SAAS,UAAU,SAAS,IAAI;AAClC,WAAO,sBAAK,kCAAL,WAAY,KAAK,KAAK,GAAG,QAAQ;AAAA,EAC1C;AACA,SAAO;AAAA,IACL,SAAS,KAAK,KAAK,GAAG,QAAQ;AAAA,IAC9B,UAAU,sBAAQ;AAAA,EACpB;AACF;AASK,IAAM,UAAmB,IAAI,YAAY;;;ACFhD,IAAM,UAAN,MAAuC;AAAA,EAErC,YAAY,QAAsB;AAChC,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,MAAM,eACJ,OAEA,UACA,OACiB;AACjB,UAAM,WAAW,MAAM;AACvB,WAAO,KAAK,UAAU,UAAU,UAAU,KAAK;AAAA,EACjD;AAAA,EACA,MAAM,cACJ,OAEA,UACA,OACqB;AACrB,UAAM,WAAW,MAAM;AACvB,WAAO,KAAK,SAAS,UAAU,UAAU,KAAK;AAAA,EAChD;AAAA;AAAA,EAGA,MAAM,WAAc,OAAyB,SAA2E;AACtH,WAAO,KAAK,MAAM,MAAM,KAAK,OAAO,YAAY,KAAK,GAAG,OAAO;AAAA,EACjE;AAAA;AAAA,EAEA,UAAa,OAAsB,UAAwD,OAAiC;AAC1H,WAAO,KAAK,UAAU,OAAO,GAAG,KAAK,IAAI,MAAM,OAAO,IAAI,OAAO,UAAU,KAAK;AAAA,EAClF;AAAA;AAAA,EAEA,SAAY,OAAsB,UAAwD,OAAqC;AAC7H,WAAO,KAAK,OAAO,OAAO,KAAK,UAAU,OAAO,UAAU,KAAK,CAAC;AAAA,EAClE;AAAA;AAAA,EAGA,MAAS,OAAoB,SAAkE;AAC7F,WAAO,iBAAiB,MAAM,KAAK,MAAM,KAAK,OAAO,OAAO,KAAK,GAAG,OAAO,CAAM;AAAA,EACnF;AACF;AAEA,IAAI;AACG,SAAS,uBAAuB,SAAuC;AAC5E,MAAI,UAAU;AACd,MAAI,WAAW,YAAY,sBAAsB,GAAG;AAClD,cAAU,CAAC,CAAC;AACZ,cAAU,4BAAW,sBAAsB;AAAA,EAC7C;AACA,MAAI,WAAW,SAAS;AACtB,WAAO,IAAI,QAAQ,OAAO;AAAA,EAC5B;AACA,kBAAgB,wCAAiB,IAAI,QAAQ,sBAAsB,CAAC;AACpE,SAAO;AACT;;;AChFA,eAAsB,UAAU,OAAsD;AACpF,MAAI,iBAAiB,MAAM;AACzB,WAAO,IAAI,WAAW,MAAM,MAAM,YAAY,CAAC;AAAA,EACjD;AACA,SAAO,SAAS,KAAK;AACvB;AAEO,SAAS,SAAS,OAA0B,SAAmC;AACpF,MAAI,OAAO,UAAU,UAAU;AAC7B,YAAQ,4BAAW,IAAI,YAAY,GAAG,OAAO,KAAK;AAAA,EACpD;AACA,MAAI,iBAAiB,aAAyD;AAC5E,WAAO,IAAI,WAAW,KAAK;AAAA,EAC7B;AAEA,MAAI,iBAAiB,YAAY;AAC/B,WAAO;AAAA,EACT;AAEA,SAAO,IAAI,WAAW,KAAmC;AAC3D;AAEO,SAAS,QAAQ,OAAiC,SAA6B;AACpF,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,EACT;AACA,SAAO,IAAI,KAAK,CAAC,SAAS,OAAO,OAAO,CAAC,CAAC;AAC5C;AAEO,SAAS,YAAY,OAA0B,SAAoC;AACxF,MAAI,iBAAiB,aAAa;AAChC,WAAO;AAAA,EACT;AACA,QAAM,KAAK,SAAS,OAAO,OAAO;AAClC,SAAO,GAAG,OAAO,MAAM,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU;AAErE;","names":["v"]}