@rzl-zone/utils-js 3.3.1 → 3.5.0

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