@adviser/cement 0.2.17 → 0.2.18
Sign up to get free protection for your applications and to get access to all the features.
- package/{sys_abstraction-CmSCeK7b.d.cts → base-sys-abstraction-BzVP_lX0.d.cts} +77 -1
- package/{sys_abstraction-CmSCeK7b.d.ts → base-sys-abstraction-BzVP_lX0.d.ts} +77 -1
- package/chunk-AO7BGISE.js +353 -0
- package/chunk-AO7BGISE.js.map +1 -0
- package/{chunk-J2IM7FHM.js → chunk-I4NUGWZ6.js} +6 -1
- package/{chunk-XJF7FQUN.js → chunk-LJRKN3XI.js} +3 -3
- package/{chunk-XJF7FQUN.js.map → chunk-LJRKN3XI.js.map} +1 -1
- package/{chunk-O4F5AURC.js → chunk-P4FB5FHU.js} +185 -179
- package/chunk-P4FB5FHU.js.map +1 -0
- package/index-_GuS2IT4.d.cts +93 -0
- package/index-_GuS2IT4.d.ts +93 -0
- package/index.cjs +362 -102
- package/index.cjs.map +1 -1
- package/index.d.cts +8 -18
- package/index.d.ts +8 -18
- package/index.js +33 -98
- package/index.js.map +1 -1
- package/node/index.cjs +5 -5
- package/node/index.cjs.map +1 -1
- package/node/index.d.cts +1 -2
- package/node/index.d.ts +1 -2
- package/node/index.js +5 -5
- package/node/index.js.map +1 -1
- package/package.json +1 -1
- package/utils/index.cjs +98 -2
- package/utils/index.cjs.map +1 -1
- package/utils/index.d.cts +2 -36
- package/utils/index.d.ts +2 -36
- package/utils/index.js +21 -221
- package/utils/index.js.map +1 -1
- package/web/index.cjs +3 -3
- package/web/index.cjs.map +1 -1
- package/web/index.d.cts +1 -2
- package/web/index.d.ts +1 -2
- package/web/index.js +3 -3
- package/base_sys_abstraction-CJqRmTui.d.ts +0 -21
- package/base_sys_abstraction-nsNTl07w.d.cts +0 -21
- package/chunk-O4F5AURC.js.map +0 -1
- /package/{chunk-J2IM7FHM.js.map → chunk-I4NUGWZ6.js.map} +0 -0
package/index.d.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
import { S as SysAbstraction } from './
|
2
|
-
export { B as BrowserEnvActions, D as Duration, e as Env, c as EnvActions, d as EnvFactoryOpts, g as EnvImpl, E as EnvMap, F as FileService, I as IDMode, N as NamedWritableStream, O as OnSetItem, R as RandomMode, a as String2TimeMode, b as SystemService, h as Time, T as TimeMode, i as TimeUnits, V as VoidFunc, f as envFactory } from './
|
3
|
-
|
1
|
+
import { S as SysAbstraction } from './base-sys-abstraction-BzVP_lX0.js';
|
2
|
+
export { r as BaseSysAbstraction, o as BaseSysAbstractionParams, B as BrowserEnvActions, C as ConstTime, D as Duration, e as Env, c as EnvActions, d as EnvFactoryOpts, g as EnvImpl, E as EnvMap, p as ExitHandler, q as ExitService, F as FileService, I as IDMode, n as IdService, N as NamedWritableStream, O as OnSetItem, R as RandomMode, m as RandomService, k as StepTime, a as String2TimeMode, j as SysTime, b as SystemService, h as Time, l as TimeFactory, T as TimeMode, i as TimeUnits, V as VoidFunc, s as WrapperSysAbstraction, W as WrapperSysAbstractionParams, f as envFactory } from './base-sys-abstraction-BzVP_lX0.js';
|
3
|
+
export { i as utils } from './index-_GuS2IT4.js';
|
4
|
+
import 'vitest';
|
4
5
|
|
5
6
|
declare abstract class Result<T, E = Error> {
|
6
7
|
static Ok<T>(t: T): Result<T, Error>;
|
@@ -229,7 +230,7 @@ declare class Future<T> {
|
|
229
230
|
reject(reason: unknown): void;
|
230
231
|
}
|
231
232
|
|
232
|
-
declare class
|
233
|
+
declare class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {
|
233
234
|
private readonly _bufferArr;
|
234
235
|
constructor(bufferArr: Uint8Array[]);
|
235
236
|
readonly _resolveClosed: Future<undefined>;
|
@@ -241,26 +242,15 @@ declare class LogWriterCollector implements WritableStreamDefaultWriter$1<Uint8A
|
|
241
242
|
releaseLock(): void;
|
242
243
|
write(chunk?: Uint8Array): Promise<void>;
|
243
244
|
}
|
244
|
-
declare class FanoutWriter implements WritableStreamDefaultWriter$1<Uint8Array> {
|
245
|
-
readonly _writers: WritableStreamDefaultWriter$1<Uint8Array>[];
|
246
|
-
readonly ready: Promise<undefined>;
|
247
|
-
readonly closed: Promise<undefined>;
|
248
|
-
readonly desiredSize: number | null;
|
249
|
-
constructor(writers: WritableStreamDefaultWriter$1<Uint8Array>[]);
|
250
|
-
abort(reason?: any): Promise<void>;
|
251
|
-
close(): Promise<void>;
|
252
|
-
releaseLock(): void;
|
253
|
-
write(chunk?: Uint8Array | undefined): Promise<void>;
|
254
|
-
}
|
255
245
|
declare class LogCollector implements WritableStream<Uint8Array> {
|
256
246
|
readonly locked: boolean;
|
257
247
|
private _writer?;
|
258
248
|
private readonly _pass?;
|
259
249
|
private readonly _bufferArr;
|
260
|
-
constructor(pass?: WritableStreamDefaultWriter
|
250
|
+
constructor(pass?: WritableStreamDefaultWriter<Uint8Array>);
|
261
251
|
abort(reason?: Uint8Array): Promise<void>;
|
262
252
|
close(): Promise<void>;
|
263
|
-
getWriter(): WritableStreamDefaultWriter
|
253
|
+
getWriter(): WritableStreamDefaultWriter<Uint8Array>;
|
264
254
|
Logs(): any[];
|
265
255
|
}
|
266
256
|
|
@@ -425,4 +415,4 @@ interface CryptoRuntime {
|
|
425
415
|
}
|
426
416
|
declare function toCryptoRuntime(cryptoOpts?: Partial<CryptoRuntime>): CryptoRuntime;
|
427
417
|
|
428
|
-
export { type AsError, BuildURI, 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 CoerceURI, type CryptoRuntime,
|
418
|
+
export { type AsError, BuildURI, 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 CoerceURI, type CryptoRuntime, type FnSerialized, Future, IsLogger, Keyed, KeyedResolvOnce, KeyedResolvSeq, type Lengthed, Level, type LevelHandler, LevelHandlerImpl, LogCollector, type LogSerializable, LogValue, LogWriteStream, LogWriterStream, type Logger, LoggerImpl, type LoggerImplParams, type LoggerInterface, MockLogger, type MockLoggerReturn, None, Option, ResolveOnce, ResolveSeq, Result, ResultError, ResultOK, type Runtime, type Serialized, type SizeOrLength, type Sized, Some, SysAbstraction, URI, type WithLogger, type WithoutOption, type WithoutResult, asyncLogValue, isURL, logValue, removeSelfRef, runtimeFn, toCryptoRuntime };
|
package/index.js
CHANGED
@@ -1,27 +1,40 @@
|
|
1
|
+
import {
|
2
|
+
ConsoleWriterStream,
|
3
|
+
FanoutWriteStream,
|
4
|
+
utils_exports
|
5
|
+
} from "./chunk-AO7BGISE.js";
|
1
6
|
import {
|
2
7
|
WebSysAbstraction
|
3
|
-
} from "./chunk-
|
8
|
+
} from "./chunk-LJRKN3XI.js";
|
4
9
|
import {
|
10
|
+
BaseSysAbstraction,
|
5
11
|
BrowserEnvActions,
|
12
|
+
ConstTime,
|
6
13
|
EnvImpl,
|
7
14
|
Future,
|
8
15
|
IDMode,
|
16
|
+
IdService,
|
9
17
|
Keyed,
|
10
18
|
KeyedResolvOnce,
|
11
19
|
KeyedResolvSeq,
|
12
20
|
RandomMode,
|
21
|
+
RandomService,
|
13
22
|
ResolveOnce,
|
14
23
|
ResolveSeq,
|
24
|
+
StepTime,
|
15
25
|
String2TimeMode,
|
26
|
+
SysTime,
|
16
27
|
Time,
|
28
|
+
TimeFactory,
|
17
29
|
TimeMode,
|
18
30
|
TimeUnits,
|
31
|
+
WrapperSysAbstraction,
|
19
32
|
envFactory
|
20
|
-
} from "./chunk-
|
33
|
+
} from "./chunk-P4FB5FHU.js";
|
21
34
|
import {
|
22
35
|
__spreadValues,
|
23
36
|
__yieldStar
|
24
|
-
} from "./chunk-
|
37
|
+
} from "./chunk-I4NUGWZ6.js";
|
25
38
|
|
26
39
|
// src/logger.ts
|
27
40
|
var Level = /* @__PURE__ */ ((Level2) => {
|
@@ -322,7 +335,7 @@ function runtimeFn() {
|
|
322
335
|
};
|
323
336
|
}
|
324
337
|
|
325
|
-
// src/
|
338
|
+
// src/logger-impl.ts
|
326
339
|
var encoder = new TextEncoder();
|
327
340
|
var LevelHandlerImpl = class {
|
328
341
|
constructor() {
|
@@ -466,68 +479,6 @@ function toLogValue(lop) {
|
|
466
479
|
}
|
467
480
|
return lop;
|
468
481
|
}
|
469
|
-
var ConsoleWriterStreamDefaultWriter = class {
|
470
|
-
constructor(stream) {
|
471
|
-
this.stream = stream;
|
472
|
-
this.desiredSize = null;
|
473
|
-
this.decoder = new TextDecoder();
|
474
|
-
this._stream = stream;
|
475
|
-
this.ready = Promise.resolve(void 0);
|
476
|
-
this.closed = Promise.resolve(void 0);
|
477
|
-
}
|
478
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
|
479
|
-
abort(reason) {
|
480
|
-
throw new Error("Method not implemented.");
|
481
|
-
}
|
482
|
-
async close() {
|
483
|
-
}
|
484
|
-
releaseLock() {
|
485
|
-
this._stream.locked = false;
|
486
|
-
this.ready = Promise.resolve(void 0);
|
487
|
-
this.closed = Promise.resolve(void 0);
|
488
|
-
}
|
489
|
-
async write(chunk) {
|
490
|
-
const str = this.decoder.decode(chunk).trimEnd();
|
491
|
-
let output = "log";
|
492
|
-
try {
|
493
|
-
const decode = JSON.parse(str);
|
494
|
-
output = decode.level;
|
495
|
-
} catch (e) {
|
496
|
-
}
|
497
|
-
switch (output) {
|
498
|
-
case "error":
|
499
|
-
console.error(str);
|
500
|
-
break;
|
501
|
-
case "warn":
|
502
|
-
console.warn(str);
|
503
|
-
break;
|
504
|
-
default:
|
505
|
-
console.log(str);
|
506
|
-
}
|
507
|
-
}
|
508
|
-
};
|
509
|
-
var ConsoleWriterStream = class {
|
510
|
-
constructor() {
|
511
|
-
this.locked = false;
|
512
|
-
}
|
513
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
|
514
|
-
abort(reason) {
|
515
|
-
throw new Error("Method not implemented.");
|
516
|
-
}
|
517
|
-
async close() {
|
518
|
-
return;
|
519
|
-
}
|
520
|
-
getWriter() {
|
521
|
-
if (this.locked) {
|
522
|
-
throw new Error("Stream is locked");
|
523
|
-
}
|
524
|
-
this.locked = true;
|
525
|
-
if (!this._writer) {
|
526
|
-
this._writer = new ConsoleWriterStreamDefaultWriter(this);
|
527
|
-
}
|
528
|
-
return this._writer;
|
529
|
-
}
|
530
|
-
};
|
531
482
|
var LoggerImpl = class _LoggerImpl {
|
532
483
|
// readonly _id: string = "logger-" + Math.random().toString(36)
|
533
484
|
constructor(params) {
|
@@ -853,8 +804,8 @@ var WithLoggerBuilder = class {
|
|
853
804
|
}
|
854
805
|
};
|
855
806
|
|
856
|
-
// src/test/
|
857
|
-
var
|
807
|
+
// src/test/log-write-stream.ts
|
808
|
+
var LogWriteStream = class {
|
858
809
|
constructor(bufferArr) {
|
859
810
|
this._resolveClosed = new Future();
|
860
811
|
this.closed = this._resolveClosed.asPromise();
|
@@ -879,30 +830,6 @@ var LogWriterCollector = class {
|
|
879
830
|
return Promise.resolve(void 0);
|
880
831
|
}
|
881
832
|
};
|
882
|
-
var FanoutWriter = class {
|
883
|
-
constructor(writers) {
|
884
|
-
this.desiredSize = null;
|
885
|
-
this._writers = writers;
|
886
|
-
this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => void 0);
|
887
|
-
this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => void 0);
|
888
|
-
}
|
889
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
890
|
-
abort(reason) {
|
891
|
-
return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {
|
892
|
-
});
|
893
|
-
}
|
894
|
-
close() {
|
895
|
-
return Promise.all(this._writers.map((w) => w.close())).then(() => {
|
896
|
-
});
|
897
|
-
}
|
898
|
-
releaseLock() {
|
899
|
-
this._writers.map((w) => w.releaseLock());
|
900
|
-
}
|
901
|
-
write(chunk) {
|
902
|
-
return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {
|
903
|
-
});
|
904
|
-
}
|
905
|
-
};
|
906
833
|
var LogCollector = class {
|
907
834
|
constructor(pass) {
|
908
835
|
this.locked = false;
|
@@ -923,11 +850,11 @@ var LogCollector = class {
|
|
923
850
|
}
|
924
851
|
getWriter() {
|
925
852
|
if (!this._writer) {
|
926
|
-
const dests = [new
|
853
|
+
const dests = [new LogWriteStream(this._bufferArr)];
|
927
854
|
if (this._pass) {
|
928
855
|
dests.push(this._pass);
|
929
856
|
}
|
930
|
-
this._writer = new
|
857
|
+
this._writer = new FanoutWriteStream(dests);
|
931
858
|
}
|
932
859
|
return this._writer;
|
933
860
|
}
|
@@ -952,7 +879,7 @@ var LogCollector = class {
|
|
952
879
|
}
|
953
880
|
};
|
954
881
|
|
955
|
-
// src/test/
|
882
|
+
// src/test/mock-logger.ts
|
956
883
|
function MockLogger(params) {
|
957
884
|
const lc = new LogCollector(params == null ? void 0 : params.pass);
|
958
885
|
let modNames = ["MockLogger"];
|
@@ -1119,12 +1046,14 @@ function toCryptoRuntime(cryptoOpts = {}) {
|
|
1119
1046
|
return runtime;
|
1120
1047
|
}
|
1121
1048
|
export {
|
1049
|
+
BaseSysAbstraction,
|
1122
1050
|
BrowserEnvActions,
|
1123
1051
|
BuildURI,
|
1052
|
+
ConstTime,
|
1124
1053
|
EnvImpl,
|
1125
|
-
FanoutWriter,
|
1126
1054
|
Future,
|
1127
1055
|
IDMode,
|
1056
|
+
IdService,
|
1128
1057
|
IsLogger,
|
1129
1058
|
Keyed,
|
1130
1059
|
KeyedResolvOnce,
|
@@ -1133,30 +1062,36 @@ export {
|
|
1133
1062
|
LevelHandlerImpl,
|
1134
1063
|
LogCollector,
|
1135
1064
|
LogValue,
|
1136
|
-
|
1065
|
+
LogWriteStream,
|
1137
1066
|
LogWriterStream,
|
1138
1067
|
LoggerImpl,
|
1139
1068
|
MockLogger,
|
1140
1069
|
None,
|
1141
1070
|
Option,
|
1142
1071
|
RandomMode,
|
1072
|
+
RandomService,
|
1143
1073
|
ResolveOnce,
|
1144
1074
|
ResolveSeq,
|
1145
1075
|
Result,
|
1146
1076
|
ResultError,
|
1147
1077
|
ResultOK,
|
1148
1078
|
Some,
|
1079
|
+
StepTime,
|
1149
1080
|
String2TimeMode,
|
1081
|
+
SysTime,
|
1150
1082
|
Time,
|
1083
|
+
TimeFactory,
|
1151
1084
|
TimeMode,
|
1152
1085
|
TimeUnits,
|
1153
1086
|
URI,
|
1087
|
+
WrapperSysAbstraction,
|
1154
1088
|
asyncLogValue,
|
1155
1089
|
envFactory,
|
1156
1090
|
isURL,
|
1157
1091
|
logValue,
|
1158
1092
|
removeSelfRef,
|
1159
1093
|
runtimeFn,
|
1160
|
-
toCryptoRuntime
|
1094
|
+
toCryptoRuntime,
|
1095
|
+
utils_exports as utils
|
1161
1096
|
};
|
1162
1097
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/logger.ts","../../src/uri.ts","../../src/runtime.ts","../../src/logger_impl.ts","../../src/test/log_collector.ts","../../src/test/mock_logger.ts","../../src/result.ts","../../src/option.ts","../../src/crypto.ts"],"sourcesContent":["import { Result } from \"./result\";\nimport { CoerceURI } from \"./uri\";\n\nexport enum Level {\n WARN = \"warn\",\n DEBUG = \"debug\",\n INFO = \"info\",\n ERROR = \"error\",\n}\n\nexport type Serialized = string | number | boolean;\nexport type FnSerialized = () => Serialized | Serialized[];\n\nexport class LogValue {\n constructor(readonly fn: FnSerialized) {}\n value(): Serialized | Serialized[] {\n return this.fn();\n }\n toJSON(): Serialized | Serialized[] {\n return this.value();\n }\n}\n\nexport type LogSerializable = Record<string, LogValue | Promise<LogValue>>;\n\nexport function removeSelfRef(): (key: unknown, val: unknown) => unknown {\n const cache = new Set();\n return function (key: unknown, value: unknown) {\n if (typeof value === \"object\" && value !== null) {\n // Duplicate reference found, discard key\n if (cache.has(value)) return \"...\";\n cache.add(value);\n }\n return value;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function asyncLogValue(val: () => Promise<Serialized>): Promise<LogValue> {\n // return Promise.resolve(logValue(val));\n throw new Error(\"Not implemented\");\n}\n\nexport function logValue(val: Serialized | Serialized[] | FnSerialized | LogSerializable | undefined | null): LogValue {\n switch (typeof val) {\n case \"function\":\n return new LogValue(val);\n case \"string\":\n return new LogValue(() => {\n try {\n const ret = JSON.parse(val);\n if (typeof ret === \"object\" && ret !== null) {\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // do nothing\n }\n return val.toString();\n });\n case \"number\":\n return new LogValue(() => val);\n case \"boolean\":\n return new LogValue(() => val);\n case \"object\":\n return new LogValue(() => JSON.parse(JSON.stringify(val, removeSelfRef())));\n default:\n if (!val) {\n return new LogValue(() => \"--Falsy--\");\n }\n throw new Error(`Invalid type:${typeof val}`);\n }\n}\n\nexport interface Sized {\n size: number;\n}\nexport interface Lengthed {\n length: number;\n}\nexport type SizeOrLength = Sized | Lengthed;\n\nexport interface LoggerInterface<R> {\n Module(key: string): R;\n // if modules is empty, set for all Levels\n EnableLevel(level: Level, ...modules: string[]): R;\n DisableLevel(level: Level, ...modules: string[]): R;\n\n SetDebug(...modules: (string | string[])[]): R;\n SetExposeStack(enable?: boolean): R;\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): R;\n Result<T>(key: string, res: Result<T>): R;\n // default key url\n Url(url: CoerceURI, key?: string): R;\n // len\n Len(value: unknown, key?: string): R;\n\n Hash(value: unknown, key?: string): R;\n\n Str(key: string, value?: string): R;\n Error(): R;\n Warn(): R;\n Debug(): R;\n Log(): R;\n WithLevel(level: Level): R;\n\n Err(err: unknown): R; // could be Error, or something which coerces to string\n Info(): R;\n Timestamp(): R;\n Any(key: string, value: unknown): R;\n Dur(key: string, nsec: number): R;\n Uint64(key: string, value: number): R;\n Int(key: string, value: number): R;\n Bool(key: string, value: unknown): R;\n}\n\nexport function IsLogger(obj: unknown): obj is Logger {\n return (\n typeof obj === \"object\" &&\n [\n \"Module\",\n \"EnableLevel\",\n \"DisableLevel\",\n \"SetDebug\",\n \"Str\",\n \"Error\",\n \"Warn\",\n \"Debug\",\n \"Log\",\n \"WithLevel\",\n \"Err\",\n \"Info\",\n \"Timestamp\",\n \"Any\",\n \"Dur\",\n \"Uint64\",\n ]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((fn) => typeof (obj as any)[fn] === \"function\")\n .reduce((a, b) => a && b, true)\n );\n}\n\nexport interface WithLogger extends LoggerInterface<WithLogger> {\n Logger(): Logger;\n}\n\nexport interface AsError {\n AsError(): Error;\n}\n\nexport interface Logger extends LoggerInterface<Logger> {\n With(): WithLogger;\n\n Msg(...args: string[]): AsError;\n Flush(): Promise<void>;\n}\n","type NullOrUndef = null | undefined;\n\nfunction falsy2undef<T>(value: T | NullOrUndef): T | undefined {\n return value === undefined || value === null ? undefined : value;\n}\n\nfunction ensureURLWithDefaultProto(url: string | URL, defaultProtocol: string): URL {\n if (!url) {\n return new URL(`${defaultProtocol}//`);\n }\n if (typeof url === \"string\") {\n try {\n return new URL(url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return new URL(`${defaultProtocol}//${url}`);\n }\n } else {\n return url;\n }\n}\n\nexport function isURL(value: unknown): value is URL {\n return (\n value instanceof URL ||\n (!!value &&\n typeof (value as URL).searchParams === \"object\" &&\n typeof (value as URL).searchParams.sort === \"function\" &&\n typeof (value as URL).hash === \"string\")\n );\n}\n\nfunction from<T>(fac: (url: URL) => T, strURLUri: CoerceURI | undefined, defaultProtocol: string): T {\n switch (typeof falsy2undef(strURLUri)) {\n case \"undefined\":\n return fac(new URL(`${defaultProtocol}//`));\n case \"string\":\n return fac(ensureURLWithDefaultProto(strURLUri as string, defaultProtocol));\n case \"object\":\n if (BuildURI.is(strURLUri)) {\n return fac(new URL(strURLUri._url.toString()));\n } else if (URI.is(strURLUri)) {\n return fac(new URL(strURLUri._url.toString()));\n } else if (isURL(strURLUri)) {\n return fac(new URL(strURLUri.toString()));\n }\n throw new Error(`unknown object type: ${strURLUri}`);\n default:\n throw new Error(`Invalid argument: ${typeof strURLUri}`);\n }\n}\n\nexport class BuildURI {\n _url: URL; // pathname needs this\n private constructor(url: URL) {\n this._url = url;\n }\n\n static is(value: unknown): value is BuildURI {\n return (\n value instanceof BuildURI ||\n (!!value && typeof (value as BuildURI).delParam === \"function\" && typeof (value as BuildURI).setParam === \"function\")\n );\n }\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): BuildURI {\n return from((url) => new BuildURI(url), strURLUri, defaultProtocol);\n }\n\n hostname(h: string) {\n this._url.hostname = h;\n return this;\n }\n\n password(p: string) {\n this._url.password = p;\n return this;\n }\n\n port(p: string) {\n this._url.port = p;\n return this;\n }\n\n username(u: string) {\n this._url.username = u;\n return this;\n }\n\n search(s: string) {\n this._url.search = s;\n return this;\n }\n\n protocol(p: string) {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n const mySrc = this._url.toString();\n const myDst = mySrc.replace(new RegExp(`^${this._url.protocol}`), `${p}`);\n this._url = new URL(myDst);\n return this;\n }\n\n pathname(p: string) {\n const myp = this.URI().pathname;\n const mySrc = this._url.toString();\n const myDst = mySrc.replace(new RegExp(`^${this._url.protocol}//${myp}`), `${this._url.protocol}//${p}`);\n this._url = new URL(myDst);\n return this;\n }\n\n hash(h: string) {\n this._url.hash = h;\n return this;\n }\n\n host(h: string) {\n this._url.host = h;\n return this;\n }\n\n delParam(key: string) {\n this._url.searchParams.delete(key);\n return this;\n }\n\n defParam(key: string, str: string) {\n if (!this._url.searchParams.has(key)) {\n this._url.searchParams.set(key, str);\n }\n return this;\n }\n\n setParam(key: string, str: string) {\n this._url.searchParams.set(key, str);\n return this;\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n\n URI(): URI {\n return URI.from(this._url);\n }\n}\n\nexport type CoerceURI = string | URL | URI | BuildURI | NullOrUndef;\n\n// non mutable URL Implementation\nexport class URI {\n // if no protocol is provided, default to file:\n static merge(into: CoerceURI, from: CoerceURI, defaultProtocol = \"file:\"): URI {\n const intoUrl = BuildURI.from(into, defaultProtocol);\n const fromUrl = URI.from(from, defaultProtocol);\n intoUrl.protocol(fromUrl.protocol);\n const fPath = fromUrl.pathname;\n if (!(fPath.length === 0 || fPath === \"/\" || fPath === \"./\")) {\n intoUrl.pathname(fromUrl.pathname);\n }\n for (const [key, value] of fromUrl.getParams) {\n intoUrl.setParam(key, value);\n }\n return intoUrl.URI();\n }\n\n static is(value: unknown): value is URI {\n return (\n value instanceof URI ||\n (!!value &&\n typeof (value as URI).asURL === \"function\" &&\n typeof (value as URI).getParam === \"function\" &&\n typeof (value as URI).hasParam === \"function\")\n );\n }\n\n // if no protocol is provided, default to file:\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): URI {\n return from((url) => new URI(url), strURLUri, defaultProtocol);\n }\n\n readonly _url: URL;\n private constructor(url: URL) {\n this._url = url;\n }\n\n build(): BuildURI {\n return BuildURI.from(this.asURL());\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n get password(): string {\n return this._url.password;\n }\n\n get port(): string {\n return this._url.port;\n }\n\n get username(): string {\n return this._url.username;\n }\n\n get search(): string {\n return this._url.search;\n }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n get pathname(): string {\n return this._url\n .toString()\n .replace(/^.*:\\/\\//, \"\")\n .replace(/\\?.*$/, \"\");\n }\n\n get hash(): string {\n return this._url.hash;\n }\n\n get host(): string {\n return this._url.host;\n }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n getParam(key: string): string | undefined {\n return falsy2undef(this._url.searchParams.get(key));\n }\n\n clone(): URI {\n return new URI(this.asURL());\n }\n\n asURL(): URL {\n const url = new URL(this._url.toString());\n url.searchParams.sort();\n return url;\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSet(value: string, ref: any = globalThis): boolean {\n const [head, ...tail] = value.split(\".\");\n if ([\"object\", \"function\"].includes(typeof ref) && ref && [\"object\", \"function\"].includes(typeof ref[head]) && ref[head]) {\n if (tail.length <= 1) {\n return true;\n }\n return isSet(tail.join(\".\"), ref[head]);\n }\n return false;\n}\n\nexport function runtimeFn(): Runtime {\n const isReactNative = isSet(\"navigator.product\") && globalThis.navigator.product === \"ReactNative\";\n const isNodeIsh = isSet(\"process.versions.node\") && !isReactNative;\n const isDeno = isSet(\"Deno\") && !isReactNative;\n return {\n isNodeIsh,\n isBrowser: !(isNodeIsh || isDeno) && !isReactNative,\n isDeno,\n isReactNative,\n };\n}\n","// import { v4 } from \"uuid\";\nimport {\n AsError,\n FnSerialized,\n LogSerializable,\n Level,\n Logger,\n logValue,\n Serialized,\n WithLogger,\n removeSelfRef,\n Sized,\n Lengthed,\n LogValue,\n asyncLogValue,\n} from \"./logger\";\nimport { WebSysAbstraction } from \"./web/web_sys_abstraction\";\nimport { SysAbstraction } from \"./sys_abstraction\";\nimport { Result } from \"./result\";\nimport { CoerceURI, URI } from \"./uri\";\nimport { runtimeFn } from \"./runtime\";\n\nconst encoder = new TextEncoder();\n\n// function resolveLogValue(val: LogSerializable): Record<string, Serialized> {\n// const ret: Record<string, Serialized> = {};\n// Object.keys(val).forEach((key) => {\n// const v = val[key];\n// if (v instanceof LogValue) {\n// ret[key] = v.value();\n// }\n// });\n// return ret;\n// }\n\nexport interface LevelHandler {\n enableLevel(level: Level, ...modules: string[]): void;\n disableLevel(level: Level, ...modules: string[]): void;\n setExposeStack(enable?: boolean): void;\n isStackExposed: boolean;\n setDebug(...modules: (string | string[])[]): void;\n isEnabled(ilevel: unknown, module: unknown): boolean;\n}\n\nexport class LevelHandlerImpl implements LevelHandler {\n readonly _globalLevels = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);\n readonly _modules = new Map<string, Set<Level>>();\n isStackExposed = false;\n enableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.add(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, level]));\n },\n ...modules,\n );\n }\n disableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.delete(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.delete(p);\n },\n ...modules,\n );\n }\n\n setExposeStack(enable?: boolean): void {\n this.isStackExposed = !!enable;\n }\n\n forModules(level: Level, fnAction: (p: string) => void, ...modules: (string | string[])[]): void {\n for (const m of modules.flat()) {\n if (typeof m !== \"string\") {\n continue;\n }\n const parts = m\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length);\n for (const p of parts) {\n fnAction(p);\n }\n }\n }\n setDebug(...modules: (string | string[])[]): void {\n this.forModules(\n Level.DEBUG,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, Level.DEBUG]));\n },\n ...modules,\n );\n }\n isEnabled(ilevel: unknown, module: unknown): boolean {\n const level = ilevel as Level; // what if it's not a level?\n if (typeof module === \"string\") {\n const levels = this._modules.get(module);\n if (levels && levels.has(level)) {\n return true;\n }\n }\n const wlevel = this._modules.get(\"*\");\n if (wlevel && typeof level === \"string\") {\n if (wlevel.has(level)) {\n return true;\n }\n }\n if (typeof level !== \"string\") {\n // this is a plain log\n return true;\n }\n return this._globalLevels.has(level);\n }\n}\n\nconst levelSingleton = new LevelHandlerImpl();\n\n// globalThis[Symbol(\"levelSingleton\")] = new LevelHandlerImpl()\n\nexport class LogWriterStream {\n readonly _out: WritableStream<Uint8Array>;\n readonly _toFlush: (() => Promise<void>)[] = [];\n\n constructor(out: WritableStream<Uint8Array>) {\n this._out = out;\n }\n\n write(encoded: Uint8Array) {\n const my = async () => {\n // const val = Math.random();\n // console.log(\">>>My:\", val)\n try {\n const writer = this._out.getWriter();\n await writer.ready;\n await writer.write(encoded);\n await writer.releaseLock();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Chunk error:\", err);\n }\n // console.log(\"<<<My:\", val)\n };\n this._toFlush.push(my);\n this._flush();\n }\n\n _flushIsRunning = false;\n _flushDoneFns = Array<() => void>();\n _flush(toFlush: (() => Promise<void>)[] | undefined = undefined, done?: () => void): void {\n if (done) {\n this._flushDoneFns.push(done);\n }\n\n if (this._toFlush.length == 0) {\n // console.log(\"Flush is stopped\", this._toFlush.length)\n this._flushIsRunning = false;\n this._flushDoneFns.forEach((fn) => fn());\n this._flushDoneFns = [];\n return;\n }\n\n if (!toFlush && this._toFlush.length == 1 && !this._flushIsRunning) {\n this._flushIsRunning = true;\n // console.log(\"Flush is started\", this._toFlush.length)\n } else if (!toFlush) {\n // console.log(\"flush queue check but is running\", this._toFlush.length)\n return;\n }\n\n // console.log(\">>>Msg:\", this._toFlush.length)\n const my = this._toFlush.shift();\n my?.().finally(() => {\n // console.log(\"<<<Msg:\", this._toFlush.length)\n this._flush(this._toFlush);\n });\n }\n}\n\nfunction getLen(value: unknown): LogValue {\n if (Array.isArray(value)) {\n return logValue(() => value.length);\n } else if (typeof value === \"string\") {\n return logValue(() => value.length);\n } else if (typeof value === \"object\" && value !== null) {\n if (typeof (value as Sized).size === \"number\") {\n return logValue(() => (value as Sized).size);\n } else if (typeof (value as Lengthed).length === \"number\") {\n return logValue(() => (value as Lengthed).length);\n }\n return logValue(() => Object.keys(value).length);\n }\n return logValue(() => -1);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction hash(value: unknown): string {\n // const hasher = createHash(\"sha256\");\n // hasher.update(JSON.stringify(value, removeSelfRef()));\n // return hasher.digest(\"hex\");\n return \"not implemented\";\n}\n\nfunction toLogValue(lop: LogValue | Promise<LogValue>): LogValue | undefined {\n if (lop && typeof (lop as Promise<LogValue>).then === \"function\") {\n throw new Error(\"async logValue Not implemented\");\n }\n return lop as LogValue;\n}\n\nexport interface LoggerImplParams {\n readonly out?: WritableStream<Uint8Array>;\n readonly logWriter?: LogWriterStream;\n readonly sys?: SysAbstraction;\n readonly withAttributes?: LogSerializable;\n readonly levelHandler?: LevelHandler;\n}\n\nclass ConsoleWriterStreamDefaultWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly desiredSize: number | null = null;\n readonly decoder = new TextDecoder();\n\n closed: Promise<undefined>;\n ready: Promise<undefined>;\n readonly _stream: ConsoleWriterStream;\n\n constructor(private stream: ConsoleWriterStream) {\n this._stream = stream;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n // noop\n }\n releaseLock(): void {\n this._stream.locked = false;\n this.ready = Promise.resolve(undefined);\n this.closed = Promise.resolve(undefined);\n }\n async write(chunk?: Uint8Array | undefined): Promise<void> {\n const str = this.decoder.decode(chunk).trimEnd();\n let output = \"log\";\n try {\n const decode = JSON.parse(str);\n output = decode.level;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n /* noop */\n }\n switch (output) {\n case \"error\":\n // eslint-disable-next-line no-console\n console.error(str);\n break;\n case \"warn\":\n // eslint-disable-next-line no-console\n console.warn(str);\n break;\n default:\n // eslint-disable-next-line no-console\n console.log(str);\n }\n }\n}\n\nclass ConsoleWriterStream implements WritableStream<Uint8Array> {\n locked = false;\n _writer?: WritableStreamDefaultWriter<Uint8Array>;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n return;\n }\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (this.locked) {\n throw new Error(\"Stream is locked\");\n }\n this.locked = true;\n if (!this._writer) {\n this._writer = new ConsoleWriterStreamDefaultWriter(this);\n }\n return this._writer;\n }\n}\n\nexport class LoggerImpl implements Logger {\n readonly _sys: SysAbstraction;\n readonly _attributes: LogSerializable = {};\n readonly _withAttributes: LogSerializable;\n readonly _logWriter: LogWriterStream;\n readonly _levelHandler: LevelHandler;\n // readonly _id: string = \"logger-\" + Math.random().toString(36)\n\n constructor(params?: LoggerImplParams) {\n if (!params) {\n params = {};\n }\n if (!params.sys) {\n this._sys = WebSysAbstraction();\n } else {\n this._sys = params.sys;\n }\n if (params.logWriter) {\n this._logWriter = params.logWriter;\n } else {\n if (!params.out) {\n const rt = runtimeFn();\n let stream: WritableStream<Uint8Array>;\n if (rt.isBrowser) {\n stream = new ConsoleWriterStream();\n } else {\n if (rt.isNodeIsh || rt.isReactNative) {\n stream = this._sys.Stdout();\n } else {\n throw new Error(\"No output defined for runtime\");\n }\n }\n this._logWriter = new LogWriterStream(stream);\n } else {\n this._logWriter = new LogWriterStream(params.out);\n }\n }\n if (!params.withAttributes) {\n this._withAttributes = {};\n } else {\n this._withAttributes = { ...params.withAttributes };\n }\n this._attributes = { ...this._withAttributes };\n if (params.levelHandler) {\n this._levelHandler = params.levelHandler;\n } else {\n this._levelHandler = levelSingleton;\n }\n // console.log(\"LoggerImpl\", this._id, this._attributes, this._withAttributes)\n }\n\n SetExposeStack(enable?: boolean): Logger {\n this._levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): Logger {\n this._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): Logger {\n this._levelHandler.disableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): Logger {\n this._attributes[\"module\"] = logValue(key);\n this._withAttributes[\"module\"] = logValue(key);\n return this;\n }\n // if the string is \"*\" it will enable for all modules\n SetDebug(...modules: (string | string[])[]): Logger {\n this._levelHandler.setDebug(...modules);\n return this;\n }\n\n Timestamp(): Logger {\n // this is called with .call from _produceError where this\n // this is crafted to have _sys and _attributes\n // CAUTION so done use other ref from this\n this._attributes[\"ts\"] = logValue(this._sys.Time().Now().toISOString());\n return this;\n }\n Warn(): Logger {\n this._attributes[\"level\"] = logValue(Level.WARN);\n return this;\n }\n Log(): Logger {\n return this;\n }\n Debug(): Logger {\n this._attributes[\"level\"] = logValue(Level.DEBUG);\n return this;\n }\n Error(): Logger {\n this._attributes[\"level\"] = logValue(Level.ERROR);\n return this;\n }\n Info(): Logger {\n this._attributes[\"level\"] = logValue(Level.INFO);\n return this;\n }\n Err(err: unknown): Logger {\n if (err instanceof Error) {\n this._attributes[\"error\"] = logValue(err.message);\n if (this._levelHandler.isStackExposed) {\n this._attributes[\"stack\"] = logValue(err.stack?.split(\"\\n\").map((s) => s.trim()));\n }\n } else {\n this._attributes[\"error\"] = logValue(\"\" + err);\n }\n return this;\n }\n WithLevel(l: Level): Logger {\n this._attributes[\"level\"] = logValue(l);\n return this;\n }\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): Logger {\n if (typeof action === \"function\") {\n this._attributes[key] = logValue(action as FnSerialized);\n } else if (typeof action.toString === \"function\") {\n this._attributes[key] = logValue(() => action.toString());\n } else {\n this._attributes[key] = logValue(\"INVALID REF\");\n }\n return this;\n }\n Bool(key: string, value: unknown): Logger {\n this._attributes[key] = logValue(!!value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): Logger {\n if (res.isOk()) {\n this._attributes[key] = logValue(res.Ok() as Serialized);\n } else {\n this.Err(res.Err());\n }\n return this;\n }\n\n Len(value: unknown, key = \"len\"): Logger {\n this._attributes[key] = getLen(value);\n return this;\n }\n\n Hash(value: unknown, key = \"hash\"): Logger {\n this._attributes[key] = asyncLogValue(async () => `${getLen(value).value()}:${await hash(value)}`);\n return this;\n }\n\n Url(url: CoerceURI, key = \"url\"): Logger {\n this.Ref(key, () => URI.from(url).toString());\n return this;\n }\n\n Str(key: string, value?: string): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n\n Any(key: string, value?: string | number | boolean | LogSerializable): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n Dur(key: string, nsec: number): Logger {\n this._attributes[key] = logValue(`${nsec}ms`);\n // new Intl.DurationFormat(\"en\", { style: \"narrow\" }).format(nsec);\n return this;\n }\n Uint64(key: string, value: number): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n Int(key: string, value: number): Logger {\n return this.Uint64(key, value);\n }\n\n async Flush(): Promise<void> {\n return new Promise((resolve) => {\n this._logWriter._flush(undefined, resolve);\n });\n }\n\n With(): WithLogger {\n // console.log(\"WithLoggerBuilder.With\", this._id, this._attributes, this._withAttributes);\n return new WithLoggerBuilder(\n new LoggerImpl({\n logWriter: this._logWriter,\n sys: this._sys,\n levelHandler: this._levelHandler,\n withAttributes: {\n module: this._attributes[\"module\"],\n ...this._withAttributes,\n },\n }),\n );\n }\n\n _resetAttributes(fn: () => () => string): () => string {\n const ret = fn();\n Object.keys(this._attributes).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n });\n Object.assign(this._attributes, this._withAttributes);\n return ret;\n }\n _produceError(attr: LogSerializable, ...args: string[]): string {\n attr[\"msg\"] = logValue(args.join(\" \"));\n const msg = attr[\"msg\"].value();\n if (typeof msg === \"string\" && !msg.trim().length) {\n delete attr[\"msg\"];\n }\n if (toLogValue(attr[\"ts\"])?.value() === \"ETERNITY\") {\n // hacky but it works\n this.Timestamp.call({\n _sys: this._sys,\n _attributes: attr,\n });\n }\n return JSON.stringify(attr, removeSelfRef());\n }\n\n Msg(...args: string[]): AsError {\n const fnError = this._resetAttributes(() => {\n const doWrite = this._levelHandler.isEnabled(\n toLogValue(this._attributes[\"level\"])?.value(),\n toLogValue(this._attributes[\"module\"])?.value(),\n );\n let fnRet = () => this._produceError({ ...this._attributes }, ...args);\n if (doWrite) {\n const str = fnRet();\n const encoded = encoder.encode(str + \"\\n\");\n this._logWriter.write(encoded);\n fnRet = () => str;\n }\n return fnRet;\n });\n return {\n AsError: () => new Error(fnError()),\n };\n }\n}\n\nclass WithLoggerBuilder implements WithLogger {\n readonly _li: LoggerImpl;\n constructor(li: LoggerImpl) {\n this._li = li;\n }\n\n Logger(): Logger {\n Object.assign(this._li._withAttributes, this._li._attributes);\n return this._li;\n }\n\n SetExposeStack(enable?: boolean): WithLogger {\n this._li._levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): WithLogger {\n this._li.Module(key);\n return this;\n }\n SetDebug(...modules: (string | string[])[]): WithLogger {\n this._li.SetDebug(...modules);\n return this;\n }\n\n Str(key: string, value?: string): WithLogger {\n this._li.Str(key, value);\n return this;\n }\n\n Len(value: unknown, key?: string): WithLogger {\n this._li.Len(value, key);\n return this;\n }\n\n Hash(value: unknown, key?: string): WithLogger {\n this._li.Hash(value, key);\n return this;\n }\n\n Ref(key: string, action: Serialized | FnSerialized): WithLogger {\n this._li.Ref(key, action);\n return this;\n }\n Bool(key: string, value: unknown): WithLogger {\n this._li.Bool(key, value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): WithLogger {\n this._li.Result(key, res);\n return this;\n }\n Url(url: URL, key?: string): WithLogger {\n this._li.Url(url, key);\n return this;\n }\n Int(key: string, value: number): WithLogger {\n this._li.Int(key, value);\n return this;\n }\n\n Log(): WithLogger {\n this._li.Log();\n return this;\n }\n\n WithLevel(level: Level): WithLogger {\n this._li.WithLevel(level);\n return this;\n }\n\n Error(): WithLogger {\n this._li.Error();\n return this;\n }\n Warn(): WithLogger {\n this._li.Error();\n return this;\n }\n Debug(): WithLogger {\n this._li.Debug();\n return this;\n }\n Err(err: unknown): WithLogger {\n this._li.Err(err);\n return this;\n }\n Info(): WithLogger {\n this._li.Info();\n return this;\n }\n Timestamp(): WithLogger {\n this._li._attributes[\"ts\"] = logValue(\"ETERNITY\");\n return this;\n }\n Any(key: string, value: LogSerializable): WithLogger {\n this._li.Any(key, value);\n return this;\n }\n Dur(key: string, nsec: number): WithLogger {\n this._li.Dur(key, nsec);\n return this;\n }\n Uint64(key: string, value: number): WithLogger {\n this._li.Uint64(key, value);\n return this;\n }\n}\n","import { WritableStreamDefaultWriter } from \"stream/web\";\nimport { Future } from \"../future\";\n\nexport class LogWriterCollector implements WritableStreamDefaultWriter<Uint8Array> {\n private readonly _bufferArr: Uint8Array[];\n\n constructor(bufferArr: Uint8Array[]) {\n this._bufferArr = bufferArr;\n }\n\n readonly _resolveClosed = new Future<undefined>();\n readonly closed: Promise<undefined> = this._resolveClosed.asPromise();\n readonly desiredSize: number | null = null;\n readonly ready: Promise<undefined> = Promise.resolve(undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n await this.closed;\n return Promise.resolve(undefined);\n }\n releaseLock(): void {\n // do nothing\n }\n async write(chunk?: Uint8Array): Promise<void> {\n if (chunk) {\n this._bufferArr.push(chunk);\n }\n return Promise.resolve(undefined);\n }\n}\n\nexport class FanoutWriter implements WritableStreamDefaultWriter<Uint8Array> {\n readonly _writers: WritableStreamDefaultWriter<Uint8Array>[];\n readonly ready: Promise<undefined>;\n readonly closed: Promise<undefined>;\n readonly desiredSize: number | null = null;\n constructor(writers: WritableStreamDefaultWriter<Uint8Array>[]) {\n this._writers = writers;\n this.ready = Promise.all(this._writers.map((w) => w.ready)).then(() => undefined);\n this.closed = Promise.all(this._writers.map((w) => w.closed)).then(() => undefined);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n return Promise.all(this._writers.map((w) => w.abort(reason))).then(() => {\n /* do nothing */\n });\n }\n close(): Promise<void> {\n return Promise.all(this._writers.map((w) => w.close())).then(() => {\n /* do nothing */\n });\n }\n releaseLock(): void {\n this._writers.map((w) => w.releaseLock());\n }\n\n write(chunk?: Uint8Array | undefined): Promise<void> {\n return Promise.all(this._writers.map((w) => w.write(chunk))).then(() => {\n /* do nothing */\n });\n }\n}\n\nexport class LogCollector implements WritableStream<Uint8Array> {\n readonly locked: boolean = false;\n private _writer?: FanoutWriter;\n private readonly _pass?: WritableStreamDefaultWriter<Uint8Array>;\n private readonly _bufferArr: Uint8Array[] = [];\n\n constructor(pass?: WritableStreamDefaultWriter<Uint8Array>) {\n this._pass = pass;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abort(reason?: Uint8Array): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async close(): Promise<void> {\n if (this._writer) {\n const ret = await this._writer.close();\n this._writer = undefined;\n return ret;\n }\n return Promise.resolve(undefined);\n }\n\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (!this._writer) {\n const dests: WritableStreamDefaultWriter[] = [new LogWriterCollector(this._bufferArr)];\n if (this._pass) {\n dests.push(this._pass);\n }\n this._writer = new FanoutWriter(dests);\n }\n return this._writer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logs(): any[] {\n if (!this._writer) {\n return [];\n }\n const jsonNlStr = new TextDecoder().decode(\n new Uint8Array(\n (function* (res: Uint8Array[]) {\n for (const x of res) {\n yield* x;\n }\n })(this._bufferArr),\n ),\n );\n const splitStr = jsonNlStr.split(\"\\n\");\n const filterStr = splitStr.filter((a) => a.length);\n const mapStr = filterStr.map((a) => JSON.parse(a));\n return mapStr;\n }\n}\n","import { Logger } from \"../logger\";\nimport { LevelHandlerImpl, LoggerImpl } from \"../logger_impl\";\nimport { SysAbstraction } from \"../sys_abstraction\";\nimport { LogCollector } from \"./log_collector\";\n\nexport interface MockLoggerReturn {\n readonly logger: Logger;\n readonly logCollector: LogCollector;\n}\n\nexport function MockLogger(params?: {\n readonly sys?: SysAbstraction;\n readonly pass?: WritableStreamDefaultWriter<Uint8Array>;\n moduleName?: string | string[];\n readonly disableDebug?: boolean;\n}): MockLoggerReturn {\n const lc = new LogCollector(params?.pass);\n let modNames = [\"MockLogger\"];\n if (typeof params?.moduleName === \"string\") {\n modNames = [params?.moduleName];\n } else if (Array.isArray(params?.moduleName)) {\n modNames = [...params.moduleName, ...modNames];\n }\n const logger = new LoggerImpl({\n out: lc,\n sys: params?.sys,\n levelHandler: new LevelHandlerImpl(),\n })\n .With()\n .Module(modNames[0])\n .Logger();\n if (!params?.disableDebug) {\n logger.SetDebug(...modNames);\n }\n return {\n logCollector: lc,\n logger,\n };\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T extends Error = Error>(t: T | string): Result<never, T> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as T);\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","export abstract class Option<T> {\n static Some<T>(t: T): Option<T> {\n return new Some(t);\n }\n\n static None<T>(): Option<T> {\n return new None();\n }\n\n static Is<T>(t: unknown): t is Option<T> {\n return t instanceof Option;\n }\n\n IsNone(): boolean {\n return this.is_none();\n }\n\n IsSome(): boolean {\n return this.is_some();\n }\n Unwrap(): T {\n return this.unwrap();\n }\n\n abstract is_none(): boolean;\n abstract is_some(): boolean;\n abstract unwrap(): T;\n}\n\nexport class Some<T> extends Option<T> {\n private _t: T;\n constructor(_t: T) {\n super();\n this._t = _t;\n }\n\n is_none(): boolean {\n return false;\n }\n is_some(): boolean {\n return true;\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class None<T> extends Option<T> {\n is_none(): boolean {\n return true;\n }\n is_some(): boolean {\n return false;\n }\n unwrap(): T {\n throw new Error(\"None.unwrap\");\n }\n}\n\nexport type WithoutOption<T> = T extends Option<infer U> ? U : T;\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;\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\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) {\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 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"],"mappings":"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","names":["Level","from"]}
|
1
|
+
{"version":3,"sources":["../../src/logger.ts","../../src/uri.ts","../../src/runtime.ts","../../src/logger-impl.ts","../../src/test/log-write-stream.ts","../../src/test/mock-logger.ts","../../src/result.ts","../../src/option.ts","../../src/crypto.ts"],"sourcesContent":["import { Result } from \"./result\";\nimport { CoerceURI } from \"./uri\";\n\nexport enum Level {\n WARN = \"warn\",\n DEBUG = \"debug\",\n INFO = \"info\",\n ERROR = \"error\",\n}\n\nexport type Serialized = string | number | boolean;\nexport type FnSerialized = () => Serialized | Serialized[];\n\nexport class LogValue {\n constructor(readonly fn: FnSerialized) {}\n value(): Serialized | Serialized[] {\n return this.fn();\n }\n toJSON(): Serialized | Serialized[] {\n return this.value();\n }\n}\n\nexport type LogSerializable = Record<string, LogValue | Promise<LogValue>>;\n\nexport function removeSelfRef(): (key: unknown, val: unknown) => unknown {\n const cache = new Set();\n return function (key: unknown, value: unknown) {\n if (typeof value === \"object\" && value !== null) {\n // Duplicate reference found, discard key\n if (cache.has(value)) return \"...\";\n cache.add(value);\n }\n return value;\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function asyncLogValue(val: () => Promise<Serialized>): Promise<LogValue> {\n // return Promise.resolve(logValue(val));\n throw new Error(\"Not implemented\");\n}\n\nexport function logValue(val: Serialized | Serialized[] | FnSerialized | LogSerializable | undefined | null): LogValue {\n switch (typeof val) {\n case \"function\":\n return new LogValue(val);\n case \"string\":\n return new LogValue(() => {\n try {\n const ret = JSON.parse(val);\n if (typeof ret === \"object\" && ret !== null) {\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n // do nothing\n }\n return val.toString();\n });\n case \"number\":\n return new LogValue(() => val);\n case \"boolean\":\n return new LogValue(() => val);\n case \"object\":\n return new LogValue(() => JSON.parse(JSON.stringify(val, removeSelfRef())));\n default:\n if (!val) {\n return new LogValue(() => \"--Falsy--\");\n }\n throw new Error(`Invalid type:${typeof val}`);\n }\n}\n\nexport interface Sized {\n size: number;\n}\nexport interface Lengthed {\n length: number;\n}\nexport type SizeOrLength = Sized | Lengthed;\n\nexport interface LoggerInterface<R> {\n Module(key: string): R;\n // if modules is empty, set for all Levels\n EnableLevel(level: Level, ...modules: string[]): R;\n DisableLevel(level: Level, ...modules: string[]): R;\n\n SetDebug(...modules: (string | string[])[]): R;\n SetExposeStack(enable?: boolean): R;\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): R;\n Result<T>(key: string, res: Result<T>): R;\n // default key url\n Url(url: CoerceURI, key?: string): R;\n // len\n Len(value: unknown, key?: string): R;\n\n Hash(value: unknown, key?: string): R;\n\n Str(key: string, value?: string): R;\n Error(): R;\n Warn(): R;\n Debug(): R;\n Log(): R;\n WithLevel(level: Level): R;\n\n Err(err: unknown): R; // could be Error, or something which coerces to string\n Info(): R;\n Timestamp(): R;\n Any(key: string, value: unknown): R;\n Dur(key: string, nsec: number): R;\n Uint64(key: string, value: number): R;\n Int(key: string, value: number): R;\n Bool(key: string, value: unknown): R;\n}\n\nexport function IsLogger(obj: unknown): obj is Logger {\n return (\n typeof obj === \"object\" &&\n [\n \"Module\",\n \"EnableLevel\",\n \"DisableLevel\",\n \"SetDebug\",\n \"Str\",\n \"Error\",\n \"Warn\",\n \"Debug\",\n \"Log\",\n \"WithLevel\",\n \"Err\",\n \"Info\",\n \"Timestamp\",\n \"Any\",\n \"Dur\",\n \"Uint64\",\n ]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map((fn) => typeof (obj as any)[fn] === \"function\")\n .reduce((a, b) => a && b, true)\n );\n}\n\nexport interface WithLogger extends LoggerInterface<WithLogger> {\n Logger(): Logger;\n}\n\nexport interface AsError {\n AsError(): Error;\n}\n\nexport interface Logger extends LoggerInterface<Logger> {\n With(): WithLogger;\n\n Msg(...args: string[]): AsError;\n Flush(): Promise<void>;\n}\n","type NullOrUndef = null | undefined;\n\nfunction falsy2undef<T>(value: T | NullOrUndef): T | undefined {\n return value === undefined || value === null ? undefined : value;\n}\n\nfunction ensureURLWithDefaultProto(url: string | URL, defaultProtocol: string): URL {\n if (!url) {\n return new URL(`${defaultProtocol}//`);\n }\n if (typeof url === \"string\") {\n try {\n return new URL(url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return new URL(`${defaultProtocol}//${url}`);\n }\n } else {\n return url;\n }\n}\n\nexport function isURL(value: unknown): value is URL {\n return (\n value instanceof URL ||\n (!!value &&\n typeof (value as URL).searchParams === \"object\" &&\n typeof (value as URL).searchParams.sort === \"function\" &&\n typeof (value as URL).hash === \"string\")\n );\n}\n\nfunction from<T>(fac: (url: URL) => T, strURLUri: CoerceURI | undefined, defaultProtocol: string): T {\n switch (typeof falsy2undef(strURLUri)) {\n case \"undefined\":\n return fac(new URL(`${defaultProtocol}//`));\n case \"string\":\n return fac(ensureURLWithDefaultProto(strURLUri as string, defaultProtocol));\n case \"object\":\n if (BuildURI.is(strURLUri)) {\n return fac(new URL(strURLUri._url.toString()));\n } else if (URI.is(strURLUri)) {\n return fac(new URL(strURLUri._url.toString()));\n } else if (isURL(strURLUri)) {\n return fac(new URL(strURLUri.toString()));\n }\n throw new Error(`unknown object type: ${strURLUri}`);\n default:\n throw new Error(`Invalid argument: ${typeof strURLUri}`);\n }\n}\n\nexport class BuildURI {\n _url: URL; // pathname needs this\n private constructor(url: URL) {\n this._url = url;\n }\n\n static is(value: unknown): value is BuildURI {\n return (\n value instanceof BuildURI ||\n (!!value && typeof (value as BuildURI).delParam === \"function\" && typeof (value as BuildURI).setParam === \"function\")\n );\n }\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): BuildURI {\n return from((url) => new BuildURI(url), strURLUri, defaultProtocol);\n }\n\n hostname(h: string) {\n this._url.hostname = h;\n return this;\n }\n\n password(p: string) {\n this._url.password = p;\n return this;\n }\n\n port(p: string) {\n this._url.port = p;\n return this;\n }\n\n username(u: string) {\n this._url.username = u;\n return this;\n }\n\n search(s: string) {\n this._url.search = s;\n return this;\n }\n\n protocol(p: string) {\n if (!p.endsWith(\":\")) {\n p = `${p}:`;\n }\n const mySrc = this._url.toString();\n const myDst = mySrc.replace(new RegExp(`^${this._url.protocol}`), `${p}`);\n this._url = new URL(myDst);\n return this;\n }\n\n pathname(p: string) {\n const myp = this.URI().pathname;\n const mySrc = this._url.toString();\n const myDst = mySrc.replace(new RegExp(`^${this._url.protocol}//${myp}`), `${this._url.protocol}//${p}`);\n this._url = new URL(myDst);\n return this;\n }\n\n hash(h: string) {\n this._url.hash = h;\n return this;\n }\n\n host(h: string) {\n this._url.host = h;\n return this;\n }\n\n delParam(key: string) {\n this._url.searchParams.delete(key);\n return this;\n }\n\n defParam(key: string, str: string) {\n if (!this._url.searchParams.has(key)) {\n this._url.searchParams.set(key, str);\n }\n return this;\n }\n\n setParam(key: string, str: string) {\n this._url.searchParams.set(key, str);\n return this;\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n\n URI(): URI {\n return URI.from(this._url);\n }\n}\n\nexport type CoerceURI = string | URL | URI | BuildURI | NullOrUndef;\n\n// non mutable URL Implementation\nexport class URI {\n // if no protocol is provided, default to file:\n static merge(into: CoerceURI, from: CoerceURI, defaultProtocol = \"file:\"): URI {\n const intoUrl = BuildURI.from(into, defaultProtocol);\n const fromUrl = URI.from(from, defaultProtocol);\n intoUrl.protocol(fromUrl.protocol);\n const fPath = fromUrl.pathname;\n if (!(fPath.length === 0 || fPath === \"/\" || fPath === \"./\")) {\n intoUrl.pathname(fromUrl.pathname);\n }\n for (const [key, value] of fromUrl.getParams) {\n intoUrl.setParam(key, value);\n }\n return intoUrl.URI();\n }\n\n static is(value: unknown): value is URI {\n return (\n value instanceof URI ||\n (!!value &&\n typeof (value as URI).asURL === \"function\" &&\n typeof (value as URI).getParam === \"function\" &&\n typeof (value as URI).hasParam === \"function\")\n );\n }\n\n // if no protocol is provided, default to file:\n static from(strURLUri?: CoerceURI, defaultProtocol = \"file:\"): URI {\n return from((url) => new URI(url), strURLUri, defaultProtocol);\n }\n\n readonly _url: URL;\n private constructor(url: URL) {\n this._url = url;\n }\n\n build(): BuildURI {\n return BuildURI.from(this.asURL());\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n get password(): string {\n return this._url.password;\n }\n\n get port(): string {\n return this._url.port;\n }\n\n get username(): string {\n return this._url.username;\n }\n\n get search(): string {\n return this._url.search;\n }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n get pathname(): string {\n return this._url\n .toString()\n .replace(/^.*:\\/\\//, \"\")\n .replace(/\\?.*$/, \"\");\n }\n\n get hash(): string {\n return this._url.hash;\n }\n\n get host(): string {\n return this._url.host;\n }\n\n get getParams(): Iterable<[string, string]> {\n return this._url.searchParams.entries();\n }\n\n hasParam(key: string): boolean {\n return this._url.searchParams.has(key);\n }\n getParam(key: string): string | undefined {\n return falsy2undef(this._url.searchParams.get(key));\n }\n\n clone(): URI {\n return new URI(this.asURL());\n }\n\n asURL(): URL {\n const url = new URL(this._url.toString());\n url.searchParams.sort();\n return url;\n }\n\n toString(): string {\n this._url.searchParams.sort();\n return this._url.toString();\n }\n}\n","export interface Runtime {\n isNodeIsh: boolean;\n isBrowser: boolean;\n isDeno: boolean;\n isReactNative: boolean;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSet(value: string, ref: any = globalThis): boolean {\n const [head, ...tail] = value.split(\".\");\n if ([\"object\", \"function\"].includes(typeof ref) && ref && [\"object\", \"function\"].includes(typeof ref[head]) && ref[head]) {\n if (tail.length <= 1) {\n return true;\n }\n return isSet(tail.join(\".\"), ref[head]);\n }\n return false;\n}\n\nexport function runtimeFn(): Runtime {\n const isReactNative = isSet(\"navigator.product\") && globalThis.navigator.product === \"ReactNative\";\n const isNodeIsh = isSet(\"process.versions.node\") && !isReactNative;\n const isDeno = isSet(\"Deno\") && !isReactNative;\n return {\n isNodeIsh,\n isBrowser: !(isNodeIsh || isDeno) && !isReactNative,\n isDeno,\n isReactNative,\n };\n}\n","// import { v4 } from \"uuid\";\nimport {\n AsError,\n FnSerialized,\n LogSerializable,\n Level,\n Logger,\n logValue,\n Serialized,\n WithLogger,\n removeSelfRef,\n Sized,\n Lengthed,\n LogValue,\n asyncLogValue,\n} from \"./logger\";\nimport { WebSysAbstraction } from \"./web/web-sys-abstraction\";\nimport { SysAbstraction } from \"./sys-abstraction\";\nimport { Result } from \"./result\";\nimport { CoerceURI, URI } from \"./uri\";\nimport { runtimeFn } from \"./runtime\";\nimport { ConsoleWriterStream } from \"./utils/console-write-stream\";\n\nconst encoder = new TextEncoder();\n\nexport interface LevelHandler {\n enableLevel(level: Level, ...modules: string[]): void;\n disableLevel(level: Level, ...modules: string[]): void;\n setExposeStack(enable?: boolean): void;\n isStackExposed: boolean;\n setDebug(...modules: (string | string[])[]): void;\n isEnabled(ilevel: unknown, module: unknown): boolean;\n}\n\nexport class LevelHandlerImpl implements LevelHandler {\n readonly _globalLevels = new Set<Level>([Level.INFO, Level.ERROR, Level.WARN]);\n readonly _modules = new Map<string, Set<Level>>();\n isStackExposed = false;\n enableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.add(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, level]));\n },\n ...modules,\n );\n }\n disableLevel(level: Level, ...modules: string[]): void {\n if (modules.length == 0) {\n this._globalLevels.delete(level);\n return;\n }\n this.forModules(\n level,\n (p) => {\n this._modules.delete(p);\n },\n ...modules,\n );\n }\n\n setExposeStack(enable?: boolean): void {\n this.isStackExposed = !!enable;\n }\n\n forModules(level: Level, fnAction: (p: string) => void, ...modules: (string | string[])[]): void {\n for (const m of modules.flat()) {\n if (typeof m !== \"string\") {\n continue;\n }\n const parts = m\n .split(\",\")\n .map((s) => s.trim())\n .filter((s) => s.length);\n for (const p of parts) {\n fnAction(p);\n }\n }\n }\n setDebug(...modules: (string | string[])[]): void {\n this.forModules(\n Level.DEBUG,\n (p) => {\n this._modules.set(p, new Set([...this._globalLevels, Level.DEBUG]));\n },\n ...modules,\n );\n }\n isEnabled(ilevel: unknown, module: unknown): boolean {\n const level = ilevel as Level; // what if it's not a level?\n if (typeof module === \"string\") {\n const levels = this._modules.get(module);\n if (levels && levels.has(level)) {\n return true;\n }\n }\n const wlevel = this._modules.get(\"*\");\n if (wlevel && typeof level === \"string\") {\n if (wlevel.has(level)) {\n return true;\n }\n }\n if (typeof level !== \"string\") {\n // this is a plain log\n return true;\n }\n return this._globalLevels.has(level);\n }\n}\n\nconst levelSingleton = new LevelHandlerImpl();\n\nexport class LogWriterStream {\n readonly _out: WritableStream<Uint8Array>;\n readonly _toFlush: (() => Promise<void>)[] = [];\n\n constructor(out: WritableStream<Uint8Array>) {\n this._out = out;\n }\n\n write(encoded: Uint8Array) {\n const my = async () => {\n // const val = Math.random();\n // console.log(\">>>My:\", val)\n try {\n const writer = this._out.getWriter();\n await writer.ready;\n await writer.write(encoded);\n await writer.releaseLock();\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error(\"Chunk error:\", err);\n }\n // console.log(\"<<<My:\", val)\n };\n this._toFlush.push(my);\n this._flush();\n }\n\n _flushIsRunning = false;\n _flushDoneFns = Array<() => void>();\n _flush(toFlush: (() => Promise<void>)[] | undefined = undefined, done?: () => void): void {\n if (done) {\n this._flushDoneFns.push(done);\n }\n\n if (this._toFlush.length == 0) {\n // console.log(\"Flush is stopped\", this._toFlush.length)\n this._flushIsRunning = false;\n this._flushDoneFns.forEach((fn) => fn());\n this._flushDoneFns = [];\n return;\n }\n\n if (!toFlush && this._toFlush.length == 1 && !this._flushIsRunning) {\n this._flushIsRunning = true;\n // console.log(\"Flush is started\", this._toFlush.length)\n } else if (!toFlush) {\n // console.log(\"flush queue check but is running\", this._toFlush.length)\n return;\n }\n\n // console.log(\">>>Msg:\", this._toFlush.length)\n const my = this._toFlush.shift();\n my?.().finally(() => {\n // console.log(\"<<<Msg:\", this._toFlush.length)\n this._flush(this._toFlush);\n });\n }\n}\n\nfunction getLen(value: unknown): LogValue {\n if (Array.isArray(value)) {\n return logValue(() => value.length);\n } else if (typeof value === \"string\") {\n return logValue(() => value.length);\n } else if (typeof value === \"object\" && value !== null) {\n if (typeof (value as Sized).size === \"number\") {\n return logValue(() => (value as Sized).size);\n } else if (typeof (value as Lengthed).length === \"number\") {\n return logValue(() => (value as Lengthed).length);\n }\n return logValue(() => Object.keys(value).length);\n }\n return logValue(() => -1);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction hash(value: unknown): string {\n // const hasher = createHash(\"sha256\");\n // hasher.update(JSON.stringify(value, removeSelfRef()));\n // return hasher.digest(\"hex\");\n return \"not implemented\";\n}\n\nfunction toLogValue(lop: LogValue | Promise<LogValue>): LogValue | undefined {\n if (lop && typeof (lop as Promise<LogValue>).then === \"function\") {\n throw new Error(\"async logValue Not implemented\");\n }\n return lop as LogValue;\n}\n\nexport interface LoggerImplParams {\n readonly out?: WritableStream<Uint8Array>;\n readonly logWriter?: LogWriterStream;\n readonly sys?: SysAbstraction;\n readonly withAttributes?: LogSerializable;\n readonly levelHandler?: LevelHandler;\n}\n\nexport class LoggerImpl implements Logger {\n readonly _sys: SysAbstraction;\n readonly _attributes: LogSerializable = {};\n readonly _withAttributes: LogSerializable;\n readonly _logWriter: LogWriterStream;\n readonly _levelHandler: LevelHandler;\n // readonly _id: string = \"logger-\" + Math.random().toString(36)\n\n constructor(params?: LoggerImplParams) {\n if (!params) {\n params = {};\n }\n if (!params.sys) {\n this._sys = WebSysAbstraction();\n } else {\n this._sys = params.sys;\n }\n if (params.logWriter) {\n this._logWriter = params.logWriter;\n } else {\n if (!params.out) {\n const rt = runtimeFn();\n let stream: WritableStream<Uint8Array>;\n if (rt.isBrowser) {\n stream = new ConsoleWriterStream();\n } else {\n if (rt.isNodeIsh || rt.isReactNative) {\n stream = this._sys.Stdout();\n } else {\n throw new Error(\"No output defined for runtime\");\n }\n }\n this._logWriter = new LogWriterStream(stream);\n } else {\n this._logWriter = new LogWriterStream(params.out);\n }\n }\n if (!params.withAttributes) {\n this._withAttributes = {};\n } else {\n this._withAttributes = { ...params.withAttributes };\n }\n this._attributes = { ...this._withAttributes };\n if (params.levelHandler) {\n this._levelHandler = params.levelHandler;\n } else {\n this._levelHandler = levelSingleton;\n }\n // console.log(\"LoggerImpl\", this._id, this._attributes, this._withAttributes)\n }\n\n SetExposeStack(enable?: boolean): Logger {\n this._levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): Logger {\n this._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): Logger {\n this._levelHandler.disableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): Logger {\n this._attributes[\"module\"] = logValue(key);\n this._withAttributes[\"module\"] = logValue(key);\n return this;\n }\n // if the string is \"*\" it will enable for all modules\n SetDebug(...modules: (string | string[])[]): Logger {\n this._levelHandler.setDebug(...modules);\n return this;\n }\n\n Timestamp(): Logger {\n // this is called with .call from _produceError where this\n // this is crafted to have _sys and _attributes\n // CAUTION so done use other ref from this\n this._attributes[\"ts\"] = logValue(this._sys.Time().Now().toISOString());\n return this;\n }\n Warn(): Logger {\n this._attributes[\"level\"] = logValue(Level.WARN);\n return this;\n }\n Log(): Logger {\n return this;\n }\n Debug(): Logger {\n this._attributes[\"level\"] = logValue(Level.DEBUG);\n return this;\n }\n Error(): Logger {\n this._attributes[\"level\"] = logValue(Level.ERROR);\n return this;\n }\n Info(): Logger {\n this._attributes[\"level\"] = logValue(Level.INFO);\n return this;\n }\n Err(err: unknown): Logger {\n if (err instanceof Error) {\n this._attributes[\"error\"] = logValue(err.message);\n if (this._levelHandler.isStackExposed) {\n this._attributes[\"stack\"] = logValue(err.stack?.split(\"\\n\").map((s) => s.trim()));\n }\n } else {\n this._attributes[\"error\"] = logValue(\"\" + err);\n }\n return this;\n }\n WithLevel(l: Level): Logger {\n this._attributes[\"level\"] = logValue(l);\n return this;\n }\n\n Ref(key: string, action: { toString: () => string } | FnSerialized): Logger {\n if (typeof action === \"function\") {\n this._attributes[key] = logValue(action as FnSerialized);\n } else if (typeof action.toString === \"function\") {\n this._attributes[key] = logValue(() => action.toString());\n } else {\n this._attributes[key] = logValue(\"INVALID REF\");\n }\n return this;\n }\n Bool(key: string, value: unknown): Logger {\n this._attributes[key] = logValue(!!value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): Logger {\n if (res.isOk()) {\n this._attributes[key] = logValue(res.Ok() as Serialized);\n } else {\n this.Err(res.Err());\n }\n return this;\n }\n\n Len(value: unknown, key = \"len\"): Logger {\n this._attributes[key] = getLen(value);\n return this;\n }\n\n Hash(value: unknown, key = \"hash\"): Logger {\n this._attributes[key] = asyncLogValue(async () => `${getLen(value).value()}:${await hash(value)}`);\n return this;\n }\n\n Url(url: CoerceURI, key = \"url\"): Logger {\n this.Ref(key, () => URI.from(url).toString());\n return this;\n }\n\n Str(key: string, value?: string): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n\n Any(key: string, value?: string | number | boolean | LogSerializable): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n Dur(key: string, nsec: number): Logger {\n this._attributes[key] = logValue(`${nsec}ms`);\n // new Intl.DurationFormat(\"en\", { style: \"narrow\" }).format(nsec);\n return this;\n }\n Uint64(key: string, value: number): Logger {\n this._attributes[key] = logValue(value);\n return this;\n }\n Int(key: string, value: number): Logger {\n return this.Uint64(key, value);\n }\n\n async Flush(): Promise<void> {\n return new Promise((resolve) => {\n this._logWriter._flush(undefined, resolve);\n });\n }\n\n With(): WithLogger {\n // console.log(\"WithLoggerBuilder.With\", this._id, this._attributes, this._withAttributes);\n return new WithLoggerBuilder(\n new LoggerImpl({\n logWriter: this._logWriter,\n sys: this._sys,\n levelHandler: this._levelHandler,\n withAttributes: {\n module: this._attributes[\"module\"],\n ...this._withAttributes,\n },\n }),\n );\n }\n\n _resetAttributes(fn: () => () => string): () => string {\n const ret = fn();\n Object.keys(this._attributes).forEach((key) => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n });\n Object.assign(this._attributes, this._withAttributes);\n return ret;\n }\n _produceError(attr: LogSerializable, ...args: string[]): string {\n attr[\"msg\"] = logValue(args.join(\" \"));\n const msg = attr[\"msg\"].value();\n if (typeof msg === \"string\" && !msg.trim().length) {\n delete attr[\"msg\"];\n }\n if (toLogValue(attr[\"ts\"])?.value() === \"ETERNITY\") {\n // hacky but it works\n this.Timestamp.call({\n _sys: this._sys,\n _attributes: attr,\n });\n }\n return JSON.stringify(attr, removeSelfRef());\n }\n\n Msg(...args: string[]): AsError {\n const fnError = this._resetAttributes(() => {\n const doWrite = this._levelHandler.isEnabled(\n toLogValue(this._attributes[\"level\"])?.value(),\n toLogValue(this._attributes[\"module\"])?.value(),\n );\n let fnRet = () => this._produceError({ ...this._attributes }, ...args);\n if (doWrite) {\n const str = fnRet();\n const encoded = encoder.encode(str + \"\\n\");\n this._logWriter.write(encoded);\n fnRet = () => str;\n }\n return fnRet;\n });\n return {\n AsError: () => new Error(fnError()),\n };\n }\n}\n\nclass WithLoggerBuilder implements WithLogger {\n readonly _li: LoggerImpl;\n constructor(li: LoggerImpl) {\n this._li = li;\n }\n\n Logger(): Logger {\n Object.assign(this._li._withAttributes, this._li._attributes);\n return this._li;\n }\n\n SetExposeStack(enable?: boolean): WithLogger {\n this._li._levelHandler.setExposeStack(enable);\n return this;\n }\n\n EnableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n DisableLevel(level: Level, ...modules: string[]): WithLogger {\n this._li._levelHandler.enableLevel(level, ...modules);\n return this;\n }\n\n Module(key: string): WithLogger {\n this._li.Module(key);\n return this;\n }\n SetDebug(...modules: (string | string[])[]): WithLogger {\n this._li.SetDebug(...modules);\n return this;\n }\n\n Str(key: string, value?: string): WithLogger {\n this._li.Str(key, value);\n return this;\n }\n\n Len(value: unknown, key?: string): WithLogger {\n this._li.Len(value, key);\n return this;\n }\n\n Hash(value: unknown, key?: string): WithLogger {\n this._li.Hash(value, key);\n return this;\n }\n\n Ref(key: string, action: Serialized | FnSerialized): WithLogger {\n this._li.Ref(key, action);\n return this;\n }\n Bool(key: string, value: unknown): WithLogger {\n this._li.Bool(key, value);\n return this;\n }\n Result<T>(key: string, res: Result<T, Error>): WithLogger {\n this._li.Result(key, res);\n return this;\n }\n Url(url: URL, key?: string): WithLogger {\n this._li.Url(url, key);\n return this;\n }\n Int(key: string, value: number): WithLogger {\n this._li.Int(key, value);\n return this;\n }\n\n Log(): WithLogger {\n this._li.Log();\n return this;\n }\n\n WithLevel(level: Level): WithLogger {\n this._li.WithLevel(level);\n return this;\n }\n\n Error(): WithLogger {\n this._li.Error();\n return this;\n }\n Warn(): WithLogger {\n this._li.Error();\n return this;\n }\n Debug(): WithLogger {\n this._li.Debug();\n return this;\n }\n Err(err: unknown): WithLogger {\n this._li.Err(err);\n return this;\n }\n Info(): WithLogger {\n this._li.Info();\n return this;\n }\n Timestamp(): WithLogger {\n this._li._attributes[\"ts\"] = logValue(\"ETERNITY\");\n return this;\n }\n Any(key: string, value: LogSerializable): WithLogger {\n this._li.Any(key, value);\n return this;\n }\n Dur(key: string, nsec: number): WithLogger {\n this._li.Dur(key, nsec);\n return this;\n }\n Uint64(key: string, value: number): WithLogger {\n this._li.Uint64(key, value);\n return this;\n }\n}\n","import { FanoutWriteStream } from \"../utils/fanout-write-stream\";\nimport { Future } from \"../future\";\n\nexport class LogWriteStream implements WritableStreamDefaultWriter<Uint8Array> {\n private readonly _bufferArr: Uint8Array[];\n\n constructor(bufferArr: Uint8Array[]) {\n this._bufferArr = bufferArr;\n }\n\n readonly _resolveClosed = new Future<undefined>();\n readonly closed: Promise<undefined> = this._resolveClosed.asPromise();\n readonly desiredSize: number | null = null;\n readonly ready: Promise<undefined> = Promise.resolve(undefined);\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\n abort(reason?: any): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n async close(): Promise<void> {\n await this.closed;\n return Promise.resolve(undefined);\n }\n releaseLock(): void {\n // do nothing\n }\n async write(chunk?: Uint8Array): Promise<void> {\n if (chunk) {\n this._bufferArr.push(chunk);\n }\n return Promise.resolve(undefined);\n }\n}\n\nexport class LogCollector implements WritableStream<Uint8Array> {\n readonly locked: boolean = false;\n private _writer?: FanoutWriteStream;\n private readonly _pass?: WritableStreamDefaultWriter<Uint8Array>;\n private readonly _bufferArr: Uint8Array[] = [];\n\n constructor(pass?: WritableStreamDefaultWriter<Uint8Array>) {\n this._pass = pass;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n abort(reason?: Uint8Array): Promise<void> {\n throw new Error(\"Method not implemented.\");\n }\n\n async close(): Promise<void> {\n if (this._writer) {\n const ret = await this._writer.close();\n this._writer = undefined;\n return ret;\n }\n return Promise.resolve(undefined);\n }\n\n getWriter(): WritableStreamDefaultWriter<Uint8Array> {\n if (!this._writer) {\n const dests: WritableStreamDefaultWriter[] = [new LogWriteStream(this._bufferArr)];\n if (this._pass) {\n dests.push(this._pass);\n }\n this._writer = new FanoutWriteStream(dests);\n }\n return this._writer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Logs(): any[] {\n if (!this._writer) {\n return [];\n }\n const jsonNlStr = new TextDecoder().decode(\n new Uint8Array(\n (function* (res: Uint8Array[]) {\n for (const x of res) {\n yield* x;\n }\n })(this._bufferArr),\n ),\n );\n const splitStr = jsonNlStr.split(\"\\n\");\n const filterStr = splitStr.filter((a) => a.length);\n const mapStr = filterStr.map((a) => JSON.parse(a));\n return mapStr;\n }\n}\n","import { Logger } from \"../logger\";\nimport { LevelHandlerImpl, LoggerImpl } from \"../logger-impl\";\nimport { SysAbstraction } from \"../sys-abstraction\";\nimport { LogCollector } from \"./log-write-stream\";\n\nexport interface MockLoggerReturn {\n readonly logger: Logger;\n readonly logCollector: LogCollector;\n}\n\nexport function MockLogger(params?: {\n readonly sys?: SysAbstraction;\n readonly pass?: WritableStreamDefaultWriter<Uint8Array>;\n moduleName?: string | string[];\n readonly disableDebug?: boolean;\n}): MockLoggerReturn {\n const lc = new LogCollector(params?.pass);\n let modNames = [\"MockLogger\"];\n if (typeof params?.moduleName === \"string\") {\n modNames = [params?.moduleName];\n } else if (Array.isArray(params?.moduleName)) {\n modNames = [...params.moduleName, ...modNames];\n }\n const logger = new LoggerImpl({\n out: lc,\n sys: params?.sys,\n levelHandler: new LevelHandlerImpl(),\n })\n .With()\n .Module(modNames[0])\n .Logger();\n if (!params?.disableDebug) {\n logger.SetDebug(...modNames);\n }\n return {\n logCollector: lc,\n logger,\n };\n}\n","export abstract class Result<T, E = Error> {\n static Ok<T>(t: T): Result<T, Error> {\n return new ResultOK(t);\n }\n static Err<T extends Error = Error>(t: T | string): Result<never, T> {\n if (typeof t === \"string\") {\n return new ResultError(new Error(t) as T);\n }\n return new ResultError(t);\n }\n static Is<T>(t: unknown): t is Result<T> {\n if (!t) {\n return false;\n }\n if (t instanceof Result) {\n return true;\n }\n const rt = t as Result<T>;\n if ([typeof rt.is_ok, typeof rt.is_err, typeof rt.unwrap, typeof rt.unwrap_err].every((x) => x === \"function\")) {\n return true;\n }\n return false;\n }\n\n isOk(): boolean {\n return this.is_ok();\n }\n isErr(): boolean {\n return this.is_err();\n }\n\n Ok(): T {\n return this.unwrap();\n }\n Err(): E {\n return this.unwrap_err();\n }\n\n abstract is_ok(): boolean;\n abstract is_err(): boolean;\n abstract unwrap(): T;\n abstract unwrap_err(): E;\n}\n\nexport class ResultOK<T> extends Result<T, Error> {\n private _t: T;\n constructor(t: T) {\n super();\n this._t = t;\n }\n is_ok(): boolean {\n return true;\n }\n is_err(): boolean {\n return false;\n }\n unwrap_err(): Error {\n throw new Error(\"Result is Ok\");\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class ResultError<T extends Error> extends Result<never, T> {\n private _error: T;\n constructor(t: T) {\n super();\n this._error = t;\n }\n is_ok(): boolean {\n return false;\n }\n is_err(): boolean {\n return true;\n }\n unwrap(): never {\n throw new Error(`Result is Err: ${this._error}`);\n }\n unwrap_err(): T {\n return this._error;\n }\n}\n\nexport type WithoutResult<T> = T extends Result<infer U> ? U : T;\n\n/*\n\ntype FinalizedResult<T> = {\n result: T;\n scopeResult?: Result<void>;\n finally: () => Promise<void>;\n}\n\ntype exection2ResultParam<T> = {\n init: () => Promise<T>;\n inScope?: (t: T) => Promise<void>;\n cleanup: (t: T) => Promise<void>;\n\n}\n\nasync function expection2Result<T>({fn, inScope, cleanup}: exection2ResultParam<T>): Promise<Result<FinalizedResult<T>>> {\n try {\n const res = await fn();\n if (inScope) {\n try {\n await inScope?.(res)\n } catch (err) {\n return Result.Err(err as Error)\n }\n await cleanup(res)\n return Result.Ok({\n result: res,\n finally: async () => { }\n })\n }\n return Result.Ok({\n result: res ,\n finally: async () => {\n return cleanup(res)\n }\n })\n } catch (err) {\n return Result.Err(err as Error)\n }\n}\n*/\n\n// await expection2Result({\n// init: openDB,\n// inScope: (res) => {\n// res.query()\n// },\n// cleanup: async (y) => {\n// await y.close()\n// }\n// })\n// async function openDB() {\n// try {\n// const opendb = await openDB()\n// return Result.Ok({\n// openDB,\n// finally: async () => {\n// await opendb.close()\n// }})\n// } catch (err) {\n// return Result.Err(err)\n// }\n// }\n// }\n","export abstract class Option<T> {\n static Some<T>(t: T): Option<T> {\n return new Some(t);\n }\n\n static None<T>(): Option<T> {\n return new None();\n }\n\n static Is<T>(t: unknown): t is Option<T> {\n return t instanceof Option;\n }\n\n IsNone(): boolean {\n return this.is_none();\n }\n\n IsSome(): boolean {\n return this.is_some();\n }\n Unwrap(): T {\n return this.unwrap();\n }\n\n abstract is_none(): boolean;\n abstract is_some(): boolean;\n abstract unwrap(): T;\n}\n\nexport class Some<T> extends Option<T> {\n private _t: T;\n constructor(_t: T) {\n super();\n this._t = _t;\n }\n\n is_none(): boolean {\n return false;\n }\n is_some(): boolean {\n return true;\n }\n unwrap(): T {\n return this._t;\n }\n}\n\nexport class None<T> extends Option<T> {\n is_none(): boolean {\n return true;\n }\n is_some(): boolean {\n return false;\n }\n unwrap(): T {\n throw new Error(\"None.unwrap\");\n }\n}\n\nexport type WithoutOption<T> = T extends Option<infer U> ? U : T;\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;\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\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) {\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 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"],"mappings":"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","names":["Level","from"]}
|