max-remotes-helper 1.0.3 → 1.0.4
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.js +1 -1
- package/package.json +1 -1
- package/src/components/DevWrapper.tsx +2 -3
- package/tmpclaude-d092-cwd +0 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
(()=>{var e={20:(e,o,r)=>{"use strict";var t=r(953),n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function d(e,o,r){var t,a={},d=null,c=null;for(t in void 0!==r&&(d=""+r),void 0!==o.key&&(d=""+o.key),void 0!==o.ref&&(c=o.ref),o)i.call(o,t)&&!l.hasOwnProperty(t)&&(a[t]=o[t]);if(e&&e.defaultProps)for(t in o=e.defaultProps)void 0===a[t]&&(a[t]=o[t]);return{$$typeof:n,type:e,key:d,ref:c,props:a,_owner:s.current}}o.Fragment=a,o.jsx=d,o.jsxs=d},60:(e,o,r)=>{var t={"./moduleUtils":226,"./moduleUtils.ts":226,"./tokenUtils":433,"./tokenUtils.ts":433};function n(e){return Promise.resolve().then(()=>{if(!r.o(t,e)){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}return r(t[e])})}n.keys=()=>Object.keys(t),n.id=60,e.exports=n},87:(e,o,r)=>{(()=>{var o={20:(e,o,r)=>{"use strict";var t=r(953),n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};o.Fragment=a,o.jsx=function(e,o,r){var t,a={},d=null,c=null;for(t in void 0!==r&&(d=""+r),void 0!==o.key&&(d=""+o.key),void 0!==o.ref&&(c=o.ref),o)i.call(o,t)&&!l.hasOwnProperty(t)&&(a[t]=o[t]);if(e&&e.defaultProps)for(t in o=e.defaultProps)void 0===a[t]&&(a[t]=o[t]);return{$$typeof:n,type:e,key:d,ref:c,props:a,_owner:s.current}}},60:(e,o,r)=>{var t={"./moduleUtils":226,"./moduleUtils.ts":226,"./tokenUtils":433,"./tokenUtils.ts":433};function n(e){return Promise.resolve().then(()=>{if(!r.o(t,e)){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}return r(t[e])})}n.keys=()=>Object.keys(t),n.id=60,e.exports=n},226:(e,o,r)=>{"use strict";r.r(o),r.d(o,{createRemoteComponentLoader:()=>s,getRemoteEnvironment:()=>l,isRemoteAvailable:()=>i,loadRemoteModule:()=>a});var t=r(953),n=r.n(t);const a=async(e,o)=>{try{return await r(60)(`${e}/${o}`)}catch(r){throw console.error(`Failed to load remote module ${e}/${o}:`,r),r}},i=async e=>{try{const o=window[e];return"function"==typeof o?.get}catch(e){return!1}},s=(e,o,r)=>n().lazy(async()=>{try{return await a(e,o)}catch(t){return console.error(`Remote component loading failed: ${e}/${o}`,t),r?{default:r}:{default:()=>n().createElement("div",{style:{padding:"20px",color:"red"}},`Failed to load remote component: ${e}/${o}`)}}}),l=()=>({isDevelopment:!1,apiBaseUrl:process.env.REACT_APP_API_URL||"",frontUrl:process.env.REACT_APP_FRONT_URL||""})},433:(e,o,r)=>{"use strict";r.r(o),r.d(o,{decodeToken:()=>t,extractPermissions:()=>a,isTokenExpired:()=>n,tokenStorage:()=>i});const t=e=>{try{if(!e)return null;const o=e.split(".");if(3!==o.length)return null;const r=o[1],t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return JSON.parse(n)}catch(e){return console.error("Error decoding token:",e),null}},n=e=>{const o=t(e);if(!o||!o.exp)return!0;const r=Math.floor(Date.now()/1e3);return o.exp<r},a=e=>{if(!e)return[];const o=["permissions","roles","authorities","scope"];for(const r of o){const o=e[r];if(Array.isArray(o))return o;if("string"==typeof o)return o.split(" ").filter(Boolean)}return[]},i={key:"bo-remote-token",save:e=>{try{sessionStorage.setItem(i.key,e)}catch(e){console.error("Error saving token:",e)}},get:()=>{try{return sessionStorage.getItem(i.key)}catch(e){return console.error("Error getting token:",e),null}},remove:()=>{try{sessionStorage.removeItem(i.key)}catch(e){console.error("Error removing token:",e)}},clear:()=>{try{sessionStorage.clear()}catch(e){console.error("Error clearing storage:",e)}}}},848:(e,o,r)=>{"use strict";e.exports=r(20)},953:e=>{"use strict";e.exports=r(953)}},t={};function n(e){var r=t[e];if(void 0!==r)return r.exports;var a=t[e]={exports:{}};return o[e](a,a.exports,n),a.exports}n.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return n.d(o,{a:o}),o},n.d=(e,o)=>{for(var r in o)n.o(o,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},n.e=()=>Promise.resolve(),n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";n.r(a),n.d(a,{RemoteAuthProvider:()=>l,RemoteWrapper:()=>m,Secured:()=>c,createRemoteComponentLoader:()=>p.createRemoteComponentLoader,decodeToken:()=>r.decodeToken,extractPermissions:()=>r.extractPermissions,getRemoteEnvironment:()=>p.getRemoteEnvironment,isRemoteAvailable:()=>p.isRemoteAvailable,isTokenExpired:()=>r.isTokenExpired,loadRemoteModule:()=>p.loadRemoteModule,tokenStorage:()=>r.tokenStorage,useRemoteAuth:()=>d,useRemoteConfig:()=>u});var e=n(848),o=n(953),r=n(433);const t={token:null,isAuthenticated:!1,permissions:[],user:void 0},i=(e,o)=>{switch(o.type){case"SET_TOKEN":const n=(0,r.decodeToken)(o.payload),a=n?(0,r.extractPermissions)(n):[];return{...e,token:o.payload,isAuthenticated:!(0,r.isTokenExpired)(o.payload),permissions:a,user:n?{id:n.sub||"",email:n.email||"",name:n.name||n.email||""}:void 0};case"CLEAR_AUTH":return{...t};case"SET_USER_INFO":return{...e,user:{id:o.payload.sub||"",email:o.payload.email||"",name:o.payload.name||o.payload.email||""}};default:return e}},s=(0,o.createContext)(void 0),l=({children:n,initialToken:a})=>{const[l,d]=(0,o.useReducer)(i,t);(0,o.useEffect)(()=>{if(console.log("🔍 RemoteAuthContext: useEffect triggered",{initialToken:a?a.substring(0,30)+"...":"No initialToken"}),a)console.log("✅ RemoteAuthContext: Using initialToken from prop"),(0,r.isTokenExpired)(a)?(console.log("🔴 RemoteAuthContext: Provided token is expired, clearing auth"),r.tokenStorage.remove(),d({type:"CLEAR_AUTH"})):(console.log("🟢 RemoteAuthContext: Token is valid, dispatching SET_TOKEN"),d({type:"SET_TOKEN",payload:a}),r.tokenStorage.save(a));else{console.log("⚪ RemoteAuthContext: No initialToken, checking stored token");const e=r.tokenStorage.get();e&&!(0,r.isTokenExpired)(e)?(console.log("💾 RemoteAuthContext: Using stored token"),d({type:"SET_TOKEN",payload:e})):e&&(console.log("🗑️ RemoteAuthContext: Stored token expired, clearing"),r.tokenStorage.remove(),d({type:"CLEAR_AUTH"}))}},[a]);const c={state:l,setToken:e=>{e&&(r.tokenStorage.save(e),d({type:"SET_TOKEN",payload:e}))},clearAuth:()=>{r.tokenStorage.remove(),d({type:"CLEAR_AUTH"})},hasPermission:e=>!!l.isAuthenticated&&l.permissions.includes(e)};return(0,e.jsx)(s.Provider,{value:c,children:n})},d=()=>{const e=(0,o.useContext)(s);if(void 0===e)throw new Error("useRemoteAuth must be used within a RemoteAuthProvider");return e},c=({children:o,permission:r,fallback:t=null})=>{const{hasPermission:n,state:a}=d();return a.isAuthenticated&&n(r)?(0,e.jsx)(e.Fragment,{children:o}):(0,e.jsx)(e.Fragment,{children:t})},m=({children:o,token:r,apiBaseUrl:t,module:n})=>(0,e.jsx)(l,{initialToken:r,children:(0,e.jsx)("div",{"data-remote-module":n,"data-api-base":t,children:o})}),u=()=>{const e=(0,o.useMemo)(()=>({react:{singleton:!0,eager:!1},"react-dom":{singleton:!0,eager:!1},"aurora-web":{singleton:!0,eager:!1},"react-i18next":{singleton:!0,eager:!1},i18next:{singleton:!0,eager:!1}}),[]);return{sharedDependencies:e,getWebpackConfig:(o,r)=>({name:o,filename:"remoteEntry.js",exposes:r,shared:e})}};var p=n(226)})(),e.exports=a})()},226:(e,o,r)=>{"use strict";r.r(o),r.d(o,{createRemoteComponentLoader:()=>s,getRemoteEnvironment:()=>l,isRemoteAvailable:()=>i,loadRemoteModule:()=>a});var t=r(953),n=r.n(t);const a=async(e,o)=>{try{return await r(60)(`${e}/${o}`)}catch(r){throw console.error(`Failed to load remote module ${e}/${o}:`,r),r}},i=async e=>{try{const o=window[e];return"function"==typeof o?.get}catch(e){return!1}},s=(e,o,r)=>n().lazy(async()=>{try{return await a(e,o)}catch(t){return console.error(`Remote component loading failed: ${e}/${o}`,t),r?{default:r}:{default:()=>n().createElement("div",{style:{padding:"20px",color:"red"}},`Failed to load remote component: ${e}/${o}`)}}}),l=()=>({isDevelopment:!1,apiBaseUrl:process.env.REACT_APP_API_URL||"",frontUrl:process.env.REACT_APP_FRONT_URL||""})},433:(e,o,r)=>{"use strict";r.r(o),r.d(o,{decodeToken:()=>t,extractPermissions:()=>a,isTokenExpired:()=>n,tokenStorage:()=>i});const t=e=>{try{if(!e)return null;const o=e.split(".");if(3!==o.length)return null;const r=o[1],t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return JSON.parse(n)}catch(e){return console.error("Error decoding token:",e),null}},n=e=>{const o=t(e);if(!o||!o.exp)return!0;const r=Math.floor(Date.now()/1e3);return o.exp<r},a=e=>{if(!e)return[];const o=["permissions","roles","authorities","scope"];for(const r of o){const o=e[r];if(Array.isArray(o))return o;if("string"==typeof o)return o.split(" ").filter(Boolean)}return[]},i={key:"bo-remote-token",save:e=>{try{sessionStorage.setItem(i.key,e)}catch(e){console.error("Error saving token:",e)}},get:()=>{try{return sessionStorage.getItem(i.key)}catch(e){return console.error("Error getting token:",e),null}},remove:()=>{try{sessionStorage.removeItem(i.key)}catch(e){console.error("Error removing token:",e)}},clear:()=>{try{sessionStorage.clear()}catch(e){console.error("Error clearing storage:",e)}}}},848:(e,o,r)=>{"use strict";e.exports=r(20)},953:e=>{"use strict";e.exports=require("react")}},o={};function r(t){var n=o[t];if(void 0!==n)return n.exports;var a=o[t]={exports:{}};return e[t](a,a.exports,r),a.exports}r.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return r.d(o,{a:o}),o},r.d=(e,o)=>{for(var t in o)r.o(o,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},r.e=()=>Promise.resolve(),r.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};(()=>{"use strict";r.r(t),r.d(t,{DevWrapper:()=>v,RemoteAuthProvider:()=>d,RemoteWrapper:()=>u,Secured:()=>m,createRemoteComponentLoader:()=>b.createRemoteComponentLoader,decodeToken:()=>a.decodeToken,extractPermissions:()=>a.extractPermissions,getRemoteEnvironment:()=>b.getRemoteEnvironment,isRemoteAvailable:()=>b.isRemoteAvailable,isTokenExpired:()=>a.isTokenExpired,loadRemoteModule:()=>b.loadRemoteModule,tokenStorage:()=>a.tokenStorage,useRemoteAuth:()=>c,useRemoteConfig:()=>k});var e=r(848),o=r(953),n=r.n(o),a=r(433);const i={token:null,isAuthenticated:!1,permissions:[],user:void 0},s=(e,o)=>{switch(o.type){case"SET_TOKEN":const r=(0,a.decodeToken)(o.payload),t=r?(0,a.extractPermissions)(r):[];return{...e,token:o.payload,isAuthenticated:!(0,a.isTokenExpired)(o.payload),permissions:t,user:r?{id:r.sub||"",email:r.email||"",name:r.name||r.email||""}:void 0};case"CLEAR_AUTH":return{...i};case"SET_USER_INFO":return{...e,user:{id:o.payload.sub||"",email:o.payload.email||"",name:o.payload.name||o.payload.email||""}};default:return e}},l=(0,o.createContext)(void 0),d=({children:r,initialToken:t})=>{const[n,d]=(0,o.useReducer)(s,i),c="dev"===process.env.REACT_APP_ENVIRONMENT?console.log:()=>{};(0,o.useEffect)(()=>{if(c("🔍 RemoteAuthContext: useEffect triggered",{initialToken:t?t.substring(0,30)+"...":"No initialToken"}),t)c("✅ RemoteAuthContext: Using initialToken from prop"),(0,a.isTokenExpired)(t)?(c("🔴 RemoteAuthContext: Provided token is expired, clearing auth"),a.tokenStorage.remove(),d({type:"CLEAR_AUTH"})):(c("🟢 RemoteAuthContext: Token is valid, dispatching SET_TOKEN"),d({type:"SET_TOKEN",payload:t}),a.tokenStorage.save(t));else{c("⚪ RemoteAuthContext: No initialToken, checking stored token");const e=a.tokenStorage.get();e&&!(0,a.isTokenExpired)(e)?(c("💾 RemoteAuthContext: Using stored token"),d({type:"SET_TOKEN",payload:e})):e&&(c("🗑️ RemoteAuthContext: Stored token expired, clearing"),a.tokenStorage.remove(),d({type:"CLEAR_AUTH"}))}},[t]);const m={state:n,setToken:e=>{e&&(a.tokenStorage.save(e),d({type:"SET_TOKEN",payload:e}))},clearAuth:()=>{a.tokenStorage.remove(),d({type:"CLEAR_AUTH"})},hasPermission:e=>!!n.isAuthenticated&&n.permissions.includes(e)};return(0,e.jsx)(l.Provider,{value:m,children:r})},c=()=>{const e=(0,o.useContext)(l);if(void 0===e)throw new Error("useRemoteAuth must be used within a RemoteAuthProvider");return e},m=({children:o,permission:r,fallback:t=null})=>{const{hasPermission:n,state:a}=c();return a.isAuthenticated&&n(r)?(0,e.jsx)(e.Fragment,{children:o}):(0,e.jsx)(e.Fragment,{children:t})},u=({children:o,token:r})=>(0,e.jsx)(d,{initialToken:r,children:(0,e.jsx)("div",{children:o})});var p=r(87);const g=({children:o,className:r="",style:t})=>{const n={backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",border:"1px solid #E5E7EB",...t};return(0,e.jsx)("div",{style:n,className:r,children:o})},h=({label:o,onClick:r,disabled:t=!1,variant:n="primary",size:a="medium",className:i="",type:s="button",style:l})=>{const d={borderRadius:"0.5rem",fontWeight:500,transition:"all 0.2s",outline:"none",cursor:t?"not-allowed":"pointer",opacity:t?.5:1,border:"none"};return(0,e.jsx)("button",{type:s,onClick:r,disabled:t,style:{...d,...{primary:{background:"linear-gradient(to bottom right, #3B82F6, #1E40AF)",color:"white",boxShadow:"0 1px 2px 0 rgb(0 0 0 / 0.05)"},secondary:{backgroundColor:"#F3F4F6",color:"#1F2937",border:"1px solid #D1D5DB"},text:{backgroundColor:"transparent",color:"#2563EB"}}[n],...{small:{padding:"0.5rem 1rem",fontSize:"0.875rem"},medium:{padding:"0.625rem 1.25rem",fontSize:"1rem"},large:{padding:"0.75rem 1.5rem",fontSize:"1.125rem"}}[a],...l},className:i,children:o})},x=({onSubmit:r,onCancel:t,onClearStorage:n,defaultDevRoles:a=[],currentToken:i=""})=>{const[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(""),[m,u]=(0,o.useState)({user:"usuario@bdsol.com.ar",roles:a,channel:"mf-testing",sessionId:crypto.randomUUID()}),[p,x]=(0,o.useState)(a.join("\n")),y=(e,o)=>{u(r=>({...r,[e]:o}))};return(0,e.jsx)("div",{style:{padding:"1.5rem",width:"100%",overflowY:"auto"},children:(0,e.jsx)(g,{style:{padding:"1.5rem"},children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("h2",{style:{fontSize:"1.5rem",fontWeight:"bold",color:"#1F2937",marginBottom:"1rem"},children:"🔧 Generador de Tokens (Desarrollo)"}),(0,e.jsx)("p",{style:{color:"#6B7280",marginBottom:"1.5rem"},children:"Genera un token JWT para desarrollo usando el BFF. Solo disponible cuando ENVIRONMENT=dev."}),d&&(0,e.jsx)("div",{style:{marginBottom:"1rem",padding:"0.75rem",backgroundColor:"#FEE2E2",border:"1px solid #F87171",color:"#B91C1C",borderRadius:"0.25rem"},children:d}),(0,e.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Email del usuario"}),(0,e.jsx)("input",{type:"email",value:m.user,onChange:e=>y("user",e.target.value),style:{width:"100%",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",outline:"none"},placeholder:"usuario@bdsol.com.ar"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Roles (uno por línea)"}),(0,e.jsx)("textarea",{value:p,onChange:e=>x(e.target.value),style:{width:"100%",height:"8rem",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"},placeholder:a.join(" ")}),(0,e.jsx)("p",{style:{fontSize:"0.75rem",color:"#9CA3AF",marginTop:"0.25rem"},children:"Roles definidos en src/config/roles.ts"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Channel"}),(0,e.jsx)("input",{type:"text",value:m.channel,onChange:e=>y("channel",e.target.value),style:{width:"100%",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",outline:"none"},placeholder:"mf-testing"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Session ID"}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,e.jsx)("input",{type:"text",value:m.sessionId,onChange:e=>y("sessionId",e.target.value),style:{flex:1,padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"},placeholder:"uuid-session-id"}),(0,e.jsx)(h,{label:"🎲",variant:"primary",size:"small",onClick:()=>{u(e=>({...e,sessionId:crypto.randomUUID()}))},style:{padding:"0.5rem 0.75rem"}})]})]})]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",flexWrap:"wrap",marginBottom:"1rem"},children:[(0,e.jsx)(h,{label:s?"Generando...":"🚀 Generar Token",variant:"primary",size:"small",onClick:async()=>{l(!0),c(""),n();try{const e=p.split("\n").map(e=>e.trim()).filter(e=>e.length>0),o={...m,roles:e},t=process.env.REACT_APP_API_URL||"http://localhost:3020",n=await fetch(`${t}/template/api/dev/generate-token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok){const e=await n.json();throw new Error(e.error||"Error al generar token")}const a=await n.json();r(a.token)}catch(e){c(e instanceof Error?e.message:"Error desconocido")}finally{l(!1)}},disabled:s||!m.user.trim()}),(0,e.jsx)(h,{label:"Limpiar almacenamiento",variant:"primary",size:"small",onClick:()=>{n(),alert("SessionStorage limpiado correctamente")}}),(0,e.jsx)(h,{label:"Cancelar",size:"small",variant:"secondary",onClick:t})]}),i&&(0,e.jsxs)("div",{style:{marginTop:"1rem",padding:"1rem",backgroundColor:"#D1FAE5",borderRadius:"0.5rem"},children:[(0,e.jsx)("h3",{style:{fontWeight:600,color:"#047857",marginBottom:"0.5rem"},children:"✅ Token cargado"}),(0,e.jsx)("p",{style:{fontSize:"0.875rem",color:"#059669"},children:"Tienes un token activo en el almacenamiento local."})]})," "]})})})},y=({onSubmit:r,onCancel:t,onClearStorage:n,currentToken:a=""})=>{const[i,s]=(0,o.useState)(a),[l,d]=(0,o.useState)(!0);return(0,e.jsxs)("div",{style:{backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",padding:"1.5rem",width:"100%",maxWidth:"42rem"},children:[(0,e.jsx)("h2",{style:{fontSize:"1.5rem",fontWeight:"bold",color:"#1F2937",marginBottom:"1rem"},children:"Modo Desarrollo - Cargar Token JWT"}),(0,e.jsx)("p",{style:{color:"#6B7280",marginBottom:"1.5rem"},children:"Ingresa el token JWT decodificado (JSON) que normalmente recibiría desde el host:"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("textarea",{value:i,onChange:e=>{const o=e.target.value;s(o),l||d(!0)},placeholder:"Pegue aquí el token JWT en formato JSON",style:{width:"100%",height:"10rem",padding:"0.75rem",border:"1px solid "+(l?"#D1D5DB":"#F87171"),borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"}}),!l&&(0,e.jsx)("p",{style:{color:"#EF4444",fontSize:"0.875rem",marginTop:"0.5rem"},children:"El JSON no es válido. Por favor verifica la sintaxis."})]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",flexWrap:"wrap"},children:[(0,e.jsx)(h,{label:"Cargar Token",variant:"primary",size:"small",onClick:()=>{try{JSON.parse(i),d(!0),r(i)}catch(e){d(!1)}},disabled:!i.trim()}),(0,e.jsx)(h,{label:"Limpiar",size:"small",variant:"text",onClick:()=>s("")}),(0,e.jsx)(h,{label:"Limpiar Storage",variant:"primary",size:"small",onClick:()=>{n(),s(""),alert("SessionStorage limpiado correctamente")}}),(0,e.jsx)(h,{label:"Cancelar",variant:"secondary",size:"small",onClick:t})]})]})},f=({onClick:o})=>{const[r,t]=n().useState(!1),a={position:"fixed",bottom:"1.5rem",right:"1.5rem",background:"linear-gradient(to bottom right, #3B82F6, #1E40AF)",color:"white",padding:"1rem",borderRadius:"9999px",boxShadow:r?"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)":"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",transition:"all 0.3s",zIndex:50,transform:r?"scale(1.1)":"scale(1)",border:"none",cursor:"pointer"},i={position:"absolute",bottom:"100%",right:0,marginBottom:"0.75rem",padding:"0.25rem 0.75rem",fontSize:"0.75rem",color:"white",backgroundColor:"rgba(17, 24, 39, 0.9)",borderRadius:"0.5rem",opacity:r?1:0,transition:"opacity 0.2s",whiteSpace:"nowrap",backdropFilter:"blur(4px)",pointerEvents:"none"};return(0,e.jsxs)("button",{onClick:o,style:a,title:"Recargar Token",onMouseEnter:()=>t(!0),onMouseLeave:()=>t(!1),children:[(0,e.jsx)("svg",{style:{width:"1.25rem",height:"1.25rem"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})}),(0,e.jsx)("span",{style:i,children:"Recargar Token"})]})},v=({children:r,defaultDevRoles:t=[]})=>{const[n,a]=(0,o.useState)(""),[i,s]=(0,o.useState)(!1),[l,d]=(0,o.useState)(!1),[c,m]=(0,o.useState)(!0),u="dev"===process.env.REACT_APP_ENVIRONMENT&&!n;(0,o.useEffect)(()=>{const e=p.tokenStorage.get();e?(a(e),d(!1)):u&&d(!0)},[u]);const g=e=>{console.log("🔄 DevWrapper: Nuevo token generado",{token:e.substring(0,50)+"..."}),a(e),p.tokenStorage.save(e),console.log("💾 DevWrapper: Token guardado en storage"),s(!1),d(!1)},h=()=>{p.tokenStorage.clear(),a(""),d(u)};return l?(0,e.jsx)("div",{style:{minHeight:"100vh",backgroundColor:"#F9FAFB",display:"flex",alignItems:"center",justifyContent:"center",padding:"1rem"},children:(0,e.jsx)(x,{onSubmit:g,onCancel:()=>d(!1),onClearStorage:h,currentToken:n,defaultDevRoles:t})}):(0,e.jsxs)("div",{style:{minHeight:"100vh",backgroundColor:"#F9FAFB"},children:[i&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:50},children:(0,e.jsxs)("div",{style:{backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",maxWidth:"42rem",width:"100%",margin:"0 1rem",maxHeight:"90vh",overflowY:"auto"},children:[(0,e.jsxs)("div",{style:{display:"flex",borderBottom:"1px solid #E5E7EB"},children:[(0,e.jsx)("button",{onClick:()=>m(!0),style:{flex:1,padding:"0.75rem 1rem",fontSize:"0.875rem",fontWeight:500,backgroundColor:c?"#EFF6FF":"#F3F4F6",color:c?"#1E3A8A":"#4B5563",border:"none",cursor:"pointer"},children:"Generar Token"}),(0,e.jsx)("button",{onClick:()=>m(!1),style:{flex:1,padding:"0.75rem 1rem",fontSize:"0.875rem",fontWeight:500,backgroundColor:c?"#F3F4F6":"#EFF6FF",color:c?"#4B5563":"#1E3A8A",border:"none",cursor:"pointer"},children:"Input Manual"})]}),(0,e.jsx)("div",{style:{padding:0},children:c?(0,e.jsx)(x,{onSubmit:g,onCancel:()=>s(!1),onClearStorage:h,currentToken:n,defaultDevRoles:t}):(0,e.jsx)("div",{style:{padding:"1.5rem"},children:(0,e.jsx)(y,{onSubmit:g,onCancel:()=>s(!1),onClearStorage:h,currentToken:n})})})]})}),(0,e.jsx)(f,{onClick:()=>{s(!i)}}),(0,e.jsx)(p.RemoteWrapper,{token:n,children:r})]})},k=()=>{const e=(0,o.useMemo)(()=>({react:{singleton:!0,eager:!1},"react-dom":{singleton:!0,eager:!1},"aurora-web":{singleton:!0,eager:!1},"react-i18next":{singleton:!0,eager:!1},i18next:{singleton:!0,eager:!1}}),[]);return{sharedDependencies:e,getWebpackConfig:(o,r)=>({name:o,filename:"remoteEntry.js",exposes:r,shared:e})}};var b=r(226)})(),module.exports=t})();
|
|
2
|
+
(()=>{var e={20:(e,o,r)=>{"use strict";var t=r(953),n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function d(e,o,r){var t,a={},d=null,c=null;for(t in void 0!==r&&(d=""+r),void 0!==o.key&&(d=""+o.key),void 0!==o.ref&&(c=o.ref),o)i.call(o,t)&&!l.hasOwnProperty(t)&&(a[t]=o[t]);if(e&&e.defaultProps)for(t in o=e.defaultProps)void 0===a[t]&&(a[t]=o[t]);return{$$typeof:n,type:e,key:d,ref:c,props:a,_owner:s.current}}o.Fragment=a,o.jsx=d,o.jsxs=d},60:(e,o,r)=>{var t={"./moduleUtils":226,"./moduleUtils.ts":226,"./tokenUtils":433,"./tokenUtils.ts":433};function n(e){return Promise.resolve().then(()=>{if(!r.o(t,e)){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}return r(t[e])})}n.keys=()=>Object.keys(t),n.id=60,e.exports=n},87:(e,o,r)=>{(()=>{var o={20:(e,o,r)=>{"use strict";var t=r(953),n=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};o.Fragment=a,o.jsx=function(e,o,r){var t,a={},d=null,c=null;for(t in void 0!==r&&(d=""+r),void 0!==o.key&&(d=""+o.key),void 0!==o.ref&&(c=o.ref),o)i.call(o,t)&&!l.hasOwnProperty(t)&&(a[t]=o[t]);if(e&&e.defaultProps)for(t in o=e.defaultProps)void 0===a[t]&&(a[t]=o[t]);return{$$typeof:n,type:e,key:d,ref:c,props:a,_owner:s.current}}},60:(e,o,r)=>{var t={"./moduleUtils":226,"./moduleUtils.ts":226,"./tokenUtils":433,"./tokenUtils.ts":433};function n(e){return Promise.resolve().then(()=>{if(!r.o(t,e)){var o=new Error("Cannot find module '"+e+"'");throw o.code="MODULE_NOT_FOUND",o}return r(t[e])})}n.keys=()=>Object.keys(t),n.id=60,e.exports=n},226:(e,o,r)=>{"use strict";r.r(o),r.d(o,{createRemoteComponentLoader:()=>s,getRemoteEnvironment:()=>l,isRemoteAvailable:()=>i,loadRemoteModule:()=>a});var t=r(953),n=r.n(t);const a=async(e,o)=>{try{return await r(60)(`${e}/${o}`)}catch(r){throw console.error(`Failed to load remote module ${e}/${o}:`,r),r}},i=async e=>{try{const o=window[e];return"function"==typeof o?.get}catch(e){return!1}},s=(e,o,r)=>n().lazy(async()=>{try{return await a(e,o)}catch(t){return console.error(`Remote component loading failed: ${e}/${o}`,t),r?{default:r}:{default:()=>n().createElement("div",{style:{padding:"20px",color:"red"}},`Failed to load remote component: ${e}/${o}`)}}}),l=()=>({isDevelopment:!1,apiBaseUrl:process.env.REACT_APP_API_URL||"",frontUrl:process.env.REACT_APP_FRONT_URL||""})},433:(e,o,r)=>{"use strict";r.r(o),r.d(o,{decodeToken:()=>t,extractPermissions:()=>a,isTokenExpired:()=>n,tokenStorage:()=>i});const t=e=>{try{if(!e)return null;const o=e.split(".");if(3!==o.length)return null;const r=o[1],t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return JSON.parse(n)}catch(e){return console.error("Error decoding token:",e),null}},n=e=>{const o=t(e);if(!o||!o.exp)return!0;const r=Math.floor(Date.now()/1e3);return o.exp<r},a=e=>{if(!e)return[];const o=["permissions","roles","authorities","scope"];for(const r of o){const o=e[r];if(Array.isArray(o))return o;if("string"==typeof o)return o.split(" ").filter(Boolean)}return[]},i={key:"bo-remote-token",save:e=>{try{sessionStorage.setItem(i.key,e)}catch(e){console.error("Error saving token:",e)}},get:()=>{try{return sessionStorage.getItem(i.key)}catch(e){return console.error("Error getting token:",e),null}},remove:()=>{try{sessionStorage.removeItem(i.key)}catch(e){console.error("Error removing token:",e)}},clear:()=>{try{sessionStorage.clear()}catch(e){console.error("Error clearing storage:",e)}}}},848:(e,o,r)=>{"use strict";e.exports=r(20)},953:e=>{"use strict";e.exports=r(953)}},t={};function n(e){var r=t[e];if(void 0!==r)return r.exports;var a=t[e]={exports:{}};return o[e](a,a.exports,n),a.exports}n.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return n.d(o,{a:o}),o},n.d=(e,o)=>{for(var r in o)n.o(o,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:o[r]})},n.e=()=>Promise.resolve(),n.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};(()=>{"use strict";n.r(a),n.d(a,{RemoteAuthProvider:()=>l,RemoteWrapper:()=>m,Secured:()=>c,createRemoteComponentLoader:()=>p.createRemoteComponentLoader,decodeToken:()=>r.decodeToken,extractPermissions:()=>r.extractPermissions,getRemoteEnvironment:()=>p.getRemoteEnvironment,isRemoteAvailable:()=>p.isRemoteAvailable,isTokenExpired:()=>r.isTokenExpired,loadRemoteModule:()=>p.loadRemoteModule,tokenStorage:()=>r.tokenStorage,useRemoteAuth:()=>d,useRemoteConfig:()=>u});var e=n(848),o=n(953),r=n(433);const t={token:null,isAuthenticated:!1,permissions:[],user:void 0},i=(e,o)=>{switch(o.type){case"SET_TOKEN":const n=(0,r.decodeToken)(o.payload),a=n?(0,r.extractPermissions)(n):[];return{...e,token:o.payload,isAuthenticated:!(0,r.isTokenExpired)(o.payload),permissions:a,user:n?{id:n.sub||"",email:n.email||"",name:n.name||n.email||""}:void 0};case"CLEAR_AUTH":return{...t};case"SET_USER_INFO":return{...e,user:{id:o.payload.sub||"",email:o.payload.email||"",name:o.payload.name||o.payload.email||""}};default:return e}},s=(0,o.createContext)(void 0),l=({children:n,initialToken:a})=>{const[l,d]=(0,o.useReducer)(i,t);(0,o.useEffect)(()=>{if(console.log("🔍 RemoteAuthContext: useEffect triggered",{initialToken:a?a.substring(0,30)+"...":"No initialToken"}),a)console.log("✅ RemoteAuthContext: Using initialToken from prop"),(0,r.isTokenExpired)(a)?(console.log("🔴 RemoteAuthContext: Provided token is expired, clearing auth"),r.tokenStorage.remove(),d({type:"CLEAR_AUTH"})):(console.log("🟢 RemoteAuthContext: Token is valid, dispatching SET_TOKEN"),d({type:"SET_TOKEN",payload:a}),r.tokenStorage.save(a));else{console.log("⚪ RemoteAuthContext: No initialToken, checking stored token");const e=r.tokenStorage.get();e&&!(0,r.isTokenExpired)(e)?(console.log("💾 RemoteAuthContext: Using stored token"),d({type:"SET_TOKEN",payload:e})):e&&(console.log("🗑️ RemoteAuthContext: Stored token expired, clearing"),r.tokenStorage.remove(),d({type:"CLEAR_AUTH"}))}},[a]);const c={state:l,setToken:e=>{e&&(r.tokenStorage.save(e),d({type:"SET_TOKEN",payload:e}))},clearAuth:()=>{r.tokenStorage.remove(),d({type:"CLEAR_AUTH"})},hasPermission:e=>!!l.isAuthenticated&&l.permissions.includes(e)};return(0,e.jsx)(s.Provider,{value:c,children:n})},d=()=>{const e=(0,o.useContext)(s);if(void 0===e)throw new Error("useRemoteAuth must be used within a RemoteAuthProvider");return e},c=({children:o,permission:r,fallback:t=null})=>{const{hasPermission:n,state:a}=d();return a.isAuthenticated&&n(r)?(0,e.jsx)(e.Fragment,{children:o}):(0,e.jsx)(e.Fragment,{children:t})},m=({children:o,token:r,apiBaseUrl:t,module:n})=>(0,e.jsx)(l,{initialToken:r,children:(0,e.jsx)("div",{"data-remote-module":n,"data-api-base":t,children:o})}),u=()=>{const e=(0,o.useMemo)(()=>({react:{singleton:!0,eager:!1},"react-dom":{singleton:!0,eager:!1},"aurora-web":{singleton:!0,eager:!1},"react-i18next":{singleton:!0,eager:!1},i18next:{singleton:!0,eager:!1}}),[]);return{sharedDependencies:e,getWebpackConfig:(o,r)=>({name:o,filename:"remoteEntry.js",exposes:r,shared:e})}};var p=n(226)})(),e.exports=a})()},226:(e,o,r)=>{"use strict";r.r(o),r.d(o,{createRemoteComponentLoader:()=>s,getRemoteEnvironment:()=>l,isRemoteAvailable:()=>i,loadRemoteModule:()=>a});var t=r(953),n=r.n(t);const a=async(e,o)=>{try{return await r(60)(`${e}/${o}`)}catch(r){throw console.error(`Failed to load remote module ${e}/${o}:`,r),r}},i=async e=>{try{const o=window[e];return"function"==typeof o?.get}catch(e){return!1}},s=(e,o,r)=>n().lazy(async()=>{try{return await a(e,o)}catch(t){return console.error(`Remote component loading failed: ${e}/${o}`,t),r?{default:r}:{default:()=>n().createElement("div",{style:{padding:"20px",color:"red"}},`Failed to load remote component: ${e}/${o}`)}}}),l=()=>({isDevelopment:!1,apiBaseUrl:process.env.REACT_APP_API_URL||"",frontUrl:process.env.REACT_APP_FRONT_URL||""})},433:(e,o,r)=>{"use strict";r.r(o),r.d(o,{decodeToken:()=>t,extractPermissions:()=>a,isTokenExpired:()=>n,tokenStorage:()=>i});const t=e=>{try{if(!e)return null;const o=e.split(".");if(3!==o.length)return null;const r=o[1],t=r+"=".repeat((4-r.length%4)%4),n=atob(t);return JSON.parse(n)}catch(e){return console.error("Error decoding token:",e),null}},n=e=>{const o=t(e);if(!o||!o.exp)return!0;const r=Math.floor(Date.now()/1e3);return o.exp<r},a=e=>{if(!e)return[];const o=["permissions","roles","authorities","scope"];for(const r of o){const o=e[r];if(Array.isArray(o))return o;if("string"==typeof o)return o.split(" ").filter(Boolean)}return[]},i={key:"bo-remote-token",save:e=>{try{sessionStorage.setItem(i.key,e)}catch(e){console.error("Error saving token:",e)}},get:()=>{try{return sessionStorage.getItem(i.key)}catch(e){return console.error("Error getting token:",e),null}},remove:()=>{try{sessionStorage.removeItem(i.key)}catch(e){console.error("Error removing token:",e)}},clear:()=>{try{sessionStorage.clear()}catch(e){console.error("Error clearing storage:",e)}}}},848:(e,o,r)=>{"use strict";e.exports=r(20)},953:e=>{"use strict";e.exports=require("react")}},o={};function r(t){var n=o[t];if(void 0!==n)return n.exports;var a=o[t]={exports:{}};return e[t](a,a.exports,r),a.exports}r.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return r.d(o,{a:o}),o},r.d=(e,o)=>{for(var t in o)r.o(o,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:o[t]})},r.e=()=>Promise.resolve(),r.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var t={};(()=>{"use strict";r.r(t),r.d(t,{DevWrapper:()=>v,RemoteAuthProvider:()=>d,RemoteWrapper:()=>u,Secured:()=>m,createRemoteComponentLoader:()=>b.createRemoteComponentLoader,decodeToken:()=>a.decodeToken,extractPermissions:()=>a.extractPermissions,getRemoteEnvironment:()=>b.getRemoteEnvironment,isRemoteAvailable:()=>b.isRemoteAvailable,isTokenExpired:()=>a.isTokenExpired,loadRemoteModule:()=>b.loadRemoteModule,tokenStorage:()=>a.tokenStorage,useRemoteAuth:()=>c,useRemoteConfig:()=>k});var e=r(848),o=r(953),n=r.n(o),a=r(433);const i={token:null,isAuthenticated:!1,permissions:[],user:void 0},s=(e,o)=>{switch(o.type){case"SET_TOKEN":const r=(0,a.decodeToken)(o.payload),t=r?(0,a.extractPermissions)(r):[];return{...e,token:o.payload,isAuthenticated:!(0,a.isTokenExpired)(o.payload),permissions:t,user:r?{id:r.sub||"",email:r.email||"",name:r.name||r.email||""}:void 0};case"CLEAR_AUTH":return{...i};case"SET_USER_INFO":return{...e,user:{id:o.payload.sub||"",email:o.payload.email||"",name:o.payload.name||o.payload.email||""}};default:return e}},l=(0,o.createContext)(void 0),d=({children:r,initialToken:t})=>{const[n,d]=(0,o.useReducer)(s,i),c="dev"===process.env.REACT_APP_ENVIRONMENT?console.log:()=>{};(0,o.useEffect)(()=>{if(c("🔍 RemoteAuthContext: useEffect triggered",{initialToken:t?t.substring(0,30)+"...":"No initialToken"}),t)c("✅ RemoteAuthContext: Using initialToken from prop"),(0,a.isTokenExpired)(t)?(c("🔴 RemoteAuthContext: Provided token is expired, clearing auth"),a.tokenStorage.remove(),d({type:"CLEAR_AUTH"})):(c("🟢 RemoteAuthContext: Token is valid, dispatching SET_TOKEN"),d({type:"SET_TOKEN",payload:t}),a.tokenStorage.save(t));else{c("⚪ RemoteAuthContext: No initialToken, checking stored token");const e=a.tokenStorage.get();e&&!(0,a.isTokenExpired)(e)?(c("💾 RemoteAuthContext: Using stored token"),d({type:"SET_TOKEN",payload:e})):e&&(c("🗑️ RemoteAuthContext: Stored token expired, clearing"),a.tokenStorage.remove(),d({type:"CLEAR_AUTH"}))}},[t]);const m={state:n,setToken:e=>{e&&(a.tokenStorage.save(e),d({type:"SET_TOKEN",payload:e}))},clearAuth:()=>{a.tokenStorage.remove(),d({type:"CLEAR_AUTH"})},hasPermission:e=>!!n.isAuthenticated&&n.permissions.includes(e)};return(0,e.jsx)(l.Provider,{value:m,children:r})},c=()=>{const e=(0,o.useContext)(l);if(void 0===e)throw new Error("useRemoteAuth must be used within a RemoteAuthProvider");return e},m=({children:o,permission:r,fallback:t=null})=>{const{hasPermission:n,state:a}=c();return a.isAuthenticated&&n(r)?(0,e.jsx)(e.Fragment,{children:o}):(0,e.jsx)(e.Fragment,{children:t})},u=({children:o,token:r})=>(0,e.jsx)(d,{initialToken:r,children:(0,e.jsx)("div",{children:o})});var p=r(87);const g=({children:o,className:r="",style:t})=>{const n={backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",border:"1px solid #E5E7EB",...t};return(0,e.jsx)("div",{style:n,className:r,children:o})},h=({label:o,onClick:r,disabled:t=!1,variant:n="primary",size:a="medium",className:i="",type:s="button",style:l})=>{const d={borderRadius:"0.5rem",fontWeight:500,transition:"all 0.2s",outline:"none",cursor:t?"not-allowed":"pointer",opacity:t?.5:1,border:"none"};return(0,e.jsx)("button",{type:s,onClick:r,disabled:t,style:{...d,...{primary:{background:"linear-gradient(to bottom right, #3B82F6, #1E40AF)",color:"white",boxShadow:"0 1px 2px 0 rgb(0 0 0 / 0.05)"},secondary:{backgroundColor:"#F3F4F6",color:"#1F2937",border:"1px solid #D1D5DB"},text:{backgroundColor:"transparent",color:"#2563EB"}}[n],...{small:{padding:"0.5rem 1rem",fontSize:"0.875rem"},medium:{padding:"0.625rem 1.25rem",fontSize:"1rem"},large:{padding:"0.75rem 1.5rem",fontSize:"1.125rem"}}[a],...l},className:i,children:o})},x=({onSubmit:r,onCancel:t,onClearStorage:n,defaultDevRoles:a=[],currentToken:i=""})=>{const[s,l]=(0,o.useState)(!1),[d,c]=(0,o.useState)(""),[m,u]=(0,o.useState)({user:"usuario@bdsol.com.ar",roles:a,channel:"mf-testing",sessionId:crypto.randomUUID()}),[p,x]=(0,o.useState)(a.join("\n")),y=(e,o)=>{u(r=>({...r,[e]:o}))};return(0,e.jsx)("div",{style:{padding:"1.5rem",width:"100%",overflowY:"auto"},children:(0,e.jsx)(g,{style:{padding:"1.5rem"},children:(0,e.jsxs)(e.Fragment,{children:[(0,e.jsx)("h2",{style:{fontSize:"1.5rem",fontWeight:"bold",color:"#1F2937",marginBottom:"1rem"},children:"🔧 Generador de Tokens (Desarrollo)"}),(0,e.jsx)("p",{style:{color:"#6B7280",marginBottom:"1.5rem"},children:"Genera un token JWT para desarrollo usando el BFF. Solo disponible cuando ENVIRONMENT=dev."}),d&&(0,e.jsx)("div",{style:{marginBottom:"1rem",padding:"0.75rem",backgroundColor:"#FEE2E2",border:"1px solid #F87171",color:"#B91C1C",borderRadius:"0.25rem"},children:d}),(0,e.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Email del usuario"}),(0,e.jsx)("input",{type:"email",value:m.user,onChange:e=>y("user",e.target.value),style:{width:"100%",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",outline:"none"},placeholder:"usuario@bdsol.com.ar"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Roles (uno por línea)"}),(0,e.jsx)("textarea",{value:p,onChange:e=>x(e.target.value),style:{width:"100%",height:"8rem",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"},placeholder:a.join(" ")}),(0,e.jsx)("p",{style:{fontSize:"0.75rem",color:"#9CA3AF",marginTop:"0.25rem"},children:"Roles definidos en src/config/roles.ts"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Channel"}),(0,e.jsx)("input",{type:"text",value:m.channel,onChange:e=>y("channel",e.target.value),style:{width:"100%",padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",outline:"none"},placeholder:"mf-testing"})]}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("label",{style:{display:"block",fontSize:"0.875rem",fontWeight:500,color:"#374151",marginBottom:"0.25rem"},children:"Session ID"}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,e.jsx)("input",{type:"text",value:m.sessionId,onChange:e=>y("sessionId",e.target.value),style:{flex:1,padding:"0.5rem",border:"1px solid #D1D5DB",borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"},placeholder:"uuid-session-id"}),(0,e.jsx)(h,{label:"🎲",variant:"primary",size:"small",onClick:()=>{u(e=>({...e,sessionId:crypto.randomUUID()}))},style:{padding:"0.5rem 0.75rem"}})]})]})]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",flexWrap:"wrap",marginBottom:"1rem"},children:[(0,e.jsx)(h,{label:s?"Generando...":"🚀 Generar Token",variant:"primary",size:"small",onClick:async()=>{l(!0),c(""),n();try{const e=p.split("\n").map(e=>e.trim()).filter(e=>e.length>0),o={...m,roles:e},t=process.env.REACT_APP_API_URL||"http://localhost:3020",n=await fetch(`${t}/template/api/dev/generate-token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!n.ok){const e=await n.json();throw new Error(e.error||"Error al generar token")}const a=await n.json();r(a.token)}catch(e){c(e instanceof Error?e.message:"Error desconocido")}finally{l(!1)}},disabled:s||!m.user.trim()}),(0,e.jsx)(h,{label:"Limpiar almacenamiento",variant:"primary",size:"small",onClick:()=>{n(),alert("SessionStorage limpiado correctamente")}}),(0,e.jsx)(h,{label:"Cancelar",size:"small",variant:"secondary",onClick:t})]}),i&&(0,e.jsxs)("div",{style:{marginTop:"1rem",padding:"1rem",backgroundColor:"#D1FAE5",borderRadius:"0.5rem"},children:[(0,e.jsx)("h3",{style:{fontWeight:600,color:"#047857",marginBottom:"0.5rem"},children:"✅ Token cargado"}),(0,e.jsx)("p",{style:{fontSize:"0.875rem",color:"#059669"},children:"Tienes un token activo en el almacenamiento local."})]})," "]})})})},y=({onSubmit:r,onCancel:t,onClearStorage:n,currentToken:a=""})=>{const[i,s]=(0,o.useState)(a),[l,d]=(0,o.useState)(!0);return(0,e.jsxs)("div",{style:{backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",padding:"1.5rem",width:"100%",maxWidth:"42rem"},children:[(0,e.jsx)("h2",{style:{fontSize:"1.5rem",fontWeight:"bold",color:"#1F2937",marginBottom:"1rem"},children:"Modo Desarrollo - Cargar Token JWT"}),(0,e.jsx)("p",{style:{color:"#6B7280",marginBottom:"1.5rem"},children:"Ingresa el token JWT decodificado (JSON) que normalmente recibiría desde el host:"}),(0,e.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,e.jsx)("textarea",{value:i,onChange:e=>{const o=e.target.value;s(o),l||d(!0)},placeholder:"Pegue aquí el token JWT en formato JSON",style:{width:"100%",height:"10rem",padding:"0.75rem",border:"1px solid "+(l?"#D1D5DB":"#F87171"),borderRadius:"0.5rem",fontFamily:"monospace",fontSize:"0.875rem",outline:"none"}}),!l&&(0,e.jsx)("p",{style:{color:"#EF4444",fontSize:"0.875rem",marginTop:"0.5rem"},children:"El JSON no es válido. Por favor verifica la sintaxis."})]}),(0,e.jsxs)("div",{style:{display:"flex",gap:"0.75rem",flexWrap:"wrap"},children:[(0,e.jsx)(h,{label:"Cargar Token",variant:"primary",size:"small",onClick:()=>{try{JSON.parse(i),d(!0),r(i)}catch(e){d(!1)}},disabled:!i.trim()}),(0,e.jsx)(h,{label:"Limpiar",size:"small",variant:"text",onClick:()=>s("")}),(0,e.jsx)(h,{label:"Limpiar Storage",variant:"primary",size:"small",onClick:()=>{n(),s(""),alert("SessionStorage limpiado correctamente")}}),(0,e.jsx)(h,{label:"Cancelar",variant:"secondary",size:"small",onClick:t})]})]})},f=({onClick:o})=>{const[r,t]=n().useState(!1),a={position:"fixed",bottom:"1.5rem",right:"1.5rem",background:"linear-gradient(to bottom right, #3B82F6, #1E40AF)",color:"white",padding:"1rem",borderRadius:"9999px",boxShadow:r?"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)":"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",transition:"all 0.3s",zIndex:50,transform:r?"scale(1.1)":"scale(1)",border:"none",cursor:"pointer"},i={position:"absolute",bottom:"100%",right:0,marginBottom:"0.75rem",padding:"0.25rem 0.75rem",fontSize:"0.75rem",color:"white",backgroundColor:"rgba(17, 24, 39, 0.9)",borderRadius:"0.5rem",opacity:r?1:0,transition:"opacity 0.2s",whiteSpace:"nowrap",backdropFilter:"blur(4px)",pointerEvents:"none"};return(0,e.jsxs)("button",{onClick:o,style:a,title:"Recargar Token",onMouseEnter:()=>t(!0),onMouseLeave:()=>t(!1),children:[(0,e.jsx)("svg",{style:{width:"1.25rem",height:"1.25rem"},fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,e.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"})}),(0,e.jsx)("span",{style:i,children:"Recargar Token"})]})},v=({children:r,defaultDevRoles:t=[]})=>{const[n,a]=(0,o.useState)(""),[i,s]=(0,o.useState)(!1),[l,d]=(0,o.useState)(!1),[c,m]=(0,o.useState)(!0),u="dev"===process.env.REACT_APP_ENVIRONMENT&&!n;(0,o.useEffect)(()=>{const e=p.tokenStorage.get();e?(a(e),d(!1)):u&&d(!0)},[u]);const g=e=>{console.log("🔄 DevWrapper: Nuevo token generado",{token:e.substring(0,50)+"..."}),a(e),p.tokenStorage.save(e),console.log("💾 DevWrapper: Token guardado en storage"),s(!1),d(!1)},h=()=>{p.tokenStorage.clear(),a(""),d(u)};return l?(0,e.jsx)("div",{style:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",padding:"1rem"},children:(0,e.jsx)(x,{onSubmit:g,onCancel:()=>d(!1),onClearStorage:h,currentToken:n,defaultDevRoles:t})}):(0,e.jsxs)("div",{style:{minHeight:"100vh",backgroundColor:"#F9FAFB"},children:[i&&(0,e.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:50},children:(0,e.jsxs)("div",{style:{backgroundColor:"white",borderRadius:"0.5rem",boxShadow:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",maxWidth:"42rem",width:"100%",margin:"0 1rem",maxHeight:"90vh",overflowY:"auto"},children:[(0,e.jsxs)("div",{style:{display:"flex",borderBottom:"1px solid #E5E7EB"},children:[(0,e.jsx)("button",{onClick:()=>m(!0),style:{flex:1,padding:"0.75rem 1rem",fontSize:"0.875rem",fontWeight:500,backgroundColor:c?"#afd1f3":"#F3F4F6",color:c?"#1E3A8A":"#4B5563",border:"none",cursor:"pointer"},children:"Generar Token"}),(0,e.jsx)("button",{onClick:()=>m(!1),style:{flex:1,padding:"0.75rem 1rem",fontSize:"0.875rem",fontWeight:500,backgroundColor:c?"#F3F4F6":"#afd1f3",color:c?"#4B5563":"#1E3A8A",border:"none",cursor:"pointer"},children:"Input Manual"})]}),(0,e.jsx)("div",{style:{padding:0},children:c?(0,e.jsx)(x,{onSubmit:g,onCancel:()=>s(!1),onClearStorage:h,currentToken:n,defaultDevRoles:t}):(0,e.jsx)("div",{style:{padding:"1.5rem"},children:(0,e.jsx)(y,{onSubmit:g,onCancel:()=>s(!1),onClearStorage:h,currentToken:n})})})]})}),(0,e.jsx)(f,{onClick:()=>{s(!i)}}),(0,e.jsx)(p.RemoteWrapper,{token:n,children:r})]})},k=()=>{const e=(0,o.useMemo)(()=>({react:{singleton:!0,eager:!1},"react-dom":{singleton:!0,eager:!1},"aurora-web":{singleton:!0,eager:!1},"react-i18next":{singleton:!0,eager:!1},i18next:{singleton:!0,eager:!1}}),[]);return{sharedDependencies:e,getWebpackConfig:(o,r)=>({name:o,filename:"remoteEntry.js",exposes:r,shared:e})}};var b=r(226)})(),module.exports=t})();
|
package/package.json
CHANGED
|
@@ -59,7 +59,6 @@ const DevWrapper: React.FC<DevWrapperProps> = ({
|
|
|
59
59
|
<div
|
|
60
60
|
style={{
|
|
61
61
|
minHeight: "100vh",
|
|
62
|
-
backgroundColor: "#F9FAFB",
|
|
63
62
|
display: "flex",
|
|
64
63
|
alignItems: "center",
|
|
65
64
|
justifyContent: "center",
|
|
@@ -114,7 +113,7 @@ const DevWrapper: React.FC<DevWrapperProps> = ({
|
|
|
114
113
|
padding: "0.75rem 1rem",
|
|
115
114
|
fontSize: "0.875rem",
|
|
116
115
|
fontWeight: 500,
|
|
117
|
-
backgroundColor: showGenerator ? "#
|
|
116
|
+
backgroundColor: showGenerator ? "#afd1f3" : "#F3F4F6",
|
|
118
117
|
color: showGenerator ? "#1E3A8A" : "#4B5563",
|
|
119
118
|
border: "none",
|
|
120
119
|
cursor: "pointer",
|
|
@@ -129,7 +128,7 @@ const DevWrapper: React.FC<DevWrapperProps> = ({
|
|
|
129
128
|
padding: "0.75rem 1rem",
|
|
130
129
|
fontSize: "0.875rem",
|
|
131
130
|
fontWeight: 500,
|
|
132
|
-
backgroundColor: !showGenerator ? "#
|
|
131
|
+
backgroundColor: !showGenerator ? "#afd1f3" : "#F3F4F6",
|
|
133
132
|
color: !showGenerator ? "#1E3A8A" : "#4B5563",
|
|
134
133
|
border: "none",
|
|
135
134
|
cursor: "pointer",
|
package/tmpclaude-d092-cwd
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/c/ReposIntive/bdsol/bo/bo-remotes-helper
|