@adviser/cement 0.3.16 → 0.3.18
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/cf/index.cjs +102 -4
- package/cf/index.cjs.map +1 -1
- package/cf/index.js +2 -2
- package/{chunk-Z3IR6QEZ.js → chunk-ERFPFVXB.js} +2 -2
- package/{chunk-H3CAVBMO.js → chunk-NYHENJUJ.js} +136 -7
- package/chunk-NYHENJUJ.js.map +1 -0
- package/{chunk-WGRZHIFK.js → chunk-RQKI6UPM.js} +3 -3
- package/deno/index.cjs +102 -4
- package/deno/index.cjs.map +1 -1
- package/deno/index.js +1 -1
- package/index.cjs +137 -59
- package/index.cjs.map +1 -1
- package/index.d.cts +41 -20
- package/index.d.ts +41 -20
- package/index.js +7 -55
- package/index.js.map +1 -1
- package/metafile-cjs.json +1 -1
- package/metafile-esm.json +1 -1
- package/node/index.cjs +102 -4
- package/node/index.cjs.map +1 -1
- package/node/index.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -1
- package/src/jsr.json +1 -1
- package/src/lru-map-set.ts +153 -0
- package/src/resolve-once.ts +16 -6
- package/test/index.cjs +102 -4
- package/test/index.cjs.map +1 -1
- package/test/index.js +3 -3
- package/ts/src/index.d.ts +1 -1
- package/ts/src/index.d.ts.map +1 -1
- package/ts/src/index.js +1 -1
- package/ts/src/index.js.map +1 -1
- package/ts/src/lru-map-set.d.ts +32 -0
- package/ts/src/lru-map-set.d.ts.map +1 -0
- package/ts/src/lru-map-set.js +114 -0
- package/ts/src/lru-map-set.js.map +1 -0
- package/ts/src/lru-map-set.test.d.ts +2 -0
- package/ts/src/lru-map-set.test.d.ts.map +1 -0
- package/ts/src/lru-map-set.test.js +81 -0
- package/ts/src/lru-map-set.test.js.map +1 -0
- package/ts/src/resolve-once.d.ts +9 -4
- package/ts/src/resolve-once.d.ts.map +1 -1
- package/ts/src/resolve-once.js +11 -6
- package/ts/src/resolve-once.js.map +1 -1
- package/ts/src/resolve-once.test.js +10 -0
- package/ts/src/resolve-once.test.js.map +1 -1
- package/web/index.cjs +102 -4
- package/web/index.cjs.map +1 -1
- package/web/index.js +2 -2
- package/chunk-H3CAVBMO.js.map +0 -1
- package/src/lru-cache.ts +0 -68
- package/ts/src/lru-cache.d.ts +0 -15
- package/ts/src/lru-cache.d.ts.map +0 -1
- package/ts/src/lru-cache.js +0 -46
- package/ts/src/lru-cache.js.map +0 -1
- package/ts/src/lru-cache.test.d.ts +0 -2
- package/ts/src/lru-cache.test.d.ts.map +0 -1
- package/ts/src/lru-cache.test.js +0 -54
- package/ts/src/lru-cache.test.js.map +0 -1
- /package/{chunk-Z3IR6QEZ.js.map → chunk-ERFPFVXB.js.map} +0 -0
- /package/{chunk-WGRZHIFK.js.map → chunk-RQKI6UPM.js.map} +0 -0
package/index.d.cts
CHANGED
@@ -159,6 +159,38 @@ declare class TraceNode {
|
|
159
159
|
span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V>;
|
160
160
|
}
|
161
161
|
|
162
|
+
interface LRUParam {
|
163
|
+
readonly maxEntries: number;
|
164
|
+
readonly maxAge: number;
|
165
|
+
}
|
166
|
+
declare class LRUSet<T> {
|
167
|
+
private _lruMap;
|
168
|
+
setParam(param?: Partial<LRUParam>): void;
|
169
|
+
get size(): number;
|
170
|
+
has(key: T): boolean;
|
171
|
+
add(key: T): void;
|
172
|
+
delete(key: T): void;
|
173
|
+
clear(): void;
|
174
|
+
forEach(callbackfn: (value: T, key: T) => void): void;
|
175
|
+
entries(): IterableIterator<[T, T]>;
|
176
|
+
}
|
177
|
+
declare class LRUMap<T, K> {
|
178
|
+
private _map;
|
179
|
+
private param;
|
180
|
+
constructor(c?: Partial<LRUParam>);
|
181
|
+
private touch;
|
182
|
+
setParam(param?: Partial<LRUParam>): void;
|
183
|
+
has(key: T): boolean;
|
184
|
+
get size(): number;
|
185
|
+
getSet(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined>;
|
186
|
+
get(key: T): K | undefined;
|
187
|
+
set(key: T, value: K): void;
|
188
|
+
delete(key: T): void;
|
189
|
+
clear(): void;
|
190
|
+
forEach(callbackfn: (value: K, key: T, map: Map<T, K>) => void): void;
|
191
|
+
entries(): IterableIterator<[T, K]>;
|
192
|
+
}
|
193
|
+
|
162
194
|
interface ResolveSeqItem<T, C> {
|
163
195
|
readonly future: Future<T>;
|
164
196
|
readonly fn: (c: C) => Promise<T>;
|
@@ -188,26 +220,30 @@ declare class ResolveOnce<T, CTX = void> {
|
|
188
220
|
reset(): void;
|
189
221
|
once<R>(fn: (c: CTX) => R): R;
|
190
222
|
}
|
223
|
+
interface KeyedParam {
|
224
|
+
readonly lru: Partial<LRUParam>;
|
225
|
+
}
|
191
226
|
declare class Keyed<T extends {
|
192
227
|
reset: () => void;
|
193
228
|
}, K = string> {
|
194
|
-
protected readonly _map:
|
229
|
+
protected readonly _map: LRUMap<K, T>;
|
195
230
|
readonly factory: (key: K) => T;
|
196
|
-
constructor(factory: (key: K) => T);
|
231
|
+
constructor(factory: (key: K) => T, params: Partial<KeyedParam>);
|
232
|
+
setParam(params: KeyedParam): void;
|
197
233
|
asyncGet(key: () => Promise<K>): Promise<T>;
|
198
234
|
get(key: K | (() => K)): T;
|
199
235
|
unget(key: K): void;
|
200
236
|
reset(): void;
|
201
237
|
}
|
202
238
|
declare class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {
|
203
|
-
constructor();
|
239
|
+
constructor(kp?: Partial<KeyedParam>);
|
204
240
|
values(): {
|
205
241
|
key: K;
|
206
242
|
value: Result<T>;
|
207
243
|
}[];
|
208
244
|
}
|
209
245
|
declare class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {
|
210
|
-
constructor();
|
246
|
+
constructor(kp?: Partial<KeyedParam>);
|
211
247
|
}
|
212
248
|
|
213
249
|
interface Runtime {
|
@@ -345,19 +381,4 @@ interface JSONEnDecoder {
|
|
345
381
|
}
|
346
382
|
declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
|
347
383
|
|
348
|
-
|
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
|
-
}
|
362
|
-
|
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 };
|
384
|
+
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 };
|
package/index.d.ts
CHANGED
@@ -159,6 +159,38 @@ declare class TraceNode {
|
|
159
159
|
span<V extends (trace: TraceNode) => Promise<T> | T, T>(inSpanId: string | TraceCtxParam, fn: V): ReturnType<V>;
|
160
160
|
}
|
161
161
|
|
162
|
+
interface LRUParam {
|
163
|
+
readonly maxEntries: number;
|
164
|
+
readonly maxAge: number;
|
165
|
+
}
|
166
|
+
declare class LRUSet<T> {
|
167
|
+
private _lruMap;
|
168
|
+
setParam(param?: Partial<LRUParam>): void;
|
169
|
+
get size(): number;
|
170
|
+
has(key: T): boolean;
|
171
|
+
add(key: T): void;
|
172
|
+
delete(key: T): void;
|
173
|
+
clear(): void;
|
174
|
+
forEach(callbackfn: (value: T, key: T) => void): void;
|
175
|
+
entries(): IterableIterator<[T, T]>;
|
176
|
+
}
|
177
|
+
declare class LRUMap<T, K> {
|
178
|
+
private _map;
|
179
|
+
private param;
|
180
|
+
constructor(c?: Partial<LRUParam>);
|
181
|
+
private touch;
|
182
|
+
setParam(param?: Partial<LRUParam>): void;
|
183
|
+
has(key: T): boolean;
|
184
|
+
get size(): number;
|
185
|
+
getSet(key: T, createFN: (key: T) => Promise<K>): Promise<K | undefined>;
|
186
|
+
get(key: T): K | undefined;
|
187
|
+
set(key: T, value: K): void;
|
188
|
+
delete(key: T): void;
|
189
|
+
clear(): void;
|
190
|
+
forEach(callbackfn: (value: K, key: T, map: Map<T, K>) => void): void;
|
191
|
+
entries(): IterableIterator<[T, K]>;
|
192
|
+
}
|
193
|
+
|
162
194
|
interface ResolveSeqItem<T, C> {
|
163
195
|
readonly future: Future<T>;
|
164
196
|
readonly fn: (c: C) => Promise<T>;
|
@@ -188,26 +220,30 @@ declare class ResolveOnce<T, CTX = void> {
|
|
188
220
|
reset(): void;
|
189
221
|
once<R>(fn: (c: CTX) => R): R;
|
190
222
|
}
|
223
|
+
interface KeyedParam {
|
224
|
+
readonly lru: Partial<LRUParam>;
|
225
|
+
}
|
191
226
|
declare class Keyed<T extends {
|
192
227
|
reset: () => void;
|
193
228
|
}, K = string> {
|
194
|
-
protected readonly _map:
|
229
|
+
protected readonly _map: LRUMap<K, T>;
|
195
230
|
readonly factory: (key: K) => T;
|
196
|
-
constructor(factory: (key: K) => T);
|
231
|
+
constructor(factory: (key: K) => T, params: Partial<KeyedParam>);
|
232
|
+
setParam(params: KeyedParam): void;
|
197
233
|
asyncGet(key: () => Promise<K>): Promise<T>;
|
198
234
|
get(key: K | (() => K)): T;
|
199
235
|
unget(key: K): void;
|
200
236
|
reset(): void;
|
201
237
|
}
|
202
238
|
declare class KeyedResolvOnce<T, K = string> extends Keyed<ResolveOnce<T, K>, K> {
|
203
|
-
constructor();
|
239
|
+
constructor(kp?: Partial<KeyedParam>);
|
204
240
|
values(): {
|
205
241
|
key: K;
|
206
242
|
value: Result<T>;
|
207
243
|
}[];
|
208
244
|
}
|
209
245
|
declare class KeyedResolvSeq<T, K = string> extends Keyed<ResolveSeq<T, K>, K> {
|
210
|
-
constructor();
|
246
|
+
constructor(kp?: Partial<KeyedParam>);
|
211
247
|
}
|
212
248
|
|
213
249
|
interface Runtime {
|
@@ -345,19 +381,4 @@ interface JSONEnDecoder {
|
|
345
381
|
}
|
346
382
|
declare function JSONEnDecoderSingleton(txtEnde?: TxtEnDecoder): JSONEnDecoder;
|
347
383
|
|
348
|
-
|
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
|
-
}
|
362
|
-
|
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 };
|
384
|
+
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 };
|
package/index.js
CHANGED
@@ -23,12 +23,12 @@ import {
|
|
23
23
|
isCoerceURI,
|
24
24
|
isURL,
|
25
25
|
logValue
|
26
|
-
} from "./chunk-
|
26
|
+
} from "./chunk-RQKI6UPM.js";
|
27
27
|
import {
|
28
28
|
utils_exports
|
29
29
|
} from "./chunk-55W4AK2Z.js";
|
30
30
|
import "./chunk-PHS255C5.js";
|
31
|
-
import "./chunk-
|
31
|
+
import "./chunk-ERFPFVXB.js";
|
32
32
|
import {
|
33
33
|
BaseSysAbstraction,
|
34
34
|
ConstTime,
|
@@ -39,6 +39,8 @@ import {
|
|
39
39
|
Keyed,
|
40
40
|
KeyedResolvOnce,
|
41
41
|
KeyedResolvSeq,
|
42
|
+
LRUMap,
|
43
|
+
LRUSet,
|
42
44
|
RandomMode,
|
43
45
|
RandomService,
|
44
46
|
ResolveOnce,
|
@@ -54,7 +56,7 @@ import {
|
|
54
56
|
envFactory,
|
55
57
|
registerEnvAction,
|
56
58
|
runtimeFn
|
57
|
-
} from "./chunk-
|
59
|
+
} from "./chunk-NYHENJUJ.js";
|
58
60
|
import {
|
59
61
|
Result,
|
60
62
|
ResultError,
|
@@ -485,57 +487,6 @@ function JSONEnDecoderSingleton(txtEnde) {
|
|
485
487
|
jsonEnDecoder = jsonEnDecoder != null ? jsonEnDecoder : new JSONOps(TxtEnDecoderSingleton());
|
486
488
|
return jsonEnDecoder;
|
487
489
|
}
|
488
|
-
|
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
|
-
};
|
539
490
|
export {
|
540
491
|
BaseSysAbstraction,
|
541
492
|
BuildURI,
|
@@ -552,7 +503,8 @@ export {
|
|
552
503
|
Keyed,
|
553
504
|
KeyedResolvOnce,
|
554
505
|
KeyedResolvSeq,
|
555
|
-
|
506
|
+
LRUMap,
|
507
|
+
LRUSet,
|
556
508
|
Level,
|
557
509
|
LevelHandlerImpl,
|
558
510
|
LevelHandlerSingleton,
|
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/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"]}
|
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"]}
|