@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 +3 -0
- package/dist/binary.d.ts +11 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +60 -0
- package/dist/binary.js.map +1 -0
- package/dist/check.d.ts +16 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +30 -0
- package/dist/check.js.map +1 -0
- package/dist/delegate.d.ts +45 -0
- package/dist/delegate.d.ts.map +1 -0
- package/dist/delegate.js +85 -0
- package/dist/delegate.js.map +1 -0
- package/dist/dlog.d.ts +79 -0
- package/dist/dlog.d.ts.map +1 -0
- package/dist/dlog.js +270 -0
- package/dist/dlog.js.map +1 -0
- package/dist/envUtils.d.ts +12 -0
- package/dist/envUtils.d.ts.map +1 -0
- package/dist/envUtils.js +33 -0
- package/dist/envUtils.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/tests/binary.test.d.ts +5 -0
- package/dist/tests/binary.test.d.ts.map +1 -0
- package/dist/tests/binary.test.js +48 -0
- package/dist/tests/binary.test.js.map +1 -0
- package/dist/tests/dlog.test.d.ts +5 -0
- package/dist/tests/dlog.test.d.ts.map +1 -0
- package/dist/tests/dlog.test.js +193 -0
- package/dist/tests/dlog.test.js.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/package.json +44 -0
package/README.md
ADDED
package/dist/binary.d.ts
ADDED
|
@@ -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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"}
|
package/dist/check.d.ts
ADDED
|
@@ -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"}
|
package/dist/delegate.js
ADDED
|
@@ -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
|
package/dist/dlog.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dlog.js","sourceRoot":"","sources":["../src/dlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/envUtils.js
ADDED
|
@@ -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"}
|
package/dist/index.d.ts
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.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 @@
|
|
|
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 @@
|
|
|
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":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -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
|
+
}
|