@bgscore/react-core 0.0.27 → 0.0.28
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.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/package.json +3 -2
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var X=require('moment'),te=require('react'),jsxRuntime=require('react/jsx-runtime'),ce=require('crypto-js/aes'),ue=require('crypto-js/pbkdf2'),Se=require('crypto-js/enc-utf8'),L=require('crypto-js/enc-base64'),pe=require('crypto-js/lib-typedarrays'),$e=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var X__default=/*#__PURE__*/_interopDefault(X);var te__default=/*#__PURE__*/_interopDefault(te);var ce__default=/*#__PURE__*/_interopDefault(ce);var ue__default=/*#__PURE__*/_interopDefault(ue);var Se__default=/*#__PURE__*/_interopDefault(Se);var L__default=/*#__PURE__*/_interopDefault(L);var pe__default=/*#__PURE__*/_interopDefault(pe);var $e__default=/*#__PURE__*/_interopDefault($e);function ze(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function _e(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ge=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Xe(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function F(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(r,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(r=>r?.length<=3?r?.toUpperCase():r)?.join(" "));}catch{}return n?.trim()}};function Ye(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let r=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let i of r){if(s==null)return n;s=s[i];}return s===void 0?n:s},Ze={desc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=k(n,t)?k(n,t):"",i=k(r,t)?k(n,t):"";return s<i?1:-1}else return n<r?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=k(n,t)?k(n,t):"",i=k(r,t)?k(r,t):"";return s>i?1:-1}else return n>r?1:-1}))},Qe=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(r=>Number(t?k(r,t)||0:r||0)),n.reduce((r,s)=>(r||0)+(s||0),0)||0};function et(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function xe(e){let t=new WeakSet;return JSON.stringify(e,function(n,r){return r!==null&&typeof r=="object"?t.has(r)?void 0:(t.add(r),Object.keys(r).sort().reduce((s,i)=>(s[i]=r[i],s),{})):r})??""}function ae(e,t){return xe([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function tt(e,t=0){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{e(...r);},t*1e3);}}var le=te.createContext(void 0);function B(){let e=te.useContext(le);return e||{}}var Ae=({children:e,value:t})=>{let n={...t};return jsxRuntime.jsx(le.Provider,{value:n,children:e})};function J(e,t){let n=pe__default.default.random(16),r=pe__default.default.random(16),s=ue__default.default(t,n,{keySize:256/32,iterations:1e3}),i=ce__default.default.encrypt(JSON.stringify(e),s,{iv:r}).toString();return {salt:n.toString(L__default.default),iv:r.toString(L__default.default),encrypted:i}}function z(e,t){let{salt:n,iv:r,encrypted:s}=e,i=ue__default.default(t,L__default.default.parse(n),{keySize:256/32,iterations:1e3}),l=ce__default.default.decrypt(s,i,{iv:L__default.default.parse(r)}).toString(Se__default.default);return JSON.parse(l)}function fe(e,t){return JSON.stringify(J(e,t))}function de(e,t){return z(JSON.parse(e),t)}function j(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return J(t,n||e)},decrypt(t,n){return z(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=j(),n=te.useCallback((u,l)=>{try{let o=e(l);localStorage.setItem(u,JSON.stringify(o));}catch(o){console.error("Failed to save to storage:",o);}},[e]),r=te.useCallback(u=>{try{let l=localStorage.getItem(u);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to get from storage:",l),null}},[t]),s=u=>{let[l,o]=te.useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return te.useEffect(()=>{let p=y=>{if(y.key===u)if(y.newValue)try{o(t(JSON.parse(y.newValue)));}catch(R){console.error("Decrypt error from storage event",R);}else o(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),l},i=te.useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:n,get:r,clear:i,useWatchStorage:s}};function ye(e){let t=e,n=new Set;function r(){return t}function s(l){return n.add(l),()=>{n.delete(l);}}function i(l){let o=typeof l=="function"?l(t):l;Object.is(o,t)||(t=o,n.forEach(p=>p()));}function u(l){let o=te.useRef(void 0);return te.useSyncExternalStore(s,()=>{let p=l?l(t):t;return Object.is(o.current,p)||(o.current=p),o.current},()=>l?l(t):t)}return {getSnapshot:r,subscribe:s,setState:i,useStore:u}}var G=new Map;function V(e){let t=G.get(e);if(t)return t.refCount++,t.store;let n=ye([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}]);return G.set(e,{store:n,refCount:1}),n}function ge(e){G.delete(e);}function Ne(...e){let[t,n,r]=e,s=t.__isVoid,i=t.__path||t.name,u=te.useRef(false),l=s?void 0:n,o=s?n:r,p=o?.storeName||i,{storageKey:y,cache:R}=B(),P=me(),[N,D]=te.useState(false),[C,O]=te.useState(false),[E,q]=te.useState(),I=te.useRef(void 0),H=te.useRef(null),{cacheName:$,cacheKey:M,timeout:ne,timeoutUnit:re,persistence:f,cacheEnabled:d}=te.useMemo(()=>{let c=y?P.get(y):void 0,T=typeof o?.cache=="object"?o?.cache?.cacheName??i:i,A=ae({...l,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),g=false;typeof R?.enabled=="boolean"&&(g=R.enabled);let S=false;typeof R?.persistence=="boolean"&&(S=R?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(S=o?.cache?.persistence??false);let b=60*5,U="s";return F(R?.timeout)&&(typeof R?.timeout=="number"?(b=R.timeout,U="s"):typeof R?.timeout=="object"&&(b=R?.timeout.value,U=R?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?g=o.cache.enabled:g=true,typeof o.cache.timeout=="number"?(b=o.cache.timeout,U="s"):typeof o.cache.timeout=="object"&&(b=o.cache.timeout.value,U=o.cache.timeout.unit)):g=o.cache),{cacheName:T,cacheKey:A,timeout:b,timeoutUnit:U,persistence:S,cacheEnabled:g}},[o?.cache,y,R]);te.useEffect(()=>{let c=JSON.stringify(F(I.current)?I.current:""),T=JSON.stringify(F(l)?l:""),A=I.current===void 0;(c!==T||A)&&!o?.hold&&(q(null),a(),I.current=l),o?.onChange&&o?.onChange(l,m);},[l,o?.hold,...o?.trigger||[]]),te.useEffect(()=>{let c=async()=>{!f&&$&&M&&(await caches.open($)).delete(M);};return window.addEventListener("beforeunload",c),()=>{u.current=true,window.removeEventListener("beforeunload",c),H.current?.abort(),ge(p);}},[]);let a=te.useCallback(async c=>{let T=l;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(T=o?.beforeRequest(l)),d&&!c&&!C){D(true),v({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(l);let A=await caches.open($),S=await(await A.match(M))?.json();if(S){let{data:b,expired:U}=S;if(X__default.default().isAfter(U))await A.delete(M);else {o?.afterResponse&&b?.data&&(b.data=o?.afterResponse(b.data)),o?.logging&&console.log("After request: Using Cache",b),o?.onAfterResponse&&o?.onAfterResponse(b),D(false),q(b),v({loading:false,response:b});return}}}if(typeof t=="function"){H.current?.abort();let A=new AbortController;H.current=A,D(true),v({loading:true}),o?.logging&&console.log("Before request",l),o?.onBeforeRequest&&o?.onBeforeRequest(l);let g=s?await t(void 0,{...o,signal:A.signal}):await t(T,void 0,{...o,signal:A.signal});if(o?.afterResponse&&g?.data&&(g.data=o?.afterResponse(g.data)),o?.logging&&console.log("After request",g),o?.onAfterResponse&&o?.onAfterResponse(g),D(false),q(g),O(false),v({response:g,loading:false,isCancel:false}),d&&g.status){let S=X__default.default().add(ne,re).toISOString(),b={data:g,expired:S},U=await caches.open($),oe=new Response(JSON.stringify(b));await U.put(M,oe);}}},[l,t,o]);te.useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,T=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,A=setInterval(()=>{a();},X__default.default.duration(c,T).asMilliseconds());return ()=>clearInterval(A)}return ()=>{}},[o?.refreshInterval,a]),te.useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{a();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,a]);let h=()=>{H.current?.abort(),H.current=null,D(false),O(true),v({isCancel:true,loading:false});},x=()=>{D(false),q(null),v({response:void 0,loading:false});},w=te.useCallback((c,T)=>Ne(t,c,T),[t]),m={...E,loading:N,refresh:a,abort:h,clear:x,response:E,isCancel:C,clone:w},K=te.useMemo(()=>({refresh:a,abort:h,clear:x,clone:w}),[a,h,x,w]),v=te.useCallback(({response:c,loading:T,isCancel:A})=>{if(u.current)return;V(p).setState(S=>{let b=[c?.data,{...S?.[1],...c,loading:T,response:c,isCancel:A,...K}];return JSON.stringify(S)===JSON.stringify(b)?S:b});},[K,p]);return [E?.data,m]}async function Ut(e,t=()=>{}){let n=e*1e3;return new Promise(r=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),r(true);},n);})}var Ue=(i=>(i.POST="POST",i.PUT="PUT",i.PATCH="PATCH",i.DELETE="DELETE",i.GET="GET",i))(Ue||{}),ke=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(ke||{});var Bt=(e,t,n)=>{let{format:r}=B();return t==="number"?Fe(e,{thouSep:r.number.thouSep,decDigits:r.number.decDigits,decSep:r.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Be(e,{display:r[t]?.display,value:r[t]?.value,...n}):t==="boolean"?ve(e,n):t==="string"?Ke(e,n):e?.toString()??""};function ve(e,t){let n=typeof e=="string"?e==="true":!!e,r=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?r:s}function Ke(e,t){if(!F(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:r,method:s}){if(e==null||isNaN(Number(e)))return "";let i=typeof e=="string"?parseFloat(e):e;if(s)if(typeof r=="number"){let p=Math.pow(10,r);i=Math[s](i*p)/p;}else i=Math[s](i);else if(typeof r=="number"){let p=Math.pow(10,r);i=Math.floor(i*p)/p;}let u=0;if(r==="auto"){let p=i.toString(),y=p.indexOf(".");y!==-1&&(u=p.length-y-1);}let l={style:"decimal",useGrouping:true,minimumFractionDigits:r==="auto"?u:r||0,maximumFractionDigits:r==="auto"?u:r||0,minimumIntegerDigits:1};return i.toLocaleString("en-US",l).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Be(e,{display:t,value:n}){if(!F(e))return e;let r=X__default.default(e,n);return r.isValid()?r.format(t):e}function It(e,{interval:t,lead:n}){let r=te.useRef(null);te.useEffect(()=>{r.current=e;},[e]),te.useEffect(()=>{let s=()=>r.current();if(n&&s(),t!==null){let i=setInterval(s,t);return ()=>clearInterval(i)}},[t]);}function jt(e,t,n){let[r,s]=te.useState(false),i=(p,y)=>typeof e=="string"&&p===e||typeof e=="number"&&y===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),l=p=>{let{key:y,keyCode:R}=p,P=p.ctrlKey,N=p.altKey,D=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")i(y,R)&&(t==="ctrl"&&P||t==="alt"&&N||t==="shift"&&D)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));else {let C=t.every(O=>O==="ctrl"?P:O==="alt"?N:O==="shift"?D:false);i(y,R)&&C&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));}else i(y,R)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));},o=({key:p,keyCode:y})=>{i(p,y)&&s(false);};return te.useEffect(()=>(window.addEventListener("keydown",l),window.addEventListener("keyup",o),()=>{window.removeEventListener("keydown",l),window.removeEventListener("keyup",o);}),[]),r}var Xt=({url:e,token:t,beforeRequest:n,onCallback:r,headers:s,onUnauthorized:i,handleToast:u,handleAuthorization:l,disabledToastWhenCancel:o,withCredentials:p,encryptRequest:y,encryptResponse:R,passphrase:P})=>{let{encrypt:N,decrypt:D,passphrase:C}=j(),O=(f,d,a,h)=>{let x=h?.code==="ERR_CANCELED",w=f.status===401,m=f?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:R)&&m){let g=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?C:a.passphrase:P;try{m=D(m,g);}catch{try{m=D(m,C);}catch{}}}let c={...r({...f,data:m,isCancel:x,isUnauthorization:w},h),isCancel:x,isUnauthorization:w,httpCode:f.status},T=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:o,A=l?l(c,a):!w;if((a?.infoSuccess&&c.status||a?.infoError&&!c.status)&&u&&(!x||!T)&&u(c),!A&&(!x||!a?.disabledHandleUnauthorized)){let g=a?.onUnauthorized||i;g&&g(c);}if(d)d(c);else return c},E=(f,d=()=>{})=>$e__default.default.create({baseURL:`${e}`,withCredentials:typeof f.withCredentials=="boolean"?f.withCredentials:p})(f).then(d).catch(h=>d(h.response,h)),q=(f,d,a,h,x)=>{let m={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},K={"Content-Type":"application/json",...s,...m.headers};if(m.token&&(typeof m.token=="boolean"?t&&(K.Authorization=`Bearer ${t}`):m.token&&(K.Authorization=`Bearer ${m.token}`)),n&&(a=n(a)),(typeof m?.encryptRequest=="boolean"?m?.encryptRequest:y)&&a){let c=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?C:x.passphrase:P;a=N(a,c);}return E({url:d,method:f,data:a,headers:K,responseType:m.responseType,signal:m.signal,withCredentials:m.withCredentials,onUploadProgress:c=>{m?.onUploadProgress&&m?.onUploadProgress(c);}},(c,T)=>O(c,h,m,T))};return {client:E,post:(f,d,a,h)=>q("POST",`${f}`,d,a,h),put:(f,d,a,h)=>q("PUT",`${f}`,d,a,h),patch:(f,d,a,h)=>q("PATCH",`${f}`,d,a,h),delete:(f,d,a)=>q("DELETE",`${f}`,null,d,a),get:(f,d,a)=>q("GET",`${f}`,null,d,a),upload:(f,d,a,h)=>{let x=new FormData;return Object.keys(d).forEach(w=>x.append(w,d[w])),q("POST",`${f}`,x,a,{infoSuccess:false,...h,headers:{"Content-Type":"multipart/form-data",...h?.headers}})}}};function Qt(e,t){let[n,r]=te.useState(false),[s,i]=te.useState(),[u,l]=te.useState(0),o=te.useRef(null);return te.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{o.current?.abort();}},[]),[async P=>{o.current?.abort();let N=new AbortController;o.current=N,r(true),t?.beforeRequest&&(P=t?.beforeRequest(P)),t?.logging&&console.log("Before request",P);let D={...t,signal:N.signal,onUploadProgress:O=>{let E=Math.round(O.loaded*100/(O.total||1));l(E);}},C=e.__isVoid?await e(void 0,D):await e(P,void 0,D);t?.logging&&console.log("After response",C),i(C),r(false),l(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{o.current?.abort(),o.current=null,r(false),l(0);},progress:u,reset:()=>{r(false),l(0),i(null);}}]}function Ve(e,t){let{disableHysteresis:n=false,threshold:r=100,target:s}=t,i=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&i!==void 0&&e.current<i?false:(e.current||0)>r}var We=typeof window<"u"?window:null;function nn(e={}){let{getTrigger:t=Ve,target:n=We,disableHysteresis:r=false,threshold:s=100}=e,i=te__default.default.useRef(0),[u,l]=te__default.default.useState(()=>t(i,{disableHysteresis:r,threshold:s,target:n}));return te__default.default.useEffect(()=>{let o=()=>{l(t(i,{disableHysteresis:r,threshold:s,target:n}));};if(o(),n)return n.addEventListener("scroll",o,{passive:true}),()=>{n.removeEventListener("scroll",o);}},[n,t,r,s]),u}var sn=(e,t)=>{let n=t||e.__path||e.name;return V(n).useStore()};var pn=(e,t)=>{let n=r=>e(r);return n.displayName=t,n},cn=(e,t)=>{let n={};n.others=[];let r=s=>{te__default.default.Children.forEach(s,i=>{if(te__default.default.isValidElement(i)){let u=i.type.displayName;if(t.includes(u))n[u]=i;else {let l=i;l.props?.children?r(l.props.children):n.others.push(i);}}else n.others.push(i);});};return r(e),n};function Je(e,t=[]){let n={};for(let r in e){let s=e[r];if(typeof s=="function"){let i=s.bind(null);i.__path=[...t,r].join("."),i.__isVoid=s.length===2,n[r]=i;}else typeof s=="object"&&s!==null?n[r]=Je(s,[...t,r]):n[r]=s;}return n}exports.BgsCoreProvider=Ae;exports.DataTypeEnum=ke;exports.HttpMethod=Ue;exports.capitalizeWords=ie;exports.createApiHelper=Xt;exports.createElement=pn;exports.createStore=ye;exports.debounce=tt;exports.decrypt=z;exports.decryptString=de;exports.diffJson=_e;exports.encrypt=J;exports.encryptString=fe;exports.generateCacheKey=ae;exports.generateUUID=ze;exports.getFieldValue=k;exports.isArray=Xe;exports.isNotEmpty=F;exports.jsonCopy=et;exports.labelFormatter=se;exports.mappingUndefinedtoNull=Ge;exports.renderChildren=Ye;exports.sorting=Ze;exports.splitElement=cn;exports.stableStringify=xe;exports.summary=Qe;exports.useApiLoad=Ne;exports.useApiSend=Qt;exports.useApiStore=sn;exports.useBgsCore=B;exports.useCrypto=j;exports.useDelay=Ut;exports.useFormatted=Bt;exports.useInterval=It;exports.useKeyPress=jt;exports.useScrollTrigger=nn;exports.useStorage=me;exports.wrapApi=Je;
|
|
1
|
+
'use strict';var J=require('moment'),Y=require('react'),jsxRuntime=require('react/jsx-runtime'),se=require('crypto-js/aes'),ae=require('crypto-js/pbkdf2'),be=require('crypto-js/enc-utf8'),I=require('crypto-js/enc-base64'),oe=require('crypto-js/lib-typedarrays'),zustand=require('zustand'),ve=require('axios');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var J__default=/*#__PURE__*/_interopDefault(J);var Y__default=/*#__PURE__*/_interopDefault(Y);var se__default=/*#__PURE__*/_interopDefault(se);var ae__default=/*#__PURE__*/_interopDefault(ae);var be__default=/*#__PURE__*/_interopDefault(be);var I__default=/*#__PURE__*/_interopDefault(I);var oe__default=/*#__PURE__*/_interopDefault(oe);var ve__default=/*#__PURE__*/_interopDefault(ve);function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var ee={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(r,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=ee.snackCase(ee.camelCase(e)),t&&(n=n?.split(" ")?.map(r=>r?.length<=3?r?.toUpperCase():r)?.join(" "));}catch{}return n?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let r=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of r){if(s==null)return n;s=s[a];}return s===void 0?n:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(r,t)?N(n,t):"";return s<a?1:-1}else return n<r?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(r,t)?N(r,t):"";return s>a?1:-1}else return n>r?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(r=>Number(t?N(r,t)||0:r||0)),n.reduce((r,s)=>(r||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function me(e){let t=new WeakSet;return JSON.stringify(e,function(n,r){return r!==null&&typeof r=="object"?t.has(r)?void 0:(t.add(r),Object.keys(r).sort().reduce((s,a)=>(s[a]=r[a],s),{})):r})??""}function te(e,t){return me([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{e(...r);},t*1e3);}}var re=Y.createContext(void 0);function F(){let e=Y.useContext(re);return e||{}}var Re=({children:e,value:t})=>{let n={...t};return jsxRuntime.jsx(re.Provider,{value:n,children:e})};function V(e,t){let n=oe__default.default.random(16),r=oe__default.default.random(16),s=ae__default.default(t,n,{keySize:256/32,iterations:1e3}),a=se__default.default.encrypt(JSON.stringify(e),s,{iv:r}).toString();return {salt:n.toString(I__default.default),iv:r.toString(I__default.default),encrypted:a}}function W(e,t){let{salt:n,iv:r,encrypted:s}=e,a=ae__default.default(t,I__default.default.parse(n),{keySize:256/32,iterations:1e3}),o=se__default.default.decrypt(s,a,{iv:I__default.default.parse(r)}).toString(be__default.default);return JSON.parse(o)}function ie(e,t){return JSON.stringify(V(e,t))}function pe(e,t){return W(JSON.parse(e),t)}function L(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return V(t,n||e)},decrypt(t,n){return W(t,n||e)},encryptString(t,n){return ie(t,n||e)},decryptString(t,n){return pe(t,n||e)}}}var le=()=>{let{encrypt:e,decrypt:t}=L(),n=Y.useCallback((c,o)=>{try{let l=e(o);localStorage.setItem(c,JSON.stringify(l));}catch(l){console.error("Failed to save to storage:",l);}},[e]),r=Y.useCallback(c=>{try{let o=localStorage.getItem(c);return o?t(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[t]),s=c=>{let[o,l]=Y.useState(()=>{try{let p=localStorage.getItem(c);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return Y.useEffect(()=>{let p=R=>{if(R.key===c)if(R.newValue)try{l(t(JSON.parse(R.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else l(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[c,t]),o},a=Y.useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:r,clear:a,useWatchStorage:s}};var ce={loading:false,response:void 0,isCancel:false},E=zustand.create(e=>({states:{},updateState:(t,n)=>e(r=>({states:{...r.states,[t]:{...r.states[t]||ce,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:{...n.states[t],...ce}}}))}));function ue(...e){let[t,n,r]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,o=s?n:r,l=o?.storeName||a,{updateState:p,resetState:R}=E(),q=E(({states:f})=>f[l]?.isCancel??false),D=E(({states:f})=>f[l]?.loading??false),O=E(({states:f})=>f[l]?.response??void 0),{storageKey:S,cache:y}=F(),w=le(),U=Y.useRef(void 0),x=Y.useRef(null),{cacheName:B,cacheKey:v,timeout:Z,timeoutUnit:Q,persistence:M,cacheEnabled:$}=Y.useMemo(()=>{let f=S?w.get(S):void 0,u=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,P=te({...c,session:f},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),C=false;typeof y?.enabled=="boolean"&&(C=y.enabled);let m=false;typeof y?.persistence=="boolean"&&(m=y?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(m=o?.cache?.persistence??false);let A=60*5,T="s";return K(y?.timeout)&&(typeof y?.timeout=="number"?(A=y.timeout,T="s"):typeof y?.timeout=="object"&&(A=y?.timeout.value,T=y?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?C=o.cache.enabled:C=true,typeof o.cache.timeout=="number"?(A=o.cache.timeout,T="s"):typeof o.cache.timeout=="object"&&(A=o.cache.timeout.value,T=o.cache.timeout.unit)):C=o.cache),{cacheName:u,cacheKey:P,timeout:A,timeoutUnit:T,persistence:m,cacheEnabled:C}},[o?.cache,S,y]);Y.useEffect(()=>{let f=JSON.stringify(K(U.current)?U.current:""),u=JSON.stringify(K(c)?c:""),P=U.current===void 0;(f!==u||P)&&!o?.hold&&(p(l,{response:null}),d(),U.current=c),o?.onChange&&o?.onChange(c,b);},[c,o?.hold,...o?.trigger||[]]),Y.useEffect(()=>{let f=async()=>{!M&&B&&v&&(await caches.open(B)).delete(v);};return window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f),x.current?.abort(),R(l);}},[M,B,v,l,x]);let d=Y.useCallback(async f=>{let u=c,P=E.getState().states[l]?.isCancel??false;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(u=o?.beforeRequest(c)),$&&!f&&!P){p(l,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(c);let C=await caches.open(B),A=await(await C.match(v))?.json();if(A){let{data:T,expired:k}=A;if(J__default.default().isAfter(k))await C.delete(v);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),p(l,{loading:false,response:T});return}}}if(typeof t=="function"){x.current?.abort();let C=new AbortController;x.current=C,p(l,{loading:true}),o?.logging&&console.log("Before request",c),o?.onBeforeRequest&&o?.onBeforeRequest(c);let m=s?await t(void 0,{...o,signal:C.signal}):await t(u,void 0,{...o,signal:C.signal});if(o?.afterResponse&&m?.data&&(m.data=o?.afterResponse(m.data)),o?.logging&&console.log("After request",m),o?.onAfterResponse&&o?.onAfterResponse(m),p(l,{loading:false,response:m,isCancel:false}),$&&m.status){let A=J__default.default().add(Z,Q).toISOString(),T={data:m,expired:A},k=await caches.open(B),j=new Response(JSON.stringify(T));await k.put(v,j);}}},[c,t,o]);Y.useEffect(()=>{if(o?.refreshInterval){let f=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,u=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,P=setInterval(()=>{d();},J__default.default.duration(f,u).asMilliseconds());return ()=>clearInterval(P)}return ()=>{}},[o?.refreshInterval,d]),Y.useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let f=()=>{d();};return window.addEventListener("focus",f),()=>{window.removeEventListener("focus",f);}},[o?.refetchOnWindowFocus,d]);let g=Y.useCallback(()=>{x.current?.abort(),x.current=null,p(l,{loading:false,isCancel:true});},[l,x]),i=Y.useCallback(()=>{p(l,{loading:false,response:null});},[l]),h=Y.useRef({refresh:d,abort:g,clear:i});Y.useEffect(()=>{h.current={refresh:d,abort:g,clear:i},p(l,{refresh:f=>h.current.refresh(f),abort:()=>h.current.abort(),clear:()=>h.current.clear(),clone:(f,u)=>ue(t,f,u)});},[d,g,i,t]);let b={...O,loading:D,refresh:d,abort:g,clear:i,response:O,isCancel:q,clone:(f,u)=>ue(t,f,u)};return [O?.data,b]}async function Pt(e,t=()=>{}){let n=e*1e3;return new Promise(r=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),r(true);},n);})}var De=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(De||{}),Se=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Se||{});var kt=(e,t,n)=>{let{format:r}=F();return t==="number"?we(e,{thouSep:r.number.thouSep,decDigits:r.number.decDigits,decSep:r.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ue(e,{display:r[t]?.display,value:r[t]?.value,...n}):t==="boolean"?Oe(e,n):t==="string"?qe(e,n):e?.toString()??""};function Oe(e,t){let n=typeof e=="string"?e==="true":!!e,r=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?r:s}function qe(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ne(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function we(e,{thouSep:t,decSep:n,decDigits:r,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof r=="number"){let p=Math.pow(10,r);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof r=="number"){let p=Math.pow(10,r);a=Math.floor(a*p)/p;}let c=0;if(r==="auto"){let p=a.toString(),R=p.indexOf(".");R!==-1&&(c=p.length-R-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:r==="auto"?c:r||0,maximumFractionDigits:r==="auto"?c:r||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Ue(e,{display:t,value:n}){if(!K(e))return e;let r=J__default.default(e,n);return r.isValid()?r.format(t):e}function Kt(e,{interval:t,lead:n}){let r=Y.useRef(null);Y.useEffect(()=>{r.current=e;},[e]),Y.useEffect(()=>{let s=()=>r.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function Ht(e,t,n){let[r,s]=Y.useState(false),a=(p,R)=>typeof e=="string"&&p===e||typeof e=="number"&&R===e,c=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:R,keyCode:q}=p,D=p.ctrlKey,O=p.altKey,S=p.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(R,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&S)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));else {let y=t.every(w=>w==="ctrl"?D:w==="alt"?O:w==="shift"?S:false);a(R,q)&&y&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));}else a(R,q)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));},l=({key:p,keyCode:R})=>{a(p,R)&&s(false);};return Y.useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",l),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",l);}),[]),r}var Wt=({url:e,token:t,beforeRequest:n,onCallback:r,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:o,disabledToastWhenCancel:l,withCredentials:p,encryptRequest:R,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:S,passphrase:y}=L(),w=(d,g,i,h)=>{let b=h?.code==="ERR_CANCELED",f=d.status===401,u=d?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&u){let k=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?y:i.passphrase:D;try{u=S(u,k);}catch{try{u=S(u,y);}catch{}}}let m={...r({...d,data:u,isCancel:b,isUnauthorization:f},h),isCancel:b,isUnauthorization:f,httpCode:d.status},A=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:l,T=o?o(m,i):!f;if((i?.infoSuccess&&m.status||i?.infoError&&!m.status)&&c&&(!b||!A)&&c(m),!T&&(!b||!i?.disabledHandleUnauthorized)){let k=i?.onUnauthorized||a;k&&k(m);}if(g)g(m);else return m},U=(d,g=()=>{})=>ve__default.default.create({baseURL:`${e}`,withCredentials:typeof d.withCredentials=="boolean"?d.withCredentials:p})(d).then(g).catch(h=>g(h.response,h)),x=(d,g,i,h,b)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...b},P={"Content-Type":"application/json",...s,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(P.Authorization=`Bearer ${t}`):u.token&&(P.Authorization=`Bearer ${u.token}`)),n&&(i=n(i)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&i){let m=b?.passphrase?typeof b.passphrase=="boolean"&&b.passphrase?y:b.passphrase:D;i=O(i,m);}return U({url:g,method:d,data:i,headers:P,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:m=>{u?.onUploadProgress&&u?.onUploadProgress(m);}},(m,A)=>w(m,h,u,A))};return {client:U,post:(d,g,i,h)=>x("POST",`${d}`,g,i,h),put:(d,g,i,h)=>x("PUT",`${d}`,g,i,h),patch:(d,g,i,h)=>x("PATCH",`${d}`,g,i,h),delete:(d,g,i)=>x("DELETE",`${d}`,null,g,i),get:(d,g,i)=>x("GET",`${d}`,null,g,i),upload:(d,g,i,h)=>{let b=new FormData;return Object.keys(g).forEach(f=>b.append(f,g[f])),x("POST",`${d}`,b,i,{infoSuccess:false,...h,headers:{"Content-Type":"multipart/form-data",...h?.headers}})}}};function _t(e,t){let[n,r]=Y.useState(false),[s,a]=Y.useState(),[c,o]=Y.useState(0),l=Y.useRef(null);return Y.useEffect(()=>{if(t?.abortOnUnmount)return ()=>{l.current?.abort();}},[]),[async D=>{l.current?.abort();let O=new AbortController;l.current=O,r(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let S={...t,signal:O.signal,onUploadProgress:w=>{let U=Math.round(w.loaded*100/(w.total||1));o(U);}},y=e.__isVoid?await e(void 0,S):await e(D,void 0,S);t?.logging&&console.log("After response",y),a(y),r(false),o(0),y.status&&t?.onSuccess&&t?.onSuccess(y),!y.status&&t?.onError&&t?.onError(y),t?.afterResponse&&t?.afterResponse(y);},{...s,loading:n,abort:()=>{l.current?.abort(),l.current=null,r(false),o(0);},progress:c,reset:()=>{r(false),o(0),a(null);}}]}function Be(e,t){let{disableHysteresis:n=false,threshold:r=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>r}var He=typeof window<"u"?window:null;function Yt(e={}){let{getTrigger:t=Be,target:n=He,disableHysteresis:r=false,threshold:s=100}=e,a=Y__default.default.useRef(0),[c,o]=Y__default.default.useState(()=>t(a,{disableHysteresis:r,threshold:s,target:n}));return Y__default.default.useEffect(()=>{let l=()=>{o(t(a,{disableHysteresis:r,threshold:s,target:n}));};if(l(),n)return n.addEventListener("scroll",l,{passive:true}),()=>{n.removeEventListener("scroll",l);}},[n,t,r,s]),c}var en=(e,t)=>{let n=t||e.__path||e.name,r=E(({states:s})=>s[n]);return [r?.data,r]};var rn=(e,t)=>{let n=r=>e(r);return n.displayName=t,n},on=(e,t)=>{let n={};n.others=[];let r=s=>{Y__default.default.Children.forEach(s,a=>{if(Y__default.default.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let o=a;o.props?.children?r(o.props.children):n.others.push(a);}}else n.others.push(a);});};return r(e),n};function pn(e){let t=e,n=new Set;function r(){return t}function s(o){return n.add(o),()=>n.delete(o)}function a(o){typeof o=="function"?t=o(t):t=o,n.forEach(l=>l());}function c(o){let l=Y.useRef(o?o(t):t);return Y.useSyncExternalStore(s,()=>{let p=o?o(t):t,R=l.current;return Object.is(R,p)||(l.current=p),l.current},()=>o?o(t):t)}return {getSnapshot:r,subscribe:s,setState:a,useStore:c}}function Me(e,t=[]){let n={};for(let r in e){let s=e[r];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,r].join("."),a.__isVoid=s.length===2,n[r]=a;}else typeof s=="object"&&s!==null?n[r]=Me(s,[...t,r]):n[r]=s;}return n}exports.BgsCoreProvider=Re;exports.DataTypeEnum=Se;exports.HttpMethod=De;exports.capitalizeWords=ne;exports.createApiHelper=Wt;exports.createElement=rn;exports.createStore=pn;exports.debounce=Ye;exports.decrypt=W;exports.decryptString=pe;exports.diffJson=Ve;exports.encrypt=V;exports.encryptString=ie;exports.generateCacheKey=te;exports.generateUUID=je;exports.getFieldValue=N;exports.isArray=ze;exports.isNotEmpty=K;exports.jsonCopy=Xe;exports.labelFormatter=ee;exports.mappingUndefinedtoNull=We;exports.renderChildren=Je;exports.sorting=_e;exports.splitElement=on;exports.stableStringify=me;exports.summary=Ge;exports.useApiLoad=ue;exports.useApiSend=_t;exports.useApiStore=en;exports.useBgsCore=F;exports.useCrypto=L;exports.useDelay=Pt;exports.useFormatted=kt;exports.useInterval=Kt;exports.useKeyPress=Ht;exports.useScrollTrigger=Yt;exports.useStorage=le;exports.wrapApi=Me;
|
package/dist/index.d.cts
CHANGED
|
@@ -135,7 +135,7 @@ type ApiMethodVoid<DRes = any> = <Res = DRes>(callback?: CallbackHelper<Res>, op
|
|
|
135
135
|
type ApiDefaultMethod<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(url: string, data: Req, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
136
136
|
type ApiDefaultFetch<DRes = any> = <Res = DRes>(url: string, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
137
137
|
type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
138
|
-
type OptionsCallReturn<DReq, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
138
|
+
type OptionsCallReturn<DReq = unknown, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
139
139
|
/** Status loading saat request berlangsung */
|
|
140
140
|
loading: boolean;
|
|
141
141
|
/** Menjalankan ulang request dengan payload & config sebelumnya */
|
|
@@ -496,7 +496,7 @@ declare function debounce<T extends (...args: any[]) => void>(func: T, delayInSe
|
|
|
496
496
|
type Listener = () => void;
|
|
497
497
|
declare function createStore<T>(initialState: T): {
|
|
498
498
|
getSnapshot: () => T;
|
|
499
|
-
subscribe: (listener: Listener) => () =>
|
|
499
|
+
subscribe: (listener: Listener) => () => boolean;
|
|
500
500
|
setState: (newState: T | ((prev: T) => T)) => void;
|
|
501
501
|
useStore: {
|
|
502
502
|
(): T;
|
package/dist/index.d.ts
CHANGED
|
@@ -135,7 +135,7 @@ type ApiMethodVoid<DRes = any> = <Res = DRes>(callback?: CallbackHelper<Res>, op
|
|
|
135
135
|
type ApiDefaultMethod<DReq = any, DRes = DReq> = <Req = DReq, Res = DRes>(url: string, data: Req, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
136
136
|
type ApiDefaultFetch<DRes = any> = <Res = DRes>(url: string, callback?: CallbackHelper<Res>, options?: Partial<OptionsHelper>) => Promise<ApiResponse<Res>>;
|
|
137
137
|
type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
138
|
-
type OptionsCallReturn<DReq, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
138
|
+
type OptionsCallReturn<DReq = unknown, DRes = DReq> = Partial<ApiResponse<DRes>> & {
|
|
139
139
|
/** Status loading saat request berlangsung */
|
|
140
140
|
loading: boolean;
|
|
141
141
|
/** Menjalankan ulang request dengan payload & config sebelumnya */
|
|
@@ -496,7 +496,7 @@ declare function debounce<T extends (...args: any[]) => void>(func: T, delayInSe
|
|
|
496
496
|
type Listener = () => void;
|
|
497
497
|
declare function createStore<T>(initialState: T): {
|
|
498
498
|
getSnapshot: () => T;
|
|
499
|
-
subscribe: (listener: Listener) => () =>
|
|
499
|
+
subscribe: (listener: Listener) => () => boolean;
|
|
500
500
|
setState: (newState: T | ((prev: T) => T)) => void;
|
|
501
501
|
useStore: {
|
|
502
502
|
(): T;
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import X from'moment';import te,{createContext,useContext,useCallback,useRef,useState,useMemo,useEffect,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import ce from'crypto-js/aes';import ue from'crypto-js/pbkdf2';import Se from'crypto-js/enc-utf8';import L from'crypto-js/enc-base64';import pe from'crypto-js/lib-typedarrays';import $e from'axios';function ze(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function _e(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var Ge=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function Xe(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function F(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var se={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(r,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=se.snackCase(se.camelCase(e)),t&&(n=n?.split(" ")?.map(r=>r?.length<=3?r?.toUpperCase():r)?.join(" "));}catch{}return n?.trim()}};function Ye(e,t){return typeof e=="function"?e(t):e}var k=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let r=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let i of r){if(s==null)return n;s=s[i];}return s===void 0?n:s},Ze={desc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=k(n,t)?k(n,t):"",i=k(r,t)?k(n,t):"";return s<i?1:-1}else return n<r?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=k(n,t)?k(n,t):"",i=k(r,t)?k(r,t):"";return s>i?1:-1}else return n>r?1:-1}))},Qe=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(r=>Number(t?k(r,t)||0:r||0)),n.reduce((r,s)=>(r||0)+(s||0),0)||0};function et(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function xe(e){let t=new WeakSet;return JSON.stringify(e,function(n,r){return r!==null&&typeof r=="object"?t.has(r)?void 0:(t.add(r),Object.keys(r).sort().reduce((s,i)=>(s[i]=r[i],s),{})):r})??""}function ae(e,t){return xe([t??"undefined",e??"undefined"])}function ie(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function tt(e,t=0){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{e(...r);},t*1e3);}}var le=createContext(void 0);function B(){let e=useContext(le);return e||{}}var Ae=({children:e,value:t})=>{let n={...t};return jsx(le.Provider,{value:n,children:e})};function J(e,t){let n=pe.random(16),r=pe.random(16),s=ue(t,n,{keySize:256/32,iterations:1e3}),i=ce.encrypt(JSON.stringify(e),s,{iv:r}).toString();return {salt:n.toString(L),iv:r.toString(L),encrypted:i}}function z(e,t){let{salt:n,iv:r,encrypted:s}=e,i=ue(t,L.parse(n),{keySize:256/32,iterations:1e3}),l=ce.decrypt(s,i,{iv:L.parse(r)}).toString(Se);return JSON.parse(l)}function fe(e,t){return JSON.stringify(J(e,t))}function de(e,t){return z(JSON.parse(e),t)}function j(){let{passphrase:e}=B();return {passphrase:e,encrypt(t,n){return J(t,n||e)},decrypt(t,n){return z(t,n||e)},encryptString(t,n){return fe(t,n||e)},decryptString(t,n){return de(t,n||e)}}}var me=()=>{let{encrypt:e,decrypt:t}=j(),n=useCallback((u,l)=>{try{let o=e(l);localStorage.setItem(u,JSON.stringify(o));}catch(o){console.error("Failed to save to storage:",o);}},[e]),r=useCallback(u=>{try{let l=localStorage.getItem(u);return l?t(JSON.parse(l)):null}catch(l){return console.error("Failed to get from storage:",l),null}},[t]),s=u=>{let[l,o]=useState(()=>{try{let p=localStorage.getItem(u);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=y=>{if(y.key===u)if(y.newValue)try{o(t(JSON.parse(y.newValue)));}catch(R){console.error("Decrypt error from storage event",R);}else o(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[u,t]),l},i=useCallback(u=>{u?localStorage.removeItem(u):localStorage.clear();},[]);return {save:n,get:r,clear:i,useWatchStorage:s}};function ye(e){let t=e,n=new Set;function r(){return t}function s(l){return n.add(l),()=>{n.delete(l);}}function i(l){let o=typeof l=="function"?l(t):l;Object.is(o,t)||(t=o,n.forEach(p=>p()));}function u(l){let o=useRef(void 0);return useSyncExternalStore(s,()=>{let p=l?l(t):t;return Object.is(o.current,p)||(o.current=p),o.current},()=>l?l(t):t)}return {getSnapshot:r,subscribe:s,setState:i,useStore:u}}var G=new Map;function V(e){let t=G.get(e);if(t)return t.refCount++,t.store;let n=ye([null,{loading:false,isCancel:false,refresh:()=>{},abort:()=>{},clear:()=>{},clone:()=>{}}]);return G.set(e,{store:n,refCount:1}),n}function ge(e){G.delete(e);}function Ne(...e){let[t,n,r]=e,s=t.__isVoid,i=t.__path||t.name,u=useRef(false),l=s?void 0:n,o=s?n:r,p=o?.storeName||i,{storageKey:y,cache:R}=B(),P=me(),[N,D]=useState(false),[C,O]=useState(false),[E,q]=useState(),I=useRef(void 0),H=useRef(null),{cacheName:$,cacheKey:M,timeout:ne,timeoutUnit:re,persistence:f,cacheEnabled:d}=useMemo(()=>{let c=y?P.get(y):void 0,T=typeof o?.cache=="object"?o?.cache?.cacheName??i:i,A=ae({...l,session:c},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),g=false;typeof R?.enabled=="boolean"&&(g=R.enabled);let S=false;typeof R?.persistence=="boolean"&&(S=R?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(S=o?.cache?.persistence??false);let b=60*5,U="s";return F(R?.timeout)&&(typeof R?.timeout=="number"?(b=R.timeout,U="s"):typeof R?.timeout=="object"&&(b=R?.timeout.value,U=R?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?g=o.cache.enabled:g=true,typeof o.cache.timeout=="number"?(b=o.cache.timeout,U="s"):typeof o.cache.timeout=="object"&&(b=o.cache.timeout.value,U=o.cache.timeout.unit)):g=o.cache),{cacheName:T,cacheKey:A,timeout:b,timeoutUnit:U,persistence:S,cacheEnabled:g}},[o?.cache,y,R]);useEffect(()=>{let c=JSON.stringify(F(I.current)?I.current:""),T=JSON.stringify(F(l)?l:""),A=I.current===void 0;(c!==T||A)&&!o?.hold&&(q(null),a(),I.current=l),o?.onChange&&o?.onChange(l,m);},[l,o?.hold,...o?.trigger||[]]),useEffect(()=>{let c=async()=>{!f&&$&&M&&(await caches.open($)).delete(M);};return window.addEventListener("beforeunload",c),()=>{u.current=true,window.removeEventListener("beforeunload",c),H.current?.abort(),ge(p);}},[]);let a=useCallback(async c=>{let T=l;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(T=o?.beforeRequest(l)),d&&!c&&!C){D(true),v({loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(l);let A=await caches.open($),S=await(await A.match(M))?.json();if(S){let{data:b,expired:U}=S;if(X().isAfter(U))await A.delete(M);else {o?.afterResponse&&b?.data&&(b.data=o?.afterResponse(b.data)),o?.logging&&console.log("After request: Using Cache",b),o?.onAfterResponse&&o?.onAfterResponse(b),D(false),q(b),v({loading:false,response:b});return}}}if(typeof t=="function"){H.current?.abort();let A=new AbortController;H.current=A,D(true),v({loading:true}),o?.logging&&console.log("Before request",l),o?.onBeforeRequest&&o?.onBeforeRequest(l);let g=s?await t(void 0,{...o,signal:A.signal}):await t(T,void 0,{...o,signal:A.signal});if(o?.afterResponse&&g?.data&&(g.data=o?.afterResponse(g.data)),o?.logging&&console.log("After request",g),o?.onAfterResponse&&o?.onAfterResponse(g),D(false),q(g),O(false),v({response:g,loading:false,isCancel:false}),d&&g.status){let S=X().add(ne,re).toISOString(),b={data:g,expired:S},U=await caches.open($),oe=new Response(JSON.stringify(b));await U.put(M,oe);}}},[l,t,o]);useEffect(()=>{if(o?.refreshInterval){let c=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,T=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,A=setInterval(()=>{a();},X.duration(c,T).asMilliseconds());return ()=>clearInterval(A)}return ()=>{}},[o?.refreshInterval,a]),useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let c=()=>{a();};return window.addEventListener("focus",c),()=>{window.removeEventListener("focus",c);}},[o?.refetchOnWindowFocus,a]);let h=()=>{H.current?.abort(),H.current=null,D(false),O(true),v({isCancel:true,loading:false});},x=()=>{D(false),q(null),v({response:void 0,loading:false});},w=useCallback((c,T)=>Ne(t,c,T),[t]),m={...E,loading:N,refresh:a,abort:h,clear:x,response:E,isCancel:C,clone:w},K=useMemo(()=>({refresh:a,abort:h,clear:x,clone:w}),[a,h,x,w]),v=useCallback(({response:c,loading:T,isCancel:A})=>{if(u.current)return;V(p).setState(S=>{let b=[c?.data,{...S?.[1],...c,loading:T,response:c,isCancel:A,...K}];return JSON.stringify(S)===JSON.stringify(b)?S:b});},[K,p]);return [E?.data,m]}async function Ut(e,t=()=>{}){let n=e*1e3;return new Promise(r=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),r(true);},n);})}var Ue=(i=>(i.POST="POST",i.PUT="PUT",i.PATCH="PATCH",i.DELETE="DELETE",i.GET="GET",i))(Ue||{}),ke=(a=>(a.number="number",a.currency="currency",a.percent="percent",a.date="date",a.dateTime="dateTime",a.month="month",a.year="year",a.time="time",a.timestamp="timestamp",a.string="string",a.textarea="textarea",a.code="code",a.password="password",a.boolean="boolean",a.toggle="toggle",a.email="email",a.phone="phone",a.url="url",a.json="json",a.file="file",a.image="image",a.array="array",a.object="object",a.enum="enum",a.user="user",a.department="department",a.status="status",a))(ke||{});var Bt=(e,t,n)=>{let{format:r}=B();return t==="number"?Fe(e,{thouSep:r.number.thouSep,decDigits:r.number.decDigits,decSep:r.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Be(e,{display:r[t]?.display,value:r[t]?.value,...n}):t==="boolean"?ve(e,n):t==="string"?Ke(e,n):e?.toString()??""};function ve(e,t){let n=typeof e=="string"?e==="true":!!e,r=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?r:s}function Ke(e,t){if(!F(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ie(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function Fe(e,{thouSep:t,decSep:n,decDigits:r,method:s}){if(e==null||isNaN(Number(e)))return "";let i=typeof e=="string"?parseFloat(e):e;if(s)if(typeof r=="number"){let p=Math.pow(10,r);i=Math[s](i*p)/p;}else i=Math[s](i);else if(typeof r=="number"){let p=Math.pow(10,r);i=Math.floor(i*p)/p;}let u=0;if(r==="auto"){let p=i.toString(),y=p.indexOf(".");y!==-1&&(u=p.length-y-1);}let l={style:"decimal",useGrouping:true,minimumFractionDigits:r==="auto"?u:r||0,maximumFractionDigits:r==="auto"?u:r||0,minimumIntegerDigits:1};return i.toLocaleString("en-US",l).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Be(e,{display:t,value:n}){if(!F(e))return e;let r=X(e,n);return r.isValid()?r.format(t):e}function It(e,{interval:t,lead:n}){let r=useRef(null);useEffect(()=>{r.current=e;},[e]),useEffect(()=>{let s=()=>r.current();if(n&&s(),t!==null){let i=setInterval(s,t);return ()=>clearInterval(i)}},[t]);}function jt(e,t,n){let[r,s]=useState(false),i=(p,y)=>typeof e=="string"&&p===e||typeof e=="number"&&y===e,u=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),l=p=>{let{key:y,keyCode:R}=p,P=p.ctrlKey,N=p.altKey,D=p.shiftKey;if(!u(document.activeElement))if(t)if(typeof t=="string")i(y,R)&&(t==="ctrl"&&P||t==="alt"&&N||t==="shift"&&D)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));else {let C=t.every(O=>O==="ctrl"?P:O==="alt"?N:O==="shift"?D:false);i(y,R)&&C&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));}else i(y,R)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));},o=({key:p,keyCode:y})=>{i(p,y)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",l),window.addEventListener("keyup",o),()=>{window.removeEventListener("keydown",l),window.removeEventListener("keyup",o);}),[]),r}var Xt=({url:e,token:t,beforeRequest:n,onCallback:r,headers:s,onUnauthorized:i,handleToast:u,handleAuthorization:l,disabledToastWhenCancel:o,withCredentials:p,encryptRequest:y,encryptResponse:R,passphrase:P})=>{let{encrypt:N,decrypt:D,passphrase:C}=j(),O=(f,d,a,h)=>{let x=h?.code==="ERR_CANCELED",w=f.status===401,m=f?.data;if((typeof a?.encryptResponse=="boolean"?a?.encryptResponse:R)&&m){let g=a?.passphrase?typeof a.passphrase=="boolean"&&a.passphrase?C:a.passphrase:P;try{m=D(m,g);}catch{try{m=D(m,C);}catch{}}}let c={...r({...f,data:m,isCancel:x,isUnauthorization:w},h),isCancel:x,isUnauthorization:w,httpCode:f.status},T=typeof a?.disabledToastWhenCancel=="boolean"?a?.disabledToastWhenCancel:o,A=l?l(c,a):!w;if((a?.infoSuccess&&c.status||a?.infoError&&!c.status)&&u&&(!x||!T)&&u(c),!A&&(!x||!a?.disabledHandleUnauthorized)){let g=a?.onUnauthorized||i;g&&g(c);}if(d)d(c);else return c},E=(f,d=()=>{})=>$e.create({baseURL:`${e}`,withCredentials:typeof f.withCredentials=="boolean"?f.withCredentials:p})(f).then(d).catch(h=>d(h.response,h)),q=(f,d,a,h,x)=>{let m={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...x},K={"Content-Type":"application/json",...s,...m.headers};if(m.token&&(typeof m.token=="boolean"?t&&(K.Authorization=`Bearer ${t}`):m.token&&(K.Authorization=`Bearer ${m.token}`)),n&&(a=n(a)),(typeof m?.encryptRequest=="boolean"?m?.encryptRequest:y)&&a){let c=x?.passphrase?typeof x.passphrase=="boolean"&&x.passphrase?C:x.passphrase:P;a=N(a,c);}return E({url:d,method:f,data:a,headers:K,responseType:m.responseType,signal:m.signal,withCredentials:m.withCredentials,onUploadProgress:c=>{m?.onUploadProgress&&m?.onUploadProgress(c);}},(c,T)=>O(c,h,m,T))};return {client:E,post:(f,d,a,h)=>q("POST",`${f}`,d,a,h),put:(f,d,a,h)=>q("PUT",`${f}`,d,a,h),patch:(f,d,a,h)=>q("PATCH",`${f}`,d,a,h),delete:(f,d,a)=>q("DELETE",`${f}`,null,d,a),get:(f,d,a)=>q("GET",`${f}`,null,d,a),upload:(f,d,a,h)=>{let x=new FormData;return Object.keys(d).forEach(w=>x.append(w,d[w])),q("POST",`${f}`,x,a,{infoSuccess:false,...h,headers:{"Content-Type":"multipart/form-data",...h?.headers}})}}};function Qt(e,t){let[n,r]=useState(false),[s,i]=useState(),[u,l]=useState(0),o=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{o.current?.abort();}},[]),[async P=>{o.current?.abort();let N=new AbortController;o.current=N,r(true),t?.beforeRequest&&(P=t?.beforeRequest(P)),t?.logging&&console.log("Before request",P);let D={...t,signal:N.signal,onUploadProgress:O=>{let E=Math.round(O.loaded*100/(O.total||1));l(E);}},C=e.__isVoid?await e(void 0,D):await e(P,void 0,D);t?.logging&&console.log("After response",C),i(C),r(false),l(0),C.status&&t?.onSuccess&&t?.onSuccess(C),!C.status&&t?.onError&&t?.onError(C),t?.afterResponse&&t?.afterResponse(C);},{...s,loading:n,abort:()=>{o.current?.abort(),o.current=null,r(false),l(0);},progress:u,reset:()=>{r(false),l(0),i(null);}}]}function Ve(e,t){let{disableHysteresis:n=false,threshold:r=100,target:s}=t,i=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&i!==void 0&&e.current<i?false:(e.current||0)>r}var We=typeof window<"u"?window:null;function nn(e={}){let{getTrigger:t=Ve,target:n=We,disableHysteresis:r=false,threshold:s=100}=e,i=te.useRef(0),[u,l]=te.useState(()=>t(i,{disableHysteresis:r,threshold:s,target:n}));return te.useEffect(()=>{let o=()=>{l(t(i,{disableHysteresis:r,threshold:s,target:n}));};if(o(),n)return n.addEventListener("scroll",o,{passive:true}),()=>{n.removeEventListener("scroll",o);}},[n,t,r,s]),u}var sn=(e,t)=>{let n=t||e.__path||e.name;return V(n).useStore()};var pn=(e,t)=>{let n=r=>e(r);return n.displayName=t,n},cn=(e,t)=>{let n={};n.others=[];let r=s=>{te.Children.forEach(s,i=>{if(te.isValidElement(i)){let u=i.type.displayName;if(t.includes(u))n[u]=i;else {let l=i;l.props?.children?r(l.props.children):n.others.push(i);}}else n.others.push(i);});};return r(e),n};function Je(e,t=[]){let n={};for(let r in e){let s=e[r];if(typeof s=="function"){let i=s.bind(null);i.__path=[...t,r].join("."),i.__isVoid=s.length===2,n[r]=i;}else typeof s=="object"&&s!==null?n[r]=Je(s,[...t,r]):n[r]=s;}return n}export{Ae as BgsCoreProvider,ke as DataTypeEnum,Ue as HttpMethod,ie as capitalizeWords,Xt as createApiHelper,pn as createElement,ye as createStore,tt as debounce,z as decrypt,de as decryptString,_e as diffJson,J as encrypt,fe as encryptString,ae as generateCacheKey,ze as generateUUID,k as getFieldValue,Xe as isArray,F as isNotEmpty,et as jsonCopy,se as labelFormatter,Ge as mappingUndefinedtoNull,Ye as renderChildren,Ze as sorting,cn as splitElement,xe as stableStringify,Qe as summary,Ne as useApiLoad,Qt as useApiSend,sn as useApiStore,B as useBgsCore,j as useCrypto,Ut as useDelay,Bt as useFormatted,It as useInterval,jt as useKeyPress,nn as useScrollTrigger,me as useStorage,Je as wrapApi};
|
|
1
|
+
import J from'moment';import Y,{createContext,useContext,useCallback,useRef,useMemo,useEffect,useState,useSyncExternalStore}from'react';import {jsx}from'react/jsx-runtime';import se from'crypto-js/aes';import ae from'crypto-js/pbkdf2';import be from'crypto-js/enc-utf8';import I from'crypto-js/enc-base64';import oe from'crypto-js/lib-typedarrays';import {create}from'zustand';import ve from'axios';function je(){let e=()=>Math.random()*16%16|0;return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,t=>(t==="x"?e():e()&3|8).toString(16))}function Ve(e,t){try{return JSON.stringify(e)!==JSON.stringify(t)}catch{return false}}var We=e=>(Object.keys(e).forEach(t=>{e[t]===void 0&&(e[t]=null);}),e);function ze(e,t){let n=false;return e&&typeof e=="object"&&Array.isArray(e)&&(typeof t=="number"?e.length>t&&(n=true):n=true),n}function K(e){return !(e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0||typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.keys(e).length===0)}var ee={camelCase:(e="")=>(e=e.split(".").map(t=>(t=t.charAt(0).toUpperCase()+t.slice(1),t)).join(" "),e=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2"),e.charAt(0).toUpperCase()+e.slice(1)),snackCase:(e="")=>{let n=e.replace(/_([a-z])/g,(r,s)=>s.toUpperCase()).replace(/([A-Z])/g," $1");return n=n.charAt(0).toUpperCase()+n.slice(1),n},changeAll:(e="",t=false)=>{let n="";try{e=e?.split(".")[e?.split(".")?.length-1],e=e?.split("[]")[e?.split("[]")?.length-1],n=ee.snackCase(ee.camelCase(e)),t&&(n=n?.split(" ")?.map(r=>r?.length<=3?r?.toUpperCase():r)?.join(" "));}catch{}return n?.trim()}};function Je(e,t){return typeof e=="function"?e(t):e}var N=(e,t,n="")=>{if(!e)return n;if(e.hasOwnProperty(t))return e[t];let r=t.replace(/\[(\d+)\]/g,".$1").split("."),s=e;for(let a of r){if(s==null)return n;s=s[a];}return s===void 0?n:s},_e={desc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(r,t)?N(n,t):"";return s<a?1:-1}else return n<r?1:-1})),asc:(e,t)=>(e||(e=[]),e.sort((n,r)=>{if(t){let s=N(n,t)?N(n,t):"",a=N(r,t)?N(r,t):"";return s>a?1:-1}else return n>r?1:-1}))},Ge=(e,t)=>{Array.isArray(e)||(e=[]);let n=[];return n=e.map(r=>Number(t?N(r,t)||0:r||0)),n.reduce((r,s)=>(r||0)+(s||0),0)||0};function Xe(e){try{return e&&JSON.parse(JSON.stringify(e))}catch{return e}}function me(e){let t=new WeakSet;return JSON.stringify(e,function(n,r){return r!==null&&typeof r=="object"?t.has(r)?void 0:(t.add(r),Object.keys(r).sort().reduce((s,a)=>(s[a]=r[a],s),{})):r})??""}function te(e,t){return me([t??"undefined",e??"undefined"])}function ne(e=""){return typeof e!="string"&&(e=""),e.replace(/\b\w/g,t=>t.toUpperCase())}function Ye(e,t=0){let n;return function(...r){clearTimeout(n),n=setTimeout(()=>{e(...r);},t*1e3);}}var re=createContext(void 0);function F(){let e=useContext(re);return e||{}}var Re=({children:e,value:t})=>{let n={...t};return jsx(re.Provider,{value:n,children:e})};function V(e,t){let n=oe.random(16),r=oe.random(16),s=ae(t,n,{keySize:256/32,iterations:1e3}),a=se.encrypt(JSON.stringify(e),s,{iv:r}).toString();return {salt:n.toString(I),iv:r.toString(I),encrypted:a}}function W(e,t){let{salt:n,iv:r,encrypted:s}=e,a=ae(t,I.parse(n),{keySize:256/32,iterations:1e3}),o=se.decrypt(s,a,{iv:I.parse(r)}).toString(be);return JSON.parse(o)}function ie(e,t){return JSON.stringify(V(e,t))}function pe(e,t){return W(JSON.parse(e),t)}function L(){let{passphrase:e}=F();return {passphrase:e,encrypt(t,n){return V(t,n||e)},decrypt(t,n){return W(t,n||e)},encryptString(t,n){return ie(t,n||e)},decryptString(t,n){return pe(t,n||e)}}}var le=()=>{let{encrypt:e,decrypt:t}=L(),n=useCallback((c,o)=>{try{let l=e(o);localStorage.setItem(c,JSON.stringify(l));}catch(l){console.error("Failed to save to storage:",l);}},[e]),r=useCallback(c=>{try{let o=localStorage.getItem(c);return o?t(JSON.parse(o)):null}catch(o){return console.error("Failed to get from storage:",o),null}},[t]),s=c=>{let[o,l]=useState(()=>{try{let p=localStorage.getItem(c);return p?t(JSON.parse(p)):null}catch(p){return console.error("Failed to parse localStorage value",p),null}});return useEffect(()=>{let p=R=>{if(R.key===c)if(R.newValue)try{l(t(JSON.parse(R.newValue)));}catch(q){console.error("Decrypt error from storage event",q);}else l(null);};return window.addEventListener("storage",p),()=>window.removeEventListener("storage",p)},[c,t]),o},a=useCallback(c=>{c?localStorage.removeItem(c):localStorage.clear();},[]);return {save:n,get:r,clear:a,useWatchStorage:s}};var ce={loading:false,response:void 0,isCancel:false},E=create(e=>({states:{},updateState:(t,n)=>e(r=>({states:{...r.states,[t]:{...r.states[t]||ce,...n}}})),resetState:t=>e(n=>({states:{...n.states,[t]:{...n.states[t],...ce}}}))}));function ue(...e){let[t,n,r]=e,s=t.__isVoid,a=t.__path||t.name,c=s?void 0:n,o=s?n:r,l=o?.storeName||a,{updateState:p,resetState:R}=E(),q=E(({states:f})=>f[l]?.isCancel??false),D=E(({states:f})=>f[l]?.loading??false),O=E(({states:f})=>f[l]?.response??void 0),{storageKey:S,cache:y}=F(),w=le(),U=useRef(void 0),x=useRef(null),{cacheName:B,cacheKey:v,timeout:Z,timeoutUnit:Q,persistence:M,cacheEnabled:$}=useMemo(()=>{let f=S?w.get(S):void 0,u=typeof o?.cache=="object"?o?.cache?.cacheName??a:a,P=te({...c,session:f},typeof o?.cache=="object"?o?.cache?.cacheKey:void 0),C=false;typeof y?.enabled=="boolean"&&(C=y.enabled);let m=false;typeof y?.persistence=="boolean"&&(m=y?.persistence),typeof o?.cache=="object"&&typeof o?.cache?.persistence=="boolean"&&(m=o?.cache?.persistence??false);let A=60*5,T="s";return K(y?.timeout)&&(typeof y?.timeout=="number"?(A=y.timeout,T="s"):typeof y?.timeout=="object"&&(A=y?.timeout.value,T=y?.timeout.unit)),o?.cache&&(typeof o.cache!="boolean"?(typeof o.cache.enabled=="boolean"?C=o.cache.enabled:C=true,typeof o.cache.timeout=="number"?(A=o.cache.timeout,T="s"):typeof o.cache.timeout=="object"&&(A=o.cache.timeout.value,T=o.cache.timeout.unit)):C=o.cache),{cacheName:u,cacheKey:P,timeout:A,timeoutUnit:T,persistence:m,cacheEnabled:C}},[o?.cache,S,y]);useEffect(()=>{let f=JSON.stringify(K(U.current)?U.current:""),u=JSON.stringify(K(c)?c:""),P=U.current===void 0;(f!==u||P)&&!o?.hold&&(p(l,{response:null}),d(),U.current=c),o?.onChange&&o?.onChange(c,b);},[c,o?.hold,...o?.trigger||[]]),useEffect(()=>{let f=async()=>{!M&&B&&v&&(await caches.open(B)).delete(v);};return window.addEventListener("beforeunload",f),()=>{window.removeEventListener("beforeunload",f),x.current?.abort(),R(l);}},[M,B,v,l,x]);let d=useCallback(async f=>{let u=c,P=E.getState().states[l]?.isCancel??false;if(o?.hold&&o?.logging&&console.log("Hold active"),o?.beforeRequest&&(u=o?.beforeRequest(c)),$&&!f&&!P){p(l,{loading:true}),o?.onBeforeRequest&&o?.onBeforeRequest(c);let C=await caches.open(B),A=await(await C.match(v))?.json();if(A){let{data:T,expired:k}=A;if(J().isAfter(k))await C.delete(v);else {o?.afterResponse&&T?.data&&(T.data=o?.afterResponse(T.data)),o?.logging&&console.log("After request: Using Cache",T),o?.onAfterResponse&&o?.onAfterResponse(T),p(l,{loading:false,response:T});return}}}if(typeof t=="function"){x.current?.abort();let C=new AbortController;x.current=C,p(l,{loading:true}),o?.logging&&console.log("Before request",c),o?.onBeforeRequest&&o?.onBeforeRequest(c);let m=s?await t(void 0,{...o,signal:C.signal}):await t(u,void 0,{...o,signal:C.signal});if(o?.afterResponse&&m?.data&&(m.data=o?.afterResponse(m.data)),o?.logging&&console.log("After request",m),o?.onAfterResponse&&o?.onAfterResponse(m),p(l,{loading:false,response:m,isCancel:false}),$&&m.status){let A=J().add(Z,Q).toISOString(),T={data:m,expired:A},k=await caches.open(B),j=new Response(JSON.stringify(T));await k.put(v,j);}}},[c,t,o]);useEffect(()=>{if(o?.refreshInterval){let f=typeof o.refreshInterval=="number"?o.refreshInterval:o.refreshInterval.value,u=typeof o.refreshInterval=="number"?"s":o.refreshInterval.unit,P=setInterval(()=>{d();},J.duration(f,u).asMilliseconds());return ()=>clearInterval(P)}return ()=>{}},[o?.refreshInterval,d]),useEffect(()=>{if(!o?.refetchOnWindowFocus)return;let f=()=>{d();};return window.addEventListener("focus",f),()=>{window.removeEventListener("focus",f);}},[o?.refetchOnWindowFocus,d]);let g=useCallback(()=>{x.current?.abort(),x.current=null,p(l,{loading:false,isCancel:true});},[l,x]),i=useCallback(()=>{p(l,{loading:false,response:null});},[l]),h=useRef({refresh:d,abort:g,clear:i});useEffect(()=>{h.current={refresh:d,abort:g,clear:i},p(l,{refresh:f=>h.current.refresh(f),abort:()=>h.current.abort(),clear:()=>h.current.clear(),clone:(f,u)=>ue(t,f,u)});},[d,g,i,t]);let b={...O,loading:D,refresh:d,abort:g,clear:i,response:O,isCancel:q,clone:(f,u)=>ue(t,f,u)};return [O?.data,b]}async function Pt(e,t=()=>{}){let n=e*1e3;return new Promise(r=>{setInterval(()=>{t();},1e3);setTimeout(async()=>{await t(),r(true);},n);})}var De=(a=>(a.POST="POST",a.PUT="PUT",a.PATCH="PATCH",a.DELETE="DELETE",a.GET="GET",a))(De||{}),Se=(i=>(i.number="number",i.currency="currency",i.percent="percent",i.date="date",i.dateTime="dateTime",i.month="month",i.year="year",i.time="time",i.timestamp="timestamp",i.string="string",i.textarea="textarea",i.code="code",i.password="password",i.boolean="boolean",i.toggle="toggle",i.email="email",i.phone="phone",i.url="url",i.json="json",i.file="file",i.image="image",i.array="array",i.object="object",i.enum="enum",i.user="user",i.department="department",i.status="status",i))(Se||{});var kt=(e,t,n)=>{let{format:r}=F();return t==="number"?we(e,{thouSep:r.number.thouSep,decDigits:r.number.decDigits,decSep:r.number.decSep,...n}):["date","dateTime","month","year","time"].some(s=>s===t)?Ue(e,{display:r[t]?.display,value:r[t]?.value,...n}):t==="boolean"?Oe(e,n):t==="string"?qe(e,n):e?.toString()??""};function Oe(e,t){let n=typeof e=="string"?e==="true":!!e,r=t?.trueLabel??"Yes",s=t?.falseLabel??"No";return n?r:s}function qe(e,t){if(!K(e))return "";let n=String(e);switch(t?.textTransform){case "capitalize":n=ne(n);break;case "uppercase":n=n.toUpperCase();break;case "lowercase":n=n.toLowerCase();break}return t?.ellipsis&&n.length>t.ellipsis&&(n=n.slice(0,t.ellipsis)+"..."),n}function we(e,{thouSep:t,decSep:n,decDigits:r,method:s}){if(e==null||isNaN(Number(e)))return "";let a=typeof e=="string"?parseFloat(e):e;if(s)if(typeof r=="number"){let p=Math.pow(10,r);a=Math[s](a*p)/p;}else a=Math[s](a);else if(typeof r=="number"){let p=Math.pow(10,r);a=Math.floor(a*p)/p;}let c=0;if(r==="auto"){let p=a.toString(),R=p.indexOf(".");R!==-1&&(c=p.length-R-1);}let o={style:"decimal",useGrouping:true,minimumFractionDigits:r==="auto"?c:r||0,maximumFractionDigits:r==="auto"?c:r||0,minimumIntegerDigits:1};return a.toLocaleString("en-US",o).replace(/\./g,"decSep").replace(/,/g,"thouSep").replace(/decSep/g,n).replace(/thouSep/g,t)}function Ue(e,{display:t,value:n}){if(!K(e))return e;let r=J(e,n);return r.isValid()?r.format(t):e}function Kt(e,{interval:t,lead:n}){let r=useRef(null);useEffect(()=>{r.current=e;},[e]),useEffect(()=>{let s=()=>r.current();if(n&&s(),t!==null){let a=setInterval(s,t);return ()=>clearInterval(a)}},[t]);}function Ht(e,t,n){let[r,s]=useState(false),a=(p,R)=>typeof e=="string"&&p===e||typeof e=="number"&&R===e,c=p=>p!==null&&(["INPUT","TEXTAREA","SELECT","BUTTON"].includes(p.tagName)||p.hasAttribute("contentEditable")),o=p=>{let{key:R,keyCode:q}=p,D=p.ctrlKey,O=p.altKey,S=p.shiftKey;if(!c(document.activeElement))if(t)if(typeof t=="string")a(R,q)&&(t==="ctrl"&&D||t==="alt"&&O||t==="shift"&&S)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));else {let y=t.every(w=>w==="ctrl"?D:w==="alt"?O:w==="shift"?S:false);a(R,q)&&y&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));}else a(R,q)&&(p.preventDefault(),n&&p.stopPropagation(),s(!r));},l=({key:p,keyCode:R})=>{a(p,R)&&s(false);};return useEffect(()=>(window.addEventListener("keydown",o),window.addEventListener("keyup",l),()=>{window.removeEventListener("keydown",o),window.removeEventListener("keyup",l);}),[]),r}var Wt=({url:e,token:t,beforeRequest:n,onCallback:r,headers:s,onUnauthorized:a,handleToast:c,handleAuthorization:o,disabledToastWhenCancel:l,withCredentials:p,encryptRequest:R,encryptResponse:q,passphrase:D})=>{let{encrypt:O,decrypt:S,passphrase:y}=L(),w=(d,g,i,h)=>{let b=h?.code==="ERR_CANCELED",f=d.status===401,u=d?.data;if((typeof i?.encryptResponse=="boolean"?i?.encryptResponse:q)&&u){let k=i?.passphrase?typeof i.passphrase=="boolean"&&i.passphrase?y:i.passphrase:D;try{u=S(u,k);}catch{try{u=S(u,y);}catch{}}}let m={...r({...d,data:u,isCancel:b,isUnauthorization:f},h),isCancel:b,isUnauthorization:f,httpCode:d.status},A=typeof i?.disabledToastWhenCancel=="boolean"?i?.disabledToastWhenCancel:l,T=o?o(m,i):!f;if((i?.infoSuccess&&m.status||i?.infoError&&!m.status)&&c&&(!b||!A)&&c(m),!T&&(!b||!i?.disabledHandleUnauthorized)){let k=i?.onUnauthorized||a;k&&k(m);}if(g)g(m);else return m},U=(d,g=()=>{})=>ve.create({baseURL:`${e}`,withCredentials:typeof d.withCredentials=="boolean"?d.withCredentials:p})(d).then(g).catch(h=>g(h.response,h)),x=(d,g,i,h,b)=>{let u={...{token:true,infoError:true,infoSuccess:true,responseType:"json"},...b},P={"Content-Type":"application/json",...s,...u.headers};if(u.token&&(typeof u.token=="boolean"?t&&(P.Authorization=`Bearer ${t}`):u.token&&(P.Authorization=`Bearer ${u.token}`)),n&&(i=n(i)),(typeof u?.encryptRequest=="boolean"?u?.encryptRequest:R)&&i){let m=b?.passphrase?typeof b.passphrase=="boolean"&&b.passphrase?y:b.passphrase:D;i=O(i,m);}return U({url:g,method:d,data:i,headers:P,responseType:u.responseType,signal:u.signal,withCredentials:u.withCredentials,onUploadProgress:m=>{u?.onUploadProgress&&u?.onUploadProgress(m);}},(m,A)=>w(m,h,u,A))};return {client:U,post:(d,g,i,h)=>x("POST",`${d}`,g,i,h),put:(d,g,i,h)=>x("PUT",`${d}`,g,i,h),patch:(d,g,i,h)=>x("PATCH",`${d}`,g,i,h),delete:(d,g,i)=>x("DELETE",`${d}`,null,g,i),get:(d,g,i)=>x("GET",`${d}`,null,g,i),upload:(d,g,i,h)=>{let b=new FormData;return Object.keys(g).forEach(f=>b.append(f,g[f])),x("POST",`${d}`,b,i,{infoSuccess:false,...h,headers:{"Content-Type":"multipart/form-data",...h?.headers}})}}};function _t(e,t){let[n,r]=useState(false),[s,a]=useState(),[c,o]=useState(0),l=useRef(null);return useEffect(()=>{if(t?.abortOnUnmount)return ()=>{l.current?.abort();}},[]),[async D=>{l.current?.abort();let O=new AbortController;l.current=O,r(true),t?.beforeRequest&&(D=t?.beforeRequest(D)),t?.logging&&console.log("Before request",D);let S={...t,signal:O.signal,onUploadProgress:w=>{let U=Math.round(w.loaded*100/(w.total||1));o(U);}},y=e.__isVoid?await e(void 0,S):await e(D,void 0,S);t?.logging&&console.log("After response",y),a(y),r(false),o(0),y.status&&t?.onSuccess&&t?.onSuccess(y),!y.status&&t?.onError&&t?.onError(y),t?.afterResponse&&t?.afterResponse(y);},{...s,loading:n,abort:()=>{l.current?.abort(),l.current=null,r(false),o(0);},progress:c,reset:()=>{r(false),o(0),a(null);}}]}function Be(e,t){let{disableHysteresis:n=false,threshold:r=100,target:s}=t,a=e.current;return s&&(typeof s.pageYOffset=="number"?e.current=s.pageYOffset:s.scrollTop!==void 0&&(e.current=s.scrollTop)),!n&&a!==void 0&&e.current<a?false:(e.current||0)>r}var He=typeof window<"u"?window:null;function Yt(e={}){let{getTrigger:t=Be,target:n=He,disableHysteresis:r=false,threshold:s=100}=e,a=Y.useRef(0),[c,o]=Y.useState(()=>t(a,{disableHysteresis:r,threshold:s,target:n}));return Y.useEffect(()=>{let l=()=>{o(t(a,{disableHysteresis:r,threshold:s,target:n}));};if(l(),n)return n.addEventListener("scroll",l,{passive:true}),()=>{n.removeEventListener("scroll",l);}},[n,t,r,s]),c}var en=(e,t)=>{let n=t||e.__path||e.name,r=E(({states:s})=>s[n]);return [r?.data,r]};var rn=(e,t)=>{let n=r=>e(r);return n.displayName=t,n},on=(e,t)=>{let n={};n.others=[];let r=s=>{Y.Children.forEach(s,a=>{if(Y.isValidElement(a)){let c=a.type.displayName;if(t.includes(c))n[c]=a;else {let o=a;o.props?.children?r(o.props.children):n.others.push(a);}}else n.others.push(a);});};return r(e),n};function pn(e){let t=e,n=new Set;function r(){return t}function s(o){return n.add(o),()=>n.delete(o)}function a(o){typeof o=="function"?t=o(t):t=o,n.forEach(l=>l());}function c(o){let l=useRef(o?o(t):t);return useSyncExternalStore(s,()=>{let p=o?o(t):t,R=l.current;return Object.is(R,p)||(l.current=p),l.current},()=>o?o(t):t)}return {getSnapshot:r,subscribe:s,setState:a,useStore:c}}function Me(e,t=[]){let n={};for(let r in e){let s=e[r];if(typeof s=="function"){let a=s.bind(null);a.__path=[...t,r].join("."),a.__isVoid=s.length===2,n[r]=a;}else typeof s=="object"&&s!==null?n[r]=Me(s,[...t,r]):n[r]=s;}return n}export{Re as BgsCoreProvider,Se as DataTypeEnum,De as HttpMethod,ne as capitalizeWords,Wt as createApiHelper,rn as createElement,pn as createStore,Ye as debounce,W as decrypt,pe as decryptString,Ve as diffJson,V as encrypt,ie as encryptString,te as generateCacheKey,je as generateUUID,N as getFieldValue,ze as isArray,K as isNotEmpty,Xe as jsonCopy,ee as labelFormatter,We as mappingUndefinedtoNull,Je as renderChildren,_e as sorting,on as splitElement,me as stableStringify,Ge as summary,ue as useApiLoad,_t as useApiSend,en as useApiStore,F as useBgsCore,L as useCrypto,Pt as useDelay,kt as useFormatted,Kt as useInterval,Ht as useKeyPress,Yt as useScrollTrigger,le as useStorage,Me as wrapApi};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgscore/react-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "A React utility library that provides advanced API hooks (fetch, mutation, caching). Built for scalable and flexible data handling in modern React applications.",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
"socket.io-client": ">=4.8.1"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"crypto-js": "^4.2.0"
|
|
51
|
+
"crypto-js": "^4.2.0",
|
|
52
|
+
"zustand": "^5.0.6"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"@types/crypto-js": "^4.2.2",
|