@welshman/util 0.1.2 → 0.1.3

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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/dist/lib/src/Deferred.d.ts +21 -0
  3. package/dist/lib/src/Deferred.d.ts.map +1 -0
  4. package/dist/lib/src/Deferred.js +21 -0
  5. package/dist/lib/src/Deferred.js.map +1 -0
  6. package/dist/lib/src/Emitter.d.ts +14 -0
  7. package/dist/lib/src/Emitter.d.ts.map +1 -0
  8. package/dist/lib/src/Emitter.js +18 -0
  9. package/dist/lib/src/Emitter.js.map +1 -0
  10. package/dist/lib/src/LRUCache.d.ts +42 -0
  11. package/dist/lib/src/LRUCache.d.ts.map +1 -0
  12. package/dist/lib/src/LRUCache.js +62 -0
  13. package/dist/lib/src/LRUCache.js.map +1 -0
  14. package/dist/lib/src/TaskQueue.d.ts +18 -0
  15. package/dist/lib/src/TaskQueue.d.ts.map +1 -0
  16. package/dist/lib/src/TaskQueue.js +47 -0
  17. package/dist/lib/src/TaskQueue.js.map +1 -0
  18. package/dist/lib/src/Tools.d.ts +630 -0
  19. package/dist/lib/src/Tools.d.ts.map +1 -0
  20. package/dist/lib/src/Tools.js +1061 -0
  21. package/dist/lib/src/Tools.js.map +1 -0
  22. package/dist/lib/src/index.d.ts +7 -0
  23. package/dist/lib/src/index.d.ts.map +1 -0
  24. package/dist/lib/src/index.js +7 -0
  25. package/dist/lib/src/index.js.map +1 -0
  26. package/dist/lib/src/normalize-url/index.d.ts +286 -0
  27. package/dist/lib/src/normalize-url/index.d.ts.map +1 -0
  28. package/dist/lib/src/normalize-url/index.js +252 -0
  29. package/dist/lib/src/normalize-url/index.js.map +1 -0
  30. package/dist/tsconfig.build.tsbuildinfo +1 -0
  31. package/{build → dist/util}/src/Address.d.ts +1 -0
  32. package/dist/util/src/Address.d.ts.map +1 -0
  33. package/dist/util/src/Address.js.map +1 -0
  34. package/{build → dist/util}/src/Encryptable.d.ts +1 -0
  35. package/dist/util/src/Encryptable.d.ts.map +1 -0
  36. package/dist/util/src/Encryptable.js.map +1 -0
  37. package/{build → dist/util}/src/Events.d.ts +4 -3
  38. package/dist/util/src/Events.d.ts.map +1 -0
  39. package/{build → dist/util}/src/Events.js +3 -3
  40. package/dist/util/src/Events.js.map +1 -0
  41. package/{build → dist/util}/src/Filters.d.ts +1 -0
  42. package/dist/util/src/Filters.d.ts.map +1 -0
  43. package/dist/util/src/Filters.js.map +1 -0
  44. package/{build → dist/util}/src/Handler.d.ts +2 -1
  45. package/dist/util/src/Handler.d.ts.map +1 -0
  46. package/dist/util/src/Handler.js.map +1 -0
  47. package/{build → dist/util}/src/Kinds.d.ts +1 -0
  48. package/dist/util/src/Kinds.d.ts.map +1 -0
  49. package/dist/util/src/Kinds.js.map +1 -0
  50. package/{build → dist/util}/src/Links.d.ts +1 -0
  51. package/dist/util/src/Links.d.ts.map +1 -0
  52. package/dist/util/src/Links.js.map +1 -0
  53. package/{build → dist/util}/src/List.d.ts +1 -0
  54. package/dist/util/src/List.d.ts.map +1 -0
  55. package/dist/util/src/List.js.map +1 -0
  56. package/{build → dist/util}/src/Profile.d.ts +1 -0
  57. package/dist/util/src/Profile.d.ts.map +1 -0
  58. package/dist/util/src/Profile.js.map +1 -0
  59. package/{build → dist/util}/src/Relay.d.ts +1 -0
  60. package/dist/util/src/Relay.d.ts.map +1 -0
  61. package/dist/util/src/Relay.js.map +1 -0
  62. package/{build → dist/util}/src/Tags.d.ts +1 -0
  63. package/dist/util/src/Tags.d.ts.map +1 -0
  64. package/dist/util/src/Tags.js.map +1 -0
  65. package/{build → dist/util}/src/Zaps.d.ts +1 -0
  66. package/dist/util/src/Zaps.d.ts.map +1 -0
  67. package/dist/util/src/Zaps.js.map +1 -0
  68. package/{build → dist/util}/src/index.d.ts +1 -0
  69. package/dist/util/src/index.d.ts.map +1 -0
  70. package/dist/util/src/index.js.map +1 -0
  71. package/package.json +16 -22
  72. package/README.md +0 -15
  73. package/build/src/Address.js.map +0 -1
  74. package/build/src/Encryptable.js.map +0 -1
  75. package/build/src/Events.js.map +0 -1
  76. package/build/src/Filters.js.map +0 -1
  77. package/build/src/Handler.js.map +0 -1
  78. package/build/src/Kinds.js.map +0 -1
  79. package/build/src/Links.js.map +0 -1
  80. package/build/src/List.js.map +0 -1
  81. package/build/src/Profile.js.map +0 -1
  82. package/build/src/Relay.js.map +0 -1
  83. package/build/src/Tags.js.map +0 -1
  84. package/build/src/Zaps.js.map +0 -1
  85. package/build/src/index.js.map +0 -1
  86. package/build/tsconfig.tsbuildinfo +0 -1
  87. /package/{build → dist/util}/src/Address.js +0 -0
  88. /package/{build → dist/util}/src/Encryptable.js +0 -0
  89. /package/{build → dist/util}/src/Filters.js +0 -0
  90. /package/{build → dist/util}/src/Handler.js +0 -0
  91. /package/{build → dist/util}/src/Kinds.js +0 -0
  92. /package/{build → dist/util}/src/Links.js +0 -0
  93. /package/{build → dist/util}/src/List.js +0 -0
  94. /package/{build → dist/util}/src/Profile.js +0 -0
  95. /package/{build → dist/util}/src/Relay.js +0 -0
  96. /package/{build → dist/util}/src/Tags.js +0 -0
  97. /package/{build → dist/util}/src/Zaps.js +0 -0
  98. /package/{build → dist/util}/src/index.js +0 -0
@@ -0,0 +1,630 @@
1
+ type Obj<T = any> = Record<string, T>;
2
+ /** Function that does nothing and returns undefined */
3
+ export declare const noop: (...args: unknown[]) => undefined;
4
+ /**
5
+ * Returns the input value unchanged
6
+ * @param x - Any value
7
+ * @returns The same value
8
+ */
9
+ export declare const identity: <T>(x: T, ...args: unknown[]) => T;
10
+ /**
11
+ * Creates a function that always returns the same value
12
+ * @param x - Value to return
13
+ * @returns Function that returns x
14
+ */
15
+ export declare const always: <T>(x: T, ...args: unknown[]) => () => T;
16
+ /**
17
+ * Returns the logical NOT of a value
18
+ * @param x - Value to negate
19
+ * @returns !x
20
+ */
21
+ export declare const not: (x: any, ...args: unknown[]) => boolean;
22
+ /**
23
+ * Deep equality comparison
24
+ * @param a - First value
25
+ * @param b - Second value
26
+ * @returns True if values are deeply equal
27
+ */
28
+ export declare const equals: (a: any, b: any) => boolean;
29
+ /** Converts string or number to number */
30
+ export declare const ensureNumber: (x: number | string) => number;
31
+ /** Converts a `number | undefined` to a number, defaulting to 0 */
32
+ export declare const num: (x: number | undefined) => number;
33
+ /** Adds two numbers, handling undefined values */
34
+ export declare const add: (x: number | undefined, y: number | undefined) => number;
35
+ /** Subtracts two numbers, handling undefined values */
36
+ export declare const sub: (x: number | undefined, y: number | undefined) => number;
37
+ /** Multiplies two numbers, handling undefined values */
38
+ export declare const mul: (x: number | undefined, y: number | undefined) => number;
39
+ /** Divides two numbers, handling undefined values */
40
+ export declare const div: (x: number | undefined, y: number) => number;
41
+ /** Increments a number by 1, handling undefined values */
42
+ export declare const inc: (x: number | undefined) => number;
43
+ /** Decrements a number by 1, handling undefined values */
44
+ export declare const dec: (x: number | undefined) => number;
45
+ /** Less than comparison, handling undefined values */
46
+ export declare const lt: (x: number | undefined, y: number | undefined) => boolean;
47
+ /** Less than or equal comparison, handling undefined values */
48
+ export declare const lte: (x: number | undefined, y: number | undefined) => boolean;
49
+ /** Greater than comparison, handling undefined values */
50
+ export declare const gt: (x: number | undefined, y: number | undefined) => boolean;
51
+ /** Greater than or equal comparison, handling undefined values */
52
+ export declare const gte: (x: number | undefined, y: number | undefined) => boolean;
53
+ /** Returns maximum value in array, handling undefined values */
54
+ export declare const max: (xs: (number | undefined)[]) => number;
55
+ /** Returns minimum value in array, handling undefined values */
56
+ export declare const min: (xs: (number | undefined)[]) => number;
57
+ /** Returns sum of array values, handling undefined values */
58
+ export declare const sum: (xs: (number | undefined)[]) => number;
59
+ /** Returns average of array values, handling undefined values */
60
+ export declare const avg: (xs: (number | undefined)[]) => number;
61
+ /**
62
+ * Checks if a number is between two values (exclusive)
63
+ * @param bounds - Lower and upper bounds
64
+ * @param n - Number to check
65
+ * @returns True if n is between low and high
66
+ */
67
+ export declare const between: ([low, high]: [number, number], n: number) => boolean;
68
+ /**
69
+ * Checks if a number is between two values (inclusive)
70
+ * @param bounds - Lower and upper bounds
71
+ * @param n - Number to check
72
+ * @returns True if n is between low and high
73
+ */
74
+ export declare const within: ([low, high]: [number, number], n: number) => boolean;
75
+ /**
76
+ * Constrains number between min and max values
77
+ * @param bounds - Minimum and maximum allowed values
78
+ * @param n - Number to clamp
79
+ * @returns Clamped value
80
+ */
81
+ export declare const clamp: ([min, max]: [number, number], n: number) => number;
82
+ /**
83
+ * Round a number to the nearest float precision
84
+ * @param precision - Number of decimal places
85
+ * @param x - Number to round
86
+ * @returns Formatted number
87
+ */
88
+ export declare const round: (precision: number, x: number) => number;
89
+ /** One minute in seconds */
90
+ export declare const MINUTE = 60;
91
+ /** One hour in seconds */
92
+ export declare const HOUR: number;
93
+ /** One day in seconds */
94
+ export declare const DAY: number;
95
+ /** One week in seconds */
96
+ export declare const WEEK: number;
97
+ /** One month in seconds (approximate) */
98
+ export declare const MONTH: number;
99
+ /** One quarter in seconds (approximate) */
100
+ export declare const QUARTER: number;
101
+ /** One year in seconds (approximate) */
102
+ export declare const YEAR: number;
103
+ /**
104
+ * Multiplies time unit by count
105
+ * @param unit - Time unit in seconds
106
+ * @param count - Number of units
107
+ * @returns Total seconds
108
+ */
109
+ export declare const int: (unit: number, count?: number) => number;
110
+ /** Returns current Unix timestamp in seconds */
111
+ export declare const now: () => number;
112
+ /**
113
+ * Returns Unix timestamp from specified time ago
114
+ * @param unit - Time unit in seconds
115
+ * @param count - Number of units
116
+ * @returns Timestamp in seconds
117
+ */
118
+ export declare const ago: (unit: number, count?: number) => number;
119
+ /**
120
+ * Converts seconds to milliseconds
121
+ * @param seconds - Time in seconds
122
+ * @returns Time in milliseconds
123
+ */
124
+ export declare const ms: (seconds: number) => number;
125
+ /**
126
+ * Returns the first element of an array
127
+ * @param xs - The array
128
+ * @returns First element or undefined
129
+ */
130
+ export declare const first: <T>(xs: Iterable<T>, ...args: unknown[]) => T | undefined;
131
+ /**
132
+ * Returns the first element of the first array in a nested array
133
+ * @param xs - Array of arrays
134
+ * @returns First element of first array or undefined
135
+ */
136
+ export declare const ffirst: <T>(xs: Iterable<Iterable<T>>, ...args: unknown[]) => T | undefined;
137
+ /**
138
+ * Returns the last element of an array
139
+ * @param xs - The array
140
+ * @returns Last element or undefined
141
+ */
142
+ export declare const last: <T>(xs: Iterable<T>, ...args: unknown[]) => T;
143
+ /**
144
+ * Returns array with first n elements removed
145
+ * @param n - Number of elements to drop
146
+ * @param xs - Input array
147
+ * @returns Array with first n elements removed
148
+ */
149
+ export declare const drop: <T>(n: number, xs: Iterable<T>) => T[];
150
+ /**
151
+ * Returns first n elements of array
152
+ * @param n - Number of elements to take
153
+ * @param xs - Input array
154
+ * @returns Array of first n elements
155
+ */
156
+ export declare const take: <T>(n: number, xs: Iterable<T>) => T[];
157
+ /**
158
+ * Concatenates multiple arrays, filtering out null/undefined
159
+ * @param xs - Arrays to concatenate
160
+ * @returns Combined array
161
+ */
162
+ export declare const concat: <T>(...xs: T[][]) => T[];
163
+ /**
164
+ * Appends element to array
165
+ * @param x - Element to append
166
+ * @param xs - Array to append to
167
+ * @returns New array with element appended
168
+ */
169
+ export declare const append: <T>(x: T, xs: T[]) => T[];
170
+ /**
171
+ * Creates union of two arrays
172
+ * @param a - First array
173
+ * @param b - Second array
174
+ * @returns Array containing unique elements from both arrays
175
+ */
176
+ export declare const union: <T>(a: T[], b: T[]) => T[];
177
+ /**
178
+ * Returns elements common to both arrays
179
+ * @param a - First array
180
+ * @param b - Second array
181
+ * @returns Array of elements present in both inputs
182
+ */
183
+ export declare const intersection: <T>(a: T[], b: T[]) => T[];
184
+ /**
185
+ * Returns elements in first array not present in second
186
+ * @param a - Source array
187
+ * @param b - Array of elements to exclude
188
+ * @returns Array containing elements unique to first array
189
+ */
190
+ export declare const difference: <T>(a: T[], b: T[]) => T[];
191
+ /**
192
+ * Removes all instances of an element from array
193
+ * @param a - Element to remove
194
+ * @param xs - Source array
195
+ * @returns New array with element removed
196
+ */
197
+ export declare const remove: <T>(a: T, xs: T[]) => T[];
198
+ /**
199
+ * Returns elements from second array not present in first
200
+ * @param a - Array of elements to exclude
201
+ * @param b - Source array
202
+ * @returns Filtered array
203
+ */
204
+ export declare const without: <T>(a: T[], b: T[]) => T[];
205
+ /**
206
+ * Toggles presence of element in array
207
+ * @param x - Element to toggle
208
+ * @param xs - Source array
209
+ * @returns New array with element added or removed
210
+ */
211
+ export declare const toggle: <T>(x: T, xs: T[]) => T[];
212
+ /**
213
+ * Generates sequence of numbers from a to b
214
+ * @param a - Start number (inclusive)
215
+ * @param b - End number (exclusive)
216
+ * @param step - Increment between numbers
217
+ * @yields Numbers in sequence
218
+ */
219
+ export declare function range(a: number, b: number, step?: number): Generator<number, void, unknown>;
220
+ /**
221
+ * Yields indexed items
222
+ * @param items - A collection of items
223
+ * @yields tuples of [index, item]
224
+ */
225
+ export declare function enumerate<T>(items: T[]): Generator<[number, T], void, unknown>;
226
+ /** Returns a function that gets property value from object */
227
+ export declare const pluck: <T>(k: string, xs: Record<string, unknown>[]) => T[];
228
+ /**
229
+ * Creates object from array of key-value pairs
230
+ * @param pairs - Array of [key, value] tuples
231
+ * @returns Object with keys and values from pairs
232
+ */
233
+ export declare const fromPairs: <T>(pairs: [k?: string, v?: T, ...args: unknown[]][]) => Record<string, T>;
234
+ /**
235
+ * Flattens array of arrays into single array
236
+ * @param xs - Array of arrays to flatten
237
+ * @returns Flattened array
238
+ */
239
+ export declare const flatten: <T>(xs: T[][]) => T[];
240
+ /**
241
+ * Splits array into two arrays based on predicate
242
+ * @param f - Function to test elements
243
+ * @param xs - Array to partition
244
+ * @returns Tuple of [matching, non-matching] arrays
245
+ */
246
+ export declare const partition: <T>(f: (x: T) => boolean, xs: T[]) => T[][];
247
+ /**
248
+ * Returns array with duplicate elements removed
249
+ * @param xs - Array with possible duplicates
250
+ * @returns Array with unique elements
251
+ */
252
+ export declare const uniq: <T>(xs: T[]) => T[];
253
+ /**
254
+ * Returns array with elements unique by key function
255
+ * @param f - Function to generate key for each element
256
+ * @param xs - Input array
257
+ * @returns Array with elements unique by key
258
+ */
259
+ export declare const uniqBy: <T>(f: (x: T) => any, xs: T[]) => T[];
260
+ /**
261
+ * Returns sorted copy of array
262
+ * @param xs - Array to sort
263
+ * @returns New sorted array
264
+ */
265
+ export declare const sort: <T>(xs: T[]) => T[];
266
+ /**
267
+ * Returns array sorted by key function
268
+ * @param f - Function to generate sort key
269
+ * @param xs - Array to sort
270
+ * @returns Sorted array
271
+ */
272
+ export declare const sortBy: <T>(f: (x: T) => any, xs: T[]) => T[];
273
+ /**
274
+ * Groups array elements by key function
275
+ * @param f - Function to generate group key
276
+ * @param xs - Array to group
277
+ * @returns Map of groups
278
+ */
279
+ export declare const groupBy: <T, K>(f: (x: T) => K, xs: T[]) => Map<K, T[]>;
280
+ /**
281
+ * Creates map from array using key function
282
+ * @param f - Function to generate key
283
+ * @param xs - Array to index
284
+ * @returns Map of values by key
285
+ */
286
+ export declare const indexBy: <T, K>(f: (x: T) => K, xs: T[]) => Map<K, T>;
287
+ /**
288
+ * Creates array of specified length using generator function
289
+ * @param n - Length of array
290
+ * @param f - Function to generate each element
291
+ * @returns Generated array
292
+ */
293
+ export declare const initArray: <T>(n: number, f: () => T) => T[];
294
+ /**
295
+ * Splits array into chunks of specified length
296
+ * @param chunkLength - Maximum length of each chunk
297
+ * @param xs - Array to split
298
+ * @returns Array of chunks
299
+ */
300
+ export declare const chunk: <T>(chunkLength: number, xs: T[]) => T[][];
301
+ /**
302
+ * Splits array into specified number of chunks
303
+ * @param n - Number of chunks
304
+ * @param xs - Array to split
305
+ * @returns Array of n chunks
306
+ */
307
+ export declare const chunks: <T>(n: number, xs: T[]) => T[][];
308
+ /** Splits array into two parts at index */
309
+ export declare const splitAt: <T>(n: number, xs: T[]) => T[][];
310
+ /** Inserts element into array at index */
311
+ export declare const insert: <T>(n: number, x: T, xs: T[]) => T[];
312
+ /** Returns random element from array */
313
+ export declare const choice: <T>(xs: T[]) => T;
314
+ /** Returns shuffled copy of iterable */
315
+ export declare const shuffle: <T>(xs: Iterable<T>) => T[];
316
+ /** Returns n random elements from array */
317
+ export declare const sample: <T>(n: number, xs: T[]) => T[];
318
+ /** Checks if value is iterable */
319
+ export declare const isIterable: (x: any) => boolean;
320
+ /** Ensures value is iterable by wrapping in array if needed */
321
+ export declare const toIterable: (x: any) => any;
322
+ /** Ensures value is array by wrapping if needed */
323
+ export declare const ensurePlural: <T>(x: T | T[]) => T[];
324
+ /**
325
+ * Checks if value is a plain object
326
+ * @param obj - Value to check
327
+ * @returns True if value is a plain object
328
+ */
329
+ export declare const isPojo: (obj: any) => boolean;
330
+ /**
331
+ * Creates new object with only specified keys
332
+ * @param ks - Keys to keep
333
+ * @param x - Source object
334
+ * @returns New object with only specified keys
335
+ */
336
+ export declare const pick: <T extends Obj>(ks: string[], x: T) => T;
337
+ /**
338
+ * Creates new object with specified keys removed
339
+ * @param ks - Keys to remove
340
+ * @param x - Source object
341
+ * @returns New object without specified keys
342
+ */
343
+ export declare const omit: <T extends Obj>(ks: string[], x: T) => T;
344
+ /**
345
+ * Creates new object excluding entries with specified values
346
+ * @param xs - Values to exclude
347
+ * @param x - Source object
348
+ * @returns New object without entries containing specified values
349
+ */
350
+ export declare const omitVals: <T extends Obj>(xs: any[], x: T) => T;
351
+ /**
352
+ * Filters object values based on predicate
353
+ * @param f - Function to test values
354
+ * @param x - Object to filter
355
+ * @returns Object with only values that pass predicate
356
+ */
357
+ export declare const filterVals: <T extends Record<string, any>>(f: (v: any) => boolean, x: T) => T;
358
+ /**
359
+ * Creates new object with transformed keys
360
+ * @param f - Function to transform keys
361
+ * @param x - Source object
362
+ * @returns Object with transformed keys
363
+ */
364
+ export declare const mapKeys: <T extends Obj>(f: (v: string) => string, x: T) => T;
365
+ /**
366
+ * Creates new object with transformed values
367
+ * @param f - Function to transform values
368
+ * @param x - Source object
369
+ * @returns Object with transformed values
370
+ */
371
+ export declare const mapVals: <V, U>(f: (v: V) => U, x: Record<string, V>) => Record<string, U>;
372
+ /**
373
+ * Merges two objects, with left object taking precedence
374
+ * @param a - Left object
375
+ * @param b - Right object
376
+ * @returns Merged object with a"s properties overriding b"s
377
+ */
378
+ export declare const mergeLeft: <T extends Obj>(a: T, b: T) => T;
379
+ /**
380
+ * Merges two objects, with right object taking precedence
381
+ * @param a - Left object
382
+ * @param b - Right object
383
+ * @returns Merged object with b"s properties overriding a"s
384
+ */
385
+ export declare const mergeRight: <T extends Obj>(a: T, b: T) => T;
386
+ /** Deep merge two objects, prioritizing the first argument. */
387
+ export declare const deepMergeLeft: (a: Obj, b: Obj) => Obj<any>;
388
+ /** Deep merge two objects, prioritizing the second argument. */
389
+ export declare const deepMergeRight: (a: Obj, b: Obj) => Obj<any>;
390
+ /**
391
+ * Switches on key in object, with default fallback
392
+ * @param k - Key to look up
393
+ * @param m - Object with values and optional default
394
+ * @returns Value at key or default value
395
+ */
396
+ export declare const switcher: <T>(k: string, m: Record<string, T>) => T;
397
+ /** Returns a function that returns the boolean negation of the given function */
398
+ export declare const complement: <T extends unknown[]>(f: (...args: T) => any) => (...args: T) => boolean;
399
+ /**
400
+ * Safely executes function and handles errors
401
+ * @param f - Function to execute
402
+ * @param onError - Optional error handler
403
+ * @returns Function result or undefined if error
404
+ */
405
+ export declare const tryCatch: <T>(f: () => T, onError?: (e: Error) => void) => T | undefined;
406
+ /**
407
+ * Creates function that only executes once
408
+ * @param f - Function to wrap
409
+ * @returns Function that executes f only on first call
410
+ */
411
+ export declare const once: (f: (...args: any) => void) => (...args: any) => void;
412
+ /**
413
+ * Calls a function
414
+ * @param f - Function to call
415
+ * @returns Whatever f returns
416
+ */
417
+ export declare const call: <T>(f: () => T, ...args: unknown[]) => T;
418
+ /**
419
+ * Memoizes function results based on arguments
420
+ * @param f - Function to memoize
421
+ * @returns Memoized function
422
+ */
423
+ export declare const memoize: <T>(f: (...args: any[]) => T) => (...args: any[]) => T;
424
+ /**
425
+ * Executes a function if the value is defined
426
+ * @param x - The value to check
427
+ * @param f - Function to execute if x is defined
428
+ * @returns Result of f(x) if x is defined, undefined otherwise
429
+ */
430
+ export declare const ifLet: <T>(x: T | undefined, f: (x: T) => void) => void;
431
+ /**
432
+ * Generates random integer between min and max (inclusive)
433
+ * @param min - Minimum value
434
+ * @param max - Maximum value
435
+ * @returns Random integer
436
+ */
437
+ export declare const randomInt: (min?: number, max?: number) => number;
438
+ /**
439
+ * Generates random string ID
440
+ * @returns Random string suitable for use as an ID
441
+ */
442
+ export declare const randomId: () => string;
443
+ /**
444
+ * Creates a promise that resolves after specified time
445
+ * @param t - Time in milliseconds
446
+ * @returns Promise that resolves after t milliseconds
447
+ */
448
+ export declare const sleep: (t: number) => Promise<unknown>;
449
+ /**
450
+ * Creates a microtask that yields to other tasks in the event loop
451
+ * @returns Promise that resolves after yielding
452
+ */
453
+ export declare const yieldThread: () => any;
454
+ /**
455
+ * Creates throttled version of function
456
+ * @param ms - Minimum time between calls
457
+ * @param f - Function to throttle
458
+ * @returns Throttled function
459
+ */
460
+ export declare const throttle: <F extends (...args: any[]) => any>(ms: number, f: F) => F | ((...thisArgs: Parameters<F>) => void);
461
+ /**
462
+ * Creates throttled function that returns cached value
463
+ * @param ms - Minimum time between updates
464
+ * @param f - Function to throttle
465
+ * @returns Function returning latest value
466
+ */
467
+ export declare const throttleWithValue: <T>(ms: number, f: () => T) => () => T;
468
+ /**
469
+ * Creates batching function that collects items
470
+ * this function does not delay execution, if a series of items is passed in sequence
471
+ * the first item will be processed immediately, and the rest will be batched
472
+ * @param t - Time window for batching
473
+ * @param f - Function to process batch
474
+ * @returns Function that adds items to batch
475
+ */
476
+ export declare const batch: <T>(t: number, f: (xs: T[]) => void) => (x: T) => void;
477
+ /**
478
+ * Creates batching function that returns results
479
+ * @param t - Time window for batching
480
+ * @param execute - Function to process batch
481
+ * @returns Function that returns promise of result
482
+ */
483
+ export declare const batcher: <T, U>(t: number, execute: (request: T[]) => U[] | Promise<U[]>) => (request: T) => Promise<U>;
484
+ /**
485
+ * Removes protocol (http://, https://, etc) from URL
486
+ * @param url - URL to process
487
+ * @returns URL without protocol
488
+ */
489
+ export declare const stripProtocol: (url: string) => string;
490
+ /**
491
+ * Formats URL for display by removing protocol, www, and trailing slash
492
+ * @param url - URL to format
493
+ * @returns Formatted URL
494
+ */
495
+ export declare const displayUrl: (url: string) => string;
496
+ /**
497
+ * Extracts and formats domain from URL
498
+ * @param url - URL to process
499
+ * @returns Formatted domain name
500
+ */
501
+ export declare const displayDomain: (url: string) => string;
502
+ /**
503
+ * Safely parses JSON string
504
+ * @param json - JSON string to parse
505
+ * @returns Parsed object or null if invalid
506
+ */
507
+ export declare const parseJson: (json: string | undefined) => any;
508
+ /**
509
+ * Gets and parses JSON from localStorage
510
+ * @param k - Storage key
511
+ * @returns Parsed value or undefined if invalid/missing
512
+ */
513
+ export declare const getJson: (k: string) => any;
514
+ /**
515
+ * Stringifies and stores value in localStorage
516
+ * @param k - Storage key
517
+ * @param v - Value to store
518
+ */
519
+ export declare const setJson: (k: string, v: any) => void;
520
+ /** Options for fetch requests */
521
+ type FetchOpts = {
522
+ method?: string;
523
+ headers?: Record<string, string | boolean>;
524
+ body?: string | FormData;
525
+ };
526
+ /**
527
+ * Fetches JSON from URL with options
528
+ * @param url - URL to fetch from
529
+ * @param opts - Fetch options
530
+ * @returns Promise of parsed JSON response
531
+ */
532
+ export declare const fetchJson: (url: string, opts?: FetchOpts) => Promise<any>;
533
+ /**
534
+ * Posts JSON data to URL
535
+ * @param url - URL to post to
536
+ * @param data - Data to send
537
+ * @param opts - Additional fetch options
538
+ * @returns Promise of parsed JSON response
539
+ */
540
+ export declare const postJson: <T>(url: string, data: T, opts?: FetchOpts) => Promise<any>;
541
+ /**
542
+ * Uploads file to URL
543
+ * @param url - Upload URL
544
+ * @param file - File to upload
545
+ * @returns Promise of parsed JSON response
546
+ */
547
+ export declare const uploadFile: (url: string, file: File) => Promise<any>;
548
+ /**
549
+ * A generic type-safe event listener function that works with event emitters.
550
+ *
551
+ * @param target - The event target object with add/remove listener methods
552
+ * @param eventName - The name of the event to listen for
553
+ * @param callback - The callback function to execute when the event occurs
554
+ * @returns A function that removes the event listener when called
555
+ */
556
+ export declare const on: <EventMap extends Record<string | symbol, any[]>, E extends keyof EventMap>(target: {
557
+ on(event: E, listener: (...args: EventMap[E]) => any): any;
558
+ off(event: E, listener: (...args: EventMap[E]) => any): any;
559
+ }, eventName: E, callback: (...args: EventMap[E]) => void) => (() => void);
560
+ /**
561
+ * Truncates string to length, breaking at word boundaries
562
+ * @param s - String to truncate
563
+ * @param l - Maximum length
564
+ * @param suffix - String to append if truncated
565
+ * @returns Truncated string
566
+ */
567
+ export declare const ellipsize: (s: string, l: number, suffix?: string) => string;
568
+ /** Generates a hash string from input string */
569
+ export declare const hash: (s: string) => string;
570
+ /** Returns a function that gets the nth element of an array */
571
+ export declare const nth: (i: number) => <T>(xs: T[], ...args: unknown[]) => T;
572
+ /** Returns a function that checks if nth element equals value */
573
+ export declare const nthEq: (i: number, v: any) => (xs: any[], ...args: unknown[]) => boolean;
574
+ /** Returns a function that checks if nth element does not equal value */
575
+ export declare const nthNe: (i: number, v: any) => (xs: any[], ...args: unknown[]) => boolean;
576
+ /** Returns a function that checks if key/value pairs of x match all pairs in spec */
577
+ export declare const spec: (values: Obj | Array<any>) => (x: Obj | Array<any>, ...args: unknown[]) => boolean;
578
+ /** Returns a function that checks equality with value */
579
+ export declare const eq: <T>(v: T) => (x: T) => boolean;
580
+ /** Returns a function that checks inequality with value */
581
+ export declare const ne: <T>(v: T) => (x: T) => boolean;
582
+ /** Returns a function that gets property value from object */
583
+ export declare const prop: <T>(k: string) => (x: Record<string, unknown>) => T;
584
+ /** Returns a function that adds/updates a property on object */
585
+ export declare const assoc: <K extends string, T, U>(k: K, v: T) => (o: U) => U & Record<K, T>;
586
+ /** Returns a function that removes a property on object */
587
+ export declare const dissoc: <K extends string, T extends Obj>(k: K) => (o: T) => T;
588
+ /**
589
+ * Adds value to Set at key in object
590
+ * @param m - Object mapping keys to Sets
591
+ * @param k - Key to add to
592
+ * @param v - Value to add
593
+ */
594
+ export declare const addToKey: <T>(m: Record<string, Set<T>>, k: string, v: T) => void;
595
+ /**
596
+ * Pushes value to array at key in object
597
+ * @param m - Object mapping keys to arrays
598
+ * @param k - Key to push to
599
+ * @param v - Value to push
600
+ */
601
+ export declare const pushToKey: <T>(m: Record<string, T[]>, k: string, v: T) => void;
602
+ /**
603
+ * Adds value to Set at key in Map
604
+ * @param m - Map of Sets
605
+ * @param k - Key to add to
606
+ * @param v - Value to add
607
+ */
608
+ export declare const addToMapKey: <K, T>(m: Map<K, Set<T>>, k: K, v: T) => void;
609
+ /**
610
+ * Pushes value to array at key in Map
611
+ * @param m - Map of arrays
612
+ * @param k - Key to push to
613
+ * @param v - Value to push
614
+ */
615
+ export declare const pushToMapKey: <K, T>(m: Map<K, T[]>, k: K, v: T) => void;
616
+ /**
617
+ * Converts hex string to bech32 format
618
+ * @param prefix - Bech32 prefix
619
+ * @param hex - Hex string to convert
620
+ * @returns Bech32 encoded string
621
+ */
622
+ export declare const hexToBech32: (prefix: string, hex: string) => `${Lowercase<string>}1${string}`;
623
+ /**
624
+ * Converts bech32 string to hex format
625
+ * @param b32 - Bech32 string to convert
626
+ * @returns Hex encoded string
627
+ */
628
+ export declare const bech32ToHex: (b32: string) => string;
629
+ export {};
630
+ //# sourceMappingURL=Tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tools.d.ts","sourceRoot":"","sources":["../../../../lib/src/Tools.ts"],"names":[],"mappings":"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"}