@rzl-zone/utils-js 3.12.0 → 3.12.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{LICENSE.md → LICENSE} +3 -3
- package/README.md +62 -89
- package/dist/.references/index.d.cts +25 -0
- package/dist/.references/index.d.ts +25 -0
- package/dist/assertIsArray-BChqwPiP.cjs +26 -0
- package/dist/assertIsArray-BChqwPiP.cjs.map +1 -0
- package/dist/assertIsArray-BfAbIUfa.js +20 -0
- package/dist/assertIsArray-BfAbIUfa.js.map +1 -0
- package/dist/assertIsBoolean-BlBct0Fc.js +1073 -0
- package/dist/assertIsBoolean-BlBct0Fc.js.map +1 -0
- package/dist/assertIsBoolean-DozdtbNi.cjs +1283 -0
- package/dist/assertIsBoolean-DozdtbNi.cjs.map +1 -0
- package/dist/assertIsString-Bvk7bUL7.cjs +26 -0
- package/dist/assertIsString-Bvk7bUL7.cjs.map +1 -0
- package/dist/assertIsString-DqV9NwbI.js +20 -0
- package/dist/assertIsString-DqV9NwbI.js.map +1 -0
- package/dist/assertions/index.cjs +37 -40
- package/dist/assertions/index.cjs.map +1 -0
- package/dist/assertions/index.d.cts +12 -0
- package/dist/assertions/index.d.ts +10 -824
- package/dist/assertions/index.js +30 -13
- package/dist/assertions/index.js.map +1 -0
- package/dist/conversions/index.cjs +34 -103
- package/dist/conversions/index.d.cts +12 -0
- package/dist/conversions/index.d.ts +10 -1791
- package/dist/conversions/index.js +14 -24
- package/dist/conversions-CBs8-REq.cjs +448 -0
- package/dist/conversions-CBs8-REq.cjs.map +1 -0
- package/dist/conversions-EMJa3g-D.js +382 -0
- package/dist/conversions-EMJa3g-D.js.map +1 -0
- package/dist/events/index.cjs +55 -31
- package/dist/events/index.cjs.map +1 -0
- package/dist/events/index.d.cts +174 -0
- package/dist/events/index.d.ts +31 -35
- package/dist/events/index.js +50 -12
- package/dist/events/index.js.map +1 -0
- package/dist/formatEnvPort-DpIXzPAZ.js +159 -0
- package/dist/formatEnvPort-DpIXzPAZ.js.map +1 -0
- package/dist/formatEnvPort-hHNvOim-.cjs +171 -0
- package/dist/formatEnvPort-hHNvOim-.cjs.map +1 -0
- package/dist/formatters/index.cjs +21 -61
- package/dist/formatters/index.d.cts +12 -0
- package/dist/formatters/index.d.ts +10 -2152
- package/dist/formatters/index.js +10 -18
- package/dist/formatters-QcZO_Cpx.js +367 -0
- package/dist/formatters-QcZO_Cpx.js.map +1 -0
- package/dist/formatters-lAYgA11L.cjs +427 -0
- package/dist/formatters-lAYgA11L.cjs.map +1 -0
- package/dist/generators/index.cjs +161 -41
- package/dist/generators/index.cjs.map +1 -0
- package/dist/generators/index.d.cts +12 -0
- package/dist/generators/index.d.ts +10 -338
- package/dist/generators/index.js +154 -14
- package/dist/generators/index.js.map +1 -0
- package/dist/index-26W7ItWx.d.ts +760 -0
- package/dist/index-BPPQjAfs.d.cts +2359 -0
- package/dist/index-BXjlgBLz.d.cts +2139 -0
- package/dist/index-B_Wwo91H.d.ts +2359 -0
- package/dist/index-CpufydcI.d.cts +704 -0
- package/dist/index-Czc4O526.d.ts +333 -0
- package/dist/index-DPs1_p5G.d.cts +760 -0
- package/dist/index-DRpOyBSC.d.ts +1703 -0
- package/dist/index-DWWvtHUn.d.cts +822 -0
- package/dist/index-DnM0LD0n.d.cts +333 -0
- package/dist/index-GUZ9fK6T.d.ts +2139 -0
- package/dist/index-I4fAzwXV.d.ts +704 -0
- package/dist/index-JDrOl_19.d.ts +822 -0
- package/dist/index-b66P49Qe.d.cts +1703 -0
- package/dist/isBigInt-B1cijjqm.cjs +20 -0
- package/dist/isBigInt-B1cijjqm.cjs.map +1 -0
- package/dist/isBigInt-C0bN0Rhu.js +14 -0
- package/dist/isBigInt-C0bN0Rhu.js.map +1 -0
- package/dist/isEmptyObject-DI42NEo0.cjs +37 -0
- package/dist/isEmptyObject-DI42NEo0.cjs.map +1 -0
- package/dist/isEmptyObject-DeLVIJpl.js +25 -0
- package/dist/isEmptyObject-DeLVIJpl.js.map +1 -0
- package/dist/isEmptyString-BTUWYTbw.js +15 -0
- package/dist/isEmptyString-BTUWYTbw.js.map +1 -0
- package/dist/isEmptyString-CCK3bP74.cjs +21 -0
- package/dist/isEmptyString-CCK3bP74.cjs.map +1 -0
- package/dist/isEmptyValue-DMSMFTU8.cjs +30 -0
- package/dist/isEmptyValue-DMSMFTU8.cjs.map +1 -0
- package/dist/isEmptyValue-fjnfQnt5.js +24 -0
- package/dist/isEmptyValue-fjnfQnt5.js.map +1 -0
- package/dist/isEqual-B1fRgEuU.cjs +111 -0
- package/dist/isEqual-B1fRgEuU.cjs.map +1 -0
- package/dist/isEqual-DhyP8fB_.js +87 -0
- package/dist/isEqual-DhyP8fB_.js.map +1 -0
- package/dist/isFinite-BYMOo0os.js +15 -0
- package/dist/isFinite-BYMOo0os.js.map +1 -0
- package/dist/isFinite-sFkps2TY.cjs +21 -0
- package/dist/isFinite-sFkps2TY.cjs.map +1 -0
- package/dist/isInteger-DS9V7l_f.js +14 -0
- package/dist/isInteger-DS9V7l_f.js.map +1 -0
- package/dist/isInteger-FTCthMre.cjs +20 -0
- package/dist/isInteger-FTCthMre.cjs.map +1 -0
- package/dist/isPlainObject-DcFGh3_5.d.ts +530 -0
- package/dist/isPlainObject-doTI11Ib.d.cts +530 -0
- package/dist/isServer-D1TXfOs3.js +14 -0
- package/dist/isServer-D1TXfOs3.js.map +1 -0
- package/dist/isServer-q-QLFCqE.cjs +20 -0
- package/dist/isServer-q-QLFCqE.cjs.map +1 -0
- package/dist/isTypedArray-47R0wdrc.js +31 -0
- package/dist/isTypedArray-47R0wdrc.js.map +1 -0
- package/dist/isTypedArray-DiCoqffZ.cjs +43 -0
- package/dist/isTypedArray-DiCoqffZ.cjs.map +1 -0
- package/dist/isURL-CQiowFq2.js +14 -0
- package/dist/isURL-CQiowFq2.js.map +1 -0
- package/dist/isURL-WZypXsax.cjs +20 -0
- package/dist/isURL-WZypXsax.cjs.map +1 -0
- package/dist/isValidDomain-BSXshgkC.cjs +1788 -0
- package/dist/isValidDomain-BSXshgkC.cjs.map +1 -0
- package/dist/isValidDomain-DwA2EN79.js +1782 -0
- package/dist/isValidDomain-DwA2EN79.js.map +1 -0
- package/dist/next/index.cjs +119 -214
- package/dist/next/index.cjs.map +1 -0
- package/dist/next/index.d.cts +226 -0
- package/dist/next/index.d.ts +26 -31
- package/dist/next/index.js +117 -212
- package/dist/next/index.js.map +1 -0
- package/dist/next/server/index.cjs +25 -40
- package/dist/next/server/index.cjs.map +1 -0
- package/dist/next/server/index.d.cts +39 -0
- package/dist/next/server/index.d.ts +9 -10
- package/dist/next/server/index.js +23 -38
- package/dist/next/server/index.js.map +1 -0
- package/dist/noop-B2mTBhW-.cjs +18 -0
- package/dist/noop-B2mTBhW-.cjs.map +1 -0
- package/dist/noop-BzktGBVz.js +12 -0
- package/dist/noop-BzktGBVz.js.map +1 -0
- package/dist/normalizeSpaces-DQHR3Tlr.cjs +29 -0
- package/dist/normalizeSpaces-DQHR3Tlr.cjs.map +1 -0
- package/dist/normalizeSpaces-WS_iERJk.js +23 -0
- package/dist/normalizeSpaces-WS_iERJk.js.map +1 -0
- package/dist/normalizeString-2WLth_Gj.js +15 -0
- package/dist/normalizeString-2WLth_Gj.js.map +1 -0
- package/dist/normalizeString-D8euBcRD.cjs +21 -0
- package/dist/normalizeString-D8euBcRD.cjs.map +1 -0
- package/dist/operations/index.cjs +65 -32
- package/dist/operations/index.cjs.map +1 -0
- package/dist/operations/index.d.cts +139 -0
- package/dist/operations/index.d.ts +10 -15
- package/dist/operations/index.js +61 -17
- package/dist/operations/index.js.map +1 -0
- package/dist/parsers/index.cjs +12 -19
- package/dist/parsers/index.d.cts +239 -0
- package/dist/parsers/index.d.ts +71 -72
- package/dist/parsers/index.js +10 -12
- package/dist/parsers-DXtpsDyj.cjs +649 -0
- package/dist/parsers-DXtpsDyj.cjs.map +1 -0
- package/dist/parsers-Dpuq-V4u.js +643 -0
- package/dist/parsers-Dpuq-V4u.js.map +1 -0
- package/dist/parsing-B43x1sxn.js +50 -0
- package/dist/parsing-B43x1sxn.js.map +1 -0
- package/dist/parsing-lRoxn1Nz.cjs +56 -0
- package/dist/parsing-lRoxn1Nz.cjs.map +1 -0
- package/dist/predicates/index.cjs +91 -296
- package/dist/predicates/index.d.cts +13 -0
- package/dist/predicates/index.d.ts +12 -2482
- package/dist/predicates/index.js +23 -25
- package/dist/predicates-DiaYA7Ps.cjs +413 -0
- package/dist/predicates-DiaYA7Ps.cjs.map +1 -0
- package/dist/predicates-gNepszvo.js +257 -0
- package/dist/predicates-gNepszvo.js.map +1 -0
- package/dist/promises/index.cjs +76 -24
- package/dist/promises/index.cjs.map +1 -0
- package/dist/promises/index.d.cts +123 -0
- package/dist/promises/index.d.ts +28 -31
- package/dist/promises/index.js +73 -13
- package/dist/promises/index.js.map +1 -0
- package/dist/punyCode-CTWXVVFo.cjs +185 -0
- package/dist/punyCode-CTWXVVFo.cjs.map +1 -0
- package/dist/punyCode-hmiFzLWT.js +179 -0
- package/dist/punyCode-hmiFzLWT.js.map +1 -0
- package/dist/removeSpaces-BE8lfh-4.js +19 -0
- package/dist/removeSpaces-BE8lfh-4.js.map +1 -0
- package/dist/removeSpaces-DRRxNWlb.cjs +25 -0
- package/dist/removeSpaces-DRRxNWlb.cjs.map +1 -0
- package/dist/safeJsonParse-BBnQElk8.cjs +208 -0
- package/dist/safeJsonParse-BBnQElk8.cjs.map +1 -0
- package/dist/safeJsonParse-CXruaP0p.js +184 -0
- package/dist/safeJsonParse-CXruaP0p.js.map +1 -0
- package/dist/safeStableStringify-BNh3D0K0.js +88 -0
- package/dist/safeStableStringify-BNh3D0K0.js.map +1 -0
- package/dist/safeStableStringify-Cc62pfRp.cjs +106 -0
- package/dist/safeStableStringify-Cc62pfRp.cjs.map +1 -0
- package/dist/strings/index.cjs +76 -81
- package/dist/strings/index.cjs.map +1 -0
- package/dist/strings/index.d.cts +12 -0
- package/dist/strings/index.d.ts +10 -775
- package/dist/strings/index.js +59 -14
- package/dist/strings/index.js.map +1 -0
- package/dist/tailwind/index.cjs +19 -47
- package/dist/tailwind/index.d.cts +12 -0
- package/dist/tailwind/index.d.ts +11 -712
- package/dist/tailwind/index.js +10 -12
- package/dist/tailwind-DJ4cmLUw.cjs +247 -0
- package/dist/tailwind-DJ4cmLUw.cjs.map +1 -0
- package/dist/tailwind-IJvOdkZp.js +199 -0
- package/dist/tailwind-IJvOdkZp.js.map +1 -0
- package/dist/toStringArrayUnRecursive-CFs0jTEg.js +39 -0
- package/dist/toStringArrayUnRecursive-CFs0jTEg.js.map +1 -0
- package/dist/toStringArrayUnRecursive-xUaU8Ot9.cjs +51 -0
- package/dist/toStringArrayUnRecursive-xUaU8Ot9.cjs.map +1 -0
- package/dist/urls/index.cjs +129 -57
- package/dist/urls/index.cjs.map +1 -0
- package/dist/urls/index.d.cts +740 -0
- package/dist/urls/index.d.ts +218 -224
- package/dist/urls/index.js +121 -26
- package/dist/urls/index.js.map +1 -0
- package/package.json +203 -194
- package/dist/chunk-2AFQ33D3.cjs +0 -64
- package/dist/chunk-2CYDJVGM.js +0 -246
- package/dist/chunk-2MW4JDQ2.cjs +0 -598
- package/dist/chunk-2VTDXC3N.cjs +0 -1825
- package/dist/chunk-44XX2P34.js +0 -209
- package/dist/chunk-4YLBKLGS.cjs +0 -18
- package/dist/chunk-566CXQW7.cjs +0 -560
- package/dist/chunk-57EPKYID.cjs +0 -397
- package/dist/chunk-5MGEC3YG.js +0 -63
- package/dist/chunk-6EF52423.cjs +0 -249
- package/dist/chunk-6SCOKU3S.js +0 -109
- package/dist/chunk-6VUXD3CF.js +0 -119
- package/dist/chunk-7B76BSNK.cjs +0 -118
- package/dist/chunk-7Y6I2DSU.cjs +0 -101
- package/dist/chunk-A7S7E2EE.cjs +0 -308
- package/dist/chunk-AJZ6PMMZ.js +0 -16
- package/dist/chunk-AXGBL2IO.cjs +0 -251
- package/dist/chunk-B4TC6FBV.cjs +0 -678
- package/dist/chunk-BAV5T2E3.cjs +0 -15
- package/dist/chunk-BKIJBNIE.js +0 -21
- package/dist/chunk-BNIMTFK5.js +0 -59
- package/dist/chunk-BXW7YXB7.js +0 -1823
- package/dist/chunk-CFYZC4S6.js +0 -53
- package/dist/chunk-CSG4SCL3.js +0 -1587
- package/dist/chunk-CWQW7AKK.js +0 -676
- package/dist/chunk-DVMHRLKP.cjs +0 -16
- package/dist/chunk-EN7LVZBZ.js +0 -548
- package/dist/chunk-EV4Y7HCY.cjs +0 -26
- package/dist/chunk-F66VDYIZ.cjs +0 -18
- package/dist/chunk-FLJX37EL.cjs +0 -30
- package/dist/chunk-GKC3UDMC.cjs +0 -1623
- package/dist/chunk-H65I3GRZ.cjs +0 -106
- package/dist/chunk-HHYWB7VZ.js +0 -24
- package/dist/chunk-HNGGISFL.cjs +0 -65
- package/dist/chunk-HNSQAVSZ.cjs +0 -35
- package/dist/chunk-HSP6IWZK.js +0 -17
- package/dist/chunk-IDZS7J6T.js +0 -242
- package/dist/chunk-JS6R55VL.js +0 -302
- package/dist/chunk-JZVT5FK7.js +0 -232
- package/dist/chunk-KHO2SBNA.cjs +0 -16
- package/dist/chunk-KIDJCMNJ.js +0 -33
- package/dist/chunk-KOLEURVT.cjs +0 -38
- package/dist/chunk-L4V53MQK.cjs +0 -269
- package/dist/chunk-L5RDAVVH.js +0 -14
- package/dist/chunk-NODTV4F3.js +0 -16
- package/dist/chunk-NYK5K3V2.cjs +0 -211
- package/dist/chunk-ODUO3RTL.cjs +0 -113
- package/dist/chunk-ONZFBJVW.js +0 -14
- package/dist/chunk-PFXCTE37.js +0 -28
- package/dist/chunk-PPST7QAQ.js +0 -587
- package/dist/chunk-Q5IMYDFL.cjs +0 -33
- package/dist/chunk-QFFBIOJ4.js +0 -31
- package/dist/chunk-QNKGP5DY.js +0 -14
- package/dist/chunk-RRQHMOPE.cjs +0 -19
- package/dist/chunk-RU5OSRBU.js +0 -95
- package/dist/chunk-SDMPEJ4F.js +0 -35
- package/dist/chunk-SYNL5IKP.js +0 -115
- package/dist/chunk-TCDOWZQE.js +0 -16
- package/dist/chunk-TQPGXGKB.cjs +0 -123
- package/dist/chunk-TULOI4GL.js +0 -370
- package/dist/chunk-UBHCP4N5.cjs +0 -36
- package/dist/chunk-UCHF3M34.cjs +0 -56
- package/dist/chunk-UDA26MCU.cjs +0 -16
- package/dist/chunk-V3C4FYZL.cjs +0 -18
- package/dist/chunk-VAAHZFBF.js +0 -32
- package/dist/chunk-VJDDGRIK.cjs +0 -16
- package/dist/chunk-WVSPXFTY.js +0 -14
- package/dist/chunk-WYP76WXB.js +0 -101
- package/dist/chunk-YDE4ZBB7.cjs +0 -237
- package/dist/chunk-YKQEOO7C.cjs +0 -23
- package/dist/chunk-YSZC56SZ.js +0 -264
- package/dist/chunk-YWHHVDT4.js +0 -13
- package/dist/index.d.ts +0 -24
- package/dist/isPlainObject-DTJVV2Kf.d.ts +0 -536
- package/dist/rzl-utils.global.js +0 -10
|
@@ -0,0 +1,427 @@
|
|
|
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
|
+
"use strict";
|
|
11
|
+
const require_assertIsBoolean = require('./assertIsBoolean-DozdtbNi.cjs');
|
|
12
|
+
const require_assertIsString = require('./assertIsString-Bvk7bUL7.cjs');
|
|
13
|
+
const require_isFinite = require('./isFinite-sFkps2TY.cjs');
|
|
14
|
+
const require_safeStableStringify = require('./safeStableStringify-Cc62pfRp.cjs');
|
|
15
|
+
const require_isEmptyString = require('./isEmptyString-CCK3bP74.cjs');
|
|
16
|
+
const require_parsing = require('./parsing-lRoxn1Nz.cjs');
|
|
17
|
+
const require_isInteger = require('./isInteger-FTCthMre.cjs');
|
|
18
|
+
const require_normalizeSpaces = require('./normalizeSpaces-DQHR3Tlr.cjs');
|
|
19
|
+
let libphonenumber_js_max = require("libphonenumber-js/max");
|
|
20
|
+
let date_fns_locale = require("date-fns/locale");
|
|
21
|
+
let date_fns = require("date-fns");
|
|
22
|
+
const formatIndianNumber = ({ numStr, separator }) => {
|
|
23
|
+
const lastThree = numStr?.slice(-3);
|
|
24
|
+
const rest = numStr?.slice(0, -3);
|
|
25
|
+
if (!rest) return lastThree;
|
|
26
|
+
return rest.replace(/\B(?=(\d{2})+(?!\d))/g, separator) + separator + lastThree;
|
|
27
|
+
};
|
|
28
|
+
const formatCurrency = (value, options = {}) => {
|
|
29
|
+
if (!require_assertIsBoolean.isString(value) && !require_isFinite.isFinite(value)) throw new TypeError(`First parameter (\`value\`) must be of type \`string\` or \`primitive-number\`, but received: \`${require_assertIsBoolean.getPreciseType(value)}\`, with value: \`${require_safeStableStringify.safeStableStringify(value, { keepUndefined: true })}\`.`);
|
|
30
|
+
require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Second parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
31
|
+
const decimal = require_assertIsBoolean.hasOwnProp(options, "decimal") ? options.decimal : false;
|
|
32
|
+
const totalDecimal = require_assertIsBoolean.hasOwnProp(options, "totalDecimal") ? options.totalDecimal : 2;
|
|
33
|
+
const endDecimal = require_assertIsBoolean.hasOwnProp(options, "endDecimal") ? options.endDecimal : true;
|
|
34
|
+
const indianFormat = require_assertIsBoolean.hasOwnProp(options, "indianFormat") ? options.indianFormat : false;
|
|
35
|
+
const suffixCurrency = require_assertIsBoolean.hasOwnProp(options, "suffixCurrency") ? options.suffixCurrency : "";
|
|
36
|
+
const suffixDecimal = require_assertIsBoolean.hasOwnProp(options, "suffixDecimal") ? options.suffixDecimal : "";
|
|
37
|
+
const roundedDecimal = require_assertIsBoolean.hasOwnProp(options, "roundedDecimal") ? options.roundedDecimal : "round";
|
|
38
|
+
const negativeFormat = require_assertIsBoolean.hasOwnProp(options, "negativeFormat") ? options.negativeFormat : "dash";
|
|
39
|
+
let separatorDecimals = require_assertIsBoolean.hasOwnProp(options, "separatorDecimals") ? options.separatorDecimals : ",";
|
|
40
|
+
let separator = require_assertIsBoolean.hasOwnProp(options, "separator") ? options.separator : ".";
|
|
41
|
+
if (!require_assertIsBoolean.isString(separator) || !require_assertIsBoolean.isString(separatorDecimals) || !require_assertIsBoolean.isString(suffixCurrency) || !require_assertIsBoolean.isString(suffixDecimal)) throw new TypeError(`Parameter \`separator\`, \`separatorDecimals\`, \`suffixCurrency\` and \`suffixDecimal\` property of the \`options\` (second parameter) must be of type \`string\`, but received: ['separator': \`${require_assertIsBoolean.getPreciseType(separator)}\`, 'separatorDecimals': \`${require_assertIsBoolean.getPreciseType(separatorDecimals)}\`, 'suffixCurrency': \`${require_assertIsBoolean.getPreciseType(suffixCurrency)}\`, 'suffixDecimal': \`${require_assertIsBoolean.getPreciseType(suffixDecimal)}\`].`);
|
|
42
|
+
if (!require_assertIsBoolean.isBoolean(decimal) || !require_assertIsBoolean.isBoolean(endDecimal) || !require_assertIsBoolean.isBoolean(indianFormat)) throw new TypeError(`Parameter \`decimal\`, \`endDecimal\` and \`indianFormat\` property of the \`options\` (second parameter) must be of type \`boolean\`, but received: ['decimal': \`${require_assertIsBoolean.getPreciseType(decimal)}\`, 'endDecimal': \`${require_assertIsBoolean.getPreciseType(endDecimal)}\`, 'indianFormat': \`${require_assertIsBoolean.getPreciseType(indianFormat)}\`].`);
|
|
43
|
+
if (!require_isInteger.isInteger(totalDecimal)) throw new TypeError(`Parameter \`totalDecimal\` property of the \`options\` (second parameter) must be of type \`integer-number\`, but received: \`${require_assertIsBoolean.getPreciseType(totalDecimal)}\`, with value: \`${require_safeStableStringify.safeStableStringify(length, { keepUndefined: true })}\`.`);
|
|
44
|
+
if (!(roundedDecimal === false || roundedDecimal === "round" || roundedDecimal === "ceil" || roundedDecimal === "floor")) throw new TypeError(`Parameter \`roundedDecimal\` property of the \`options\` (second parameter) must be of type \`false\` or \`string\` must be one of "round" | "ceil" | "floor", but received: \`${require_assertIsBoolean.getPreciseType(roundedDecimal)}\`, with value: \`${require_safeStableStringify.safeStableStringify(roundedDecimal, { keepUndefined: true })}\`.`);
|
|
45
|
+
if (!(negativeFormat === "abs" || negativeFormat === "brackets" || negativeFormat === "dash" || require_assertIsBoolean.isPlainObject(negativeFormat))) throw new TypeError(`Parameter \`negativeFormat\` property of the \`options\` (second parameter) must be of type \`string\` must be one of "abs" | "brackets" | "dash" or \`plain-object\` type, but received: \`${require_assertIsBoolean.getPreciseType(negativeFormat)}\`, with value: \`${require_safeStableStringify.safeStableStringify(negativeFormat, { keepUndefined: true })}\`.`);
|
|
46
|
+
const rawNum = require_assertIsBoolean.isString(value) ? require_parsing.parseCurrencyString(value) : value;
|
|
47
|
+
if (require_assertIsBoolean.isNaN(rawNum)) throw new TypeError("First parameter (`value`) could not be parsed into a valid `number`.");
|
|
48
|
+
let integerPart;
|
|
49
|
+
let decimalPartRaw;
|
|
50
|
+
let num = Math.abs(rawNum);
|
|
51
|
+
const factor = Math.pow(10, totalDecimal);
|
|
52
|
+
if (roundedDecimal) {
|
|
53
|
+
const scaled = num * factor;
|
|
54
|
+
switch (roundedDecimal) {
|
|
55
|
+
case "round":
|
|
56
|
+
num = Math.round(scaled) / factor;
|
|
57
|
+
break;
|
|
58
|
+
case "ceil":
|
|
59
|
+
num = Math.ceil(scaled) / factor;
|
|
60
|
+
break;
|
|
61
|
+
case "floor":
|
|
62
|
+
num = Math.floor(scaled) / factor;
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (roundedDecimal) {
|
|
67
|
+
[integerPart, decimalPartRaw] = num.toFixed(totalDecimal).split(".");
|
|
68
|
+
decimalPartRaw = decimalPartRaw ?? "".padEnd(totalDecimal, "0");
|
|
69
|
+
} else {
|
|
70
|
+
const split = String(num).split(".");
|
|
71
|
+
integerPart = split[0];
|
|
72
|
+
decimalPartRaw = (split[1] || "").slice(0, totalDecimal).padEnd(totalDecimal, "0");
|
|
73
|
+
}
|
|
74
|
+
let formattedInteger;
|
|
75
|
+
if (indianFormat) {
|
|
76
|
+
separator = ",";
|
|
77
|
+
separatorDecimals = ".";
|
|
78
|
+
formattedInteger = (suffixCurrency.trim().length ? suffixCurrency : "") + formatIndianNumber({
|
|
79
|
+
numStr: integerPart,
|
|
80
|
+
separator
|
|
81
|
+
});
|
|
82
|
+
} else formattedInteger = (suffixCurrency.trim().length ? suffixCurrency : "") + integerPart?.replace(/\B(?=(\d{3})+(?!\d))/g, separator);
|
|
83
|
+
if (decimal && !require_assertIsBoolean.isUndefined(decimalPartRaw) && totalDecimal > 0) {
|
|
84
|
+
let formattedDecimal = separatorDecimals + decimalPartRaw;
|
|
85
|
+
if (endDecimal) formattedDecimal += suffixDecimal;
|
|
86
|
+
formattedInteger += formattedDecimal;
|
|
87
|
+
}
|
|
88
|
+
if (rawNum < 0) {
|
|
89
|
+
if (negativeFormat === "dash") formattedInteger = "-" + formattedInteger;
|
|
90
|
+
else if (negativeFormat === "brackets") formattedInteger = "(" + formattedInteger + ")";
|
|
91
|
+
else if (negativeFormat === "abs") {} else if (require_assertIsBoolean.isPlainObject(negativeFormat)) if (require_assertIsBoolean.hasOwnProp(negativeFormat, "custom")) {
|
|
92
|
+
const formatCustomNegative = negativeFormat.custom;
|
|
93
|
+
if (!require_assertIsBoolean.isFunction(formatCustomNegative)) throw new TypeError(`Parameter \`negativeFormat.custom\` property of the \`options\` (second parameter) must be of type function: \`(formatted: string) => string\`, but received: \`${require_assertIsBoolean.getPreciseType(formatCustomNegative)}\`.`);
|
|
94
|
+
const result = formatCustomNegative(formattedInteger);
|
|
95
|
+
require_assertIsString.assertIsString(result, { message: ({ currentType, validType }) => `Parameter \`negativeFormat.custom\` property of the \`options\` (second parameter) expected return a \`${validType}\` type value, but received: \`${currentType}\`.` });
|
|
96
|
+
formattedInteger = result;
|
|
97
|
+
} else {
|
|
98
|
+
const formatStyleNegative = negativeFormat.style || "dash";
|
|
99
|
+
const formatSpaceNegative = !require_assertIsBoolean.isUndefined(negativeFormat.space) ? negativeFormat.space : false;
|
|
100
|
+
require_assertIsBoolean.assertIsBoolean(formatSpaceNegative, { message: ({ currentType, validType }) => `Parameter \`negativeFormat.space\` property of the \`options\` (second parameter) must be of type \`${validType} or undefined\`, but received: \`${currentType}\`.` });
|
|
101
|
+
if (!(formatStyleNegative === "abs" || formatStyleNegative === "brackets" || formatStyleNegative === "dash")) throw new TypeError(`Parameter \`negativeFormat.style\` property of the \`options\` (second parameter) must be of type \`string\` must be of type "abs" | "brackets" | "dash", but received: \`${require_assertIsBoolean.getPreciseType(formatStyleNegative)}\`, with value: \`${require_safeStableStringify.safeStableStringify(formatStyleNegative, { keepUndefined: true })}\`.`);
|
|
102
|
+
switch (formatStyleNegative) {
|
|
103
|
+
case "dash":
|
|
104
|
+
formattedInteger = "-" + (formatSpaceNegative ? " " : "") + formattedInteger;
|
|
105
|
+
break;
|
|
106
|
+
case "brackets":
|
|
107
|
+
formattedInteger = formatSpaceNegative ? `( ${formattedInteger} )` : `(${formattedInteger})`;
|
|
108
|
+
break;
|
|
109
|
+
case "abs": break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return formattedInteger;
|
|
114
|
+
};
|
|
115
|
+
const formatNumber = (value, separator = ",") => {
|
|
116
|
+
if (!require_assertIsBoolean.isString(value) && !require_isFinite.isFinite(value)) throw new TypeError(`First parameter (\`value\`) must be of type \`string\` or \`primitive number\`, but received: \`${require_assertIsBoolean.getPreciseType(value)}\`.`);
|
|
117
|
+
if (!require_assertIsBoolean.isString(separator)) throw new TypeError(`Second parameter (\`separator\`) must be of type \`string\` or empty as \`undefined\`, but received: \`${require_assertIsBoolean.getPreciseType(separator)}\`.`);
|
|
118
|
+
separator = require_assertIsBoolean.isString(separator) ? separator : ",";
|
|
119
|
+
const decimalSeparator = separator === "." ? "," : separator === "," ? "." : ".";
|
|
120
|
+
const stringValue = value.toString().trim();
|
|
121
|
+
const lastDot = stringValue.lastIndexOf(".");
|
|
122
|
+
const lastComma = stringValue.lastIndexOf(",");
|
|
123
|
+
let actualDecimal = "";
|
|
124
|
+
if (lastDot > lastComma) actualDecimal = ".";
|
|
125
|
+
else if (lastComma > lastDot) actualDecimal = ",";
|
|
126
|
+
let integerPart = stringValue;
|
|
127
|
+
let decimalPart = "";
|
|
128
|
+
if (actualDecimal) {
|
|
129
|
+
const parts = stringValue.split(actualDecimal);
|
|
130
|
+
integerPart = parts.slice(0, -1).join(actualDecimal);
|
|
131
|
+
decimalPart = parts.slice(-1)[0];
|
|
132
|
+
}
|
|
133
|
+
integerPart = integerPart.replace(/[^\d]/g, "");
|
|
134
|
+
const formattedInteger = integerPart.replace(/\B(?=(\d{3})+(?!\d))/g, separator);
|
|
135
|
+
return decimalPart ? `${formattedInteger}${decimalSeparator}${decimalPart}` : formattedInteger;
|
|
136
|
+
};
|
|
137
|
+
const parsingAsYouType = (value, defaultCountry) => {
|
|
138
|
+
let parsed;
|
|
139
|
+
try {
|
|
140
|
+
parsed = new libphonenumber_js_max.AsYouType(defaultCountry);
|
|
141
|
+
parsed.input(value);
|
|
142
|
+
return parsed;
|
|
143
|
+
} catch {
|
|
144
|
+
parsed?.reset();
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
const isValidParseAsYouType = (parsedAsYouType) => {
|
|
149
|
+
return !!parsedAsYouType?.isValid() && !!parsedAsYouType.getNumber();
|
|
150
|
+
};
|
|
151
|
+
function formatPhoneNumber(value, options = {}) {
|
|
152
|
+
if (require_assertIsBoolean.isNil(value)) return "";
|
|
153
|
+
if (!require_assertIsBoolean.isString(value) && !require_assertIsBoolean.isNumber(value)) throw new TypeError(`First parameter (\`value\`) must be of type \`string\`, \`number\`, \`null\` or \`undefined\`, but received: \`${require_assertIsBoolean.getPreciseType(value)}\`.`);
|
|
154
|
+
require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Second parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
155
|
+
const takeNumberOnly = require_assertIsBoolean.hasOwnProp(options, "takeNumberOnly") ? options.takeNumberOnly : false;
|
|
156
|
+
const checkValidOnly = require_assertIsBoolean.hasOwnProp(options, "checkValidOnly") ? options.checkValidOnly : false;
|
|
157
|
+
const defaultCountry = require_assertIsBoolean.hasOwnProp(options, "defaultCountry") ? options.defaultCountry : void 0;
|
|
158
|
+
const separator = require_assertIsBoolean.hasOwnProp(options, "separator") ? options.separator : " ";
|
|
159
|
+
const prependPlusCountryCode = require_assertIsBoolean.hasOwnProp(options, "prependPlusCountryCode") ? options.prependPlusCountryCode : true;
|
|
160
|
+
const outputFormat = require_assertIsBoolean.hasOwnProp(options, "outputFormat") ? options.outputFormat : "INTERNATIONAL";
|
|
161
|
+
const openingNumberCountry = require_assertIsBoolean.hasOwnProp(options, "openingNumberCountry") ? options.openingNumberCountry : "";
|
|
162
|
+
const closingNumberCountry = require_assertIsBoolean.hasOwnProp(options, "closingNumberCountry") ? options.closingNumberCountry : "";
|
|
163
|
+
if (!require_assertIsBoolean.isBoolean(takeNumberOnly) || !require_assertIsBoolean.isBoolean(checkValidOnly) || !require_assertIsBoolean.isBoolean(prependPlusCountryCode)) throw new TypeError(`Parameter \`takeNumberOnly\`, \`checkValidOnly\` and \`prependPlusCountryCode\` property of the \`options\` (second parameter) must be of type \`boolean\` or unset as \`undefined\` value, but received: ['takeNumberOnly': \`${require_assertIsBoolean.getPreciseType(takeNumberOnly)}\`, 'checkValidOnly': \`${require_assertIsBoolean.getPreciseType(checkValidOnly)}\`, 'prependPlusCountryCode': \`${require_assertIsBoolean.getPreciseType(prependPlusCountryCode)}\`].`);
|
|
164
|
+
if (!require_assertIsBoolean.isUndefined(defaultCountry) && !(0, libphonenumber_js_max.isSupportedCountry)(defaultCountry)) throw new TypeError(`Parameter \`defaultCountry\` property of the \`options\` (second parameter) must be of type \`string\` as \`CountryCode\` (ISO-3166-1 alpha-2) or unset as \`undefined\` value, but received: \`${require_assertIsBoolean.getPreciseType(defaultCountry)}\`, with value: \`${require_safeStableStringify.safeStableStringify(defaultCountry, { keepUndefined: true })}\`.\n\nSee: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements, for all ISO 3166-1 alpha-2 code.`);
|
|
165
|
+
if (![
|
|
166
|
+
"INTERNATIONAL",
|
|
167
|
+
"NATIONAL",
|
|
168
|
+
"RFC3966",
|
|
169
|
+
"E.164"
|
|
170
|
+
].includes(outputFormat)) throw new TypeError(`Parameter \`outputFormat\` property of the \`options\` (second parameter) must be of type \`string\` as \`OutputFormat\` ("NATIONAL" | "INTERNATIONAL" | "E.164" | "RFC3966") or unset as \`undefined\` (default value to: \`INTERNATIONAL\`) value, but received: \`${require_assertIsBoolean.getPreciseType(outputFormat)}\`, with value: ${require_safeStableStringify.safeStableStringify(outputFormat, { keepUndefined: true })}.`);
|
|
171
|
+
if (!require_assertIsBoolean.isString(separator) || !require_assertIsBoolean.isString(openingNumberCountry) || !require_assertIsBoolean.isString(closingNumberCountry)) throw new TypeError(`Parameter \`separator\`, \`plusNumberCountry\`, \`openingNumberCountry\` and \`closingNumberCountry\` property of the \`options\` (second parameter) must be of type \`string\` or unset as \`undefined\` value, but received: ['separator': \`${require_assertIsBoolean.getPreciseType(separator)}\`,'openingNumberCountry': \`${require_assertIsBoolean.getPreciseType(openingNumberCountry)}\`, 'closingNumberCountry': \`${require_assertIsBoolean.getPreciseType(closingNumberCountry)}\`].`);
|
|
172
|
+
if (!require_assertIsBoolean.isString(value)) value = String(value);
|
|
173
|
+
const parsedPhoneNumber = parsingAsYouType(value, defaultCountry);
|
|
174
|
+
const validPhoneNumber = isValidParseAsYouType(parsedPhoneNumber);
|
|
175
|
+
if (checkValidOnly) return validPhoneNumber;
|
|
176
|
+
if (!validPhoneNumber) return "";
|
|
177
|
+
if (takeNumberOnly) return parsedPhoneNumber.getNumber().formatNational().replace(/\D/g, "");
|
|
178
|
+
const intlNumb = parsedPhoneNumber.getNumber().format(outputFormat);
|
|
179
|
+
if (outputFormat === "INTERNATIONAL") {
|
|
180
|
+
const [cc, ...rest] = intlNumb.split(" ");
|
|
181
|
+
const countryCode = prependPlusCountryCode ? cc : cc.replace(/^\++/, "");
|
|
182
|
+
const restWithSeparator = rest.join(separator);
|
|
183
|
+
if (require_assertIsBoolean.isNonEmptyString(openingNumberCountry) && require_assertIsBoolean.isNonEmptyString(closingNumberCountry)) return `${openingNumberCountry}${countryCode}${closingNumberCountry} ${restWithSeparator}`;
|
|
184
|
+
return `${countryCode} ${restWithSeparator}`;
|
|
185
|
+
}
|
|
186
|
+
if (outputFormat === "NATIONAL") return `${intlNumb.split(" ").join(separator)}`;
|
|
187
|
+
return intlNumb;
|
|
188
|
+
}
|
|
189
|
+
const hashSeedGenerate = (mode, email) => {
|
|
190
|
+
const generateSeed = () => {
|
|
191
|
+
let hash = 0;
|
|
192
|
+
for (let i = 0; i < email.length; i++) {
|
|
193
|
+
hash = (hash << 5) - hash + email.charCodeAt(i);
|
|
194
|
+
hash |= 0;
|
|
195
|
+
}
|
|
196
|
+
return Math.abs(hash);
|
|
197
|
+
};
|
|
198
|
+
return mode === "fixed" ? generateSeed() : void 0;
|
|
199
|
+
};
|
|
200
|
+
const _censor = (str, minCensor, maxPercentage, hashSeed) => {
|
|
201
|
+
if (str.length <= minCensor) return "*".repeat(str.length);
|
|
202
|
+
const strArr = str.split("");
|
|
203
|
+
const totalCensor = Math.max(minCensor, Math.ceil(str.length * maxPercentage));
|
|
204
|
+
const indexes = /* @__PURE__ */ new Set();
|
|
205
|
+
let i = 0;
|
|
206
|
+
while (indexes.size < totalCensor) {
|
|
207
|
+
const idx = !require_assertIsBoolean.isUndefined(hashSeed) ? (hashSeed + str.length + i * 31) % str.length : Math.floor(Math.random() * str.length);
|
|
208
|
+
indexes.add(idx);
|
|
209
|
+
i++;
|
|
210
|
+
}
|
|
211
|
+
for (const index of indexes) strArr[index] = "*";
|
|
212
|
+
return strArr.join("");
|
|
213
|
+
};
|
|
214
|
+
const censorEmail = (email, options = {}) => {
|
|
215
|
+
if (!require_assertIsBoolean.isNonEmptyString(email)) return "";
|
|
216
|
+
require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Second parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
217
|
+
const mode = require_assertIsBoolean.hasOwnProp(options, "mode") ? options.mode : "fixed";
|
|
218
|
+
if (mode !== "random" && mode !== "fixed") throw new TypeError(`Parameter \`mode\` property of the \`options\` (second parameter) must be one of "fixed" or "random", but received: \`${require_assertIsBoolean.getPreciseType(mode)}\`, with value: \`${require_safeStableStringify.safeStableStringify(mode, { keepUndefined: true })}\`.`);
|
|
219
|
+
if (!/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email)) return "";
|
|
220
|
+
const [local, domain] = email.split("@");
|
|
221
|
+
const domainParts = domain.split(".");
|
|
222
|
+
if (domainParts.length < 2) return "";
|
|
223
|
+
const [domainName, ...tldParts] = domainParts;
|
|
224
|
+
const tld = tldParts.join(".");
|
|
225
|
+
const hashSeed = hashSeedGenerate(mode, email);
|
|
226
|
+
const localMinCensor = local.length < 4 ? 1 : 2;
|
|
227
|
+
const domainMinCensor = domainName.length < 4 ? 1 : 2;
|
|
228
|
+
return `${_censor(local, localMinCensor, .6, hashSeed)}@${_censor(domainName, domainMinCensor, .5, hashSeed)}.${tld.length <= 2 ? tld : _censor(tld, 1, .4, hashSeed)}`;
|
|
229
|
+
};
|
|
230
|
+
function chunkString(subject, limiter, options = {}) {
|
|
231
|
+
if (require_assertIsBoolean.isNil(subject) || limiter <= 0) return subject;
|
|
232
|
+
require_assertIsString.assertIsString(subject, { message: ({ currentType, validType }) => `First parameter (\`subject\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
233
|
+
if (!require_isInteger.isInteger(limiter)) throw new TypeError(`Second parameter (\`limiter\`) must be of type \`integer-number\`, but received: \`${require_assertIsBoolean.getPreciseType(limiter)}\`, with value: \`${require_safeStableStringify.safeStableStringify(limiter, { keepUndefined: true })}\`.`);
|
|
234
|
+
require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Third parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
235
|
+
const separator = require_assertIsBoolean.hasOwnProp(options, "separator") ? options.separator : " ";
|
|
236
|
+
const reCountAfterSpace = require_assertIsBoolean.hasOwnProp(options, "reCountAfterSpace") ? options.reCountAfterSpace : false;
|
|
237
|
+
require_assertIsString.assertIsString(separator, { message: ({ currentType, validType }) => `Parameter \`separator\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
238
|
+
require_assertIsBoolean.assertIsBoolean(reCountAfterSpace, { message: ({ currentType, validType }) => `Parameter \`reCountAfterSpace\` property of the \`options\` (third parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
239
|
+
subject = require_normalizeSpaces.normalizeSpaces(subject);
|
|
240
|
+
if (!reCountAfterSpace) {
|
|
241
|
+
let result = "";
|
|
242
|
+
let currentCount = 0;
|
|
243
|
+
for (let i = 0; i < subject.length; i++) {
|
|
244
|
+
const char = subject[i];
|
|
245
|
+
if (currentCount === limiter) {
|
|
246
|
+
result += separator;
|
|
247
|
+
currentCount = 0;
|
|
248
|
+
}
|
|
249
|
+
result += char;
|
|
250
|
+
currentCount++;
|
|
251
|
+
}
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
const words = subject.split(" ");
|
|
255
|
+
const finalSegments = [];
|
|
256
|
+
let currentGroup = [];
|
|
257
|
+
let wordsInCurrentGroupCount = 0;
|
|
258
|
+
for (let i = 0; i < words.length; i++) {
|
|
259
|
+
const word = words[i];
|
|
260
|
+
let processedWord = "";
|
|
261
|
+
let charCountInWord = 0;
|
|
262
|
+
for (let j = 0; j < word.length; j++) {
|
|
263
|
+
processedWord += word[j];
|
|
264
|
+
charCountInWord++;
|
|
265
|
+
if (charCountInWord === limiter && j < word.length - 1) {
|
|
266
|
+
processedWord += separator;
|
|
267
|
+
charCountInWord = 0;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
currentGroup.push(processedWord);
|
|
271
|
+
wordsInCurrentGroupCount++;
|
|
272
|
+
if (wordsInCurrentGroupCount === limiter || i === words.length - 1) {
|
|
273
|
+
finalSegments.push(currentGroup.join(separator));
|
|
274
|
+
currentGroup = [];
|
|
275
|
+
wordsInCurrentGroupCount = 0;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return finalSegments.join(" ");
|
|
279
|
+
}
|
|
280
|
+
const truncateString = (text, options = {}) => {
|
|
281
|
+
if (!require_assertIsBoolean.isNonEmptyString(text)) return "";
|
|
282
|
+
require_assertIsBoolean.assertIsPlainObject(options, { message: ({ currentType, validType }) => `Seconds parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
283
|
+
const trim = require_assertIsBoolean.hasOwnProp(options, "trim") ? options.trim : true;
|
|
284
|
+
const length = require_assertIsBoolean.hasOwnProp(options, "length") ? options.length : 10;
|
|
285
|
+
let ending = require_assertIsBoolean.hasOwnProp(options, "ending") ? options.ending : "...";
|
|
286
|
+
if (!require_isInteger.isInteger(length)) throw new TypeError(`Parameter \`length\` property of the \`options\` (second parameter) must be of type \`integer-number\`, but received: \`${require_assertIsBoolean.getPreciseType(length)}\`, with value: \`${require_safeStableStringify.safeStableStringify(length, { keepUndefined: true })}\`.`);
|
|
287
|
+
if (length < 1) return "";
|
|
288
|
+
require_assertIsString.assertIsString(ending, { message: ({ currentType, validType }) => `Parameter \`ending\` property of the \`options\` (second parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
289
|
+
require_assertIsBoolean.assertIsBoolean(trim, { message: ({ currentType, validType }) => `Parameter \`trim\` property of the \`options\` (second parameter) must be of type \`${validType}\`, but received: \`${currentType}\`.` });
|
|
290
|
+
if (require_isEmptyString.isEmptyString(ending)) ending = "...";
|
|
291
|
+
else ending = ending.trim();
|
|
292
|
+
const original = trim ? text.trim() : text;
|
|
293
|
+
if (original.length <= length) return original;
|
|
294
|
+
const sliced = original.slice(0, length);
|
|
295
|
+
return (trim ? sliced : sliced.trimEnd()) + ending;
|
|
296
|
+
};
|
|
297
|
+
const formatDateFns = (date, options = {}) => {
|
|
298
|
+
if (require_assertIsBoolean.isNil(date) || !(require_safeStableStringify.isDate(date) || require_assertIsBoolean.isNonEmptyString(date))) return null;
|
|
299
|
+
if (!require_assertIsBoolean.isPlainObject(options)) options = {};
|
|
300
|
+
const { inputFormat, locale = "en", inputLocale = "en", ...restOptions } = options;
|
|
301
|
+
const format = require_assertIsBoolean.hasOwnProp(options, "format") && require_assertIsBoolean.isNonEmptyString(options.format) ? options.format : "dd MMM yyyy - HH:mm:ss";
|
|
302
|
+
let parsedDate;
|
|
303
|
+
try {
|
|
304
|
+
if (require_assertIsBoolean.isNonEmptyString(date) && inputFormat && inputLocale) {
|
|
305
|
+
const valueOfInputLocale = require_assertIsBoolean.isNonEmptyString(inputLocale) ? inputLocale === "id" ? date_fns_locale.id : date_fns_locale.enUS : inputLocale;
|
|
306
|
+
parsedDate = (0, date_fns.parse)(date, inputFormat, /* @__PURE__ */ new Date(), { locale: valueOfInputLocale });
|
|
307
|
+
} else parsedDate = new Date(date);
|
|
308
|
+
if (require_assertIsBoolean.isNaN(parsedDate.getTime())) return null;
|
|
309
|
+
const valueOfLocale = require_assertIsBoolean.isNonEmptyString(locale) ? locale === "id" ? date_fns_locale.id : date_fns_locale.enUS : locale;
|
|
310
|
+
return (0, date_fns.format)(parsedDate, format, {
|
|
311
|
+
...restOptions,
|
|
312
|
+
locale: valueOfLocale
|
|
313
|
+
});
|
|
314
|
+
} catch {
|
|
315
|
+
return null;
|
|
316
|
+
}
|
|
317
|
+
};
|
|
318
|
+
const formatDateIntl = (date, options) => {
|
|
319
|
+
if (require_assertIsBoolean.isNil(date) || !(require_safeStableStringify.isDate(date) || require_assertIsBoolean.isNonEmptyString(date))) return null;
|
|
320
|
+
const parsedDate = new Date(date);
|
|
321
|
+
if (require_assertIsBoolean.isNaN(parsedDate.getTime())) return null;
|
|
322
|
+
if (!require_assertIsBoolean.isPlainObject(options)) options = {};
|
|
323
|
+
const { locale = "en-US", ...restProps } = options;
|
|
324
|
+
try {
|
|
325
|
+
return new Intl.DateTimeFormat(require_assertIsBoolean.isNonEmptyString(locale) ? locale.trim() : "en-US", restProps).format(parsedDate);
|
|
326
|
+
} catch {
|
|
327
|
+
return null;
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
const formatDateTime = (date, format) => {
|
|
331
|
+
if (require_assertIsBoolean.isNil(format)) format = "YYYY-MM-DD hh:mm:ss";
|
|
332
|
+
if (!require_assertIsBoolean.isString(format)) return null;
|
|
333
|
+
if (require_assertIsBoolean.isNil(date) || !(require_safeStableStringify.isDate(date) || require_assertIsBoolean.isNonEmptyString(date))) return null;
|
|
334
|
+
try {
|
|
335
|
+
const parsedDate = new Date(date);
|
|
336
|
+
if (require_assertIsBoolean.isNaN(parsedDate.getTime())) return null;
|
|
337
|
+
const pad2 = (n) => n.toString().padStart(2, "0");
|
|
338
|
+
const map = {
|
|
339
|
+
YYYY: parsedDate.getFullYear().toString(),
|
|
340
|
+
MM: pad2(parsedDate.getMonth() + 1),
|
|
341
|
+
DD: pad2(parsedDate.getDate()),
|
|
342
|
+
hh: pad2(parsedDate.getHours()),
|
|
343
|
+
mm: pad2(parsedDate.getMinutes()),
|
|
344
|
+
ss: pad2(parsedDate.getSeconds())
|
|
345
|
+
};
|
|
346
|
+
const result = Object.entries(map).reduce((prev, [key, value]) => prev.split(key).join(value), format);
|
|
347
|
+
return !result.includes("NaN") ? result : null;
|
|
348
|
+
} catch {
|
|
349
|
+
return null;
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
const getGMTOffset = (date) => {
|
|
353
|
+
try {
|
|
354
|
+
if (require_assertIsBoolean.isNil(date) || require_assertIsBoolean.isString(date) && require_isEmptyString.isEmptyString(date)) date = /* @__PURE__ */ new Date();
|
|
355
|
+
else if (!(require_safeStableStringify.isDate(date) || require_assertIsBoolean.isNonEmptyString(date))) return "0";
|
|
356
|
+
const parsedDate = new Date(date);
|
|
357
|
+
if (require_assertIsBoolean.isNaN(parsedDate.getTime())) return "0";
|
|
358
|
+
const padZero = (num) => num.toString().padStart(2, "0");
|
|
359
|
+
let offset = parsedDate.getTimezoneOffset();
|
|
360
|
+
const sign = offset < 0 ? "+" : "-";
|
|
361
|
+
offset = Math.abs(offset);
|
|
362
|
+
return `${sign}${padZero(Math.floor(offset / 60))}${padZero(offset % 60)}`;
|
|
363
|
+
} catch {
|
|
364
|
+
return "0";
|
|
365
|
+
}
|
|
366
|
+
};
|
|
367
|
+
Object.defineProperty(exports, 'censorEmail', {
|
|
368
|
+
enumerable: true,
|
|
369
|
+
get: function () {
|
|
370
|
+
return censorEmail;
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
Object.defineProperty(exports, 'chunkString', {
|
|
374
|
+
enumerable: true,
|
|
375
|
+
get: function () {
|
|
376
|
+
return chunkString;
|
|
377
|
+
}
|
|
378
|
+
});
|
|
379
|
+
Object.defineProperty(exports, 'formatCurrency', {
|
|
380
|
+
enumerable: true,
|
|
381
|
+
get: function () {
|
|
382
|
+
return formatCurrency;
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
Object.defineProperty(exports, 'formatDateFns', {
|
|
386
|
+
enumerable: true,
|
|
387
|
+
get: function () {
|
|
388
|
+
return formatDateFns;
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
Object.defineProperty(exports, 'formatDateIntl', {
|
|
392
|
+
enumerable: true,
|
|
393
|
+
get: function () {
|
|
394
|
+
return formatDateIntl;
|
|
395
|
+
}
|
|
396
|
+
});
|
|
397
|
+
Object.defineProperty(exports, 'formatDateTime', {
|
|
398
|
+
enumerable: true,
|
|
399
|
+
get: function () {
|
|
400
|
+
return formatDateTime;
|
|
401
|
+
}
|
|
402
|
+
});
|
|
403
|
+
Object.defineProperty(exports, 'formatNumber', {
|
|
404
|
+
enumerable: true,
|
|
405
|
+
get: function () {
|
|
406
|
+
return formatNumber;
|
|
407
|
+
}
|
|
408
|
+
});
|
|
409
|
+
Object.defineProperty(exports, 'formatPhoneNumber', {
|
|
410
|
+
enumerable: true,
|
|
411
|
+
get: function () {
|
|
412
|
+
return formatPhoneNumber;
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
Object.defineProperty(exports, 'getGMTOffset', {
|
|
416
|
+
enumerable: true,
|
|
417
|
+
get: function () {
|
|
418
|
+
return getGMTOffset;
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
Object.defineProperty(exports, 'truncateString', {
|
|
422
|
+
enumerable: true,
|
|
423
|
+
get: function () {
|
|
424
|
+
return truncateString;
|
|
425
|
+
}
|
|
426
|
+
});
|
|
427
|
+
//# sourceMappingURL=formatters-lAYgA11L.cjs.map
|