@nocios/crudify-ui 4.3.36 → 4.4.2

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.mjs CHANGED
@@ -1,6 +1,6 @@
1
- import{a as K,b as $,c as _,d as B,e as Z,f as W,g as V,h as me,i as he,j as Pe,k as xe,l as Ce,m as Re,n as ze,o as Ae}from"./chunk-CZ76PERQ.mjs";import{a as Te,b as Se,c as we,d as Le}from"./chunk-G6A5EVA6.mjs";import{a as E,b as q,c as Y,d as J,e as d,f as ie,g as ne,h as se,i as ae,j as f,k as le,l as Ie,m as ve}from"./chunk-NEPYABGC.mjs";import{a as be,b as Ee}from"./chunk-T2CPA46I.mjs";import{a as ue,b as ce,c as pe,d as de,e as fe,f as ye,g as ge}from"./chunk-BJ6PIVZR.mjs";import{a as v,b as Q,c as X,d as j,e as ee,h as te,i as re,j as oe}from"./chunk-5JKS55SE.mjs";import{default as Bi}from"@nocios/crudify-browser";export*from"@nocios/crudify-browser";import{useMemo as Me}from"react";import{ThemeProvider as Ne,createTheme as ke,CssBaseline as Oe}from"@mui/material";import{jsx as De,jsxs as Ge}from"react/jsx-runtime";var He=(e={})=>{try{let i=v("theme");if(i){let t=JSON.parse(decodeURIComponent(i));return{...e,...t}}}catch(i){console.warn("Error parsing theme from cookie:",i)}return e};function Ue({children:e,defaultTheme:i={},disableCssBaseline:t=!1}){let r=Me(()=>{let n=He(i);return ke(n)},[i]);return Ge(Ne,{theme:r,children:[!t&&De(Oe,{}),e]})}import{Navigate as Ze,useLocation as We}from"react-router-dom";import{Fragment as $e,jsx as h,jsxs as L}from"react/jsx-runtime";var Fe={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},Ke=()=>h("style",{children:`
1
+ import{a as K,b as $,c as _,d as B,e as Z,f as V,g as W,h as Ie,i as he,j as Ae,k as Pe,l as Re,m as Ce,n as xe,o as ve}from"./chunk-5OTFPH6X.mjs";import{a as Te,b as Se,c as Ee,d as Le}from"./chunk-UDCAHVY3.mjs";import{a as b,b as q,c as Y,d as J,e as d,f as ie,g as ne,h as se,i as ae,j as f,k as le,l as me,m as ze}from"./chunk-CQM5LDK7.mjs";import{a as we,b as be}from"./chunk-T2CPA46I.mjs";import{a as ce,b as ue,c as pe,d as de,e as fe,f as ye,g as ge}from"./chunk-BJ6PIVZR.mjs";import{a as z,b as Q,c as X,d as j,e as ee,h as te,i as re,j as oe}from"./chunk-5JKS55SE.mjs";import{default as Bi}from"@nocios/crudify-browser";export*from"@nocios/crudify-browser";import{useMemo as Me}from"react";import{ThemeProvider as Ne,createTheme as ke,CssBaseline as Oe}from"@mui/material";import{jsx as De,jsxs as Ge}from"react/jsx-runtime";var He=(e={})=>{try{let i=z("theme");if(i){let t=JSON.parse(decodeURIComponent(i));return{...e,...t}}}catch(i){console.warn("Error parsing theme from cookie:",i)}return e};function Ue({children:e,defaultTheme:i={},disableCssBaseline:t=!1}){let r=Me(()=>{let n=He(i);return ke(n)},[i]);return Ge(Ne,{theme:r,children:[!t&&De(Oe,{}),e]})}import{Navigate as Ze,useLocation as Ve}from"react-router-dom";import{Fragment as $e,jsx as h,jsxs as L}from"react/jsx-runtime";var Fe={border:"5px solid rgba(0, 0, 0, 0.1)",borderTopColor:"#3B82F6",borderRadius:"50%",width:"50px",height:"50px",animation:"spin 1s linear infinite"},Ke=()=>h("style",{children:`
2
2
  @keyframes spin {
3
3
  0% { transform: rotate(0deg); }
4
4
  100% { transform: rotate(360deg); }
5
5
  }
6
- `});function A({stage:e="loading",message:i}){let r=i||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return L($e,{children:[h(Ke,{}),L("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[h("div",{style:Fe}),h("p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:r})]})]})}var _e=/^[a-zA-Z0-9\-_./\?=&%#]+$/,Be=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],P=(e,i="/")=>{if(!e||typeof e!="string")return i;let t=e.trim();if(!t)return i;if(!t.startsWith("/"))return console.warn("\u{1F6A8} Open redirect blocked (relative path):",e),i;if(!_e.test(t))return console.warn("\u{1F6A8} Open redirect blocked (invalid characters):",e),i;let r=t.toLowerCase();for(let o of Be)if(o.test(r))return console.warn("\u{1F6A8} Open redirect blocked (dangerous pattern):",e),i;let n=t.split("?")[0].split("/").filter(Boolean);if(n.length===0)return t;for(let o of n)if(o===".."||o.includes(":")||o.length>100)return console.warn("\u{1F6A8} Open redirect blocked (suspicious path part):",o),i;return t},T=(e,i="/")=>{try{let r=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!r)return i;let n=decodeURIComponent(r);return P(n,i)}catch(t){return console.warn("\u{1F6A8} Error parsing redirect parameter:",t),i}};import{Fragment as M,jsx as x}from"react/jsx-runtime";function N({children:e,loadingComponent:i,loginPath:t="/login"}){let{isAuthenticated:r,isLoading:n,isInitialized:o,tokens:s,error:a}=f(),c=We();if(!o||n)return x(M,{children:i||x(A,{stage:"validating-session"})});let p=r&&s?.accessToken&&s.accessToken.length>0;if(a||!r||!p){s&&(!s.accessToken||s.accessToken.length===0)&&localStorage.removeItem("crudify_tokens");let g=c.pathname+c.search,m=P(g),I=encodeURIComponent(m);return x(Ze,{to:`${t}?redirect=${I}`,replace:!0})}return x(M,{children:e})}import{Navigate as Ve,useLocation as qe}from"react-router-dom";import{Fragment as Ye,jsx as k}from"react/jsx-runtime";function O({children:e,redirectTo:i="/"}){let{isAuthenticated:t}=f(),r=qe();if(t){let n=new URLSearchParams(r.search),o=T(n,i);return k(Ve,{to:o,replace:!0})}return k(Ye,{children:e})}import S from"@nocios/crudify-browser";var C=class e{constructor(){this.state={status:"UNINITIALIZED",priority:null,publicApiKey:null,env:null,error:null,initializedBy:null};this.initializationPromise=null;this.highPriorityInitializerPresent=!1;this.waitingForHighPriority=new Set;this.HIGH_PRIORITY_WAIT_TIMEOUT=100}static getInstance(){return e.instance||(e.instance=new e),e.instance}registerHighPriorityInitializer(){this.highPriorityInitializerPresent=!0}isHighPriorityInitializerPresent(){return this.highPriorityInitializerPresent}getState(){return{...this.state}}async initialize(i){let{priority:t,publicApiKey:r,env:n,enableLogging:o,requestedBy:s}=i;if(this.state.status==="INITIALIZED"){this.state.publicApiKey!==r&&console.warn(`[CrudifyInitialization] ${s} attempted to initialize with different key. Already initialized with key: ${this.state.publicApiKey?.slice(0,10)}... by ${this.state.initializedBy}`);return}if(this.initializationPromise)return o&&console.log(`[CrudifyInitialization] ${s} waiting for ongoing initialization...`),this.initializationPromise;if(t==="LOW"&&this.highPriorityInitializerPresent&&this.state.status==="UNINITIALIZED"){if(o&&console.log(`[CrudifyInitialization] ${s} (LOW priority) waiting for HIGH priority initializer...`),this.waitingForHighPriority.add(s),await this.waitForHighPriorityOrTimeout(o),this.waitingForHighPriority.delete(s),this.getState().status==="INITIALIZED"){o&&console.log(`[CrudifyInitialization] ${s} found initialization completed by HIGH priority`);return}o&&console.warn(`[CrudifyInitialization] ${s} timeout waiting for HIGH priority, initializing with LOW priority`)}t==="HIGH"&&this.state.status==="INITIALIZING"&&this.state.priority==="LOW"&&(console.warn(`[CrudifyInitialization] HIGH priority request from ${s} interrupting LOW priority initialization by ${this.state.initializedBy}`),this.state.status="UNINITIALIZED",this.initializationPromise=null),o&&console.log(`[CrudifyInitialization] ${s} starting initialization (${t} priority)...`),this.state.status="INITIALIZING",this.state.priority=t,this.state.initializedBy=s,this.initializationPromise=this.performInitialization(r,n,o);try{await this.initializationPromise,this.state.status="INITIALIZED",this.state.publicApiKey=r,this.state.env=n,this.state.error=null,o&&console.log(`[CrudifyInitialization] \u2705 Successfully initialized by ${s} (${t} priority)`)}catch(a){throw this.state.status="ERROR",this.state.error=a instanceof Error?a:new Error(String(a)),this.initializationPromise=null,console.error(`[CrudifyInitialization] \u274C Initialization failed for ${s}:`,a),a}}async waitForHighPriorityOrTimeout(i){return new Promise(t=>{let n=0,o=setInterval(()=>{if(n+=10,this.state.status==="INITIALIZED"&&this.state.priority==="HIGH"){clearInterval(o),t();return}if(this.state.status==="INITIALIZING"&&this.state.priority==="HIGH"){n=0;return}n>=this.HIGH_PRIORITY_WAIT_TIMEOUT&&(clearInterval(o),i&&console.log(`[CrudifyInitialization] Timeout waiting for HIGH priority (${this.HIGH_PRIORITY_WAIT_TIMEOUT}ms)`),t())},10)})}async performInitialization(i,t,r){let n=S.getTokenData();if(n&&n.endpoint){r&&console.log("[CrudifyInitialization] SDK already initialized externally");return}S.config(t);let o=r?"debug":"none",s=await S.init(i,o);if(s.success===!1)throw new Error(`Crudify initialization failed: ${JSON.stringify(s.errors||"Unknown error")}`)}reset(){this.state={status:"UNINITIALIZED",priority:null,publicApiKey:null,env:null,error:null,initializedBy:null},this.initializationPromise=null,this.highPriorityInitializerPresent=!1,this.waitingForHighPriority.clear()}isInitialized(){return this.state.status==="INITIALIZED"}getDiagnostics(){return{...this.state,waitingCount:this.waitingForHighPriority.size,waitingComponents:Array.from(this.waitingForHighPriority),hasActivePromise:this.initializationPromise!==null}}},R=C.getInstance();import{createContext as Je,useContext as Qe,useEffect as Xe,useRef as H,useState as w}from"react";import{Fragment as ii,jsx as U}from"react/jsx-runtime";var D=Je(void 0),je=({config:e,children:i,fallback:t=null,onInitialized:r,onError:n})=>{let[o,s]=w(!1),[a,c]=w(!1),[p,g]=w(null),m=H(!1),I=H(!1);Xe(()=>{m.current||(R.registerHighPriorityInitializer(),m.current=!0),I.current||(I.current=!0,(async()=>{c(!0),g(null);try{await R.initialize({priority:"HIGH",publicApiKey:e.publicApiKey,env:e.env||"stg",enableLogging:e.enableLogging,requestedBy:"CrudifyInitializer"}),s(!0),c(!1),r&&r()}catch(z){let b=z instanceof Error?z:new Error(String(z));g(b),c(!1),n&&n(b)}})())},[e.publicApiKey,e.env,e.enableLogging,r,n]);let F={isInitialized:o,isInitializing:a,error:p};return a&&t?U(ii,{children:t}):(p&&console.error("[CrudifyInitializer] Initialization failed:",p),U(D.Provider,{value:F,children:i}))},ei=()=>{let e=Qe(D);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};import l from"@nocios/crudify-admin";var G=!1,y=null;async function ti(){let i=d.getInstance().getTokenInfo(),t=i?.apiEndpointAdmin,r=i?.apiKeyEndpointAdmin;return t&&r?{apiUrl:t,apiKey:r}:E.waitForCredentials()}async function ri(){if(!G)return y||(y=(async()=>{try{let e=d.getInstance(),{apiUrl:i,apiKey:t}=await ti();l.init({url:i,apiKey:t,getAdditionalHeaders:()=>{let r=e.getTokenInfo();return r?.crudifyTokens?.accessToken?{Authorization:`Bearer ${r.crudifyTokens.accessToken}`}:{}}}),G=!0}catch(e){throw y=null,console.error("[crudifyAdminWrapper] Initialization failed:",e),e}})(),y)}async function u(e){try{await ri();let i=await e();return!i.success&&i.errors?.includes("401")?await d.getInstance().refreshTokens()?await e():(console.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),i):i}catch(i){return console.error("[crudifyAdmin] Operation error:",i),{success:!1,errors:i instanceof Error?i.message:"Unknown error"}}}var oi={listModules:()=>u(()=>l.listModules()),getModule:e=>u(()=>l.getModule(e)),createModule:e=>u(()=>l.createModule(e)),editModule:(e,i)=>u(()=>l.editModule(e,i)),deleteModule:e=>u(()=>l.deleteModule(e)),activateModule:e=>u(()=>l.activateModule(e)),deactivateModule:e=>u(()=>l.deactivateModule(e)),getModuleVersions:e=>u(()=>l.getModuleVersions(e))};export{O as AuthRoute,K as CRITICAL_TRANSLATIONS,Ae as CrudiaAutoGenerate,C as CrudifyInitializationManager,je as CrudifyInitializer,me as CrudifyLogin,q as CrudifyProvider,Ue as CrudifyThemeProvider,ue as ERROR_CODES,ce as ERROR_SEVERITY_MAP,ne as GlobalNotificationProvider,Re as LoginComponent,Pe as POLICY_ACTIONS,xe as PREFERRED_POLICY_ORDER,Ce as Policies,N as ProtectedRoute,le as SessionDebugInfo,A as SessionLoadingScreen,d as SessionManager,ae as SessionProvider,ze as SessionStatus,J as TokenStorage,B as TranslationService,W as TranslationsProvider,he as UserProfileDisplay,ee as createErrorTranslator,Bi as crudify,oi as crudifyAdmin,R as crudifyInitManager,te as decodeJwtSafely,T as extractSafeRedirectFromUrl,v as getCookie,$ as getCriticalLanguages,_ as getCriticalTranslations,re as getCurrentUserEmail,fe as getErrorMessage,ge as handleCrudifyError,oe as isTokenExpired,pe as parseApiError,ye as parseJavaScriptError,de as parseTransactionError,Ee as secureLocalStorage,be as secureSessionStorage,j as translateError,Q as translateErrorCode,X as translateErrorCodes,Z as translationService,Se as useAuth,ve as useAutoGenerate,Y as useCrudify,ei as useCrudifyInitializer,Le as useCrudifyWithNotifications,we as useData,se as useGlobalNotification,ie as useSession,f as useSessionContext,V as useTranslations,Te as useUserData,Ie as useUserProfile,P as validateInternalRedirect};
6
+ `});function v({stage:e="loading",message:i}){let r=i||{initializing:"Initializing application...","validating-session":"Validating session...",loading:"Loading..."}[e];return L($e,{children:[h(Ke,{}),L("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100vh",width:"100vw",backgroundColor:"#f0f2f5",fontFamily:'"Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',color:"#333",textAlign:"center",boxSizing:"border-box",padding:"20px",background:"#fff"},children:[h("div",{style:Fe}),h("p",{style:{fontSize:"1.25em",fontWeight:"500",marginTop:"24px",color:"#1f2937"},children:r})]})]})}var _e=/^[a-zA-Z0-9\-_./\?=&%#]+$/,Be=[/^https?:\/\//i,/^ftp:\/\//i,/^\/\//,/javascript:/i,/data:/i,/vbscript:/i,/about:/i,/\.\.\//,/\.\.\\/,/%2e%2e%2f/i,/%2e%2e%5c/i,/%2f%2f/i,/%5c%5c/i,/[\x00-\x1f\x7f-\x9f]/,/\\/],A=(e,i="/")=>{if(!e||typeof e!="string")return i;let t=e.trim();if(!t)return i;if(!t.startsWith("/"))return console.warn("\u{1F6A8} Open redirect blocked (relative path):",e),i;if(!_e.test(t))return console.warn("\u{1F6A8} Open redirect blocked (invalid characters):",e),i;let r=t.toLowerCase();for(let o of Be)if(o.test(r))return console.warn("\u{1F6A8} Open redirect blocked (dangerous pattern):",e),i;let n=t.split("?")[0].split("/").filter(Boolean);if(n.length===0)return t;for(let o of n)if(o===".."||o.includes(":")||o.length>100)return console.warn("\u{1F6A8} Open redirect blocked (suspicious path part):",o),i;return t},T=(e,i="/")=>{try{let r=(typeof e=="string"?new URLSearchParams(e):e).get("redirect");if(!r)return i;let n=decodeURIComponent(r);return A(n,i)}catch(t){return console.warn("\u{1F6A8} Error parsing redirect parameter:",t),i}};import{Fragment as M,jsx as P}from"react/jsx-runtime";function N({children:e,loadingComponent:i,loginPath:t="/login"}){let{isAuthenticated:r,isLoading:n,isInitialized:o,tokens:s,error:c}=f(),u=Ve();if(!o||n)return P(M,{children:i||P(v,{stage:"validating-session"})});let p=r&&s?.accessToken&&s.accessToken.length>0;if(c||!r||!p){s&&(!s.accessToken||s.accessToken.length===0)&&localStorage.removeItem("crudify_tokens");let g=u.pathname+u.search,I=A(g),m=encodeURIComponent(I);return P(Ze,{to:`${t}?redirect=${m}`,replace:!0})}return P(M,{children:e})}import{Navigate as We,useLocation as qe}from"react-router-dom";import{Fragment as Ye,jsx as k}from"react/jsx-runtime";function O({children:e,redirectTo:i="/"}){let{isAuthenticated:t}=f(),r=qe();if(t){let n=new URLSearchParams(r.search),o=T(n,i);return k(We,{to:o,replace:!0})}return k(Ye,{children:e})}import S from"@nocios/crudify-browser";var R=class e{constructor(){this.state={status:"UNINITIALIZED",priority:null,publicApiKey:null,env:null,error:null,initializedBy:null};this.initializationPromise=null;this.highPriorityInitializerPresent=!1;this.waitingForHighPriority=new Set;this.HIGH_PRIORITY_WAIT_TIMEOUT=100}static getInstance(){return e.instance||(e.instance=new e),e.instance}registerHighPriorityInitializer(){this.highPriorityInitializerPresent=!0}isHighPriorityInitializerPresent(){return this.highPriorityInitializerPresent}getState(){return{...this.state}}async initialize(i){let{priority:t,publicApiKey:r,env:n,enableLogging:o,requestedBy:s}=i;if(this.state.status==="INITIALIZED"){this.state.publicApiKey!==r&&console.warn(`[CrudifyInitialization] ${s} attempted to initialize with different key. Already initialized with key: ${this.state.publicApiKey?.slice(0,10)}... by ${this.state.initializedBy}`);return}if(this.initializationPromise)return o&&console.log(`[CrudifyInitialization] ${s} waiting for ongoing initialization...`),this.initializationPromise;if(t==="LOW"&&this.highPriorityInitializerPresent&&this.state.status==="UNINITIALIZED"){if(o&&console.log(`[CrudifyInitialization] ${s} (LOW priority) waiting for HIGH priority initializer...`),this.waitingForHighPriority.add(s),await this.waitForHighPriorityOrTimeout(o),this.waitingForHighPriority.delete(s),this.getState().status==="INITIALIZED"){o&&console.log(`[CrudifyInitialization] ${s} found initialization completed by HIGH priority`);return}o&&console.warn(`[CrudifyInitialization] ${s} timeout waiting for HIGH priority, initializing with LOW priority`)}t==="HIGH"&&this.state.status==="INITIALIZING"&&this.state.priority==="LOW"&&(console.warn(`[CrudifyInitialization] HIGH priority request from ${s} interrupting LOW priority initialization by ${this.state.initializedBy}`),this.state.status="UNINITIALIZED",this.initializationPromise=null),o&&console.log(`[CrudifyInitialization] ${s} starting initialization (${t} priority)...`),this.state.status="INITIALIZING",this.state.priority=t,this.state.initializedBy=s,this.initializationPromise=this.performInitialization(r,n,o);try{await this.initializationPromise,this.state.status="INITIALIZED",this.state.publicApiKey=r,this.state.env=n,this.state.error=null,o&&console.log(`[CrudifyInitialization] \u2705 Successfully initialized by ${s} (${t} priority)`)}catch(c){throw this.state.status="ERROR",this.state.error=c instanceof Error?c:new Error(String(c)),this.initializationPromise=null,console.error(`[CrudifyInitialization] \u274C Initialization failed for ${s}:`,c),c}}async waitForHighPriorityOrTimeout(i){return new Promise(t=>{let n=0,o=setInterval(()=>{if(n+=10,this.state.status==="INITIALIZED"&&this.state.priority==="HIGH"){clearInterval(o),t();return}if(this.state.status==="INITIALIZING"&&this.state.priority==="HIGH"){n=0;return}n>=this.HIGH_PRIORITY_WAIT_TIMEOUT&&(clearInterval(o),i&&console.log(`[CrudifyInitialization] Timeout waiting for HIGH priority (${this.HIGH_PRIORITY_WAIT_TIMEOUT}ms)`),t())},10)})}async performInitialization(i,t,r){let n=S.getTokenData();if(n&&n.endpoint){r&&console.log("[CrudifyInitialization] SDK already initialized externally");return}S.config(t);let o=r?"debug":"none",s=await S.init(i,o);if(s.success===!1)throw new Error(`Crudify initialization failed: ${JSON.stringify(s.errors||"Unknown error")}`)}reset(){this.state={status:"UNINITIALIZED",priority:null,publicApiKey:null,env:null,error:null,initializedBy:null},this.initializationPromise=null,this.highPriorityInitializerPresent=!1,this.waitingForHighPriority.clear()}isInitialized(){return this.state.status==="INITIALIZED"}getDiagnostics(){return{...this.state,waitingCount:this.waitingForHighPriority.size,waitingComponents:Array.from(this.waitingForHighPriority),hasActivePromise:this.initializationPromise!==null}}},C=R.getInstance();import{createContext as Je,useContext as Qe,useEffect as Xe,useRef as H,useState as E}from"react";import{Fragment as ii,jsx as U}from"react/jsx-runtime";var D=Je(void 0),je=({config:e,children:i,fallback:t=null,onInitialized:r,onError:n})=>{let[o,s]=E(!1),[c,u]=E(!1),[p,g]=E(null),I=H(!1),m=H(!1);Xe(()=>{I.current||(C.registerHighPriorityInitializer(),I.current=!0),m.current||(m.current=!0,(async()=>{u(!0),g(null);try{await C.initialize({priority:"HIGH",publicApiKey:e.publicApiKey,env:e.env||"stg",enableLogging:e.enableLogging,requestedBy:"CrudifyInitializer"}),s(!0),u(!1),r&&r()}catch(x){let w=x instanceof Error?x:new Error(String(x));g(w),u(!1),n&&n(w)}})())},[e.publicApiKey,e.env,e.enableLogging,r,n]);let F={isInitialized:o,isInitializing:c,error:p};return c&&t?U(ii,{children:t}):(p&&console.error("[CrudifyInitializer] Initialization failed:",p),U(D.Provider,{value:F,children:i}))},ei=()=>{let e=Qe(D);if(!e)throw new Error("useCrudifyInitializer must be used within CrudifyInitializer");return e};import a from"@nocios/crudify-admin";var G=!1,y=null;async function ti(){let i=d.getInstance().getTokenInfo(),t=i?.apiEndpointAdmin,r=i?.apiKeyEndpointAdmin;return t&&r?{apiUrl:t,apiKey:r}:b.waitForCredentials()}async function ri(){if(!G)return y||(y=(async()=>{try{let e=d.getInstance(),{apiUrl:i,apiKey:t}=await ti();a.init({url:i,apiKey:t,getAdditionalHeaders:()=>{let r=e.getTokenInfo();return r?.crudifyTokens?.accessToken?{Authorization:`Bearer ${r.crudifyTokens.accessToken}`}:{}}}),G=!0}catch(e){throw y=null,console.error("[crudifyAdminWrapper] Initialization failed:",e),e}})(),y)}async function l(e){try{await ri();let i=await e();return!i.success&&i.errors?.includes("401")?await d.getInstance().refreshTokens()?await e():(console.error("[crudifyAdmin] Token refresh failed"),typeof window<"u"&&(window.location.href="/login"),i):i}catch(i){return console.error("[crudifyAdmin] Operation error:",i),{success:!1,errors:i instanceof Error?i.message:"Unknown error"}}}var oi={listModules:()=>l(()=>a.listModules()),getModule:e=>l(()=>a.getModule(e)),createModule:e=>l(()=>a.createModule(e)),editModule:(e,i)=>l(()=>a.editModule(e,i)),deleteModule:e=>l(()=>a.deleteModule(e)),activateModule:e=>l(()=>a.activateModule(e)),deactivateModule:e=>l(()=>a.deactivateModule(e)),getModuleVersions:e=>l(()=>a.getModuleVersions(e)),listActions:e=>l(()=>a.listActions(e)),getAction:e=>l(()=>a.getAction(e)),createAction:e=>l(()=>a.createAction(e)),editAction:(e,i)=>l(()=>a.editAction(e,i)),deleteAction:e=>l(()=>a.deleteAction(e)),activateAction:e=>l(()=>a.activateAction(e)),deactivateAction:e=>l(()=>a.deactivateAction(e)),getActionVersions:e=>l(()=>a.getActionVersions(e))};export{O as AuthRoute,K as CRITICAL_TRANSLATIONS,ve as CrudiaAutoGenerate,R as CrudifyInitializationManager,je as CrudifyInitializer,Ie as CrudifyLogin,q as CrudifyProvider,Ue as CrudifyThemeProvider,ce as ERROR_CODES,ue as ERROR_SEVERITY_MAP,ne as GlobalNotificationProvider,Ce as LoginComponent,Ae as POLICY_ACTIONS,Pe as PREFERRED_POLICY_ORDER,Re as Policies,N as ProtectedRoute,le as SessionDebugInfo,v as SessionLoadingScreen,d as SessionManager,ae as SessionProvider,xe as SessionStatus,J as TokenStorage,B as TranslationService,V as TranslationsProvider,he as UserProfileDisplay,ee as createErrorTranslator,Bi as crudify,oi as crudifyAdmin,C as crudifyInitManager,te as decodeJwtSafely,T as extractSafeRedirectFromUrl,z as getCookie,$ as getCriticalLanguages,_ as getCriticalTranslations,re as getCurrentUserEmail,fe as getErrorMessage,ge as handleCrudifyError,oe as isTokenExpired,pe as parseApiError,ye as parseJavaScriptError,de as parseTransactionError,be as secureLocalStorage,we as secureSessionStorage,j as translateError,Q as translateErrorCode,X as translateErrorCodes,Z as translationService,Se as useAuth,ze as useAutoGenerate,Y as useCrudify,ei as useCrudifyInitializer,Le as useCrudifyWithNotifications,Ee as useData,se as useGlobalNotification,ie as useSession,f as useSessionContext,W as useTranslations,Te as useUserData,me as useUserProfile,A as validateInternalRedirect};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocios/crudify-ui",
3
- "version": "4.3.36",
3
+ "version": "4.4.2",
4
4
  "description": "Biblioteca de componentes UI para Crudify",
5
5
  "author": "Nocios",
6
6
  "license": "MIT",