@towns-protocol/utils 0.0.349

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/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 River Association
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
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-protocol/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,uBAAuB,CAAA;AAK3C,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-protocol/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,uBAAuB,CAAA;AAC3C,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"}
package/dist/dlog.d.ts ADDED
@@ -0,0 +1,72 @@
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
+ * Create a new logger with namespace `ns`.
35
+ * It's based on the `debug` package logger with custom formatter:
36
+ * All aguments are formatted, hex strings and UInt8Arrays are printer as hex and shortened.
37
+ * No %-specifiers are supported.
38
+ *
39
+ * @param ns Namespace for the logger.
40
+ * @returns New logger with namespace `ns`.
41
+ */
42
+ export declare const dlog: (ns: string, opts?: DLogOpts) => DLogger;
43
+ /**
44
+ * Same as dlog, but logger is bound to console.error so clicking on it expands log site callstack (in addition to printed error callstack).
45
+ * Also, logger is enabled by default, except if running in jest.
46
+ *
47
+ * @param ns Namespace for the logger.
48
+ * @returns New logger with namespace `ns`.
49
+ */
50
+ export declare const dlogError: (ns: string) => DLogger;
51
+ /**
52
+ * Same as dlog, but logger is bound to console.warn so clicking on it expands log site callstack.
53
+ * Also, logger is enabled by default, except if running in jest.
54
+ *
55
+ * @param ns Namespace for the logger.
56
+ * @returns New logger with namespace `ns`.
57
+ */
58
+ export declare const dlogWarn: (ns: string) => DLogger;
59
+ export interface ExtendedLogger {
60
+ info: DLogger;
61
+ log: DLogger;
62
+ error: DLogger;
63
+ warn: DLogger;
64
+ extend: (namespace: string) => ExtendedLogger;
65
+ }
66
+ /**
67
+ * Create complex logger with multiple levels
68
+ * @param ns Namespace for the logger.
69
+ * @returns New logger with log/info/error namespace `ns`.
70
+ */
71
+ export declare const dlogger: (ns: string) => ExtendedLogger;
72
+ //# 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;AAQD;;;;;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;AAsFD;;;;;;;;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,254 @@
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 customErrorLogger = undefined;
107
+ let customWarnLogger = undefined;
108
+ /**
109
+ * Set a custom error logger that will be used instead of console.error for dlog error output.
110
+ * This allows external libraries to capture and buffer error logs for reporting.
111
+ *
112
+ * @param logger Custom logger function, or undefined to reset to console.error
113
+ */
114
+ export const setDlogErrorLogger = (logger) => {
115
+ customErrorLogger = logger;
116
+ };
117
+ /**
118
+ * Set a custom warning logger that will be used instead of console.warn for dlog warning output.
119
+ * This allows external libraries to capture and buffer warning logs for reporting.
120
+ *
121
+ * @param logger Custom logger function, or undefined to reset to console.warn
122
+ */
123
+ export const setDlogWarnLogger = (logger) => {
124
+ customWarnLogger = logger;
125
+ };
126
+ // github#722
127
+ const isSingleLineLogsMode = safeEnv(['SINGLE_LINE_LOGS']) === 'true';
128
+ const makeDlog = (d, opts) => {
129
+ if (opts?.warn) {
130
+ d.log = (...args) => {
131
+ const warnLogger = customWarnLogger || console.warn;
132
+ warnLogger(...args);
133
+ };
134
+ }
135
+ if (opts?.printStack) {
136
+ // Use a dynamic logger that checks for custom error logger at runtime
137
+ d.log = (...args) => {
138
+ const errorLogger = customErrorLogger || console.error;
139
+ errorLogger(...args);
140
+ };
141
+ }
142
+ const dlog = (...args) => {
143
+ if (!d.enabled || args.length === 0) {
144
+ return;
145
+ }
146
+ const fmt = [];
147
+ const newArgs = [];
148
+ const tailArgs = [];
149
+ for (let i = 0; i < args.length; i++) {
150
+ let c = args[i];
151
+ if (typeof c === 'string') {
152
+ fmt.push('%s ');
153
+ if (isHexString(c)) {
154
+ c = shortenHexString(c);
155
+ }
156
+ newArgs.push(c);
157
+ }
158
+ else if (typeof c === 'object' && c !== null) {
159
+ if (c instanceof Error) {
160
+ if (isSingleLineLogsMode) {
161
+ fmt.push('%o\n');
162
+ }
163
+ else {
164
+ fmt.push('%O\n');
165
+ }
166
+ tailArgs.push(c);
167
+ }
168
+ else {
169
+ if (isSingleLineLogsMode) {
170
+ fmt.push('%o\n');
171
+ }
172
+ else {
173
+ fmt.push('%O\n');
174
+ }
175
+ newArgs.push(cloneAndFormat(c, { shortenHex: true }));
176
+ }
177
+ }
178
+ else {
179
+ if (isSingleLineLogsMode) {
180
+ fmt.push('%o ');
181
+ }
182
+ else {
183
+ fmt.push('%O ');
184
+ }
185
+ newArgs.push(c);
186
+ }
187
+ }
188
+ d(fmt.join(''), ...newArgs, ...tailArgs);
189
+ };
190
+ dlog.baseDebug = d;
191
+ dlog.namespace = d.namespace;
192
+ dlog.opts = opts;
193
+ dlog.extend = (sub, delimiter) => {
194
+ return makeDlog(d.extend(sub, delimiter), opts);
195
+ };
196
+ Object.defineProperty(dlog, 'enabled', {
197
+ enumerable: true,
198
+ configurable: false,
199
+ get: () => d.enabled,
200
+ set: (v) => (d.enabled = v),
201
+ });
202
+ allDlogs.set(d.namespace, dlog);
203
+ return dlog;
204
+ };
205
+ /**
206
+ * Create a new logger with namespace `ns`.
207
+ * It's based on the `debug` package logger with custom formatter:
208
+ * All aguments are formatted, hex strings and UInt8Arrays are printer as hex and shortened.
209
+ * No %-specifiers are supported.
210
+ *
211
+ * @param ns Namespace for the logger.
212
+ * @returns New logger with namespace `ns`.
213
+ */
214
+ export const dlog = (ns, opts) => {
215
+ return makeDlog(debug(ns), opts);
216
+ };
217
+ /**
218
+ * Same as dlog, but logger is bound to console.error so clicking on it expands log site callstack (in addition to printed error callstack).
219
+ * Also, logger is enabled by default, except if running in jest.
220
+ *
221
+ * @param ns Namespace for the logger.
222
+ * @returns New logger with namespace `ns`.
223
+ */
224
+ export const dlogError = (ns) => {
225
+ const l = makeDlog(debug(ns), { defaultEnabled: true, printStack: true, allowJest: true });
226
+ return l;
227
+ };
228
+ /**
229
+ * Same as dlog, but logger is bound to console.warn so clicking on it expands log site callstack.
230
+ * Also, logger is enabled by default, except if running in jest.
231
+ *
232
+ * @param ns Namespace for the logger.
233
+ * @returns New logger with namespace `ns`.
234
+ */
235
+ export const dlogWarn = (ns) => {
236
+ return makeDlog(debug(ns), { defaultEnabled: true, allowJest: true, warn: true });
237
+ };
238
+ /**
239
+ * Create complex logger with multiple levels
240
+ * @param ns Namespace for the logger.
241
+ * @returns New logger with log/info/error namespace `ns`.
242
+ */
243
+ export const dlogger = (ns) => {
244
+ return {
245
+ log: makeDlog(debug(ns + ':log')),
246
+ info: makeDlog(debug(ns + ':info'), { defaultEnabled: true, allowJest: true }),
247
+ error: dlogError(ns + ':error'),
248
+ warn: dlogWarn(ns + ':warn'),
249
+ extend: (sub) => {
250
+ return dlogger(ns + ':' + sub);
251
+ },
252
+ };
253
+ };
254
+ //# sourceMappingURL=dlog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dlog.js","sourceRoot":"","sources":["../src/dlog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface SafeEnvOpts {
2
+ env?: Record<string, string>;
3
+ keyPrefix?: string;
4
+ }
5
+ export declare function safeEnv(keys: string[], opts?: SafeEnvOpts): string | undefined;
6
+ //# sourceMappingURL=envUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envUtils.d.ts","sourceRoot":"","sources":["../src/envUtils.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAExB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAE5B,SAAS,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAkB9E"}
@@ -0,0 +1,20 @@
1
+ export function safeEnv(keys, opts) {
2
+ for (const keyRef of keys) {
3
+ // check for key prefix
4
+ const key = opts?.keyPrefix ? `${opts.keyPrefix}${keyRef}` : keyRef;
5
+ // check for key in env
6
+ if (opts?.env) {
7
+ if (opts.env[key]) {
8
+ return opts.env[key];
9
+ }
10
+ }
11
+ // look for the key in process.env
12
+ if (typeof process === 'object' && 'env' in process) {
13
+ if (process.env[key]) {
14
+ return process.env[key];
15
+ }
16
+ }
17
+ }
18
+ return undefined;
19
+ }
20
+ //# sourceMappingURL=envUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envUtils.js","sourceRoot":"","sources":["../src/envUtils.ts"],"names":[],"mappings":"AAOA,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"}
@@ -0,0 +1,9 @@
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 './dlog';
7
+ export * from './envUtils';
8
+ export * from './utils';
9
+ //# 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,QAAQ,CAAA;AACtB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
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 './dlog';
7
+ export * from './envUtils';
8
+ export * from './utils';
9
+ //# 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,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 debug from 'debug';
6
+ import { bin_fromHexString } from '../binary';
7
+ describe.concurrent('dlogTest', () => {
8
+ it('basic', () => {
9
+ const longHex = bin_fromHexString('0102030405060708090a0b0c0d0e0f101112131415161718191a');
10
+ const obj = {
11
+ a: 1,
12
+ b: 'b',
13
+ c: {
14
+ d: 2,
15
+ e: 'e',
16
+ },
17
+ d: [1, 2, 3],
18
+ q: new Uint8Array([1, 2, 3]),
19
+ longHex,
20
+ nested: {
21
+ a: 1,
22
+ more: {
23
+ even_more: {
24
+ more_yet: {
25
+ z: 1000,
26
+ },
27
+ },
28
+ },
29
+ },
30
+ };
31
+ const log = dlog('test:dlog');
32
+ log(obj);
33
+ log('\n\n\n');
34
+ log('obj =', obj);
35
+ log('\n\n\n');
36
+ log('b', 'q', obj, obj, 'end');
37
+ log('\n\n\n');
38
+ log(obj, obj);
39
+ log('\n\n\n');
40
+ log('obj =', obj, 'obj =', obj);
41
+ log('\n\n\n');
42
+ log(longHex);
43
+ log('\n\n\n');
44
+ log('longHex =', longHex);
45
+ log('\n\n\n');
46
+ log('shortenedHexKey =', { '0x0102030405060708090a0b0c0d0e0f101112131415161718191a': true });
47
+ log('shortenedHexValue =', '0x0102030405060708090a0b0c0d0e0f101112131415161718191a');
48
+ log('shortenedHexValue =', {
49
+ key: '0x0102030405060708090a0b0c0d0e0f101112131415161718191a',
50
+ });
51
+ });
52
+ it('extend', () => {
53
+ const base_log = dlog('test:dlog');
54
+ const log = base_log.extend('extend');
55
+ log('extend');
56
+ log(22);
57
+ log('33 =', 33);
58
+ log('gonna print more', '44 =', 44);
59
+ });
60
+ it('enabled1', () => {
61
+ const log = dlog('test:dlog');
62
+ if (log.enabled) {
63
+ log('enabled', log.enabled);
64
+ log.enabled = false;
65
+ log('(should not print)', log.enabled);
66
+ log.enabled = true;
67
+ log('enabled', log.enabled);
68
+ }
69
+ });
70
+ it('circularReference', () => {
71
+ const log = dlog('test:dlog');
72
+ class A {
73
+ b;
74
+ constructor() {
75
+ this.b = new B(this);
76
+ }
77
+ }
78
+ class B {
79
+ a;
80
+ constructor(a) {
81
+ this.a = a;
82
+ }
83
+ }
84
+ const a = new A();
85
+ log('test circular:', { a });
86
+ });
87
+ it('numbers', () => {
88
+ const log = dlog('test:dlog');
89
+ log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
90
+ });
91
+ it('error', () => {
92
+ const log = dlogError('test:dlog:error');
93
+ log('test same number:', { a: 1, b: 1, c: 1, d: 2 });
94
+ log(new Error('test error'));
95
+ function funcThatThrows() {
96
+ throw new Error('test error 2');
97
+ }
98
+ try {
99
+ funcThatThrows();
100
+ }
101
+ catch (e) {
102
+ log(e);
103
+ }
104
+ try {
105
+ funcThatThrows();
106
+ }
107
+ catch (e) {
108
+ log('test error 3', e, 123, 'more text');
109
+ }
110
+ });
111
+ it('set', () => {
112
+ const s = new Set([111, 222, { aaa: 333 }]);
113
+ dlog('test:dlog')(s);
114
+ const log = dlog('test:dlog');
115
+ log.enabled = true;
116
+ let output = '';
117
+ log.baseDebug.log = (...args) => {
118
+ for (const arg of args) {
119
+ output += `${arg}`;
120
+ }
121
+ };
122
+ log(s);
123
+ expect(output).toContain('111');
124
+ expect(output).toContain('222');
125
+ expect(output).toContain('333');
126
+ expect(output).toContain('aaa');
127
+ });
128
+ it('map', () => {
129
+ const s = new Map([
130
+ ['aaa', 111],
131
+ ['bbb', 222],
132
+ ['ccc', { a: 333 }],
133
+ ]);
134
+ dlog('test:dlog')(s);
135
+ const log = dlog('test:dlog');
136
+ log.enabled = true;
137
+ let output = '';
138
+ log.baseDebug.log = (...args) => {
139
+ for (const arg of args) {
140
+ output += `${arg}`;
141
+ }
142
+ };
143
+ log(s);
144
+ expect(output).toContain('111');
145
+ expect(output).toContain('aaa');
146
+ expect(output).toContain('222');
147
+ expect(output).toContain('bbb');
148
+ expect(output).toContain('333');
149
+ expect(output).toContain('ccc');
150
+ });
151
+ it('enabled2', () => {
152
+ const ns = 'uniqueLogName';
153
+ // Override
154
+ let log = dlog(ns);
155
+ expect(log.enabled).toBeFalsy();
156
+ log.enabled = true;
157
+ expect(log.enabled).toBeTruthy();
158
+ log.enabled = false;
159
+ expect(log.enabled).toBeFalsy();
160
+ // Default
161
+ log = dlog(ns, { defaultEnabled: true, allowJest: true });
162
+ expect(log.enabled).toBeTruthy();
163
+ log.enabled = false;
164
+ expect(log.enabled).toBeFalsy();
165
+ // Default under Jest
166
+ log = dlog(ns, { defaultEnabled: true });
167
+ expect(log.enabled).toBeFalsy();
168
+ log.enabled = true;
169
+ expect(log.enabled).toBeTruthy();
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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"}
@@ -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-protocol/utils",
3
+ "version": "0.0.349",
4
+ "packageManager": "yarn@3.8.0",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "tsc",
10
+ "cb": "yarn clean && yarn build",
11
+ "clean": "rm -rf dist",
12
+ "lint": "yarn eslint --format unix ./src",
13
+ "lint:fix": "yarn lint --fix",
14
+ "test": "vitest run",
15
+ "test:ci": "yarn test",
16
+ "test:debug": "DEBUG=test yarn test",
17
+ "test:watch": "vitest --watch",
18
+ "watch": "tsc --watch"
19
+ },
20
+ "dependencies": {
21
+ "@bufbuild/protobuf": "^2.2.2",
22
+ "@towns-protocol/proto": "^0.0.349",
23
+ "debug": "^4.3.4",
24
+ "ethereum-cryptography": "^3.2.0"
25
+ },
26
+ "devDependencies": {
27
+ "@types/debug": "^4.1.8",
28
+ "@typescript-eslint/eslint-plugin": "^8.29.0",
29
+ "@typescript-eslint/parser": "^8.29.0",
30
+ "eslint": "^8.57.1",
31
+ "eslint-import-resolver-typescript": "^4.3.2",
32
+ "eslint-plugin-import-x": "^4.10.2",
33
+ "ts-node": "^10.9.1",
34
+ "typescript": "^5.8.2",
35
+ "vitest": "^3.2.3"
36
+ },
37
+ "files": [
38
+ "/dist"
39
+ ],
40
+ "publishConfig": {
41
+ "access": "public"
42
+ },
43
+ "gitHead": "203975e546c212816a5086c7c97a17c3f45b139f"
44
+ }