@hairy/utils 1.49.0 → 1.50.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/{LICENSE.md → LICENSE} +1 -1
- package/README.md +673 -21
- package/dist/index.cjs +83 -62
- package/dist/index.d.cts +23 -23
- package/dist/index.d.mts +23 -23
- package/dist/index.mjs +83 -63
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6516,6 +6516,7 @@ const noop = () => {};
|
|
|
6516
6516
|
* ```ts
|
|
6517
6517
|
* const deferred = new Deferred()
|
|
6518
6518
|
* deferred.resolve('value')
|
|
6519
|
+
* ```
|
|
6519
6520
|
*/
|
|
6520
6521
|
var Deferred = class extends Promise {
|
|
6521
6522
|
resolve;
|
|
@@ -6547,11 +6548,84 @@ var Deferred = class extends Promise {
|
|
|
6547
6548
|
* @example
|
|
6548
6549
|
* ```ts
|
|
6549
6550
|
* delay(1000).then(() => { console.log('1 second') })
|
|
6551
|
+
* ```
|
|
6550
6552
|
*/
|
|
6551
6553
|
function delay(ms) {
|
|
6552
6554
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
6553
6555
|
}
|
|
6554
6556
|
|
|
6557
|
+
//#endregion
|
|
6558
|
+
//#region src/util/proxy.ts
|
|
6559
|
+
/**
|
|
6560
|
+
* Creates a proxy object that updates the original object when the proxy is updated.
|
|
6561
|
+
* @param initObject - The initial object to proxy.
|
|
6562
|
+
* @returns The proxy object.
|
|
6563
|
+
*
|
|
6564
|
+
* @example
|
|
6565
|
+
* ```ts
|
|
6566
|
+
* const obj = proxy({ name: 'John' })
|
|
6567
|
+
* console.log(obj.name) // John
|
|
6568
|
+
*
|
|
6569
|
+
* obj.proxy.update({ name: 'Jane' })
|
|
6570
|
+
* console.log(obj.name) // Jane
|
|
6571
|
+
*
|
|
6572
|
+
* const obj2 = proxy()
|
|
6573
|
+
*
|
|
6574
|
+
* obj2.any // Error: Proxy not updated. Call object.proxy.update() to update the proxy.
|
|
6575
|
+
*
|
|
6576
|
+
* obj2.proxy.source // undefined
|
|
6577
|
+
* obj2.update({ name: 'John' })
|
|
6578
|
+
*
|
|
6579
|
+
* // get the original object
|
|
6580
|
+
* obj2.proxy.source // { name: 'John' }
|
|
6581
|
+
* ```
|
|
6582
|
+
*/
|
|
6583
|
+
function proxy(initObject, initExtend, options) {
|
|
6584
|
+
initObject && Reflect.set(initObject, "__proxy_updated", true);
|
|
6585
|
+
let target = initObject || { __proxy_updated: false };
|
|
6586
|
+
const extended = initExtend || {};
|
|
6587
|
+
const proxy = {
|
|
6588
|
+
update(object) {
|
|
6589
|
+
if (!object) {
|
|
6590
|
+
target = void 0;
|
|
6591
|
+
return;
|
|
6592
|
+
}
|
|
6593
|
+
Reflect.set(object, "__proxy_updated", true);
|
|
6594
|
+
target = object;
|
|
6595
|
+
},
|
|
6596
|
+
get source() {
|
|
6597
|
+
return Reflect.get(target, "__proxy_updated") ? target : void 0;
|
|
6598
|
+
},
|
|
6599
|
+
get extend() {
|
|
6600
|
+
return extended;
|
|
6601
|
+
},
|
|
6602
|
+
strictMessage: options?.strictMessage || "Proxy not updated. Call object.proxy.update() to update the proxy."
|
|
6603
|
+
};
|
|
6604
|
+
return new Proxy({}, {
|
|
6605
|
+
get: (_, p) => {
|
|
6606
|
+
if (p === "proxy") return proxy;
|
|
6607
|
+
if (p in extended) return Reflect.get(extended, p);
|
|
6608
|
+
if (!Reflect.get(target, "__proxy_updated")) throw new Error(proxy.strictMessage);
|
|
6609
|
+
return typeof target?.[p] === "function" ? target?.[p].bind(target) : target?.[p];
|
|
6610
|
+
},
|
|
6611
|
+
set: (_, p, v) => {
|
|
6612
|
+
if (p in extended) return Reflect.set(extended, p, v);
|
|
6613
|
+
target[p] = v;
|
|
6614
|
+
return true;
|
|
6615
|
+
}
|
|
6616
|
+
});
|
|
6617
|
+
}
|
|
6618
|
+
|
|
6619
|
+
//#endregion
|
|
6620
|
+
//#region src/util/ghost.ts
|
|
6621
|
+
function ghost(strictMessage) {
|
|
6622
|
+
const placeholder = proxy(void 0, {
|
|
6623
|
+
enable: false,
|
|
6624
|
+
resolve: (value) => placeholder.proxy.update(value)
|
|
6625
|
+
}, { strictMessage: strictMessage || "Object is not enabled. Call ghost.resolve(value) to enable the object." });
|
|
6626
|
+
return placeholder;
|
|
6627
|
+
}
|
|
6628
|
+
|
|
6555
6629
|
//#endregion
|
|
6556
6630
|
//#region src/util/json.ts
|
|
6557
6631
|
function tryParseJson(text) {
|
|
@@ -6633,68 +6707,6 @@ function pipe(...fns) {
|
|
|
6633
6707
|
}
|
|
6634
6708
|
pipe.promise = pPipe;
|
|
6635
6709
|
|
|
6636
|
-
//#endregion
|
|
6637
|
-
//#region src/util/proxy.ts
|
|
6638
|
-
/**
|
|
6639
|
-
* Creates a proxy object that updates the original object when the proxy is updated.
|
|
6640
|
-
* @param initObject - The initial object to proxy.
|
|
6641
|
-
* @returns The proxy object.
|
|
6642
|
-
*
|
|
6643
|
-
* @example
|
|
6644
|
-
* ```ts
|
|
6645
|
-
* const obj = proxy({ name: 'John' })
|
|
6646
|
-
* console.log(obj.name) // John
|
|
6647
|
-
*
|
|
6648
|
-
* obj.proxy.update({ name: 'Jane' })
|
|
6649
|
-
* console.log(obj.name) // Jane
|
|
6650
|
-
*
|
|
6651
|
-
* const obj2 = proxy()
|
|
6652
|
-
*
|
|
6653
|
-
* obj2.any // Error: Proxy not updated. Call object.proxy.update() to update the proxy.
|
|
6654
|
-
*
|
|
6655
|
-
* obj2.proxy.source // undefined
|
|
6656
|
-
* obj2.update({ name: 'John' })
|
|
6657
|
-
*
|
|
6658
|
-
* // get the original object
|
|
6659
|
-
* obj2.proxy.source // { name: 'John' }
|
|
6660
|
-
* ```
|
|
6661
|
-
*/
|
|
6662
|
-
function proxy(initObject, initExtend, options) {
|
|
6663
|
-
initObject && Reflect.set(initObject, "__proxy_updated", true);
|
|
6664
|
-
let target = initObject || { __proxy_updated: false };
|
|
6665
|
-
const extended = initExtend || {};
|
|
6666
|
-
const proxy = {
|
|
6667
|
-
update(object) {
|
|
6668
|
-
if (!object) {
|
|
6669
|
-
target = void 0;
|
|
6670
|
-
return;
|
|
6671
|
-
}
|
|
6672
|
-
Reflect.set(object, "__proxy_updated", true);
|
|
6673
|
-
target = object;
|
|
6674
|
-
},
|
|
6675
|
-
get source() {
|
|
6676
|
-
return Reflect.get(target, "__proxy_updated") ? target : void 0;
|
|
6677
|
-
},
|
|
6678
|
-
get extend() {
|
|
6679
|
-
return extended;
|
|
6680
|
-
},
|
|
6681
|
-
strictMessage: options?.strictMessage || "Proxy not updated. Call object.proxy.update() to update the proxy."
|
|
6682
|
-
};
|
|
6683
|
-
return new Proxy({}, {
|
|
6684
|
-
get: (_, p) => {
|
|
6685
|
-
if (p === "proxy") return proxy;
|
|
6686
|
-
if (p in extended) return Reflect.get(extended, p);
|
|
6687
|
-
if (!Reflect.get(target, "__proxy_updated")) throw new Error(proxy.strictMessage);
|
|
6688
|
-
return typeof target?.[p] === "function" ? target?.[p].bind(target) : target?.[p];
|
|
6689
|
-
},
|
|
6690
|
-
set: (_, p, v) => {
|
|
6691
|
-
if (p in extended) return Reflect.set(extended, p, v);
|
|
6692
|
-
target[p] = v;
|
|
6693
|
-
return true;
|
|
6694
|
-
}
|
|
6695
|
-
});
|
|
6696
|
-
}
|
|
6697
|
-
|
|
6698
6710
|
//#endregion
|
|
6699
6711
|
//#region src/util/random.ts
|
|
6700
6712
|
/**
|
|
@@ -6704,6 +6716,7 @@ function proxy(initObject, initExtend, options) {
|
|
|
6704
6716
|
* @example
|
|
6705
6717
|
* ```ts
|
|
6706
6718
|
* randomItem(['a', 'b', 'c']) // 'a' | 'b' | 'c'
|
|
6719
|
+
* ```
|
|
6707
6720
|
*/
|
|
6708
6721
|
function randomItem(array) {
|
|
6709
6722
|
return array[Math.floor(Math.random() * array.length)];
|
|
@@ -6716,6 +6729,7 @@ function randomItem(array) {
|
|
|
6716
6729
|
* @example
|
|
6717
6730
|
* ```ts
|
|
6718
6731
|
* randomNumber(0, 100) // 0-100
|
|
6732
|
+
* ```
|
|
6719
6733
|
*/
|
|
6720
6734
|
function randomNumber(min, max) {
|
|
6721
6735
|
return Math.random() * (max - min) + min;
|
|
@@ -6731,6 +6745,7 @@ const urlAlphabet = "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwy
|
|
|
6731
6745
|
* randomString() // 10 characters long
|
|
6732
6746
|
* randomString(20) // 20 characters long
|
|
6733
6747
|
* randomString(20, 'abcdefghijklmnopqrstuvwxyz') // 20 characters long
|
|
6748
|
+
* ```
|
|
6734
6749
|
*/
|
|
6735
6750
|
function randomString(size = 10, chars = urlAlphabet) {
|
|
6736
6751
|
let id = "";
|
|
@@ -6804,6 +6819,7 @@ function numberish(value) {
|
|
|
6804
6819
|
* ```ts
|
|
6805
6820
|
* to(Promise.resolve('data')) // Promise<[null, 'data']>
|
|
6806
6821
|
* to(Promise.reject(new Error('error'))) // Promise<[Error, undefined]>
|
|
6822
|
+
* ```
|
|
6807
6823
|
*/
|
|
6808
6824
|
async function to(promise, error) {
|
|
6809
6825
|
return (isFunction(promise) ? promise() : promise).then((data) => [null, data]).catch((err) => {
|
|
@@ -6823,6 +6839,7 @@ async function to(promise, error) {
|
|
|
6823
6839
|
* ```ts
|
|
6824
6840
|
* toArray(arrorOrItemOrUndefined) // item[] | undefined
|
|
6825
6841
|
* toArray(arrayOrItemOrUndefined, true) // item[]
|
|
6842
|
+
* ```
|
|
6826
6843
|
*/
|
|
6827
6844
|
function toArray(value, required = false) {
|
|
6828
6845
|
if (!value) return required === false ? void 0 : [];
|
|
@@ -6891,6 +6908,7 @@ const riposte = select;
|
|
|
6891
6908
|
* ```ts
|
|
6892
6909
|
* unwrap({ name: 'John' }) // { name: 'John' }
|
|
6893
6910
|
* unwrap(() => { return { name: 'John' } }) // { name: 'John' }
|
|
6911
|
+
* ```
|
|
6894
6912
|
*/
|
|
6895
6913
|
function unwrap(value) {
|
|
6896
6914
|
return typeof value === "function" ? value() : value;
|
|
@@ -6903,6 +6921,7 @@ function unwrap(value) {
|
|
|
6903
6921
|
* @example
|
|
6904
6922
|
* ```ts
|
|
6905
6923
|
* whenever(value, (value) => { return 'value' }) // value
|
|
6924
|
+
* ```
|
|
6906
6925
|
*/
|
|
6907
6926
|
function whenever(value, callback) {
|
|
6908
6927
|
return value ? callback(value) : void 0;
|
|
@@ -7157,6 +7176,7 @@ const _reFullWs = /^\s*$/;
|
|
|
7157
7176
|
* b()
|
|
7158
7177
|
* }
|
|
7159
7178
|
* `
|
|
7179
|
+
* ```
|
|
7160
7180
|
*/
|
|
7161
7181
|
function unindent(str) {
|
|
7162
7182
|
const lines = (typeof str === "string" ? str : str[0]).split("\n");
|
|
@@ -7208,6 +7228,7 @@ exports.find = find;
|
|
|
7208
7228
|
exports.formatNumeric = formatNumeric;
|
|
7209
7229
|
exports.formdataToObject = formdataToObject;
|
|
7210
7230
|
exports.get = get;
|
|
7231
|
+
exports.ghost = ghost;
|
|
7211
7232
|
exports.groupBy = groupBy;
|
|
7212
7233
|
exports.gt = gt;
|
|
7213
7234
|
exports.gte = gte;
|
package/dist/index.d.cts
CHANGED
|
@@ -223,28 +223,11 @@ declare const Bignumber: typeof _Bignumber;
|
|
|
223
223
|
*
|
|
224
224
|
* do not use Bignumber directly, use bignumber function instead
|
|
225
225
|
*/
|
|
226
|
-
declare const BIG_INTS: {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
};
|
|
232
|
-
b: {
|
|
233
|
-
v: number;
|
|
234
|
-
d: number;
|
|
235
|
-
n: string;
|
|
236
|
-
};
|
|
237
|
-
m: {
|
|
238
|
-
v: number;
|
|
239
|
-
d: number;
|
|
240
|
-
n: string;
|
|
241
|
-
};
|
|
242
|
-
k: {
|
|
243
|
-
v: number;
|
|
244
|
-
d: number;
|
|
245
|
-
n: string;
|
|
246
|
-
};
|
|
247
|
-
};
|
|
226
|
+
declare const BIG_INTS: Record<Delimiter, {
|
|
227
|
+
v: number;
|
|
228
|
+
d: number;
|
|
229
|
+
n: string;
|
|
230
|
+
}>;
|
|
248
231
|
type Delimiter = 'k' | 'm' | 'b' | 't';
|
|
249
232
|
interface DecimalOptions {
|
|
250
233
|
d?: number;
|
|
@@ -390,6 +373,7 @@ declare function template(str: string, ...args: (string | number | bigint | unde
|
|
|
390
373
|
* b()
|
|
391
374
|
* }
|
|
392
375
|
* `
|
|
376
|
+
* ```
|
|
393
377
|
*/
|
|
394
378
|
declare function unindent(str: TemplateStringsArray | string): string;
|
|
395
379
|
//#endregion
|
|
@@ -483,6 +467,7 @@ declare namespace compose {
|
|
|
483
467
|
* ```ts
|
|
484
468
|
* const deferred = new Deferred()
|
|
485
469
|
* deferred.resolve('value')
|
|
470
|
+
* ```
|
|
486
471
|
*/
|
|
487
472
|
declare class Deferred<T> extends Promise<T> {
|
|
488
473
|
resolve: (value?: T) => Deferred<T>;
|
|
@@ -498,9 +483,17 @@ declare class Deferred<T> extends Promise<T> {
|
|
|
498
483
|
* @example
|
|
499
484
|
* ```ts
|
|
500
485
|
* delay(1000).then(() => { console.log('1 second') })
|
|
486
|
+
* ```
|
|
501
487
|
*/
|
|
502
488
|
declare function delay(ms: number): Promise<void>;
|
|
503
489
|
//#endregion
|
|
490
|
+
//#region src/util/ghost.d.ts
|
|
491
|
+
type Ghost<T extends object> = T & {
|
|
492
|
+
enabled: boolean;
|
|
493
|
+
resolve: (value: T) => void;
|
|
494
|
+
};
|
|
495
|
+
declare function ghost<T extends object>(strictMessage?: string): Ghost<T>;
|
|
496
|
+
//#endregion
|
|
504
497
|
//#region src/util/json.d.ts
|
|
505
498
|
declare function tryParseJson<T = any>(text: string | undefined | null): T | undefined;
|
|
506
499
|
//#endregion
|
|
@@ -674,6 +667,7 @@ declare function proxy<T extends object, E extends object = {}>(initObject?: T,
|
|
|
674
667
|
* @example
|
|
675
668
|
* ```ts
|
|
676
669
|
* randomItem(['a', 'b', 'c']) // 'a' | 'b' | 'c'
|
|
670
|
+
* ```
|
|
677
671
|
*/
|
|
678
672
|
declare function randomItem<T>(array: T[]): T;
|
|
679
673
|
/**
|
|
@@ -684,6 +678,7 @@ declare function randomItem<T>(array: T[]): T;
|
|
|
684
678
|
* @example
|
|
685
679
|
* ```ts
|
|
686
680
|
* randomNumber(0, 100) // 0-100
|
|
681
|
+
* ```
|
|
687
682
|
*/
|
|
688
683
|
declare function randomNumber(min: number, max: number): number;
|
|
689
684
|
/**
|
|
@@ -696,6 +691,7 @@ declare function randomNumber(min: number, max: number): number;
|
|
|
696
691
|
* randomString() // 10 characters long
|
|
697
692
|
* randomString(20) // 20 characters long
|
|
698
693
|
* randomString(20, 'abcdefghijklmnopqrstuvwxyz') // 20 characters long
|
|
694
|
+
* ```
|
|
699
695
|
*/
|
|
700
696
|
declare function randomString(size?: number, chars?: string): string;
|
|
701
697
|
//#endregion
|
|
@@ -745,6 +741,7 @@ declare function numberish(value: Numberish): string;
|
|
|
745
741
|
* ```ts
|
|
746
742
|
* to(Promise.resolve('data')) // Promise<[null, 'data']>
|
|
747
743
|
* to(Promise.reject(new Error('error'))) // Promise<[Error, undefined]>
|
|
744
|
+
* ```
|
|
748
745
|
*/
|
|
749
746
|
declare function to<T, U = Error>(promise: Promise<T> | (() => Promise<T>), error?: object): Promise<[U, undefined] | [null, T]>;
|
|
750
747
|
//#endregion
|
|
@@ -758,6 +755,7 @@ declare function to<T, U = Error>(promise: Promise<T> | (() => Promise<T>), erro
|
|
|
758
755
|
* ```ts
|
|
759
756
|
* toArray(arrorOrItemOrUndefined) // item[] | undefined
|
|
760
757
|
* toArray(arrayOrItemOrUndefined, true) // item[]
|
|
758
|
+
* ```
|
|
761
759
|
*/
|
|
762
760
|
declare function toArray<T, R extends boolean>(value?: T | T[], required?: R): R extends true ? T[] : T[] | undefined;
|
|
763
761
|
//#endregion
|
|
@@ -806,6 +804,7 @@ declare const riposte: typeof select;
|
|
|
806
804
|
* ```ts
|
|
807
805
|
* unwrap({ name: 'John' }) // { name: 'John' }
|
|
808
806
|
* unwrap(() => { return { name: 'John' } }) // { name: 'John' }
|
|
807
|
+
* ```
|
|
809
808
|
*/
|
|
810
809
|
declare function unwrap<T extends object>(value: T | (() => T)): T;
|
|
811
810
|
/**
|
|
@@ -816,8 +815,9 @@ declare function unwrap<T extends object>(value: T | (() => T)): T;
|
|
|
816
815
|
* @example
|
|
817
816
|
* ```ts
|
|
818
817
|
* whenever(value, (value) => { return 'value' }) // value
|
|
818
|
+
* ```
|
|
819
819
|
*/
|
|
820
820
|
declare function whenever<T, C extends (value: Exclude<T, null | undefined>) => any>(value: T, callback: C): ReturnType<C> | undefined;
|
|
821
821
|
declare function call<T extends Fn<any>>(fn: T, ...args: Parameters<T>): ReturnType<T>;
|
|
822
822
|
//#endregion
|
|
823
|
-
export { AnyFn, ArgumentsType, Arrayable, Assign, Awaitable, BIG_INTS, Bignumber, BooleanLike, BrowserNativeObject, ConstructorType, DEFAULT_BIGNUM_CONFIG, DecimalOptions, DeepKeyof, DeepMap, DeepMerge, DeepPartial, DeepReadonly, DeepReplace, DeepRequired, Deferred, Delimiter, Dimension, DynamicObject, ElementOf, Fn, FormatGroupOptions, FormatNumericOptions, IfAny, IsAny, Key, Looper, MergeInsertions, NonUndefined, Noop, Nullable, NumberObject, Numberish, Numeric, NumericObject, OmitBy, OpenFilePickerOptions, OpenImagePickerOptions, Option, Overwrite, PickBy, PromiseFn, PromiseType, Promisify, Proxyed, ReaderType, StringObject, SymbolObject, arange, average, bignumber, call, camelCase, capitalCase, chunk, clone, cloneDeep, cloneDeepWith, cloneWith, compose, concat, constantCase, cover, debounce, decimal, delay, dialsPhone, divide, dotCase, downloadBlobFile, downloadNetworkFile, downloadUrlFile, ensurePrefix, ensureSuffix, find, formatNumeric, formdataToObject, get, groupBy, gt, gte, integer, isAndroid, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBrowser, isBuffer, isChrome, isDate, isEdge, isElement, isEmpty, isEqual, isEqualWith, isError, isFF, isFormData, isFunction, isIE, isIE11, isIE9, isIOS, isInteger, isMap, isMatch, isMatchWith, isMobile, isNaN, isNative, isNull, isNumber, isObject, isObjectLike, isPhantomJS, isPlainObject, isRegexp, isSet, isString, isSymbol, isTruthy, isUndefined, isWeakMap, isWeakSet, isWeex, isWindow, join, kebabCase, keyBy, keys, loop, lt, lte, max, maxBy, merge, mergeWith, min, minBy, multiply, noCase, nonnanable, noop, numberify, numberish, objectToFormdata, off, omit, omitBy, on, once, openFilePicker, openImagePicker, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pick, pickBy, pipe, plus, proxy, randomItem, randomNumber, randomString, range, readFileReader, redirectTo, riposte, select, selectImages, sentenceCase, set, shortenId, showOpenFilePicker, showOpenImagePicker, size, slash, snakeCase, stringify, template, to, toArray, trainCase, truncate, tryParseJson, unindent, uniq, uniqBy, uniqWith, unit, unwrap, values, whenever, zeroRemove, zerofill };
|
|
823
|
+
export { AnyFn, ArgumentsType, Arrayable, Assign, Awaitable, BIG_INTS, Bignumber, BooleanLike, BrowserNativeObject, ConstructorType, DEFAULT_BIGNUM_CONFIG, DecimalOptions, DeepKeyof, DeepMap, DeepMerge, DeepPartial, DeepReadonly, DeepReplace, DeepRequired, Deferred, Delimiter, Dimension, DynamicObject, ElementOf, Fn, FormatGroupOptions, FormatNumericOptions, Ghost, IfAny, IsAny, Key, Looper, MergeInsertions, NonUndefined, Noop, Nullable, NumberObject, Numberish, Numeric, NumericObject, OmitBy, OpenFilePickerOptions, OpenImagePickerOptions, Option, Overwrite, PickBy, PromiseFn, PromiseType, Promisify, Proxyed, ReaderType, StringObject, SymbolObject, arange, average, bignumber, call, camelCase, capitalCase, chunk, clone, cloneDeep, cloneDeepWith, cloneWith, compose, concat, constantCase, cover, debounce, decimal, delay, dialsPhone, divide, dotCase, downloadBlobFile, downloadNetworkFile, downloadUrlFile, ensurePrefix, ensureSuffix, find, formatNumeric, formdataToObject, get, ghost, groupBy, gt, gte, integer, isAndroid, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBrowser, isBuffer, isChrome, isDate, isEdge, isElement, isEmpty, isEqual, isEqualWith, isError, isFF, isFormData, isFunction, isIE, isIE11, isIE9, isIOS, isInteger, isMap, isMatch, isMatchWith, isMobile, isNaN, isNative, isNull, isNumber, isObject, isObjectLike, isPhantomJS, isPlainObject, isRegexp, isSet, isString, isSymbol, isTruthy, isUndefined, isWeakMap, isWeakSet, isWeex, isWindow, join, kebabCase, keyBy, keys, loop, lt, lte, max, maxBy, merge, mergeWith, min, minBy, multiply, noCase, nonnanable, noop, numberify, numberish, objectToFormdata, off, omit, omitBy, on, once, openFilePicker, openImagePicker, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pick, pickBy, pipe, plus, proxy, randomItem, randomNumber, randomString, range, readFileReader, redirectTo, riposte, select, selectImages, sentenceCase, set, shortenId, showOpenFilePicker, showOpenImagePicker, size, slash, snakeCase, stringify, template, to, toArray, trainCase, truncate, tryParseJson, unindent, uniq, uniqBy, uniqWith, unit, unwrap, values, whenever, zeroRemove, zerofill };
|
package/dist/index.d.mts
CHANGED
|
@@ -223,28 +223,11 @@ declare const Bignumber: typeof _Bignumber;
|
|
|
223
223
|
*
|
|
224
224
|
* do not use Bignumber directly, use bignumber function instead
|
|
225
225
|
*/
|
|
226
|
-
declare const BIG_INTS: {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
};
|
|
232
|
-
b: {
|
|
233
|
-
v: number;
|
|
234
|
-
d: number;
|
|
235
|
-
n: string;
|
|
236
|
-
};
|
|
237
|
-
m: {
|
|
238
|
-
v: number;
|
|
239
|
-
d: number;
|
|
240
|
-
n: string;
|
|
241
|
-
};
|
|
242
|
-
k: {
|
|
243
|
-
v: number;
|
|
244
|
-
d: number;
|
|
245
|
-
n: string;
|
|
246
|
-
};
|
|
247
|
-
};
|
|
226
|
+
declare const BIG_INTS: Record<Delimiter, {
|
|
227
|
+
v: number;
|
|
228
|
+
d: number;
|
|
229
|
+
n: string;
|
|
230
|
+
}>;
|
|
248
231
|
type Delimiter = 'k' | 'm' | 'b' | 't';
|
|
249
232
|
interface DecimalOptions {
|
|
250
233
|
d?: number;
|
|
@@ -390,6 +373,7 @@ declare function template(str: string, ...args: (string | number | bigint | unde
|
|
|
390
373
|
* b()
|
|
391
374
|
* }
|
|
392
375
|
* `
|
|
376
|
+
* ```
|
|
393
377
|
*/
|
|
394
378
|
declare function unindent(str: TemplateStringsArray | string): string;
|
|
395
379
|
//#endregion
|
|
@@ -483,6 +467,7 @@ declare namespace compose {
|
|
|
483
467
|
* ```ts
|
|
484
468
|
* const deferred = new Deferred()
|
|
485
469
|
* deferred.resolve('value')
|
|
470
|
+
* ```
|
|
486
471
|
*/
|
|
487
472
|
declare class Deferred<T> extends Promise<T> {
|
|
488
473
|
resolve: (value?: T) => Deferred<T>;
|
|
@@ -498,9 +483,17 @@ declare class Deferred<T> extends Promise<T> {
|
|
|
498
483
|
* @example
|
|
499
484
|
* ```ts
|
|
500
485
|
* delay(1000).then(() => { console.log('1 second') })
|
|
486
|
+
* ```
|
|
501
487
|
*/
|
|
502
488
|
declare function delay(ms: number): Promise<void>;
|
|
503
489
|
//#endregion
|
|
490
|
+
//#region src/util/ghost.d.ts
|
|
491
|
+
type Ghost<T extends object> = T & {
|
|
492
|
+
enabled: boolean;
|
|
493
|
+
resolve: (value: T) => void;
|
|
494
|
+
};
|
|
495
|
+
declare function ghost<T extends object>(strictMessage?: string): Ghost<T>;
|
|
496
|
+
//#endregion
|
|
504
497
|
//#region src/util/json.d.ts
|
|
505
498
|
declare function tryParseJson<T = any>(text: string | undefined | null): T | undefined;
|
|
506
499
|
//#endregion
|
|
@@ -674,6 +667,7 @@ declare function proxy<T extends object, E extends object = {}>(initObject?: T,
|
|
|
674
667
|
* @example
|
|
675
668
|
* ```ts
|
|
676
669
|
* randomItem(['a', 'b', 'c']) // 'a' | 'b' | 'c'
|
|
670
|
+
* ```
|
|
677
671
|
*/
|
|
678
672
|
declare function randomItem<T>(array: T[]): T;
|
|
679
673
|
/**
|
|
@@ -684,6 +678,7 @@ declare function randomItem<T>(array: T[]): T;
|
|
|
684
678
|
* @example
|
|
685
679
|
* ```ts
|
|
686
680
|
* randomNumber(0, 100) // 0-100
|
|
681
|
+
* ```
|
|
687
682
|
*/
|
|
688
683
|
declare function randomNumber(min: number, max: number): number;
|
|
689
684
|
/**
|
|
@@ -696,6 +691,7 @@ declare function randomNumber(min: number, max: number): number;
|
|
|
696
691
|
* randomString() // 10 characters long
|
|
697
692
|
* randomString(20) // 20 characters long
|
|
698
693
|
* randomString(20, 'abcdefghijklmnopqrstuvwxyz') // 20 characters long
|
|
694
|
+
* ```
|
|
699
695
|
*/
|
|
700
696
|
declare function randomString(size?: number, chars?: string): string;
|
|
701
697
|
//#endregion
|
|
@@ -745,6 +741,7 @@ declare function numberish(value: Numberish): string;
|
|
|
745
741
|
* ```ts
|
|
746
742
|
* to(Promise.resolve('data')) // Promise<[null, 'data']>
|
|
747
743
|
* to(Promise.reject(new Error('error'))) // Promise<[Error, undefined]>
|
|
744
|
+
* ```
|
|
748
745
|
*/
|
|
749
746
|
declare function to<T, U = Error>(promise: Promise<T> | (() => Promise<T>), error?: object): Promise<[U, undefined] | [null, T]>;
|
|
750
747
|
//#endregion
|
|
@@ -758,6 +755,7 @@ declare function to<T, U = Error>(promise: Promise<T> | (() => Promise<T>), erro
|
|
|
758
755
|
* ```ts
|
|
759
756
|
* toArray(arrorOrItemOrUndefined) // item[] | undefined
|
|
760
757
|
* toArray(arrayOrItemOrUndefined, true) // item[]
|
|
758
|
+
* ```
|
|
761
759
|
*/
|
|
762
760
|
declare function toArray<T, R extends boolean>(value?: T | T[], required?: R): R extends true ? T[] : T[] | undefined;
|
|
763
761
|
//#endregion
|
|
@@ -806,6 +804,7 @@ declare const riposte: typeof select;
|
|
|
806
804
|
* ```ts
|
|
807
805
|
* unwrap({ name: 'John' }) // { name: 'John' }
|
|
808
806
|
* unwrap(() => { return { name: 'John' } }) // { name: 'John' }
|
|
807
|
+
* ```
|
|
809
808
|
*/
|
|
810
809
|
declare function unwrap<T extends object>(value: T | (() => T)): T;
|
|
811
810
|
/**
|
|
@@ -816,8 +815,9 @@ declare function unwrap<T extends object>(value: T | (() => T)): T;
|
|
|
816
815
|
* @example
|
|
817
816
|
* ```ts
|
|
818
817
|
* whenever(value, (value) => { return 'value' }) // value
|
|
818
|
+
* ```
|
|
819
819
|
*/
|
|
820
820
|
declare function whenever<T, C extends (value: Exclude<T, null | undefined>) => any>(value: T, callback: C): ReturnType<C> | undefined;
|
|
821
821
|
declare function call<T extends Fn<any>>(fn: T, ...args: Parameters<T>): ReturnType<T>;
|
|
822
822
|
//#endregion
|
|
823
|
-
export { AnyFn, ArgumentsType, Arrayable, Assign, Awaitable, BIG_INTS, Bignumber, BooleanLike, BrowserNativeObject, ConstructorType, DEFAULT_BIGNUM_CONFIG, DecimalOptions, DeepKeyof, DeepMap, DeepMerge, DeepPartial, DeepReadonly, DeepReplace, DeepRequired, Deferred, Delimiter, Dimension, DynamicObject, ElementOf, Fn, FormatGroupOptions, FormatNumericOptions, IfAny, IsAny, Key, Looper, MergeInsertions, NonUndefined, Noop, Nullable, NumberObject, Numberish, Numeric, NumericObject, OmitBy, OpenFilePickerOptions, OpenImagePickerOptions, Option, Overwrite, PickBy, PromiseFn, PromiseType, Promisify, Proxyed, ReaderType, StringObject, SymbolObject, arange, average, bignumber, call, camelCase, capitalCase, chunk, clone, cloneDeep, cloneDeepWith, cloneWith, compose, concat, constantCase, cover, debounce, decimal, delay, dialsPhone, divide, dotCase, downloadBlobFile, downloadNetworkFile, downloadUrlFile, ensurePrefix, ensureSuffix, find, formatNumeric, formdataToObject, get, groupBy, gt, gte, integer, isAndroid, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBrowser, isBuffer, isChrome, isDate, isEdge, isElement, isEmpty, isEqual, isEqualWith, isError, isFF, isFormData, isFunction, isIE, isIE11, isIE9, isIOS, isInteger, isMap, isMatch, isMatchWith, isMobile, isNaN, isNative, isNull, isNumber, isObject, isObjectLike, isPhantomJS, isPlainObject, isRegexp, isSet, isString, isSymbol, isTruthy, isUndefined, isWeakMap, isWeakSet, isWeex, isWindow, join, kebabCase, keyBy, keys, loop, lt, lte, max, maxBy, merge, mergeWith, min, minBy, multiply, noCase, nonnanable, noop, numberify, numberish, objectToFormdata, off, omit, omitBy, on, once, openFilePicker, openImagePicker, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pick, pickBy, pipe, plus, proxy, randomItem, randomNumber, randomString, range, readFileReader, redirectTo, riposte, select, selectImages, sentenceCase, set, shortenId, showOpenFilePicker, showOpenImagePicker, size, slash, snakeCase, stringify, template, to, toArray, trainCase, truncate, tryParseJson, unindent, uniq, uniqBy, uniqWith, unit, unwrap, values, whenever, zeroRemove, zerofill };
|
|
823
|
+
export { AnyFn, ArgumentsType, Arrayable, Assign, Awaitable, BIG_INTS, Bignumber, BooleanLike, BrowserNativeObject, ConstructorType, DEFAULT_BIGNUM_CONFIG, DecimalOptions, DeepKeyof, DeepMap, DeepMerge, DeepPartial, DeepReadonly, DeepReplace, DeepRequired, Deferred, Delimiter, Dimension, DynamicObject, ElementOf, Fn, FormatGroupOptions, FormatNumericOptions, Ghost, IfAny, IsAny, Key, Looper, MergeInsertions, NonUndefined, Noop, Nullable, NumberObject, Numberish, Numeric, NumericObject, OmitBy, OpenFilePickerOptions, OpenImagePickerOptions, Option, Overwrite, PickBy, PromiseFn, PromiseType, Promisify, Proxyed, ReaderType, StringObject, SymbolObject, arange, average, bignumber, call, camelCase, capitalCase, chunk, clone, cloneDeep, cloneDeepWith, cloneWith, compose, concat, constantCase, cover, debounce, decimal, delay, dialsPhone, divide, dotCase, downloadBlobFile, downloadNetworkFile, downloadUrlFile, ensurePrefix, ensureSuffix, find, formatNumeric, formdataToObject, get, ghost, groupBy, gt, gte, integer, isAndroid, isArguments, isArray, isArrayBuffer, isArrayLike, isArrayLikeObject, isBoolean, isBrowser, isBuffer, isChrome, isDate, isEdge, isElement, isEmpty, isEqual, isEqualWith, isError, isFF, isFormData, isFunction, isIE, isIE11, isIE9, isIOS, isInteger, isMap, isMatch, isMatchWith, isMobile, isNaN, isNative, isNull, isNumber, isObject, isObjectLike, isPhantomJS, isPlainObject, isRegexp, isSet, isString, isSymbol, isTruthy, isUndefined, isWeakMap, isWeakSet, isWeex, isWindow, join, kebabCase, keyBy, keys, loop, lt, lte, max, maxBy, merge, mergeWith, min, minBy, multiply, noCase, nonnanable, noop, numberify, numberish, objectToFormdata, off, omit, omitBy, on, once, openFilePicker, openImagePicker, parseNumeric, pascalCase, pascalSnakeCase, pathCase, percentage, pick, pickBy, pipe, plus, proxy, randomItem, randomNumber, randomString, range, readFileReader, redirectTo, riposte, select, selectImages, sentenceCase, set, shortenId, showOpenFilePicker, showOpenImagePicker, size, slash, snakeCase, stringify, template, to, toArray, trainCase, truncate, tryParseJson, unindent, uniq, uniqBy, uniqWith, unit, unwrap, values, whenever, zeroRemove, zerofill };
|