@towns-labs/utils 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # A utils lib
2
+
3
+ Includes logging and a few other catchall items
@@ -0,0 +1,11 @@
1
+ export declare function bin_fromBase64(base64String: string): Uint8Array;
2
+ export declare function bin_toBase64(uint8Array: Uint8Array): string;
3
+ export declare function bin_fromHexString(hexString: string): Uint8Array;
4
+ export declare function bin_toHexString(uint8Array: Uint8Array): string;
5
+ export declare function bin_fromString(str: string): Uint8Array;
6
+ export declare function bin_toString(buf: Uint8Array): string;
7
+ export declare function shortenHexString(s: string): string;
8
+ export declare function isHexString(value: string): boolean;
9
+ export declare function bin_equal(a: Uint8Array | null | undefined, b: Uint8Array | null | undefined): boolean;
10
+ export declare function bigIntToBytes(value: bigint): Uint8Array;
11
+ //# sourceMappingURL=binary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"AASA,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAE/D;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAE3D;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAE/D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAE9D;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEtD;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAEpD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKlD;AAED,wBAAgB,SAAS,CACrB,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,EAChC,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,SAAS,GACjC,OAAO,CAUT;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAevD"}
package/dist/binary.js ADDED
@@ -0,0 +1,60 @@
1
+ import { base64Decode, base64Encode } from '@bufbuild/protobuf/wire';
2
+ import { bytesToHex, bytesToUtf8, equalsBytes, hexToBytes, utf8ToBytes, } from 'ethereum-cryptography/utils';
3
+ export function bin_fromBase64(base64String) {
4
+ return base64Decode(base64String);
5
+ }
6
+ export function bin_toBase64(uint8Array) {
7
+ return base64Encode(uint8Array);
8
+ }
9
+ export function bin_fromHexString(hexString) {
10
+ return hexToBytes(hexString);
11
+ }
12
+ export function bin_toHexString(uint8Array) {
13
+ return bytesToHex(uint8Array);
14
+ }
15
+ export function bin_fromString(str) {
16
+ return utf8ToBytes(str);
17
+ }
18
+ export function bin_toString(buf) {
19
+ return bytesToUtf8(buf);
20
+ }
21
+ export function shortenHexString(s) {
22
+ if (s.startsWith('0x')) {
23
+ return s.length > 12 ? s.slice(0, 6) + '..' + s.slice(-4) : s;
24
+ }
25
+ else {
26
+ return s.length > 10 ? s.slice(0, 4) + '..' + s.slice(-4) : s;
27
+ }
28
+ }
29
+ export function isHexString(value) {
30
+ if (value.length === 0 || (value.length & 1) !== 0) {
31
+ return false;
32
+ }
33
+ return /^(0x)?[0-9a-fA-F]+$/.test(value);
34
+ }
35
+ export function bin_equal(a, b) {
36
+ if ((a === undefined || a === null || a.length === 0) &&
37
+ (b === undefined || b === null || b.length === 0)) {
38
+ return true;
39
+ }
40
+ else if (a === undefined || a === null || b === undefined || b === null) {
41
+ return false;
42
+ }
43
+ return equalsBytes(a, b);
44
+ }
45
+ // Returns the absolute value of this BigInt as a big-endian byte array
46
+ export function bigIntToBytes(value) {
47
+ const abs = value < 0n ? -value : value;
48
+ // Calculate the byte length needed to represent the BigInt
49
+ const byteLength = Math.ceil(abs.toString(16).length / 2);
50
+ // Create a buffer of the required length
51
+ const buffer = new Uint8Array(byteLength);
52
+ // Fill the buffer with the big-endian representation of the BigInt
53
+ let temp = abs;
54
+ for (let i = byteLength - 1; i >= 0; i--) {
55
+ buffer[i] = Number(temp & 0xffn); // Extract last 8 bits
56
+ temp >>= 8n; // Shift right by 8 bits
57
+ }
58
+ return buffer;
59
+ }
60
+ //# sourceMappingURL=binary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../src/binary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Err } from '@towns-labs/proto';
2
+ export declare class CodeException extends Error {
3
+ code: number;
4
+ data?: any;
5
+ constructor(message: string, code: number, data?: any);
6
+ }
7
+ export declare function throwWithCode(message?: string, code?: Err, data?: any): never;
8
+ /**
9
+ * If not value, throws JSON RPC error with numberic error code, which is transmitted to the client.
10
+ * @param value The value to check
11
+ * @param message Error message to use if value is not valid
12
+ * @param code JSON RPC error code to use if value is not valid
13
+ * @param data Optional data to include in the error
14
+ */
15
+ export declare function check(value: boolean, message?: string, code?: Err, data?: any): asserts value;
16
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAKvC,qBAAa,aAAc,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,GAAG,CAAA;gBACE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;CAKxD;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,KAAK,CAI7E;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,KAAK,CAI7F"}
package/dist/check.js ADDED
@@ -0,0 +1,30 @@
1
+ import { Err } from '@towns-labs/proto';
2
+ import { dlogError } from './dlog';
3
+ const log = dlogError('csb:error');
4
+ export class CodeException extends Error {
5
+ code;
6
+ data;
7
+ constructor(message, code, data) {
8
+ super(message);
9
+ this.code = code;
10
+ this.data = data;
11
+ }
12
+ }
13
+ export function throwWithCode(message, code, data) {
14
+ const e = new CodeException(message ?? 'Unknown', code ?? Err.ERR_UNSPECIFIED, data);
15
+ log('throwWithCode', e);
16
+ throw e;
17
+ }
18
+ /**
19
+ * If not value, throws JSON RPC error with numberic error code, which is transmitted to the client.
20
+ * @param value The value to check
21
+ * @param message Error message to use if value is not valid
22
+ * @param code JSON RPC error code to use if value is not valid
23
+ * @param data Optional data to include in the error
24
+ */
25
+ export function check(value, message, code, data) {
26
+ if (!value) {
27
+ throwWithCode(message, code, data);
28
+ }
29
+ }
30
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAElC,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,CAAA;AAElC,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpC,IAAI,CAAQ;IACZ,IAAI,CAAM;IACV,YAAY,OAAe,EAAE,IAAY,EAAE,IAAU;QACjD,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;CACJ;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,IAAU,EAAE,IAAU;IAClE,MAAM,CAAC,GAAG,IAAI,aAAa,CAAC,OAAO,IAAI,SAAS,EAAE,IAAI,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IACpF,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAA;IACvB,MAAM,CAAC,CAAA;AACX,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAc,EAAE,OAAgB,EAAE,IAAU,EAAE,IAAU;IAC1E,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;AACL,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Delegate wallet authentication utilities
3
+ *
4
+ * These functions support delegate wallet signatures where a primary wallet
5
+ * authorizes a device/delegate wallet to sign on its behalf with an expiry time.
6
+ */
7
+ /**
8
+ * Creates the hash source for delegate authorization signature
9
+ *
10
+ * @param devicePublicKey - Uncompressed public key (64 or 65 bytes)
11
+ * @param expiryEpochMs - Expiry timestamp in milliseconds (0 = no expiry)
12
+ * @returns Hash source to be signed by primary wallet
13
+ */
14
+ export declare function riverDelegateHashSrc(devicePublicKey: Uint8Array, expiryEpochMs: bigint): Uint8Array;
15
+ /**
16
+ * Converts uncompressed public key from string to Uint8Array
17
+ *
18
+ * @param publicKey - Public key string starting with '0x04' (132 chars total)
19
+ * @returns Public key as Uint8Array
20
+ */
21
+ export declare function publicKeyToUint8Array(publicKey: string): Uint8Array;
22
+ /**
23
+ * Derives Ethereum address from public key
24
+ *
25
+ * @param publicKey - Uncompressed public key (64 or 65 bytes)
26
+ * @returns 20-byte Ethereum address
27
+ */
28
+ export declare function publicKeyToAddress(publicKey: Uint8Array): Uint8Array;
29
+ /**
30
+ * Recovers the primary wallet address from a delegate signature
31
+ *
32
+ * This verifies that a delegate wallet was authorized by a primary wallet
33
+ * by recovering the primary wallet's address from the delegate authorization signature.
34
+ *
35
+ * @param params.delegatePubKey - Delegate wallet's public key (string or Uint8Array)
36
+ * @param params.delegateSig - Signature from primary wallet authorizing the delegate
37
+ * @param params.expiryEpochMs - Expiry timestamp that was signed
38
+ * @returns Primary wallet address (20 bytes)
39
+ */
40
+ export declare function recoverPublicKeyFromDelegateSig(params: {
41
+ delegatePubKey: Uint8Array | string;
42
+ delegateSig: Uint8Array;
43
+ expiryEpochMs: bigint;
44
+ }): Uint8Array;
45
+ //# sourceMappingURL=delegate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAChC,eAAe,EAAE,UAAU,EAC3B,aAAa,EAAE,MAAM,GACtB,UAAU,CAYZ;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAOnE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,UAAU,GAAG,UAAU,CAMpE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACpD,cAAc,EAAE,UAAU,GAAG,MAAM,CAAA;IACnC,WAAW,EAAE,UAAU,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;CACxB,GAAG,UAAU,CAYb"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Delegate wallet authentication utilities
3
+ *
4
+ * These functions support delegate wallet signatures where a primary wallet
5
+ * authorizes a device/delegate wallet to sign on its behalf with an expiry time.
6
+ */
7
+ import { ecrecover, fromRPCSig, hashPersonalMessage } from '@ethereumjs/util';
8
+ import { bin_fromHexString, bin_toHexString } from './binary';
9
+ import { check } from './check';
10
+ import { keccak256 } from 'ethereum-cryptography/keccak';
11
+ import { abytes } from '@noble/hashes/utils';
12
+ // Header for delegate signature 'RIVERSIG'
13
+ const RIVER_SIG_HEADER = new Uint8Array([82, 73, 86, 69, 82, 83, 73, 71]);
14
+ function bigintToUint8Array64(num, endianMode) {
15
+ const buffer = new ArrayBuffer(8);
16
+ const view = new DataView(buffer);
17
+ view.setBigInt64(0, num, endianMode === 'littleEndian'); // true for little endian
18
+ return new Uint8Array(buffer);
19
+ }
20
+ /**
21
+ * Creates the hash source for delegate authorization signature
22
+ *
23
+ * @param devicePublicKey - Uncompressed public key (64 or 65 bytes)
24
+ * @param expiryEpochMs - Expiry timestamp in milliseconds (0 = no expiry)
25
+ * @returns Hash source to be signed by primary wallet
26
+ */
27
+ export function riverDelegateHashSrc(devicePublicKey, expiryEpochMs) {
28
+ abytes(devicePublicKey);
29
+ check(expiryEpochMs >= 0, 'Expiry should be positive');
30
+ check(devicePublicKey.length === 64 || devicePublicKey.length === 65, 'Bad public key');
31
+ const expiryBytes = bigintToUint8Array64(expiryEpochMs, 'littleEndian');
32
+ const retVal = new Uint8Array(RIVER_SIG_HEADER.length + devicePublicKey.length + expiryBytes.length);
33
+ retVal.set(RIVER_SIG_HEADER);
34
+ retVal.set(devicePublicKey, RIVER_SIG_HEADER.length);
35
+ retVal.set(expiryBytes, RIVER_SIG_HEADER.length + devicePublicKey.length);
36
+ return retVal;
37
+ }
38
+ /**
39
+ * Converts uncompressed public key from string to Uint8Array
40
+ *
41
+ * @param publicKey - Public key string starting with '0x04' (132 chars total)
42
+ * @returns Public key as Uint8Array
43
+ */
44
+ export function publicKeyToUint8Array(publicKey) {
45
+ // Uncompressed public key in string form should start with '0x04'.
46
+ check(typeof publicKey === 'string' && publicKey.startsWith('0x04') && publicKey.length === 132, 'Bad public key');
47
+ return bin_fromHexString(publicKey);
48
+ }
49
+ /**
50
+ * Derives Ethereum address from public key
51
+ *
52
+ * @param publicKey - Uncompressed public key (64 or 65 bytes)
53
+ * @returns 20-byte Ethereum address
54
+ */
55
+ export function publicKeyToAddress(publicKey) {
56
+ abytes(publicKey, 64, 65);
57
+ if (publicKey.length === 65) {
58
+ publicKey = publicKey.slice(1);
59
+ }
60
+ return keccak256(publicKey).slice(-20);
61
+ }
62
+ /**
63
+ * Recovers the primary wallet address from a delegate signature
64
+ *
65
+ * This verifies that a delegate wallet was authorized by a primary wallet
66
+ * by recovering the primary wallet's address from the delegate authorization signature.
67
+ *
68
+ * @param params.delegatePubKey - Delegate wallet's public key (string or Uint8Array)
69
+ * @param params.delegateSig - Signature from primary wallet authorizing the delegate
70
+ * @param params.expiryEpochMs - Expiry timestamp that was signed
71
+ * @returns Primary wallet address (20 bytes)
72
+ */
73
+ export function recoverPublicKeyFromDelegateSig(params) {
74
+ const { delegateSig, expiryEpochMs } = params;
75
+ const delegatePubKey = typeof params.delegatePubKey === 'string'
76
+ ? publicKeyToUint8Array(params.delegatePubKey)
77
+ : params.delegatePubKey;
78
+ const hashSource = riverDelegateHashSrc(delegatePubKey, expiryEpochMs);
79
+ const hash = hashPersonalMessage(hashSource);
80
+ const { v, r, s } = fromRPCSig(('0x' + bin_toHexString(delegateSig)));
81
+ const recoveredCreatorPubKey = ecrecover(hash, v, r, s);
82
+ const recoveredCreatorAddress = Uint8Array.from(publicKeyToAddress(recoveredCreatorPubKey));
83
+ return recoveredCreatorAddress;
84
+ }
85
+ //# sourceMappingURL=delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["../src/delegate.ts"],"names":[],"mappings":"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"}
package/dist/dlog.d.ts ADDED
@@ -0,0 +1,79 @@
1
+ import { Debugger } from 'debug';
2
+ export declare const cloneAndFormat: (obj: unknown, opts?: {
3
+ shortenHex?: boolean;
4
+ }) => unknown;
5
+ export interface DLogger {
6
+ (...args: unknown[]): void;
7
+ enabled: boolean;
8
+ namespace: string;
9
+ extend: (namespace: string, delimiter?: string) => DLogger;
10
+ baseDebug: Debugger;
11
+ opts?: DLogOpts;
12
+ }
13
+ export interface DLogOpts {
14
+ defaultEnabled?: boolean;
15
+ allowJest?: boolean;
16
+ printStack?: boolean;
17
+ warn?: boolean;
18
+ }
19
+ /**
20
+ * Set a custom error logger that will be used instead of console.error for dlog error output.
21
+ * This allows external libraries to capture and buffer error logs for reporting.
22
+ *
23
+ * @param logger Custom logger function, or undefined to reset to console.error
24
+ */
25
+ export declare const setDlogErrorLogger: (logger: ((...args: unknown[]) => void) | undefined) => void;
26
+ /**
27
+ * Set a custom warning logger that will be used instead of console.warn for dlog warning output.
28
+ * This allows external libraries to capture and buffer warning logs for reporting.
29
+ *
30
+ * @param logger Custom logger function, or undefined to reset to console.warn
31
+ */
32
+ export declare const setDlogWarnLogger: (logger: ((...args: unknown[]) => void) | undefined) => void;
33
+ /**
34
+ * Set a custom info logger that will be used instead of console.log for dlog info output.
35
+ * This allows external libraries to capture and buffer info logs for reporting.
36
+ *
37
+ * @param logger Custom logger function, or undefined to reset to console.log
38
+ */
39
+ export declare const setDlogInfoLogger: (logger: ((...args: unknown[]) => void) | undefined) => void;
40
+ /**
41
+ * Create a new logger with namespace `ns`.
42
+ * It's based on the `debug` package logger with custom formatter:
43
+ * All aguments are formatted, hex strings and UInt8Arrays are printer as hex and shortened.
44
+ * No %-specifiers are supported.
45
+ *
46
+ * @param ns Namespace for the logger.
47
+ * @returns New logger with namespace `ns`.
48
+ */
49
+ export declare const dlog: (ns: string, opts?: DLogOpts) => DLogger;
50
+ /**
51
+ * Same as dlog, but logger is bound to console.error so clicking on it expands log site callstack (in addition to printed error callstack).
52
+ * Also, logger is enabled by default, except if running in jest.
53
+ *
54
+ * @param ns Namespace for the logger.
55
+ * @returns New logger with namespace `ns`.
56
+ */
57
+ export declare const dlogError: (ns: string) => DLogger;
58
+ /**
59
+ * Same as dlog, but logger is bound to console.warn so clicking on it expands log site callstack.
60
+ * Also, logger is enabled by default, except if running in jest.
61
+ *
62
+ * @param ns Namespace for the logger.
63
+ * @returns New logger with namespace `ns`.
64
+ */
65
+ export declare const dlogWarn: (ns: string) => DLogger;
66
+ export interface ExtendedLogger {
67
+ info: DLogger;
68
+ log: DLogger;
69
+ error: DLogger;
70
+ warn: DLogger;
71
+ extend: (namespace: string) => ExtendedLogger;
72
+ }
73
+ /**
74
+ * Create complex logger with multiple levels
75
+ * @param ns Namespace for the logger.
76
+ * @returns New logger with log/info/error namespace `ns`.
77
+ */
78
+ export declare const dlogger: (ns: string) => ExtendedLogger;
79
+ //# sourceMappingURL=dlog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlog.d.ts","sourceRoot":"","sources":["../src/dlog.ts"],"names":[],"mappings":"AACA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAsDvC,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,EAAE,OAAO;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,KAAG,OAE9E,CAAA;AAqED,MAAM,WAAW,OAAO;IACpB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAE1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAA;IAC1D,SAAS,EAAE,QAAQ,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAClB;AAED,MAAM,WAAW,QAAQ;IAErB,cAAc,CAAC,EAAE,OAAO,CAAA;IAGxB,SAAS,CAAC,EAAE,OAAO,CAAA;IAGnB,UAAU,CAAC,EAAE,OAAO,CAAA;IAGpB,IAAI,CAAC,EAAE,OAAO,CAAA;CACjB;AASD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,KAAG,IAEvF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,KAAG,IAEtF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,KAAG,IAEtF,CAAA;AA6FD;;;;;;;;GAQG;AACH,eAAO,MAAM,IAAI,GAAI,IAAI,MAAM,EAAE,OAAO,QAAQ,KAAG,OAElD,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAI,IAAI,MAAM,KAAG,OAGtC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAAI,IAAI,MAAM,KAAG,OAErC,CAAA;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,OAAO,CAAA;IACb,GAAG,EAAE,OAAO,CAAA;IACZ,KAAK,EAAE,OAAO,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,cAAc,CAAA;CAChD;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,KAAG,cAUpC,CAAA"}
package/dist/dlog.js ADDED
@@ -0,0 +1,270 @@
1
+ import { bin_toHexString, isHexString, shortenHexString } from './binary';
2
+ import debug from 'debug';
3
+ import { isTestEnv } from './utils';
4
+ import { safeEnv } from './envUtils';
5
+ // Works as debug.enabled, but falls back on options if not explicitly set in env instead of returning false.
6
+ debug.enabled = (ns) => {
7
+ if (ns.length > 0 && ns[ns.length - 1] === '*') {
8
+ return true;
9
+ }
10
+ for (const s of debug.skips) {
11
+ if (s instanceof RegExp) {
12
+ // users are complining that s.test is not a function in some cases
13
+ if (s.test(ns)) {
14
+ return false;
15
+ }
16
+ }
17
+ }
18
+ for (const s of debug.names) {
19
+ if (s instanceof RegExp) {
20
+ if (s.test(ns)) {
21
+ // users are complining that s.test is not a function in some cases
22
+ return true;
23
+ }
24
+ }
25
+ }
26
+ const opts = allDlogs.get(ns)?.opts;
27
+ if (opts !== undefined) {
28
+ if (!opts.allowJest && isTestEnv()) {
29
+ return false;
30
+ }
31
+ else {
32
+ return opts.defaultEnabled ?? false;
33
+ }
34
+ }
35
+ return false;
36
+ };
37
+ // Set namespaces to empty string if not set so debug.enabled() is called and can retrieve defaultEnabled from options.
38
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
39
+ if (debug.namespaces === undefined) {
40
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
41
+ ;
42
+ debug.namespaces = '';
43
+ }
44
+ const MAX_CALL_STACK_SZ = 18;
45
+ const hasOwnProperty = (obj, prop) => {
46
+ return Object.prototype.hasOwnProperty.call(obj, prop);
47
+ };
48
+ export const cloneAndFormat = (obj, opts) => {
49
+ return _cloneAndFormat(obj, 0, new WeakSet(), opts?.shortenHex === true);
50
+ };
51
+ const _cloneAndFormat = (obj, depth, seen, shorten) => {
52
+ if (depth > MAX_CALL_STACK_SZ) {
53
+ return 'MAX_CALL_STACK_SZ exceeded';
54
+ }
55
+ if (typeof obj === 'object' && obj !== null) {
56
+ if (seen.has(obj)) {
57
+ return '[circular reference]';
58
+ }
59
+ seen.add(obj);
60
+ }
61
+ if (typeof obj === 'string') {
62
+ return isHexString(obj) && shorten ? shortenHexString(obj) : obj;
63
+ }
64
+ if (obj instanceof Uint8Array) {
65
+ return shorten ? shortenHexString(bin_toHexString(obj)) : bin_toHexString(obj);
66
+ }
67
+ if (obj instanceof BigInt || typeof obj === 'bigint') {
68
+ return obj.toString();
69
+ }
70
+ if (Array.isArray(obj)) {
71
+ return obj.map((e) => _cloneAndFormat(e, depth + 1, seen, shorten));
72
+ }
73
+ if (typeof obj === 'object' && obj !== null) {
74
+ if (obj instanceof Error) {
75
+ return obj.stack || obj.message;
76
+ }
77
+ if (typeof obj[Symbol.iterator] === 'function') {
78
+ // Iterate over values of Map, Set, etc.
79
+ const newObj = [];
80
+ for (const e of obj) {
81
+ newObj.push(_cloneAndFormat(e, depth + 1, seen, shorten));
82
+ }
83
+ return newObj;
84
+ }
85
+ const newObj = {};
86
+ for (const key in obj) {
87
+ if (hasOwnProperty(obj, key)) {
88
+ let newKey = key;
89
+ if (typeof key === 'string' && isHexString(key) && shorten) {
90
+ newKey = shortenHexString(key);
91
+ }
92
+ if (key == 'emitter') {
93
+ newObj[newKey] = '[emitter]';
94
+ }
95
+ else {
96
+ newObj[newKey] = _cloneAndFormat(obj[key], depth + 1, seen, shorten);
97
+ }
98
+ }
99
+ }
100
+ return newObj;
101
+ }
102
+ return obj;
103
+ };
104
+ const allDlogs = new Map();
105
+ // Configurable error logger - evaluated at runtime to avoid order of operations issues
106
+ let customInfoLogger = undefined;
107
+ let customErrorLogger = undefined;
108
+ let customWarnLogger = undefined;
109
+ /**
110
+ * Set a custom error logger that will be used instead of console.error for dlog error output.
111
+ * This allows external libraries to capture and buffer error logs for reporting.
112
+ *
113
+ * @param logger Custom logger function, or undefined to reset to console.error
114
+ */
115
+ export const setDlogErrorLogger = (logger) => {
116
+ customErrorLogger = logger;
117
+ };
118
+ /**
119
+ * Set a custom warning logger that will be used instead of console.warn for dlog warning output.
120
+ * This allows external libraries to capture and buffer warning logs for reporting.
121
+ *
122
+ * @param logger Custom logger function, or undefined to reset to console.warn
123
+ */
124
+ export const setDlogWarnLogger = (logger) => {
125
+ customWarnLogger = logger;
126
+ };
127
+ /**
128
+ * Set a custom info logger that will be used instead of console.log for dlog info output.
129
+ * This allows external libraries to capture and buffer info logs for reporting.
130
+ *
131
+ * @param logger Custom logger function, or undefined to reset to console.log
132
+ */
133
+ export const setDlogInfoLogger = (logger) => {
134
+ customInfoLogger = logger;
135
+ };
136
+ // github#722
137
+ const isSingleLineLogsMode = safeEnv(['SINGLE_LINE_LOGS']) === 'true';
138
+ const makeDlog = (d, opts) => {
139
+ if (opts?.warn) {
140
+ d.log = (...args) => {
141
+ const warnLogger = customWarnLogger || console.warn;
142
+ warnLogger(...args);
143
+ };
144
+ }
145
+ if (opts?.warn !== true && opts?.printStack) {
146
+ // Use a dynamic logger that checks for custom error logger at runtime
147
+ d.log = (...args) => {
148
+ const errorLogger = customErrorLogger || console.error;
149
+ errorLogger(...args);
150
+ };
151
+ }
152
+ if (opts?.warn !== true && opts?.printStack !== true && opts?.defaultEnabled) {
153
+ d.log = (...args) => {
154
+ const infoLogger = customInfoLogger || console.log;
155
+ infoLogger(...args);
156
+ };
157
+ }
158
+ const dlog = (...args) => {
159
+ if (!d.enabled || args.length === 0) {
160
+ return;
161
+ }
162
+ const fmt = [];
163
+ const newArgs = [];
164
+ const tailArgs = [];
165
+ for (let i = 0; i < args.length; i++) {
166
+ let c = args[i];
167
+ if (typeof c === 'string') {
168
+ fmt.push('%s ');
169
+ if (isHexString(c)) {
170
+ c = shortenHexString(c);
171
+ }
172
+ newArgs.push(c);
173
+ }
174
+ else if (typeof c === 'object' && c !== null) {
175
+ if (c instanceof Error) {
176
+ if (isSingleLineLogsMode) {
177
+ fmt.push('%o\n');
178
+ }
179
+ else {
180
+ fmt.push('%O\n');
181
+ }
182
+ tailArgs.push(c);
183
+ }
184
+ else {
185
+ if (isSingleLineLogsMode) {
186
+ fmt.push('%o\n');
187
+ }
188
+ else {
189
+ fmt.push('%O\n');
190
+ }
191
+ newArgs.push(cloneAndFormat(c, { shortenHex: true }));
192
+ }
193
+ }
194
+ else {
195
+ if (isSingleLineLogsMode) {
196
+ fmt.push('%o ');
197
+ }
198
+ else {
199
+ fmt.push('%O ');
200
+ }
201
+ newArgs.push(c);
202
+ }
203
+ }
204
+ d(fmt.join(''), ...newArgs, ...tailArgs);
205
+ };
206
+ dlog.baseDebug = d;
207
+ dlog.namespace = d.namespace;
208
+ dlog.opts = opts;
209
+ dlog.extend = (sub, delimiter) => {
210
+ return makeDlog(d.extend(sub, delimiter), opts);
211
+ };
212
+ Object.defineProperty(dlog, 'enabled', {
213
+ enumerable: true,
214
+ configurable: false,
215
+ get: () => d.enabled,
216
+ set: (v) => (d.enabled = v),
217
+ });
218
+ allDlogs.set(d.namespace, dlog);
219
+ return dlog;
220
+ };
221
+ /**
222
+ * Create a new logger with namespace `ns`.
223
+ * It's based on the `debug` package logger with custom formatter:
224
+ * All aguments are formatted, hex strings and UInt8Arrays are printer as hex and shortened.
225
+ * No %-specifiers are supported.
226
+ *
227
+ * @param ns Namespace for the logger.
228
+ * @returns New logger with namespace `ns`.
229
+ */
230
+ export const dlog = (ns, opts) => {
231
+ return makeDlog(debug(ns), opts);
232
+ };
233
+ /**
234
+ * Same as dlog, but logger is bound to console.error so clicking on it expands log site callstack (in addition to printed error callstack).
235
+ * Also, logger is enabled by default, except if running in jest.
236
+ *
237
+ * @param ns Namespace for the logger.
238
+ * @returns New logger with namespace `ns`.
239
+ */
240
+ export const dlogError = (ns) => {
241
+ const l = makeDlog(debug(ns), { defaultEnabled: true, printStack: true, allowJest: true });
242
+ return l;
243
+ };
244
+ /**
245
+ * Same as dlog, but logger is bound to console.warn so clicking on it expands log site callstack.
246
+ * Also, logger is enabled by default, except if running in jest.
247
+ *
248
+ * @param ns Namespace for the logger.
249
+ * @returns New logger with namespace `ns`.
250
+ */
251
+ export const dlogWarn = (ns) => {
252
+ return makeDlog(debug(ns), { defaultEnabled: true, allowJest: true, warn: true });
253
+ };
254
+ /**
255
+ * Create complex logger with multiple levels
256
+ * @param ns Namespace for the logger.
257
+ * @returns New logger with log/info/error namespace `ns`.
258
+ */
259
+ export const dlogger = (ns) => {
260
+ return {
261
+ log: makeDlog(debug(ns + ':log')),
262
+ info: makeDlog(debug(ns + ':info'), { defaultEnabled: true, allowJest: true }),
263
+ error: dlogError(ns + ':error'),
264
+ warn: dlogWarn(ns + ':warn'),
265
+ extend: (sub) => {
266
+ return dlogger(ns + ':' + sub);
267
+ },
268
+ };
269
+ };
270
+ //# sourceMappingURL=dlog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlog.js","sourceRoot":"","sources":["../src/dlog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AACzE,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,6GAA6G;AAC7G,KAAK,CAAC,OAAO,GAAG,CAAC,EAAU,EAAW,EAAE;IACpC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAA;IACf,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;YACtB,mEAAmE;YACnE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACb,OAAO,KAAK,CAAA;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACb,mEAAmE;gBACnE,OAAO,IAAI,CAAA;YACf,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAA;IACnC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,EAAE,CAAC;YACjC,OAAO,KAAK,CAAA;QAChB,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAC,cAAc,IAAI,KAAK,CAAA;QACvC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAA;AAChB,CAAC,CAAA;AAED,uHAAuH;AACvH,sEAAsE;AACtE,IAAK,KAAa,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;IAC1C,sEAAsE;IACtE,CAAC;IAAC,KAAa,CAAC,UAAU,GAAG,EAAE,CAAA;AACnC,CAAC;AAED,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAE5B,MAAM,cAAc,GAAG,CAAwB,GAAW,EAAE,IAAO,EAA6B,EAAE;IAC9F,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAY,EAAE,IAA+B,EAAW,EAAE;IACrF,OAAO,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,CAAA;AAC5E,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,CACpB,GAAY,EACZ,KAAa,EACb,IAAqB,EACrB,OAAgB,EACT,EAAE;IACT,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC;QAC5B,OAAO,4BAA4B,CAAA;IACvC,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,OAAO,sBAAsB,CAAA;QACjC,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACpE,CAAC;IAED,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAClF,CAAC;IAED,IAAI,GAAG,YAAY,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACnD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAA;QACnC,CAAC;QAED,IAAI,OAAQ,GAAyB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,UAAU,EAAE,CAAC;YACpE,wCAAwC;YACxC,MAAM,MAAM,GAAG,EAAE,CAAA;YACjB,KAAK,MAAM,CAAC,IAAI,GAAU,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;YAC7D,CAAC;YACD,OAAO,MAAM,CAAA;QACjB,CAAC;QAED,MAAM,MAAM,GAAiC,EAAE,CAAA;QAC/C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACpB,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC3B,IAAI,MAAM,GAAG,GAAG,CAAA;gBAChB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;oBACzD,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;gBAClC,CAAC;gBACD,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;oBACnB,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAA;gBAChC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;gBACxE,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAA;IACjB,CAAC;IAED,OAAO,GAAG,CAAA;AACd,CAAC,CAAA;AA0BD,MAAM,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAA;AAEhD,uFAAuF;AACvF,IAAI,gBAAgB,GAA+C,SAAS,CAAA;AAC5E,IAAI,iBAAiB,GAA+C,SAAS,CAAA;AAC7E,IAAI,gBAAgB,GAA+C,SAAS,CAAA;AAE5E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAkD,EAAQ,EAAE;IAC3F,iBAAiB,GAAG,MAAM,CAAA;AAC9B,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAkD,EAAQ,EAAE;IAC1F,gBAAgB,GAAG,MAAM,CAAA;AAC7B,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAkD,EAAQ,EAAE;IAC1F,gBAAgB,GAAG,MAAM,CAAA;AAC7B,CAAC,CAAA;AAED,aAAa;AACb,MAAM,oBAAoB,GAAG,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAC,KAAK,MAAM,CAAA;AAErE,MAAM,QAAQ,GAAG,CAAC,CAAW,EAAE,IAAe,EAAW,EAAE;IACvD,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAA;YACnD,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;QACvB,CAAC,CAAA;IACL,CAAC;IACD,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;QAC1C,sEAAsE;QACtE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,MAAM,WAAW,GAAG,iBAAiB,IAAI,OAAO,CAAC,KAAK,CAAA;YACtD,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;QACxB,CAAC,CAAA;IACL,CAAC;IAED,IAAI,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,EAAE,UAAU,KAAK,IAAI,IAAI,IAAI,EAAE,cAAc,EAAE,CAAC;QAC3E,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YAC3B,MAAM,UAAU,GAAG,gBAAgB,IAAI,OAAO,CAAC,GAAG,CAAA;YAClD,UAAU,CAAC,GAAG,IAAI,CAAC,CAAA;QACvB,CAAC,CAAA;IACL,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;QACtC,IAAI,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAM;QACV,CAAC;QAED,MAAM,GAAG,GAAa,EAAE,CAAA;QACxB,MAAM,OAAO,GAAc,EAAE,CAAA;QAC7B,MAAM,QAAQ,GAAc,EAAE,CAAA;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAEf,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACf,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjB,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;gBAC3B,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC7C,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;oBACrB,IAAI,oBAAoB,EAAE,CAAC;wBACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACpB,CAAC;yBAAM,CAAC;wBACJ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACpB,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACpB,CAAC;qBAAM,CAAC;oBACJ,IAAI,oBAAoB,EAAE,CAAC;wBACvB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACpB,CAAC;yBAAM,CAAC;wBACJ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBACpB,CAAC;oBACD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;gBACzD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,oBAAoB,EAAE,CAAC;oBACvB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACnB,CAAC;qBAAM,CAAC;oBACJ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACnB,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACnB,CAAC;QACL,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAA;IAC5C,CAAC,CAAA;IAED,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;IAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAA;IAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAEhB,IAAI,CAAC,MAAM,GAAG,CAAC,GAAW,EAAE,SAAkB,EAAW,EAAE;QACvD,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;IACnD,CAAC,CAAA;IAED,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE;QACnC,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,KAAK;QACnB,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO;QACpB,GAAG,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;KACvC,CAAC,CAAA;IAEF,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,IAAe,CAAC,CAAA;IAC1C,OAAO,IAAe,CAAA;AAC1B,CAAC,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,IAAe,EAAW,EAAE;IACzD,OAAO,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAU,EAAW,EAAE;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1F,OAAO,CAAC,CAAA;AACZ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAW,EAAE;IAC5C,OAAO,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AACrF,CAAC,CAAA;AAUD;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAU,EAAkB,EAAE;IAClD,OAAO;QACH,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACjC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC9E,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC;QAC/B,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE;YACpB,OAAO,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;QAClC,CAAC;KACJ,CAAA;AACL,CAAC,CAAA"}
@@ -0,0 +1,12 @@
1
+ export interface SafeEnvOpts {
2
+ env?: Record<string, string | undefined>;
3
+ keyPrefix?: string;
4
+ }
5
+ export declare function safeEnv(keys: string[], opts?: SafeEnvOpts): string | undefined;
6
+ export declare function safeEnvEx(args: {
7
+ keys: string[];
8
+ opts: SafeEnvOpts | undefined;
9
+ warning?: string;
10
+ defaultValue: string;
11
+ }): string;
12
+ //# sourceMappingURL=envUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envUtils.d.ts","sourceRoot":"","sources":["../src/envUtils.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAExB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAExC,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAkB9E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,IAAI,EAAE,WAAW,GAAG,SAAS,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;CACvB,GAAG,MAAM,CAWT"}
@@ -0,0 +1,33 @@
1
+ import { dlogWarn } from './dlog';
2
+ export function safeEnv(keys, opts) {
3
+ for (const keyRef of keys) {
4
+ // check for key prefix
5
+ const key = opts?.keyPrefix ? `${opts.keyPrefix}${keyRef}` : keyRef;
6
+ // check for key in env
7
+ if (opts?.env) {
8
+ if (opts.env[key]) {
9
+ return opts.env[key];
10
+ }
11
+ }
12
+ // look for the key in process.env
13
+ if (typeof process === 'object' && 'env' in process) {
14
+ if (process.env[key]) {
15
+ return process.env[key];
16
+ }
17
+ }
18
+ }
19
+ return undefined;
20
+ }
21
+ export function safeEnvEx(args) {
22
+ const { keys, opts, warning, defaultValue } = args;
23
+ const url = safeEnv(keys, opts);
24
+ if (url) {
25
+ return url;
26
+ }
27
+ if (warning) {
28
+ const logger = dlogWarn('csb:env');
29
+ logger(warning);
30
+ }
31
+ return defaultValue;
32
+ }
33
+ //# sourceMappingURL=envUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envUtils.js","sourceRoot":"","sources":["../src/envUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AASjC,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,IAAkB;IACtD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QACxB,uBAAuB;QACvB,MAAM,GAAG,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;QACnE,uBAAuB;QACvB,IAAI,IAAI,EAAE,GAAG,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;QACL,CAAC;QACD,kCAAkC;QAClC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAKzB;IACG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,IAAI,CAAA;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC/B,IAAI,GAAG,EAAE,CAAC;QACN,OAAO,GAAG,CAAA;IACd,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,YAAY,CAAA;AACvB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**************************************************************************
2
+ * This file is generated by running 🏕️ scripts/generate_sdk_index.sh 🏕️ *
3
+ **************************************************************************/
4
+ export * from './binary';
5
+ export * from './check';
6
+ export * from './delegate';
7
+ export * from './dlog';
8
+ export * from './envUtils';
9
+ export * from './utils';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;4EAE4E;AAC5E,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ /**************************************************************************
2
+ * This file is generated by running 🏕️ scripts/generate_sdk_index.sh 🏕️ *
3
+ **************************************************************************/
4
+ export * from './binary';
5
+ export * from './check';
6
+ export * from './delegate';
7
+ export * from './dlog';
8
+ export * from './envUtils';
9
+ export * from './utils';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;4EAE4E;AAC5E,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=binary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.test.d.ts","sourceRoot":"","sources":["../../src/tests/binary.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ import { bin_fromBase64, bin_fromHexString, isHexString } from '../binary';
5
+ describe.concurrent('types', () => {
6
+ it('bin_fromHexString', () => {
7
+ const expected = new Uint8Array([1, 35, 69, 103, 137, 171, 205, 239]);
8
+ expect(bin_fromHexString('0123456789abcdef')).toEqual(expected);
9
+ expect(bin_fromHexString('0123456789ABCDEF')).toEqual(expected);
10
+ expect(bin_fromHexString('0x0123456789abcdef')).toEqual(expected);
11
+ expect(bin_fromHexString('')).toEqual(new Uint8Array([]));
12
+ expect(bin_fromHexString('0x')).toEqual(new Uint8Array([]));
13
+ expect(bin_fromHexString('00')).toEqual(new Uint8Array([0]));
14
+ expect(bin_fromHexString('01')).toEqual(new Uint8Array([1]));
15
+ expect(bin_fromHexString('0a')).toEqual(new Uint8Array([10]));
16
+ expect(bin_fromHexString('0000')).toEqual(new Uint8Array([0, 0]));
17
+ expect(bin_fromHexString('0001')).toEqual(new Uint8Array([0, 1]));
18
+ expect(() => bin_fromHexString('0')).toThrow();
19
+ expect(() => bin_fromHexString('0x0')).toThrow();
20
+ expect(() => bin_fromHexString('001')).toThrow();
21
+ expect(() => bin_fromHexString('11223')).toThrow();
22
+ });
23
+ it('bin_fromBase64String', () => {
24
+ const expected = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9]);
25
+ const expected2 = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
26
+ expect(bin_fromBase64('AQIDBAUGBwgJ')).toEqual(expected);
27
+ expect(bin_fromBase64('AQIDBAUGBwgJAQIDBAUGBwgJ')).toEqual(expected2);
28
+ expect(bin_fromBase64('')).toEqual(new Uint8Array([]));
29
+ expect(bin_fromBase64('AA==')).toEqual(new Uint8Array([0]));
30
+ });
31
+ it('isHexString', () => {
32
+ expect(isHexString('0123456789abcdef')).toBeTruthy();
33
+ expect(isHexString('0123456789ABCDEF')).toBeTruthy();
34
+ expect(isHexString('0x0123456789abcdef')).toBeTruthy();
35
+ expect(isHexString('00')).toBeTruthy();
36
+ expect(isHexString('01')).toBeTruthy();
37
+ expect(isHexString('0a')).toBeTruthy();
38
+ expect(isHexString('0000')).toBeTruthy();
39
+ expect(isHexString('0001')).toBeTruthy();
40
+ expect(isHexString('')).toBeFalsy();
41
+ expect(isHexString('0x')).toBeFalsy();
42
+ expect(isHexString('0')).toBeFalsy();
43
+ expect(isHexString('0x0')).toBeFalsy();
44
+ expect(isHexString('001')).toBeFalsy();
45
+ expect(isHexString('11223')).toBeFalsy();
46
+ });
47
+ });
48
+ //# sourceMappingURL=binary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary.test.js","sourceRoot":"","sources":["../../src/tests/binary.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=dlog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlog.test.d.ts","sourceRoot":"","sources":["../../src/tests/dlog.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * @group main
3
+ */
4
+ import { dlog, dlogError, dlogger, dlogWarn } from '../dlog';
5
+ import { bin_fromHexString } from '../binary';
6
+ describe.concurrent('dlogTest', () => {
7
+ it('basic', () => {
8
+ const longHex = bin_fromHexString('0102030405060708090a0b0c0d0e0f101112131415161718191a');
9
+ const obj = {
10
+ a: 1,
11
+ b: 'b',
12
+ c: {
13
+ d: 2,
14
+ e: 'e',
15
+ },
16
+ d: [1, 2, 3],
17
+ q: new Uint8Array([1, 2, 3]),
18
+ longHex,
19
+ nested: {
20
+ a: 1,
21
+ more: {
22
+ even_more: {
23
+ more_yet: {
24
+ z: 1000,
25
+ },
26
+ },
27
+ },
28
+ },
29
+ };
30
+ const log = dlog('test:dlog');
31
+ log(obj);
32
+ log('\n\n\n');
33
+ log('obj =', obj);
34
+ log('\n\n\n');
35
+ log('b', 'q', obj, obj, 'end');
36
+ log('\n\n\n');
37
+ log(obj, obj);
38
+ log('\n\n\n');
39
+ log('obj =', obj, 'obj =', obj);
40
+ log('\n\n\n');
41
+ log(longHex);
42
+ log('\n\n\n');
43
+ log('longHex =', longHex);
44
+ log('\n\n\n');
45
+ log('shortenedHexKey =', { '0x0102030405060708090a0b0c0d0e0f101112131415161718191a': true });
46
+ log('shortenedHexValue =', '0x0102030405060708090a0b0c0d0e0f101112131415161718191a');
47
+ log('shortenedHexValue =', {
48
+ key: '0x0102030405060708090a0b0c0d0e0f101112131415161718191a',
49
+ });
50
+ });
51
+ it('extend', () => {
52
+ const base_log = dlog('test:dlog');
53
+ const log = base_log.extend('extend');
54
+ log('extend');
55
+ log(22);
56
+ log('33 =', 33);
57
+ log('gonna print more', '44 =', 44);
58
+ });
59
+ it('enabled1', () => {
60
+ const log = dlog('test:dlog');
61
+ if (log.enabled) {
62
+ log('enabled', log.enabled);
63
+ log.enabled = false;
64
+ log('(should not print)', log.enabled);
65
+ log.enabled = true;
66
+ log('enabled', log.enabled);
67
+ }
68
+ });
69
+ it('circularReference', () => {
70
+ const log = dlog('test:dlog');
71
+ class A {
72
+ b;
73
+ constructor() {
74
+ this.b = new B(this);
75
+ }
76
+ }
77
+ class B {
78
+ a;
79
+ constructor(a) {
80
+ this.a = a;
81
+ }
82
+ }
83
+ const a = new A();
84
+ log('test circular:', { a });
85
+ });
86
+ it('numbers', () => {
87
+ const log = dlog('test:dlog');
88
+ log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
89
+ });
90
+ it('error', () => {
91
+ const log = dlogError('test:dlog:error');
92
+ log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
93
+ log(new Error('test error'));
94
+ function funcThatThrows() {
95
+ throw new Error('test error 2');
96
+ }
97
+ try {
98
+ funcThatThrows();
99
+ }
100
+ catch (e) {
101
+ log(e);
102
+ }
103
+ try {
104
+ funcThatThrows();
105
+ }
106
+ catch (e) {
107
+ log('test error 3', e, 123, 'more text');
108
+ }
109
+ });
110
+ it('set', () => {
111
+ const s = new Set([111, 222, { aaa: 333 }]);
112
+ dlog('test:dlog')(s);
113
+ const log = dlog('test:dlog');
114
+ log.enabled = true;
115
+ let output = '';
116
+ log.baseDebug.log = (...args) => {
117
+ for (const arg of args) {
118
+ output += `${arg}`;
119
+ }
120
+ };
121
+ log(s);
122
+ expect(output).toContain('111');
123
+ expect(output).toContain('222');
124
+ expect(output).toContain('333');
125
+ expect(output).toContain('aaa');
126
+ });
127
+ it('map', () => {
128
+ const s = new Map([
129
+ ['aaa', 111],
130
+ ['bbb', 222],
131
+ ['ccc', { a: 333 }],
132
+ ]);
133
+ dlog('test:dlog')(s);
134
+ const log = dlog('test:dlog');
135
+ log.enabled = true;
136
+ let output = '';
137
+ log.baseDebug.log = (...args) => {
138
+ for (const arg of args) {
139
+ output += `${arg}`;
140
+ }
141
+ };
142
+ log(s);
143
+ expect(output).toContain('111');
144
+ expect(output).toContain('aaa');
145
+ expect(output).toContain('222');
146
+ expect(output).toContain('bbb');
147
+ expect(output).toContain('333');
148
+ expect(output).toContain('ccc');
149
+ });
150
+ it('enabled2', () => {
151
+ const ns = 'uniqueLogName';
152
+ // Override
153
+ let log = dlog(ns);
154
+ expect(log.enabled).toBeFalsy();
155
+ log.enabled = true;
156
+ expect(log.enabled).toBeTruthy();
157
+ log.enabled = false;
158
+ expect(log.enabled).toBeFalsy();
159
+ // Default
160
+ log = dlog(ns, { defaultEnabled: true, allowJest: true });
161
+ expect(log.enabled).toBeTruthy();
162
+ log.enabled = false;
163
+ expect(log.enabled).toBeFalsy();
164
+ // Default under Jest
165
+ log = dlog(ns, { defaultEnabled: true });
166
+ expect(log.enabled).toBeFalsy();
167
+ log.enabled = true;
168
+ expect(log.enabled).toBeTruthy();
169
+ // aellis not sure what happened here... but no longer works
170
+ // // Enabled explicitly by settings
171
+ // debug.enable(ns)
172
+ // log = dlog(ns)
173
+ // expect(log.enabled).toBeTruthy()
174
+ // // Disabled explicitly by settings
175
+ // debug.enable('-' + ns)
176
+ // expect(log.enabled).toBeFalsy()
177
+ // // Disabled explicitly by settings, default ignored
178
+ // log = dlog(ns, { defaultEnabled: true, allowJest: true })
179
+ // expect(log.enabled).toBeFalsy()
180
+ });
181
+ it('tests warn', () => {
182
+ const log = dlogWarn('test:dlog:warn');
183
+ log('test warn');
184
+ });
185
+ it('tests logger with warn', () => {
186
+ const log = dlogger('test:dlogger');
187
+ log.log('test log');
188
+ log.info('test info');
189
+ log.warn('test warn');
190
+ log.error('test error');
191
+ });
192
+ });
193
+ //# sourceMappingURL=dlog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlog.test.js","sourceRoot":"","sources":["../../src/tests/dlog.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,QAAQ,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,iBAAiB,CAAC,sDAAsD,CAAC,CAAA;QACzF,MAAM,GAAG,GAAG;YACR,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,GAAG;YACN,CAAC,EAAE;gBACC,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,GAAG;aACT;YACD,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACZ,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,OAAO;YACP,MAAM,EAAE;gBACJ,CAAC,EAAE,CAAC;gBACJ,IAAI,EAAE;oBACF,SAAS,EAAE;wBACP,QAAQ,EAAE;4BACN,CAAC,EAAE,IAAI;yBACV;qBACJ;iBACJ;aACJ;SACJ,CAAA;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,GAAG,CAAC,GAAG,CAAC,CAAA;QACR,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QACjB,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACb,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAA;QAC/B,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,OAAO,CAAC,CAAA;QACZ,GAAG,CAAC,QAAQ,CAAC,CAAA;QAEb,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QACzB,GAAG,CAAC,QAAQ,CAAC,CAAA;QACb,GAAG,CAAC,mBAAmB,EAAE,EAAE,wDAAwD,EAAE,IAAI,EAAE,CAAC,CAAA;QAC5F,GAAG,CAAC,qBAAqB,EAAE,wDAAwD,CAAC,CAAA;QACpF,GAAG,CAAC,qBAAqB,EAAE;YACvB,GAAG,EAAE,wDAAwD;SAChE,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACd,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAClC,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACrC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACb,GAAG,CAAC,EAAE,CAAC,CAAA;QACP,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QACf,GAAG,CAAC,kBAAkB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YAE3B,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;YAEnB,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;YAEtC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;YAElB,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;QAC/B,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,MAAM,CAAC;YACH,CAAC,CAAG;YACJ;gBACI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;YACxB,CAAC;SACJ;QACD,MAAM,CAAC;YACH,CAAC,CAAG;YACJ,YAAY,CAAI;gBACZ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;SACJ;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;QACjB,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACxD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACb,MAAM,GAAG,GAAG,SAAS,CAAC,iBAAiB,CAAC,CAAA;QACxC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACpD,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;QAE5B,SAAS,cAAc;YACnB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAA;QACnC,CAAC;QAED,IAAI,CAAC;YACD,cAAc,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,CAAC,CAAC,CAAA;QACV,CAAC;QAED,IAAI,CAAC;YACD,cAAc,EAAE,CAAA;QACpB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,cAAc,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACX,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,MAAM,GAAW,EAAE,CAAA;QACvB,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAA;YACtB,CAAC;QACL,CAAC,CAAA;QAED,GAAG,CAAC,CAAC,CAAC,CAAA;QACN,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACX,MAAM,CAAC,GAAG,IAAI,GAAG,CAAc;YAC3B,CAAC,KAAK,EAAE,GAAG,CAAC;YACZ,CAAC,KAAK,EAAE,GAAG,CAAC;YACZ,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;SACtB,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;QAC7B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAElB,IAAI,MAAM,GAAW,EAAE,CAAA;QACvB,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;YACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAA;YACtB,CAAC;QACL,CAAC,CAAA;QAED,GAAG,CAAC,CAAC,CAAC,CAAA;QACN,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;QAChB,MAAM,EAAE,GAAG,eAAe,CAAA;QAE1B,WAAW;QACX,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;QAClB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;QAC/B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAClB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;QAChC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;QAE/B,UAAU;QACV,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;QAChC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;QAE/B,qBAAqB;QACrB,GAAG,GAAG,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAA;QAC/B,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;QAClB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAA;QAEhC,4DAA4D;QAC5D,oCAAoC;QACpC,mBAAmB;QACnB,iBAAiB;QACjB,mCAAmC;QAEnC,qCAAqC;QACrC,yBAAyB;QACzB,kCAAkC;QAElC,sDAAsD;QACtD,4DAA4D;QAC5D,kCAAkC;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;QACtC,GAAG,CAAC,WAAW,CAAC,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;QACnC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACnB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACrB,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const isBrowser: boolean;
2
+ export declare const isNodeEnv: boolean;
3
+ export declare function isTestEnv(): boolean;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,SAA0E,CAAA;AAEhG,eAAO,MAAM,SAAS,SACyE,CAAA;AAE/F,wBAAgB,SAAS,IAAI,OAAO,CAQnC"}
package/dist/utils.js ADDED
@@ -0,0 +1,10 @@
1
+ export const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
2
+ export const isNodeEnv = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;
3
+ export function isTestEnv() {
4
+ return (isNodeEnv &&
5
+ (process.env.NODE_ENV === 'test' ||
6
+ process.env.VITEST === 'true' ||
7
+ process.env.JEST_WORKER_ID !== undefined ||
8
+ process.env.TS_JEST === '1'));
9
+ }
10
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAA;AAEhG,MAAM,CAAC,MAAM,SAAS,GAClB,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAA;AAE/F,MAAM,UAAU,SAAS;IACrB,OAAO,CACH,SAAS;QACT,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;YAC5B,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM;YAC7B,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,SAAS;YACxC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,CACnC,CAAA;AACL,CAAC"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@towns-labs/utils",
3
+ "version": "2.0.1",
4
+ "type": "module",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "cb": "bun run clean && bun run build",
10
+ "clean": "rm -rf dist",
11
+ "lint": "eslint --format unix ./src",
12
+ "lint:fix": "bun run lint --fix",
13
+ "test": "vitest run",
14
+ "test:ci": "vitest run --silent=passed-only",
15
+ "test:debug": "DEBUG=test bun run test",
16
+ "test:watch": "vitest --watch",
17
+ "watch": "tsc --watch"
18
+ },
19
+ "dependencies": {
20
+ "@bufbuild/protobuf": "^2.9.0",
21
+ "@ethereumjs/util": "^10.0.0",
22
+ "@noble/hashes": "^1.8.0",
23
+ "@towns-labs/proto": "^1.0.1",
24
+ "debug": "^4.3.4",
25
+ "ethereum-cryptography": "^3.2.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/debug": "^4.1.8",
29
+ "@typescript-eslint/eslint-plugin": "^8.29.0",
30
+ "@typescript-eslint/parser": "^8.29.0",
31
+ "eslint": "^8.57.1",
32
+ "eslint-import-resolver-typescript": "^4.3.2",
33
+ "eslint-plugin-import-x": "^4.10.2",
34
+ "ts-node": "^10.9.1",
35
+ "typescript": "~5.8.3",
36
+ "vitest": "^3.2.3"
37
+ },
38
+ "files": [
39
+ "/dist"
40
+ ],
41
+ "publishConfig": {
42
+ "access": "public"
43
+ }
44
+ }