@resk/core
Version:
An innovative TypeScript framework that empowers developers to build applications with a fully decorator-based architecture for efficient resource management. By combining the power of decorators with a resource-oriented design, DecorRes enhances code cla
1 lines • 10.7 kB
JavaScript
;var dateHelper=require('../utils/date/dateHelper'),h=require('../utils/defaultStr'),y=require('../utils/isNonNullString'),st=require('../utils/isRegex'),nt=require('moment');require('../utils/numbers');var z=require('google-libphonenumber'),index=require('../countries/index'),ot=require('../utils/isEmpty'),lt=require('../logger'),ut=require('../utils/isPrimitive'),ct=require('../utils/stringify'),isNullable=require('../utils/isNullable');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var h__default=/*#__PURE__*/_interopDefault(h);var y__default=/*#__PURE__*/_interopDefault(y);var st__default=/*#__PURE__*/_interopDefault(st);var nt__default=/*#__PURE__*/_interopDefault(nt);var z__default=/*#__PURE__*/_interopDefault(z);var ot__default=/*#__PURE__*/_interopDefault(ot);var lt__default=/*#__PURE__*/_interopDefault(lt);var ut__default=/*#__PURE__*/_interopDefault(ut);var ct__default=/*#__PURE__*/_interopDefault(ct);var et=Object.defineProperty,rt=Object.defineProperties;var at=Object.getOwnPropertyDescriptors;var V=Object.getOwnPropertySymbols;var G=Object.prototype.hasOwnProperty,K=Object.prototype.propertyIsEnumerable;var j=(a,t,e)=>t in a?et(a,t,{enumerable:true,configurable:true,writable:true,value:e}):a[t]=e,O=(a,t)=>{for(var e in t||(t={}))G.call(t,e)&&j(a,e,t[e]);if(V)for(var e of V(t))K.call(t,e)&&j(a,e,t[e]);return a},W=(a,t)=>rt(a,at(t));var Z=(a,t)=>{var e={};for(var r in a)G.call(a,r)&&t.indexOf(r)<0&&(e[r]=a[r]);if(a!=null&&V)for(var r of V(a))t.indexOf(r)<0&&K.call(a,r)&&(e[r]=a[r]);return e};const E=z__default.default.PhoneNumberUtil.getInstance(),it=z__default.default.AsYouTypeFormatter;const o=/\d/,X=/[a-zA-Z]/,i=class i{static formatValue(f){var m=f,{value:t,type:e,format:r,dateFormat:s,phoneCountryCode:n}=m,u=Z(m,["value","type","format","dateFormat","phoneCountryCode"]);const c=e&&["decimal","numeric","number"].includes(String(e).toLowerCase());let p=t;const l={};t=isNullable.isNullable(t)?"":t,t||(p=c?0:String(t)),c&&(p=i.parseDecimal(t));let M=ut__default.default(t)?String(t):dateHelper.DateHelper.isDateObj(t)?t:ct__default.default(t);if(typeof r=="function")M=r(W(O({},u),{dateFormat:s,phoneCountryCode:n,type:e,value:t}));else {const b=String(e).toLowerCase();let A=false;if(s||["time","date","datetime"].includes(b)){s=h__default.default(s,b==="time"?dateHelper.DateHelper.DEFAULT_TIME_FORMAT:b==="date"?dateHelper.DateHelper.DEFAULT_DATE_FORMAT:dateHelper.DateHelper.DEFAULT_DATE_TIME_FORMAT);const g=dateHelper.DateHelper.parseDate(t);g&&(A=true,M=dateHelper.DateHelper.formatDate(g,s),l.dateValue=g),l.dateFormat=s;}else if(b==="tel"){const g=i.formatPhoneNumber(t,n);M=h__default.default(g,M),l.phoneCountryCode=h__default.default(n);const d=i.parsePhoneNumber(g,n);d?(l.dialCode=d.getCountryCode()+"",l.phoneCountryCode=h__default.default(E.getRegionCodeForNumber(d),n)):n&&(l.dialCode=i.getCountryDialCode(n)),l.phoneNumber=i.prefixPhoneNumberWithDialCode(M,l.dialCode).replace(/\s/g,"");}A||typeof p=="number"&&(typeof Number.prototype[r]=="function"?M=p[r]():M=p.formatNumber());}return O({formattedValue:M,isDecimalType:c,value:t,format:r,parsedValue:p,decimalValue:typeof p=="number"?p:0},l)}static getCountryDialCode(t){var r;const e=h__default.default((r=index.CountriesManager.getCountry(t))==null?void 0:r.dialCode);if(e)return e;try{const s=E.getCountryCodeForRegion(t);if(s!==0)return s.toString()}catch(s){}return ""}static formatValueAsString(t){const{formattedValue:e,parsedValue:r}=i.formatValue(t);return e}static isValidMask(t){return Array.isArray(t)||typeof t=="function"}static normalizeNumber(t,e="."){return typeof t=="number"?t.toString():!t||t==null||t==null?"0":String(t).trim().replace(/\s/g,"").replace(/[,٫·]/g,e)}static formatWithMask(t){t=Object.assign({},t);const{value:e,maskAutoComplete:r,placeholderCharacter:s,mask:n,validate:u,obfuscationCharacter:f}=t,m=ot__default.default(e)||e===void 0?"":["number","boolean","string"].includes(typeof e)?e.toString():e===null?"":(e==null?void 0:e.toString())||String(e),c=h__default.default(m),p=typeof n=="function"?n(W(O({},t),{value:c})):n,l=Array.isArray(p)?p:[],M=h__default.default(s,"_").charAt(0);let b="";l.map(N=>{b+=String(y__default.default(N)?N:Array.isArray(N)&&y__default.default(N[1])?N[1]:M).charAt(0);});let A=b,g=true;const d=N=>typeof u=="function"?u(N):true;if(!l.length||!c)return {maskHasObfuscation:false,maskedPlaceholder:A,masked:c,unmasked:c,obfuscated:c,maskArray:l,placeholder:b,isValid:g&&d(c),nonRegexReplacedChars:[]};let T="",P="",F="",I=0,k=0,$=false;const v=b.length,Y=[];for(;I<l.length&&!(k>=c.length);){const N=l[I],x=c[k],D=[];let{isValid:U,masked:L,obfuscated:tt,isMaskRegex:w}=J({maskChar:N,nonRegexReplacedChars:D,valueChar:x,obfuscationCharacter:f,valueCharIndex:k,maskCharIndex:I});T+=L,P+=tt,F+=x,w&&v>k&&(A=A.substring(0,I)+L+A.substring(k+1)),I+=1,k+=1;let _=false;if(r&&!w&&I<l.length&&k<l.length&&k==c.length&&x!==L){const C=J({maskChar:l[I],nonRegexReplacedChars:[],valueChar:x,obfuscationCharacter:f,valueCharIndex:k,maskCharIndex:I});C.isMaskRegex&&C.isValid&&C.masked==x&&(T+=x,P+=C.obfuscated,I+=1,k+=1,U=true,delete D[0],_=true);}if(D[0]&&Y.push(...D),U||(g=false),_)break}return {masked:T,nonRegexReplacedChars:Y,isValid:g&&d(c),maskHasObfuscation:$,placeholder:b,maskedPlaceholder:A,unmasked:F,obfuscated:P,maskArray:l}}static createDateMask(t){t=h__default.default(t);const e=i.MOMENT_MASKS_MAP,r=i.MOMENT_SEPARATOR_MAP;let s=[],n="",u=0;for(;u<t.length;){if(r[t[u]]){n&&(s.push(...e[n]||[]),n=""),s.push(r[t[u]]),u++;continue}if(n+=t[u],e[n]){s.push(...e[n]),n="",u++;continue}Object.keys(e).some(f=>n&&f.startsWith(n))||n&&(s.push(...n.split("")),n=""),u++;}return n&&e[n]&&s.push(...e[n]),{mask:s,validate:f=>{if(!t||!y__default.default(f))return false;try{const m=nt__default.default(f,t,!0);return m.isValid()&&m.format(t)===f}catch(m){}return false}}}static createPhoneNumberMask(t,e){const r=index.CountriesManager.getPhoneNumberExample(t);if(y__default.default(r)){const s=i.createPhoneNumberMaskFromExample(r,t);if(s.mask.length)return s}if(!y__default.default(t))return {mask:[],validate:s=>false};try{const s=i.getPhoneNumberExample(t);if(!s)return {mask:[],validate:m=>!1};const n=e||z.PhoneNumberFormat.INTERNATIONAL,u=E.format(s,n),f=s.getCountryCode()+"";return {dialCode:f,mask:q(u,f),validate:m=>i.isValidPhoneNumber(m,t),countryCode:t}}catch(s){return {mask:[],validate:n=>false}}}static getPhoneNumberExample(t){if(!y__default.default(t))return null;const e=index.CountriesManager.getPhoneNumberExample(t);if(y__default.default(e))return i.parsePhoneNumber(e);try{return E.getExampleNumber(t)}catch(r){return null}}static createPhoneNumberMaskFromExample(t,e,r){const s=Q(i.parsePhoneNumber(t,e),r);return s.mask.length>0?s:y__default.default(e)?Q(i.getPhoneNumberExample(e),r):{mask:[],validate:n=>false}}static parsePhoneNumber(t,e){t=h__default.default(t);try{return E.parse(t,h__default.default(e).toLowerCase())}catch(r){return null}}static prefixPhoneNumberWithDialCode(t,e){return typeof t!="string"?"":y__default.default(e)?(e="+"+e.ltrim("+"),!t.startsWith(e)&&!t.trim().startsWith("+")?e.trim()+" "+t.ltrim(" "):t):t}static isValidPhoneNumber(t,e){const r=this.parsePhoneNumber(t,e);return r?E.isValidNumber(r):false}static formatPhoneNumber(t,e){t=h__default.default(t);try{const r=new it(h__default.default(e).toLowerCase().trim());r.clear();let s="";return t.replace(/-/g,"").replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,"").split("").forEach(n=>{s=r.inputDigit(n);}),s||null}catch(r){return lt__default.default.log(r," input formatter formatting phone number phoneNumber =",t,", countryCode=",e),null}}static cleanPhoneNumber(t){return y__default.default(t)?t.trim().replace(/\s/g,""):""}static extractDialCodeFromPhoneNumber(t,e){try{const r=i.parsePhoneNumber(t,e);if(r)return r.getCountryCode()+""}catch(r){}return ""}static isNumericString(t){return y__default.default(t)&&!Number.isNaN(parseFloat(t))&&Number.isFinite(Number(t))}static extractNumbersFromString(t){return y__default.default(t)?t.replace(/\D/g,""):""}};i.parseDecimal=t=>{if(typeof t=="number")return t;if(t==null||t==null||!t||typeof t!="string")return 0;const e=parseFloat(i.normalizeNumber(t));return typeof e=="number"&&!Number.isNaN(e)?e:0},i.endsWithDecimalSeparator=t=>{const e=String(t).trim().replace(/\s/g,"");return e.endsWith(".")||e.endsWith(",")||e.endsWith("\u066B")},i.MOMENT_MASKS_MAP={YYYY:Array(4).fill([o,"Y"]),YY:Array(2).fill([o,"Y"]),MM:Array(2).fill([o,"M"]),M:[[o,"M"]],MMMM:Array(9).fill([X,"M"]),MMM:Array(3).fill([X,"M"]),DD:Array(2).fill([o,"D"]),D:[[o,"D"]],HH:Array(2).fill([o,"H"]),H:[[o,"H"]],hh:Array(2).fill([o,"h"]),h:[[o,"h"]],mm:Array(2).fill([o,"m"]),m:[[o,"m"]],ss:Array(2).fill([o,"s"]),s:[[o,"s"]],SSS:Array(3).fill([o,"S"]),Z:[/[+-]/,o,o,o,o],ZZ:[/[+-]/,o,o,o,o],A:["A","M"],a:["a","m"]},i.MOMENT_SEPARATOR_MAP={"/":"/","-":"-",".":"."," ":" ",":":":",T:"T"},i.SINGLE_SPACE_MASK=" ",i.MASKS_WITH_VALIDATIONS={get DATE(){return i.createDateMask(dateHelper.DateHelper.DEFAULT_DATE_FORMAT)},get TIME(){return i.createDateMask(dateHelper.DateHelper.DEFAULT_TIME_FORMAT)},get DATE_TIME(){return i.createDateMask(dateHelper.DateHelper.DEFAULT_DATE_TIME_FORMAT)},CREDIT_CARD:{mask:[/\d/,/\d/,/\d/,/\d/," ",[/\d/],[/\d/],[/\d/],[/\d/]," ",[/\d/],[/\d/],[/\d/],[/\d/]," ",/\d/,/\d/,/\d/,/\d/],validate:t=>true}};let S=i;const q=(a,t)=>{t=h__default.default(t),t&&(t="+"+t.ltrim("+")),S.cleanPhoneNumber(a).startsWith(t);const r=[...t?a.substring(t.length):a].map(s=>/\d/.test(s)?/\d/:s);return t?[...t,...r]:r};function J({maskChar:a,valueChar:t,nonRegexReplacedChars:e,obfuscationCharacter:r,valueCharIndex:s,maskCharIndex:n}){let u=false,f=true,m="",c="",p=a,l=false;if(typeof a=="object"){const M=h__default.default(Array.isArray(a)?a[2]:void 0,r).charAt(0),b=Array.isArray(a)&&a[2]!==false&&M;b&&(u=true);const A=Array.isArray(a)?a[0]:a,g=String(A);p=A;try{const d=st__default.default(A);l=d;const T=d&&RegExp(A).test(t),P=!d&&g===t,F=T||P,I=d?t:g;F||(f=!1),(T||!d)&&(m=I,c=b?M:I,!d&&!P&&e.push({index:s,maskIndex:n,from:t,to:g,valueChar:t,maskChar:a}));}catch(d){}}else y__default.default(a)?(m=a,c=a,a!==t&&(f=false,e.push({index:s,maskIndex:n,from:t,to:a,valueChar:t,maskChar:a}))):f=false;return {maskHasObfuscation:u,isMaskRegex:l,mask:p,isValid:f,masked:m,obfuscated:c,nonRegexReplacedChars:e}}function Q(a,t){try{if(a){const e=t||z.PhoneNumberFormat.INTERNATIONAL,r=E.format(a,e);if(y__default.default(r)){const s=E.getRegionCodeForNumber(a),n=a.getCountryCode()+"";return {dialCode:n,mask:q(r,n),validate:u=>S.isValidPhoneNumber(u,s),countryCode:s}}}}catch(e){}return {mask:[],validate:()=>false}}module.exports=S;