@rzl-zone/utils-js 2.1.0 → 3.0.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.
Files changed (129) hide show
  1. package/README.md +56 -27
  2. package/dist/NumberRangeUnion-DC-C3_Kq.d.ts +26 -0
  3. package/dist/any-BmdI8UbK.d.ts +67 -0
  4. package/dist/arrays-normalize-recursive-CnjYJ9xg.d.ts +72 -0
  5. package/dist/assertions/index.cjs +1 -0
  6. package/dist/assertions/index.d.ts +408 -0
  7. package/dist/assertions/index.js +1 -0
  8. package/dist/chunk-2HSNUPEO.cjs +1 -0
  9. package/dist/chunk-3YCFMGRB.js +1 -0
  10. package/dist/chunk-4Z75R3IT.cjs +1 -0
  11. package/dist/chunk-5C2SMIGX.cjs +1 -0
  12. package/dist/chunk-5Z2G23WP.js +1 -0
  13. package/dist/chunk-6C3ATUGM.cjs +1 -0
  14. package/dist/chunk-AJ25PWXX.cjs +1 -0
  15. package/dist/chunk-BHIBDDQF.js +1 -0
  16. package/dist/chunk-CE4JI2YB.js +1 -0
  17. package/dist/chunk-CMJ6UYWW.cjs +1 -0
  18. package/dist/chunk-D3VSHABU.cjs +1 -0
  19. package/dist/chunk-DG2GWBTS.cjs +1 -0
  20. package/dist/chunk-DVMHRLKP.cjs +1 -0
  21. package/dist/chunk-ECRNH4FW.js +1 -0
  22. package/dist/chunk-EKS4IZJR.cjs +1 -0
  23. package/dist/chunk-EOZKYR5S.cjs +1 -0
  24. package/dist/chunk-EUANTHVN.js +1 -0
  25. package/dist/chunk-EW3I4O7X.js +1 -0
  26. package/dist/chunk-F3E77L46.js +1 -0
  27. package/dist/chunk-FIAAX3UE.js +1 -0
  28. package/dist/chunk-FV7SEBKD.cjs +1 -0
  29. package/dist/chunk-G5LXIEFO.js +0 -0
  30. package/dist/chunk-GGWPB23G.cjs +1 -0
  31. package/dist/chunk-GVWGQNLF.js +1 -0
  32. package/dist/chunk-H3FXL4DU.cjs +1 -0
  33. package/dist/chunk-HHPDLSX2.cjs +1 -0
  34. package/dist/chunk-IMCLPT5V.cjs +1 -0
  35. package/dist/chunk-IRGE5W7L.js +1 -0
  36. package/dist/chunk-J2RGTPGK.cjs +1 -0
  37. package/dist/chunk-JARPXKBM.cjs +1 -0
  38. package/dist/chunk-JFJUPYDT.cjs +1 -0
  39. package/dist/chunk-JLP56WSM.js +1 -0
  40. package/dist/chunk-K3MV4AIN.cjs +1 -0
  41. package/dist/chunk-KHO2SBNA.cjs +1 -0
  42. package/dist/chunk-KOVO72OM.js +1 -0
  43. package/dist/chunk-LJ4M3VGE.js +1 -0
  44. package/dist/chunk-LJVGJLP4.js +1 -0
  45. package/dist/chunk-M47QIBXI.cjs +1 -0
  46. package/dist/chunk-MC3LXMCQ.js +1 -0
  47. package/dist/chunk-MISCBZJC.js +1 -0
  48. package/dist/chunk-MMSYCIJ2.cjs +1 -0
  49. package/dist/chunk-MTUBDVJ2.js +1 -0
  50. package/dist/chunk-O7UT5AN3.cjs +1 -0
  51. package/dist/chunk-OGPPP2S3.js +1 -0
  52. package/dist/chunk-OLPKAX7F.cjs +1 -0
  53. package/dist/chunk-ONZFBJVW.js +1 -0
  54. package/dist/chunk-ORZFHBEY.js +1 -0
  55. package/dist/chunk-OWV2P376.js +1 -0
  56. package/dist/chunk-QNKGP5DY.js +1 -0
  57. package/dist/chunk-RV2WK5E6.js +1 -0
  58. package/dist/chunk-SBF43G3B.cjs +1 -0
  59. package/dist/chunk-T4CIAKEK.js +1 -0
  60. package/dist/chunk-UDA26MCU.cjs +1 -0
  61. package/dist/chunk-VCFXNV3Q.cjs +1 -0
  62. package/dist/chunk-VHAPTHEA.cjs +1 -0
  63. package/dist/chunk-WVSPXFTY.js +1 -0
  64. package/dist/chunk-X74TUJSE.cjs +1 -0
  65. package/dist/chunk-XC3QHAK2.cjs +1 -0
  66. package/dist/chunk-XLDAIZRK.js +1 -0
  67. package/dist/chunk-XZJ7C4N6.js +1 -0
  68. package/dist/chunk-YV3K2EKJ.js +1 -0
  69. package/dist/chunk-ZHV5ZYVN.cjs +1 -0
  70. package/dist/chunk-ZL7J6GTP.js +1 -0
  71. package/dist/chunk-ZTCLKKMB.js +1 -0
  72. package/dist/conversions/index.cjs +1 -0
  73. package/dist/conversions/index.d.ts +1436 -0
  74. package/dist/conversions/index.js +1 -0
  75. package/dist/env/index.cjs +1 -0
  76. package/dist/env/index.d.ts +16 -0
  77. package/dist/env/index.js +1 -0
  78. package/dist/events/index.cjs +1 -0
  79. package/dist/events/index.d.ts +122 -0
  80. package/dist/events/index.js +1 -0
  81. package/dist/extends-Bk_SBGdT.d.ts +367 -0
  82. package/dist/formatting/index.cjs +1 -0
  83. package/dist/formatting/index.d.ts +950 -0
  84. package/dist/formatting/index.js +1 -0
  85. package/dist/generator/index.cjs +1 -0
  86. package/dist/generator/index.d.ts +186 -0
  87. package/dist/generator/index.js +1 -0
  88. package/dist/if-CvT4R7Kh.d.ts +18 -0
  89. package/dist/is-array--YjXV-Wx.d.ts +1207 -0
  90. package/dist/isPlainObject-BVhBAPHX.d.ts +169 -0
  91. package/dist/never-BfayMBF9.d.ts +75 -0
  92. package/dist/next/index.cjs +1 -1
  93. package/dist/next/index.d.ts +130 -110
  94. package/dist/next/index.js +1 -1
  95. package/dist/next/server/index.cjs +1 -1
  96. package/dist/next/server/index.d.ts +9 -23
  97. package/dist/next/server/index.js +1 -1
  98. package/dist/nils-DMz3kU7M.d.ts +177 -0
  99. package/dist/omit-VvmIsZmX.d.ts +28 -0
  100. package/dist/operations/index.cjs +1 -0
  101. package/dist/operations/index.d.ts +127 -0
  102. package/dist/operations/index.js +1 -0
  103. package/dist/parsers/index.cjs +1 -0
  104. package/dist/parsers/index.d.ts +36 -0
  105. package/dist/parsers/index.js +1 -0
  106. package/dist/predicates/index.cjs +1 -0
  107. package/dist/predicates/index.d.ts +1865 -0
  108. package/dist/predicates/index.js +1 -0
  109. package/dist/prettify-C4xLcYOP.d.ts +353 -0
  110. package/dist/promise/index.cjs +1 -0
  111. package/dist/promise/index.d.ts +31 -0
  112. package/dist/promise/index.js +1 -0
  113. package/dist/rzl-utils.global.js +1 -1
  114. package/dist/string-XA-til3C.d.ts +351 -0
  115. package/dist/strings/index.cjs +1 -0
  116. package/dist/strings/index.d.ts +741 -0
  117. package/dist/strings/index.js +1 -0
  118. package/dist/tailwind/index.cjs +1 -0
  119. package/dist/tailwind/index.d.ts +565 -0
  120. package/dist/tailwind/index.js +1 -0
  121. package/dist/type-data-DDs-u2kq.d.ts +261 -0
  122. package/dist/types/index.d.ts +3054 -1555
  123. package/dist/urls/index.cjs +1 -0
  124. package/dist/urls/index.d.ts +393 -0
  125. package/dist/urls/index.js +1 -0
  126. package/package.json +196 -27
  127. package/dist/index.cjs +0 -1
  128. package/dist/index.d.ts +0 -4334
  129. package/dist/index.js +0 -1
@@ -0,0 +1 @@
1
+ export{convertType,removeObjectPaths,toBooleanContent,toBooleanContentDeep,toBooleanExplicit,toBooleanLoose,toNumberArrayUnRecursive,toNumberDeep,toStringDeep}from"../chunk-LJ4M3VGE.js";export{cleanParsedData,extractDigits,parseCustomDate,safeJsonParse}from"../chunk-XLDAIZRK.js";import"../chunk-MTUBDVJ2.js";export{dedupeArray,filterNilArray,toStringArrayUnRecursive,toStringDeepForce}from"../chunk-ORZFHBEY.js";import"../chunk-IRGE5W7L.js";import"../chunk-ZTCLKKMB.js";import"../chunk-ECRNH4FW.js";export{parseCurrencyString}from"../chunk-EUANTHVN.js";import"../chunk-OWV2P376.js";import"../chunk-FIAAX3UE.js";import"../chunk-KOVO72OM.js";import"../chunk-T4CIAKEK.js";export{safeStableStringify}from"../chunk-BHIBDDQF.js";import"../chunk-QNKGP5DY.js";import"../chunk-EW3I4O7X.js";
@@ -0,0 +1 @@
1
+ "use strict";require("../chunk-MMSYCIJ2.cjs");var e=require("../chunk-J2RGTPGK.cjs");Object.defineProperty(exports,"isServer",{enumerable:!0,get:function(){return e.isServer}});
@@ -0,0 +1,16 @@
1
+ /** ----------------------------------------
2
+ * * ***Utility: `isServer`.***
3
+ * ----------------------------------------
4
+ * **Checks if the current execution environment is at **server-side** (Node.js)
5
+ * or **client-side** (browser).**
6
+ * @returns {boolean}
7
+ * - `true` ➔ running on the **server-side** (Node.js).
8
+ * - `false` ➔ running on the **client-side** (browser).
9
+ * @example
10
+ * if (isServer()) {
11
+ * console.log("Running on Node.js");
12
+ * } else {
13
+ * console.log("Running in the browser");
14
+ * }
15
+ */
16
+ declare const isServer:()=>boolean;export{isServer};
@@ -0,0 +1 @@
1
+ import"../chunk-G5LXIEFO.js";export{isServer}from"../chunk-MC3LXMCQ.js";
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../chunk-XC3QHAK2.cjs");require("../chunk-J2RGTPGK.cjs"),require("../chunk-VCFXNV3Q.cjs"),require("../chunk-D3VSHABU.cjs"),Object.defineProperty(exports,"disableUserInteraction",{enumerable:!0,get:function(){return e.disableUserInteraction}}),Object.defineProperty(exports,"enableUserInteraction",{enumerable:!0,get:function(){return e.enableUserInteraction}}),Object.defineProperty(exports,"removeElementFocus",{enumerable:!0,get:function(){return e.removeElementFocus}}),Object.defineProperty(exports,"scrollToTop",{enumerable:!0,get:function(){return e.scrollToTop}});
@@ -0,0 +1,122 @@
1
+ type ScrollToTopOptions={
2
+ /** Scroll animation type.
3
+ *
4
+ * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
5
+ * - Default force to `"smooth"` if missing or invalid.
6
+ *
7
+ * @default "smooth"
8
+ */
9
+ behavior?:ScrollBehavior|undefined;
10
+ /** Delay before scrolling (in milliseconds).
11
+ *
12
+ * - Default value is `1`.
13
+ * - Valid values: any number `≥` `1`.
14
+ * - Non-integer number are truncated to an integer.
15
+ * - Force to `2147483647` if number is larger than `2147483647`.
16
+ * - Default force to `1` if `missing`, `NaN`, `invalid-type`, or `less-than` `1`.
17
+ *
18
+ * @default 1
19
+ */
20
+ timeout?:number|undefined;};
21
+ /** ----------------------------------------------------------
22
+ * * ***Utility: `disableUserInteraction`.***
23
+ * ----------------------------------------------------------
24
+ * **Disables user interaction by adding a CSS class to the `<html>` element.**
25
+ * - **Key points**:
26
+ * - Works **only in browser environments**.
27
+ * - Safely adds the specified CSS class to `<html>`.
28
+ * - Prevents multiple additions of the same class.
29
+ * - Useful to indicate that a process is ongoing
30
+ * (e.g., loading or processing state).
31
+ * - **Using custom CSS classes:**
32
+ * - You can pass any class name that exists in your CSS.
33
+ * - Example: if you have `.loading` in your styles, passing `"loading"`
34
+ * will add it and disable interactions accordingly.
35
+ * - **Validation:**
36
+ * - Throws `TypeError` if the `className` parameter is not a string.
37
+ * @param {string} [className="on_processing"] - The CSS class to add, defaults to `"on_processing"`.
38
+ * @returns {void} Does not return anything.
39
+ * @throws {TypeError} If `className` is not a string.
40
+ * @example
41
+ * disableUserInteraction(); // ➔ Adds "on_processing" class
42
+ * disableUserInteraction("loading"); // ➔ Adds "loading" class
43
+ * // ❌ Invalid value:
44
+ * disableUserInteraction(123); // ➔ Throws TypeError
45
+ */
46
+ declare const disableUserInteraction:(className?:string)=>void;
47
+ /** ----------------------------------------------------------
48
+ * * ***Utility: `enableUserInteraction`.***
49
+ * ----------------------------------------------------------
50
+ * **Enables user interaction by removing a CSS class from the `<html>` element.**
51
+ * - **Key points**:
52
+ * - Works **only in browser environments**.
53
+ * - Safely removes the specified CSS class from `<html>`.
54
+ * - Does nothing if the class is not present.
55
+ * - Useful to re-enable user interactions after a process
56
+ * (e.g., loading or processing) completes.
57
+ * - **Using custom CSS classes:**
58
+ * - You can pass any class name that exists in your CSS.
59
+ * - Example: if you have `.loading` in your styles, passing `"loading"`
60
+ * will remove it and re-enable interactions.
61
+ * - **Validation:**
62
+ * - Throws `TypeError` if the `className` parameter is not a string.
63
+ * @param {string} [className="on_processing"] - The CSS class to remove, defaults to `"on_processing"`.
64
+ * @returns {void} Does not return anything.
65
+ * @throws {TypeError} If `className` is not a string.
66
+ * @example
67
+ * enableUserInteraction(); // ➔ Removes "on_processing" class
68
+ * enableUserInteraction("loading"); // ➔ Removes "loading" class
69
+ * // ❌ Invalid value:
70
+ * enableUserInteraction(123); // ➔ Throws TypeError
71
+ */
72
+ declare const enableUserInteraction:(className?:string)=>void;
73
+ /** ----------------------------------------------------------
74
+ * * ***Utility: `removeElementFocus`.***
75
+ * ----------------------------------------------------------
76
+ * **Removes focus from the currently active element in the document.**
77
+ * - **Features**:
78
+ * - This function works **only in browser environments**.
79
+ * - If an element is focused, it will lose focus by calling `blur()`.
80
+ * - If no element is focused or the active element is not an `HTMLElement`, nothing happens.
81
+ * @returns {void} Does not return anything.
82
+ * @example
83
+ * removeElementFocus(); // ➔ Removes focus from the currently active element
84
+ */
85
+ declare const removeElementFocus:()=>void;
86
+ /** ----------------------------------------------------------
87
+ * * ***Utility: `scrollToTop`.***
88
+ * ----------------------------------------------------------
89
+ * **Scrolls the page to the top with optional smooth animation and delay.**
90
+ * - **Features**:
91
+ * - This function works **only in browser environments** (no effect on server-side).
92
+ * - It leverages the native `window.scrollTo()` API with support for smooth scrolling
93
+ * and an optional timeout delay before executing the scroll.
94
+ * - Each option has strict valid values.
95
+ * - If an invalid value is provided, the function **automatically falls back to its default**.
96
+ * @param {ScrollToTopOptions} [options] - Optional settings for scroll behavior.
97
+ * @param {ScrollToTopOptions["behavior"]} [options.behavior="smooth"] - Scroll animation type.
98
+ * - Valid values: `"auto"`, `"instant"`, `"smooth"`.
99
+ * - Default force to `"smooth"` if missing or invalid.
100
+ * @param {ScrollToTopOptions["timeout"]} [options.timeout=1] - Delay before scrolling (in milliseconds).
101
+ * - Default value is `1`.
102
+ * - Valid values: any number `≥` `1`.
103
+ * - Non-integer number are truncated to an integer.
104
+ * - Force to `2147483647` if number is larger than `2147483647`.
105
+ * - Default force to `1` if `missing`, `NaN`, `invalid`, or `less-than` `1`.
106
+ * @returns {void} Does not return anything, only scrolling to top.
107
+ * @example
108
+ * // ✅ Valid options value:
109
+ * scrollToTop();
110
+ * // ➔ Scroll smoothly to the top after 1ms delay
111
+ * scrollToTop({ behavior: "instant" });
112
+ * // ➔ Jump instantly to the top
113
+ * scrollToTop({ timeout: 500 });
114
+ * // ➔ Scroll smoothly to the top after 500ms
115
+ *
116
+ * // ❌ Invalid options value:
117
+ * scrollToTop({ behavior: "fly", timeout: -100 });
118
+ * // ➔ Fallback: behavior="smooth", timeout=1
119
+ * scrollToTop({ behavior: "fly", timeout: 123.55 });
120
+ * // ➔ Fallback: behavior="smooth", timeout=123
121
+ */
122
+ declare const scrollToTop:(options?:ScrollToTopOptions)=>void;export{disableUserInteraction,enableUserInteraction,removeElementFocus,scrollToTop};
@@ -0,0 +1 @@
1
+ export{disableUserInteraction,enableUserInteraction,removeElementFocus,scrollToTop}from"../chunk-5Z2G23WP.js";import"../chunk-MC3LXMCQ.js";import"../chunk-T4CIAKEK.js";import"../chunk-EW3I4O7X.js";
@@ -0,0 +1,367 @@
1
+ import{I as If}from'./if-CvT4R7Kh.js';import{I as IsNever}from'./never-BfayMBF9.js';
2
+ /** -------------------------------------------------------
3
+ * * ***Arrayable.***
4
+ * -------------------------------------------------------
5
+ * Represents a type that can be either:
6
+ * - a single value of type `T`, or
7
+ * - an array of values of type `T`.
8
+ *
9
+ * Useful when a function or API accepts **either one item or multiple items**.
10
+ *
11
+ * @template T - The element type.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * function toArray<T>(input: Arrayable<T>): T[] {
16
+ * return Array.isArray(input) ? input : [input];
17
+ * }
18
+ *
19
+ * type A = Arrayable<string>;
20
+ * // ➔ string | string[]
21
+ *
22
+ * const a: A = "foo";
23
+ * const b: A = ["foo", "bar"];
24
+ * ```
25
+ */
26
+ type Arrayable<T>=T|Array<T>;
27
+ /** -------------------------------------------------------
28
+ * * ***MutableArray.***
29
+ * -------------------------------------------------------
30
+ * Recursively creates a **mutable version** of a readonly array, tuple, or object type.
31
+ *
32
+ * By default, TypeScript infers tuple/array literals as `readonly` (especially with `as const`).
33
+ * This utility removes the `readonly` modifier from all elements recursively,
34
+ * turning a readonly tuple, array, or object into a mutable one.
35
+ *
36
+ * Optionally, if `Widen` is `true`, literal types (`1`, `'foo'`, `true`) are widened to
37
+ * their primitive equivalents (`number`, `string`, `boolean`) for easier assignment.
38
+ *
39
+ * @template T - The readonly array, tuple, or object type to make mutable.
40
+ * @template Widen - Whether to widen literal primitive types to their base types (default: `false`).
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * type A = readonly [1, 2, 3];
45
+ * type B = MutableArray<A>;
46
+ * // ➔ [1, 2, 3]
47
+ *
48
+ * const x: A = [1, 2, 3] as const;
49
+ * // x[0] = 9; // ❌ Error: read-only
50
+ *
51
+ * const y: MutableArray<B,true> = [1, 2, 3];
52
+ * y[0] = 9; // ✅ Allowed
53
+ *
54
+ * // Recursive example with objects
55
+ * type Obj = readonly [{ a: 1, b: readonly [2] }];
56
+ * type MutableObj = MutableArray<Obj, true>;
57
+ * // ➔ [{ a: number; b: [number]; }]
58
+ * ```
59
+ */
60
+ type MutableArray<T,Widen extends boolean=false>=T extends(...args:any)=>any?T:T extends readonly any[]?{-readonly [K in keyof T]:MutableArray<T[K],Widen>;}:T extends object?{-readonly [K in keyof T]:MutableArray<T[K],Widen>;}:Widen extends true?T extends number?number:T extends string?string:T extends boolean?boolean:T extends bigint?bigint:T extends symbol?symbol:T:T;
61
+ /** --------------------------------------------------
62
+ * * ***GetArrayElementType.***
63
+ * --------------------------------------------------
64
+ * Gets the element type from a readonly array or tuple.
65
+ *
66
+ * ✅ Useful when working with `as const` arrays to extract the union of literal types.
67
+ *
68
+ * @template T - A readonly array or tuple type.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const roles = ['admin', 'user'] as const;
73
+ * type Role = GetArrayElementType<typeof roles>;
74
+ * // ➔ "admin" | "user"
75
+ * ```
76
+ */
77
+ type GetArrayElementType<T extends readonly any[]>=T extends readonly(infer U)[]?U:never;
78
+ /** -------------------------------------------------------
79
+ * * ***EmptyArray.***
80
+ * -------------------------------------------------------
81
+ * A type-level utility that returns `T` if it is an ***empty array***,
82
+ * otherwise returns `never`.
83
+ *
84
+ * @template T - The array type to check.
85
+ * @example
86
+ * ```ts
87
+ * type A = EmptyArray<[]>;
88
+ * // ➔ []
89
+ * type B = EmptyArray<[1]>;
90
+ * // ➔ never
91
+ * type C = EmptyArray<string[]>;
92
+ * // ➔ string[]
93
+ * type D = EmptyArray<number[]>;
94
+ * // ➔ number[]
95
+ * type E = EmptyArray<readonly []>;
96
+ * // ➔ readonly []
97
+ * ```
98
+ */
99
+ type EmptyArray<T extends readonly unknown[]>=T extends readonly [ unknown,...unknown[]]?never:T;
100
+ /** -------------------------------------------------------
101
+ * * ***NonEmptyArray.***
102
+ * -------------------------------------------------------
103
+ * A type-level utility that returns `T` if it is a ***non-empty array***,
104
+ * otherwise returns `never`.
105
+ *
106
+ * @template T - The array type to check.
107
+ * @example
108
+ * ```ts
109
+ * type A = NonEmptyArray<[]>;
110
+ * // ➔ never
111
+ * type B = NonEmptyArray<[1]>;
112
+ * // ➔ [1]
113
+ * type C = NonEmptyArray<string[]>;
114
+ * // ➔ never
115
+ * type D = NonEmptyArray<number[]>;
116
+ * // ➔ never
117
+ * type E = NonEmptyArray<readonly []>;
118
+ * // ➔ never
119
+ * ```
120
+ */
121
+ type NonEmptyArray<T extends readonly unknown[]>=If<IsNever<EmptyArray<T>>,T,never>;
122
+ /** -------------------------------------------------------
123
+ * * ***IsEmptyArray.***
124
+ * -------------------------------------------------------
125
+ * A type-level utility that evaluates to `true` if `T` is an ***empty array.***
126
+ * (or can be empty per this definition), otherwise `false`.
127
+ *
128
+ * @template T - The array type to check.
129
+ * @example
130
+ * ```ts
131
+ * type A = IsEmptyArray<[]>;
132
+ * // ➔ true
133
+ * type B = IsEmptyArray<[1]>;
134
+ * // ➔ false
135
+ * type C = IsEmptyArray<string[]>;
136
+ * // ➔ true
137
+ * type D = IsEmptyArray<number[]>;
138
+ * // ➔ true
139
+ * type E = IsEmptyArray<readonly []>;
140
+ * // ➔ true
141
+ * ```
142
+ */
143
+ type IsEmptyArray<T extends readonly unknown[]>=If<IsNever<EmptyArray<T>>,false,true>;
144
+ /** -------------------------------------------------------
145
+ * * ***IsNonEmptyArray.***
146
+ * -------------------------------------------------------
147
+ * A type-level utility that evaluates to `true` if `T` is a ***non-empty array.***
148
+ * (strictly a non-empty tuple), otherwise `false`.
149
+ *
150
+ * @template T - The array type to check.
151
+ * @example
152
+ * ```ts
153
+ * type A = IsNonEmptyArray<[]>;
154
+ * // ➔ false
155
+ * type B = IsNonEmptyArray<[1]>;
156
+ * // ➔ true
157
+ * type C = IsNonEmptyArray<string[]>;
158
+ * // ➔ false
159
+ * type D = IsNonEmptyArray<number[]>;
160
+ * // ➔ false
161
+ * type E = IsNonEmptyArray<readonly []>;
162
+ * // ➔ false
163
+ * ```
164
+ */
165
+ type IsNonEmptyArray<T extends readonly unknown[]>=If<IsNever<EmptyArray<T>>,true,false>;
166
+ /** -------------------------------------------------------
167
+ * * ***IfEmptyArray.***
168
+ * -------------------------------------------------------
169
+ * Returns the second argument if `T` is an ***empty array*** (per this utility),
170
+ * otherwise returns the third argument.
171
+ * - Defaults: `IfTrue = true`, `IfFalse = false`.
172
+ *
173
+ * @template T - The array type to check.
174
+ * @template IfTrue - Returned type if `T` is empty by this definition.
175
+ * @template IfFalse - Returned type if `T` is not empty by this definition.
176
+ * @example
177
+ * ```ts
178
+ * type A = IfEmptyArray<[]>;
179
+ * // ➔ true
180
+ * type B = IfEmptyArray<[1]>;
181
+ * // ➔ false
182
+ * type C = IfEmptyArray<string[]>;
183
+ * // ➔ true
184
+ * type D = IfEmptyArray<readonly []>;
185
+ * // ➔ true
186
+ * type E = IfEmptyArray<[], "yes", "no">;
187
+ * // ➔ "yes"
188
+ * type F = IfEmptyArray<[1], "yes", "no">;
189
+ * // ➔ "no"
190
+ * type G = IfEmptyArray<string[], "yes", "no">;
191
+ * // ➔ "yes"
192
+ * ```
193
+ */
194
+ type IfEmptyArray<T extends readonly unknown[],IfTrue=true,IfFalse=false>=If<IsEmptyArray<T>,IfTrue,IfFalse>;
195
+ /** -------------------------------------------------------
196
+ * * ***IfNonEmptyArray.***
197
+ * -------------------------------------------------------
198
+ * Returns the second argument if `T` is a ***non-empty array*** (strict tuple),
199
+ * otherwise returns the third argument.
200
+ * - Defaults: `IfTrue = true`, `IfFalse = false`.
201
+ *
202
+ * @template T - The array type to check.
203
+ * @template IfTrue - Returned type if `T` is non-empty by this definition.
204
+ * @template IfFalse - Returned type if `T` is not non-empty by this definition.
205
+ * @example
206
+ * ```ts
207
+ * type A = IfNonEmptyArray<[]>;
208
+ * // ➔ false
209
+ * type B = IfNonEmptyArray<[1]>;
210
+ * // ➔ true
211
+ * type C = IfNonEmptyArray<string[]>;
212
+ * // ➔ false
213
+ * type D = IfNonEmptyArray<readonly []>;
214
+ * // ➔ false
215
+ * type E = IfNonEmptyArray<[1], "yes", "no">;
216
+ * // ➔ "yes"
217
+ * type F = IfNonEmptyArray<[], "yes", "no">;
218
+ * // ➔ "no"
219
+ * type G = IfNonEmptyArray<string[], "yes", "no">;
220
+ * // ➔ "no"
221
+ * ```
222
+ */
223
+ type IfNonEmptyArray<T extends readonly unknown[],IfTrue=true,IfFalse=false>=If<IsNonEmptyArray<T>,IfTrue,IfFalse>;
224
+ /** -------------------------------------------------------
225
+ * * ***Not.***
226
+ * -------------------------------------------------------
227
+ * Accepts a boolean type `T` and returns its negation.
228
+ *
229
+ * @template T - Boolean type to negate.
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * type A = Not<true>; // ➔ false
234
+ * type B = Not<false>; // ➔ true
235
+ * ```
236
+ */
237
+ type Not<T extends boolean>=T extends true?false:true;
238
+ /** -------------------------------------------------------
239
+ * * ***PopOptions.***
240
+ * -------------------------------------------------------
241
+ *
242
+ * Configuration options for the {@link Pop} type utility.
243
+ */
244
+ type PopOptions={
245
+ /**
246
+ * If `true`, {@link Pop} will return a tuple `[Rest, Removed]`
247
+ * instead of just the remaining array.
248
+ *
249
+ * Default: `false`.
250
+ *
251
+ * @example
252
+ * ```ts
253
+ * type Options = { includeRemoved: true };
254
+ * type Result = Pop<[1, 2, 3], Options>; // ➔ [[1, 2], 3]
255
+ * ```
256
+ */
257
+ includeRemoved:boolean;};
258
+ /** -------------------------------------------------------
259
+ * * ***Pop.***
260
+ * -------------------------------------------------------
261
+ *
262
+ * Removes the last element from a tuple/array type.
263
+ *
264
+ * If the `includeRemoved` option is `true`, it returns a tuple `[Rest, Removed]`
265
+ * where `Rest` is the array without the last element, and `Removed` is the last element.
266
+ *
267
+ * @template T - The tuple or array to pop from.
268
+ * @template Options - Configuration object. Default `{ includeRemoved: false }`.
269
+ *
270
+ * @example
271
+ * ```ts
272
+ * // Removes last element
273
+ * type Case1 = Pop<[1, 2, 3]>
274
+ * // ➔ [1, 2]
275
+ *
276
+ * // Removes last element and includes the removed value
277
+ * type Case2 = Pop<[1, 2, 3], { includeRemoved: true }>
278
+ * // ➔ [[1, 2], 3]
279
+ *
280
+ * // Edge case: empty array
281
+ * type Case3 = Pop<[]>
282
+ * // ➔ never
283
+ * ```
284
+ */
285
+ type Pop<T extends readonly unknown[],Options extends PopOptions={includeRemoved:false;}>=IsEmptyArray<T>extends true?never:T extends readonly [...infer Rest extends readonly unknown[],infer Removed]?If<Options["includeRemoved"],[Rest,Removed],Rest>:never;
286
+ /** -------------------------------------------------------
287
+ * * ***Extends.***
288
+ * -------------------------------------------------------
289
+ * Returns a boolean indicating whether the first argument ***extends*** the second argument.
290
+ *
291
+ * @template T - The type to check.
292
+ * @template Base - The type to compare against.
293
+ * @example
294
+ * ```ts
295
+ * type A = Extends<1, number>; // ➔ true
296
+ * type B = Extends<number, 1>; // ➔ false
297
+ * ```
298
+ */
299
+ type Extends<T,Base>=[T] extends [Base]?true:false;
300
+ /** -------------------------------------------------------
301
+ * * ***NotExtends.***
302
+ * -------------------------------------------------------
303
+ * Returns a boolean indicating whether the first argument does ***not extend*** the second argument.
304
+ *
305
+ * @template T - The type to check.
306
+ * @template Base - The type to compare against.
307
+ * @example
308
+ * ```ts
309
+ * type A = NotExtends<1, number>; // ➔ false
310
+ * type B = NotExtends<number, 1>; // ➔ true
311
+ * ```
312
+ */
313
+ type NotExtends<T,Base>=Not<Extends<T,Base>>;
314
+ /** -------------------------------------------------------
315
+ * * ***IfExtends.***
316
+ * -------------------------------------------------------
317
+ * Conditional: returns the third argument if the first argument ***extends*** the second argument, otherwise returns the fourth argument.
318
+ * - Defaults: `IfTrue = true`, `IfFalse = false`.
319
+ *
320
+ * @template T - The type to check.
321
+ * @template Base - The type to compare against.
322
+ * @template IfTrue - The branch type if condition is met. (default: `true`)
323
+ * @template IfFalse - The branch type if condition is not met. (default: `false`)
324
+ * @example
325
+ * ```ts
326
+ * type A = IfExtends<1, number, "valid">;
327
+ * // ➔ "valid"
328
+ * type B = IfExtends<1, string, "valid", "invalid">;
329
+ * // ➔ "invalid"
330
+ * ```
331
+ */
332
+ type IfExtends<T,Base,IfTrue=true,IfFalse=false>=If<Extends<T,Base>,IfTrue,IfFalse>;
333
+ /** -------------------------------------------------------
334
+ * * ***IfNotExtends.***
335
+ * -------------------------------------------------------
336
+ * Conditional: returns the third argument if the first argument does ***not extend*** the second argument, otherwise returns the fourth argument.
337
+ * - Defaults: `IfTrue = true`, `IfFalse = false`.
338
+ *
339
+ * @template T - The type to check.
340
+ * @template Base - The type to compare against.
341
+ * @template IfTrue - The branch type if condition is met. (default: `true`)
342
+ * @template IfFalse - The branch type if condition is not met. (default: `false`)
343
+ * @example
344
+ * ```ts
345
+ * type A = IfNotExtends<1, string, "valid">;
346
+ * // ➔ "valid"
347
+ * type B = IfNotExtends<1, number, "valid", "invalid">;
348
+ * // ➔ "invalid"
349
+ * ```
350
+ */
351
+ type IfNotExtends<T,Base,IfTrue=true,IfFalse=false>=If<NotExtends<T,Base>,IfTrue,IfFalse>;
352
+ /** -------------------------------------------------------
353
+ * * ***ExtendsArr.***
354
+ * -------------------------------------------------------
355
+ * Returns a boolean indicating whether every element of the first array argument ***extends*** the second argument.
356
+ *
357
+ * @template T - The array to check.
358
+ * @template Base - The type to compare each element against.
359
+ * @example
360
+ * ```ts
361
+ * type A = ExtendsArr<[1, 2, 3], number>;
362
+ * // ➔ true
363
+ * type B = ExtendsArr<[1, "2", 3], number>;
364
+ * // ➔ false
365
+ * ```
366
+ */
367
+ type ExtendsArr<T extends readonly unknown[],Base>=IsEmptyArray<T>extends true?true:Pop<T,{includeRemoved:true;}>extends readonly [infer Rest extends readonly unknown[],infer Removed]?Extends<Removed,Base>extends true?ExtendsArr<Rest,Base>:false:false;export type{Arrayable as A,Extends as E,GetArrayElementType as G,IfExtends as I,MutableArray as M,Not as N,Pop as P,NotExtends as a,IsEmptyArray as b,ExtendsArr as c,IfEmptyArray as d,EmptyArray as e,IfNonEmptyArray as f,IsNonEmptyArray as g,NonEmptyArray as h,IfNotExtends as i,PopOptions as j};
@@ -0,0 +1 @@
1
+ "use strict";var e=require("../chunk-HHPDLSX2.cjs");require("../chunk-O7UT5AN3.cjs"),require("../chunk-CMJ6UYWW.cjs"),require("../chunk-2HSNUPEO.cjs"),require("../chunk-4Z75R3IT.cjs"),require("../chunk-VCFXNV3Q.cjs"),require("../chunk-DVMHRLKP.cjs"),require("../chunk-ZHV5ZYVN.cjs"),require("../chunk-UDA26MCU.cjs"),require("../chunk-D3VSHABU.cjs"),Object.defineProperty(exports,"censorEmail",{enumerable:!0,get:function(){return e.censorEmail}}),Object.defineProperty(exports,"chunkString",{enumerable:!0,get:function(){return e.chunkString}}),Object.defineProperty(exports,"formatCurrency",{enumerable:!0,get:function(){return e.formatCurrency}}),Object.defineProperty(exports,"formatDateFns",{enumerable:!0,get:function(){return e.formatDateFns}}),Object.defineProperty(exports,"formatDateIntl",{enumerable:!0,get:function(){return e.formatDateIntl}}),Object.defineProperty(exports,"formatDateTime",{enumerable:!0,get:function(){return e.formatDateTime}}),Object.defineProperty(exports,"formatNumber",{enumerable:!0,get:function(){return e.formatNumber}}),Object.defineProperty(exports,"formatPhoneNumber",{enumerable:!0,get:function(){return e.formatPhoneNumber}}),Object.defineProperty(exports,"getGMTOffset",{enumerable:!0,get:function(){return e.getGMTOffset}}),Object.defineProperty(exports,"truncateString",{enumerable:!0,get:function(){return e.truncateString}});