@vulppi/toolbelt
Version:
A collection of tools and utilities.
2 lines (1 loc) • 2.33 kB
JavaScript
;var i=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var c=(e,r)=>{for(var n in r)i(e,n,{get:r[n],enumerable:!0})},y=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let u of a(r))!f.call(e,u)&&u!==n&&i(e,u,{get:()=>r[u],enumerable:!(t=s(r,u))||t.enumerable});return e};var p=e=>y(i({},"__esModule",{value:!0}),e);var R={};c(R,{clone:()=>l,omitNullables:()=>o,omitShallowProps:()=>x,parseStringBytesToNumber:()=>N,parseStringToAutoDetectPrimitiveValue:()=>P,promiseDelay:()=>m,tryCatch:()=>w,tryCatchAsync:()=>g,tryCatchCallback:()=>d,tryCatchPromise:()=>E});module.exports=p(R);function m(e){return new Promise(r=>setTimeout(r,e))}function l(e){return typeof structuredClone!="function"?JSON.parse(JSON.stringify(e)):structuredClone(e)}function x(e,...r){let n=l(e);for(let t of r)delete n[t];return n}function d(e,r){try{return e()}catch(n){return console.error(n),r&&r(n),null}}function o(e){if(typeof e!="object")return e;if(Array.isArray(e))return e.filter(n=>n!=null).map(o);let r={};for(let n in e){let t=e[n];t!=null&&(typeof t=="object"?Array.isArray(t)?r[n]=t.filter(u=>u!=null).map(o):r[n]=o(t):r[n]=t)}return r}function w(e){try{return[e(),null]}catch(r){return r instanceof Error?[null,r]:typeof r=="string"?[null,new Error(r)]:[null,new Error("Unknown error",{cause:r})]}}async function g(e){try{return[await e(),null]}catch(r){return r instanceof Error?[null,r]:typeof r=="string"?[null,new Error(r)]:[null,new Error("Unknown error",{cause:r})]}}async function E(e){try{return[await e,null]}catch(r){return r instanceof Error?[null,r]:typeof r=="string"?[null,new Error(r)]:[null,new Error("Unknown error",{cause:r})]}}function N(e){if(typeof e!="string")return e;let[,r,n]=e.match(/^(\d+)([kmgt]b?)$/i)||[];if(!r||!n)return 0;let t=parseInt(r);if(isNaN(t))return 0;switch(n.toLowerCase()){case"tb":return t*1024*1024*1024*1024;case"gb":return t*1024*1024*1024;case"mb":return t*1024*1024;case"kb":return t*1024;default:return t}}function P(e){let r=e?.trim().toLowerCase();if(!(r==null||r==="")){if(r==="null")return null;if(r!=="undefined")return r==="nan"?NaN:r==="infinity"?1/0:r==="-infinity"?-1/0:/^(no|n|false|f|off)$/i.test(r)?!1:/^(yes|y|true|t|on)$/i.test(r)?!0:isNaN(Number(r))?r:Number(r)}}