@rzl-zone/utils-js 3.12.1-beta.0 → 3.13.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -35
- package/dist/.references/index.d.cts +1 -3
- package/dist/.references/index.d.ts +1 -3
- package/dist/{assertIsArray-BfAbIUfa.js → assertIsArray-6BcSdNa-.js} +3 -3
- package/dist/{assertIsArray-BfAbIUfa.js.map → assertIsArray-6BcSdNa-.js.map} +1 -1
- package/dist/{assertIsArray-BChqwPiP.cjs → assertIsArray-BqjMoan3.cjs} +3 -3
- package/dist/{assertIsArray-BChqwPiP.cjs.map → assertIsArray-BqjMoan3.cjs.map} +1 -1
- package/dist/{assertIsBoolean-BlBct0Fc.js → assertIsBoolean-Bv6gL-xe.js} +8 -8
- package/dist/assertIsBoolean-Bv6gL-xe.js.map +1 -0
- package/dist/{assertIsBoolean-DozdtbNi.cjs → assertIsBoolean-amRiJHnh.cjs} +8 -8
- package/dist/assertIsBoolean-amRiJHnh.cjs.map +1 -0
- package/dist/{assertIsString-DqV9NwbI.js → assertIsString-1WiUjgqf.js} +3 -3
- package/dist/{assertIsString-DqV9NwbI.js.map → assertIsString-1WiUjgqf.js.map} +1 -1
- package/dist/{assertIsString-Bvk7bUL7.cjs → assertIsString-C0b28AU1.cjs} +3 -3
- package/dist/{assertIsString-Bvk7bUL7.cjs.map → assertIsString-C0b28AU1.cjs.map} +1 -1
- package/dist/assertions/index.cjs +5 -5
- package/dist/assertions/index.d.cts +2 -2
- package/dist/assertions/index.d.ts +2 -2
- package/dist/assertions/index.js +5 -5
- package/dist/conversions/index.cjs +6 -6
- package/dist/conversions/index.d.cts +2 -2
- package/dist/conversions/index.d.ts +2 -2
- package/dist/conversions/index.js +6 -6
- package/dist/{conversions-EMJa3g-D.js → conversions-BrI0GIOr.js} +16 -18
- package/dist/conversions-BrI0GIOr.js.map +1 -0
- package/dist/{conversions-CBs8-REq.cjs → conversions-lvvAYiZs.cjs} +16 -18
- package/dist/conversions-lvvAYiZs.cjs.map +1 -0
- package/dist/events/index.cjs +4 -4
- package/dist/events/index.cjs.map +1 -1
- package/dist/events/index.d.cts +153 -151
- package/dist/events/index.d.ts +153 -151
- package/dist/events/index.js +4 -4
- package/dist/events/index.js.map +1 -1
- package/dist/formatters/index.cjs +2 -2
- package/dist/formatters/index.d.cts +2 -2
- package/dist/formatters/index.d.ts +2 -2
- package/dist/formatters/index.js +2 -2
- package/dist/{formatters-lAYgA11L.cjs → formatters-DQr05EUA.cjs} +17 -15
- package/dist/formatters-DQr05EUA.cjs.map +1 -0
- package/dist/{formatters-QcZO_Cpx.js → formatters-zDzQvtb4.js} +17 -15
- package/dist/formatters-zDzQvtb4.js.map +1 -0
- package/dist/generators/index.cjs +12 -8
- package/dist/generators/index.cjs.map +1 -1
- package/dist/generators/index.d.cts +2 -2
- package/dist/generators/index.d.ts +2 -2
- package/dist/generators/index.js +12 -8
- package/dist/generators/index.js.map +1 -1
- package/dist/index-3jBnthag.d.cts +340 -0
- package/dist/index-BXwimNPA.d.cts +2361 -0
- package/dist/index-BlTCrSyc.d.cts +2158 -0
- package/dist/index-CEm8ZOvj.d.ts +2158 -0
- package/dist/index-CLq5kZmQ.d.cts +822 -0
- package/dist/index-Ckao53JY.d.ts +2361 -0
- package/dist/index-DHHrLc0B.d.ts +947 -0
- package/dist/index-DIeR8qa-.d.ts +340 -0
- package/dist/index-DxZlGbAH.d.ts +1716 -0
- package/dist/index-DyVWeYP3.d.cts +765 -0
- package/dist/index-GSUN6rjA.d.ts +822 -0
- package/dist/index-_dJhBl1h.d.ts +765 -0
- package/dist/index-bMa-0Yr4.d.cts +1716 -0
- package/dist/index-z_uCh5KW.d.cts +947 -0
- package/dist/{isBigInt-B1cijjqm.cjs → isBigInt-CIFRnsdx.cjs} +2 -2
- package/dist/{isBigInt-B1cijjqm.cjs.map → isBigInt-CIFRnsdx.cjs.map} +1 -1
- package/dist/{isBigInt-C0bN0Rhu.js → isBigInt-D-Pu9sxp.js} +2 -2
- package/dist/{isBigInt-C0bN0Rhu.js.map → isBigInt-D-Pu9sxp.js.map} +1 -1
- package/dist/{isEmptyObject-DI42NEo0.cjs → isEmptyObject-CEySmyHK.cjs} +3 -3
- package/dist/{isEmptyObject-DI42NEo0.cjs.map → isEmptyObject-CEySmyHK.cjs.map} +1 -1
- package/dist/{isEmptyObject-DeLVIJpl.js → isEmptyObject-CZ9DLi7R.js} +3 -3
- package/dist/{isEmptyObject-DeLVIJpl.js.map → isEmptyObject-CZ9DLi7R.js.map} +1 -1
- package/dist/{isEmptyString-BTUWYTbw.js → isEmptyString-DFDtBbNr.js} +3 -3
- package/dist/{isEmptyString-BTUWYTbw.js.map → isEmptyString-DFDtBbNr.js.map} +1 -1
- package/dist/{isEmptyString-CCK3bP74.cjs → isEmptyString-DI64RQCy.cjs} +3 -3
- package/dist/{isEmptyString-CCK3bP74.cjs.map → isEmptyString-DI64RQCy.cjs.map} +1 -1
- package/dist/{isEmptyValue-DMSMFTU8.cjs → isEmptyValue-Cw6ovu7z.cjs} +5 -5
- package/dist/{isEmptyValue-DMSMFTU8.cjs.map → isEmptyValue-Cw6ovu7z.cjs.map} +1 -1
- package/dist/{isEmptyValue-fjnfQnt5.js → isEmptyValue-aGyeClwA.js} +5 -5
- package/dist/{isEmptyValue-fjnfQnt5.js.map → isEmptyValue-aGyeClwA.js.map} +1 -1
- package/dist/{isEqual-DhyP8fB_.js → isEqual-Dtb2sXUv.js} +4 -4
- package/dist/{isEqual-DhyP8fB_.js.map → isEqual-Dtb2sXUv.js.map} +1 -1
- package/dist/{isEqual-B1fRgEuU.cjs → isEqual-UsvOwrlY.cjs} +4 -4
- package/dist/{isEqual-B1fRgEuU.cjs.map → isEqual-UsvOwrlY.cjs.map} +1 -1
- package/dist/{isFinite-BYMOo0os.js → isFinite-Cz_IFXuV.js} +3 -3
- package/dist/{isFinite-BYMOo0os.js.map → isFinite-Cz_IFXuV.js.map} +1 -1
- package/dist/{isFinite-sFkps2TY.cjs → isFinite-uukWvxJh.cjs} +3 -3
- package/dist/{isFinite-sFkps2TY.cjs.map → isFinite-uukWvxJh.cjs.map} +1 -1
- package/dist/{isInteger-FTCthMre.cjs → isInteger-DPYjliLZ.cjs} +2 -2
- package/dist/{isInteger-FTCthMre.cjs.map → isInteger-DPYjliLZ.cjs.map} +1 -1
- package/dist/{isInteger-DS9V7l_f.js → isInteger-DZ163OQg.js} +2 -2
- package/dist/{isInteger-DS9V7l_f.js.map → isInteger-DZ163OQg.js.map} +1 -1
- package/dist/isPlainObject-CBABRyEX.d.cts +339 -0
- package/dist/isPlainObject-Dr8gi89U.d.ts +339 -0
- package/dist/{isServer-D1TXfOs3.js → isServer-BDShLyVJ.js} +2 -2
- package/dist/{isServer-D1TXfOs3.js.map → isServer-BDShLyVJ.js.map} +1 -1
- package/dist/{isServer-q-QLFCqE.cjs → isServer-BzDeYuGg.cjs} +2 -2
- package/dist/{isServer-q-QLFCqE.cjs.map → isServer-BzDeYuGg.cjs.map} +1 -1
- package/dist/{isTypedArray-DiCoqffZ.cjs → isTypedArray-DaYAkyrt.cjs} +3 -3
- package/dist/{isTypedArray-DiCoqffZ.cjs.map → isTypedArray-DaYAkyrt.cjs.map} +1 -1
- package/dist/{isTypedArray-47R0wdrc.js → isTypedArray-DuUUA4CL.js} +3 -3
- package/dist/{isTypedArray-47R0wdrc.js.map → isTypedArray-DuUUA4CL.js.map} +1 -1
- package/dist/{isValidDomain-BSXshgkC.cjs → isValidDomain-BxyToAlh.cjs} +74 -8
- package/dist/isValidDomain-BxyToAlh.cjs.map +1 -0
- package/dist/{isValidDomain-DwA2EN79.js → isValidDomain-CTw5vZFY.js} +57 -9
- package/dist/isValidDomain-CTw5vZFY.js.map +1 -0
- package/dist/{noop-B2mTBhW-.cjs → noop-7KrqC9DC.cjs} +2 -2
- package/dist/{noop-B2mTBhW-.cjs.map → noop-7KrqC9DC.cjs.map} +1 -1
- package/dist/{noop-BzktGBVz.js → noop-DGg9vMSD.js} +2 -2
- package/dist/{noop-BzktGBVz.js.map → noop-DGg9vMSD.js.map} +1 -1
- package/dist/{normalizeSpaces-DQHR3Tlr.cjs → normalizeSpaces-B6ZQOZRX.cjs} +3 -3
- package/dist/{normalizeSpaces-DQHR3Tlr.cjs.map → normalizeSpaces-B6ZQOZRX.cjs.map} +1 -1
- package/dist/{normalizeSpaces-WS_iERJk.js → normalizeSpaces-C1eLwykD.js} +3 -3
- package/dist/{normalizeSpaces-WS_iERJk.js.map → normalizeSpaces-C1eLwykD.js.map} +1 -1
- package/dist/operations/index.cjs +10 -10
- package/dist/operations/index.cjs.map +1 -1
- package/dist/operations/index.d.cts +120 -120
- package/dist/operations/index.d.ts +120 -120
- package/dist/operations/index.js +10 -10
- package/dist/operations/index.js.map +1 -1
- package/dist/parsers/index.cjs +2 -2
- package/dist/parsers/index.d.cts +222 -222
- package/dist/parsers/index.d.ts +222 -222
- package/dist/parsers/index.js +2 -2
- package/dist/{parsers-DXtpsDyj.cjs → parsers-DEFpCYhw.cjs} +4 -4
- package/dist/{parsers-DXtpsDyj.cjs.map → parsers-DEFpCYhw.cjs.map} +1 -1
- package/dist/{parsers-Dpuq-V4u.js → parsers-bQQ9mStV.js} +4 -4
- package/dist/{parsers-Dpuq-V4u.js.map → parsers-bQQ9mStV.js.map} +1 -1
- package/dist/{parsing-B43x1sxn.js → parsing-BngARhmu.js} +3 -3
- package/dist/{parsing-B43x1sxn.js.map → parsing-BngARhmu.js.map} +1 -1
- package/dist/{parsing-lRoxn1Nz.cjs → parsing-lI5EN4LY.cjs} +3 -3
- package/dist/{parsing-lRoxn1Nz.cjs.map → parsing-lI5EN4LY.cjs.map} +1 -1
- package/dist/predicates/index.cjs +15 -16
- package/dist/predicates/index.d.cts +3 -3
- package/dist/predicates/index.d.ts +3 -3
- package/dist/predicates/index.js +14 -15
- package/dist/{predicates-DiaYA7Ps.cjs → predicates-CMmP3fPJ.cjs} +15 -16
- package/dist/{predicates-DiaYA7Ps.cjs.map → predicates-CMmP3fPJ.cjs.map} +1 -1
- package/dist/{predicates-gNepszvo.js → predicates-V87QD8hs.js} +13 -14
- package/dist/{predicates-gNepszvo.js.map → predicates-V87QD8hs.js.map} +1 -1
- package/dist/promises/index.cjs +4 -4
- package/dist/promises/index.d.cts +101 -101
- package/dist/promises/index.d.ts +101 -101
- package/dist/promises/index.js +4 -4
- package/dist/{punyCode-hmiFzLWT.js → punyCode-BeFYDjj0.js} +6 -6
- package/dist/punyCode-BeFYDjj0.js.map +1 -0
- package/dist/{punyCode-CTWXVVFo.cjs → punyCode-DmTsB7q_.cjs} +6 -6
- package/dist/punyCode-DmTsB7q_.cjs.map +1 -0
- package/dist/{removeSpaces-BE8lfh-4.js → removeSpaces-B96axxP6.js} +7 -4
- package/dist/removeSpaces-B96axxP6.js.map +1 -0
- package/dist/{removeSpaces-DRRxNWlb.cjs → removeSpaces-C8mu_yp3.cjs} +12 -3
- package/dist/removeSpaces-C8mu_yp3.cjs.map +1 -0
- package/dist/rzl-utils.global.js +21 -0
- package/dist/{safeJsonParse-BBnQElk8.cjs → safeJsonParse-BXbtX_j7.cjs} +9 -9
- package/dist/safeJsonParse-BXbtX_j7.cjs.map +1 -0
- package/dist/{safeJsonParse-CXruaP0p.js → safeJsonParse-DyCsTXlU.js} +9 -9
- package/dist/safeJsonParse-DyCsTXlU.js.map +1 -0
- package/dist/{safeStableStringify-BNh3D0K0.js → safeStableStringify-BrOcdX9n.js} +4 -4
- package/dist/{safeStableStringify-BNh3D0K0.js.map → safeStableStringify-BrOcdX9n.js.map} +1 -1
- package/dist/{safeStableStringify-Cc62pfRp.cjs → safeStableStringify-DRYQ56Dg.cjs} +4 -4
- package/dist/{safeStableStringify-Cc62pfRp.cjs.map → safeStableStringify-DRYQ56Dg.cjs.map} +1 -1
- package/dist/strings/index.cjs +12 -10
- package/dist/strings/index.cjs.map +1 -1
- package/dist/strings/index.d.cts +2 -2
- package/dist/strings/index.d.ts +2 -2
- package/dist/strings/index.js +11 -9
- package/dist/strings/index.js.map +1 -1
- package/dist/tailwind/index.cjs +6 -2
- package/dist/tailwind/index.d.cts +3 -3
- package/dist/tailwind/index.d.ts +3 -3
- package/dist/tailwind/index.js +3 -3
- package/dist/{tailwind-IJvOdkZp.js → tailwind-BZ2_MeNX.js} +18 -8
- package/dist/tailwind-BZ2_MeNX.js.map +1 -0
- package/dist/{tailwind-DJ4cmLUw.cjs → tailwind-C1YtxJ-K.cjs} +39 -5
- package/dist/tailwind-C1YtxJ-K.cjs.map +1 -0
- package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs → toStringArrayUnRecursive-D1mPM4wg.cjs} +6 -6
- package/dist/{toStringArrayUnRecursive-xUaU8Ot9.cjs.map → toStringArrayUnRecursive-D1mPM4wg.cjs.map} +1 -1
- package/dist/{toStringArrayUnRecursive-CFs0jTEg.js → toStringArrayUnRecursive-tHp2a7KR.js} +6 -6
- package/dist/{toStringArrayUnRecursive-CFs0jTEg.js.map → toStringArrayUnRecursive-tHp2a7KR.js.map} +1 -1
- package/dist/urls/index.cjs +9 -119
- package/dist/urls/index.d.cts +656 -659
- package/dist/urls/index.d.ts +656 -659
- package/dist/urls/index.js +3 -113
- package/dist/urls-CoxDAoki.js +263 -0
- package/dist/urls-CoxDAoki.js.map +1 -0
- package/dist/urls-DCyx8Wpk.cjs +299 -0
- package/dist/urls-DCyx8Wpk.cjs.map +1 -0
- package/package.json +4 -25
- package/dist/assertIsBoolean-BlBct0Fc.js.map +0 -1
- package/dist/assertIsBoolean-DozdtbNi.cjs.map +0 -1
- package/dist/conversions-CBs8-REq.cjs.map +0 -1
- package/dist/conversions-EMJa3g-D.js.map +0 -1
- package/dist/formatEnvPort-DpIXzPAZ.js +0 -159
- package/dist/formatEnvPort-DpIXzPAZ.js.map +0 -1
- package/dist/formatEnvPort-hHNvOim-.cjs +0 -171
- package/dist/formatEnvPort-hHNvOim-.cjs.map +0 -1
- package/dist/formatters-QcZO_Cpx.js.map +0 -1
- package/dist/formatters-lAYgA11L.cjs.map +0 -1
- package/dist/index-26W7ItWx.d.ts +0 -760
- package/dist/index-BPPQjAfs.d.cts +0 -2359
- package/dist/index-BXjlgBLz.d.cts +0 -2139
- package/dist/index-B_Wwo91H.d.ts +0 -2359
- package/dist/index-CpufydcI.d.cts +0 -704
- package/dist/index-Czc4O526.d.ts +0 -333
- package/dist/index-DPs1_p5G.d.cts +0 -760
- package/dist/index-DRpOyBSC.d.ts +0 -1703
- package/dist/index-DWWvtHUn.d.cts +0 -822
- package/dist/index-DnM0LD0n.d.cts +0 -333
- package/dist/index-GUZ9fK6T.d.ts +0 -2139
- package/dist/index-I4fAzwXV.d.ts +0 -704
- package/dist/index-JDrOl_19.d.ts +0 -822
- package/dist/index-b66P49Qe.d.cts +0 -1703
- package/dist/isPlainObject-DcFGh3_5.d.ts +0 -530
- package/dist/isPlainObject-doTI11Ib.d.cts +0 -530
- package/dist/isURL-CQiowFq2.js +0 -14
- package/dist/isURL-CQiowFq2.js.map +0 -1
- package/dist/isURL-WZypXsax.cjs +0 -20
- package/dist/isURL-WZypXsax.cjs.map +0 -1
- package/dist/isValidDomain-BSXshgkC.cjs.map +0 -1
- package/dist/isValidDomain-DwA2EN79.js.map +0 -1
- package/dist/next/index.cjs +0 -129
- package/dist/next/index.cjs.map +0 -1
- package/dist/next/index.d.cts +0 -226
- package/dist/next/index.d.ts +0 -226
- package/dist/next/index.js +0 -124
- package/dist/next/index.js.map +0 -1
- package/dist/next/server/index.cjs +0 -28
- package/dist/next/server/index.cjs.map +0 -1
- package/dist/next/server/index.d.cts +0 -39
- package/dist/next/server/index.d.ts +0 -39
- package/dist/next/server/index.js +0 -26
- package/dist/next/server/index.js.map +0 -1
- package/dist/normalizeString-2WLth_Gj.js +0 -15
- package/dist/normalizeString-2WLth_Gj.js.map +0 -1
- package/dist/normalizeString-D8euBcRD.cjs +0 -21
- package/dist/normalizeString-D8euBcRD.cjs.map +0 -1
- package/dist/punyCode-CTWXVVFo.cjs.map +0 -1
- package/dist/punyCode-hmiFzLWT.js.map +0 -1
- package/dist/removeSpaces-BE8lfh-4.js.map +0 -1
- package/dist/removeSpaces-DRRxNWlb.cjs.map +0 -1
- package/dist/safeJsonParse-BBnQElk8.cjs.map +0 -1
- package/dist/safeJsonParse-CXruaP0p.js.map +0 -1
- package/dist/tailwind-DJ4cmLUw.cjs.map +0 -1
- package/dist/tailwind-IJvOdkZp.js.map +0 -1
- package/dist/urls/index.cjs.map +0 -1
- package/dist/urls/index.js.map +0 -1
|
@@ -1,822 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* ========================================================================
|
|
3
|
-
* @rzl-zone/utils-js
|
|
4
|
-
* ------------------------------------------------------------------------
|
|
5
|
-
* Version: `3.12.1-beta.0`
|
|
6
|
-
* Author: `Rizalvin Dwiky <rizalvindwiky@gmail.com>`
|
|
7
|
-
* Repository: `https://github.com/rzl-zone/rzl-zone/tree/main/packages/utils-js`
|
|
8
|
-
* ========================================================================
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { a as IsNumberOptions, c as GetPreciseTypeOptions, i as ArrayFallback, t as IsPlainObjectResult } from "./isPlainObject-doTI11Ib.cjs";
|
|
12
|
-
import { AnyString, PickStrict, Prettify } from "@rzl-zone/ts-types-plus";
|
|
13
|
-
/** -------------------------------------------------------
|
|
14
|
-
* * ***Shape of the object passed to custom error message functions.***
|
|
15
|
-
* -------------------------------------------------------
|
|
16
|
-
* **This type describes the parameters received when `options.message`
|
|
17
|
-
* is defined as a function in {@link OptionsAssertIs | `OptionsAssertIs`}.**
|
|
18
|
-
* - **Parameter:**
|
|
19
|
-
* - `currentType` ➔ the actual detected runtime type of the value.
|
|
20
|
-
* - `validType` ➔ the required/expected type name that the value must match.
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* const options: OptionsAssertIs = {
|
|
24
|
-
* message: ({ currentType, validType }) => {
|
|
25
|
-
* return `Expected ${validType} but got ${currentType}`;
|
|
26
|
-
* };
|
|
27
|
-
* };
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
type OptionsMessageFunctionAssertIs = {
|
|
31
|
-
/** ---------------------------------------------------------------------------
|
|
32
|
-
* * ***The actual runtime type of the value being checked.***
|
|
33
|
-
* ---------------------------------------------------------------------------
|
|
34
|
-
* - ***Example:***
|
|
35
|
-
* - `"number"`, `"big-int"`, `"plain-object"`, (depends `formatCase` options).
|
|
36
|
-
*/
|
|
37
|
-
currentType: string;
|
|
38
|
-
/** ---------------------------------------------------------------------------
|
|
39
|
-
* * ***The required/expected type that the value must conform to.***
|
|
40
|
-
* ---------------------------------------------------------------------------
|
|
41
|
-
* - ***Example:***
|
|
42
|
-
* - `"boolean"`, `"string"`, `"big-int"`, `"plain-object"`, (will force format to `kebab-case`).
|
|
43
|
-
*/
|
|
44
|
-
validType: string;
|
|
45
|
-
};
|
|
46
|
-
/** -------------------------------------------------------
|
|
47
|
-
* * ***Custom error-message type for assertions option {@link OptionsAssertIs | `OptionsAssertIs`}.***
|
|
48
|
-
* -------------------------------------------------------
|
|
49
|
-
* - ***Accepts:***
|
|
50
|
-
* - A static string message.
|
|
51
|
-
* - A function receiving `{ currentType, validType }` and returning a string.
|
|
52
|
-
*/
|
|
53
|
-
type OptionsMessageAssertIs = (({
|
|
54
|
-
currentType,
|
|
55
|
-
validType
|
|
56
|
-
}: OptionsMessageFunctionAssertIs) => string) | string;
|
|
57
|
-
/** ---------------------------------------------------------------------------
|
|
58
|
-
* * ***Base options for `assertIs*` functions.***
|
|
59
|
-
* ---------------------------------------------------------------------------
|
|
60
|
-
*/
|
|
61
|
-
type OptionsAssertIs = Prettify<{
|
|
62
|
-
/** -------------------------------------------------------
|
|
63
|
-
* * ***Custom error message for assertion failures.***
|
|
64
|
-
* -------------------------------------------------------
|
|
65
|
-
* **This option allows overriding the **default error message** when a value
|
|
66
|
-
* does not match the required type.**
|
|
67
|
-
* - If a **string** is provided:
|
|
68
|
-
* - Must be non-empty after trimming.
|
|
69
|
-
* - Will be used directly as the error message.
|
|
70
|
-
* - If a **function** is provided:
|
|
71
|
-
* - Receives an object containing:
|
|
72
|
-
* - `currentType` ➔ the detected runtime type of the value (depends `formatCase` options, e.g., `"number"`).
|
|
73
|
-
* - `validType` ➔ the expected type name (with format `kebab-case`, e.g., `"boolean"`, `"big-int"`, `"plain-object"`).
|
|
74
|
-
* - **Must** return a **string**:
|
|
75
|
-
* - **If** the **returned string is** `empty` or `whitespace`,
|
|
76
|
-
* the **default message** will be used instead.
|
|
77
|
-
* @example
|
|
78
|
-
* ```ts
|
|
79
|
-
* // Static message
|
|
80
|
-
* { message: "Must be a boolean!" }
|
|
81
|
-
*
|
|
82
|
-
* // Dynamic message
|
|
83
|
-
* {
|
|
84
|
-
* message: ({ currentType, validType }) => {
|
|
85
|
-
* return `Expected ${validType} but got ${currentType}`;
|
|
86
|
-
* };
|
|
87
|
-
* }
|
|
88
|
-
* ```
|
|
89
|
-
*/
|
|
90
|
-
message?: OptionsMessageAssertIs;
|
|
91
|
-
/** -------------------------------------------------------
|
|
92
|
-
* * ***Custom error type for assertion failures.***
|
|
93
|
-
* -------------------------------------------------------
|
|
94
|
-
* **This option allows overriding the default error type** that will be thrown
|
|
95
|
-
* when a value does not match the required type.
|
|
96
|
-
*
|
|
97
|
-
* - **Behavior:**
|
|
98
|
-
* - Must be one of the standard JavaScript built-in error types:
|
|
99
|
-
* `"Error" | "EvalError" | "RangeError" | "ReferenceError" | "SyntaxError" | "TypeError" | "URIError"`
|
|
100
|
-
* - **Default:** `"TypeError"` if not provided or if an invalid value is passed.
|
|
101
|
-
* - The assertion function will **always throw a valid built-in error**, ensuring
|
|
102
|
-
* fallback to `TypeError` in case of an unknown or incorrect type.
|
|
103
|
-
* @example
|
|
104
|
-
* ```ts
|
|
105
|
-
* // Valid: Throw a RangeError instead of TypeError
|
|
106
|
-
* { errorType: "RangeError" }
|
|
107
|
-
*
|
|
108
|
-
* // Valid: Throw a ReferenceError
|
|
109
|
-
* { errorType: "ReferenceError" }
|
|
110
|
-
*
|
|
111
|
-
* // Invalid value ➔ fallback to TypeError
|
|
112
|
-
* { errorType: "SomeUnknownError" as ErrorType }
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
errorType?: ErrorType;
|
|
116
|
-
} & PickStrict<GetPreciseTypeOptions, "formatCase" | "useAcronyms">, {
|
|
117
|
-
recursive: true;
|
|
118
|
-
}>;
|
|
119
|
-
type ErrorType = "Error" | "EvalError" | "RangeError" | "ReferenceError" | "SyntaxError" | "TypeError" | "URIError";
|
|
120
|
-
/** -------------------------------------------------------
|
|
121
|
-
* * ***Type guard assertion: `assertIsBoolean`.***
|
|
122
|
-
* -------------------------------------------------------
|
|
123
|
-
* **This function is an **assertion function**.**
|
|
124
|
-
* - **Behavior:**
|
|
125
|
-
* - Validates that the given `value` is a **boolean**.
|
|
126
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `boolean`.
|
|
127
|
-
* - ✅ If `value` is a `boolean` ➔ execution continues normally.
|
|
128
|
-
* - ❌ If `value` is not a `boolean` ➔ throws a built-in error with either:
|
|
129
|
-
* - A custom error message (`options.message`), or
|
|
130
|
-
* - A default message including the actual type.
|
|
131
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
132
|
-
* - You can override the type of error thrown when validation fails.
|
|
133
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
134
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
135
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
136
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
137
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
138
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
139
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
140
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
141
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
142
|
-
* @param {*} value - ***The value to validate.***
|
|
143
|
-
* @param {OptionsAssertIs} [options]
|
|
144
|
-
* ***Optional configuration:***
|
|
145
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
146
|
-
* - `errorType`: A custom built-in JavaScript error type to throw.
|
|
147
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
148
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
149
|
-
* @returns {boolean} Narrows `value` to `boolean` if no error is thrown.
|
|
150
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if the value is not a boolean.
|
|
151
|
-
* @example
|
|
152
|
-
* ```ts
|
|
153
|
-
* // ✅ Simple usage
|
|
154
|
-
* assertIsBoolean(true);
|
|
155
|
-
* // No error, value is boolean
|
|
156
|
-
*
|
|
157
|
-
* // ❌ Throws TypeError (default behavior)
|
|
158
|
-
* // Case 1: Invalid input type — received a string instead of a boolean
|
|
159
|
-
* assertIsBoolean("hello");
|
|
160
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `boolean`, but received: `number`."
|
|
161
|
-
*
|
|
162
|
-
* // Case 2: The new Boolean() is a Boolean object (constructor), not a primitive boolean
|
|
163
|
-
* assertIsBoolean(new Boolean(true));
|
|
164
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `boolean`, but received: `boolean-constructor`."
|
|
165
|
-
*
|
|
166
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
167
|
-
* assertIsBoolean(42, { message: "Must be boolean!" });
|
|
168
|
-
* // ➔ TypeError: "Must be boolean!"
|
|
169
|
-
*
|
|
170
|
-
* // ❌ Throws RangeError (custom error type)
|
|
171
|
-
* assertIsBoolean(42, { errorType: "RangeError" });
|
|
172
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `boolean`, but received: `number`."
|
|
173
|
-
*
|
|
174
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
175
|
-
* assertIsBoolean(/regex/, {
|
|
176
|
-
* message: ({ currentType, validType }) => {
|
|
177
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
178
|
-
* },
|
|
179
|
-
* formatCase: "toPascalCaseSpace"
|
|
180
|
-
* });
|
|
181
|
-
* // ➔ TypeError: "Expected boolean but got (Reg Exp)."
|
|
182
|
-
*
|
|
183
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
184
|
-
* // Case 1:
|
|
185
|
-
* assertIsBoolean(new URL("https://example.com"),{
|
|
186
|
-
* message: ({ currentType, validType }) => {
|
|
187
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
188
|
-
* },
|
|
189
|
-
* });
|
|
190
|
-
* // ➔ TypeError: "Expected boolean but got (url)."
|
|
191
|
-
* assertIsBoolean(new URL("https://example.com"), {
|
|
192
|
-
* useAcronyms: true,
|
|
193
|
-
* message: ({ currentType, validType }) => {
|
|
194
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
195
|
-
* },
|
|
196
|
-
* });
|
|
197
|
-
* // ➔ TypeError: "Expected boolean but got (URL)."
|
|
198
|
-
*
|
|
199
|
-
* // Case 2:
|
|
200
|
-
* assertIsBoolean(new URLSearchParams, {
|
|
201
|
-
* formatCase: "toPascalCase",
|
|
202
|
-
* message: ({ currentType, validType }) => {
|
|
203
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
204
|
-
* },
|
|
205
|
-
* });
|
|
206
|
-
* // ➔ TypeError: "Expected boolean but got (UrlSearchParams)."
|
|
207
|
-
* assertIsBoolean(new URLSearchParams, {
|
|
208
|
-
* useAcronyms: true,
|
|
209
|
-
* formatCase: "toPascalCase",
|
|
210
|
-
* message: ({ currentType, validType }) => {
|
|
211
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
212
|
-
* },
|
|
213
|
-
* });
|
|
214
|
-
* // ➔ TypeError: "Expected boolean but got (URLSearchParams)."
|
|
215
|
-
* ```
|
|
216
|
-
* -------------------------------------------------------
|
|
217
|
-
* ✅ ***Real-world usage example***:
|
|
218
|
-
* ```ts
|
|
219
|
-
* const mixedValue: string | boolean | number | undefined = getUserInput();
|
|
220
|
-
*
|
|
221
|
-
* // Runtime assertion: throws if `mixedValue` is not a `boolean`
|
|
222
|
-
* assertIsBoolean(mixedValue, {
|
|
223
|
-
* errorType: "RangeError",
|
|
224
|
-
* message: "Must be boolean!"
|
|
225
|
-
* });
|
|
226
|
-
*
|
|
227
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `boolean` here
|
|
228
|
-
* const result: boolean = mixedValue; // ➔ Safe type assignment
|
|
229
|
-
* ```
|
|
230
|
-
*/
|
|
231
|
-
declare const assertIsBoolean: (value: unknown, options?: OptionsAssertIs) => asserts value is boolean;
|
|
232
|
-
/** -------------------------------------------------------
|
|
233
|
-
* * ***Type guard assertion: `assertIsBigInt`.***
|
|
234
|
-
* -------------------------------------------------------
|
|
235
|
-
* **This function is an **assertion function**.**
|
|
236
|
-
* - **Behavior:**
|
|
237
|
-
* - Validates that the given `value` is a **bigint**.
|
|
238
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `bigint`.
|
|
239
|
-
* - ✅ If `value` is a `bigint` ➔ execution continues normally.
|
|
240
|
-
* - ❌ If `value` is not a `bigint` ➔ throws a built-in error with either:
|
|
241
|
-
* - A custom error message (`options.message`), or
|
|
242
|
-
* - A default message including the actual type.
|
|
243
|
-
* - **ℹ️ Note:**
|
|
244
|
-
* - A `bigint` refers strictly to the JavaScript `bigint` primitive type (e.g., `123n`, `0n`, `-999999999999999999999n`).
|
|
245
|
-
* - This excludes `BigInt` objects created with `Object(BigInt(123))`.
|
|
246
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
247
|
-
* - You can override the type of error thrown when validation fails.
|
|
248
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
249
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
250
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
251
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
252
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
253
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
254
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
255
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
256
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
257
|
-
* @param {*} value - ***The value to validate.***
|
|
258
|
-
* @param {OptionsAssertIs} [options]
|
|
259
|
-
* ***Optional configuration:***
|
|
260
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
261
|
-
* - `errorType`: Built-in JavaScript error type to throw on failure (default `"TypeError"`).
|
|
262
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
263
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
264
|
-
* @returns {boolean} Narrows `value` to `bigint` if no error is thrown.
|
|
265
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if the value is not a bigint.
|
|
266
|
-
* @example
|
|
267
|
-
* ```ts
|
|
268
|
-
* // ✅ Simple usage
|
|
269
|
-
* assertIsBigInt(123n);
|
|
270
|
-
* // No error, value is bigint
|
|
271
|
-
*
|
|
272
|
-
* // ❌ Throws TypeError (default behavior)
|
|
273
|
-
* assertIsBigInt(42);
|
|
274
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `bigint`, but received: `number`."
|
|
275
|
-
*
|
|
276
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
277
|
-
* assertIsBigInt("123", { message: "Must be a bigint!" });
|
|
278
|
-
* // ➔ TypeError: "Must be a bigint!"
|
|
279
|
-
*
|
|
280
|
-
* // ❌ Throws custom error type (e.g., RangeError)
|
|
281
|
-
* assertIsBigInt(async function () {}, { errorType: "RangeError" });
|
|
282
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `bigint`, but received: `async-function`."
|
|
283
|
-
*
|
|
284
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
285
|
-
* assertIsBigInt(/regex/, {
|
|
286
|
-
* message: ({ currentType, validType }) => {
|
|
287
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
288
|
-
* },
|
|
289
|
-
* formatCase: "toPascalCaseSpace"
|
|
290
|
-
* });
|
|
291
|
-
* // ➔ TypeError: "Expected bigint but got (Reg Exp)."
|
|
292
|
-
*
|
|
293
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
294
|
-
* // Case 1:
|
|
295
|
-
* assertIsBigInt(new URL("https://example.com"),{
|
|
296
|
-
* message: ({ currentType, validType }) => {
|
|
297
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
298
|
-
* },
|
|
299
|
-
* });
|
|
300
|
-
* // ➔ TypeError: "Expected bigint but got (url)."
|
|
301
|
-
* assertIsBigInt(new URL("https://example.com"), {
|
|
302
|
-
* useAcronyms: true,
|
|
303
|
-
* message: ({ currentType, validType }) => {
|
|
304
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
305
|
-
* },
|
|
306
|
-
* });
|
|
307
|
-
* // ➔ TypeError: "Expected bigint but got (URL)."
|
|
308
|
-
*
|
|
309
|
-
* // Case 2:
|
|
310
|
-
* assertIsBigInt(new URLSearchParams, {
|
|
311
|
-
* formatCase: "toPascalCase",
|
|
312
|
-
* message: ({ currentType, validType }) => {
|
|
313
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
314
|
-
* },
|
|
315
|
-
* });
|
|
316
|
-
* // ➔ TypeError: "Expected bigint but got (UrlSearchParams)."
|
|
317
|
-
* assertIsBigInt(new URLSearchParams, {
|
|
318
|
-
* useAcronyms: true,
|
|
319
|
-
* formatCase: "toPascalCase",
|
|
320
|
-
* message: ({ currentType, validType }) => {
|
|
321
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
322
|
-
* },
|
|
323
|
-
* });
|
|
324
|
-
* // ➔ TypeError: "Expected bigint but got (URLSearchParams)."
|
|
325
|
-
* ```
|
|
326
|
-
* -------------------------------------------------------
|
|
327
|
-
* ✅ ***Real-world usage example***:
|
|
328
|
-
* ```ts
|
|
329
|
-
* const mixedValue: string | bigint | undefined = getUserInput();
|
|
330
|
-
*
|
|
331
|
-
* // Runtime assertion: throws if `mixedValue` is not a `bigint`
|
|
332
|
-
* assertIsBigInt(mixedValue, {
|
|
333
|
-
* errorType: "RangeError",
|
|
334
|
-
* message: "Must be bigint!"
|
|
335
|
-
* });
|
|
336
|
-
*
|
|
337
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `bigint` here
|
|
338
|
-
* const result: bigint = mixedValue; // ➔ Safe type assignment
|
|
339
|
-
* console.log(result + 100n); // ➔ Safe to operation
|
|
340
|
-
* ```
|
|
341
|
-
*/
|
|
342
|
-
declare const assertIsBigInt: (value: unknown, options?: OptionsAssertIs) => asserts value is bigint;
|
|
343
|
-
type OptionsAssertIsNumber = OptionsAssertIs & IsNumberOptions;
|
|
344
|
-
/** -------------------------------------------------------
|
|
345
|
-
* * ***Type guard assertion: `assertIsNumber`.***
|
|
346
|
-
* -------------------------------------------------------
|
|
347
|
-
* **This function is an **assertion function**.**
|
|
348
|
-
* - **Behavior:**
|
|
349
|
-
* - Validates that the given `value` is a **number**.
|
|
350
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `number`.
|
|
351
|
-
* - ✅ If `value` is a `number` ➔ execution continues normally.
|
|
352
|
-
* - ❌ If `value` is not a `number` ➔ throws a built-in error with either:
|
|
353
|
-
* - A custom error message (`options.message`), or
|
|
354
|
-
* - A default message including the actual type.
|
|
355
|
-
* - **ℹ️ Note:**
|
|
356
|
-
* - A `number` refers strictly to the JavaScript `number` primitive type (e.g., `42`, `3.14`, `-1`, `0`).
|
|
357
|
-
* - This excludes `Number` objects created with `new Number(123)`.
|
|
358
|
-
* - By default, `NaN` is **not considered** valid, you can allow it with `{ includeNaN: true }`.
|
|
359
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
360
|
-
* - You can override the type of error thrown when validation fails.
|
|
361
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
362
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
363
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
364
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
365
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
366
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
367
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
368
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
369
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
370
|
-
* @param {*} value - ***The value to validate.***
|
|
371
|
-
* @param {OptionsAssertIsNumber} [options]
|
|
372
|
-
* ***Optional configuration:***
|
|
373
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
374
|
-
* - `errorType`: Built-in JavaScript error type to throw on failure (default `"TypeError"`).
|
|
375
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
376
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
377
|
-
* - `includeNaN`: Whether to treat `NaN` as valid.
|
|
378
|
-
* @returns {boolean} Narrows `value` to `number` if no error is thrown.
|
|
379
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if the value is not a number (or is `NaN` when `includeNaN` is `false`).
|
|
380
|
-
* @example
|
|
381
|
-
* ```ts
|
|
382
|
-
* // ✅ Simple usage
|
|
383
|
-
* assertIsNumber(123);
|
|
384
|
-
* assertIsNumber(NaN, { includeNaN: true });
|
|
385
|
-
* // No error, value is number
|
|
386
|
-
*
|
|
387
|
-
* // ❌ Throws TypeError (default behavior)
|
|
388
|
-
* // Case 1: Invalid input type — received a string instead of a number
|
|
389
|
-
* assertIsNumber("42");
|
|
390
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `number`, but received: `string`."
|
|
391
|
-
*
|
|
392
|
-
* // Case 2: Default option includeNaN is false
|
|
393
|
-
* assertIsNumber(NaN);
|
|
394
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `number`, but received: `NaN`."
|
|
395
|
-
*
|
|
396
|
-
* // Case 3: The new Number() is a Number object (constructor), not a primitive number
|
|
397
|
-
* assertIsNumber(new Number("123"));
|
|
398
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `number`, but received: `number-constructor`."
|
|
399
|
-
*
|
|
400
|
-
* // ❌ Throws custom error type (e.g., RangeError)
|
|
401
|
-
* assertIsNumber(async function () {}, { errorType: "RangeError" });
|
|
402
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `number`, but received: `async-function`."
|
|
403
|
-
*
|
|
404
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
405
|
-
* assertIsNumber("123", { message: "Must be a number!" });
|
|
406
|
-
* // ➔ TypeError: "Must be a number!"
|
|
407
|
-
*
|
|
408
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
409
|
-
* assertIsNumber(/regex/, {
|
|
410
|
-
* message: ({ currentType, validType }) => {
|
|
411
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
412
|
-
* },
|
|
413
|
-
* formatCase: "toPascalCaseSpace"
|
|
414
|
-
* });
|
|
415
|
-
* // ➔ TypeError: "Expected number but got (Reg Exp)."
|
|
416
|
-
*
|
|
417
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
418
|
-
* // Case 1:
|
|
419
|
-
* assertIsNumber(new URL("https://example.com"),{
|
|
420
|
-
* message: ({ currentType, validType }) => {
|
|
421
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
422
|
-
* },
|
|
423
|
-
* });
|
|
424
|
-
* // ➔ TypeError: "Expected number but got (url)."
|
|
425
|
-
* assertIsNumber(new URL("https://example.com"), {
|
|
426
|
-
* useAcronyms: true,
|
|
427
|
-
* message: ({ currentType, validType }) => {
|
|
428
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
429
|
-
* },
|
|
430
|
-
* });
|
|
431
|
-
* // ➔ TypeError: "Expected number but got (URL)."
|
|
432
|
-
*
|
|
433
|
-
* // Case 2:
|
|
434
|
-
* assertIsNumber(new URLSearchParams, {
|
|
435
|
-
* formatCase: "toPascalCase",
|
|
436
|
-
* message: ({ currentType, validType }) => {
|
|
437
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
438
|
-
* },
|
|
439
|
-
* });
|
|
440
|
-
* // ➔ TypeError: "Expected number but got (UrlSearchParams)."
|
|
441
|
-
* assertIsNumber(new URLSearchParams, {
|
|
442
|
-
* useAcronyms: true,
|
|
443
|
-
* formatCase: "toPascalCase",
|
|
444
|
-
* message: ({ currentType, validType }) => {
|
|
445
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
446
|
-
* },
|
|
447
|
-
* });
|
|
448
|
-
* // ➔ TypeError: "Expected number but got (URLSearchParams)."
|
|
449
|
-
* ```
|
|
450
|
-
* -------------------------------------------------------
|
|
451
|
-
* ✅ ***Real-world usage example***:
|
|
452
|
-
* ```ts
|
|
453
|
-
* const mixedValue: string | number | undefined = getUserInput();
|
|
454
|
-
*
|
|
455
|
-
* // Runtime assertion: throws if `mixedValue` is not a `number`
|
|
456
|
-
* assertIsNumber(mixedValue, {
|
|
457
|
-
* errorType: "RangeError",
|
|
458
|
-
* message: "Must be number!"
|
|
459
|
-
* });
|
|
460
|
-
*
|
|
461
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `number` here
|
|
462
|
-
* const result: number = mixedValue; // ➔ Safe type assignment
|
|
463
|
-
* console.log(result + 100); // ➔ Safe to operation
|
|
464
|
-
* ```
|
|
465
|
-
*/
|
|
466
|
-
declare const assertIsNumber: (value: unknown, options?: OptionsAssertIsNumber) => asserts value is number;
|
|
467
|
-
/** -------------------------------------------------------
|
|
468
|
-
* * ***Type guard assertion: `assertIsArray`.***
|
|
469
|
-
* -------------------------------------------------------
|
|
470
|
-
* **This function is an **assertion function**.**
|
|
471
|
-
* - **Behavior:**
|
|
472
|
-
* - Validates that the given `value` is an **array**.
|
|
473
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `array` **(generic support)**.
|
|
474
|
-
* - ✅ If `value` is an `array` ➔ execution continues normally.
|
|
475
|
-
* - ❌ If `value` is not an `array` ➔ throws a built-in error with either:
|
|
476
|
-
* - A custom error message (`options.message`), or
|
|
477
|
-
* - A default message including the actual type.
|
|
478
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
479
|
-
* - You can override the type of error thrown when validation fails.
|
|
480
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
481
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
482
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
483
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
484
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
485
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
486
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
487
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
488
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
489
|
-
* @template T - The input type being asserted.
|
|
490
|
-
* @param {*} value - ***The value to validate.***
|
|
491
|
-
* @param {OptionsAssertIs} [options]
|
|
492
|
-
* ***Optional configuration:***
|
|
493
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
494
|
-
* - `errorType`: Built-in JavaScript error type to throw on failure (default `"TypeError"`).
|
|
495
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
496
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
497
|
-
* @returns {boolean} Narrows `value` to an `array` **(generic support)** if no error is thrown.
|
|
498
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if the value is not an array.
|
|
499
|
-
* @example
|
|
500
|
-
* ```ts
|
|
501
|
-
* // ✅ Simple usage
|
|
502
|
-
* assertIsArray([]);
|
|
503
|
-
* assertIsArray(["123", 456]);
|
|
504
|
-
* assertIsArray(Array.from(["abc"]));
|
|
505
|
-
* // No error, value is array
|
|
506
|
-
*
|
|
507
|
-
* // ❌ Throws TypeError (default behavior)
|
|
508
|
-
* // Case 1: Invalid input type — received a string instead of a array
|
|
509
|
-
* assertIsArray("42");
|
|
510
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `array`, but received: `string`."
|
|
511
|
-
*
|
|
512
|
-
* // ❌ Throws custom error type (e.g., RangeError)
|
|
513
|
-
* assertIsArray(async function () {}, { errorType: "RangeError" });
|
|
514
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `array`, but received: `async-function`."
|
|
515
|
-
*
|
|
516
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
517
|
-
* assertIsArray("123", { message: "Must be a array!" });
|
|
518
|
-
* // ➔ TypeError: "Must be a array!"
|
|
519
|
-
*
|
|
520
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
521
|
-
* assertIsArray(/regex/, {
|
|
522
|
-
* message: ({ currentType, validType }) => {
|
|
523
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
524
|
-
* },
|
|
525
|
-
* formatCase: "toPascalCaseSpace"
|
|
526
|
-
* });
|
|
527
|
-
* // ➔ TypeError: "Expected array but got (Reg Exp)."
|
|
528
|
-
*
|
|
529
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
530
|
-
* // Case 1:
|
|
531
|
-
* assertIsArray(new URL("https://example.com"),{
|
|
532
|
-
* message: ({ currentType, validType }) => {
|
|
533
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
534
|
-
* },
|
|
535
|
-
* });
|
|
536
|
-
* // ➔ TypeError: "Expected array but got (url)."
|
|
537
|
-
* assertIsArray(new URL("https://example.com"), {
|
|
538
|
-
* useAcronyms: true,
|
|
539
|
-
* message: ({ currentType, validType }) => {
|
|
540
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
541
|
-
* },
|
|
542
|
-
* });
|
|
543
|
-
* // ➔ TypeError: "Expected array but got (URL)."
|
|
544
|
-
*
|
|
545
|
-
* // Case 2:
|
|
546
|
-
* assertIsArray(new URLSearchParams, {
|
|
547
|
-
* formatCase: "toPascalCase",
|
|
548
|
-
* message: ({ currentType, validType }) => {
|
|
549
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
550
|
-
* },
|
|
551
|
-
* });
|
|
552
|
-
* // ➔ TypeError: "Expected array but got (UrlSearchParams)."
|
|
553
|
-
* assertIsArray(new URLSearchParams, {
|
|
554
|
-
* useAcronyms: true,
|
|
555
|
-
* formatCase: "toPascalCase",
|
|
556
|
-
* message: ({ currentType, validType }) => {
|
|
557
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
558
|
-
* },
|
|
559
|
-
* });
|
|
560
|
-
* // ➔ TypeError: "Expected array but got (URLSearchParams)."
|
|
561
|
-
* ```
|
|
562
|
-
* -------------------------------------------------------
|
|
563
|
-
* ✅ ***Real-world usage example***:
|
|
564
|
-
* ```ts
|
|
565
|
-
* const mixedValue: string | number[] | undefined = getUserInput();
|
|
566
|
-
*
|
|
567
|
-
* // Runtime assertion: throws if `mixedValue` is not a `number[]`
|
|
568
|
-
* assertIsArray(mixedValue, {
|
|
569
|
-
* errorType: "RangeError",
|
|
570
|
-
* message: "Must be array!"
|
|
571
|
-
* });
|
|
572
|
-
*
|
|
573
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `number[]` here
|
|
574
|
-
* const result: number[] = mixedValue; // ➔ Safe type assignment
|
|
575
|
-
* console.log(result.push(1, 2, 3)); // ➔ Safe to use array methods
|
|
576
|
-
* ```
|
|
577
|
-
*/
|
|
578
|
-
declare function assertIsArray(value: [], options?: OptionsAssertIs): asserts value is [];
|
|
579
|
-
declare function assertIsArray<T>(value: T, options?: OptionsAssertIs): asserts value is ArrayFallback<T>;
|
|
580
|
-
declare function assertIsArray(value: unknown, options?: OptionsAssertIs): asserts value is unknown[];
|
|
581
|
-
/** -------------------------------------------------------
|
|
582
|
-
* * ***Type guard assertion: `assertIsPlainObject`.***
|
|
583
|
-
* -------------------------------------------------------
|
|
584
|
-
* **This function is an **assertion function**.**
|
|
585
|
-
* - **Behavior:**
|
|
586
|
-
* - Validates that the given `value` is a **plain-object**.
|
|
587
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `plain-object` **(generic support)**.
|
|
588
|
-
* - ✅ If `value` is a `plain-object` ➔ execution continues normally.
|
|
589
|
-
* - ❌ If `value` is not a `plain-object` ➔ throws a built-in error with either:
|
|
590
|
-
* - A custom error message (`options.message`), or
|
|
591
|
-
* - A default message including the actual type.
|
|
592
|
-
* - **A valid `plain object` is:**
|
|
593
|
-
* - Created by the `Object` constructor, or
|
|
594
|
-
* - Has a `[[Prototype]]` of `null` (e.g. `Object.create(null)`).
|
|
595
|
-
* - **✅ Returns `undefined` (valid) for:**
|
|
596
|
-
* - Empty object literals: `{}`
|
|
597
|
-
* - Objects with null prototype: `Object.create(null)`
|
|
598
|
-
* - **❌ Returns `throws` for:**
|
|
599
|
-
* - Arrays (`[]`, `new Array()`)
|
|
600
|
-
* - Functions (regular, arrow, or class constructors)
|
|
601
|
-
* - Built-in objects: `Date`, `RegExp`, `Error`, `Map`, `Set`, `WeakMap`, `WeakSet`
|
|
602
|
-
* - Boxed primitives: `new String()`, `new Number()`, `new Boolean()`
|
|
603
|
-
* - `null` or `undefined`
|
|
604
|
-
* - Symbols
|
|
605
|
-
* - Class instances
|
|
606
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
607
|
-
* - You can override the type of error thrown when validation fails.
|
|
608
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
609
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
610
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
611
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
612
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
613
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
614
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
615
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
616
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
617
|
-
* @template T - The input type being asserted.
|
|
618
|
-
* @param {*} value - ***The value to validate.***
|
|
619
|
-
* @param {OptionsAssertIs} [options]
|
|
620
|
-
* ***Optional configuration:***
|
|
621
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
622
|
-
* - `errorType`: Built-in JavaScript error type to throw on failure (default `"TypeError"`).
|
|
623
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
624
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
625
|
-
* @returns {boolean} Narrows `value` to a `plain-object` **(generic support)** if no error is thrown.
|
|
626
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if `value` is not a plain-object.
|
|
627
|
-
* @example
|
|
628
|
-
* ```ts
|
|
629
|
-
* // ✅ Simple usage
|
|
630
|
-
* assertIsPlainObject({ a: 1, b: 2 });
|
|
631
|
-
* // No error, value is plain-object
|
|
632
|
-
*
|
|
633
|
-
* // ❌ Throws TypeError (default behavior)
|
|
634
|
-
* // Case 1: Invalid input type — received a string instead of a plain-object
|
|
635
|
-
* assertIsPlainObject("42");
|
|
636
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `plain-object`, but received: `string`."
|
|
637
|
-
*
|
|
638
|
-
* // ❌ Throws custom error type (e.g., RangeError)
|
|
639
|
-
* assertIsPlainObject(async function () {}, { errorType: "RangeError" });
|
|
640
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `plain-object`, but received: `async-function`."
|
|
641
|
-
*
|
|
642
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
643
|
-
* assertIsPlainObject("123", { message: "Must be a plain-object!" });
|
|
644
|
-
* // ➔ TypeError: "Must be a plain-object!"
|
|
645
|
-
*
|
|
646
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
647
|
-
* assertIsPlainObject(/regex/, {
|
|
648
|
-
* message: ({ currentType, validType }) => {
|
|
649
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
650
|
-
* },
|
|
651
|
-
* formatCase: "toPascalCaseSpace"
|
|
652
|
-
* });
|
|
653
|
-
* // ➔ TypeError: "Expected plain-object but got (Reg Exp)."
|
|
654
|
-
*
|
|
655
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
656
|
-
* // Case 1:
|
|
657
|
-
* assertIsPlainObject(new URL("https://example.com"),{
|
|
658
|
-
* message: ({ currentType, validType }) => {
|
|
659
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
660
|
-
* },
|
|
661
|
-
* });
|
|
662
|
-
* // ➔ TypeError: "Expected plain-object but got (url)."
|
|
663
|
-
* assertIsPlainObject(new URL("https://example.com"), {
|
|
664
|
-
* useAcronyms: true,
|
|
665
|
-
* message: ({ currentType, validType }) => {
|
|
666
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
667
|
-
* },
|
|
668
|
-
* });
|
|
669
|
-
* // ➔ TypeError: "Expected plain-object but got (URL)."
|
|
670
|
-
*
|
|
671
|
-
* // Case 2:
|
|
672
|
-
* assertIsPlainObject(new URLSearchParams, {
|
|
673
|
-
* formatCase: "toPascalCase",
|
|
674
|
-
* message: ({ currentType, validType }) => {
|
|
675
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
676
|
-
* },
|
|
677
|
-
* });
|
|
678
|
-
* // ➔ TypeError: "Expected plain-object but got (UrlSearchParams)."
|
|
679
|
-
* assertIsPlainObject(new URLSearchParams, {
|
|
680
|
-
* useAcronyms: true,
|
|
681
|
-
* formatCase: "toPascalCase",
|
|
682
|
-
* message: ({ currentType, validType }) => {
|
|
683
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
684
|
-
* },
|
|
685
|
-
* });
|
|
686
|
-
* // ➔ TypeError: "Expected plain-object but got (URLSearchParams)."
|
|
687
|
-
* ```
|
|
688
|
-
* -------------------------------------------------------
|
|
689
|
-
* ✅ ***Real-world usage with generic narrowing***:
|
|
690
|
-
* ```ts
|
|
691
|
-
* type User = { name: string; email: string };
|
|
692
|
-
* const mixedValue: string | User | boolean | number | undefined = getUserInput();
|
|
693
|
-
*
|
|
694
|
-
* // Runtime assertion: throws if `mixedValue` is not a `plain-object`
|
|
695
|
-
* assertIsPlainObject(mixedValue, {
|
|
696
|
-
* errorType: "RangeError",
|
|
697
|
-
* message: "Must be plain object!"
|
|
698
|
-
* });
|
|
699
|
-
*
|
|
700
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `User` here
|
|
701
|
-
* const user: User = mixedValue; // ➔ Safe type assignment
|
|
702
|
-
* console.log(user.email); // ➔ Safe to access object properties
|
|
703
|
-
* ```
|
|
704
|
-
*/
|
|
705
|
-
declare function assertIsPlainObject<T>(value: T, options?: OptionsAssertIs): asserts value is IsPlainObjectResult<T>;
|
|
706
|
-
/** -------------------------------------------------------
|
|
707
|
-
* * ***Type guard assertion: `assertIsString`.***
|
|
708
|
-
* -------------------------------------------------------
|
|
709
|
-
* **This function is an **assertion function**.**
|
|
710
|
-
* - **Behavior:**
|
|
711
|
-
* - Validates that the given `value` is a **primitive-string**.
|
|
712
|
-
* - After it returns successfully, TypeScript narrows the type of `value` to `primitive-string`.
|
|
713
|
-
* - ✅ If `value` is a `primitive-string` ➔ execution continues normally.
|
|
714
|
-
* - ❌ If `value` is not a `primitive-string` ➔ throws a built-in error with either:
|
|
715
|
-
* - A custom error message (`options.message`), or
|
|
716
|
-
* - A default message including the actual type.
|
|
717
|
-
* - **ℹ️ Note:**
|
|
718
|
-
* - A "string" refers strictly to a JavaScript `primitive-string` type (e.g., `"hello"`, `""`, `"123"`).
|
|
719
|
-
* - This function excludes `String` objects created with `new String()`.
|
|
720
|
-
* - **⚠️ Error type selection (`options.errorType`):**
|
|
721
|
-
* - You can override the type of error thrown when validation fails.
|
|
722
|
-
* - Must be one of the standard JavaScript built-in errors:
|
|
723
|
-
* - [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) |
|
|
724
|
-
* [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) |
|
|
725
|
-
* [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) |
|
|
726
|
-
* [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) |
|
|
727
|
-
* [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) |
|
|
728
|
-
* [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) |
|
|
729
|
-
* [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError)
|
|
730
|
-
* - **Default:** `"TypeError"` if not provided or invalid.
|
|
731
|
-
* @param {*} value - ***The value to validate.***
|
|
732
|
-
* @param {OptionsAssertIs} [options]
|
|
733
|
-
* ***Optional configuration:***
|
|
734
|
-
* - `message`: A custom error message (`string` or `function`).
|
|
735
|
-
* - `errorType`: Built-in JavaScript error type to throw on failure (default `"TypeError"`).
|
|
736
|
-
* - `formatCase`: Controls how detected type names are formatted case in error messages.
|
|
737
|
-
* - `useAcronyms`: Control uppercase preservation of recognized acronyms during formatting.
|
|
738
|
-
* @returns {boolean} Narrows `value` to `string` if no error is thrown.
|
|
739
|
-
* @throws [`TypeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError) | [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error) | [`EvalError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/EvalError) | [`RangeError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RangeError) | [`ReferenceError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError) | [`SyntaxError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError) | [`URIError`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/URIError) if the value is not a primitive string.
|
|
740
|
-
* @example
|
|
741
|
-
* ```ts
|
|
742
|
-
* // ✅ Simple usage
|
|
743
|
-
* assertIsString("hello");
|
|
744
|
-
* // No error, value is string
|
|
745
|
-
*
|
|
746
|
-
* // ❌ Throws TypeError (default behavior)
|
|
747
|
-
* // Case 1: Invalid input type — received a string instead of a string
|
|
748
|
-
* assertIsString(42);
|
|
749
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `string`, but received: `number`."
|
|
750
|
-
*
|
|
751
|
-
* // Case 3: The new String() is a String object (constructor), not a primitive string
|
|
752
|
-
* assertIsString(new String("abc"));
|
|
753
|
-
* // ➔ TypeError: "Parameter input (`value`) must be of type `string`, but received: `string-constructor`."
|
|
754
|
-
*
|
|
755
|
-
* // ❌ Throws custom error type (e.g., RangeError)
|
|
756
|
-
* assertIsString(async function () {}, { errorType: "RangeError" });
|
|
757
|
-
* // ➔ RangeError: "Parameter input (`value`) must be of type `string`, but received: `async-function`."
|
|
758
|
-
*
|
|
759
|
-
* // ❌ Throws a TypeError with a custom string static message
|
|
760
|
-
* assertIsString(123, { message: "Must be a string!" });
|
|
761
|
-
* // ➔ TypeError: "Must be a string!"
|
|
762
|
-
*
|
|
763
|
-
* // ❌ Throws a TypeError with a custom message function and formatCase
|
|
764
|
-
* assertIsString(/regex/, {
|
|
765
|
-
* message: ({ currentType, validType }) => {
|
|
766
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
767
|
-
* },
|
|
768
|
-
* formatCase: "toPascalCaseSpace"
|
|
769
|
-
* });
|
|
770
|
-
* // ➔ TypeError: "Expected string but got (Reg Exp)."
|
|
771
|
-
*
|
|
772
|
-
* // ❌ Throws a TypeError with a custom useAcronyms option
|
|
773
|
-
* // Case 1:
|
|
774
|
-
* assertIsString(new URL("https://example.com"),{
|
|
775
|
-
* message: ({ currentType, validType }) => {
|
|
776
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
777
|
-
* },
|
|
778
|
-
* });
|
|
779
|
-
* // ➔ TypeError: "Expected string but got (url)."
|
|
780
|
-
* assertIsString(new URL("https://example.com"), {
|
|
781
|
-
* useAcronyms: true,
|
|
782
|
-
* message: ({ currentType, validType }) => {
|
|
783
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
784
|
-
* },
|
|
785
|
-
* });
|
|
786
|
-
* // ➔ TypeError: "Expected string but got (URL)."
|
|
787
|
-
*
|
|
788
|
-
* // Case 2:
|
|
789
|
-
* assertIsString(new URLSearchParams, {
|
|
790
|
-
* formatCase: "toPascalCase",
|
|
791
|
-
* message: ({ currentType, validType }) => {
|
|
792
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
793
|
-
* },
|
|
794
|
-
* });
|
|
795
|
-
* // ➔ TypeError: "Expected string but got (UrlSearchParams)."
|
|
796
|
-
* assertIsString(new URLSearchParams, {
|
|
797
|
-
* useAcronyms: true,
|
|
798
|
-
* formatCase: "toPascalCase",
|
|
799
|
-
* message: ({ currentType, validType }) => {
|
|
800
|
-
* return `Expected ${validType} but got (${currentType}).`
|
|
801
|
-
* },
|
|
802
|
-
* });
|
|
803
|
-
* // ➔ TypeError: "Expected string but got (URLSearchParams)."
|
|
804
|
-
* ```
|
|
805
|
-
* -------------------------------------------------------
|
|
806
|
-
* ✅ ***Real-world usage with generic narrowing***:
|
|
807
|
-
* ```ts
|
|
808
|
-
* const mixedValue: string | boolean | undefined = getUserInput();
|
|
809
|
-
*
|
|
810
|
-
* // Runtime assertion: throws if `mixedValue` is not a `string`
|
|
811
|
-
* assertIsString(mixedValue, {
|
|
812
|
-
* errorType: "RangeError",
|
|
813
|
-
* message: "Must be a string!"
|
|
814
|
-
* });
|
|
815
|
-
*
|
|
816
|
-
* // ✅ If no error thrown, TypeScript narrows `mixedValue` to `string` here
|
|
817
|
-
* const result: string = mixedValue; // ➔ Safe type assignment
|
|
818
|
-
* console.log(result.toUpperCase()); // ➔ Safe to call String.prototype methods
|
|
819
|
-
* ```
|
|
820
|
-
*/
|
|
821
|
-
declare const assertIsString: (value: unknown, options?: OptionsAssertIs) => asserts value is string;
|
|
822
|
-
export { assertIsBigInt as a, assertIsNumber as i, assertIsPlainObject as n, assertIsBoolean as o, assertIsArray as r, assertIsString as t };
|