@rzl-zone/utils-js 3.4.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +94 -45
  3. package/dist/assertions/index.cjs +41 -1
  4. package/dist/assertions/index.d.ts +11 -2
  5. package/dist/assertions/index.js +14 -1
  6. package/dist/chunk-2CQX5CBG.js +262 -1
  7. package/dist/chunk-2IOOEY45.cjs +30 -1
  8. package/dist/chunk-2WA36TC5.cjs +189 -0
  9. package/dist/chunk-3IBQ5MOM.js +16 -1
  10. package/dist/chunk-3VA554KW.js +34 -1
  11. package/dist/chunk-5757UBXJ.cjs +157 -1
  12. package/dist/chunk-5IGC6PBH.js +33 -1
  13. package/dist/chunk-5KJFVIQT.cjs +65 -1
  14. package/dist/chunk-6JFCSH7J.js +35 -1
  15. package/dist/chunk-6JFZL7YE.cjs +24 -1
  16. package/dist/chunk-7ODAAXX5.cjs +397 -1
  17. package/dist/chunk-BAV5T2E3.cjs +15 -1
  18. package/dist/chunk-CAH33WOQ.cjs +36 -1
  19. package/dist/chunk-CDCERIZ2.js +177 -0
  20. package/dist/chunk-CKTLUNWX.js +22 -1
  21. package/dist/chunk-CMW2TBOQ.js +567 -1
  22. package/dist/chunk-D3ENH7H6.cjs +101 -1
  23. package/dist/chunk-DEZZUYE2.js +152 -1
  24. package/dist/chunk-DVMHRLKP.cjs +16 -1
  25. package/dist/chunk-DWF2R5GD.cjs +225 -1
  26. package/dist/chunk-E55EQK2U.cjs +18 -1
  27. package/dist/chunk-E74U6CYP.cjs +18 -1
  28. package/dist/chunk-EL6A35UR.cjs +64 -1
  29. package/dist/chunk-F6IPNNSJ.cjs +554 -1
  30. package/dist/chunk-FJZGG54N.cjs +267 -1
  31. package/dist/chunk-FWCKOJZM.js +542 -1
  32. package/dist/chunk-FWHNWL2P.cjs +419 -1
  33. package/dist/chunk-GGEADHZO.js +90 -1
  34. package/dist/chunk-GQR4R5WY.js +31 -1
  35. package/dist/chunk-H66AC7GK.cjs +93 -1
  36. package/dist/chunk-HQWOFR56.cjs +33 -1
  37. package/dist/chunk-HYRQMTRH.cjs +24 -1
  38. package/dist/chunk-IRFL4MAX.js +63 -1
  39. package/dist/chunk-IVL7CKVH.cjs +37 -1
  40. package/dist/chunk-IZPBKKPO.js +16 -1
  41. package/dist/chunk-JBQMXC5I.cjs +106 -1
  42. package/dist/chunk-JEQEF5WD.js +95 -1
  43. package/dist/chunk-JMJQCN74.js +370 -1
  44. package/dist/chunk-KHO2SBNA.cjs +16 -1
  45. package/dist/chunk-KVAL5PAG.cjs +26 -1
  46. package/dist/chunk-L5RDAVVH.js +14 -1
  47. package/dist/chunk-LS6U7FAY.cjs +110 -1
  48. package/dist/chunk-NBZWMBO6.js +101 -1
  49. package/dist/chunk-NRF6LWBC.cjs +56 -1
  50. package/dist/chunk-OI5XKNZO.js +53 -1
  51. package/dist/chunk-ONZFBJVW.js +14 -1
  52. package/dist/chunk-OYTYSY7G.js +106 -1
  53. package/dist/chunk-PET42Z7W.js +119 -1
  54. package/dist/chunk-PZQ6I4JJ.cjs +605 -1
  55. package/dist/chunk-QBKAEVYG.js +113 -1
  56. package/dist/chunk-QNKGP5DY.js +14 -1
  57. package/dist/chunk-RIPKY4RU.js +417 -1
  58. package/dist/chunk-RZW35UN5.cjs +116 -1
  59. package/dist/chunk-SBFNXGTJ.js +220 -1
  60. package/dist/chunk-SBKGWRS5.js +22 -1
  61. package/dist/chunk-SIM77PU4.js +59 -1
  62. package/dist/chunk-T2T7K3KR.js +28 -1
  63. package/dist/chunk-T7PU2V7X.cjs +123 -1
  64. package/dist/chunk-UDA26MCU.cjs +16 -1
  65. package/dist/chunk-V45XJKHW.cjs +18 -1
  66. package/dist/chunk-VJDDGRIK.cjs +16 -1
  67. package/dist/chunk-W2WNBUDE.js +16 -1
  68. package/dist/chunk-WVSPXFTY.js +14 -1
  69. package/dist/chunk-XABCB3Y7.cjs +582 -1
  70. package/dist/chunk-XEDXFSGI.js +24 -1
  71. package/dist/chunk-YKPSRP5G.js +571 -1
  72. package/dist/chunk-YWHHVDT4.js +13 -1
  73. package/dist/chunk-ZETAZZLD.cjs +38 -1
  74. package/dist/conversions/index.cjs +104 -1
  75. package/dist/conversions/index.d.ts +10 -1
  76. package/dist/conversions/index.js +25 -1
  77. package/dist/events/index.cjs +32 -1
  78. package/dist/events/index.d.ts +10 -1
  79. package/dist/events/index.js +13 -1
  80. package/dist/formatters/index.cjs +62 -1
  81. package/dist/formatters/index.d.ts +10 -1
  82. package/dist/formatters/index.js +19 -1
  83. package/dist/generators/index.cjs +38 -1
  84. package/dist/generators/index.d.ts +10 -1
  85. package/dist/generators/index.js +15 -1
  86. package/dist/index.d.ts +39 -12
  87. package/dist/{isPlainObject-CEPWPiXh.d.ts → isPlainObject-FWmcJF6k.d.ts} +13 -4
  88. package/dist/next/index.cjs +218 -1
  89. package/dist/next/index.d.ts +10 -1
  90. package/dist/next/index.js +213 -1
  91. package/dist/next/server/index.cjs +43 -1
  92. package/dist/next/server/index.d.ts +10 -1
  93. package/dist/next/server/index.js +41 -1
  94. package/dist/operations/index.cjs +33 -1
  95. package/dist/operations/index.d.ts +10 -1
  96. package/dist/operations/index.js +18 -1
  97. package/dist/parsers/index.cjs +18 -1
  98. package/dist/parsers/index.d.ts +10 -1
  99. package/dist/parsers/index.js +11 -1
  100. package/dist/predicates/index.cjs +299 -1
  101. package/dist/predicates/index.d.ts +13 -4
  102. package/dist/predicates/index.js +24 -1
  103. package/dist/promises/index.cjs +25 -1
  104. package/dist/promises/index.d.ts +10 -1
  105. package/dist/promises/index.js +14 -1
  106. package/dist/rzl-utils.global.js +25 -1
  107. package/dist/strings/index.cjs +82 -1
  108. package/dist/strings/index.d.ts +10 -1
  109. package/dist/strings/index.js +15 -1
  110. package/dist/tailwind/index.cjs +43 -1
  111. package/dist/tailwind/index.d.ts +10 -1
  112. package/dist/tailwind/index.js +12 -1
  113. package/dist/urls/index.cjs +51 -1
  114. package/dist/urls/index.d.ts +10 -1
  115. package/dist/urls/index.js +24 -1
  116. package/package.json +60 -179
  117. package/dist/chunk-JYQTCICM.js +0 -1
  118. package/dist/chunk-YLA3DURS.cjs +0 -1
@@ -1 +1,267 @@
1
- "use strict";var e=require("./chunk-ZETAZZLD.cjs"),r=require("./chunk-BAV5T2E3.cjs"),t=require("./chunk-T7PU2V7X.cjs"),o=require("./chunk-PZQ6I4JJ.cjs"),n=(e,r)=>{if(!o.isNonEmptyString(e)||!o.isNonEmptyString(r))throw new TypeError(`Parameter \`dateString\` and \`format\` must be of type \`string\` and not empty-string, but received: "['dateString': \`${o.getPreciseType(e)}\` - (current value: \`${t.safeStableStringify(e)}\`), 'format': \`${o.getPreciseType(r)}\` - (current value: \`${t.safeStableStringify(r)}\`)]".`);const n=e.split(/[-/]/).map(Number);if(3!==n.length||n.some(isNaN))return null;let s,i,a;if("DD/MM/YYYY"===r)[s,i,a]=n;else{if("MM/DD/YYYY"!==r)return null;[i,s,a]=n}i-=1;const c=new Date(a,i,s);return c.getFullYear()!==a||c.getMonth()!==i||c.getDate()!==s?null:c},s=(e={})=>{o.assertIsPlainObject(e,{message:({currentType:e,validType:r})=>`Second parameter (\`options\`) must be of type \`${r}\`, but received: \`${e}\`.`});const t=!!o.hasOwnProp(e,"convertBooleans")&&e.convertBooleans,n=!!o.hasOwnProp(e,"convertDates")&&e.convertDates,s=!!o.hasOwnProp(e,"convertNumbers")&&e.convertNumbers,i=!!o.hasOwnProp(e,"loggingOnFail")&&e.loggingOnFail,a=!!o.hasOwnProp(e,"removeEmptyArrays")&&e.removeEmptyArrays,c=!!o.hasOwnProp(e,"removeEmptyObjects")&&e.removeEmptyObjects,l=!!o.hasOwnProp(e,"removeNulls")&&e.removeNulls,u=!!o.hasOwnProp(e,"removeUndefined")&&e.removeUndefined,m=!!o.hasOwnProp(e,"strictMode")&&e.strictMode,p=!!o.hasOwnProp(e,"checkSymbols")&&e.checkSymbols,N=!!o.hasOwnProp(e,"convertNaN")&&e.convertNaN,f=o.hasOwnProp(e,"customDateFormats")?e.customDateFormats:[],g=o.hasOwnProp(e,"onError")?e.onError:r.noop;if(!(o.isBoolean(t)&&o.isBoolean(n)&&o.isBoolean(s)&&o.isBoolean(N)&&o.isBoolean(p)&&o.isBoolean(i)&&o.isBoolean(a)&&o.isBoolean(c)&&o.isBoolean(l)&&o.isBoolean(u)&&o.isBoolean(m)&&o.isArray(f)&&o.isFunction(g)))throw new TypeError(`Invalid \`options\` parameter (second argument): \`convertBooleans\`, \`convertDates\`, \`convertNumbers\`, \`loggingOnFail\`, \`removeEmptyArrays\`, \`removeEmptyObjects\`, \`removeNulls\`, \`removeUndefined\`, \`strictMode\` expected to be a \`boolean\` type, \`customDateFormats\` expected to be a \`array\` type and \`onError\` expected to be a \`void function\` type. But received: ['convertBooleans': \`${o.getPreciseType(t)}\`, 'convertDates': \`${o.getPreciseType(n)}\`, 'convertNumbers': \`${o.getPreciseType(s)}\`, 'loggingOnFail': \`${o.getPreciseType(i)}\`, 'removeEmptyArrays': \`${o.getPreciseType(a)}\`, 'removeEmptyObjects': \`${o.getPreciseType(c)}\`, 'removeNulls': \`${o.getPreciseType(l)}\`, 'removeUndefined': \`${o.getPreciseType(u)}\`, 'strictMode': \`${o.getPreciseType(m)}\`, 'customDateFormats': \`${o.getPreciseType(f)}\`, 'onError': \`${o.getPreciseType(g)}\`].`);return{convertBooleans:t,convertDates:n,convertNumbers:s,convertNaN:N,loggingOnFail:i,removeEmptyArrays:a,removeEmptyObjects:c,removeNulls:l,removeUndefined:u,strictMode:m,customDateFormats:f,onError:g,checkSymbols:p}},i=(r,t={})=>{const a=s(t);if(o.isNull(r))return a.removeNulls?void 0:null;if(!o.isUndefined(r)){if(o.isString(r)){const e=r.trim();if(a.convertNaN&&"NaN"===e)return NaN;if(a.convertNumbers&&!isNaN(Number(e)))return Number(e);if(a.convertBooleans){if("true"===e)return!0;if("false"===e)return!1}if(a.convertDates){if(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(e))return new Date(e);if(a.customDateFormats?.length)for(const r of a.customDateFormats){const t=n(e,r);if(t)return t}}return a.strictMode?void 0:e}if(o.isArray(r)){const t=r.map(e=>i(e,a)).filter(e=>!o.isUndefined(e));return a.removeEmptyArrays&&e.isEmptyArray(t)?void 0:t}if(o.isObject(r)){const t={};for(const e in r)if(Object.prototype.hasOwnProperty.call(r,e)){const n=i(r[e],a);o.isUndefined(n)||(t[e]=n)}return a.removeEmptyObjects&&e.isEmptyObject(t,{checkSymbols:a.checkSymbols})?void 0:t}return a.strictMode?void 0:r}a.removeUndefined},a=e=>{if(!o.isString(e)&&!o.isNumber(e))return 0;const r=String(e).trim().replace(/[^0-9]/g,"");return Number(r)||0};exports.cleanParsedData=i,exports.extractDigits=a,exports.parseCustomDate=n,exports.safeJsonParse=function(e,r={}){if(o.isNull(e))return null;const t=s(r);if(t.convertNaN&&(o.isNaN(e)||o.isNonEmptyString(e)&&"NaN"===e))return NaN;if(t.convertNumbers&&!o.isNaN(Number(e))&&o.isNumber(a(e)))return Number(e);if(o.isString(e))try{let r=function(e){const r=new Set(["\\",'"',"/","b","f","n","r","t","u"]);let t="",o=!1,n=!1,s=!1;for(let i=0;i<e.length;i++){const a=e[i];if(s)o?"'"===a?t+="'":r.has(a)?t+="\\"===a?"\\\\":'"'===a?'\\"':"\\"+a:t+="\\\\"+a:n?'"'===a?t+='\\"':r.has(a)?t+="\\"+a:t+="\\\\"+a:t+="\\"+a,s=!1;else if("\\"!==a){if(o||n){if(o){if("'"===a){t+='"',o=!1;continue}}else if(n&&'"'===a){t+='"',n=!1;continue}}else{if("'"===a){t+='"',o=!0;continue}if('"'===a){t+='"',n=!0;continue}}t+=a}else s=!0}return t}(e);r=t.removeUndefined?r.replace(/,\s*"[^"]*"\s*:\s*undefined(?=\s*[},])/g,"").replace(/"[^"]*"\s*:\s*undefined\s*(,)?/g,""):r.replace(/:\s*undefined(?=\s*[,}])/g,":null"),r=t.convertNaN?r.replace(/:\s*NaN(?=\s*[,}])/g,':"NaN"'):r.replace(/:\s*NaN(?=\s*[,}])/g,':"NaN"').replace(/,\s*"[^"]*"\s*:\s*NaN(?=\s*[},])/g,"").replace(/"[^"]*"\s*:\s*NaN\s*(,)?/g,""),r=r.replace(/,(\s*[}\]])/g,"$1");const o=JSON.parse(r);return i(o,t)}catch(e){return t.loggingOnFail&&console.error("Failed to parsing at `safeJsonParse`:",e),void t.onError(o.isError(e)?new Error(e.message.replace(/^JSON\.parse:/,"Failed to parsing")):new Error(String(e)))}};
1
+ /*!
2
+ * ====================================================
3
+ * Rzl Utils-JS.
4
+ * ----------------------------------------------------
5
+ * Version: 3.5.1.
6
+ * Author: Rizalvin Dwiky.
7
+ * Repository: https://github.com/rzl-zone/utils-js.
8
+ * ====================================================
9
+ */
10
+ 'use strict';
11
+
12
+ var chunkZETAZZLD_cjs = require('./chunk-ZETAZZLD.cjs');
13
+ var chunkBAV5T2E3_cjs = require('./chunk-BAV5T2E3.cjs');
14
+ var chunkT7PU2V7X_cjs = require('./chunk-T7PU2V7X.cjs');
15
+ var chunkPZQ6I4JJ_cjs = require('./chunk-PZQ6I4JJ.cjs');
16
+
17
+ var parseCustomDate = (dateString, format) => {
18
+ if (!chunkPZQ6I4JJ_cjs.isNonEmptyString(dateString) || !chunkPZQ6I4JJ_cjs.isNonEmptyString(format)) {
19
+ throw new TypeError(
20
+ `Parameter \`dateString\` and \`format\` must be of type \`string\` and not empty-string, but received: "['dateString': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
21
+ dateString
22
+ )}\` - (current value: \`${chunkT7PU2V7X_cjs.safeStableStringify(
23
+ dateString
24
+ )}\`), 'format': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
25
+ format
26
+ )}\` - (current value: \`${chunkT7PU2V7X_cjs.safeStableStringify(format)}\`)]".`
27
+ );
28
+ }
29
+ const dateParts = dateString.split(/[-/]/).map(Number);
30
+ if (dateParts.length !== 3 || dateParts.some(isNaN)) return null;
31
+ let day, month, year;
32
+ if (format === "DD/MM/YYYY") {
33
+ [day, month, year] = dateParts;
34
+ } else if (format === "MM/DD/YYYY") {
35
+ [month, day, year] = dateParts;
36
+ } else {
37
+ return null;
38
+ }
39
+ month -= 1;
40
+ const date = new Date(year, month, day);
41
+ if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) {
42
+ return null;
43
+ }
44
+ return date;
45
+ };
46
+
47
+ var validateJsonParsingOptions = (optionsValue = {}) => {
48
+ chunkPZQ6I4JJ_cjs.assertIsPlainObject(optionsValue, {
49
+ message: ({ currentType, validType }) => `Second parameter (\`options\`) must be of type \`${validType}\`, but received: \`${currentType}\`.`
50
+ });
51
+ const convertBooleans = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "convertBooleans") ? optionsValue.convertBooleans : false;
52
+ const convertDates = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "convertDates") ? optionsValue.convertDates : false;
53
+ const convertNumbers = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "convertNumbers") ? optionsValue.convertNumbers : false;
54
+ const loggingOnFail = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "loggingOnFail") ? optionsValue.loggingOnFail : false;
55
+ const removeEmptyArrays = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "removeEmptyArrays") ? optionsValue.removeEmptyArrays : false;
56
+ const removeEmptyObjects = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "removeEmptyObjects") ? optionsValue.removeEmptyObjects : false;
57
+ const removeNulls = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "removeNulls") ? optionsValue.removeNulls : false;
58
+ const removeUndefined = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "removeUndefined") ? optionsValue.removeUndefined : false;
59
+ const strictMode = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "strictMode") ? optionsValue.strictMode : false;
60
+ const checkSymbols = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "checkSymbols") ? optionsValue.checkSymbols : false;
61
+ const convertNaN = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "convertNaN") ? optionsValue.convertNaN : false;
62
+ const customDateFormats = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "customDateFormats") ? optionsValue.customDateFormats : [];
63
+ const onError = chunkPZQ6I4JJ_cjs.hasOwnProp(optionsValue, "onError") ? optionsValue.onError : chunkBAV5T2E3_cjs.noop;
64
+ if (!(chunkPZQ6I4JJ_cjs.isBoolean(convertBooleans) && chunkPZQ6I4JJ_cjs.isBoolean(convertDates) && chunkPZQ6I4JJ_cjs.isBoolean(convertNumbers) && chunkPZQ6I4JJ_cjs.isBoolean(convertNaN) && chunkPZQ6I4JJ_cjs.isBoolean(checkSymbols) && chunkPZQ6I4JJ_cjs.isBoolean(loggingOnFail) && chunkPZQ6I4JJ_cjs.isBoolean(removeEmptyArrays) && chunkPZQ6I4JJ_cjs.isBoolean(removeEmptyObjects) && chunkPZQ6I4JJ_cjs.isBoolean(removeNulls) && chunkPZQ6I4JJ_cjs.isBoolean(removeUndefined) && chunkPZQ6I4JJ_cjs.isBoolean(strictMode) && chunkPZQ6I4JJ_cjs.isArray(customDateFormats) && chunkPZQ6I4JJ_cjs.isFunction(onError))) {
65
+ throw new TypeError(
66
+ `Invalid \`options\` parameter (second argument): \`convertBooleans\`, \`convertDates\`, \`convertNumbers\`, \`loggingOnFail\`, \`removeEmptyArrays\`, \`removeEmptyObjects\`, \`removeNulls\`, \`removeUndefined\`, \`strictMode\` expected to be a \`boolean\` type, \`customDateFormats\` expected to be a \`array\` type and \`onError\` expected to be a \`void function\` type. But received: ['convertBooleans': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
67
+ convertBooleans
68
+ )}\`, 'convertDates': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
69
+ convertDates
70
+ )}\`, 'convertNumbers': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
71
+ convertNumbers
72
+ )}\`, 'loggingOnFail': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
73
+ loggingOnFail
74
+ )}\`, 'removeEmptyArrays': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
75
+ removeEmptyArrays
76
+ )}\`, 'removeEmptyObjects': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
77
+ removeEmptyObjects
78
+ )}\`, 'removeNulls': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
79
+ removeNulls
80
+ )}\`, 'removeUndefined': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
81
+ removeUndefined
82
+ )}\`, 'strictMode': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
83
+ strictMode
84
+ )}\`, 'customDateFormats': \`${chunkPZQ6I4JJ_cjs.getPreciseType(
85
+ customDateFormats
86
+ )}\`, 'onError': \`${chunkPZQ6I4JJ_cjs.getPreciseType(onError)}\`].`
87
+ );
88
+ }
89
+ return {
90
+ convertBooleans,
91
+ convertDates,
92
+ convertNumbers,
93
+ convertNaN,
94
+ loggingOnFail,
95
+ removeEmptyArrays,
96
+ removeEmptyObjects,
97
+ removeNulls,
98
+ removeUndefined,
99
+ strictMode,
100
+ customDateFormats,
101
+ onError,
102
+ checkSymbols
103
+ };
104
+ };
105
+
106
+ var cleanParsedData = (data, options = {}) => {
107
+ const validOptions = validateJsonParsingOptions(options);
108
+ if (chunkPZQ6I4JJ_cjs.isNull(data)) return validOptions.removeNulls ? void 0 : null;
109
+ if (chunkPZQ6I4JJ_cjs.isUndefined(data)) return validOptions.removeUndefined ? void 0 : void 0;
110
+ if (chunkPZQ6I4JJ_cjs.isString(data)) {
111
+ const trimmed = data.trim();
112
+ if (validOptions.convertNaN && trimmed === "NaN") return NaN;
113
+ if (validOptions.convertNumbers && !isNaN(Number(trimmed))) {
114
+ return Number(trimmed);
115
+ }
116
+ if (validOptions.convertBooleans) {
117
+ if (trimmed === "true") return true;
118
+ if (trimmed === "false") return false;
119
+ }
120
+ if (validOptions.convertDates) {
121
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(trimmed)) {
122
+ return new Date(trimmed);
123
+ }
124
+ if (validOptions.customDateFormats?.length) {
125
+ for (const format of validOptions.customDateFormats) {
126
+ const date = parseCustomDate(trimmed, format);
127
+ if (date) return date;
128
+ }
129
+ }
130
+ }
131
+ return validOptions.strictMode ? void 0 : trimmed;
132
+ }
133
+ if (chunkPZQ6I4JJ_cjs.isArray(data)) {
134
+ const cleanedArray = data.map((item) => cleanParsedData(item, validOptions)).filter((item) => !chunkPZQ6I4JJ_cjs.isUndefined(item));
135
+ return validOptions.removeEmptyArrays && chunkZETAZZLD_cjs.isEmptyArray(cleanedArray) ? void 0 : cleanedArray;
136
+ }
137
+ if (chunkPZQ6I4JJ_cjs.isObject(data)) {
138
+ const cleanedObject = {};
139
+ for (const key in data) {
140
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
141
+ const cleanedValue = cleanParsedData(data[key], validOptions);
142
+ if (!chunkPZQ6I4JJ_cjs.isUndefined(cleanedValue)) {
143
+ cleanedObject[key] = cleanedValue;
144
+ }
145
+ }
146
+ }
147
+ return validOptions.removeEmptyObjects && chunkZETAZZLD_cjs.isEmptyObject(cleanedObject, { checkSymbols: validOptions.checkSymbols }) ? void 0 : cleanedObject;
148
+ }
149
+ return validOptions.strictMode ? void 0 : data;
150
+ };
151
+
152
+ var extractDigits = (value) => {
153
+ if (!chunkPZQ6I4JJ_cjs.isString(value) && !chunkPZQ6I4JJ_cjs.isNumber(value)) return 0;
154
+ const cleaned = String(value).trim().replace(/[^0-9]/g, "");
155
+ return Number(cleaned) || 0;
156
+ };
157
+
158
+ function fixSingleQuotesEscapeBackslash(input) {
159
+ const validEscapes = /* @__PURE__ */ new Set(["\\", '"', "/", "b", "f", "n", "r", "t", "u"]);
160
+ let output = "";
161
+ let inSingleQuote = false;
162
+ let inDoubleQuote = false;
163
+ let escapeNext = false;
164
+ for (let i = 0; i < input.length; i++) {
165
+ const c = input[i];
166
+ if (escapeNext) {
167
+ if (inSingleQuote) {
168
+ if (c === "'") {
169
+ output += "'";
170
+ } else if (validEscapes.has(c)) {
171
+ if (c === "\\") {
172
+ output += "\\\\";
173
+ } else if (c === '"') {
174
+ output += '\\"';
175
+ } else {
176
+ output += "\\" + c;
177
+ }
178
+ } else {
179
+ output += "\\\\" + c;
180
+ }
181
+ } else if (inDoubleQuote) {
182
+ if (c === '"') {
183
+ output += '\\"';
184
+ } else if (validEscapes.has(c)) {
185
+ output += "\\" + c;
186
+ } else {
187
+ output += "\\\\" + c;
188
+ }
189
+ } else {
190
+ output += "\\" + c;
191
+ }
192
+ escapeNext = false;
193
+ continue;
194
+ }
195
+ if (c === "\\") {
196
+ escapeNext = true;
197
+ continue;
198
+ }
199
+ if (!inSingleQuote && !inDoubleQuote) {
200
+ if (c === "'") {
201
+ output += '"';
202
+ inSingleQuote = true;
203
+ continue;
204
+ }
205
+ if (c === '"') {
206
+ output += '"';
207
+ inDoubleQuote = true;
208
+ continue;
209
+ }
210
+ } else if (inSingleQuote) {
211
+ if (c === "'") {
212
+ output += '"';
213
+ inSingleQuote = false;
214
+ continue;
215
+ }
216
+ } else if (inDoubleQuote) {
217
+ if (c === '"') {
218
+ output += '"';
219
+ inDoubleQuote = false;
220
+ continue;
221
+ }
222
+ }
223
+ output += c;
224
+ }
225
+ return output;
226
+ }
227
+
228
+ function safeJsonParse(value, options = {}) {
229
+ if (chunkPZQ6I4JJ_cjs.isNull(value)) return null;
230
+ const validOptions = validateJsonParsingOptions(options);
231
+ if (validOptions.convertNaN && (chunkPZQ6I4JJ_cjs.isNaN(value) || chunkPZQ6I4JJ_cjs.isNonEmptyString(value) && value === "NaN")) {
232
+ return NaN;
233
+ }
234
+ if (validOptions.convertNumbers && !chunkPZQ6I4JJ_cjs.isNaN(Number(value)) && chunkPZQ6I4JJ_cjs.isNumber(extractDigits(value))) {
235
+ return Number(value);
236
+ }
237
+ if (!chunkPZQ6I4JJ_cjs.isString(value)) return void 0;
238
+ try {
239
+ let normalized = fixSingleQuotesEscapeBackslash(value);
240
+ if (validOptions.removeUndefined) {
241
+ normalized = normalized.replace(/,\s*"[^"]*"\s*:\s*undefined(?=\s*[},])/g, "").replace(/"[^"]*"\s*:\s*undefined\s*(,)?/g, "");
242
+ } else {
243
+ normalized = normalized.replace(/:\s*undefined(?=\s*[,}])/g, ":null");
244
+ }
245
+ if (validOptions.convertNaN) {
246
+ normalized = normalized.replace(/:\s*NaN(?=\s*[,}])/g, ':"NaN"');
247
+ } else {
248
+ normalized = normalized.replace(/:\s*NaN(?=\s*[,}])/g, ':"NaN"').replace(/,\s*"[^"]*"\s*:\s*NaN(?=\s*[},])/g, "").replace(/"[^"]*"\s*:\s*NaN\s*(,)?/g, "");
249
+ }
250
+ normalized = normalized.replace(/,(\s*[}\]])/g, "$1");
251
+ const parsed = JSON.parse(normalized);
252
+ return cleanParsedData(parsed, validOptions);
253
+ } catch (error) {
254
+ if (validOptions.loggingOnFail) {
255
+ console.error("Failed to parsing at `safeJsonParse`:", error);
256
+ }
257
+ validOptions.onError(
258
+ chunkPZQ6I4JJ_cjs.isError(error) ? new Error(error.message.replace(/^JSON\.parse:/, "Failed to parsing")) : new Error(String(error))
259
+ );
260
+ return void 0;
261
+ }
262
+ }
263
+
264
+ exports.cleanParsedData = cleanParsedData;
265
+ exports.extractDigits = extractDigits;
266
+ exports.parseCustomDate = parseCustomDate;
267
+ exports.safeJsonParse = safeJsonParse;