@adviser/cement 0.3.14 → 0.3.16
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.
- package/{base-sys-abstraction-8v83VyEU.d.ts → base-sys-abstraction-BnBZ6zd0.d.ts} +2 -2
- package/{base-sys-abstraction-4Vw4QGaI.d.cts → base-sys-abstraction-DAZ8tx5F.d.cts} +2 -2
- package/cf/index.cjs +46 -18
- package/cf/index.cjs.map +1 -1
- package/cf/index.d.cts +3 -3
- package/cf/index.d.ts +3 -3
- package/cf/index.js +3 -3
- package/{chunk-W53WEZWY.js → chunk-55W4AK2Z.js} +3 -5
- package/{chunk-W53WEZWY.js.map → chunk-55W4AK2Z.js.map} +1 -1
- package/{chunk-22GI5ETU.js → chunk-H3CAVBMO.js} +41 -42
- package/chunk-H3CAVBMO.js.map +1 -0
- package/{chunk-A57BAYWU.js → chunk-LXTKPZ6M.js} +10 -8
- package/chunk-LXTKPZ6M.js.map +1 -0
- package/{chunk-KY47QBK3.js → chunk-WGRZHIFK.js} +155 -152
- package/chunk-WGRZHIFK.js.map +1 -0
- package/{chunk-GLUGMVET.js → chunk-Z3IR6QEZ.js} +3 -3
- package/deno/index.cjs +46 -18
- package/deno/index.cjs.map +1 -1
- package/deno/index.d.cts +3 -3
- package/deno/index.d.ts +3 -3
- package/deno/index.js +2 -2
- package/{get-params-result-C2cbgB78.d.ts → get-params-result-4xHM5s4_.d.cts} +14 -10
- package/{get-params-result-C2cbgB78.d.cts → get-params-result-4xHM5s4_.d.ts} +14 -10
- package/index-CMLb7JSe.d.ts +97 -0
- package/{index-DixRvifF.d.cts → index-Cp1NspHH.d.cts} +10 -10
- package/{index-D2WPDt4R.d.ts → index-D1j1fPYg.d.ts} +10 -10
- package/index-LQOsS7gM.d.cts +97 -0
- package/index.cjs +370 -317
- package/index.cjs.map +1 -1
- package/index.d.cts +23 -10
- package/index.d.ts +23 -10
- package/index.js +86 -39
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/index.cjs +46 -18
- package/node/index.cjs.map +1 -1
- package/node/index.d.cts +3 -3
- package/node/index.d.ts +3 -3
- package/node/index.js +2 -2
- package/package.json +5 -4
- package/src/index.ts +4 -2
- package/src/jsr.json +1 -1
- package/src/logger.ts +8 -6
- package/src/lru-cache.ts +68 -0
- package/src/sys-abstraction.ts +18 -15
- package/src/time.ts +7 -9
- package/src/types.ts +19 -0
- package/src/uri.ts +4 -3
- package/src/utils/get-params-result.ts +2 -18
- package/src/utils/relative-path.ts +8 -6
- package/{sys-abstraction-3OXhCVsu.d.cts → sys-abstraction-B0x6IE7r.d.ts} +27 -23
- package/{sys-abstraction-DXeSUn9x.d.ts → sys-abstraction-BTs3Vzy4.d.cts} +27 -23
- package/test/index.cjs +87 -46
- package/test/index.cjs.map +1 -1
- package/test/index.d.cts +3 -3
- package/test/index.d.ts +3 -3
- package/test/index.js +4 -4
- package/ts/src/index.d.ts +2 -2
- package/ts/src/index.d.ts.map +1 -1
- package/ts/src/index.js +2 -2
- package/ts/src/index.js.map +1 -1
- package/ts/src/logger.d.ts +7 -6
- package/ts/src/logger.d.ts.map +1 -1
- package/ts/src/logger.js +6 -7
- package/ts/src/logger.js.map +1 -1
- package/ts/src/lru-cache.d.ts +15 -0
- package/ts/src/lru-cache.d.ts.map +1 -0
- package/ts/src/lru-cache.js +46 -0
- package/ts/src/lru-cache.js.map +1 -0
- package/ts/src/lru-cache.test.d.ts +2 -0
- package/ts/src/lru-cache.test.d.ts.map +1 -0
- package/ts/src/lru-cache.test.js +54 -0
- package/ts/src/lru-cache.test.js.map +1 -0
- package/ts/src/sys-abstraction.d.ts +18 -15
- package/ts/src/sys-abstraction.d.ts.map +1 -1
- package/ts/src/sys-abstraction.js +15 -18
- package/ts/src/sys-abstraction.js.map +1 -1
- package/ts/src/sys-env.test.js +1 -2
- package/ts/src/sys-env.test.js.map +1 -1
- package/ts/src/time.d.ts +7 -6
- package/ts/src/time.d.ts.map +1 -1
- package/ts/src/time.js +6 -7
- package/ts/src/time.js.map +1 -1
- package/ts/src/types.d.ts +16 -0
- package/ts/src/types.d.ts.map +1 -0
- package/ts/src/types.js +15 -0
- package/ts/src/types.js.map +1 -0
- package/ts/src/uri.d.ts +0 -1
- package/ts/src/uri.d.ts.map +1 -1
- package/ts/src/uri.js +1 -2
- package/ts/src/uri.js.map +1 -1
- package/ts/src/utils/get-params-result.d.ts +2 -13
- package/ts/src/utils/get-params-result.d.ts.map +1 -1
- package/ts/src/utils/get-params-result.js +1 -14
- package/ts/src/utils/get-params-result.js.map +1 -1
- package/ts/src/utils/relative-path.d.ts +7 -6
- package/ts/src/utils/relative-path.d.ts.map +1 -1
- package/ts/src/utils/relative-path.js +6 -7
- package/ts/src/utils/relative-path.js.map +1 -1
- package/utils/index.cjs +9 -9
- package/utils/index.cjs.map +1 -1
- package/utils/index.d.cts +2 -2
- package/utils/index.d.ts +2 -2
- package/utils/index.js +3 -5
- package/web/index.cjs +46 -18
- package/web/index.cjs.map +1 -1
- package/web/index.d.cts +3 -3
- package/web/index.d.ts +3 -3
- package/web/index.js +3 -3
- package/chunk-22GI5ETU.js.map +0 -1
- package/chunk-A57BAYWU.js.map +0 -1
- package/chunk-KY47QBK3.js.map +0 -1
- package/index-Dpc3oVOD.d.cts +0 -99
- package/index-MWn9Xel9.d.ts +0 -99
- /package/{chunk-GLUGMVET.js.map → chunk-Z3IR6QEZ.js.map} +0 -0
package/index.d.cts
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
import { S as SysAbstraction, T as Time } from './sys-abstraction-
|
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, k as TimeUnits, V as VoidFunc, j as envFactory, r as registerEnvAction } from './sys-abstraction-
|
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-
|
4
|
-
export { B as BuildURI,
|
5
|
-
import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder
|
6
|
-
export { k as ResultError, j as ResultOK, i as TxtEnDecoderSingleton, W as WithoutResult, l as exception2Result } from './get-params-result-
|
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-
|
8
|
-
export {
|
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-Cp1NspHH.cjs';
|
4
|
+
export { B as BuildURI, u 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, q as MockLogger, M as MockLoggerReturn, w as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, z as URI, U as URIInterface, t as URIObject, s as WithoutOption, g as asyncLogValue, y as hasHostPartProtocols, x as isCoerceURI, v as isURL, l as logValue } from './index-Cp1NspHH.cjs';
|
5
|
+
import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder } from './get-params-result-4xHM5s4_.cjs';
|
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';
|
8
|
+
export { i as utils } from './index-LQOsS7gM.cjs';
|
9
9
|
import './stripper-BpBUUZ9p.cjs';
|
10
10
|
|
11
11
|
declare class LogWriterStream {
|
@@ -345,6 +345,19 @@ interface JSONEnDecoder {
|
|
345
345
|
}
|
346
346
|
declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
|
347
347
|
|
348
|
-
|
348
|
+
interface LRUCacheParam {
|
349
|
+
readonly maxEntries: number;
|
350
|
+
readonly maxAge: number;
|
351
|
+
}
|
352
|
+
declare class LRUCache<T, K> {
|
353
|
+
private cache;
|
354
|
+
private param;
|
355
|
+
constructor(c?: Partial<LRUCacheParam>);
|
356
|
+
private touch;
|
357
|
+
get size(): number;
|
358
|
+
getPut(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined>;
|
359
|
+
get(key: T): K | undefined;
|
360
|
+
put(key: T, value: K): void;
|
361
|
+
}
|
349
362
|
|
350
|
-
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, KeyedResolvOnce, KeyedResolvSeq, 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,
|
363
|
+
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, KeyedResolvOnce, KeyedResolvSeq, LRUCache, type LRUCacheParam, 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 };
|
package/index.d.ts
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
import { S as SysAbstraction, T as Time } from './sys-abstraction-
|
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, k as TimeUnits, V as VoidFunc, j as envFactory, r as registerEnvAction } from './sys-abstraction-
|
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-
|
4
|
-
export { B as BuildURI,
|
5
|
-
import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder
|
6
|
-
export { k as ResultError, j as ResultOK, i as TxtEnDecoderSingleton, W as WithoutResult, l as exception2Result } from './get-params-result-
|
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-
|
8
|
-
export {
|
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-D1j1fPYg.js';
|
4
|
+
export { B as BuildURI, u 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, q as MockLogger, M as MockLoggerReturn, w as MutableURL, N as None, P as PathURIObject, S as Serialized, m as SizeOrLength, j as Sized, r as Some, z as URI, U as URIInterface, t as URIObject, s as WithoutOption, g as asyncLogValue, y as hasHostPartProtocols, x as isCoerceURI, v as isURL, l as logValue } from './index-D1j1fPYg.js';
|
5
|
+
import { T as TxtEnDecoder, R as Result, f as ToEnDecoder, h as AsyncToEnDecoder } from './get-params-result-4xHM5s4_.js';
|
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';
|
8
|
+
export { i as utils } from './index-CMLb7JSe.js';
|
9
9
|
import './stripper-BpBUUZ9p.js';
|
10
10
|
|
11
11
|
declare class LogWriterStream {
|
@@ -345,6 +345,19 @@ interface JSONEnDecoder {
|
|
345
345
|
}
|
346
346
|
declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
|
347
347
|
|
348
|
-
|
348
|
+
interface LRUCacheParam {
|
349
|
+
readonly maxEntries: number;
|
350
|
+
readonly maxAge: number;
|
351
|
+
}
|
352
|
+
declare class LRUCache<T, K> {
|
353
|
+
private cache;
|
354
|
+
private param;
|
355
|
+
constructor(c?: Partial<LRUCacheParam>);
|
356
|
+
private touch;
|
357
|
+
get size(): number;
|
358
|
+
getPut(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined>;
|
359
|
+
get(key: T): K | undefined;
|
360
|
+
put(key: T, value: K): void;
|
361
|
+
}
|
349
362
|
|
350
|
-
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, KeyedResolvOnce, KeyedResolvSeq, 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,
|
363
|
+
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, KeyedResolvOnce, KeyedResolvSeq, LRUCache, type LRUCacheParam, 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 };
|
package/index.js
CHANGED
@@ -22,14 +22,13 @@ import {
|
|
22
22
|
hasHostPartProtocols,
|
23
23
|
isCoerceURI,
|
24
24
|
isURL,
|
25
|
-
key,
|
26
25
|
logValue
|
27
|
-
} from "./chunk-
|
26
|
+
} from "./chunk-WGRZHIFK.js";
|
28
27
|
import {
|
29
28
|
utils_exports
|
30
|
-
} from "./chunk-
|
29
|
+
} from "./chunk-55W4AK2Z.js";
|
31
30
|
import "./chunk-PHS255C5.js";
|
32
|
-
import "./chunk-
|
31
|
+
import "./chunk-Z3IR6QEZ.js";
|
33
32
|
import {
|
34
33
|
BaseSysAbstraction,
|
35
34
|
ConstTime,
|
@@ -55,7 +54,7 @@ import {
|
|
55
54
|
envFactory,
|
56
55
|
registerEnvAction,
|
57
56
|
runtimeFn
|
58
|
-
} from "./chunk-
|
57
|
+
} from "./chunk-H3CAVBMO.js";
|
59
58
|
import {
|
60
59
|
Result,
|
61
60
|
ResultError,
|
@@ -65,7 +64,7 @@ import {
|
|
65
64
|
__privateMethod,
|
66
65
|
exception2Result,
|
67
66
|
param
|
68
|
-
} from "./chunk-
|
67
|
+
} from "./chunk-LXTKPZ6M.js";
|
69
68
|
|
70
69
|
// src/tracer.ts
|
71
70
|
var Metric = class {
|
@@ -99,8 +98,8 @@ var Metrics = class {
|
|
99
98
|
}
|
100
99
|
toJSON() {
|
101
100
|
const obj = {};
|
102
|
-
for (const [
|
103
|
-
obj[
|
101
|
+
for (const [key, value] of this.map) {
|
102
|
+
obj[key] = value.value;
|
104
103
|
}
|
105
104
|
return obj;
|
106
105
|
}
|
@@ -273,15 +272,15 @@ var HeadersImpl = class extends Headers {
|
|
273
272
|
values() {
|
274
273
|
return this._headers.values();
|
275
274
|
}
|
276
|
-
append(
|
277
|
-
const values = this._headers.get(
|
275
|
+
append(key, value) {
|
276
|
+
const values = this._headers.get(key);
|
278
277
|
if (typeof value === "undefined") {
|
279
278
|
value = "";
|
280
279
|
}
|
281
280
|
if (Array.isArray(value)) {
|
282
|
-
this._headers.set(
|
281
|
+
this._headers.set(key, [values, ...value].filter((i) => i).join(", "));
|
283
282
|
} else {
|
284
|
-
this._headers.set(
|
283
|
+
this._headers.set(key, [values, value].filter((i) => i).join(", "));
|
285
284
|
}
|
286
285
|
return this;
|
287
286
|
}
|
@@ -324,38 +323,38 @@ var HttpHeader = class _HttpHeader {
|
|
324
323
|
}
|
325
324
|
_asStringString() {
|
326
325
|
const ret = /* @__PURE__ */ new Map();
|
327
|
-
for (const [
|
328
|
-
ret.set(
|
326
|
+
for (const [key, values] of this._headers) {
|
327
|
+
ret.set(key, values.join(", "));
|
329
328
|
}
|
330
329
|
return ret;
|
331
330
|
}
|
332
|
-
_key(
|
333
|
-
return
|
331
|
+
_key(key) {
|
332
|
+
return key.toLowerCase();
|
334
333
|
}
|
335
|
-
Values(
|
336
|
-
const values = this._headers.get(this._key(
|
334
|
+
Values(key) {
|
335
|
+
const values = this._headers.get(this._key(key));
|
337
336
|
return values || [];
|
338
337
|
}
|
339
|
-
Get(
|
340
|
-
const values = this._headers.get(this._key(
|
338
|
+
Get(key) {
|
339
|
+
const values = this._headers.get(this._key(key));
|
341
340
|
if (values === void 0 || values.length === 0) {
|
342
341
|
return void 0;
|
343
342
|
}
|
344
343
|
return values[0];
|
345
344
|
}
|
346
|
-
Set(
|
345
|
+
Set(key, valueOr) {
|
347
346
|
const value = Array.isArray(valueOr) ? valueOr : [valueOr];
|
348
|
-
this._headers.set(this._key(
|
347
|
+
this._headers.set(this._key(key), value);
|
349
348
|
return this;
|
350
349
|
}
|
351
|
-
Add(
|
350
|
+
Add(key, value) {
|
352
351
|
if (typeof value === "undefined") {
|
353
352
|
return this;
|
354
353
|
}
|
355
354
|
const vs = Array.isArray(value) ? value : [value];
|
356
|
-
const values = this._headers.get(this._key(
|
355
|
+
const values = this._headers.get(this._key(key));
|
357
356
|
if (values === void 0) {
|
358
|
-
this._headers.set(this._key(
|
357
|
+
this._headers.set(this._key(key), vs);
|
359
358
|
} else {
|
360
359
|
values.push(...vs);
|
361
360
|
}
|
@@ -373,29 +372,29 @@ var HttpHeader = class _HttpHeader {
|
|
373
372
|
}
|
374
373
|
Clone() {
|
375
374
|
const clone = new _HttpHeader();
|
376
|
-
for (const [
|
377
|
-
clone._headers.set(
|
375
|
+
for (const [key, values] of this._headers.entries()) {
|
376
|
+
clone._headers.set(key, values.slice());
|
378
377
|
}
|
379
378
|
return clone;
|
380
379
|
}
|
381
380
|
AsRecordStringStringArray() {
|
382
381
|
const obj = {};
|
383
|
-
for (const [
|
384
|
-
obj[
|
382
|
+
for (const [key, values] of this._headers.entries()) {
|
383
|
+
obj[key] = [...values];
|
385
384
|
}
|
386
385
|
return obj;
|
387
386
|
}
|
388
387
|
AsRecordStringString() {
|
389
388
|
const obj = {};
|
390
|
-
for (const [
|
391
|
-
obj[
|
389
|
+
for (const [key, values] of this._headers.entries()) {
|
390
|
+
obj[key] = values.join(", ");
|
392
391
|
}
|
393
392
|
return obj;
|
394
393
|
}
|
395
394
|
AsHeaderInit() {
|
396
395
|
const obj = {};
|
397
|
-
for (const [
|
398
|
-
obj[
|
396
|
+
for (const [key, values] of this._headers.entries()) {
|
397
|
+
obj[key] = values[0];
|
399
398
|
}
|
400
399
|
return obj;
|
401
400
|
}
|
@@ -405,8 +404,8 @@ var HttpHeader = class _HttpHeader {
|
|
405
404
|
Merge(other) {
|
406
405
|
const ret = this.Clone();
|
407
406
|
if (other) {
|
408
|
-
for (const [
|
409
|
-
ret.Add(
|
407
|
+
for (const [key, values] of other.Items()) {
|
408
|
+
ret.Add(key, values);
|
410
409
|
}
|
411
410
|
}
|
412
411
|
return ret;
|
@@ -487,8 +486,56 @@ function JSONEnDecoderSingleton(txtEnde) {
|
|
487
486
|
return jsonEnDecoder;
|
488
487
|
}
|
489
488
|
|
490
|
-
// src/
|
491
|
-
var
|
489
|
+
// src/lru-cache.ts
|
490
|
+
var LRUCache = class {
|
491
|
+
constructor(c = {}) {
|
492
|
+
this.cache = /* @__PURE__ */ new Map();
|
493
|
+
this.param = {
|
494
|
+
maxEntries: c.maxEntries || 100,
|
495
|
+
maxAge: c.maxAge || 0
|
496
|
+
};
|
497
|
+
}
|
498
|
+
touch(key) {
|
499
|
+
const value = this.cache.get(key);
|
500
|
+
this.cache.delete(key);
|
501
|
+
this.cache.set(key, value);
|
502
|
+
return value;
|
503
|
+
}
|
504
|
+
get size() {
|
505
|
+
return this.cache.size;
|
506
|
+
}
|
507
|
+
async getPut(key, createFN) {
|
508
|
+
const val = this.get(key);
|
509
|
+
if (val) {
|
510
|
+
return val;
|
511
|
+
} else {
|
512
|
+
const val2 = await createFN(key);
|
513
|
+
this.put(key, val2);
|
514
|
+
return val2;
|
515
|
+
}
|
516
|
+
}
|
517
|
+
get(key) {
|
518
|
+
if (this.cache.has(key)) {
|
519
|
+
return this.touch(key);
|
520
|
+
}
|
521
|
+
return this.cache.get(key);
|
522
|
+
}
|
523
|
+
put(key, value) {
|
524
|
+
this.cache.delete(key);
|
525
|
+
if (this.cache.size >= this.param.maxEntries) {
|
526
|
+
this.cache.delete(this.cache.keys().next().value);
|
527
|
+
this.cache.set(key, value);
|
528
|
+
} else {
|
529
|
+
this.cache.set(key, value);
|
530
|
+
}
|
531
|
+
}
|
532
|
+
// getLeastRecent(): K {
|
533
|
+
// return Array.from(this.cache)[0];
|
534
|
+
// }
|
535
|
+
// getMostRecent(): K {
|
536
|
+
// return Array.from(this.cache)[this.cache.size - 1];
|
537
|
+
// }
|
538
|
+
};
|
492
539
|
export {
|
493
540
|
BaseSysAbstraction,
|
494
541
|
BuildURI,
|
@@ -505,6 +552,7 @@ export {
|
|
505
552
|
Keyed,
|
506
553
|
KeyedResolvOnce,
|
507
554
|
KeyedResolvSeq,
|
555
|
+
LRUCache,
|
508
556
|
Level,
|
509
557
|
LevelHandlerImpl,
|
510
558
|
LevelHandlerSingleton,
|
@@ -547,9 +595,8 @@ export {
|
|
547
595
|
hasHostPartProtocols,
|
548
596
|
isCoerceURI,
|
549
597
|
isURL,
|
550
|
-
key,
|
551
598
|
logValue,
|
552
|
-
|
599
|
+
param,
|
553
600
|
pathOps,
|
554
601
|
registerEnvAction,
|
555
602
|
runtimeFn,
|
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","../../src/index.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 * from \"./file-service.js\";\nexport * from \"./logger-impl.js\";\nexport * from \"./logger.js\";\nexport * from \"./sys-abstraction.js\";\nexport * from \"./sys-env.js\";\nexport * from \"./time.js\";\nexport * from \"./test/index.js\";\nexport * from \"./txt-en-decoder.js\";\nexport * from \"./log-level-impl.js\";\nexport * from \"./result.js\";\nexport * from \"./option.js\";\nexport * from \"./future.js\";\nexport * from \"./tracer.js\";\nexport * from \"./resolve-once.js\";\nexport * from \"./runtime.js\";\nexport * from \"./uri.js\";\nexport * from \"./crypto.js\";\nexport * from \"./base-sys-abstraction.js\";\nexport * from \"./bin2text.js\";\nexport * from \"./version.js\";\nexport * from \"./http_header.js\";\nexport * from \"./path-ops.js\";\nexport * from \"./json-en-decoder.js\";\n\n// ugly\nexport * as utils from \"./utils/index.js\";\nimport * as utils from \"./utils/index.js\";\n\nexport const param = utils.param;\n"],"mappings":"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","names":["key","key","v","param"]}
|
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/lru-cache.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 interface LRUCacheParam {\n readonly maxEntries: number;\n readonly maxAge: number;\n}\nexport class LRUCache<T, K> {\n private cache: Map<T, K> = new Map<T, K>();\n private param: LRUCacheParam;\n\n constructor(c: Partial<LRUCacheParam> = {}) {\n this.param = {\n maxEntries: c.maxEntries || 100,\n maxAge: c.maxAge || 0,\n };\n }\n\n private touch(key: T): K {\n // there could be undefined or null in value\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const value = this.cache.get(key)!;\n this.cache.delete(key);\n this.cache.set(key, value);\n return value;\n }\n\n get size(): number {\n return this.cache.size;\n }\n\n async getPut(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined> {\n const val = this.get(key);\n if (val) {\n return val;\n } else {\n const val = await createFN(key);\n this.put(key, val as K);\n return val;\n }\n }\n\n get(key: T): K | undefined {\n if (this.cache.has(key)) {\n return this.touch(key);\n }\n return this.cache.get(key);\n }\n\n put(key: T, value: K): void {\n this.cache.delete(key);\n if (this.cache.size >= this.param.maxEntries) {\n // delete the least recently accessed\n // const key = Array.from(this.cache.keys())[0];\n // this.cache.delete(key) or\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.cache.delete(this.cache.keys().next().value!);\n this.cache.set(key, value);\n } else {\n this.cache.set(key, value);\n }\n }\n\n // getLeastRecent(): K {\n // return Array.from(this.cache)[0];\n // }\n\n // getMostRecent(): K {\n // return Array.from(this.cache)[this.cache.size - 1];\n // }\n}\n"],"mappings":"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","names":["v","val"]}
|