@salespark/toolkit 2.1.17 → 2.1.18

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/dist/index.d.cts CHANGED
@@ -981,8 +981,52 @@ declare const deferAfterResponse: (res: HttpResponseLike, fn: DeferFn) => void;
981
981
  ******************************************************************/
982
982
  declare const deferAfterResponseNonCritical: (res: HttpResponseLike, fn: DeferFn) => void;
983
983
 
984
+ /******************************************************
985
+ * ##: Reversible Base36 Code Encoder/Decoder (No Deps)
986
+ * Encodes a base36 identifier into a lower-case base36 code using a secret key.
987
+ * Decodes back with the same secret and configuration.
988
+ * History:
989
+ * 16-02-2026: Created
990
+ ****************************************************/
991
+ type EncodeDecodeConfig = {
992
+ secret: string;
993
+ bitSize?: number;
994
+ rotateBits?: number;
995
+ addConstant?: string;
996
+ };
997
+ /******************************************************************
998
+ * ##: Encode Base36 Identifier
999
+ * Obfuscates a base36 identifier into a reversible lowercase base36 code using XOR mixing, constant addition, and rotation.
1000
+ *
1001
+ * TL;DR: Encodes a base36 identifier into a reversible base36 code.
1002
+ * Uses a secret-derived key and fixed-width math to keep outputs bounded and reversible.
1003
+ * @param {string} identifier - Source identifier in base36 format
1004
+ * @param {EncodeDecodeConfig} config - Encoding configuration including secret and optional parameters
1005
+ * @returns {SalesParkContract<{ code: string }>} - Return a SalesPark Contract object.
1006
+ * History:
1007
+ * 16-02-2026: Created
1008
+ ******************************************************************/
1009
+ declare const encodeBase36Code: (identifier: string, config: EncodeDecodeConfig) => SalesParkContract<{
1010
+ code: string;
1011
+ }>;
1012
+ /******************************************************************
1013
+ * ##: Decode Base36 Code
1014
+ * Reverses the obfuscation steps to restore the original identifier using the same secret and configuration parameters.
1015
+ *
1016
+ * TL;DR: Decodes a base36 code back into the original identifier.
1017
+ * Requires the same secret and config to reliably reverse XOR, add, and rotation.
1018
+ * @param {string} code - Encoded base36 code to decode
1019
+ * @param {EncodeDecodeConfig} config - Decoding configuration including secret and optional parameters
1020
+ * @returns {SalesParkContract<{ identifier: string }>} - Return a SalesPark Contract object.
1021
+ * History:
1022
+ * 16-02-2026: Created
1023
+ ******************************************************************/
1024
+ declare const decodeBase36Code: (code: string, config: EncodeDecodeConfig) => SalesParkContract<{
1025
+ identifier: string;
1026
+ }>;
1027
+
984
1028
  /** Environment helpers (runtime-agnostic checks) */
985
1029
  declare const isBrowser: boolean;
986
1030
  declare const isNode: boolean;
987
1031
 
988
- export { type CapitalizeFirstOptions, type CapitalizeWordsOptions, type DeferFn, type FormatCurrencyProOptions, type HttpResponseLike, type SecurityCheckResult, type SecurityRisk, type SentenceCaseOptions, addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
1032
+ export { type CapitalizeFirstOptions, type CapitalizeWordsOptions, type DeferFn, type EncodeDecodeConfig, type FormatCurrencyProOptions, type HttpResponseLike, type SecurityCheckResult, type SecurityRisk, type SentenceCaseOptions, addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeBase36Code, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeBase36Code, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
package/dist/index.d.ts CHANGED
@@ -981,8 +981,52 @@ declare const deferAfterResponse: (res: HttpResponseLike, fn: DeferFn) => void;
981
981
  ******************************************************************/
982
982
  declare const deferAfterResponseNonCritical: (res: HttpResponseLike, fn: DeferFn) => void;
983
983
 
984
+ /******************************************************
985
+ * ##: Reversible Base36 Code Encoder/Decoder (No Deps)
986
+ * Encodes a base36 identifier into a lower-case base36 code using a secret key.
987
+ * Decodes back with the same secret and configuration.
988
+ * History:
989
+ * 16-02-2026: Created
990
+ ****************************************************/
991
+ type EncodeDecodeConfig = {
992
+ secret: string;
993
+ bitSize?: number;
994
+ rotateBits?: number;
995
+ addConstant?: string;
996
+ };
997
+ /******************************************************************
998
+ * ##: Encode Base36 Identifier
999
+ * Obfuscates a base36 identifier into a reversible lowercase base36 code using XOR mixing, constant addition, and rotation.
1000
+ *
1001
+ * TL;DR: Encodes a base36 identifier into a reversible base36 code.
1002
+ * Uses a secret-derived key and fixed-width math to keep outputs bounded and reversible.
1003
+ * @param {string} identifier - Source identifier in base36 format
1004
+ * @param {EncodeDecodeConfig} config - Encoding configuration including secret and optional parameters
1005
+ * @returns {SalesParkContract<{ code: string }>} - Return a SalesPark Contract object.
1006
+ * History:
1007
+ * 16-02-2026: Created
1008
+ ******************************************************************/
1009
+ declare const encodeBase36Code: (identifier: string, config: EncodeDecodeConfig) => SalesParkContract<{
1010
+ code: string;
1011
+ }>;
1012
+ /******************************************************************
1013
+ * ##: Decode Base36 Code
1014
+ * Reverses the obfuscation steps to restore the original identifier using the same secret and configuration parameters.
1015
+ *
1016
+ * TL;DR: Decodes a base36 code back into the original identifier.
1017
+ * Requires the same secret and config to reliably reverse XOR, add, and rotation.
1018
+ * @param {string} code - Encoded base36 code to decode
1019
+ * @param {EncodeDecodeConfig} config - Decoding configuration including secret and optional parameters
1020
+ * @returns {SalesParkContract<{ identifier: string }>} - Return a SalesPark Contract object.
1021
+ * History:
1022
+ * 16-02-2026: Created
1023
+ ******************************************************************/
1024
+ declare const decodeBase36Code: (code: string, config: EncodeDecodeConfig) => SalesParkContract<{
1025
+ identifier: string;
1026
+ }>;
1027
+
984
1028
  /** Environment helpers (runtime-agnostic checks) */
985
1029
  declare const isBrowser: boolean;
986
1030
  declare const isNode: boolean;
987
1031
 
988
- export { type CapitalizeFirstOptions, type CapitalizeWordsOptions, type DeferFn, type FormatCurrencyProOptions, type HttpResponseLike, type SecurityCheckResult, type SecurityRisk, type SentenceCaseOptions, addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
1032
+ export { type CapitalizeFirstOptions, type CapitalizeWordsOptions, type DeferFn, type EncodeDecodeConfig, type FormatCurrencyProOptions, type HttpResponseLike, type SecurityCheckResult, type SecurityRisk, type SentenceCaseOptions, addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeBase36Code, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeBase36Code, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
package/dist/index.js CHANGED
@@ -2029,10 +2029,199 @@ var deferAfterResponseNonCritical = (res, fn) => {
2029
2029
  }
2030
2030
  };
2031
2031
 
2032
+ // src/utils/base36.ts
2033
+ var DEFAULTS = {
2034
+ bitSize: 80,
2035
+ rotateBits: 17,
2036
+ addConstant: "0x1fd0a5b7c3"
2037
+ };
2038
+ var isValidBase36 = (value) => /^[a-z0-9]+$/i.test(value);
2039
+ var normalizeInput = (value) => (value || "").trim();
2040
+ var assertSecret = (secret) => {
2041
+ if (typeof secret !== "string" || secret.trim().length < 12) {
2042
+ return { status: false, data: { message: "Missing or weak secret" } };
2043
+ }
2044
+ return { status: true, data: true };
2045
+ };
2046
+ var parseBase36BigInt = (value) => {
2047
+ try {
2048
+ const normalizedValue = normalizeInput(value);
2049
+ if (!normalizedValue) {
2050
+ return { status: false, data: { message: "Empty input" } };
2051
+ }
2052
+ if (!isValidBase36(normalizedValue)) {
2053
+ return { status: false, data: { message: "Invalid base36 input" } };
2054
+ }
2055
+ const safeValue = normalizedValue.toLowerCase();
2056
+ let output = 0n;
2057
+ for (let i = 0; i < safeValue.length; i++) {
2058
+ const char = safeValue[i];
2059
+ const digit = char >= "0" && char <= "9" ? BigInt(char.charCodeAt(0) - 48) : BigInt(char.charCodeAt(0) - 87);
2060
+ output = output * 36n + digit;
2061
+ }
2062
+ return { status: true, data: output };
2063
+ } catch (error) {
2064
+ return {
2065
+ status: false,
2066
+ data: { message: "Failed to parse base36 input", error }
2067
+ };
2068
+ }
2069
+ };
2070
+ var toBase36Lower = (value) => {
2071
+ try {
2072
+ if (value < 0n) {
2073
+ return {
2074
+ status: false,
2075
+ data: { message: "Negative values are not supported" }
2076
+ };
2077
+ }
2078
+ return { status: true, data: value.toString(36) };
2079
+ } catch (error) {
2080
+ return {
2081
+ status: false,
2082
+ data: { message: "Failed to convert to base36", error }
2083
+ };
2084
+ }
2085
+ };
2086
+ var getParams = (config) => {
2087
+ try {
2088
+ const bitSizeRaw = BigInt(config.bitSize ?? DEFAULTS.bitSize);
2089
+ if (bitSizeRaw <= 0n) {
2090
+ return {
2091
+ status: false,
2092
+ data: { message: "bitSize must be greater than 0" }
2093
+ };
2094
+ }
2095
+ const rotateRaw = BigInt(config.rotateBits ?? DEFAULTS.rotateBits);
2096
+ const rotateBits = (rotateRaw % bitSizeRaw + bitSizeRaw) % bitSizeRaw;
2097
+ const addConstant = BigInt(config.addConstant ?? DEFAULTS.addConstant);
2098
+ const mask = (1n << bitSizeRaw) - 1n;
2099
+ return {
2100
+ status: true,
2101
+ data: { bitSize: bitSizeRaw, rotateBits, addConstant, mask }
2102
+ };
2103
+ } catch (error) {
2104
+ return { status: false, data: { message: "Invalid configuration", error } };
2105
+ }
2106
+ };
2107
+ var secretToKey = (secret, mask) => {
2108
+ let key = 0n;
2109
+ const safeSecret = secret.trim();
2110
+ for (let i = 0; i < safeSecret.length; i++) {
2111
+ key = key * 131n + BigInt(safeSecret.charCodeAt(i)) & mask;
2112
+ }
2113
+ return key;
2114
+ };
2115
+ var rotl = (x, r, bitSize, mask) => {
2116
+ if (r === 0n) return x & mask;
2117
+ return (x << r | x >> bitSize - r) & mask;
2118
+ };
2119
+ var rotr = (x, r, bitSize, mask) => {
2120
+ if (r === 0n) return x & mask;
2121
+ return (x >> r | x << bitSize - r) & mask;
2122
+ };
2123
+ var encodeBase36Code = (identifier, config) => {
2124
+ try {
2125
+ const secretCheck = assertSecret(config?.secret);
2126
+ if (!secretCheck.status) {
2127
+ return { status: false, data: secretCheck.data };
2128
+ }
2129
+ const input = normalizeInput(identifier);
2130
+ if (!input) {
2131
+ return { status: false, data: { message: "Identifier is required" } };
2132
+ }
2133
+ if (!isValidBase36(input)) {
2134
+ return {
2135
+ status: false,
2136
+ data: { message: "Identifier must be base36 (0-9, A-Z)" }
2137
+ };
2138
+ }
2139
+ const parsed = parseBase36BigInt(input);
2140
+ if (!parsed.status) {
2141
+ return { status: false, data: parsed.data };
2142
+ }
2143
+ const params = getParams(config);
2144
+ if (!params.status) {
2145
+ return { status: false, data: params.data };
2146
+ }
2147
+ const {
2148
+ bitSize,
2149
+ rotateBits,
2150
+ addConstant,
2151
+ mask
2152
+ } = params.data;
2153
+ const key = secretToKey(config.secret, mask);
2154
+ let value = parsed.data & mask;
2155
+ value = value ^ key;
2156
+ value = value + addConstant & mask;
2157
+ value = rotl(value, rotateBits, bitSize, mask);
2158
+ const codeResult = toBase36Lower(value);
2159
+ if (!codeResult.status) {
2160
+ return { status: false, data: codeResult.data };
2161
+ }
2162
+ return { status: true, data: { code: codeResult.data } };
2163
+ } catch (error) {
2164
+ return {
2165
+ status: false,
2166
+ data: { message: "Failed to encode code", error }
2167
+ };
2168
+ }
2169
+ };
2170
+ var decodeBase36Code = (code, config) => {
2171
+ try {
2172
+ const secretCheck = assertSecret(config?.secret);
2173
+ if (!secretCheck.status) {
2174
+ return { status: false, data: secretCheck.data };
2175
+ }
2176
+ const input = normalizeInput(code);
2177
+ if (!input) {
2178
+ return { status: false, data: { message: "Code is required" } };
2179
+ }
2180
+ if (!isValidBase36(input)) {
2181
+ return {
2182
+ status: false,
2183
+ data: { message: "Code must be base36 (0-9, a-z)" }
2184
+ };
2185
+ }
2186
+ const parsed = parseBase36BigInt(input);
2187
+ if (!parsed.status) {
2188
+ return { status: false, data: parsed.data };
2189
+ }
2190
+ const params = getParams(config);
2191
+ if (!params.status) {
2192
+ return { status: false, data: params.data };
2193
+ }
2194
+ const {
2195
+ bitSize,
2196
+ rotateBits,
2197
+ addConstant,
2198
+ mask
2199
+ } = params.data;
2200
+ const key = secretToKey(config.secret, mask);
2201
+ let value = parsed.data & mask;
2202
+ value = rotr(value, rotateBits, bitSize, mask);
2203
+ value = value - addConstant & mask;
2204
+ value = value ^ key;
2205
+ const identifierResult = toBase36Lower(value);
2206
+ if (!identifierResult.status) {
2207
+ return { status: false, data: identifierResult.data };
2208
+ }
2209
+ return {
2210
+ status: true,
2211
+ data: { identifier: identifierResult.data.toUpperCase() }
2212
+ };
2213
+ } catch (error) {
2214
+ return {
2215
+ status: false,
2216
+ data: { message: "Failed to decode code", error }
2217
+ };
2218
+ }
2219
+ };
2220
+
2032
2221
  // src/index.ts
2033
2222
  var isBrowser = typeof globalThis !== "undefined" && typeof globalThis.document !== "undefined";
2034
2223
  var isNode = typeof process !== "undefined" && !!process.versions?.node;
2035
2224
 
2036
- export { addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
2225
+ export { addSpaceBetweenNumbers, addThousandsSpace, areArraysDeepEqualUnordered, areArraysEqual, assessSecurityRisks, basicSanitize, capitalizeFirst, capitalizeWords, checkMarkdownSecurity, chunk, clamp, cleanObject, compact, currencyToSymbol, debounce, deburr, decodeBase36Code, decodeObject, decodeString, deferAfterResponse, deferAfterResponseNonCritical, deferNonCritical, deferPostReturn, delay, difference, encodeBase36Code, encodeObject, encodeString, fill, flatten, flattenDepth, flattenDepthBase, flattenOnce, formatBytes, formatCurrency, formatCurrencyPro, formatDecimalNumber, getStringSimilarity, groupBy, hasNilOrEmpty, humanFileSize, intersection, isBrowser, isFlattenable, isNil, isNilEmptyOrEmptyObject, isNilEmptyOrZeroLen, isNilEmptyOrZeroLength, isNilOrEmpty, isNilOrNaN, isNilOrZeroLen, isNilOrZeroLength, isNilText, isNilTextOrEmpty, isNode, isNullOrUndefined, isNullOrUndefinedEmptyOrZero, isNullOrUndefinedInArray, isNullOrUndefinedOrNaN, isNullOrUndefinedTextInc, isNullUndefinedOrEmpty, isNullUndefinedOrEmptyEnforced, isNullUndefinedOrZero, isPTTaxId, isValidIBAN, isValidPTTaxId, numbersEqual, objectToString, omit, otp, parseName, parseToBool, parseToNumber, pick, pluck, pushAll, randomDigits, removeDiacritics, round, safeAdd, safeDivide, safeJSONParse, safeMultiply, safeParseFloat, safeParseInt, safeSubtract, sanitize, sanitizeMarkdown, sentenceCase, shuffle, slugify, sortBy, stringSimilarity, symbolToCurrency, throttle, toBool, toInteger, toNumber, uniq, uniqBy };
2037
2226
  //# sourceMappingURL=index.js.map
2038
2227
  //# sourceMappingURL=index.js.map