@nocios/crudify-ui 5.0.20 → 5.0.26
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/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-final.json +79 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/chunk-4AEUOTN2.js +1 -0
- package/dist/{chunk-OK5STXOA.js → chunk-4R472VF6.js} +1 -1
- package/dist/{chunk-OZDU2F2L.js → chunk-BBA4D4JY.js} +1 -1
- package/dist/{chunk-VFICZQ4N.mjs → chunk-I2GWDIIJ.mjs} +1 -1
- package/dist/{chunk-YQROLB5L.mjs → chunk-WVEMQ7DL.mjs} +1 -1
- package/dist/chunk-Z2GYZNAL.mjs +1 -0
- package/dist/components.js +1 -1
- package/dist/components.mjs +1 -1
- package/dist/hooks.d.mts +1 -1
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/{index-SS8n9MbX.d.mts → index-8iJiQ3bI.d.mts} +43 -30
- package/dist/{index-Dp5wNqtm.d.ts → index-BaP3eAZd.d.ts} +43 -30
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +1 -1
- package/vitest.config.ts +1 -1
- package/coverage/.tmp/coverage-76.json +0 -1
- package/coverage/.tmp/coverage-77.json +0 -1
- package/dist/chunk-SNBJN4HI.mjs +0 -1
- package/dist/chunk-YWIPJYNH.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkYWIPJYNHjs = require('./chunk-YWIPJYNH.js');var _chunkMFYHD6S5js = require('./chunk-MFYHD6S5.js');var _react = require('react');var _crudifybrowser = require('@nocios/crudify-browser'); var _crudifybrowser2 = _interopRequireDefault(_crudifybrowser);var J=(w={})=>{let{autoFetch:c=!0,retryOnError:N=!1,maxRetries:g=3}=w,{isAuthenticated:T,isInitialized:I,sessionData:u,tokens:m}=_chunkYWIPJYNHjs.j.call(void 0, ),[R,d]=_react.useState.call(void 0, null),[p,A]=_react.useState.call(void 0, c&&T),[C,E]=_react.useState.call(void 0, null),f=_react.useRef.call(void 0, null),o=_react.useRef.call(void 0, !0),y=_react.useRef.call(void 0, 0),l=_react.useRef.call(void 0, 0),F=_react.useCallback.call(void 0, ()=>{if(!u)return null;let h=u["cognito:username"];return u.email||(typeof h=="string"?h:null)},[u]),L=_react.useCallback.call(void 0, ()=>{d(null),E(null),A(!1),l.current=0},[]),U=_react.useCallback.call(void 0, async()=>{let h=F();if(!h){o.current&&(E("No user email available from session data"),A(!1));return}if(!I){o.current&&(E("Session not initialized"),A(!1));return}f.current&&f.current.abort();let e=new AbortController;f.current=e;let i=++y.current;try{o.current&&(A(!0),E(null));let s=await _crudifybrowser2.default.readItems("users",{filter:{email:h},pagination:{limit:1}});if(i===y.current&&o.current&&!e.signal.aborted){let r=null;if(s.success){let t=s.data;if(Array.isArray(t)&&t.length>0)r=t[0];else if(t&&typeof t=="object"&&!Array.isArray(t)&&_optionalChain([t, 'access', _2 => _2.response, 'optionalAccess', _3 => _3.data]))try{let n=t.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch (e2){}else t&&typeof t=="object"&&!Array.isArray(t)&&t.items&&Array.isArray(t.items)&&t.items.length>0&&(r=t.items[0]);if(!r&&t&&typeof t=="object"&&!Array.isArray(t)&&_optionalChain([t, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.response, 'optionalAccess', _6 => _6.data]))try{let n=t.data.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch (e3){}}r?(d(r),E(null),l.current=0):(E("User profile not found in database"),d(null))}}catch(s){if(i===y.current&&o.current){let r=s;if(r.name==="AbortError")return;N&&l.current<g&&(_optionalChain([r, 'access', _7 => _7.message, 'optionalAccess', _8 => _8.includes, 'call', _9 => _9("Network Error")])||_optionalChain([r, 'access', _10 => _10.message, 'optionalAccess', _11 => _11.includes, 'call', _12 => _12("Failed to fetch")]))?(l.current++,setTimeout(()=>{o.current&&U()},1e3*l.current)):(E("Failed to load user profile from database"),d(null))}}finally{i===y.current&&o.current&&A(!1),f.current===e&&(f.current=null)}},[I,F,N,g]);return _react.useEffect.call(void 0, ()=>{c&&T&&I?U():T||L()},[c,T,I,U,L]),_react.useEffect.call(void 0, ()=>(o.current=!0,()=>{o.current=!1,f.current&&(f.current.abort(),f.current=null)}),[]),{user:{session:u,data:R},loading:p,error:C,refreshProfile:U,clearProfile:L}};var te=()=>{let{isAuthenticated:w,isLoading:c,isInitialized:N,tokens:g,error:T,sessionData:I,login:u,logout:m,refreshTokens:R,clearError:d,getTokenInfo:p,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E}=_chunkYWIPJYNHjs.j.call(void 0, ),f=_react.useCallback.call(void 0, y=>{y?_chunkMFYHD6S5js.a.warn("useAuth.setToken() is deprecated. Use login() method instead for better security."):m()},[m]),o=_optionalChain([g, 'optionalAccess', _13 => _13.expiresAt])?new Date(g.expiresAt):null;return{isAuthenticated:w,loading:c,error:T,token:_optionalChain([g, 'optionalAccess', _14 => _14.accessToken])||null,user:I,tokenExpiration:o,setToken:f,logout:m,refreshToken:R,login:u,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E,getTokenInfo:p,clearError:d}};var ae=()=>{let{isInitialized:w,isLoading:c,error:N,isAuthenticated:g,login:T}=_chunkYWIPJYNHjs.j.call(void 0, ),I=_react.useCallback.call(void 0, ()=>w&&!c&&!N,[w,c,N]),u=_react.useCallback.call(void 0, async()=>new Promise((o,y)=>{let l=()=>{I()?o():N?y(new Error(N)):setTimeout(l,100)};l()}),[I,N]),m=_react.useCallback.call(void 0, async()=>{if(!I())throw new Error("System not ready. Check isInitialized, isLoading, and error states.")},[I]),R=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.readItems(o,y||{},l)),[m]),d=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.readItem(o,y,l)),[m]),p=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.createItem(o,y,l)),[m]),A=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.updateItem(o,y,l)),[m]),C=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.deleteItem(o,y,l)),[m]),E=_react.useCallback.call(void 0, async(o,y)=>(await m(),await _crudifybrowser2.default.transaction(o,y)),[m]),f=_react.useCallback.call(void 0, async(o,y)=>{try{let l=await T(o,y);return l.success?{success:!0,data:l.tokens}:{success:!1,errors:l.error||"Login failed"}}catch(l){return{success:!1,errors:l instanceof Error?l.message:"Login failed"}}},[T]);return{readItems:R,readItem:d,createItem:p,updateItem:A,deleteItem:C,transaction:E,login:f,isInitialized:w,isInitializing:c,initializationError:N,isReady:I,waitForReady:u}};var Y={INVALID_CREDENTIALS:"warning",UNAUTHORIZED:"warning",INVALID_API_KEY:"error",USER_NOT_FOUND:"warning",USER_NOT_ACTIVE:"warning",NO_PERMISSION:"warning",ITEM_NOT_FOUND:"info",NOT_FOUND:"info",IN_USE:"warning",FIELD_ERROR:"warning",BAD_REQUEST:"warning",INTERNAL_SERVER_ERROR:"error",DATABASE_CONNECTION_ERROR:"error",INVALID_CONFIGURATION:"error",UNKNOWN_OPERATION:"error",TOO_MANY_REQUESTS:"warning"},M={INVALID_CREDENTIALS:"errors.auth.INVALID_CREDENTIALS",UNAUTHORIZED:"errors.auth.UNAUTHORIZED",INVALID_API_KEY:"errors.auth.INVALID_API_KEY",USER_NOT_FOUND:"errors.auth.USER_NOT_FOUND",USER_NOT_ACTIVE:"errors.auth.USER_NOT_ACTIVE",NO_PERMISSION:"errors.auth.NO_PERMISSION",ITEM_NOT_FOUND:"errors.data.ITEM_NOT_FOUND",NOT_FOUND:"errors.data.NOT_FOUND",IN_USE:"errors.data.IN_USE",FIELD_ERROR:"errors.data.FIELD_ERROR",BAD_REQUEST:"errors.data.BAD_REQUEST",INTERNAL_SERVER_ERROR:"errors.system.INTERNAL_SERVER_ERROR",DATABASE_CONNECTION_ERROR:"errors.system.DATABASE_CONNECTION_ERROR",INVALID_CONFIGURATION:"errors.system.INVALID_CONFIGURATION",UNKNOWN_OPERATION:"errors.system.UNKNOWN_OPERATION",TOO_MANY_REQUESTS:"errors.system.TOO_MANY_REQUESTS"},de= exports.d =(w={})=>{let{showNotification:c}=_chunkYWIPJYNHjs.e.call(void 0, ),{showSuccessNotifications:N=!1,showErrorNotifications:g=!0,customErrorMessages:T={},defaultErrorMessage:I="Ha ocurrido un error inesperado",autoHideDuration:u=6e3,appStructure:m=[],translateFn:R=e=>e}=w,d=_react.useCallback.call(void 0, e=>{if(!e.success&&e.errors&&(Object.keys(e.errors).some(r=>r!=="_error"&&r!=="_graphql"&&r!=="_transaction")||_optionalChain([e, 'access', _15 => _15.errors, 'access', _16 => _16._transaction, 'optionalAccess', _17 => _17.includes, 'call', _18 => _18("ONE_OR_MORE_OPERATIONS_FAILED")])||_optionalChain([e, 'access', _19 => _19.errors, 'access', _20 => _20._error, 'optionalAccess', _21 => _21.includes, 'call', _22 => _22("TOO_MANY_REQUESTS")])))return!1;let i=e.data;return!(!e.success&&_optionalChain([i, 'optionalAccess', _23 => _23.response, 'optionalAccess', _24 => _24.status])==="TOO_MANY_REQUESTS")},[]),p=_react.useCallback.call(void 0, (e,i)=>{let s=R(e);return s===e?i||R("error.unknown"):s},[R]),A=_react.useCallback.call(void 0, e=>["create","update","delete"].includes(e),[]),C=_react.useCallback.call(void 0, (e,i)=>N?A(e)&&i?!0:m.some(s=>s.key===e):!1,[N,m,A]),E=_react.useCallback.call(void 0, (e,i,s)=>{let r=_optionalChain([s, 'optionalAccess', _25 => _25.key])&&typeof s.key=="string"?s.key:e,t=`action.onSuccess.${r}`,n=p(t);if(n!==R("error.unknown")){if(A(r)&&i){let a=`action.${i}Singular`,O=p(a);if(O!==R("error.unknown"))return R(t,{item:O});{let D=`action.onSuccess.${r}WithoutItem`,x=p(D);return x!==R("error.unknown")?x:n}}return n}return R("base.success.transaction")},[p,R,A]),f=_react.useCallback.call(void 0, e=>{if(e.errorCode&&T[e.errorCode])return T[e.errorCode];if(e.errorCode&&M[e.errorCode])return p(M[e.errorCode]);if(e.errorCode){let i=[`errors.auth.${e.errorCode}`,`errors.data.${e.errorCode}`,`errors.system.${e.errorCode}`,`errors.${e.errorCode}`];for(let s of i){let r=p(s);if(r!==R("error.unknown"))return r}}if(typeof e.data=="string"&&e.data.startsWith("errors.")){let i=p(e.data);if(i!==R("error.unknown"))return i}if(e.errors&&Object.keys(e.errors).length>0){let i=Object.keys(e.errors);if(i.length===1&&i[0]==="_transaction"){let s=e.errors._transaction;if(_optionalChain([s, 'optionalAccess', _26 => _26.includes, 'call', _27 => _27("ONE_OR_MORE_OPERATIONS_FAILED")]))return"";if(Array.isArray(s)&&s.length>0){let r=s[0];if(typeof r=="string"&&r!=="ONE_OR_MORE_OPERATIONS_FAILED")try{let t=JSON.parse(r);if(Array.isArray(t)&&t.length>0){let n=t[0];if(_optionalChain([n, 'optionalAccess', _28 => _28.response, 'optionalAccess', _29 => _29.errorCode])){let a=n.response.errorCode;if(M[a])return p(M[a]);let O=[`errors.auth.${a}`,`errors.data.${a}`,`errors.system.${a}`,`errors.${a}`];for(let D of O){let x=p(D);if(x!==p("error.unknown"))return x}}if(_optionalChain([n, 'optionalAccess', _30 => _30.response, 'optionalAccess', _31 => _31.data]))return n.response.data}if(_optionalChain([t, 'optionalAccess', _32 => _32.response, 'optionalAccess', _33 => _33.message])){let n=t.response.message.toLowerCase();return n.includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):n.includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):t.response.message}}catch (e4){return r.toLowerCase().includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):r.toLowerCase().includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):r}}return p("error.transaction","Error en la operaci\xF3n")}if(i.length===1&&i[0]==="_error"){let s=e.errors._error;return Array.isArray(s)?s[0]:String(s)}return i.length===1&&i[0]==="_graphql"?p("errors.system.DATABASE_CONNECTION_ERROR"):`${p("errors.data.FIELD_ERROR")}: ${i.join(", ")}`}return I||R("error.unknown")},[T,I,R,p]),o=_react.useCallback.call(void 0, e=>e.errorCode&&Y[e.errorCode]?Y[e.errorCode]:"error",[]),y=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.createItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=_optionalChain([s, 'optionalAccess', _34 => _34.actionConfig]),n=_optionalChain([t, 'optionalAccess', _35 => _35.key])||"create",a=_optionalChain([t, 'optionalAccess', _36 => _36.moduleKey])||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),l=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.updateItem(e,i,s),t=_optionalChain([s, 'optionalAccess', _37 => _37.skipNotifications])===!0;if(!t&&!r.success&&g&&d(r)){let n=f(r),a=o(r);c(n,a,{autoHideDuration:u})}else if(!t&&r.success){let n=_optionalChain([s, 'optionalAccess', _38 => _38.actionConfig]),a=_optionalChain([n, 'optionalAccess', _39 => _39.key])||"update",O=_optionalChain([n, 'optionalAccess', _40 => _40.moduleKey])||e;if(C(a,O)){let D=E(a,O,n);c(D,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),F=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.deleteItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=_optionalChain([s, 'optionalAccess', _41 => _41.actionConfig]),n=_optionalChain([t, 'optionalAccess', _42 => _42.key])||"delete",a=_optionalChain([t, 'optionalAccess', _43 => _43.moduleKey])||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),L=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.readItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),U=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.readItems(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),q=_react.useCallback.call(void 0, async(e,i)=>{let s=await _crudifybrowser2.default.transaction(e,i),r=_optionalChain([i, 'optionalAccess', _44 => _44.skipNotifications])===!0;if(!r&&!s.success&&g&&d(s)){let t=f(s),n=o(s);c(t,n,{autoHideDuration:u})}else if(!r&&s.success){let t="transaction",n,a=null;if(_optionalChain([i, 'optionalAccess', _45 => _45.actionConfig]))a=i.actionConfig,t=a.key,n=a.moduleKey;else if(Array.isArray(e)&&e.length>0&&"operation"in e[0]&&e[0].operation){t=e[0].operation;let O=m.find(D=>D.key===t);O&&(a=O,n=O.moduleKey)}if(C(t,n)){let O=E(t,n,_nullishCoalesce(a, () => (void 0)));c(O,"success",{autoHideDuration:u})}}return s},[g,C,c,f,o,E,u,d,m]),h=_react.useCallback.call(void 0, (e,i)=>{if(!e.success&&g&&d(e)){let s=f(e),r=o(e);c(s,r,{autoHideDuration:u})}else e.success&&N&&i&&c(i,"success",{autoHideDuration:u});return e},[g,N,c,f,o,u,d,R]);return{createItem:y,updateItem:l,deleteItem:F,readItem:L,readItems:U,transaction:q,handleResponse:h,getErrorMessage:f,getErrorSeverity:o,shouldShowNotification:d}};exports.a = J; exports.b = te; exports.c = ae; exports.d = de;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk4AEUOTN2js = require('./chunk-4AEUOTN2.js');var _chunkMFYHD6S5js = require('./chunk-MFYHD6S5.js');var _react = require('react');var _crudifybrowser = require('@nocios/crudify-browser'); var _crudifybrowser2 = _interopRequireDefault(_crudifybrowser);var J=(w={})=>{let{autoFetch:c=!0,retryOnError:N=!1,maxRetries:g=3}=w,{isAuthenticated:T,isInitialized:I,sessionData:u,tokens:m}=_chunk4AEUOTN2js.j.call(void 0, ),[R,d]=_react.useState.call(void 0, null),[p,A]=_react.useState.call(void 0, c&&T),[C,E]=_react.useState.call(void 0, null),f=_react.useRef.call(void 0, null),o=_react.useRef.call(void 0, !0),y=_react.useRef.call(void 0, 0),l=_react.useRef.call(void 0, 0),F=_react.useCallback.call(void 0, ()=>{if(!u)return null;let h=u["cognito:username"];return u.email||(typeof h=="string"?h:null)},[u]),L=_react.useCallback.call(void 0, ()=>{d(null),E(null),A(!1),l.current=0},[]),U=_react.useCallback.call(void 0, async()=>{let h=F();if(!h){o.current&&(E("No user email available from session data"),A(!1));return}if(!I){o.current&&(E("Session not initialized"),A(!1));return}f.current&&f.current.abort();let e=new AbortController;f.current=e;let i=++y.current;try{o.current&&(A(!0),E(null));let s=await _crudifybrowser2.default.readItems("users",{filter:{email:h},pagination:{limit:1}});if(i===y.current&&o.current&&!e.signal.aborted){let r=null;if(s.success){let t=s.data;if(Array.isArray(t)&&t.length>0)r=t[0];else if(t&&typeof t=="object"&&!Array.isArray(t)&&_optionalChain([t, 'access', _2 => _2.response, 'optionalAccess', _3 => _3.data]))try{let n=t.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch (e2){}else t&&typeof t=="object"&&!Array.isArray(t)&&t.items&&Array.isArray(t.items)&&t.items.length>0&&(r=t.items[0]);if(!r&&t&&typeof t=="object"&&!Array.isArray(t)&&_optionalChain([t, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.response, 'optionalAccess', _6 => _6.data]))try{let n=t.data.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch (e3){}}r?(d(r),E(null),l.current=0):(E("User profile not found in database"),d(null))}}catch(s){if(i===y.current&&o.current){let r=s;if(r.name==="AbortError")return;N&&l.current<g&&(_optionalChain([r, 'access', _7 => _7.message, 'optionalAccess', _8 => _8.includes, 'call', _9 => _9("Network Error")])||_optionalChain([r, 'access', _10 => _10.message, 'optionalAccess', _11 => _11.includes, 'call', _12 => _12("Failed to fetch")]))?(l.current++,setTimeout(()=>{o.current&&U()},1e3*l.current)):(E("Failed to load user profile from database"),d(null))}}finally{i===y.current&&o.current&&A(!1),f.current===e&&(f.current=null)}},[I,F,N,g]);return _react.useEffect.call(void 0, ()=>{c&&T&&I?U():T||L()},[c,T,I,U,L]),_react.useEffect.call(void 0, ()=>(o.current=!0,()=>{o.current=!1,f.current&&(f.current.abort(),f.current=null)}),[]),{user:{session:u,data:R},loading:p,error:C,refreshProfile:U,clearProfile:L}};var te=()=>{let{isAuthenticated:w,isLoading:c,isInitialized:N,tokens:g,error:T,sessionData:I,login:u,logout:m,refreshTokens:R,clearError:d,getTokenInfo:p,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E}=_chunk4AEUOTN2js.j.call(void 0, ),f=_react.useCallback.call(void 0, y=>{y?_chunkMFYHD6S5js.a.warn("useAuth.setToken() is deprecated. Use login() method instead for better security."):m()},[m]),o=_optionalChain([g, 'optionalAccess', _13 => _13.expiresAt])?new Date(g.expiresAt):null;return{isAuthenticated:w,loading:c,error:T,token:_optionalChain([g, 'optionalAccess', _14 => _14.accessToken])||null,user:I,tokenExpiration:o,setToken:f,logout:m,refreshToken:R,login:u,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E,getTokenInfo:p,clearError:d}};var ae=()=>{let{isInitialized:w,isLoading:c,error:N,isAuthenticated:g,login:T}=_chunk4AEUOTN2js.j.call(void 0, ),I=_react.useCallback.call(void 0, ()=>w&&!c&&!N,[w,c,N]),u=_react.useCallback.call(void 0, async()=>new Promise((o,y)=>{let l=()=>{I()?o():N?y(new Error(N)):setTimeout(l,100)};l()}),[I,N]),m=_react.useCallback.call(void 0, async()=>{if(!I())throw new Error("System not ready. Check isInitialized, isLoading, and error states.")},[I]),R=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.readItems(o,y||{},l)),[m]),d=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.readItem(o,y,l)),[m]),p=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.createItem(o,y,l)),[m]),A=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.updateItem(o,y,l)),[m]),C=_react.useCallback.call(void 0, async(o,y,l)=>(await m(),await _crudifybrowser2.default.deleteItem(o,y,l)),[m]),E=_react.useCallback.call(void 0, async(o,y)=>(await m(),await _crudifybrowser2.default.transaction(o,y)),[m]),f=_react.useCallback.call(void 0, async(o,y)=>{try{let l=await T(o,y);return l.success?{success:!0,data:l.tokens}:{success:!1,errors:l.error||"Login failed"}}catch(l){return{success:!1,errors:l instanceof Error?l.message:"Login failed"}}},[T]);return{readItems:R,readItem:d,createItem:p,updateItem:A,deleteItem:C,transaction:E,login:f,isInitialized:w,isInitializing:c,initializationError:N,isReady:I,waitForReady:u}};var Y={INVALID_CREDENTIALS:"warning",UNAUTHORIZED:"warning",INVALID_API_KEY:"error",USER_NOT_FOUND:"warning",USER_NOT_ACTIVE:"warning",NO_PERMISSION:"warning",ITEM_NOT_FOUND:"info",NOT_FOUND:"info",IN_USE:"warning",FIELD_ERROR:"warning",BAD_REQUEST:"warning",INTERNAL_SERVER_ERROR:"error",DATABASE_CONNECTION_ERROR:"error",INVALID_CONFIGURATION:"error",UNKNOWN_OPERATION:"error",TOO_MANY_REQUESTS:"warning"},M={INVALID_CREDENTIALS:"errors.auth.INVALID_CREDENTIALS",UNAUTHORIZED:"errors.auth.UNAUTHORIZED",INVALID_API_KEY:"errors.auth.INVALID_API_KEY",USER_NOT_FOUND:"errors.auth.USER_NOT_FOUND",USER_NOT_ACTIVE:"errors.auth.USER_NOT_ACTIVE",NO_PERMISSION:"errors.auth.NO_PERMISSION",ITEM_NOT_FOUND:"errors.data.ITEM_NOT_FOUND",NOT_FOUND:"errors.data.NOT_FOUND",IN_USE:"errors.data.IN_USE",FIELD_ERROR:"errors.data.FIELD_ERROR",BAD_REQUEST:"errors.data.BAD_REQUEST",INTERNAL_SERVER_ERROR:"errors.system.INTERNAL_SERVER_ERROR",DATABASE_CONNECTION_ERROR:"errors.system.DATABASE_CONNECTION_ERROR",INVALID_CONFIGURATION:"errors.system.INVALID_CONFIGURATION",UNKNOWN_OPERATION:"errors.system.UNKNOWN_OPERATION",TOO_MANY_REQUESTS:"errors.system.TOO_MANY_REQUESTS"},de= exports.d =(w={})=>{let{showNotification:c}=_chunk4AEUOTN2js.e.call(void 0, ),{showSuccessNotifications:N=!1,showErrorNotifications:g=!0,customErrorMessages:T={},defaultErrorMessage:I="Ha ocurrido un error inesperado",autoHideDuration:u=6e3,appStructure:m=[],translateFn:R=e=>e}=w,d=_react.useCallback.call(void 0, e=>{if(!e.success&&e.errors&&(Object.keys(e.errors).some(r=>r!=="_error"&&r!=="_graphql"&&r!=="_transaction")||_optionalChain([e, 'access', _15 => _15.errors, 'access', _16 => _16._transaction, 'optionalAccess', _17 => _17.includes, 'call', _18 => _18("ONE_OR_MORE_OPERATIONS_FAILED")])||_optionalChain([e, 'access', _19 => _19.errors, 'access', _20 => _20._error, 'optionalAccess', _21 => _21.includes, 'call', _22 => _22("TOO_MANY_REQUESTS")])))return!1;let i=e.data;return!(!e.success&&_optionalChain([i, 'optionalAccess', _23 => _23.response, 'optionalAccess', _24 => _24.status])==="TOO_MANY_REQUESTS")},[]),p=_react.useCallback.call(void 0, (e,i)=>{let s=R(e);return s===e?i||R("error.unknown"):s},[R]),A=_react.useCallback.call(void 0, e=>["create","update","delete"].includes(e),[]),C=_react.useCallback.call(void 0, (e,i)=>N?A(e)&&i?!0:m.some(s=>s.key===e):!1,[N,m,A]),E=_react.useCallback.call(void 0, (e,i,s)=>{let r=_optionalChain([s, 'optionalAccess', _25 => _25.key])&&typeof s.key=="string"?s.key:e,t=`action.onSuccess.${r}`,n=p(t);if(n!==R("error.unknown")){if(A(r)&&i){let a=`action.${i}Singular`,O=p(a);if(O!==R("error.unknown"))return R(t,{item:O});{let D=`action.onSuccess.${r}WithoutItem`,x=p(D);return x!==R("error.unknown")?x:n}}return n}return R("base.success.transaction")},[p,R,A]),f=_react.useCallback.call(void 0, e=>{if(e.errorCode&&T[e.errorCode])return T[e.errorCode];if(e.errorCode&&M[e.errorCode])return p(M[e.errorCode]);if(e.errorCode){let i=[`errors.auth.${e.errorCode}`,`errors.data.${e.errorCode}`,`errors.system.${e.errorCode}`,`errors.${e.errorCode}`];for(let s of i){let r=p(s);if(r!==R("error.unknown"))return r}}if(typeof e.data=="string"&&e.data.startsWith("errors.")){let i=p(e.data);if(i!==R("error.unknown"))return i}if(e.errors&&Object.keys(e.errors).length>0){let i=Object.keys(e.errors);if(i.length===1&&i[0]==="_transaction"){let s=e.errors._transaction;if(_optionalChain([s, 'optionalAccess', _26 => _26.includes, 'call', _27 => _27("ONE_OR_MORE_OPERATIONS_FAILED")]))return"";if(Array.isArray(s)&&s.length>0){let r=s[0];if(typeof r=="string"&&r!=="ONE_OR_MORE_OPERATIONS_FAILED")try{let t=JSON.parse(r);if(Array.isArray(t)&&t.length>0){let n=t[0];if(_optionalChain([n, 'optionalAccess', _28 => _28.response, 'optionalAccess', _29 => _29.errorCode])){let a=n.response.errorCode;if(M[a])return p(M[a]);let O=[`errors.auth.${a}`,`errors.data.${a}`,`errors.system.${a}`,`errors.${a}`];for(let D of O){let x=p(D);if(x!==p("error.unknown"))return x}}if(_optionalChain([n, 'optionalAccess', _30 => _30.response, 'optionalAccess', _31 => _31.data]))return n.response.data}if(_optionalChain([t, 'optionalAccess', _32 => _32.response, 'optionalAccess', _33 => _33.message])){let n=t.response.message.toLowerCase();return n.includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):n.includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):t.response.message}}catch (e4){return r.toLowerCase().includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):r.toLowerCase().includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):r}}return p("error.transaction","Error en la operaci\xF3n")}if(i.length===1&&i[0]==="_error"){let s=e.errors._error;return Array.isArray(s)?s[0]:String(s)}return i.length===1&&i[0]==="_graphql"?p("errors.system.DATABASE_CONNECTION_ERROR"):`${p("errors.data.FIELD_ERROR")}: ${i.join(", ")}`}return I||R("error.unknown")},[T,I,R,p]),o=_react.useCallback.call(void 0, e=>e.errorCode&&Y[e.errorCode]?Y[e.errorCode]:"error",[]),y=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.createItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=_optionalChain([s, 'optionalAccess', _34 => _34.actionConfig]),n=_optionalChain([t, 'optionalAccess', _35 => _35.key])||"create",a=_optionalChain([t, 'optionalAccess', _36 => _36.moduleKey])||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),l=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.updateItem(e,i,s),t=_optionalChain([s, 'optionalAccess', _37 => _37.skipNotifications])===!0;if(!t&&!r.success&&g&&d(r)){let n=f(r),a=o(r);c(n,a,{autoHideDuration:u})}else if(!t&&r.success){let n=_optionalChain([s, 'optionalAccess', _38 => _38.actionConfig]),a=_optionalChain([n, 'optionalAccess', _39 => _39.key])||"update",O=_optionalChain([n, 'optionalAccess', _40 => _40.moduleKey])||e;if(C(a,O)){let D=E(a,O,n);c(D,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),F=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.deleteItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=_optionalChain([s, 'optionalAccess', _41 => _41.actionConfig]),n=_optionalChain([t, 'optionalAccess', _42 => _42.key])||"delete",a=_optionalChain([t, 'optionalAccess', _43 => _43.moduleKey])||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),L=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.readItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),U=_react.useCallback.call(void 0, async(e,i,s)=>{let r=await _crudifybrowser2.default.readItems(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),q=_react.useCallback.call(void 0, async(e,i)=>{let s=await _crudifybrowser2.default.transaction(e,i),r=_optionalChain([i, 'optionalAccess', _44 => _44.skipNotifications])===!0;if(!r&&!s.success&&g&&d(s)){let t=f(s),n=o(s);c(t,n,{autoHideDuration:u})}else if(!r&&s.success){let t="transaction",n,a=null;if(_optionalChain([i, 'optionalAccess', _45 => _45.actionConfig]))a=i.actionConfig,t=a.key,n=a.moduleKey;else if(Array.isArray(e)&&e.length>0&&"operation"in e[0]&&e[0].operation){t=e[0].operation;let O=m.find(D=>D.key===t);O&&(a=O,n=O.moduleKey)}if(C(t,n)){let O=E(t,n,_nullishCoalesce(a, () => (void 0)));c(O,"success",{autoHideDuration:u})}}return s},[g,C,c,f,o,E,u,d,m]),h=_react.useCallback.call(void 0, (e,i)=>{if(!e.success&&g&&d(e)){let s=f(e),r=o(e);c(s,r,{autoHideDuration:u})}else e.success&&N&&i&&c(i,"success",{autoHideDuration:u});return e},[g,N,c,f,o,u,d,R]);return{createItem:y,updateItem:l,deleteItem:F,readItem:L,readItems:U,transaction:q,handleResponse:h,getErrorMessage:f,getErrorSeverity:o,shouldShowNotification:d}};exports.a = J; exports.b = te; exports.c = ae; exports.d = de;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as $,j as k}from"./chunk-SNBJN4HI.mjs";import{a as V}from"./chunk-MGJZTOEM.mjs";import{useState as K,useEffect as z,useCallback as j,useRef as v}from"react";import Q from"@nocios/crudify-browser";var J=(w={})=>{let{autoFetch:c=!0,retryOnError:N=!1,maxRetries:g=3}=w,{isAuthenticated:T,isInitialized:I,sessionData:u,tokens:m}=k(),[R,d]=K(null),[p,A]=K(c&&T),[C,E]=K(null),f=v(null),o=v(!0),y=v(0),l=v(0),F=j(()=>{if(!u)return null;let h=u["cognito:username"];return u.email||(typeof h=="string"?h:null)},[u]),L=j(()=>{d(null),E(null),A(!1),l.current=0},[]),U=j(async()=>{let h=F();if(!h){o.current&&(E("No user email available from session data"),A(!1));return}if(!I){o.current&&(E("Session not initialized"),A(!1));return}f.current&&f.current.abort();let e=new AbortController;f.current=e;let i=++y.current;try{o.current&&(A(!0),E(null));let s=await Q.readItems("users",{filter:{email:h},pagination:{limit:1}});if(i===y.current&&o.current&&!e.signal.aborted){let r=null;if(s.success){let t=s.data;if(Array.isArray(t)&&t.length>0)r=t[0];else if(t&&typeof t=="object"&&!Array.isArray(t)&&t.response?.data)try{let n=t.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch{}else t&&typeof t=="object"&&!Array.isArray(t)&&t.items&&Array.isArray(t.items)&&t.items.length>0&&(r=t.items[0]);if(!r&&t&&typeof t=="object"&&!Array.isArray(t)&&t.data?.response?.data)try{let n=t.data.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch{}}r?(d(r),E(null),l.current=0):(E("User profile not found in database"),d(null))}}catch(s){if(i===y.current&&o.current){let r=s;if(r.name==="AbortError")return;N&&l.current<g&&(r.message?.includes("Network Error")||r.message?.includes("Failed to fetch"))?(l.current++,setTimeout(()=>{o.current&&U()},1e3*l.current)):(E("Failed to load user profile from database"),d(null))}}finally{i===y.current&&o.current&&A(!1),f.current===e&&(f.current=null)}},[I,F,N,g]);return z(()=>{c&&T&&I?U():T||L()},[c,T,I,U,L]),z(()=>(o.current=!0,()=>{o.current=!1,f.current&&(f.current.abort(),f.current=null)}),[]),{user:{session:u,data:R},loading:p,error:C,refreshProfile:U,clearProfile:L}};import{useCallback as W}from"react";var te=()=>{let{isAuthenticated:w,isLoading:c,isInitialized:N,tokens:g,error:T,sessionData:I,login:u,logout:m,refreshTokens:R,clearError:d,getTokenInfo:p,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E}=k(),f=W(y=>{y?V.warn("useAuth.setToken() is deprecated. Use login() method instead for better security."):m()},[m]),o=g?.expiresAt?new Date(g.expiresAt):null;return{isAuthenticated:w,loading:c,error:T,token:g?.accessToken||null,user:I,tokenExpiration:o,setToken:f,logout:m,refreshToken:R,login:u,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E,getTokenInfo:p,clearError:d}};import{useCallback as S}from"react";import b from"@nocios/crudify-browser";var ae=()=>{let{isInitialized:w,isLoading:c,error:N,isAuthenticated:g,login:T}=k(),I=S(()=>w&&!c&&!N,[w,c,N]),u=S(async()=>new Promise((o,y)=>{let l=()=>{I()?o():N?y(new Error(N)):setTimeout(l,100)};l()}),[I,N]),m=S(async()=>{if(!I())throw new Error("System not ready. Check isInitialized, isLoading, and error states.")},[I]),R=S(async(o,y,l)=>(await m(),await b.readItems(o,y||{},l)),[m]),d=S(async(o,y,l)=>(await m(),await b.readItem(o,y,l)),[m]),p=S(async(o,y,l)=>(await m(),await b.createItem(o,y,l)),[m]),A=S(async(o,y,l)=>(await m(),await b.updateItem(o,y,l)),[m]),C=S(async(o,y,l)=>(await m(),await b.deleteItem(o,y,l)),[m]),E=S(async(o,y)=>(await m(),await b.transaction(o,y)),[m]),f=S(async(o,y)=>{try{let l=await T(o,y);return l.success?{success:!0,data:l.tokens}:{success:!1,errors:l.error||"Login failed"}}catch(l){return{success:!1,errors:l instanceof Error?l.message:"Login failed"}}},[T]);return{readItems:R,readItem:d,createItem:p,updateItem:A,deleteItem:C,transaction:E,login:f,isInitialized:w,isInitializing:c,initializationError:N,isReady:I,waitForReady:u}};import{useCallback as _}from"react";import P from"@nocios/crudify-browser";var Y={INVALID_CREDENTIALS:"warning",UNAUTHORIZED:"warning",INVALID_API_KEY:"error",USER_NOT_FOUND:"warning",USER_NOT_ACTIVE:"warning",NO_PERMISSION:"warning",ITEM_NOT_FOUND:"info",NOT_FOUND:"info",IN_USE:"warning",FIELD_ERROR:"warning",BAD_REQUEST:"warning",INTERNAL_SERVER_ERROR:"error",DATABASE_CONNECTION_ERROR:"error",INVALID_CONFIGURATION:"error",UNKNOWN_OPERATION:"error",TOO_MANY_REQUESTS:"warning"},M={INVALID_CREDENTIALS:"errors.auth.INVALID_CREDENTIALS",UNAUTHORIZED:"errors.auth.UNAUTHORIZED",INVALID_API_KEY:"errors.auth.INVALID_API_KEY",USER_NOT_FOUND:"errors.auth.USER_NOT_FOUND",USER_NOT_ACTIVE:"errors.auth.USER_NOT_ACTIVE",NO_PERMISSION:"errors.auth.NO_PERMISSION",ITEM_NOT_FOUND:"errors.data.ITEM_NOT_FOUND",NOT_FOUND:"errors.data.NOT_FOUND",IN_USE:"errors.data.IN_USE",FIELD_ERROR:"errors.data.FIELD_ERROR",BAD_REQUEST:"errors.data.BAD_REQUEST",INTERNAL_SERVER_ERROR:"errors.system.INTERNAL_SERVER_ERROR",DATABASE_CONNECTION_ERROR:"errors.system.DATABASE_CONNECTION_ERROR",INVALID_CONFIGURATION:"errors.system.INVALID_CONFIGURATION",UNKNOWN_OPERATION:"errors.system.UNKNOWN_OPERATION",TOO_MANY_REQUESTS:"errors.system.TOO_MANY_REQUESTS"},de=(w={})=>{let{showNotification:c}=$(),{showSuccessNotifications:N=!1,showErrorNotifications:g=!0,customErrorMessages:T={},defaultErrorMessage:I="Ha ocurrido un error inesperado",autoHideDuration:u=6e3,appStructure:m=[],translateFn:R=e=>e}=w,d=_(e=>{if(!e.success&&e.errors&&(Object.keys(e.errors).some(r=>r!=="_error"&&r!=="_graphql"&&r!=="_transaction")||e.errors._transaction?.includes("ONE_OR_MORE_OPERATIONS_FAILED")||e.errors._error?.includes("TOO_MANY_REQUESTS")))return!1;let i=e.data;return!(!e.success&&i?.response?.status==="TOO_MANY_REQUESTS")},[]),p=_((e,i)=>{let s=R(e);return s===e?i||R("error.unknown"):s},[R]),A=_(e=>["create","update","delete"].includes(e),[]),C=_((e,i)=>N?A(e)&&i?!0:m.some(s=>s.key===e):!1,[N,m,A]),E=_((e,i,s)=>{let r=s?.key&&typeof s.key=="string"?s.key:e,t=`action.onSuccess.${r}`,n=p(t);if(n!==R("error.unknown")){if(A(r)&&i){let a=`action.${i}Singular`,O=p(a);if(O!==R("error.unknown"))return R(t,{item:O});{let D=`action.onSuccess.${r}WithoutItem`,x=p(D);return x!==R("error.unknown")?x:n}}return n}return R("base.success.transaction")},[p,R,A]),f=_(e=>{if(e.errorCode&&T[e.errorCode])return T[e.errorCode];if(e.errorCode&&M[e.errorCode])return p(M[e.errorCode]);if(e.errorCode){let i=[`errors.auth.${e.errorCode}`,`errors.data.${e.errorCode}`,`errors.system.${e.errorCode}`,`errors.${e.errorCode}`];for(let s of i){let r=p(s);if(r!==R("error.unknown"))return r}}if(typeof e.data=="string"&&e.data.startsWith("errors.")){let i=p(e.data);if(i!==R("error.unknown"))return i}if(e.errors&&Object.keys(e.errors).length>0){let i=Object.keys(e.errors);if(i.length===1&&i[0]==="_transaction"){let s=e.errors._transaction;if(s?.includes("ONE_OR_MORE_OPERATIONS_FAILED"))return"";if(Array.isArray(s)&&s.length>0){let r=s[0];if(typeof r=="string"&&r!=="ONE_OR_MORE_OPERATIONS_FAILED")try{let t=JSON.parse(r);if(Array.isArray(t)&&t.length>0){let n=t[0];if(n?.response?.errorCode){let a=n.response.errorCode;if(M[a])return p(M[a]);let O=[`errors.auth.${a}`,`errors.data.${a}`,`errors.system.${a}`,`errors.${a}`];for(let D of O){let x=p(D);if(x!==p("error.unknown"))return x}}if(n?.response?.data)return n.response.data}if(t?.response?.message){let n=t.response.message.toLowerCase();return n.includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):n.includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):t.response.message}}catch{return r.toLowerCase().includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):r.toLowerCase().includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):r}}return p("error.transaction","Error en la operaci\xF3n")}if(i.length===1&&i[0]==="_error"){let s=e.errors._error;return Array.isArray(s)?s[0]:String(s)}return i.length===1&&i[0]==="_graphql"?p("errors.system.DATABASE_CONNECTION_ERROR"):`${p("errors.data.FIELD_ERROR")}: ${i.join(", ")}`}return I||R("error.unknown")},[T,I,R,p]),o=_(e=>e.errorCode&&Y[e.errorCode]?Y[e.errorCode]:"error",[]),y=_(async(e,i,s)=>{let r=await P.createItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=s?.actionConfig,n=t?.key||"create",a=t?.moduleKey||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),l=_(async(e,i,s)=>{let r=await P.updateItem(e,i,s),t=s?.skipNotifications===!0;if(!t&&!r.success&&g&&d(r)){let n=f(r),a=o(r);c(n,a,{autoHideDuration:u})}else if(!t&&r.success){let n=s?.actionConfig,a=n?.key||"update",O=n?.moduleKey||e;if(C(a,O)){let D=E(a,O,n);c(D,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),F=_(async(e,i,s)=>{let r=await P.deleteItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=s?.actionConfig,n=t?.key||"delete",a=t?.moduleKey||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),L=_(async(e,i,s)=>{let r=await P.readItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),U=_(async(e,i,s)=>{let r=await P.readItems(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),q=_(async(e,i)=>{let s=await P.transaction(e,i),r=i?.skipNotifications===!0;if(!r&&!s.success&&g&&d(s)){let t=f(s),n=o(s);c(t,n,{autoHideDuration:u})}else if(!r&&s.success){let t="transaction",n,a=null;if(i?.actionConfig)a=i.actionConfig,t=a.key,n=a.moduleKey;else if(Array.isArray(e)&&e.length>0&&"operation"in e[0]&&e[0].operation){t=e[0].operation;let O=m.find(D=>D.key===t);O&&(a=O,n=O.moduleKey)}if(C(t,n)){let O=E(t,n,a??void 0);c(O,"success",{autoHideDuration:u})}}return s},[g,C,c,f,o,E,u,d,m]),h=_((e,i)=>{if(!e.success&&g&&d(e)){let s=f(e),r=o(e);c(s,r,{autoHideDuration:u})}else e.success&&N&&i&&c(i,"success",{autoHideDuration:u});return e},[g,N,c,f,o,u,d,R]);return{createItem:y,updateItem:l,deleteItem:F,readItem:L,readItems:U,transaction:q,handleResponse:h,getErrorMessage:f,getErrorSeverity:o,shouldShowNotification:d}};export{J as a,te as b,ae as c,de as d};
|
|
1
|
+
import{e as $,j as k}from"./chunk-Z2GYZNAL.mjs";import{a as V}from"./chunk-MGJZTOEM.mjs";import{useState as K,useEffect as z,useCallback as j,useRef as v}from"react";import Q from"@nocios/crudify-browser";var J=(w={})=>{let{autoFetch:c=!0,retryOnError:N=!1,maxRetries:g=3}=w,{isAuthenticated:T,isInitialized:I,sessionData:u,tokens:m}=k(),[R,d]=K(null),[p,A]=K(c&&T),[C,E]=K(null),f=v(null),o=v(!0),y=v(0),l=v(0),F=j(()=>{if(!u)return null;let h=u["cognito:username"];return u.email||(typeof h=="string"?h:null)},[u]),L=j(()=>{d(null),E(null),A(!1),l.current=0},[]),U=j(async()=>{let h=F();if(!h){o.current&&(E("No user email available from session data"),A(!1));return}if(!I){o.current&&(E("Session not initialized"),A(!1));return}f.current&&f.current.abort();let e=new AbortController;f.current=e;let i=++y.current;try{o.current&&(A(!0),E(null));let s=await Q.readItems("users",{filter:{email:h},pagination:{limit:1}});if(i===y.current&&o.current&&!e.signal.aborted){let r=null;if(s.success){let t=s.data;if(Array.isArray(t)&&t.length>0)r=t[0];else if(t&&typeof t=="object"&&!Array.isArray(t)&&t.response?.data)try{let n=t.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch{}else t&&typeof t=="object"&&!Array.isArray(t)&&t.items&&Array.isArray(t.items)&&t.items.length>0&&(r=t.items[0]);if(!r&&t&&typeof t=="object"&&!Array.isArray(t)&&t.data?.response?.data)try{let n=t.data.response.data,a=typeof n=="string"?JSON.parse(n):n;a&&a.items&&Array.isArray(a.items)&&a.items.length>0&&(r=a.items[0])}catch{}}r?(d(r),E(null),l.current=0):(E("User profile not found in database"),d(null))}}catch(s){if(i===y.current&&o.current){let r=s;if(r.name==="AbortError")return;N&&l.current<g&&(r.message?.includes("Network Error")||r.message?.includes("Failed to fetch"))?(l.current++,setTimeout(()=>{o.current&&U()},1e3*l.current)):(E("Failed to load user profile from database"),d(null))}}finally{i===y.current&&o.current&&A(!1),f.current===e&&(f.current=null)}},[I,F,N,g]);return z(()=>{c&&T&&I?U():T||L()},[c,T,I,U,L]),z(()=>(o.current=!0,()=>{o.current=!1,f.current&&(f.current.abort(),f.current=null)}),[]),{user:{session:u,data:R},loading:p,error:C,refreshProfile:U,clearProfile:L}};import{useCallback as W}from"react";var te=()=>{let{isAuthenticated:w,isLoading:c,isInitialized:N,tokens:g,error:T,sessionData:I,login:u,logout:m,refreshTokens:R,clearError:d,getTokenInfo:p,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E}=k(),f=W(y=>{y?V.warn("useAuth.setToken() is deprecated. Use login() method instead for better security."):m()},[m]),o=g?.expiresAt?new Date(g.expiresAt):null;return{isAuthenticated:w,loading:c,error:T,token:g?.accessToken||null,user:I,tokenExpiration:o,setToken:f,logout:m,refreshToken:R,login:u,isExpiringSoon:A,expiresIn:C,refreshExpiresIn:E,getTokenInfo:p,clearError:d}};import{useCallback as S}from"react";import b from"@nocios/crudify-browser";var ae=()=>{let{isInitialized:w,isLoading:c,error:N,isAuthenticated:g,login:T}=k(),I=S(()=>w&&!c&&!N,[w,c,N]),u=S(async()=>new Promise((o,y)=>{let l=()=>{I()?o():N?y(new Error(N)):setTimeout(l,100)};l()}),[I,N]),m=S(async()=>{if(!I())throw new Error("System not ready. Check isInitialized, isLoading, and error states.")},[I]),R=S(async(o,y,l)=>(await m(),await b.readItems(o,y||{},l)),[m]),d=S(async(o,y,l)=>(await m(),await b.readItem(o,y,l)),[m]),p=S(async(o,y,l)=>(await m(),await b.createItem(o,y,l)),[m]),A=S(async(o,y,l)=>(await m(),await b.updateItem(o,y,l)),[m]),C=S(async(o,y,l)=>(await m(),await b.deleteItem(o,y,l)),[m]),E=S(async(o,y)=>(await m(),await b.transaction(o,y)),[m]),f=S(async(o,y)=>{try{let l=await T(o,y);return l.success?{success:!0,data:l.tokens}:{success:!1,errors:l.error||"Login failed"}}catch(l){return{success:!1,errors:l instanceof Error?l.message:"Login failed"}}},[T]);return{readItems:R,readItem:d,createItem:p,updateItem:A,deleteItem:C,transaction:E,login:f,isInitialized:w,isInitializing:c,initializationError:N,isReady:I,waitForReady:u}};import{useCallback as _}from"react";import P from"@nocios/crudify-browser";var Y={INVALID_CREDENTIALS:"warning",UNAUTHORIZED:"warning",INVALID_API_KEY:"error",USER_NOT_FOUND:"warning",USER_NOT_ACTIVE:"warning",NO_PERMISSION:"warning",ITEM_NOT_FOUND:"info",NOT_FOUND:"info",IN_USE:"warning",FIELD_ERROR:"warning",BAD_REQUEST:"warning",INTERNAL_SERVER_ERROR:"error",DATABASE_CONNECTION_ERROR:"error",INVALID_CONFIGURATION:"error",UNKNOWN_OPERATION:"error",TOO_MANY_REQUESTS:"warning"},M={INVALID_CREDENTIALS:"errors.auth.INVALID_CREDENTIALS",UNAUTHORIZED:"errors.auth.UNAUTHORIZED",INVALID_API_KEY:"errors.auth.INVALID_API_KEY",USER_NOT_FOUND:"errors.auth.USER_NOT_FOUND",USER_NOT_ACTIVE:"errors.auth.USER_NOT_ACTIVE",NO_PERMISSION:"errors.auth.NO_PERMISSION",ITEM_NOT_FOUND:"errors.data.ITEM_NOT_FOUND",NOT_FOUND:"errors.data.NOT_FOUND",IN_USE:"errors.data.IN_USE",FIELD_ERROR:"errors.data.FIELD_ERROR",BAD_REQUEST:"errors.data.BAD_REQUEST",INTERNAL_SERVER_ERROR:"errors.system.INTERNAL_SERVER_ERROR",DATABASE_CONNECTION_ERROR:"errors.system.DATABASE_CONNECTION_ERROR",INVALID_CONFIGURATION:"errors.system.INVALID_CONFIGURATION",UNKNOWN_OPERATION:"errors.system.UNKNOWN_OPERATION",TOO_MANY_REQUESTS:"errors.system.TOO_MANY_REQUESTS"},de=(w={})=>{let{showNotification:c}=$(),{showSuccessNotifications:N=!1,showErrorNotifications:g=!0,customErrorMessages:T={},defaultErrorMessage:I="Ha ocurrido un error inesperado",autoHideDuration:u=6e3,appStructure:m=[],translateFn:R=e=>e}=w,d=_(e=>{if(!e.success&&e.errors&&(Object.keys(e.errors).some(r=>r!=="_error"&&r!=="_graphql"&&r!=="_transaction")||e.errors._transaction?.includes("ONE_OR_MORE_OPERATIONS_FAILED")||e.errors._error?.includes("TOO_MANY_REQUESTS")))return!1;let i=e.data;return!(!e.success&&i?.response?.status==="TOO_MANY_REQUESTS")},[]),p=_((e,i)=>{let s=R(e);return s===e?i||R("error.unknown"):s},[R]),A=_(e=>["create","update","delete"].includes(e),[]),C=_((e,i)=>N?A(e)&&i?!0:m.some(s=>s.key===e):!1,[N,m,A]),E=_((e,i,s)=>{let r=s?.key&&typeof s.key=="string"?s.key:e,t=`action.onSuccess.${r}`,n=p(t);if(n!==R("error.unknown")){if(A(r)&&i){let a=`action.${i}Singular`,O=p(a);if(O!==R("error.unknown"))return R(t,{item:O});{let D=`action.onSuccess.${r}WithoutItem`,x=p(D);return x!==R("error.unknown")?x:n}}return n}return R("base.success.transaction")},[p,R,A]),f=_(e=>{if(e.errorCode&&T[e.errorCode])return T[e.errorCode];if(e.errorCode&&M[e.errorCode])return p(M[e.errorCode]);if(e.errorCode){let i=[`errors.auth.${e.errorCode}`,`errors.data.${e.errorCode}`,`errors.system.${e.errorCode}`,`errors.${e.errorCode}`];for(let s of i){let r=p(s);if(r!==R("error.unknown"))return r}}if(typeof e.data=="string"&&e.data.startsWith("errors.")){let i=p(e.data);if(i!==R("error.unknown"))return i}if(e.errors&&Object.keys(e.errors).length>0){let i=Object.keys(e.errors);if(i.length===1&&i[0]==="_transaction"){let s=e.errors._transaction;if(s?.includes("ONE_OR_MORE_OPERATIONS_FAILED"))return"";if(Array.isArray(s)&&s.length>0){let r=s[0];if(typeof r=="string"&&r!=="ONE_OR_MORE_OPERATIONS_FAILED")try{let t=JSON.parse(r);if(Array.isArray(t)&&t.length>0){let n=t[0];if(n?.response?.errorCode){let a=n.response.errorCode;if(M[a])return p(M[a]);let O=[`errors.auth.${a}`,`errors.data.${a}`,`errors.system.${a}`,`errors.${a}`];for(let D of O){let x=p(D);if(x!==p("error.unknown"))return x}}if(n?.response?.data)return n.response.data}if(t?.response?.message){let n=t.response.message.toLowerCase();return n.includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):n.includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):t.response.message}}catch{return r.toLowerCase().includes("expired")?p("resetPassword.linkExpired","El enlace ha expirado"):r.toLowerCase().includes("invalid")?p("resetPassword.invalidCode","C\xF3digo inv\xE1lido"):r}}return p("error.transaction","Error en la operaci\xF3n")}if(i.length===1&&i[0]==="_error"){let s=e.errors._error;return Array.isArray(s)?s[0]:String(s)}return i.length===1&&i[0]==="_graphql"?p("errors.system.DATABASE_CONNECTION_ERROR"):`${p("errors.data.FIELD_ERROR")}: ${i.join(", ")}`}return I||R("error.unknown")},[T,I,R,p]),o=_(e=>e.errorCode&&Y[e.errorCode]?Y[e.errorCode]:"error",[]),y=_(async(e,i,s)=>{let r=await P.createItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=s?.actionConfig,n=t?.key||"create",a=t?.moduleKey||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),l=_(async(e,i,s)=>{let r=await P.updateItem(e,i,s),t=s?.skipNotifications===!0;if(!t&&!r.success&&g&&d(r)){let n=f(r),a=o(r);c(n,a,{autoHideDuration:u})}else if(!t&&r.success){let n=s?.actionConfig,a=n?.key||"update",O=n?.moduleKey||e;if(C(a,O)){let D=E(a,O,n);c(D,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),F=_(async(e,i,s)=>{let r=await P.deleteItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}else if(r.success){let t=s?.actionConfig,n=t?.key||"delete",a=t?.moduleKey||e;if(C(n,a)){let O=E(n,a,t);c(O,"success",{autoHideDuration:u})}}return r},[g,C,c,f,o,E,u,d]),L=_(async(e,i,s)=>{let r=await P.readItem(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),U=_(async(e,i,s)=>{let r=await P.readItems(e,i,s);if(!r.success&&g&&d(r)){let t=f(r),n=o(r);c(t,n,{autoHideDuration:u})}return r},[g,c,f,o,u,d]),q=_(async(e,i)=>{let s=await P.transaction(e,i),r=i?.skipNotifications===!0;if(!r&&!s.success&&g&&d(s)){let t=f(s),n=o(s);c(t,n,{autoHideDuration:u})}else if(!r&&s.success){let t="transaction",n,a=null;if(i?.actionConfig)a=i.actionConfig,t=a.key,n=a.moduleKey;else if(Array.isArray(e)&&e.length>0&&"operation"in e[0]&&e[0].operation){t=e[0].operation;let O=m.find(D=>D.key===t);O&&(a=O,n=O.moduleKey)}if(C(t,n)){let O=E(t,n,a??void 0);c(O,"success",{autoHideDuration:u})}}return s},[g,C,c,f,o,E,u,d,m]),h=_((e,i)=>{if(!e.success&&g&&d(e)){let s=f(e),r=o(e);c(s,r,{autoHideDuration:u})}else e.success&&N&&i&&c(i,"success",{autoHideDuration:u});return e},[g,N,c,f,o,u,d,R]);return{createItem:y,updateItem:l,deleteItem:F,readItem:L,readItems:U,transaction:q,handleResponse:h,getErrorMessage:f,getErrorSeverity:o,shouldShowNotification:d}};export{J as a,te as b,ae as c,de as d};
|