@talismn/util 2.0.0 → 2.1.0

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 CHANGED
@@ -1,3 +1,9 @@
1
1
  # @talismn/util
2
2
 
3
- This library hosts non-UI code meant to be shared between Talisman projects
3
+ Non-UI helpers shared by the Talisman packages and apps:
4
+
5
+ - amounts: `planckToTokens`, `tokensToPlanck`, `formatDecimals`, `formatPrice`, `BigMath`
6
+ - bytes and hex helpers
7
+ - RxJS helpers: `getSharedObservable`, `replaySubjectFrom`, `firstThenDebounce`
8
+ - async helpers: `sleep`, `throwAfter`, `Deferred`
9
+ - type guards (`isNotNil`, `isTruthy`, `isHexString`, ...)
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import BigNumber$1 from "bignumber.js";
2
2
  import { Observable, OperatorFunction, ReplaySubject, Subject } from "rxjs";
3
3
  //#region src/addTrailingSlash.d.ts
4
- declare const addTrailingSlash: (url: string) => string;
4
+ export declare const addTrailingSlash: (url: string) => string;
5
5
  //#endregion
6
6
  //#region src/assert.d.ts
7
7
  /**
@@ -10,14 +10,14 @@ declare const addTrailingSlash: (url: string) => string;
10
10
  * @example
11
11
  * assert(chain, "Chain not found")
12
12
  **/
13
- declare function assert(condition: unknown, message: string | (() => string)): asserts condition;
13
+ export declare function assert(condition: unknown, message: string | (() => string)): asserts condition;
14
14
  //#endregion
15
15
  //#region src/BigMath.d.ts
16
16
  /**
17
17
  * Javascript's `Math` library for `BigInt`.
18
18
  * Taken from https://stackoverflow.com/questions/51867270/is-there-a-library-similar-to-math-that-supports-javascript-bigint/64953280#64953280
19
19
  */
20
- declare const BigMath: {
20
+ export declare const BigMath: {
21
21
  abs(x: bigint): bigint;
22
22
  sign(x: bigint): 0n | 1n | -1n;
23
23
  min(value: bigint, ...values: bigint[]): bigint;
@@ -25,43 +25,43 @@ declare const BigMath: {
25
25
  };
26
26
  //#endregion
27
27
  //#region src/isHexString.d.ts
28
- type HexString = `0x${string}`;
29
- declare const REGEX_HEX_STRING: RegExp;
30
- declare const isHexString: (value: unknown) => value is HexString;
28
+ export type HexString = `0x${string}`;
29
+ export declare const REGEX_HEX_STRING: RegExp;
30
+ export declare const isHexString: (value: unknown) => value is HexString;
31
31
  //#endregion
32
32
  //#region src/bytes.d.ts
33
33
  /**
34
34
  * Byte / hex primitives, drop-in equivalents of the `@polkadot/util` helpers we used to depend on.
35
35
  * Semantics intentionally match polkadot-js for migration safety.
36
36
  */
37
- declare const hexToU8a: (hex?: string | null) => Uint8Array;
38
- declare const u8aToHex: (value?: Uint8Array | null) => HexString;
39
- declare const stringToU8a: (value?: string | null) => Uint8Array;
40
- declare const u8aToString: (value?: Uint8Array | null) => string;
41
- declare const hexToString: (hex?: string | null) => string;
42
- declare const hexToNumber: (hex?: string | null) => number;
43
- declare const numberToU8a: (value?: number | null) => Uint8Array;
37
+ export declare const hexToU8a: (hex?: string | null) => Uint8Array;
38
+ export declare const u8aToHex: (value?: Uint8Array | null) => HexString;
39
+ export declare const stringToU8a: (value?: string | null) => Uint8Array;
40
+ export declare const u8aToString: (value?: Uint8Array | null) => string;
41
+ export declare const hexToString: (hex?: string | null) => string;
42
+ export declare const hexToNumber: (hex?: string | null) => number;
43
+ export declare const numberToU8a: (value?: number | null) => Uint8Array;
44
44
  /** Coerces hex strings, utf-8 strings, number arrays and buffers to Uint8Array (polkadot-js semantics) */
45
- declare const u8aToU8a: (value?: string | number[] | Uint8Array | null) => Uint8Array;
46
- declare const u8aConcat: (...items: (string | number[] | Uint8Array)[]) => Uint8Array;
47
- declare const u8aEq: (a: string | Uint8Array, b: string | Uint8Array) => boolean;
48
- declare const u8aCmp: (a: string | Uint8Array, b: string | Uint8Array) => number;
45
+ export declare const u8aToU8a: (value?: string | number[] | Uint8Array | null) => Uint8Array;
46
+ export declare const u8aConcat: (...items: (string | number[] | Uint8Array)[]) => Uint8Array;
47
+ export declare const u8aEq: (a: string | Uint8Array, b: string | Uint8Array) => boolean;
48
+ export declare const u8aCmp: (a: string | Uint8Array, b: string | Uint8Array) => number;
49
49
  /**
50
50
  * Tests if the input is printable ASCII (code points 32-126). Hex strings are decoded to bytes
51
51
  * first, other strings are checked character-wise (polkadot-js `isAscii` semantics).
52
52
  */
53
- declare const isAsciiPrintable: (value?: string | Uint8Array | null) => boolean;
53
+ export declare const isAsciiPrintable: (value?: string | Uint8Array | null) => boolean;
54
54
  /** Wraps bytes with `<Bytes>...</Bytes>` for raw-message signing, unless already wrapped */
55
- declare const u8aWrapBytes: (value: string | Uint8Array) => Uint8Array;
56
- declare const u8aUnwrapBytes: (value: string | Uint8Array) => Uint8Array;
55
+ export declare const u8aWrapBytes: (value: string | Uint8Array) => Uint8Array;
56
+ export declare const u8aUnwrapBytes: (value: string | Uint8Array) => Uint8Array;
57
57
  //#endregion
58
58
  //#region src/timeSlicer.d.ts
59
59
  /**
60
60
  * Default CPU budget for a single synchronous slice of chunked work.
61
61
  * ~50-60% of a 60fps frame, leaving the rest for the host (user interactions, rendering).
62
62
  */
63
- declare const DEFAULT_TIME_SLICE_BUDGET_MS = 10;
64
- type TimeSlicerOptions = {
63
+ export declare const DEFAULT_TIME_SLICE_BUDGET_MS = 10;
64
+ export type TimeSlicerOptions = {
65
65
  /** max synchronous work per slice, in milliseconds (default: DEFAULT_TIME_SLICE_BUDGET_MS) */
66
66
  budgetMs?: number;
67
67
  /** aborting this signal makes the slicer throw an AbortError at its next check point */
@@ -71,7 +71,7 @@ type TimeSlicerOptions = {
71
71
  /** identifies this slicer in host JS-activity reports (see jsActivityHook) */
72
72
  label?: string;
73
73
  };
74
- type TimeSlicer = {
74
+ export type TimeSlicer = {
75
75
  readonly signal?: AbortSignal;
76
76
  /** true when the current slice has consumed its budget */
77
77
  shouldYield(): boolean;
@@ -96,7 +96,7 @@ type TimeSlicer = {
96
96
  * Creates an AbortError-style error without relying on DOMException (not available on Hermes).
97
97
  * Recognized by `isAbortError` from this package.
98
98
  */
99
- declare const newAbortError: () => Error;
99
+ export declare const newAbortError: () => Error;
100
100
  /**
101
101
  * Tracks a time budget for cooperative scheduling: run synchronous work until the budget
102
102
  * for the current slice is exhausted, then yield the thread back to the host event loop
@@ -104,10 +104,10 @@ declare const newAbortError: () => Error;
104
104
  *
105
105
  * A single slicer can be shared across multiple phases of work so the budget spans them.
106
106
  */
107
- declare const createTimeSlicer: ({ budgetMs, signal, now, label }?: TimeSlicerOptions) => TimeSlicer;
107
+ export declare const createTimeSlicer: ({ budgetMs, signal, now, label }?: TimeSlicerOptions) => TimeSlicer;
108
108
  //#endregion
109
109
  //#region src/chunkedArray.d.ts
110
- type ChunkedOptions = {
110
+ export type ChunkedOptions = {
111
111
  /** max synchronous work per slice, in milliseconds (ignored when `slicer` is provided) */
112
112
  budgetMs?: number;
113
113
  /** abort in-flight work; the returned promise rejects with an AbortError (ignored when `slicer` is provided) */
@@ -124,17 +124,17 @@ type ChunkedOptions = {
124
124
  * Errors thrown by `fn` reject the promise; aborting rejects with an AbortError at the
125
125
  * next between-items check point.
126
126
  */
127
- declare const forEachWithYield: <T>(items: readonly T[], fn: (item: T, index: number) => void, options?: ChunkedOptions) => Promise<void>;
127
+ export declare const forEachWithYield: <T>(items: readonly T[], fn: (item: T, index: number) => void, options?: ChunkedOptions) => Promise<void>;
128
128
  /** `Array.prototype.map`, chunked (see forEachWithYield for semantics) */
129
- declare const mapWithYield: <T, R>(items: readonly T[], fn: (item: T, index: number) => R, options?: ChunkedOptions) => Promise<R[]>;
129
+ export declare const mapWithYield: <T, R>(items: readonly T[], fn: (item: T, index: number) => R, options?: ChunkedOptions) => Promise<R[]>;
130
130
  /** lodash `keyBy`, chunked (see forEachWithYield for semantics) */
131
- declare const keyByWithYield: <T>(items: readonly T[], keyFn: (item: T, index: number) => string, options?: ChunkedOptions) => Promise<Record<string, T>>;
131
+ export declare const keyByWithYield: <T>(items: readonly T[], keyFn: (item: T, index: number) => string, options?: ChunkedOptions) => Promise<Record<string, T>>;
132
132
  /**
133
133
  * Chunked equivalent of lodash `isEqual(a, b)` for arrays: `a === b` fast path, length
134
134
  * check, then per-item `a[i] === b[i] || isItemEqual(a[i], b[i])` within the time budget.
135
135
  * The result is identical to `isEqual(a, b)`.
136
136
  */
137
- declare const arrayItemsEqualWithYield: <T>(a: readonly T[] | undefined, b: readonly T[] | undefined, options?: ChunkedOptions & {
137
+ export declare const arrayItemsEqualWithYield: <T>(a: readonly T[] | undefined, b: readonly T[] | undefined, options?: ChunkedOptions & {
138
138
  isItemEqual?: (x: T, y: T) => boolean;
139
139
  }) => Promise<boolean>;
140
140
  //#endregion
@@ -146,7 +146,7 @@ declare const arrayItemsEqualWithYield: <T>(a: readonly T[] | undefined, b: read
146
146
  * This pattern is often used when dealing with asynchronous operations that involve multiple steps or when
147
147
  * the result of an operation cannot be immediately determined.
148
148
  */
149
- declare function Deferred<T>(): {
149
+ export declare function Deferred<T>(): {
150
150
  promise: Promise<T>;
151
151
  resolve: (value: T | PromiseLike<T>) => void;
152
152
  reject: (reason?: unknown) => void;
@@ -157,10 +157,10 @@ declare function Deferred<T>(): {
157
157
  //#endregion
158
158
  //#region src/FunctionPropertyNames.d.ts
159
159
  /** biome-ignore-all lint/complexity/noBannedTypes: legacy */
160
- type FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? K : never; }[keyof T];
161
- type FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>;
162
- type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K; }[keyof T];
163
- type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;
160
+ export type FunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? K : never; }[keyof T];
161
+ export type FunctionProperties<T> = Pick<T, FunctionPropertyNames<T>>;
162
+ export type NonFunctionPropertyNames<T> = { [K in keyof T]: T[K] extends Function ? never : K; }[keyof T];
163
+ export type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;
164
164
  //#endregion
165
165
  //#region src/firstThenDebounce.d.ts
166
166
  /**
@@ -169,10 +169,10 @@ type NonFunctionProperties<T> = Pick<T, NonFunctionPropertyNames<T>>;
169
169
  * 1. Emits the first value it receives from the source observable, then:
170
170
  * 2. Debounces any future values by `timeout` ms.
171
171
  */
172
- declare const firstThenDebounce: <T>(timeout: number) => OperatorFunction<T, T>;
172
+ export declare const firstThenDebounce: <T>(timeout: number) => OperatorFunction<T, T>;
173
173
  //#endregion
174
174
  //#region src/formatDecimals.d.ts
175
- declare const MAX_DECIMALS_FORMAT = 12;
175
+ export declare const MAX_DECIMALS_FORMAT = 12;
176
176
  /**
177
177
  * Custom decimal number formatting for Talisman
178
178
  * note that the NumberFormat().format() call is the ressource heavy part, it's not worth trying to optimize other parts
@@ -182,17 +182,20 @@ declare const MAX_DECIMALS_FORMAT = 12;
182
182
  * @param options formatting options
183
183
  * @returns the formatted value
184
184
  */
185
- declare const formatDecimals: (num?: string | number | null | BigNumber$1, digits?: number, options?: Partial<Intl.NumberFormatOptions>, locale?: string) => string;
185
+ export declare const formatDecimals: (num?: string | number | null | BigNumber$1, digits?: number, options?: Partial<Intl.NumberFormatOptions>, locale?: string) => string;
186
186
  //#endregion
187
187
  //#region src/formatPrice.d.ts
188
- declare const formatPrice: (price: number, currency: string, compact: boolean) => string;
188
+ export declare const formatPrice: (price: number, currency: string, compact: boolean) => string;
189
+ //#endregion
190
+ //#region src/getErrorMessage.d.ts
191
+ export declare const getErrorMessage: (error: unknown, fallback?: string) => string;
189
192
  //#endregion
190
193
  //#region src/getLoadable.d.ts
191
194
  type LoadableError = {
192
195
  name: string;
193
196
  message: string;
194
197
  };
195
- type Loadable<T = unknown> = {
198
+ export type Loadable<T = unknown> = {
196
199
  status: "loading";
197
200
  data?: T;
198
201
  error?: undefined;
@@ -205,15 +208,15 @@ type Loadable<T = unknown> = {
205
208
  data?: T;
206
209
  error: LoadableError;
207
210
  };
208
- type LoadableStatus = Loadable["status"];
209
- type LoadableOptions = {
211
+ export type LoadableStatus = Loadable["status"];
212
+ export type LoadableOptions = {
210
213
  getError?: (error: unknown) => LoadableError;
211
214
  refreshInterval?: number;
212
215
  };
213
- declare function getLoadable$<T>(factory: () => Promise<T>, options?: LoadableOptions): Observable<Loadable<T>>;
216
+ export declare function getLoadable$<T>(factory: () => Promise<T>, options?: LoadableOptions): Observable<Loadable<T>>;
214
217
  //#endregion
215
218
  //#region src/getLoadableQuery.d.ts
216
- type GetLoadableQueryParams<TArgs extends unknown[], TResult> = {
219
+ export type GetLoadableQueryParams<TArgs extends unknown[], TResult> = {
217
220
  namespace: string;
218
221
  args: TArgs;
219
222
  queryFn: (args: TArgs, signal: AbortSignal) => Promise<TResult>;
@@ -226,11 +229,11 @@ type GetLoadableQueryParams<TArgs extends unknown[], TResult> = {
226
229
  *
227
230
  * TODO: consolidate with getQuery$
228
231
  */
229
- declare const getLoadableQuery$: <TArgs extends unknown[], TResult>(params: GetLoadableQueryParams<TArgs, TResult>) => Observable<Loadable<TResult>>;
232
+ export declare const getLoadableQuery$: <TArgs extends unknown[], TResult>(params: GetLoadableQueryParams<TArgs, TResult>) => Observable<Loadable<TResult>>;
230
233
  //#endregion
231
234
  //#region src/getQuery.d.ts
232
- type QueryStatus = "loading" | "loaded" | "error";
233
- type QueryResult<T, S extends QueryStatus = "loading" | "loaded" | "error"> = S extends "loading" ? {
235
+ export type QueryStatus = "loading" | "loaded" | "error";
236
+ export type QueryResult<T, S extends QueryStatus = "loading" | "loaded" | "error"> = S extends "loading" ? {
234
237
  status: "loading";
235
238
  data: T | undefined;
236
239
  error: undefined;
@@ -273,7 +276,7 @@ type QueryOptions<Output, Args> = {
273
276
  *
274
277
  * @deprecated use getLoadableQuery$ instead
275
278
  */
276
- declare const getQuery$: <Output, Args>({ namespace, args, queryFn, defaultValue, refreshInterval, serializer }: QueryOptions<Output, Args>) => Observable<QueryResult<Output>>;
279
+ export declare const getQuery$: <Output, Args>({ namespace, args, queryFn, defaultValue, refreshInterval, serializer }: QueryOptions<Output, Args>) => Observable<QueryResult<Output>>;
277
280
  //#endregion
278
281
  //#region src/getSharedObservable.d.ts
279
282
  /**
@@ -291,25 +294,26 @@ declare const getQuery$: <Output, Args>({ namespace, args, queryFn, defaultValue
291
294
  * @param serializer
292
295
  * @returns
293
296
  */
294
- declare const getSharedObservable: <Args, Output, ObsOutput = Observable<Output>>(namespace: string, args: Args, createObservable: (args: Args) => ObsOutput, serializer?: (args: Args) => string) => ObsOutput;
297
+ export declare const getSharedObservable: <Args, Output, ObsOutput = Observable<Output>>(namespace: string, args: Args, createObservable: (args: Args) => ObsOutput, serializer?: (args: Args) => string) => ObsOutput;
295
298
  //#endregion
296
299
  //#region src/hasOwnProperty.d.ts
297
- declare function hasOwnProperty<X, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown>;
300
+ export declare function hasOwnProperty<X, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown>;
298
301
  //#endregion
299
302
  //#region src/isAbortError.d.ts
300
- declare const isAbortError: (error: unknown) => boolean;
303
+ export declare const isAbortError: (error: unknown) => boolean;
301
304
  //#endregion
302
305
  //#region src/isArrayOf.d.ts
303
- declare function isArrayOf<T, P extends Array<unknown>>(array: unknown[], func: new (...args: P) => T): array is T[];
306
+ export declare function isArrayOf<T, P extends Array<unknown>>(array: unknown[], func: new (...args: P) => T): array is T[];
304
307
  //#endregion
305
308
  //#region src/isAscii.d.ts
306
- declare const isAscii: (str: string) => boolean;
309
+ export declare const isAscii: (str: string) => boolean;
307
310
  //#endregion
308
311
  //#region src/isBigInt.d.ts
309
- declare const isBigInt: (value: unknown) => value is bigint;
312
+ export declare const isBigInt: (value: unknown) => value is bigint;
310
313
  //#endregion
311
314
  //#region src/isBooleanTrue.d.ts
312
- declare const isBooleanTrue: <T>(x: T | null | undefined) => x is T;
315
+ /** @deprecated use isTruthy instead */
316
+ export declare const isBooleanTrue: <T>(x: T | null | undefined) => x is T;
313
317
  //#endregion
314
318
  //#region src/isErrorOfName.d.ts
315
319
  /**
@@ -323,7 +327,7 @@ declare const isBooleanTrue: <T>(x: T | null | undefined) => x is T;
323
327
  * `super({ name: 'ContractFunctionExecutionError' })`). For classes that don't set `.name`,
324
328
  * duck-type the shape instead.
325
329
  */
326
- declare const isErrorOfName: (error: unknown, ...names: string[]) => boolean;
330
+ export declare const isErrorOfName: (error: unknown, ...names: string[]) => boolean;
327
331
  //#endregion
328
332
  //#region src/isNotNil.d.ts
329
333
  /**
@@ -334,19 +338,19 @@ declare const isErrorOfName: (error: unknown, ...names: string[]) => boolean;
334
338
  * @param value
335
339
  * @returns whether the value is neither null nor undefined
336
340
  */
337
- declare const isNotNil: <T>(value: T | null | undefined) => value is T;
341
+ export declare const isNotNil: <T>(value: T | null | undefined) => value is T;
338
342
  //#endregion
339
343
  //#region src/isPromise.d.ts
340
- declare const isPromise: <T = any>(value: any) => value is Promise<T>;
344
+ export declare const isPromise: <T = any>(value: any) => value is Promise<T>;
341
345
  //#endregion
342
346
  //#region src/isSubject.d.ts
343
347
  /**
344
348
  * Tests to see if an object is an RxJS {@link Subject}.
345
349
  */
346
- declare function isSubject<T>(object?: Subject<T> | object): object is Subject<T>;
350
+ export declare function isSubject<T>(object?: Subject<T> | object): object is Subject<T>;
347
351
  //#endregion
348
352
  //#region src/isTruthy.d.ts
349
- declare const isTruthy: <T>(value: T | null | undefined) => value is T;
353
+ export declare const isTruthy: <T>(value: T | null | undefined) => value is T;
350
354
  //#endregion
351
355
  //#region src/jsActivityHook.d.ts
352
356
  /**
@@ -360,7 +364,7 @@ declare const isTruthy: <T>(value: T | null | undefined) => value is T;
360
364
  * When no hook is installed this is a no-op (a single property read), so library code
361
365
  * can call it unconditionally from hot paths.
362
366
  */
363
- declare const reportJsActivity: (label: string, durationMs?: number) => void;
367
+ export declare const reportJsActivity: (label: string, durationMs?: number) => void;
364
368
  //#endregion
365
369
  //#region src/keepAlive.d.ts
366
370
  /**
@@ -378,7 +382,7 @@ declare const reportJsActivity: (label: string, durationMs?: number) => void;
378
382
  * );
379
383
  * ```
380
384
  */
381
- declare const keepAlive: <T>(timeout: number) => OperatorFunction<T, T>;
385
+ export declare const keepAlive: <T>(timeout: number) => OperatorFunction<T, T>;
382
386
  //#endregion
383
387
  //#region src/lruMap.d.ts
384
388
  /**
@@ -388,7 +392,7 @@ declare const keepAlive: <T>(timeout: number) => OperatorFunction<T, T>;
388
392
  * least-recently-used entry is evicted. Intended for long-lived in-memory
389
393
  * caches that would otherwise grow without bound.
390
394
  */
391
- declare class LruMap<K, V> {
395
+ export declare class LruMap<K, V> {
392
396
  #private;
393
397
  constructor(maxSize: number);
394
398
  get(key: K): V | undefined;
@@ -400,7 +404,7 @@ declare class LruMap<K, V> {
400
404
  }
401
405
  //#endregion
402
406
  //#region src/mapChunked.d.ts
403
- type ChunkedProjectContext = {
407
+ export type ChunkedProjectContext = {
404
408
  /** thread the slicer through chunked helpers (mapWithYield etc.) so the budget spans them */
405
409
  slicer: TimeSlicer;
406
410
  /** aborted when the work is cancelled (new upstream value or unsubscription) */
@@ -417,7 +421,7 @@ type ChunkedProjectContext = {
417
421
  * Note: pipelines using this operator already emit asynchronously (macrotask), so adding
418
422
  * `observeOn(asyncScheduler)` downstream is redundant and only adds latency.
419
423
  */
420
- declare const switchMapChunked: <T, R>(project: (value: T, ctx: ChunkedProjectContext, index: number) => Promise<R>, options?: {
424
+ export declare const switchMapChunked: <T, R>(project: (value: T, ctx: ChunkedProjectContext, index: number) => Promise<R>, options?: {
421
425
  budgetMs?: number;
422
426
  label?: string;
423
427
  }) => OperatorFunction<T, R>;
@@ -426,18 +430,18 @@ declare const switchMapChunked: <T, R>(project: (value: T, ctx: ChunkedProjectCo
426
430
  * processed one at a time; a new value does NOT cancel in-flight work (unsubscription
427
431
  * still aborts it).
428
432
  */
429
- declare const concatMapChunked: <T, R>(project: (value: T, ctx: ChunkedProjectContext, index: number) => Promise<R>, options?: {
433
+ export declare const concatMapChunked: <T, R>(project: (value: T, ctx: ChunkedProjectContext, index: number) => Promise<R>, options?: {
430
434
  budgetMs?: number;
431
435
  label?: string;
432
436
  }) => OperatorFunction<T, R>;
433
437
  //#endregion
434
438
  //#region src/Prettify.d.ts
435
- type Prettify<T> = { [K in keyof T]: T[K]; } & {};
439
+ export type Prettify<T> = { [K in keyof T]: T[K]; } & {};
436
440
  //#endregion
437
441
  //#region src/planckToTokens.d.ts
438
- declare function planckToTokens(planck: string, tokenDecimals: number): string;
439
- declare function planckToTokens(planck: string, tokenDecimals?: number): string | undefined;
440
- declare function planckToTokens(planck?: string, tokenDecimals?: number): string | undefined;
442
+ export declare function planckToTokens(planck: string, tokenDecimals: number): string;
443
+ export declare function planckToTokens(planck: string, tokenDecimals?: number): string | undefined;
444
+ export declare function planckToTokens(planck?: string, tokenDecimals?: number): string | undefined;
441
445
  //#endregion
442
446
  //#region src/replaySubjectFrom.d.ts
443
447
  /**
@@ -450,10 +454,10 @@ declare function planckToTokens(planck?: string, tokenDecimals?: number): string
450
454
  *
451
455
  * For any other type of value, it will be immediately published into the {@link ReplaySubject}.
452
456
  */
453
- declare const replaySubjectFrom: <T>(initialValue: T | Promise<T> | ReplaySubject<T>) => ReplaySubject<T>;
457
+ export declare const replaySubjectFrom: <T>(initialValue: T | Promise<T> | ReplaySubject<T>) => ReplaySubject<T>;
454
458
  //#endregion
455
459
  //#region src/sleep.d.ts
456
- declare const sleep: (ms: number) => Promise<void>;
460
+ export declare const sleep: (ms: number) => Promise<void>;
457
461
  //#endregion
458
462
  //#region src/splitSubject.d.ts
459
463
  /**
@@ -465,7 +469,7 @@ declare const sleep: (ms: number) => Promise<void>;
465
469
  * This can be helpful when, to avoid bugs, you want to expose only one
466
470
  * of these parts to external code and keep the other part private.
467
471
  */
468
- declare function splitSubject<T>(subject: Subject<T>): readonly [(value: T) => void, Observable<T>];
472
+ export declare function splitSubject<T>(subject: Subject<T>): readonly [(value: T) => void, Observable<T>];
469
473
  //#endregion
470
474
  //#region src/stripHexPrefix.d.ts
471
475
  /**
@@ -477,25 +481,25 @@ declare function splitSubject<T>(subject: Subject<T>): readonly [(value: T) => v
477
481
  * stripHexPrefix("0x1234") // "1234"
478
482
  * stripHexPrefix("1234") // "1234"
479
483
  **/
480
- declare const stripHexPrefix: (str: string) => string;
484
+ export declare const stripHexPrefix: (str: string) => string;
481
485
  //#endregion
482
486
  //#region src/throwAfter.d.ts
483
- declare const throwAfter: (ms: number, reason: string) => Promise<never>;
487
+ export declare const throwAfter: (ms: number, reason: string) => Promise<never>;
484
488
  //#endregion
485
489
  //#region src/tokensToPlanck.d.ts
486
- declare function tokensToPlanck(tokens: string, tokenDecimals: number): string;
487
- declare function tokensToPlanck(tokens: string, tokenDecimals?: number): string | undefined;
488
- declare function tokensToPlanck(tokens?: string, tokenDecimals?: number): string | undefined;
490
+ export declare function tokensToPlanck(tokens: string, tokenDecimals: number): string;
491
+ export declare function tokensToPlanck(tokens: string, tokenDecimals?: number): string | undefined;
492
+ export declare function tokensToPlanck(tokens?: string, tokenDecimals?: number): string | undefined;
489
493
  //#endregion
490
494
  //#region src/validateArrayWithYield.d.ts
491
- type ItemParseResult<T, E> = {
495
+ export type ItemParseResult<T, E> = {
492
496
  success: true;
493
497
  data: T;
494
498
  } | {
495
499
  success: false;
496
500
  error: E;
497
501
  };
498
- type ArrayValidationResult<T, E> = {
502
+ export type ArrayValidationResult<T, E> = {
499
503
  success: true;
500
504
  data: T[];
501
505
  } | {
@@ -513,7 +517,7 @@ type ArrayValidationResult<T, E> = {
513
517
  * (no fail-fast) — pass e.g. `(item) => SomeSchema.safeParse(item)` as `parseItem`.
514
518
  * Zod-agnostic on purpose: this package has no zod dependency.
515
519
  */
516
- declare const validateArrayWithYield: <T, E>(items: readonly unknown[], parseItem: (item: unknown, index: number) => ItemParseResult<T, E>, options?: ChunkedOptions) => Promise<ArrayValidationResult<T, E>>;
520
+ export declare const validateArrayWithYield: <T, E>(items: readonly unknown[], parseItem: (item: unknown, index: number) => ItemParseResult<T, E>, options?: ChunkedOptions) => Promise<ArrayValidationResult<T, E>>;
517
521
  //#endregion
518
522
  //#region src/validateHexString.d.ts
519
523
  /**
@@ -526,10 +530,9 @@ declare const validateArrayWithYield: <T, E>(items: readonly unknown[], parseIte
526
530
  * validateHexString("1234") // Error: Expected a hex string
527
531
  * validateHexString(1234) // Error: Expected a string
528
532
  **/
529
- declare const validateHexString: (str: string) => `0x${string}`;
533
+ export declare const validateHexString: (str: string) => `0x${string}`;
530
534
  //#endregion
531
535
  //#region src/yieldToEventLoop.d.ts
532
- declare const yieldToEventLoop: () => Promise<void>;
536
+ export declare const yieldToEventLoop: () => Promise<void>;
533
537
  //#endregion
534
- export { ArrayValidationResult, BigMath, ChunkedOptions, ChunkedProjectContext, DEFAULT_TIME_SLICE_BUDGET_MS, Deferred, FunctionProperties, FunctionPropertyNames, GetLoadableQueryParams, HexString, ItemParseResult, Loadable, LoadableOptions, LoadableStatus, LruMap, MAX_DECIMALS_FORMAT, NonFunctionProperties, NonFunctionPropertyNames, Prettify, QueryResult, QueryStatus, REGEX_HEX_STRING, TimeSlicer, TimeSlicerOptions, addTrailingSlash, arrayItemsEqualWithYield, assert, concatMapChunked, createTimeSlicer, firstThenDebounce, forEachWithYield, formatDecimals, formatPrice, getLoadable$, getLoadableQuery$, getQuery$, getSharedObservable, hasOwnProperty, hexToNumber, hexToString, hexToU8a, isAbortError, isArrayOf, isAscii, isAsciiPrintable, isBigInt, isBooleanTrue, isErrorOfName, isHexString, isNotNil, isPromise, isSubject, isTruthy, keepAlive, keyByWithYield, mapWithYield, newAbortError, numberToU8a, planckToTokens, replaySubjectFrom, reportJsActivity, sleep, splitSubject, stringToU8a, stripHexPrefix, switchMapChunked, throwAfter, tokensToPlanck, u8aCmp, u8aConcat, u8aEq, u8aToHex, u8aToString, u8aToU8a, u8aUnwrapBytes, u8aWrapBytes, validateArrayWithYield, validateHexString, yieldToEventLoop };
535
538
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/addTrailingSlash.ts","../src/assert.ts","../src/BigMath.ts","../src/isHexString.ts","../src/bytes.ts","../src/timeSlicer.ts","../src/chunkedArray.ts","../src/deferred.ts","../src/FunctionPropertyNames.ts","../src/firstThenDebounce.ts","../src/formatDecimals.ts","../src/formatPrice.ts","../src/getLoadable.ts","../src/getLoadableQuery.ts","../src/getQuery.ts","../src/getSharedObservable.ts","../src/hasOwnProperty.ts","../src/isAbortError.ts","../src/isArrayOf.ts","../src/isAscii.ts","../src/isBigInt.ts","../src/isBooleanTrue.ts","../src/isErrorOfName.ts","../src/isNotNil.ts","../src/isPromise.ts","../src/isSubject.ts","../src/isTruthy.ts","../src/jsActivityHook.ts","../src/keepAlive.ts","../src/lruMap.ts","../src/mapChunked.ts","../src/Prettify.ts","../src/planckToTokens.ts","../src/replaySubjectFrom.ts","../src/sleep.ts","../src/splitSubject.ts","../src/stripHexPrefix.ts","../src/throwAfter.ts","../src/tokensToPlanck.ts","../src/validateArrayWithYield.ts","../src/validateHexString.ts","../src/yieldToEventLoop.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/addTrailingSlash.ts","../src/assert.ts","../src/BigMath.ts","../src/isHexString.ts","../src/bytes.ts","../src/timeSlicer.ts","../src/chunkedArray.ts","../src/deferred.ts","../src/FunctionPropertyNames.ts","../src/firstThenDebounce.ts","../src/formatDecimals.ts","../src/formatPrice.ts","../src/getErrorMessage.ts","../src/getLoadable.ts","../src/getLoadableQuery.ts","../src/getQuery.ts","../src/getSharedObservable.ts","../src/hasOwnProperty.ts","../src/isAbortError.ts","../src/isArrayOf.ts","../src/isAscii.ts","../src/isBigInt.ts","../src/isBooleanTrue.ts","../src/isErrorOfName.ts","../src/isNotNil.ts","../src/isPromise.ts","../src/isSubject.ts","../src/isTruthy.ts","../src/jsActivityHook.ts","../src/keepAlive.ts","../src/lruMap.ts","../src/mapChunked.ts","../src/Prettify.ts","../src/planckToTokens.ts","../src/replaySubjectFrom.ts","../src/sleep.ts","../src/splitSubject.ts","../src/stripHexPrefix.ts","../src/throwAfter.ts","../src/tokensToPlanck.ts","../src/validateArrayWithYield.ts","../src/validateHexString.ts","../src/yieldToEventLoop.ts"],"mappings":"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"}