full-utils 3.0.1 → 3.0.3
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/browser.cjs +1 -1
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.cts +1 -1
- package/dist/browser.d.ts +1 -1
- package/dist/browser.mjs +1 -1
- package/dist/browser.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +18 -14
- package/dist/index.d.ts +18 -14
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/node.cjs +1 -1
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.cts +1 -1
- package/dist/node.d.ts +1 -1
- package/dist/node.mjs +1 -1
- package/dist/node.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -347,6 +347,8 @@ declare function boolNormalize(value: unknown): boolean;
|
|
|
347
347
|
*/
|
|
348
348
|
declare function wait(timeout?: number): Promise<void>;
|
|
349
349
|
|
|
350
|
+
declare function env(k: any): string | undefined;
|
|
351
|
+
|
|
350
352
|
/**
|
|
351
353
|
* Represents a human-readable breakdown of a time duration
|
|
352
354
|
* into its fundamental components — **days**, **hours**, **minutes**, and **seconds**.
|
|
@@ -3041,32 +3043,32 @@ declare function strNull(value: unknown): {} | null;
|
|
|
3041
3043
|
*
|
|
3042
3044
|
* @example
|
|
3043
3045
|
* // International format already valid
|
|
3044
|
-
*
|
|
3046
|
+
* strPhone('+380501234567'); // => "+380501234567"
|
|
3045
3047
|
*
|
|
3046
3048
|
* @example
|
|
3047
3049
|
* // European "00" prefix
|
|
3048
|
-
*
|
|
3050
|
+
* strPhone('00442079460729'); // => "+442079460729"
|
|
3049
3051
|
*
|
|
3050
3052
|
* @example
|
|
3051
3053
|
* // Local 10-digit number (default country +7)
|
|
3052
|
-
*
|
|
3054
|
+
* strPhone('9123456789'); // => "+79123456789"
|
|
3053
3055
|
*
|
|
3054
3056
|
* @example
|
|
3055
3057
|
* // With custom default country
|
|
3056
|
-
*
|
|
3058
|
+
* strPhone('9876543210', '+34'); // => "+349876543210"
|
|
3057
3059
|
*
|
|
3058
3060
|
* @example
|
|
3059
3061
|
* // Strings with spaces, punctuation, parentheses
|
|
3060
|
-
*
|
|
3061
|
-
*
|
|
3062
|
+
* strPhone('(050) 123-45-67'); // => "+70501234567"
|
|
3063
|
+
* strPhone('+1 (202) 555-0183'); // => "+12025550183"
|
|
3062
3064
|
*
|
|
3063
3065
|
* @example
|
|
3064
3066
|
* // Invalid or ambiguous inputs
|
|
3065
|
-
*
|
|
3066
|
-
*
|
|
3067
|
-
*
|
|
3068
|
-
*
|
|
3069
|
-
*
|
|
3067
|
+
* strPhone(''); // => null
|
|
3068
|
+
* strPhone('000123456'); // => null
|
|
3069
|
+
* strPhone('abcdefgh'); // => null
|
|
3070
|
+
* strPhone(null); // => null
|
|
3071
|
+
* strPhone(true); // => null
|
|
3070
3072
|
*
|
|
3071
3073
|
* @see isStr
|
|
3072
3074
|
* @see strTrim
|
|
@@ -3075,7 +3077,7 @@ declare function strNull(value: unknown): {} | null;
|
|
|
3075
3077
|
* @public
|
|
3076
3078
|
* @since 2.0.0
|
|
3077
3079
|
*/
|
|
3078
|
-
declare function
|
|
3080
|
+
declare function strPhone(value?: unknown, defaultCountry?: string): string | null;
|
|
3079
3081
|
|
|
3080
3082
|
/**
|
|
3081
3083
|
* Trims, normalizes, and cleans up invisible characters from a string.
|
|
@@ -3159,7 +3161,7 @@ declare function formatToPhone(value?: unknown, defaultCountry?: string): string
|
|
|
3159
3161
|
* @public
|
|
3160
3162
|
* @since 2.0.0
|
|
3161
3163
|
*/
|
|
3162
|
-
declare function strTrim(value: unknown): string;
|
|
3164
|
+
declare function strTrim(value: unknown, border?: string): string;
|
|
3163
3165
|
|
|
3164
3166
|
/**
|
|
3165
3167
|
* Converts `null` or empty (whitespace-only) strings into `undefined`.
|
|
@@ -3255,4 +3257,6 @@ type UrlObj = {
|
|
|
3255
3257
|
|
|
3256
3258
|
declare function urlObj(value?: string): UrlObj;
|
|
3257
3259
|
|
|
3258
|
-
|
|
3260
|
+
declare function urlDecode(input: string): string;
|
|
3261
|
+
|
|
3262
|
+
export { type JSONLike, type PasswordOptions, type TimeParts, arrFuncArgs, arrSplitPortions, boolNormalize, dateFloorMin, datePartsSec, dateSecParts, dateStr, env, ipNumStr, ipStrNum, isArr, isArrFilled, isBool, isClass, isDate, isEmail, isExists, isFunc, isIpAddr, isMacAddr, isNum, isNumFloat, isNumN, isNumNZ, isNumP, isNumPZ, isObj, isObjFilled, isPassword, isPhone, isStr, isStrAscDesc, isStrBool, isStrFilled, isVar, jsonDecode, jsonEncode, jsonParse, jsonStrLike, numNormalize, strLowerCase, strNormalCase, strNormalize, strNull, strPhone, strTrim, strUndefined, urlDecode, urlObj, wait };
|
package/dist/index.d.ts
CHANGED
|
@@ -347,6 +347,8 @@ declare function boolNormalize(value: unknown): boolean;
|
|
|
347
347
|
*/
|
|
348
348
|
declare function wait(timeout?: number): Promise<void>;
|
|
349
349
|
|
|
350
|
+
declare function env(k: any): string | undefined;
|
|
351
|
+
|
|
350
352
|
/**
|
|
351
353
|
* Represents a human-readable breakdown of a time duration
|
|
352
354
|
* into its fundamental components — **days**, **hours**, **minutes**, and **seconds**.
|
|
@@ -3041,32 +3043,32 @@ declare function strNull(value: unknown): {} | null;
|
|
|
3041
3043
|
*
|
|
3042
3044
|
* @example
|
|
3043
3045
|
* // International format already valid
|
|
3044
|
-
*
|
|
3046
|
+
* strPhone('+380501234567'); // => "+380501234567"
|
|
3045
3047
|
*
|
|
3046
3048
|
* @example
|
|
3047
3049
|
* // European "00" prefix
|
|
3048
|
-
*
|
|
3050
|
+
* strPhone('00442079460729'); // => "+442079460729"
|
|
3049
3051
|
*
|
|
3050
3052
|
* @example
|
|
3051
3053
|
* // Local 10-digit number (default country +7)
|
|
3052
|
-
*
|
|
3054
|
+
* strPhone('9123456789'); // => "+79123456789"
|
|
3053
3055
|
*
|
|
3054
3056
|
* @example
|
|
3055
3057
|
* // With custom default country
|
|
3056
|
-
*
|
|
3058
|
+
* strPhone('9876543210', '+34'); // => "+349876543210"
|
|
3057
3059
|
*
|
|
3058
3060
|
* @example
|
|
3059
3061
|
* // Strings with spaces, punctuation, parentheses
|
|
3060
|
-
*
|
|
3061
|
-
*
|
|
3062
|
+
* strPhone('(050) 123-45-67'); // => "+70501234567"
|
|
3063
|
+
* strPhone('+1 (202) 555-0183'); // => "+12025550183"
|
|
3062
3064
|
*
|
|
3063
3065
|
* @example
|
|
3064
3066
|
* // Invalid or ambiguous inputs
|
|
3065
|
-
*
|
|
3066
|
-
*
|
|
3067
|
-
*
|
|
3068
|
-
*
|
|
3069
|
-
*
|
|
3067
|
+
* strPhone(''); // => null
|
|
3068
|
+
* strPhone('000123456'); // => null
|
|
3069
|
+
* strPhone('abcdefgh'); // => null
|
|
3070
|
+
* strPhone(null); // => null
|
|
3071
|
+
* strPhone(true); // => null
|
|
3070
3072
|
*
|
|
3071
3073
|
* @see isStr
|
|
3072
3074
|
* @see strTrim
|
|
@@ -3075,7 +3077,7 @@ declare function strNull(value: unknown): {} | null;
|
|
|
3075
3077
|
* @public
|
|
3076
3078
|
* @since 2.0.0
|
|
3077
3079
|
*/
|
|
3078
|
-
declare function
|
|
3080
|
+
declare function strPhone(value?: unknown, defaultCountry?: string): string | null;
|
|
3079
3081
|
|
|
3080
3082
|
/**
|
|
3081
3083
|
* Trims, normalizes, and cleans up invisible characters from a string.
|
|
@@ -3159,7 +3161,7 @@ declare function formatToPhone(value?: unknown, defaultCountry?: string): string
|
|
|
3159
3161
|
* @public
|
|
3160
3162
|
* @since 2.0.0
|
|
3161
3163
|
*/
|
|
3162
|
-
declare function strTrim(value: unknown): string;
|
|
3164
|
+
declare function strTrim(value: unknown, border?: string): string;
|
|
3163
3165
|
|
|
3164
3166
|
/**
|
|
3165
3167
|
* Converts `null` or empty (whitespace-only) strings into `undefined`.
|
|
@@ -3255,4 +3257,6 @@ type UrlObj = {
|
|
|
3255
3257
|
|
|
3256
3258
|
declare function urlObj(value?: string): UrlObj;
|
|
3257
3259
|
|
|
3258
|
-
|
|
3260
|
+
declare function urlDecode(input: string): string;
|
|
3261
|
+
|
|
3262
|
+
export { type JSONLike, type PasswordOptions, type TimeParts, arrFuncArgs, arrSplitPortions, boolNormalize, dateFloorMin, datePartsSec, dateSecParts, dateStr, env, ipNumStr, ipStrNum, isArr, isArrFilled, isBool, isClass, isDate, isEmail, isExists, isFunc, isIpAddr, isMacAddr, isNum, isNumFloat, isNumN, isNumNZ, isNumP, isNumPZ, isObj, isObjFilled, isPassword, isPhone, isStr, isStrAscDesc, isStrBool, isStrFilled, isVar, jsonDecode, jsonEncode, jsonParse, jsonStrLike, numNormalize, strLowerCase, strNormalCase, strNormalize, strNull, strPhone, strTrim, strUndefined, urlDecode, urlObj, wait };
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function V(t){if(!s(t))return [t];let r=t.trim();if(r==="")return [];if(r.startsWith("[")&&r.endsWith("]")&&(r=r.slice(1,-1).trim(),r===""))return [];let n="",e=false,o=null,i=false,u=0,p=0,d=0,S=[],g=()=>{let c=n.trim();c!==""&&S.push(c),n="";};for(let c=0;c<r.length;c++){let f=r[c];if(e){if(n+=f,i){i=false;continue}if(f==="\\"){i=true;continue}f===o&&(e=false,o=null);continue}if(f==='"'||f==="'"){e=true,o=f,n+=f;continue}if(f==="("){u++,n+=f;continue}if(f===")"){u=Math.max(0,u-1),n+=f;continue}if(f==="["){p++,n+=f;continue}if(f==="]"){p=Math.max(0,p-1),n+=f;continue}if(f==="{"){d++,n+=f;continue}if(f==="}"){d=Math.max(0,d-1),n+=f;continue}if(f===","&&u===0&&p===0&&d===0){g();continue}n+=f;}return n.length&&g(),S.map(c=>{if(c.startsWith("$")&&c.includes("(")&&c.endsWith(")"))return c;if(c==="null")return null;if(c==="undefined")return;if(P(c))return F(c);let f=A(c);if(Number.isFinite(f))return f;if(c==="Infinity")return 1/0;if(c==="-Infinity")return -1/0;let l=String(c||"");if(l.length>=2&&(l.startsWith("'")&&l.endsWith("'")||l.startsWith('"')&&l.endsWith('"')))return l.slice(1,-1).replace(/\\\\/g,"\\").replace(/\\'/g,"'").replace(/\\"/g,'"');if(l.startsWith("{")&&l.endsWith("}")||l.startsWith("[")&&l.endsWith("]"))try{return D(l)}catch{}return l})}function H(t,r){if(!Number.isInteger(r)||r<=0)return [];let n=[],e=0;for(;e<t.length;)n.push(t.slice(e,e+r)),e+=r;return n}function F(t){switch(true){case k(t):return t;case y(t):return true;case O(t):return false;case(m(t)&&["true","1","yes","on"].includes(String(t??"").trim().toLowerCase())):return true;case(m(t)&&["false","0","no","off"].includes(String(t??"").trim().toLowerCase())):return false}return false}async function G(t=0){await new Promise(r=>setTimeout(()=>r(true),t));}function v(t){return process.env[t]}function rt(t=1,r=new Date){let n=Math.min(60,Math.max(1,Math.trunc(Math.abs(t)))),e=r.getMinutes(),o=Math.floor(e/n)*n,i=new Date(r);return i.setMinutes(o,0,0),i}function et(t=new Date){let r=d=>String(d).padStart(2,"0"),n=t.getFullYear(),e=r(t.getMonth()+1),o=r(t.getDate()),i=r(t.getHours()),u=r(t.getMinutes()),p=r(t.getSeconds());return `${n}-${e}-${o} ${i}:${u}:${p}`}function it(t){let{days:r=0,hours:n=0,minutes:e=0,seconds:o=0}=t;return r*86400+n*3600+e*60+o}function ut(t){if(!Number.isFinite(t)||t<0)throw new Error("Invalid total seconds");let r=Math.floor(t/86400),n=Math.floor(t%86400/3600),e=Math.floor(t%3600/60),o=t%60;return {days:r,hours:n,minutes:e,seconds:o}}function mt(t){let r=t.split(".").map(i=>Number(i));if(r.length!==4||r.some(i=>!Number.isInteger(i)||i<0||i>255))throw new Error("Invalid IPv4 address");let n=new ArrayBuffer(4),e=new DataView(n),o=0;for(;o<4;)e.setUint8(o,r[o]),o++;return e.getUint32(0,false)}function lt(t){if(!y(t))return "";let r=new ArrayBuffer(4),n=new DataView(r);n.setUint32(0,t,false);let e=[],o=0;for(;o<4;)e.push(n.getUint8(o)),o++;return e.join(".")}function h(t){return Array.isArray(t)}function I(t){return h(t)&&t.length>0}function k(t){return typeof t=="boolean"}function kt(t){if(t instanceof Date)return !Number.isNaN(t.getTime());if(s(t)||a(t)){let r=new Date(t);return !Number.isNaN(r.getTime())}return false}var _=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z]{2,})+$/;function bt(t){return m(t)?_.test(t):false}function Ft(t){return t!=null}function j(t){return typeof t=="function"}var B=/^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;function Ot(t){if(!s(t))return false;let r=t.trim();return B.test(r)}function $t(t){return s(t)&&/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(t)}function a(t){return typeof t=="number"&&Number.isFinite(t)}function Ct(t){return a(t)&&!Number.isInteger(t)}function Ut(t){return a(t)&&t<0}function O(t){return a(t)&&t<=0}function y(t){return a(t)&&t>0}function $(t){return a(t)&&t>=0}function w(t){return typeof t=="object"&&t!==null&&Object.prototype.toString.call(t)==="[object Object]"&&!Array.isArray(t)}function L(t){return w(t)&&Object.keys(t).length>0}function Gt(t,{minLength:r=8,maxLength:n=256,requireUppercase:e=true,requireLowercase:o=true,requireDigit:i=true,requireSpecial:u=true}={}){return !(!s(t)||t.length<r||t.length>n||e&&!/[A-ZА-Я]/.test(t)||o&&!/[a-zа-я]/.test(t)||i&&!/\d/.test(t)||u&&!/[~!?@#$%^&*_\-+()\[\]{}><\\\/|"'.,:;=]/.test(t))}function tr(t){if(!m(t)&&!a(t))return false;let r=String(t).trim();return !(r.startsWith("-")||(r.match(/\+/g)||[]).length>1||r.includes("+")&&!r.startsWith("+")||!/^\+?[0-9-]+$/.test(r)||r.length<3||r.length>20||!/[0-9]$/.test(r)||r.includes("--"))}function s(t){return typeof t=="string"}function P(t){if(!m(t))return false;let r=t.trim().toLowerCase();return r==="true"||r==="false"}function m(t){return s(t)&&t.trim().length>0}function fr(t){if(!m(t))return false;let r=t.trim().toLowerCase();return r==="asc"||r==="desc"}function ar(t){return s(t)&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(t)}function dr(t){return j(t)&&/^class\s/.test(Function.prototype.toString.call(t))}var J=/^(['"`])([\s\S]*)\1$/;function N(t,r){let n=t.trim(),e=E(n);if(e.ok)return e.value;let o=J.exec(n);return o?o[2]:r?n:null}function E(t){try{return {ok:!0,value:JSON.parse(t)}}catch{}return {ok:false}}function D(t,r=false){if(t===null||a(t)||k(t))return t;if(I(t)){let n=t,e=[];for(let o of n)m(o)?e.push(N(String(o),r)):e.push(o);return e}if(L(t)){let n=t,e={};for(let o of Object.keys(n)){let i=n[o];m(i)?e[o]=N(String(i),r):e[o]=i;}return e}return h(t)||w(t)?t:m(t)?N(String(t),r):null}function Tr(t){try{return w(t)||h(t)?JSON.stringify(t):""}catch{}return ""}function W(t){let r=t.sign<0?"-":"",n=t.digitsInteger.toString();if(t.scale===0)return r+n;let e=t.scale-n.length;if(e>=0)return r+"0."+"0".repeat(e)+n;let o=n.length-t.scale,i=n.slice(0,o),u=n.slice(o);return r+i+"."+u}function C(t){return Number(W(t))}function b(t,r){let n=/^([0-9]+)(?:\.([0-9]*))?e([+\-]?[0-9]+)$/i.exec((()=>{let[i,u]=r.split(/e/i),[p,d=""]=i.split("."),S=p.replace(/^0+/,"")+d,g=parseInt(u,10)-d.length;return `${S||"0"}e${g}`})());if(!n)throw new Error("Failed to parse exponential notation.");let e=n[1],o=parseInt(n[3],10);if($(o))return e=e+"0".repeat(o),{sign:t,integerPart:e||"0",fractionalPart:""};{let i=-o;if(i>=e.length){let u="0".repeat(i-e.length);return {sign:t,integerPart:"0",fractionalPart:u+e}}else {let u=e.length-i;return {sign:t,integerPart:e.slice(0,u),fractionalPart:e.slice(u)}}}}function M(t){if(typeof t=="bigint"){let r=t<0n?-1:1,n=(t<0n?-t:t).toString();return {sign:r,integerPart:n,fractionalPart:""}}if(typeof t=="number"){if(!Number.isFinite(t))throw new Error("Input number is not finite.");let r=t<0?-1:1,e=Math.abs(t).toExponential(30);return b(r,e)}if(typeof t=="string"){let r=t.trim().replace(",",".");if(!r)throw new Error("Input string is empty.");let n=1;if((r.startsWith("+")||r.startsWith("-"))&&(n=r.startsWith("-")?-1:1,r=r.slice(1)),/^[0-9]*\.?[0-9]*(e[+\-]?[0-9]+)?$/i.test(r)){if(/e/i.test(r))return b(n,r);let[e="0",o=""]=r.split(".");return {sign:n,integerPart:e,fractionalPart:o}}throw new Error("Invalid numeric string.")}throw new Error("Unsupported input type.")}function T(t){let{sign:r,integerPart:n,fractionalPart:e}=M(t),o=n.replace(/^0+/,"")||"0",i=e.replace(/0+$/,""),u=o+i||"0";return {sign:r,digitsInteger:BigInt(u),scale:i.length}}function z(t,r,n="half-up"){let e=Math.max(0,Math.trunc(r));if(t.scale<=e)return {...t};let o=t.scale-e,i=10n**BigInt(o),u=t.digitsInteger/i,p=t.digitsInteger%i;if(n==="trunc"||p===0n)return {sign:t.sign,digitsInteger:u,scale:e};let d=i/2n,g=p>=d?u+1n:u;return {sign:t.sign,digitsInteger:g,scale:e}}function A(t,r=1,n=false){try{return C(r>1?z(T(t),r,"half-up"):T(t))}catch(e){if(n)throw e}return 0}function U(t){if(!s(t))return "";let r=x(t);return m(r)?r.toLowerCase():""}function Rr(t){if(!s(t))return "";let r=U(t);return m(r)?r[0].toUpperCase()+r.slice(1):""}function Hr(t){return s(t)&&x(t)===""||t===void 0?null:t}function Yr(t,r="+7"){if(!s(t))return null;let n=x(t).replace(/[\s\-().]/g,"");return /^00\d{8,15}$/.test(n)?n="+"+n.slice(2):/^\d{10}$/.test(n)?n=r+n:/^\d{9,15}$/.test(n)&&!n.startsWith("0")&&(n="+"+n),/^\+\d{10,15}$/.test(n)?n:null}function x(t,r=""){let n=String(s(t)?t.trim().normalize("NFKC").replace(/[\u200B-\u200D\uFEFF]/g,""):"");return r?n.split(r).filter(e=>!!e).join(r):n}function nn(t){return s(t)&&x(t)===""||t===null?void 0:t}var sn=t=>{if(!s(t))return t;let r=String(x(t)||"");return r===""?null:String(r.toLowerCase()||"").replace(/\s+/g," ").replace(/\t+/g,"").replace(/\n+/g,"")};function fn(t=""){return {}}function an(t){if(!m(t))return String(t);let r="____RAW_PERCENT____",n=t.replace(/%(?![0-9A-Fa-f]{2})/g,r),e=new Set(["22","7B","7D","3A","2C","5B","5D","5C"]);return n.replace(/%([0-9A-Fa-f]{2})/g,(i,u)=>{let p=u.toUpperCase();return e.has(p)?decodeURIComponent(`%${p}`):`%${p}`}).split(r).join("%")}export{V as arrFuncArgs,H as arrSplitPortions,F as boolNormalize,rt as dateFloorMin,it as datePartsSec,ut as dateSecParts,et as dateStr,v as env,lt as ipNumStr,mt as ipStrNum,h as isArr,I as isArrFilled,k as isBool,dr as isClass,kt as isDate,bt as isEmail,Ft as isExists,j as isFunc,Ot as isIpAddr,$t as isMacAddr,a as isNum,Ct as isNumFloat,Ut as isNumN,O as isNumNZ,y as isNumP,$ as isNumPZ,w as isObj,L as isObjFilled,Gt as isPassword,tr as isPhone,s as isStr,fr as isStrAscDesc,P as isStrBool,m as isStrFilled,ar as isVar,D as jsonDecode,Tr as jsonEncode,E as jsonParse,N as jsonStrLike,A as numNormalize,U as strLowerCase,Rr as strNormalCase,sn as strNormalize,Hr as strNull,Yr as strPhone,x as strTrim,nn as strUndefined,an as urlDecode,fn as urlObj,G as wait};//# sourceMappingURL=index.mjs.map
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|