@samanhappy/mcphub 0.12.17 → 1.0.1
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/README.fr.md +7 -5
- package/README.md +24 -4
- package/README.zh.md +25 -4
- package/bin/cli.js +64 -50
- package/dist/cli/call-arguments.js +81 -0
- package/dist/cli/call-arguments.js.map +1 -0
- package/dist/cli/commands/call.js +75 -0
- package/dist/cli/commands/call.js.map +1 -0
- package/dist/cli/commands/config.js +132 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/discover.js +127 -0
- package/dist/cli/commands/discover.js.map +1 -0
- package/dist/cli/commands/export.js +20 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/groups.js +107 -0
- package/dist/cli/commands/groups.js.map +1 -0
- package/dist/cli/commands/install.js +173 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/keys.js +91 -0
- package/dist/cli/commands/keys.js.map +1 -0
- package/dist/cli/commands/login.js +70 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/servers.js +142 -0
- package/dist/cli/commands/servers.js.map +1 -0
- package/dist/cli/commands/tools.js +162 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/context.js +44 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/errors.js +19 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/help.js +157 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/http.js +93 -0
- package/dist/cli/http.js.map +1 -0
- package/dist/cli/main.js +81 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/output.js +47 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parse-args.js +103 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/profile.js +109 -0
- package/dist/cli/profile.js.map +1 -0
- package/dist/cli/prompts.js +56 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/controllers/oauthServerController.js +37 -1
- package/dist/controllers/oauthServerController.js.map +1 -1
- package/dist/dao/ServerDaoDbImpl.js +3 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -1
- package/dist/db/connection.js +48 -4
- package/dist/db/connection.js.map +1 -1
- package/dist/db/entities/Server.js +4 -0
- package/dist/db/entities/Server.js.map +1 -1
- package/dist/db/entities/VectorEmbedding.js +2 -5
- package/dist/db/entities/VectorEmbedding.js.map +1 -1
- package/dist/db/repositories/VectorEmbeddingRepository.js +100 -34
- package/dist/db/repositories/VectorEmbeddingRepository.js.map +1 -1
- package/dist/services/dataService.js +10 -1
- package/dist/services/dataService.js.map +1 -1
- package/dist/services/mcpService.js +47 -10
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/sseService.js +5 -3
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/vectorSearchService.js +16 -3
- package/dist/services/vectorSearchService.js.map +1 -1
- package/dist/utils/migration.js +1 -0
- package/dist/utils/migration.js.map +1 -1
- package/dist/utils/serverConfigPersistence.js +5 -0
- package/dist/utils/serverConfigPersistence.js.map +1 -1
- package/frontend/dist/assets/ActivityPage-DwzGiMh_.js +2 -0
- package/frontend/dist/assets/ActivityPage-DwzGiMh_.js.map +1 -0
- package/frontend/dist/assets/ConfirmDialog-CxlizGia.js +2 -0
- package/frontend/dist/assets/ConfirmDialog-CxlizGia.js.map +1 -0
- package/frontend/dist/assets/Dashboard-BUCJcvk-.js +2 -0
- package/frontend/dist/assets/Dashboard-BUCJcvk-.js.map +1 -0
- package/frontend/dist/assets/DeleteDialog-DRbWonMu.js +2 -0
- package/frontend/dist/assets/DeleteDialog-DRbWonMu.js.map +1 -0
- package/frontend/dist/assets/EndpointCopy-D5NjDdYi.js +2 -0
- package/frontend/dist/assets/EndpointCopy-D5NjDdYi.js.map +1 -0
- package/frontend/dist/assets/GroupsPage-DfLlww4U.js +33 -0
- package/frontend/dist/assets/GroupsPage-DfLlww4U.js.map +1 -0
- package/frontend/dist/assets/LoginPage-DCjqYw_8.js +2 -0
- package/frontend/dist/assets/LoginPage-DCjqYw_8.js.map +1 -0
- package/frontend/dist/assets/LogsPage-CTa8kuDf.js +2 -0
- package/frontend/dist/assets/LogsPage-CTa8kuDf.js.map +1 -0
- package/frontend/dist/assets/MarketPage-C2Rh4WJB.js +3 -0
- package/frontend/dist/assets/MarketPage-C2Rh4WJB.js.map +1 -0
- package/frontend/dist/assets/{Pagination-y-gVO8ms.js → Pagination-BFi-X7qY.js} +2 -2
- package/frontend/dist/assets/{Pagination-y-gVO8ms.js.map → Pagination-BFi-X7qY.js.map} +1 -1
- package/frontend/dist/assets/PromptsPage-Dh3qjX3x.js +2 -0
- package/frontend/dist/assets/PromptsPage-Dh3qjX3x.js.map +1 -0
- package/frontend/dist/assets/ResourcesPage-Bc5ZpCIh.js +2 -0
- package/frontend/dist/assets/ResourcesPage-Bc5ZpCIh.js.map +1 -0
- package/frontend/dist/assets/ServersPage-hgCbCglG.js +37 -0
- package/frontend/dist/assets/ServersPage-hgCbCglG.js.map +1 -0
- package/frontend/dist/assets/SettingsPage-BzNX8mXv.js +12 -0
- package/frontend/dist/assets/SettingsPage-BzNX8mXv.js.map +1 -0
- package/frontend/dist/assets/StatusDot-CQzailBQ.js +2 -0
- package/frontend/dist/assets/StatusDot-CQzailBQ.js.map +1 -0
- package/frontend/dist/assets/{ToggleGroup-HfxdlkGi.js → ToggleGroup-CNBBvo3C.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-HfxdlkGi.js.map → ToggleGroup-CNBBvo3C.js.map} +1 -1
- package/frontend/dist/assets/UsersPage-C33b7LCM.js +2 -0
- package/frontend/dist/assets/UsersPage-C33b7LCM.js.map +1 -0
- package/frontend/dist/assets/{framework-vendor-_OBebcuv.js → framework-vendor-BUhDPOUZ.js} +2 -2
- package/frontend/dist/assets/{framework-vendor-_OBebcuv.js.map → framework-vendor-BUhDPOUZ.js.map} +1 -1
- package/frontend/dist/assets/{i18n-vendor-MQ921plD.js → i18n-vendor-Kbr87Ofu.js} +2 -2
- package/frontend/dist/assets/{i18n-vendor-MQ921plD.js.map → i18n-vendor-Kbr87Ofu.js.map} +1 -1
- package/frontend/dist/assets/icons-vendor-CKgJB3SC.js +292 -0
- package/frontend/dist/assets/icons-vendor-CKgJB3SC.js.map +1 -0
- package/frontend/dist/assets/index-BGiKkKzj.js +3 -0
- package/frontend/dist/assets/index-BGiKkKzj.js.map +1 -0
- package/frontend/dist/assets/index-D0OIBhmN.css +1 -0
- package/frontend/dist/assets/{resourceService-BfCTSBsr.js → resourceService-C6umWRgq.js} +2 -2
- package/frontend/dist/assets/{resourceService-BfCTSBsr.js.map → resourceService-C6umWRgq.js.map} +1 -1
- package/frontend/dist/assets/useServerData-P5In98R4.js +2 -0
- package/frontend/dist/assets/{useServerData-QZqQTYcv.js.map → useServerData-P5In98R4.js.map} +1 -1
- package/frontend/dist/assets/useSettingsData-Cz7vKGLE.js +2 -0
- package/frontend/dist/assets/{useSettingsData-D3VROqS7.js.map → useSettingsData-Cz7vKGLE.js.map} +1 -1
- package/frontend/dist/assets/variableDetection-DsYuiOB_.js +16 -0
- package/frontend/dist/assets/variableDetection-DsYuiOB_.js.map +1 -0
- package/frontend/dist/index.html +5 -5
- package/package.json +2 -1
- package/frontend/dist/assets/ActivityPage-ClgKeihP.js +0 -2
- package/frontend/dist/assets/ActivityPage-ClgKeihP.js.map +0 -1
- package/frontend/dist/assets/Badge-Ck2fhRdl.js +0 -2
- package/frontend/dist/assets/Badge-Ck2fhRdl.js.map +0 -1
- package/frontend/dist/assets/ConfirmDialog-uYjffH4V.js +0 -2
- package/frontend/dist/assets/ConfirmDialog-uYjffH4V.js.map +0 -1
- package/frontend/dist/assets/Dashboard-BIXrLobn.js +0 -2
- package/frontend/dist/assets/Dashboard-BIXrLobn.js.map +0 -1
- package/frontend/dist/assets/DeleteDialog-BAfrV8EB.js +0 -2
- package/frontend/dist/assets/DeleteDialog-BAfrV8EB.js.map +0 -1
- package/frontend/dist/assets/GroupsPage-BjrvyHwu.js +0 -33
- package/frontend/dist/assets/GroupsPage-BjrvyHwu.js.map +0 -1
- package/frontend/dist/assets/LoginPage-BBHt_TfF.js +0 -2
- package/frontend/dist/assets/LoginPage-BBHt_TfF.js.map +0 -1
- package/frontend/dist/assets/LogsPage-D8Znq5NB.js +0 -2
- package/frontend/dist/assets/LogsPage-D8Znq5NB.js.map +0 -1
- package/frontend/dist/assets/MarketPage-haRuzjCw.js +0 -3
- package/frontend/dist/assets/MarketPage-haRuzjCw.js.map +0 -1
- package/frontend/dist/assets/PromptsPage-ByHWPyGe.js +0 -2
- package/frontend/dist/assets/PromptsPage-ByHWPyGe.js.map +0 -1
- package/frontend/dist/assets/ResourcesPage-Bodw5OY9.js +0 -2
- package/frontend/dist/assets/ResourcesPage-Bodw5OY9.js.map +0 -1
- package/frontend/dist/assets/ServersPage-CtS1I4yS.js +0 -37
- package/frontend/dist/assets/ServersPage-CtS1I4yS.js.map +0 -1
- package/frontend/dist/assets/SettingsPage-DxVigf7p.js +0 -12
- package/frontend/dist/assets/SettingsPage-DxVigf7p.js.map +0 -1
- package/frontend/dist/assets/UsersPage-Bipw33cS.js +0 -2
- package/frontend/dist/assets/UsersPage-Bipw33cS.js.map +0 -1
- package/frontend/dist/assets/icons-vendor-B67NtVuR.js +0 -172
- package/frontend/dist/assets/icons-vendor-B67NtVuR.js.map +0 -1
- package/frontend/dist/assets/index-CmnA4an8.js +0 -5
- package/frontend/dist/assets/index-CmnA4an8.js.map +0 -1
- package/frontend/dist/assets/index-DfFHVARX.css +0 -1
- package/frontend/dist/assets/useGroupData-DLhbP6zd.js +0 -2
- package/frontend/dist/assets/useGroupData-DLhbP6zd.js.map +0 -1
- package/frontend/dist/assets/useServerData-QZqQTYcv.js +0 -2
- package/frontend/dist/assets/useSettingsData-D3VROqS7.js +0 -2
- package/frontend/dist/assets/variableDetection-C3Xi21av.js +0 -16
- package/frontend/dist/assets/variableDetection-C3Xi21av.js.map +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as d,j as e}from"./framework-vendor-BUhDPOUZ.js";import{j as v,f as k,h as C,e as P,u as S}from"./index-BGiKkKzj.js";import{u as j}from"./i18n-vendor-Kbr87Ofu.js";import{D as A}from"./DeleteDialog-DRbWonMu.js";import{a as E}from"./StatusDot-CQzailBQ.js";import{R as U,P as z,j as F,X as D,U as R,t as T,T as L}from"./icons-vendor-CKgJB3SC.js";const y=()=>{const{t:a}=j(),[g,t]=d.useState([]),[o,p]=d.useState(!0),[u,n]=d.useState(null),[m,c]=d.useState(0),i=d.useCallback(async()=>{try{p(!0);const r=await v("/users");if(!r.success){n(r.message||a("users.fetchError"));return}r&&r.success&&Array.isArray(r.data)?t(r.data):(console.error("Invalid user data format:",r),t([])),n(null)}catch(r){console.error("Error fetching users:",r),n(r instanceof Error?r.message:"Failed to fetch users"),t([])}finally{p(!1)}},[]),x=d.useCallback(()=>{c(r=>r+1)},[]),f=async r=>{try{const s=await P("/users",r);return x(),s}catch(s){return n(s instanceof Error?s.message:"Failed to create user"),null}},h=async(r,s)=>{try{const b=await C(`/users/${r}`,s);return x(),b||null}catch(b){return n(b instanceof Error?b.message:"Failed to update user"),null}},l=async r=>{try{const s=await k(`/users/${r}`);return s!=null&&s.success?(x(),s):(n((s==null?void 0:s.message)||a("users.deleteError")),s)}catch(s){return n(s instanceof Error?s.message:"Failed to delete user"),!1}};return d.useEffect(()=>{i()},[i,m]),{users:g,loading:o,error:u,setError:n,triggerRefresh:x,createUser:f,updateUser:h,deleteUser:l}},I=({onAdd:a,onCancel:g})=>{const{t}=j(),{createUser:o}=y(),[p,u]=d.useState(null),[n,m]=d.useState(!1),[c,i]=d.useState({username:"",password:"",isAdmin:!1}),x=async h=>{if(h.preventDefault(),u(null),!c.username.trim()){u(t("users.usernameRequired"));return}if(!c.password.trim()){u(t("users.passwordRequired"));return}if(c.password.length<6){u(t("users.passwordTooShort"));return}m(!0);try{const l=await o(c);l!=null&&l.success?a():u((l==null?void 0:l.message)||t("users.createError"))}catch(l){u(l instanceof Error?l.message:t("users.createError"))}finally{m(!1)}},f=h=>{const{name:l,value:r,type:s,checked:b}=h.target;i(w=>({...w,[l]:s==="checkbox"?b:r}))};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx("div",{className:"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-md w-full mx-4 border border-gray-100 dark:border-gray-700",children:e.jsxs("form",{onSubmit:x,children:[e.jsx("h2",{className:"text-xl font-bold text-gray-900 mb-6",children:t("users.addNew")}),p&&e.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md",children:e.jsx("p",{className:"text-sm font-medium",children:p})}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"username",className:"block text-sm font-medium text-gray-700 mb-1",children:[t("users.username")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"text",id:"username",name:"username",value:c.username,onChange:f,placeholder:t("users.usernamePlaceholder"),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200",required:!0,disabled:n})]}),e.jsxs("div",{children:[e.jsxs("label",{htmlFor:"password",className:"block text-sm font-medium text-gray-700 mb-1",children:[t("users.password")," ",e.jsx("span",{className:"text-red-500",children:"*"})]}),e.jsx("input",{type:"password",id:"password",name:"password",value:c.password,onChange:f,placeholder:t("users.passwordPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200",required:!0,disabled:n,minLength:6})]}),e.jsxs("div",{className:"flex items-center pt-2",children:[e.jsx("input",{type:"checkbox",id:"isAdmin",name:"isAdmin",checked:c.isAdmin,onChange:f,className:"h-5 w-5 text-blue-600 focus:ring-blue-500 border-gray-300 rounded transition-colors duration-200",disabled:n}),e.jsx("label",{htmlFor:"isAdmin",className:"ml-3 block text-sm font-medium text-gray-700 cursor-pointer select-none",children:t("users.adminRole")})]})]}),e.jsxs("div",{className:"flex justify-end space-x-2 mt-6",children:[e.jsx("button",{type:"button",onClick:g,className:"hub-btn",disabled:n,children:t("common.cancel")}),e.jsxs("button",{type:"submit",className:"hub-btn primary",disabled:n,children:[n&&e.jsxs("svg",{className:"animate-spin -ml-1 mr-2 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),t(n?"common.creating":"users.create")]})]})]})})})},q=({user:a,onEdit:g,onCancel:t})=>{const{t:o}=j(),{updateUser:p}=y(),[u,n]=d.useState(null),[m,c]=d.useState(!1),[i,x]=d.useState({isAdmin:a.isAdmin,newPassword:"",confirmPassword:""}),f=async l=>{if(l.preventDefault(),n(null),i.newPassword&&i.newPassword!==i.confirmPassword){n(o("users.passwordMismatch"));return}if(i.newPassword&&i.newPassword.length<6){n(o("users.passwordTooShort"));return}c(!0);try{const r={isAdmin:i.isAdmin};i.newPassword&&(r.newPassword=i.newPassword);const s=await p(a.username,r);s!=null&&s.success?g():n((s==null?void 0:s.message)||o("users.updateError"))}catch(r){n(r instanceof Error?r.message:o("users.updateError"))}finally{c(!1)}},h=l=>{const{name:r,value:s,type:b,checked:w}=l.target;x(N=>({...N,[r]:b==="checkbox"?w:s}))};return e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",children:e.jsx("div",{className:"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-md w-full mx-4 border border-gray-100 dark:border-gray-700",children:e.jsxs("form",{onSubmit:f,children:[e.jsxs("h2",{className:"text-xl font-bold text-gray-900 mb-6",children:[o("users.edit")," - ",e.jsx("span",{className:"text-blue-600",children:a.username})]}),u&&e.jsx("div",{className:"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md",children:e.jsx("p",{className:"text-sm font-medium",children:u})}),e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"flex items-center pt-2",children:[e.jsx("input",{type:"checkbox",id:"isAdmin",name:"isAdmin",checked:i.isAdmin,onChange:h,className:"h-5 w-5 text-blue-600 focus:ring-blue-500 border-gray-300 rounded transition-colors duration-200",disabled:m}),e.jsx("label",{htmlFor:"isAdmin",className:"ml-3 block text-sm font-medium text-gray-700 cursor-pointer select-none",children:o("users.adminRole")})]}),e.jsxs("div",{className:"border-t border-gray-100 dark:border-gray-700 pt-4 mt-2",children:[e.jsx("p",{className:"text-xs text-gray-500 uppercase font-semibold tracking-wider mb-3",children:o("users.changePassword")}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("label",{htmlFor:"newPassword",className:"block text-sm font-medium text-gray-700 mb-1",children:o("users.newPassword")}),e.jsx("input",{type:"password",id:"newPassword",name:"newPassword",value:i.newPassword,onChange:h,placeholder:o("users.newPasswordPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200",disabled:m,minLength:6})]}),i.newPassword&&e.jsxs("div",{className:"animate-fadeIn",children:[e.jsx("label",{htmlFor:"confirmPassword",className:"block text-sm font-medium text-gray-700 mb-1",children:o("users.confirmPassword")}),e.jsx("input",{type:"password",id:"confirmPassword",name:"confirmPassword",value:i.confirmPassword,onChange:h,placeholder:o("users.confirmPasswordPlaceholder"),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200",disabled:m,minLength:6})]})]})]})]}),e.jsxs("div",{className:"flex justify-end space-x-2 mt-6",children:[e.jsx("button",{type:"button",onClick:t,className:"hub-btn",disabled:m,children:o("common.cancel")}),e.jsxs("button",{type:"submit",className:"hub-btn primary",disabled:m,children:[m&&e.jsxs("svg",{className:"animate-spin -ml-1 mr-2 h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),o(m?"common.updating":"users.update")]})]})]})})})},V=()=>{const{t:a}=j(),{auth:g}=S(),t=g.user,{users:o,loading:p,error:u,setError:n,deleteUser:m,triggerRefresh:c}=y(),[i,x]=d.useState(null),[f,h]=d.useState(!1),[l,r]=d.useState(null);return t!=null&&t.isAdmin?e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-end justify-between gap-4 mb-6",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"hub-h1",children:a("pages.users.title")}),e.jsxs("p",{className:"hub-sub",children:[e.jsx("span",{className:"hub-num",children:o.length})," ",a("nav.users").toLowerCase()]})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("button",{className:"hub-btn",onClick:()=>c(),"aria-label":a("common.refresh"),children:[e.jsx(U,{size:13})," ",a("common.refresh")]}),e.jsxs("button",{className:"hub-btn primary",onClick:()=>h(!0),children:[e.jsx(z,{size:13})," ",a("users.add")]})]})]}),u&&e.jsxs("div",{className:"hub-card flex items-center justify-between gap-3 mb-4",style:{padding:"10px 14px",borderColor:"oklch(0.85 0.1 25)",background:"oklch(0.97 0.03 25)",color:"oklch(0.4 0.18 25)"},children:[e.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[e.jsx(F,{size:14,className:"flex-shrink-0"}),e.jsx("span",{className:"truncate text-[13px]",children:u})]}),e.jsx("button",{className:"hub-icon-btn sm",onClick:()=>n(null),children:e.jsx(D,{size:13})})]}),p?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:a("app.loading")}):o.length===0?e.jsx("div",{className:"hub-card p-10 text-center",style:{color:"var(--hub-ink-3)"},children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"grid place-items-center",style:{width:40,height:40,borderRadius:10,border:"1px solid var(--hub-line)",background:"var(--hub-bg-2)"},children:e.jsx(R,{size:18})}),e.jsx("div",{className:"font-medium",style:{color:"var(--hub-ink-2)",fontSize:13},children:a("users.noUsers")}),e.jsx("button",{onClick:()=>h(!0),className:"hub-btn ghost sm",style:{color:"var(--hub-accent)"},children:a("users.addFirst")})]})}):e.jsxs("div",{className:"hub-card overflow-hidden",children:[e.jsxs("div",{className:"hub-row head hub-mono",style:{gridTemplateColumns:"1.6fr 100px 100px"},children:[e.jsx("div",{children:a("users.username")}),e.jsx("div",{children:a("users.role")}),e.jsx("div",{className:"text-right",children:a("users.actions")})]}),o.map(s=>{const b=(t==null?void 0:t.username)===s.username;return e.jsxs("div",{className:"hub-row hover",style:{gridTemplateColumns:"1.6fr 100px 100px"},children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"grid place-items-center flex-shrink-0 hub-mono",style:{width:28,height:28,borderRadius:7,background:"var(--hub-bg-2)",border:"1px solid var(--hub-line)",color:"var(--hub-ink-2)",fontWeight:600,fontSize:12},children:s.username.charAt(0).toUpperCase()}),e.jsx("span",{className:"hub-mono truncate",style:{fontSize:13,color:"var(--hub-ink)"},children:s.username}),b&&e.jsx("span",{className:"hub-tag accent",style:{fontSize:10},children:a("users.currentUser")})]}),e.jsx("div",{children:e.jsx(E,{kind:s.isAdmin?"ok":"muted",label:s.isAdmin?a("users.admin"):a("users.user")})}),e.jsxs("div",{className:"flex justify-end gap-1",children:[e.jsx("button",{onClick:()=>x(s),className:"hub-icon-btn sm",title:a("users.edit"),children:e.jsx(T,{size:13})}),!b&&e.jsx("button",{onClick:()=>r(s.username),className:"hub-icon-btn sm",title:a("users.delete"),style:{color:"var(--hub-err)"},children:e.jsx(L,{size:13})})]})]},s.username)})]}),f&&e.jsx(I,{onAdd:()=>{h(!1),c()},onCancel:()=>h(!1)}),i&&e.jsx(q,{user:i,onEdit:()=>{x(null),c()},onCancel:()=>x(null)}),e.jsx(A,{isOpen:!!l,onClose:()=>r(null),onConfirm:async()=>{if(l){const s=await m(l);s!=null&&s.success||n((s==null?void 0:s.message)||a("users.deleteError")),r(null)}},serverName:l||"",isGroup:!1,isUser:!0})]}):e.jsx("div",{className:"hub-card p-6 text-center",style:{color:"var(--hub-err)"},children:a("users.adminRequired")})};export{V as default};
|
|
2
|
+
//# sourceMappingURL=UsersPage-C33b7LCM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersPage-C33b7LCM.js","sources":["../../src/hooks/useUserData.ts","../../src/components/AddUserForm.tsx","../../src/components/EditUserForm.tsx","../../src/pages/UsersPage.tsx"],"sourcesContent":["import { useState, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { User, ApiResponse, UserFormData, UserUpdateData } from '@/types';\nimport { apiDelete, apiGet, apiPost, apiPut } from '../utils/fetchInterceptor';\n\nexport const useUserData = () => {\n const { t } = useTranslation();\n const [users, setUsers] = useState<User[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const [refreshKey, setRefreshKey] = useState(0);\n\n const fetchUsers = useCallback(async () => {\n try {\n setLoading(true);\n const data: ApiResponse<User[]> = await apiGet('/users');\n if (!data.success) {\n setError(data.message || t('users.fetchError'));\n return;\n }\n\n if (data && data.success && Array.isArray(data.data)) {\n setUsers(data.data);\n } else {\n console.error('Invalid user data format:', data);\n setUsers([]);\n }\n\n setError(null);\n } catch (err) {\n console.error('Error fetching users:', err);\n setError(err instanceof Error ? err.message : 'Failed to fetch users');\n setUsers([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n // Trigger a refresh of the users data\n const triggerRefresh = useCallback(() => {\n setRefreshKey((prev) => prev + 1);\n }, []);\n\n // Create a new user\n const createUser = async (userData: UserFormData) => {\n try {\n const result: ApiResponse<User> = await apiPost('/users', userData);\n triggerRefresh();\n return result;\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to create user');\n return null;\n }\n };\n\n // Update an existing user\n const updateUser = async (username: string, data: UserUpdateData) => {\n try {\n const result: ApiResponse<User> = await apiPut(`/users/${username}`, data);\n triggerRefresh();\n return result || null;\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to update user');\n return null;\n }\n };\n\n // Delete a user\n const deleteUser = async (username: string) => {\n try {\n const result = await apiDelete(`/users/${username}`);\n if (!result?.success) {\n setError(result?.message || t('users.deleteError'));\n return result;\n }\n\n triggerRefresh();\n return result;\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to delete user');\n return false;\n }\n };\n\n // Fetch users when the component mounts or refreshKey changes\n useEffect(() => {\n fetchUsers();\n }, [fetchUsers, refreshKey]);\n\n return {\n users,\n loading,\n error,\n setError,\n triggerRefresh,\n createUser,\n updateUser,\n deleteUser,\n };\n};\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useUserData } from '@/hooks/useUserData';\nimport { UserFormData } from '@/types';\n\ninterface AddUserFormProps {\n onAdd: () => void;\n onCancel: () => void;\n}\n\nconst AddUserForm = ({ onAdd, onCancel }: AddUserFormProps) => {\n const { t } = useTranslation();\n const { createUser } = useUserData();\n const [error, setError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const [formData, setFormData] = useState<UserFormData>({\n username: '',\n password: '',\n isAdmin: false,\n });\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n if (!formData.username.trim()) {\n setError(t('users.usernameRequired'));\n return;\n }\n\n if (!formData.password.trim()) {\n setError(t('users.passwordRequired'));\n return;\n }\n\n if (formData.password.length < 6) {\n setError(t('users.passwordTooShort'));\n return;\n }\n\n setIsSubmitting(true);\n\n try {\n const result = await createUser(formData);\n if (result?.success) {\n onAdd();\n } else {\n setError(result?.message || t('users.createError'));\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : t('users.createError'));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value, type, checked } = e.target;\n setFormData((prev) => ({\n ...prev,\n [name]: type === 'checkbox' ? checked : value,\n }));\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4\">\n <div className=\"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-md w-full mx-4 border border-gray-100 dark:border-gray-700\">\n <form onSubmit={handleSubmit}>\n <h2 className=\"text-xl font-bold text-gray-900 mb-6\">{t('users.addNew')}</h2>\n\n {error && (\n <div className=\"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md\">\n <p className=\"text-sm font-medium\">{error}</p>\n </div>\n )}\n\n <div className=\"space-y-5\">\n <div>\n <label htmlFor=\"username\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n {t('users.username')} <span className=\"text-red-500\">*</span>\n </label>\n <input\n type=\"text\"\n id=\"username\"\n name=\"username\"\n value={formData.username}\n onChange={handleInputChange}\n placeholder={t('users.usernamePlaceholder')}\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200\"\n required\n disabled={isSubmitting}\n />\n </div>\n\n <div>\n <label htmlFor=\"password\" className=\"block text-sm font-medium text-gray-700 mb-1\">\n {t('users.password')} <span className=\"text-red-500\">*</span>\n </label>\n <input\n type=\"password\"\n id=\"password\"\n name=\"password\"\n value={formData.password}\n onChange={handleInputChange}\n placeholder={t('users.passwordPlaceholder')}\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200\"\n required\n disabled={isSubmitting}\n minLength={6}\n />\n </div>\n\n <div className=\"flex items-center pt-2\">\n <input\n type=\"checkbox\"\n id=\"isAdmin\"\n name=\"isAdmin\"\n checked={formData.isAdmin}\n onChange={handleInputChange}\n className=\"h-5 w-5 text-blue-600 focus:ring-blue-500 border-gray-300 rounded transition-colors duration-200\"\n disabled={isSubmitting}\n />\n <label\n htmlFor=\"isAdmin\"\n className=\"ml-3 block text-sm font-medium text-gray-700 cursor-pointer select-none\"\n >\n {t('users.adminRole')}\n </label>\n </div>\n </div>\n\n <div className=\"flex justify-end space-x-2 mt-6\">\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"hub-btn\"\n disabled={isSubmitting}\n >\n {t('common.cancel')}\n </button>\n <button\n type=\"submit\"\n className=\"hub-btn primary\"\n disabled={isSubmitting}\n >\n {isSubmitting && (\n <svg\n className=\"animate-spin -ml-1 mr-2 h-4 w-4 text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n {isSubmitting ? t('common.creating') : t('users.create')}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\nexport default AddUserForm;\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useUserData } from '@/hooks/useUserData';\nimport { User, UserUpdateData } from '@/types';\n\ninterface EditUserFormProps {\n user: User;\n onEdit: () => void;\n onCancel: () => void;\n}\n\nconst EditUserForm = ({ user, onEdit, onCancel }: EditUserFormProps) => {\n const { t } = useTranslation();\n const { updateUser } = useUserData();\n const [error, setError] = useState<string | null>(null);\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const [formData, setFormData] = useState({\n isAdmin: user.isAdmin,\n newPassword: '',\n confirmPassword: '',\n });\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n setError(null);\n\n // Validate passwords match if changing password\n if (formData.newPassword && formData.newPassword !== formData.confirmPassword) {\n setError(t('users.passwordMismatch'));\n return;\n }\n\n if (formData.newPassword && formData.newPassword.length < 6) {\n setError(t('users.passwordTooShort'));\n return;\n }\n\n setIsSubmitting(true);\n\n try {\n const updateData: UserUpdateData = {\n isAdmin: formData.isAdmin,\n };\n\n if (formData.newPassword) {\n updateData.newPassword = formData.newPassword;\n }\n\n const result = await updateUser(user.username, updateData);\n if (result?.success) {\n onEdit();\n } else {\n setError(result?.message || t('users.updateError'));\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : t('users.updateError'));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value, type, checked } = e.target;\n setFormData((prev) => ({\n ...prev,\n [name]: type === 'checkbox' ? checked : value,\n }));\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4\">\n <div className=\"bg-white dark:bg-gray-800 p-8 rounded-xl shadow-2xl max-w-md w-full mx-4 border border-gray-100 dark:border-gray-700\">\n <form onSubmit={handleSubmit}>\n <h2 className=\"text-xl font-bold text-gray-900 mb-6\">\n {t('users.edit')} - <span className=\"text-blue-600\">{user.username}</span>\n </h2>\n\n {error && (\n <div className=\"bg-red-50 border-l-4 border-red-500 text-red-700 p-4 mb-6 rounded-md\">\n <p className=\"text-sm font-medium\">{error}</p>\n </div>\n )}\n\n <div className=\"space-y-5\">\n <div className=\"flex items-center pt-2\">\n <input\n type=\"checkbox\"\n id=\"isAdmin\"\n name=\"isAdmin\"\n checked={formData.isAdmin}\n onChange={handleInputChange}\n className=\"h-5 w-5 text-blue-600 focus:ring-blue-500 border-gray-300 rounded transition-colors duration-200\"\n disabled={isSubmitting}\n />\n <label\n htmlFor=\"isAdmin\"\n className=\"ml-3 block text-sm font-medium text-gray-700 cursor-pointer select-none\"\n >\n {t('users.adminRole')}\n </label>\n </div>\n\n <div className=\"border-t border-gray-100 dark:border-gray-700 pt-4 mt-2\">\n <p className=\"text-xs text-gray-500 uppercase font-semibold tracking-wider mb-3\">\n {t('users.changePassword')}\n </p>\n\n <div className=\"space-y-4\">\n <div>\n <label\n htmlFor=\"newPassword\"\n className=\"block text-sm font-medium text-gray-700 mb-1\"\n >\n {t('users.newPassword')}\n </label>\n <input\n type=\"password\"\n id=\"newPassword\"\n name=\"newPassword\"\n value={formData.newPassword}\n onChange={handleInputChange}\n placeholder={t('users.newPasswordPlaceholder')}\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200\"\n disabled={isSubmitting}\n minLength={6}\n />\n </div>\n\n {formData.newPassword && (\n <div className=\"animate-fadeIn\">\n <label\n htmlFor=\"confirmPassword\"\n className=\"block text-sm font-medium text-gray-700 mb-1\"\n >\n {t('users.confirmPassword')}\n </label>\n <input\n type=\"password\"\n id=\"confirmPassword\"\n name=\"confirmPassword\"\n value={formData.confirmPassword}\n onChange={handleInputChange}\n placeholder={t('users.confirmPasswordPlaceholder')}\n className=\"w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent form-input transition-all duration-200\"\n disabled={isSubmitting}\n minLength={6}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"flex justify-end space-x-2 mt-6\">\n <button\n type=\"button\"\n onClick={onCancel}\n className=\"hub-btn\"\n disabled={isSubmitting}\n >\n {t('common.cancel')}\n </button>\n <button\n type=\"submit\"\n className=\"hub-btn primary\"\n disabled={isSubmitting}\n >\n {isSubmitting && (\n <svg\n className=\"animate-spin -ml-1 mr-2 h-4 w-4 text-white\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n ></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n )}\n {isSubmitting ? t('common.updating') : t('users.update')}\n </button>\n </div>\n </form>\n </div>\n </div>\n );\n};\n\nexport default EditUserForm;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { User } from '@/types';\nimport { useUserData } from '@/hooks/useUserData';\nimport { useAuth } from '@/contexts/AuthContext';\nimport AddUserForm from '@/components/AddUserForm';\nimport EditUserForm from '@/components/EditUserForm';\nimport { Edit3, Trash2, User as UserIcon, Plus, AlertCircle, X, RefreshCw } from 'lucide-react';\nimport DeleteDialog from '@/components/ui/DeleteDialog';\nimport { StatusDot } from '@/components/ui/StatusDot';\n\nconst UsersPage: React.FC = () => {\n const { t } = useTranslation();\n const { auth } = useAuth();\n const currentUser = auth.user;\n const {\n users,\n loading: usersLoading,\n error: userError,\n setError: setUserError,\n deleteUser,\n triggerRefresh,\n } = useUserData();\n\n const [editingUser, setEditingUser] = useState<User | null>(null);\n const [showAddForm, setShowAddForm] = useState(false);\n const [userToDelete, setUserToDelete] = useState<string | null>(null);\n\n if (!currentUser?.isAdmin) {\n return (\n <div className=\"hub-card p-6 text-center\" style={{ color: 'var(--hub-err)' }}>\n {t('users.adminRequired')}\n </div>\n );\n }\n\n return (\n <div>\n <div className=\"flex items-end justify-between gap-4 mb-6\">\n <div>\n <h1 className=\"hub-h1\">{t('pages.users.title')}</h1>\n <p className=\"hub-sub\">\n <span className=\"hub-num\">{users.length}</span> {t('nav.users').toLowerCase()}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <button\n className=\"hub-btn\"\n onClick={() => triggerRefresh()}\n aria-label={t('common.refresh')}\n >\n <RefreshCw size={13} /> {t('common.refresh')}\n </button>\n <button className=\"hub-btn primary\" onClick={() => setShowAddForm(true)}>\n <Plus size={13} /> {t('users.add')}\n </button>\n </div>\n </div>\n\n {userError && (\n <div\n className=\"hub-card flex items-center justify-between gap-3 mb-4\"\n style={{\n padding: '10px 14px',\n borderColor: 'oklch(0.85 0.1 25)',\n background: 'oklch(0.97 0.03 25)',\n color: 'oklch(0.4 0.18 25)',\n }}\n >\n <div className=\"flex items-center gap-2 min-w-0\">\n <AlertCircle size={14} className=\"flex-shrink-0\" />\n <span className=\"truncate text-[13px]\">{userError}</span>\n </div>\n <button className=\"hub-icon-btn sm\" onClick={() => setUserError(null)}>\n <X size={13} />\n </button>\n </div>\n )}\n\n {usersLoading ? (\n <div className=\"hub-card p-10 text-center\" style={{ color: 'var(--hub-ink-3)' }}>\n {t('app.loading')}\n </div>\n ) : users.length === 0 ? (\n <div className=\"hub-card p-10 text-center\" style={{ color: 'var(--hub-ink-3)' }}>\n <div className=\"flex flex-col items-center gap-3\">\n <div\n className=\"grid place-items-center\"\n style={{\n width: 40,\n height: 40,\n borderRadius: 10,\n border: '1px solid var(--hub-line)',\n background: 'var(--hub-bg-2)',\n }}\n >\n <UserIcon size={18} />\n </div>\n <div className=\"font-medium\" style={{ color: 'var(--hub-ink-2)', fontSize: 13 }}>\n {t('users.noUsers')}\n </div>\n <button\n onClick={() => setShowAddForm(true)}\n className=\"hub-btn ghost sm\"\n style={{ color: 'var(--hub-accent)' }}\n >\n {t('users.addFirst')}\n </button>\n </div>\n </div>\n ) : (\n <div className=\"hub-card overflow-hidden\">\n <div\n className=\"hub-row head hub-mono\"\n style={{ gridTemplateColumns: '1.6fr 100px 100px' }}\n >\n <div>{t('users.username')}</div>\n <div>{t('users.role')}</div>\n <div className=\"text-right\">{t('users.actions')}</div>\n </div>\n {users.map((user) => {\n const isCurrentUser = currentUser?.username === user.username;\n return (\n <div\n key={user.username}\n className=\"hub-row hover\"\n style={{ gridTemplateColumns: '1.6fr 100px 100px' }}\n >\n <div className=\"flex items-center gap-3 min-w-0\">\n <div\n className=\"grid place-items-center flex-shrink-0 hub-mono\"\n style={{\n width: 28,\n height: 28,\n borderRadius: 7,\n background: 'var(--hub-bg-2)',\n border: '1px solid var(--hub-line)',\n color: 'var(--hub-ink-2)',\n fontWeight: 600,\n fontSize: 12,\n }}\n >\n {user.username.charAt(0).toUpperCase()}\n </div>\n <span\n className=\"hub-mono truncate\"\n style={{ fontSize: 13, color: 'var(--hub-ink)' }}\n >\n {user.username}\n </span>\n {isCurrentUser && (\n <span className=\"hub-tag accent\" style={{ fontSize: 10 }}>\n {t('users.currentUser')}\n </span>\n )}\n </div>\n <div>\n <StatusDot\n kind={user.isAdmin ? 'ok' : 'muted'}\n label={user.isAdmin ? t('users.admin') : t('users.user')}\n />\n </div>\n <div className=\"flex justify-end gap-1\">\n <button\n onClick={() => setEditingUser(user)}\n className=\"hub-icon-btn sm\"\n title={t('users.edit')}\n >\n <Edit3 size={13} />\n </button>\n {!isCurrentUser && (\n <button\n onClick={() => setUserToDelete(user.username)}\n className=\"hub-icon-btn sm\"\n title={t('users.delete')}\n style={{ color: 'var(--hub-err)' }}\n >\n <Trash2 size={13} />\n </button>\n )}\n </div>\n </div>\n );\n })}\n </div>\n )}\n\n {showAddForm && (\n <AddUserForm\n onAdd={() => {\n setShowAddForm(false);\n triggerRefresh();\n }}\n onCancel={() => setShowAddForm(false)}\n />\n )}\n\n {editingUser && (\n <EditUserForm\n user={editingUser}\n onEdit={() => {\n setEditingUser(null);\n triggerRefresh();\n }}\n onCancel={() => setEditingUser(null)}\n />\n )}\n\n <DeleteDialog\n isOpen={!!userToDelete}\n onClose={() => setUserToDelete(null)}\n onConfirm={async () => {\n if (userToDelete) {\n const result = await deleteUser(userToDelete);\n if (!result?.success) {\n setUserError(result?.message || t('users.deleteError'));\n }\n setUserToDelete(null);\n }\n }}\n serverName={userToDelete || ''}\n isGroup={false}\n isUser={true}\n />\n </div>\n );\n};\n\nexport default UsersPage;\n"],"names":["useUserData","t","useTranslation","users","setUsers","useState","loading","setLoading","error","setError","refreshKey","setRefreshKey","fetchUsers","useCallback","data","apiGet","err","triggerRefresh","prev","createUser","userData","result","apiPost","updateUser","username","apiPut","deleteUser","apiDelete","useEffect","AddUserForm","onAdd","onCancel","isSubmitting","setIsSubmitting","formData","setFormData","handleSubmit","e","handleInputChange","name","value","type","checked","jsx","jsxs","EditUserForm","user","onEdit","updateData","UsersPage","auth","useAuth","currentUser","usersLoading","userError","setUserError","editingUser","setEditingUser","showAddForm","setShowAddForm","userToDelete","setUserToDelete","RefreshCw","Plus","AlertCircle","X","UserIcon","isCurrentUser","StatusDot","Edit3","Trash2","DeleteDialog"],"mappings":"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"}
|
|
@@ -57,5 +57,5 @@ Error generating stack: `+a.message+`
|
|
|
57
57
|
* @license MIT
|
|
58
58
|
*/var Nh="popstate";function kv(i={}){function c(r,d){let{pathname:m,search:v,hash:R}=r.location;return ur("",{pathname:m,search:v,hash:R},d.state&&d.state.usr||null,d.state&&d.state.key||"default")}function s(r,d){return typeof d=="string"?d:Jn(d)}return Pv(c,s,null,i)}function Ut(i,c){if(i===!1||i===null||typeof i>"u")throw new Error(c)}function Ne(i,c){if(!i){typeof console<"u"&&console.warn(c);try{throw new Error(c)}catch{}}}function Iv(){return Math.random().toString(36).substring(2,10)}function xh(i,c){return{usr:i.state,key:i.key,idx:c}}function ur(i,c,s=null,r){return{pathname:typeof i=="string"?i:i.pathname,search:"",hash:"",...typeof c=="string"?Va(c):c,state:s,key:c&&c.key||r||Iv()}}function Jn({pathname:i="/",search:c="",hash:s=""}){return c&&c!=="?"&&(i+=c.charAt(0)==="?"?c:"?"+c),s&&s!=="#"&&(i+=s.charAt(0)==="#"?s:"#"+s),i}function Va(i){let c={};if(i){let s=i.indexOf("#");s>=0&&(c.hash=i.substring(s),i=i.substring(0,s));let r=i.indexOf("?");r>=0&&(c.search=i.substring(r),i=i.substring(0,r)),i&&(c.pathname=i)}return c}function Pv(i,c,s,r={}){let{window:d=document.defaultView,v5Compat:m=!1}=r,v=d.history,R="POP",y=null,h=b();h==null&&(h=0,v.replaceState({...v.state,idx:h},""));function b(){return(v.state||{idx:null}).idx}function E(){R="POP";let B=b(),V=B==null?null:B-h;h=B,y&&y({action:R,location:j.location,delta:V})}function N(B,V){R="PUSH";let $=ur(j.location,B,V);h=b()+1;let L=xh($,h),F=j.createHref($);try{v.pushState(L,"",F)}catch(W){if(W instanceof DOMException&&W.name==="DataCloneError")throw W;d.location.assign(F)}m&&y&&y({action:R,location:j.location,delta:1})}function q(B,V){R="REPLACE";let $=ur(j.location,B,V);h=b();let L=xh($,h),F=j.createHref($);v.replaceState(L,"",F),m&&y&&y({action:R,location:j.location,delta:0})}function Q(B){return t0(B)}let j={get action(){return R},get location(){return i(d,v)},listen(B){if(y)throw new Error("A history only accepts one active listener");return d.addEventListener(Nh,E),y=B,()=>{d.removeEventListener(Nh,E),y=null}},createHref(B){return c(d,B)},createURL:Q,encodeLocation(B){let V=Q(B);return{pathname:V.pathname,search:V.search,hash:V.hash}},push:N,replace:q,go(B){return v.go(B)}};return j}function t0(i,c=!1){let s="http://localhost";typeof window<"u"&&(s=window.location.origin!=="null"?window.location.origin:window.location.href),Ut(s,"No window.location.(origin|href) available to create URL");let r=typeof i=="string"?i:Jn(i);return r=r.replace(/ $/,"%20"),!c&&r.startsWith("//")&&(r=s+r),new URL(r,s)}function $h(i,c,s="/"){return e0(i,c,s,!1)}function e0(i,c,s,r){let d=typeof c=="string"?Va(c):c,m=ol(d.pathname||"/",s);if(m==null)return null;let v=Wh(i);l0(v);let R=null;for(let y=0;R==null&&y<v.length;++y){let h=h0(m);R=o0(v[y],h,r)}return R}function Wh(i,c=[],s=[],r="",d=!1){let m=(v,R,y=d,h)=>{let b={relativePath:h===void 0?v.path||"":h,caseSensitive:v.caseSensitive===!0,childrenIndex:R,route:v};if(b.relativePath.startsWith("/")){if(!b.relativePath.startsWith(r)&&y)return;Ut(b.relativePath.startsWith(r),`Absolute route path "${b.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),b.relativePath=b.relativePath.slice(r.length)}let E=sl([r,b.relativePath]),N=s.concat(b);v.children&&v.children.length>0&&(Ut(v.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${E}".`),Wh(v.children,c,N,E,y)),!(v.path==null&&!v.index)&&c.push({path:E,score:r0(E,v.index),routesMeta:N})};return i.forEach((v,R)=>{var y;if(v.path===""||!((y=v.path)!=null&&y.includes("?")))m(v,R);else for(let h of Fh(v.path))m(v,R,!0,h)}),c}function Fh(i){let c=i.split("/");if(c.length===0)return[];let[s,...r]=c,d=s.endsWith("?"),m=s.replace(/\?$/,"");if(r.length===0)return d?[m,""]:[m];let v=Fh(r.join("/")),R=[];return R.push(...v.map(y=>y===""?m:[m,y].join("/"))),d&&R.push(...v),R.map(y=>i.startsWith("/")&&y===""?"/":y)}function l0(i){i.sort((c,s)=>c.score!==s.score?s.score-c.score:s0(c.routesMeta.map(r=>r.childrenIndex),s.routesMeta.map(r=>r.childrenIndex)))}var a0=/^:[\w-]+$/,n0=3,u0=2,i0=1,c0=10,f0=-2,Hh=i=>i==="*";function r0(i,c){let s=i.split("/"),r=s.length;return s.some(Hh)&&(r+=f0),c&&(r+=u0),s.filter(d=>!Hh(d)).reduce((d,m)=>d+(a0.test(m)?n0:m===""?i0:c0),r)}function s0(i,c){return i.length===c.length&&i.slice(0,-1).every((r,d)=>r===c[d])?i[i.length-1]-c[c.length-1]:0}function o0(i,c,s=!1){let{routesMeta:r}=i,d={},m="/",v=[];for(let R=0;R<r.length;++R){let y=r[R],h=R===r.length-1,b=m==="/"?c:c.slice(m.length)||"/",E=Ti({path:y.relativePath,caseSensitive:y.caseSensitive,end:h},b),N=y.route;if(!E&&h&&s&&!r[r.length-1].route.index&&(E=Ti({path:y.relativePath,caseSensitive:y.caseSensitive,end:!1},b)),!E)return null;Object.assign(d,E.params),v.push({params:d,pathname:sl([m,E.pathname]),pathnameBase:g0(sl([m,E.pathnameBase])),route:N}),E.pathnameBase!=="/"&&(m=sl([m,E.pathnameBase]))}return v}function Ti(i,c){typeof i=="string"&&(i={path:i,caseSensitive:!1,end:!0});let[s,r]=d0(i.path,i.caseSensitive,i.end),d=c.match(s);if(!d)return null;let m=d[0],v=m.replace(/(.)\/+$/,"$1"),R=d.slice(1);return{params:r.reduce((h,{paramName:b,isOptional:E},N)=>{if(b==="*"){let Q=R[N]||"";v=m.slice(0,m.length-Q.length).replace(/(.)\/+$/,"$1")}const q=R[N];return E&&!q?h[b]=void 0:h[b]=(q||"").replace(/%2F/g,"/"),h},{}),pathname:m,pathnameBase:v,pattern:i}}function d0(i,c=!1,s=!0){Ne(i==="*"||!i.endsWith("*")||i.endsWith("/*"),`Route path "${i}" will be treated as if it were "${i.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${i.replace(/\*$/,"/*")}".`);let r=[],d="^"+i.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(v,R,y)=>(r.push({paramName:R,isOptional:y!=null}),y?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return i.endsWith("*")?(r.push({paramName:"*"}),d+=i==="*"||i==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):s?d+="\\/*$":i!==""&&i!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,c?void 0:"i"),r]}function h0(i){try{return i.split("/").map(c=>decodeURIComponent(c).replace(/\//g,"%2F")).join("/")}catch(c){return Ne(!1,`The URL path "${i}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${c}).`),i}}function ol(i,c){if(c==="/")return i;if(!i.toLowerCase().startsWith(c.toLowerCase()))return null;let s=c.endsWith("/")?c.length-1:c.length,r=i.charAt(s);return r&&r!=="/"?null:i.slice(s)||"/"}var m0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function y0(i,c="/"){let{pathname:s,search:r="",hash:d=""}=typeof i=="string"?Va(i):i,m;return s?(s=s.replace(/\/\/+/g,"/"),s.startsWith("/")?m=Bh(s.substring(1),"/"):m=Bh(s,c)):m=c,{pathname:m,search:p0(r),hash:S0(d)}}function Bh(i,c){let s=c.replace(/\/+$/,"").split("/");return i.split("/").forEach(d=>{d===".."?s.length>1&&s.pop():d!=="."&&s.push(d)}),s.length>1?s.join("/"):"/"}function Ff(i,c,s,r){return`Cannot include a '${i}' character in a manually specified \`to.${c}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${s}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function v0(i){return i.filter((c,s)=>s===0||c.route.path&&c.route.path.length>0)}function dr(i){let c=v0(i);return c.map((s,r)=>r===c.length-1?s.pathname:s.pathnameBase)}function hr(i,c,s,r=!1){let d;typeof i=="string"?d=Va(i):(d={...i},Ut(!d.pathname||!d.pathname.includes("?"),Ff("?","pathname","search",d)),Ut(!d.pathname||!d.pathname.includes("#"),Ff("#","pathname","hash",d)),Ut(!d.search||!d.search.includes("#"),Ff("#","search","hash",d)));let m=i===""||d.pathname==="",v=m?"/":d.pathname,R;if(v==null)R=s;else{let E=c.length-1;if(!r&&v.startsWith("..")){let N=v.split("/");for(;N[0]==="..";)N.shift(),E-=1;d.pathname=N.join("/")}R=E>=0?c[E]:"/"}let y=y0(d,R),h=v&&v!=="/"&&v.endsWith("/"),b=(m||v===".")&&s.endsWith("/");return!y.pathname.endsWith("/")&&(h||b)&&(y.pathname+="/"),y}var sl=i=>i.join("/").replace(/\/\/+/g,"/"),g0=i=>i.replace(/\/+$/,"").replace(/^\/*/,"/"),p0=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,S0=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i,b0=class{constructor(i,c,s,r=!1){this.status=i,this.statusText=c||"",this.internal=r,s instanceof Error?(this.data=s.toString(),this.error=s):this.data=s}};function E0(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.internal=="boolean"&&"data"in i}function T0(i){return i.map(c=>c.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var kh=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Ih(i,c){let s=i;if(typeof s!="string"||!m0.test(s))return{absoluteURL:void 0,isExternal:!1,to:s};let r=s,d=!1;if(kh)try{let m=new URL(window.location.href),v=s.startsWith("//")?new URL(m.protocol+s):new URL(s),R=ol(v.pathname,c);v.origin===m.origin&&R!=null?s=R+v.search+v.hash:d=!0}catch{Ne(!1,`<Link to="${s}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:d,to:s}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");var Ph=["POST","PUT","PATCH","DELETE"];new Set(Ph);var R0=["GET",...Ph];new Set(R0);var Za=U.createContext(null);Za.displayName="DataRouter";var Ri=U.createContext(null);Ri.displayName="DataRouterState";var _0=U.createContext(!1),tm=U.createContext({isTransitioning:!1});tm.displayName="ViewTransition";var O0=U.createContext(new Map);O0.displayName="Fetchers";var A0=U.createContext(null);A0.displayName="Await";var be=U.createContext(null);be.displayName="Navigation";var Kn=U.createContext(null);Kn.displayName="Location";var xe=U.createContext({outlet:null,matches:[],isDataRoute:!1});xe.displayName="Route";var mr=U.createContext(null);mr.displayName="RouteError";var em="REACT_ROUTER_ERROR",z0="REDIRECT",M0="ROUTE_ERROR_RESPONSE";function U0(i){if(i.startsWith(`${em}:${z0}:{`))try{let c=JSON.parse(i.slice(28));if(typeof c=="object"&&c&&typeof c.status=="number"&&typeof c.statusText=="string"&&typeof c.location=="string"&&typeof c.reloadDocument=="boolean"&&typeof c.replace=="boolean")return c}catch{}}function C0(i){if(i.startsWith(`${em}:${M0}:{`))try{let c=JSON.parse(i.slice(40));if(typeof c=="object"&&c&&typeof c.status=="number"&&typeof c.statusText=="string")return new b0(c.status,c.statusText,c.data)}catch{}}function D0(i,{relative:c}={}){Ut(Ja(),"useHref() may be used only in the context of a <Router> component.");let{basename:s,navigator:r}=U.useContext(be),{hash:d,pathname:m,search:v}=$n(i,{relative:c}),R=m;return s!=="/"&&(R=m==="/"?s:sl([s,m])),r.createHref({pathname:R,search:v,hash:d})}function Ja(){return U.useContext(Kn)!=null}function dl(){return Ut(Ja(),"useLocation() may be used only in the context of a <Router> component."),U.useContext(Kn).location}var lm="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function am(i){U.useContext(be).static||U.useLayoutEffect(i)}function yr(){let{isDataRoute:i}=U.useContext(xe);return i?J0():N0()}function N0(){Ut(Ja(),"useNavigate() may be used only in the context of a <Router> component.");let i=U.useContext(Za),{basename:c,navigator:s}=U.useContext(be),{matches:r}=U.useContext(xe),{pathname:d}=dl(),m=JSON.stringify(dr(r)),v=U.useRef(!1);return am(()=>{v.current=!0}),U.useCallback((y,h={})=>{if(Ne(v.current,lm),!v.current)return;if(typeof y=="number"){s.go(y);return}let b=hr(y,JSON.parse(m),d,h.relative==="path");i==null&&c!=="/"&&(b.pathname=b.pathname==="/"?c:sl([c,b.pathname])),(h.replace?s.replace:s.push)(b,h.state,h)},[c,s,m,d,i])}var x0=U.createContext(null);function H0(i){let c=U.useContext(xe).outlet;return U.useMemo(()=>c&&U.createElement(x0.Provider,{value:i},c),[c,i])}function G1(){let{matches:i}=U.useContext(xe),c=i[i.length-1];return c?c.params:{}}function $n(i,{relative:c}={}){let{matches:s}=U.useContext(xe),{pathname:r}=dl(),d=JSON.stringify(dr(s));return U.useMemo(()=>hr(i,JSON.parse(d),r,c==="path"),[i,d,r,c])}function B0(i,c){return nm(i,c)}function nm(i,c,s,r,d){var $;Ut(Ja(),"useRoutes() may be used only in the context of a <Router> component.");let{navigator:m}=U.useContext(be),{matches:v}=U.useContext(xe),R=v[v.length-1],y=R?R.params:{},h=R?R.pathname:"/",b=R?R.pathnameBase:"/",E=R&&R.route;{let L=E&&E.path||"";im(h,!E||L.endsWith("*")||L.endsWith("*?"),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${h}" (under <Route path="${L}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
59
59
|
|
|
60
|
-
Please change the parent <Route path="${L}"> to <Route path="${L==="/"?"*":`${L}/*`}">.`)}let N=dl(),q;if(c){let L=typeof c=="string"?Va(c):c;Ut(b==="/"||(($=L.pathname)==null?void 0:$.startsWith(b)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${b}" but pathname "${L.pathname}" was given in the \`location\` prop.`),q=L}else q=N;let Q=q.pathname||"/",j=Q;if(b!=="/"){let L=b.replace(/^\//,"").split("/");j="/"+Q.replace(/^\//,"").split("/").slice(L.length).join("/")}let B=$h(i,{pathname:j});Ne(E||B!=null,`No routes matched location "${q.pathname}${q.search}${q.hash}" `),Ne(B==null||B[B.length-1].route.element!==void 0||B[B.length-1].route.Component!==void 0||B[B.length-1].route.lazy!==void 0,`Matched leaf route at location "${q.pathname}${q.search}${q.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let V=j0(B&&B.map(L=>Object.assign({},L,{params:Object.assign({},y,L.params),pathname:sl([b,m.encodeLocation?m.encodeLocation(L.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:L.pathname]),pathnameBase:L.pathnameBase==="/"?b:sl([b,m.encodeLocation?m.encodeLocation(L.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:L.pathnameBase])})),v,s,r,d);return c&&V?U.createElement(Kn.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...q},navigationType:"POP"}},V):V}function L0(){let i=Z0(),c=E0(i)?`${i.status} ${i.statusText}`:i instanceof Error?i.message:JSON.stringify(i),s=i instanceof Error?i.stack:null,r="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:r},m={padding:"2px 4px",backgroundColor:r},v=null;return console.error("Error handled by React Router default ErrorBoundary:",i),v=U.createElement(U.Fragment,null,U.createElement("p",null,"💿 Hey developer 👋"),U.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",U.createElement("code",{style:m},"ErrorBoundary")," or"," ",U.createElement("code",{style:m},"errorElement")," prop on your route.")),U.createElement(U.Fragment,null,U.createElement("h2",null,"Unexpected Application Error!"),U.createElement("h3",{style:{fontStyle:"italic"}},c),s?U.createElement("pre",{style:d},s):null,v)}var q0=U.createElement(L0,null),um=class extends U.Component{constructor(i){super(i),this.state={location:i.location,revalidation:i.revalidation,error:i.error}}static getDerivedStateFromError(i){return{error:i}}static getDerivedStateFromProps(i,c){return c.location!==i.location||c.revalidation!=="idle"&&i.revalidation==="idle"?{error:i.error,location:i.location,revalidation:i.revalidation}:{error:i.error!==void 0?i.error:c.error,location:c.location,revalidation:i.revalidation||c.revalidation}}componentDidCatch(i,c){this.props.onError?this.props.onError(i,c):console.error("React Router caught the following error during render",i)}render(){let i=this.state.error;if(this.context&&typeof i=="object"&&i&&"digest"in i&&typeof i.digest=="string"){const s=C0(i.digest);s&&(i=s)}let c=i!==void 0?U.createElement(xe.Provider,{value:this.props.routeContext},U.createElement(mr.Provider,{value:i,children:this.props.component})):this.props.children;return this.context?U.createElement(w0,{error:i},c):c}};um.contextType=_0;var kf=new WeakMap;function w0({children:i,error:c}){let{basename:s}=U.useContext(be);if(typeof c=="object"&&c&&"digest"in c&&typeof c.digest=="string"){let r=U0(c.digest);if(r){let d=kf.get(c);if(d)throw d;let m=Ih(r.location,s);if(kh&&!kf.get(c))if(m.isExternal||r.reloadDocument)window.location.href=m.absoluteURL||m.to;else{const v=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(m.to,{replace:r.replace}));throw kf.set(c,v),v}return U.createElement("meta",{httpEquiv:"refresh",content:`0;url=${m.absoluteURL||m.to}`})}}return i}function Y0({routeContext:i,match:c,children:s}){let r=U.useContext(Za);return r&&r.static&&r.staticContext&&(c.route.errorElement||c.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=c.route.id),U.createElement(xe.Provider,{value:i},s)}function j0(i,c=[],s=null,r=null,d=null){if(i==null){if(!s)return null;if(s.errors)i=s.matches;else if(c.length===0&&!s.initialized&&s.matches.length>0)i=s.matches;else return null}let m=i,v=s==null?void 0:s.errors;if(v!=null){let b=m.findIndex(E=>E.route.id&&(v==null?void 0:v[E.route.id])!==void 0);Ut(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(v).join(",")}`),m=m.slice(0,Math.min(m.length,b+1))}let R=!1,y=-1;if(s)for(let b=0;b<m.length;b++){let E=m[b];if((E.route.HydrateFallback||E.route.hydrateFallbackElement)&&(y=b),E.route.id){let{loaderData:N,errors:q}=s,Q=E.route.loader&&!N.hasOwnProperty(E.route.id)&&(!q||q[E.route.id]===void 0);if(E.route.lazy||Q){R=!0,y>=0?m=m.slice(0,y+1):m=[m[0]];break}}}let h=s&&r?(b,E)=>{var N,q;r(b,{location:s.location,params:((q=(N=s.matches)==null?void 0:N[0])==null?void 0:q.params)??{},unstable_pattern:T0(s.matches),errorInfo:E})}:void 0;return m.reduceRight((b,E,N)=>{let q,Q=!1,j=null,B=null;s&&(q=v&&E.route.id?v[E.route.id]:void 0,j=E.route.errorElement||q0,R&&(y<0&&N===0?(im("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),Q=!0,B=null):y===N&&(Q=!0,B=E.route.hydrateFallbackElement||null)));let V=c.concat(m.slice(0,N+1)),$=()=>{let L;return q?L=j:Q?L=B:E.route.Component?L=U.createElement(E.route.Component,null):E.route.element?L=E.route.element:L=b,U.createElement(Y0,{match:E,routeContext:{outlet:b,matches:V,isDataRoute:s!=null},children:L})};return s&&(E.route.ErrorBoundary||E.route.errorElement||N===0)?U.createElement(um,{location:s.location,revalidation:s.revalidation,component:j,error:q,children:$(),routeContext:{outlet:null,matches:V,isDataRoute:!0},onError:h}):$()},null)}function vr(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function G0(i){let c=U.useContext(Za);return Ut(c,vr(i)),c}function X0(i){let c=U.useContext(Ri);return Ut(c,vr(i)),c}function Q0(i){let c=U.useContext(xe);return Ut(c,vr(i)),c}function gr(i){let c=Q0(i),s=c.matches[c.matches.length-1];return Ut(s.route.id,`${i} can only be used on routes that contain a unique "id"`),s.route.id}function V0(){return gr("useRouteId")}function Z0(){var r;let i=U.useContext(mr),c=X0("useRouteError"),s=gr("useRouteError");return i!==void 0?i:(r=c.errors)==null?void 0:r[s]}function J0(){let{router:i}=G0("useNavigate"),c=gr("useNavigate"),s=U.useRef(!1);return am(()=>{s.current=!0}),U.useCallback(async(d,m={})=>{Ne(s.current,lm),s.current&&(typeof d=="number"?await i.navigate(d):await i.navigate(d,{fromRouteId:c,...m}))},[i,c])}var Lh={};function im(i,c,s){!c&&!Lh[i]&&(Lh[i]=!0,Ne(!1,s))}U.memo(K0);function K0({routes:i,future:c,state:s,onError:r}){return nm(i,void 0,s,r,c)}function X1({to:i,replace:c,state:s,relative:r}){Ut(Ja(),"<Navigate> may be used only in the context of a <Router> component.");let{static:d}=U.useContext(be);Ne(!d,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:m}=U.useContext(xe),{pathname:v}=dl(),R=yr(),y=hr(i,dr(m),v,r==="path"),h=JSON.stringify(y);return U.useEffect(()=>{R(JSON.parse(h),{replace:c,state:s,relative:r})},[R,h,r,c,s]),null}function Q1(i){return H0(i.context)}function $0(i){Ut(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function W0({basename:i="/",children:c=null,location:s,navigationType:r="POP",navigator:d,static:m=!1,unstable_useTransitions:v}){Ut(!Ja(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let R=i.replace(/^\/*/,"/"),y=U.useMemo(()=>({basename:R,navigator:d,static:m,unstable_useTransitions:v,future:{}}),[R,d,m,v]);typeof s=="string"&&(s=Va(s));let{pathname:h="/",search:b="",hash:E="",state:N=null,key:q="default"}=s,Q=U.useMemo(()=>{let j=ol(h,R);return j==null?null:{location:{pathname:j,search:b,hash:E,state:N,key:q},navigationType:r}},[R,h,b,E,N,q,r]);return Ne(Q!=null,`<Router basename="${R}"> is not able to match the URL "${h}${b}${E}" because it does not start with the basename, so the <Router> won't render anything.`),Q==null?null:U.createElement(be.Provider,{value:y},U.createElement(Kn.Provider,{children:c,value:Q}))}function V1({children:i,location:c}){return B0(ir(i),c)}function ir(i,c=[]){let s=[];return U.Children.forEach(i,(r,d)=>{if(!U.isValidElement(r))return;let m=[...c,d];if(r.type===U.Fragment){s.push.apply(s,ir(r.props.children,m));return}Ut(r.type===$0,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),Ut(!r.props.index||!r.props.children,"An index route cannot have child routes.");let v={id:r.props.id||m.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(v.children=ir(r.props.children,m)),s.push(v)}),s}var gi="get",pi="application/x-www-form-urlencoded";function _i(i){return typeof HTMLElement<"u"&&i instanceof HTMLElement}function F0(i){return _i(i)&&i.tagName.toLowerCase()==="button"}function k0(i){return _i(i)&&i.tagName.toLowerCase()==="form"}function I0(i){return _i(i)&&i.tagName.toLowerCase()==="input"}function P0(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function tg(i,c){return i.button===0&&(!c||c==="_self")&&!P0(i)}function cr(i=""){return new URLSearchParams(typeof i=="string"||Array.isArray(i)||i instanceof URLSearchParams?i:Object.keys(i).reduce((c,s)=>{let r=i[s];return c.concat(Array.isArray(r)?r.map(d=>[s,d]):[[s,r]])},[]))}function eg(i,c){let s=cr(i);return c&&c.forEach((r,d)=>{s.has(d)||c.getAll(d).forEach(m=>{s.append(d,m)})}),s}var hi=null;function lg(){if(hi===null)try{new FormData(document.createElement("form"),0),hi=!1}catch{hi=!0}return hi}var ag=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function If(i){return i!=null&&!ag.has(i)?(Ne(!1,`"${i}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${pi}"`),null):i}function ng(i,c){let s,r,d,m,v;if(k0(i)){let R=i.getAttribute("action");r=R?ol(R,c):null,s=i.getAttribute("method")||gi,d=If(i.getAttribute("enctype"))||pi,m=new FormData(i)}else if(F0(i)||I0(i)&&(i.type==="submit"||i.type==="image")){let R=i.form;if(R==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let y=i.getAttribute("formaction")||R.getAttribute("action");if(r=y?ol(y,c):null,s=i.getAttribute("formmethod")||R.getAttribute("method")||gi,d=If(i.getAttribute("formenctype"))||If(R.getAttribute("enctype"))||pi,m=new FormData(R,i),!lg()){let{name:h,type:b,value:E}=i;if(b==="image"){let N=h?`${h}.`:"";m.append(`${N}x`,"0"),m.append(`${N}y`,"0")}else h&&m.append(h,E)}}else{if(_i(i))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');s=gi,r=null,d=pi,v=i}return m&&d==="text/plain"&&(v=m,m=void 0),{action:r,method:s.toLowerCase(),encType:d,formData:m,body:v}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function pr(i,c){if(i===!1||i===null||typeof i>"u")throw new Error(c)}function ug(i,c,s,r){let d=typeof i=="string"?new URL(i,typeof window>"u"?"server://singlefetch/":window.location.origin):i;return s?d.pathname.endsWith("/")?d.pathname=`${d.pathname}_.${r}`:d.pathname=`${d.pathname}.${r}`:d.pathname==="/"?d.pathname=`_root.${r}`:c&&ol(d.pathname,c)==="/"?d.pathname=`${c.replace(/\/$/,"")}/_root.${r}`:d.pathname=`${d.pathname.replace(/\/$/,"")}.${r}`,d}async function ig(i,c){if(i.id in c)return c[i.id];try{let s=await import(i.module);return c[i.id]=s,s}catch(s){return console.error(`Error loading route module \`${i.module}\`, reloading page...`),console.error(s),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function cg(i){return i==null?!1:i.href==null?i.rel==="preload"&&typeof i.imageSrcSet=="string"&&typeof i.imageSizes=="string":typeof i.rel=="string"&&typeof i.href=="string"}async function fg(i,c,s){let r=await Promise.all(i.map(async d=>{let m=c.routes[d.route.id];if(m){let v=await ig(m,s);return v.links?v.links():[]}return[]}));return dg(r.flat(1).filter(cg).filter(d=>d.rel==="stylesheet"||d.rel==="preload").map(d=>d.rel==="stylesheet"?{...d,rel:"prefetch",as:"style"}:{...d,rel:"prefetch"}))}function qh(i,c,s,r,d,m){let v=(y,h)=>s[h]?y.route.id!==s[h].route.id:!0,R=(y,h)=>{var b;return s[h].pathname!==y.pathname||((b=s[h].route.path)==null?void 0:b.endsWith("*"))&&s[h].params["*"]!==y.params["*"]};return m==="assets"?c.filter((y,h)=>v(y,h)||R(y,h)):m==="data"?c.filter((y,h)=>{var E;let b=r.routes[y.route.id];if(!b||!b.hasLoader)return!1;if(v(y,h)||R(y,h))return!0;if(y.route.shouldRevalidate){let N=y.route.shouldRevalidate({currentUrl:new URL(d.pathname+d.search+d.hash,window.origin),currentParams:((E=s[0])==null?void 0:E.params)||{},nextUrl:new URL(i,window.origin),nextParams:y.params,defaultShouldRevalidate:!0});if(typeof N=="boolean")return N}return!0}):[]}function rg(i,c,{includeHydrateFallback:s}={}){return sg(i.map(r=>{let d=c.routes[r.route.id];if(!d)return[];let m=[d.module];return d.clientActionModule&&(m=m.concat(d.clientActionModule)),d.clientLoaderModule&&(m=m.concat(d.clientLoaderModule)),s&&d.hydrateFallbackModule&&(m=m.concat(d.hydrateFallbackModule)),d.imports&&(m=m.concat(d.imports)),m}).flat(1))}function sg(i){return[...new Set(i)]}function og(i){let c={},s=Object.keys(i).sort();for(let r of s)c[r]=i[r];return c}function dg(i,c){let s=new Set;return new Set(c),i.reduce((r,d)=>{let m=JSON.stringify(og(d));return s.has(m)||(s.add(m),r.push({key:m,link:d})),r},[])}function cm(){let i=U.useContext(Za);return pr(i,"You must render this element inside a <DataRouterContext.Provider> element"),i}function hg(){let i=U.useContext(Ri);return pr(i,"You must render this element inside a <DataRouterStateContext.Provider> element"),i}var Sr=U.createContext(void 0);Sr.displayName="FrameworkContext";function fm(){let i=U.useContext(Sr);return pr(i,"You must render this element inside a <HydratedRouter> element"),i}function mg(i,c){let s=U.useContext(Sr),[r,d]=U.useState(!1),[m,v]=U.useState(!1),{onFocus:R,onBlur:y,onMouseEnter:h,onMouseLeave:b,onTouchStart:E}=c,N=U.useRef(null);U.useEffect(()=>{if(i==="render"&&v(!0),i==="viewport"){let j=V=>{V.forEach($=>{v($.isIntersecting)})},B=new IntersectionObserver(j,{threshold:.5});return N.current&&B.observe(N.current),()=>{B.disconnect()}}},[i]),U.useEffect(()=>{if(r){let j=setTimeout(()=>{v(!0)},100);return()=>{clearTimeout(j)}}},[r]);let q=()=>{d(!0)},Q=()=>{d(!1),v(!1)};return s?i!=="intent"?[m,N,{}]:[m,N,{onFocus:Qn(R,q),onBlur:Qn(y,Q),onMouseEnter:Qn(h,q),onMouseLeave:Qn(b,Q),onTouchStart:Qn(E,q)}]:[!1,N,{}]}function Qn(i,c){return s=>{i&&i(s),s.defaultPrevented||c(s)}}function yg({page:i,...c}){let{router:s}=cm(),r=U.useMemo(()=>$h(s.routes,i,s.basename),[s.routes,i,s.basename]);return r?U.createElement(gg,{page:i,matches:r,...c}):null}function vg(i){let{manifest:c,routeModules:s}=fm(),[r,d]=U.useState([]);return U.useEffect(()=>{let m=!1;return fg(i,c,s).then(v=>{m||d(v)}),()=>{m=!0}},[i,c,s]),r}function gg({page:i,matches:c,...s}){let r=dl(),{future:d,manifest:m,routeModules:v}=fm(),{basename:R}=cm(),{loaderData:y,matches:h}=hg(),b=U.useMemo(()=>qh(i,c,h,m,r,"data"),[i,c,h,m,r]),E=U.useMemo(()=>qh(i,c,h,m,r,"assets"),[i,c,h,m,r]),N=U.useMemo(()=>{if(i===r.pathname+r.search+r.hash)return[];let j=new Set,B=!1;if(c.forEach($=>{var F;let L=m.routes[$.route.id];!L||!L.hasLoader||(!b.some(W=>W.route.id===$.route.id)&&$.route.id in y&&((F=v[$.route.id])!=null&&F.shouldRevalidate)||L.hasClientLoader?B=!0:j.add($.route.id))}),j.size===0)return[];let V=ug(i,R,d.unstable_trailingSlashAwareDataRequests,"data");return B&&j.size>0&&V.searchParams.set("_routes",c.filter($=>j.has($.route.id)).map($=>$.route.id).join(",")),[V.pathname+V.search]},[R,d.unstable_trailingSlashAwareDataRequests,y,r,m,b,c,i,v]),q=U.useMemo(()=>rg(E,m),[E,m]),Q=vg(E);return U.createElement(U.Fragment,null,N.map(j=>U.createElement("link",{key:j,rel:"prefetch",as:"fetch",href:j,...s})),q.map(j=>U.createElement("link",{key:j,rel:"modulepreload",href:j,...s})),Q.map(({key:j,link:B})=>U.createElement("link",{key:j,nonce:s.nonce,...B,crossOrigin:B.crossOrigin??s.crossOrigin})))}function pg(...i){return c=>{i.forEach(s=>{typeof s=="function"?s(c):s!=null&&(s.current=c)})}}var Sg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Sg&&(window.__reactRouterVersion="7.13.0")}catch{}function Z1({basename:i,children:c,unstable_useTransitions:s,window:r}){let d=U.useRef();d.current==null&&(d.current=kv({window:r,v5Compat:!0}));let m=d.current,[v,R]=U.useState({action:m.action,location:m.location}),y=U.useCallback(h=>{s===!1?R(h):U.startTransition(()=>R(h))},[s]);return U.useLayoutEffect(()=>m.listen(y),[m,y]),U.createElement(W0,{basename:i,children:c,location:v.location,navigationType:v.action,navigator:m,unstable_useTransitions:s})}var rm=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,sm=U.forwardRef(function({onClick:c,discover:s="render",prefetch:r="none",relative:d,reloadDocument:m,replace:v,state:R,target:y,to:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N,...q},Q){let{basename:j,unstable_useTransitions:B}=U.useContext(be),V=typeof h=="string"&&rm.test(h),$=Ih(h,j);h=$.to;let L=D0(h,{relative:d}),[F,W,G]=mg(r,q),K=Rg(h,{replace:v,state:R,target:y,preventScrollReset:b,relative:d,viewTransition:E,unstable_defaultShouldRevalidate:N,unstable_useTransitions:B});function gt(Qt){c&&c(Qt),Qt.defaultPrevented||K(Qt)}let Ot=U.createElement("a",{...q,...G,href:$.absoluteURL||L,onClick:$.isExternal||m?c:gt,ref:pg(Q,W),target:y,"data-discover":!V&&s==="render"?"true":void 0});return F&&!V?U.createElement(U.Fragment,null,Ot,U.createElement(yg,{page:L})):Ot});sm.displayName="Link";var bg=U.forwardRef(function({"aria-current":c="page",caseSensitive:s=!1,className:r="",end:d=!1,style:m,to:v,viewTransition:R,children:y,...h},b){let E=$n(v,{relative:h.relative}),N=dl(),q=U.useContext(Ri),{navigator:Q,basename:j}=U.useContext(be),B=q!=null&&Mg(E)&&R===!0,V=Q.encodeLocation?Q.encodeLocation(E).pathname:E.pathname,$=N.pathname,L=q&&q.navigation&&q.navigation.location?q.navigation.location.pathname:null;s||($=$.toLowerCase(),L=L?L.toLowerCase():null,V=V.toLowerCase()),L&&j&&(L=ol(L,j)||L);const F=V!=="/"&&V.endsWith("/")?V.length-1:V.length;let W=$===V||!d&&$.startsWith(V)&&$.charAt(F)==="/",G=L!=null&&(L===V||!d&&L.startsWith(V)&&L.charAt(V.length)==="/"),K={isActive:W,isPending:G,isTransitioning:B},gt=W?c:void 0,Ot;typeof r=="function"?Ot=r(K):Ot=[r,W?"active":null,G?"pending":null,B?"transitioning":null].filter(Boolean).join(" ");let Qt=typeof m=="function"?m(K):m;return U.createElement(sm,{...h,"aria-current":gt,className:Ot,ref:b,style:Qt,to:v,viewTransition:R},typeof y=="function"?y(K):y)});bg.displayName="NavLink";var Eg=U.forwardRef(({discover:i="render",fetcherKey:c,navigate:s,reloadDocument:r,replace:d,state:m,method:v=gi,action:R,onSubmit:y,relative:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N,...q},Q)=>{let{unstable_useTransitions:j}=U.useContext(be),B=Ag(),V=zg(R,{relative:h}),$=v.toLowerCase()==="get"?"get":"post",L=typeof R=="string"&&rm.test(R),F=W=>{if(y&&y(W),W.defaultPrevented)return;W.preventDefault();let G=W.nativeEvent.submitter,K=(G==null?void 0:G.getAttribute("formmethod"))||v,gt=()=>B(G||W.currentTarget,{fetcherKey:c,method:K,navigate:s,replace:d,state:m,relative:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N});j&&s!==!1?U.startTransition(()=>gt()):gt()};return U.createElement("form",{ref:Q,method:$,action:V,onSubmit:r?y:F,...q,"data-discover":!L&&i==="render"?"true":void 0})});Eg.displayName="Form";function Tg(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function om(i){let c=U.useContext(Za);return Ut(c,Tg(i)),c}function Rg(i,{target:c,replace:s,state:r,preventScrollReset:d,relative:m,viewTransition:v,unstable_defaultShouldRevalidate:R,unstable_useTransitions:y}={}){let h=yr(),b=dl(),E=$n(i,{relative:m});return U.useCallback(N=>{if(tg(N,c)){N.preventDefault();let q=s!==void 0?s:Jn(b)===Jn(E),Q=()=>h(i,{replace:q,state:r,preventScrollReset:d,relative:m,viewTransition:v,unstable_defaultShouldRevalidate:R});y?U.startTransition(()=>Q()):Q()}},[b,h,E,s,r,c,i,d,m,v,R,y])}function J1(i){Ne(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let c=U.useRef(cr(i)),s=U.useRef(!1),r=dl(),d=U.useMemo(()=>eg(r.search,s.current?null:c.current),[r.search]),m=yr(),v=U.useCallback((R,y)=>{const h=cr(typeof R=="function"?R(new URLSearchParams(d)):R);s.current=!0,m("?"+h,y)},[m,d]);return[d,v]}var _g=0,Og=()=>`__${String(++_g)}__`;function Ag(){let{router:i}=om("useSubmit"),{basename:c}=U.useContext(be),s=V0(),r=i.fetch,d=i.navigate;return U.useCallback(async(m,v={})=>{let{action:R,method:y,encType:h,formData:b,body:E}=ng(m,c);if(v.navigate===!1){let N=v.fetcherKey||Og();await r(N,s,v.action||R,{unstable_defaultShouldRevalidate:v.unstable_defaultShouldRevalidate,preventScrollReset:v.preventScrollReset,formData:b,body:E,formMethod:v.method||y,formEncType:v.encType||h,flushSync:v.flushSync})}else await d(v.action||R,{unstable_defaultShouldRevalidate:v.unstable_defaultShouldRevalidate,preventScrollReset:v.preventScrollReset,formData:b,body:E,formMethod:v.method||y,formEncType:v.encType||h,replace:v.replace,state:v.state,fromRouteId:s,flushSync:v.flushSync,viewTransition:v.viewTransition})},[r,d,c,s])}function zg(i,{relative:c}={}){let{basename:s}=U.useContext(be),r=U.useContext(xe);Ut(r,"useFormAction must be used inside a RouteContext");let[d]=r.matches.slice(-1),m={...$n(i||".",{relative:c})},v=dl();if(i==null){m.search=v.search;let R=new URLSearchParams(m.search),y=R.getAll("index");if(y.some(b=>b==="")){R.delete("index"),y.filter(E=>E).forEach(E=>R.append("index",E));let b=R.toString();m.search=b?`?${b}`:""}}return(!i||i===".")&&d.route.index&&(m.search=m.search?m.search.replace(/^\?/,"?index&"):"?index"),s!=="/"&&(m.pathname=m.pathname==="/"?s:sl([s,m.pathname])),Jn(m)}function Mg(i,{relative:c}={}){let s=U.useContext(tm);Ut(s!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=om("useViewTransitionState"),d=$n(i,{relative:c});if(!s.isTransitioning)return!1;let m=ol(s.currentLocation.pathname,r)||s.currentLocation.pathname,v=ol(s.nextLocation.pathname,r)||s.nextLocation.pathname;return Ti(d.pathname,v)!=null||Ti(d.pathname,m)!=null}var Ug={},wh={};const Si=Object.create(null),Vn=i=>{var c;return Ug||((c=globalThis.Deno)==null?void 0:c.env.toObject())||globalThis.__env__||(i?Si:globalThis)},De=new Proxy(Si,{get(i,c){return Vn()[c]??Si[c]},has(i,c){return c in Vn()||c in Si},set(i,c,s){const r=Vn(!0);return r[c]=s,!0},deleteProperty(i,c){if(!c)return!1;const s=Vn(!0);return delete s[c],!0},ownKeys(){const i=Vn(!0);return Object.keys(i)}});function Gt(i,c){return typeof process<"u"&&wh?wh[i]??c:typeof Deno<"u"?Deno.env.get(i)??c:typeof Bun<"u"?Bun.env[i]??c:c}const Zn=1,Kt=4,Ve=8,Se=24,Yh={eterm:Kt,cons25:Kt,console:Kt,cygwin:Kt,dtterm:Kt,gnome:Kt,hurd:Kt,jfbterm:Kt,konsole:Kt,kterm:Kt,mlterm:Kt,mosh:Se,putty:Kt,st:Kt,"rxvt-unicode-24bit":Se,terminator:Se,"xterm-kitty":Se},Cg=new Map(Object.entries({APPVEYOR:Ve,BUILDKITE:Ve,CIRCLECI:Se,DRONE:Ve,GITEA_ACTIONS:Se,GITHUB_ACTIONS:Se,GITLAB_CI:Ve,TRAVIS:Ve})),Dg=[/ansi/,/color/,/linux/,/direct/,/^con[0-9]*x[0-9]/,/^rxvt/,/^screen/,/^xterm/,/^vt100/,/^vt220/];function Ng(){if(Gt("FORCE_COLOR")!==void 0)switch(Gt("FORCE_COLOR")){case"":case"1":case"true":return Kt;case"2":return Ve;case"3":return Se;default:return Zn}if(Gt("NODE_DISABLE_COLORS")!==void 0&&Gt("NODE_DISABLE_COLORS")!==""||Gt("NO_COLOR")!==void 0&&Gt("NO_COLOR")!==""||Gt("TERM")==="dumb")return Zn;if(Gt("TMUX"))return Se;if("TF_BUILD"in De&&"AGENT_NAME"in De)return Kt;if("CI"in De){for(const{0:i,1:c}of Cg)if(i in De)return c;return Gt("CI_NAME")==="codeship"?Ve:Zn}if("TEAMCITY_VERSION"in De)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(Gt("TEAMCITY_VERSION"))!==null?Kt:Zn;switch(Gt("TERM_PROGRAM")){case"iTerm.app":return!Gt("TERM_PROGRAM_VERSION")||/^[0-2]\./.exec(Gt("TERM_PROGRAM_VERSION"))!==null?Ve:Se;case"HyperTerm":case"MacTerm":return Se;case"Apple_Terminal":return Ve}if(Gt("COLORTERM")==="truecolor"||Gt("COLORTERM")==="24bit")return Se;if(Gt("TERM")){if(/truecolor/.exec(Gt("TERM"))!==null)return Se;if(/^xterm-256/.exec(Gt("TERM"))!==null)return Ve;const i=Gt("TERM").toLowerCase();if(Yh[i])return Yh[i];if(Dg.some(c=>c.exec(i)!==null))return Kt}return Gt("COLORTERM")?Kt:Zn}const Ze={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",fg:{red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m"}},fr=["debug","info","success","warn","error"];function xg(i,c){return fr.indexOf(c)>=fr.indexOf(i)}const Hg={info:Ze.fg.blue,success:Ze.fg.green,warn:Ze.fg.yellow,error:Ze.fg.red,debug:Ze.fg.magenta},Bg=(i,c,s)=>{const r=new Date().toISOString();return s?`${Ze.dim}${r}${Ze.reset} ${Hg[i]}${i.toUpperCase()}${Ze.reset} ${Ze.bright}[Better Auth]:${Ze.reset} ${c}`:`${r} ${i.toUpperCase()} [Better Auth]: ${c}`},Lg=i=>{const c="error",s=Ng()!==1,r=(d,m,v=[])=>{if(!xg(c,d))return;const R=Bg(d,m,s);{d==="error"?console.error(R,...v):d==="warn"?console.warn(R,...v):console.log(R,...v);return}};return{...Object.fromEntries(fr.map(d=>[d,(...[m,...v])=>r(d,m,v)])),get level(){return c}}};Lg();function qg(i){return i.charAt(0).toUpperCase()+i.slice(1)}var bi=class extends Error{constructor(i,c){super(i,c),this.name="BetterAuthError",this.message=i,this.stack=""}};function wg(i){try{return(new URL(i).pathname.replace(/\/+$/,"")||"/")!=="/"}catch{throw new bi(`Invalid base URL: ${i}. Please provide a valid base URL.`)}}function Yg(i){try{const c=new URL(i);if(c.protocol!=="http:"&&c.protocol!=="https:")throw new bi(`Invalid base URL: ${i}. URL must include 'http://' or 'https://'`)}catch(c){throw c instanceof bi?c:new bi(`Invalid base URL: ${i}. Please provide a valid base URL.`,{cause:c})}}function Pf(i,c="/api/auth"){if(Yg(i),wg(i))return i;const s=i.replace(/\/+$/,"");return!c||c==="/"?s:(c=c.startsWith("/")?c:`/${c}`,`${s}${c}`)}function jg(i,c,s,r,d){if(i)return Pf(i,c);{const m=De.BETTER_AUTH_URL||De.NEXT_PUBLIC_BETTER_AUTH_URL||De.PUBLIC_BETTER_AUTH_URL||De.NUXT_PUBLIC_BETTER_AUTH_URL||De.NUXT_PUBLIC_AUTH_URL||(De.BASE_URL!=="/"?De.BASE_URL:void 0);if(m)return Pf(m,c)}if(typeof window<"u"&&window.location)return Pf(window.location.origin,c)}const Gg={id:"redirect",name:"Redirect",hooks:{onSuccess(i){var c,s;if((c=i.data)!=null&&c.url&&((s=i.data)!=null&&s.redirect)&&typeof window<"u"&&window.location&&window.location)try{window.location.href=i.data.url}catch{}}}},Xg={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},Qg=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,jh={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:Number.POSITIVE_INFINITY,"-infinity":Number.NEGATIVE_INFINITY},Vg=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function Zg(i){return i instanceof Date&&!isNaN(i.getTime())}function Jg(i){const c=Vg.exec(i);if(!c)return null;const[,s,r,d,m,v,R,y,h,b,E]=c,N=new Date(Date.UTC(parseInt(s,10),parseInt(r,10)-1,parseInt(d,10),parseInt(m,10),parseInt(v,10),parseInt(R,10),y?parseInt(y.padEnd(3,"0"),10):0));if(h){const q=(parseInt(b,10)*60+parseInt(E,10))*(h==="+"?-1:1);N.setUTCMinutes(N.getUTCMinutes()+q)}return Zg(N)?N:null}function Kg(i,c={}){const{strict:s=!1,warnings:r=!1,reviver:d,parseDates:m=!0}=c;if(typeof i!="string")return i;const v=i.trim();if(v.length>0&&v[0]==='"'&&v.endsWith('"')&&!v.slice(1,-1).includes('"'))return v.slice(1,-1);const R=v.toLowerCase();if(R.length<=9&&R in jh)return jh[R];if(!Qg.test(v)){if(s)throw new SyntaxError("[better-json] Invalid JSON");return i}if(Object.entries(Xg).some(([y,h])=>{const b=h.test(v);return b&&r&&console.warn(`[better-json] Detected potential prototype pollution attempt using ${y} pattern`),b})&&s)throw new Error("[better-json] Potential prototype pollution attempt detected");try{return JSON.parse(v,(h,b)=>{if(h==="__proto__"||h==="constructor"&&b&&typeof b=="object"&&"prototype"in b){r&&console.warn(`[better-json] Dropping "${h}" key to prevent prototype pollution`);return}if(m&&typeof b=="string"){const E=Jg(b);if(E)return E}return d?d(h,b):b})}catch(y){if(s)throw y;return i}}function $g(i,c={strict:!0}){return Kg(i,c)}let qe=[],wl=0;const mi=4,dm=i=>{let c=[],s={get(){return s.lc||s.listen(()=>{})(),s.value},lc:0,listen(r){return s.lc=c.push(r),()=>{for(let m=wl+mi;m<qe.length;)qe[m]===r?qe.splice(m,mi):m+=mi;let d=c.indexOf(r);~d&&(c.splice(d,1),--s.lc||s.off())}},notify(r,d){let m=!qe.length;for(let v of c)qe.push(v,s.value,r,d);if(m){for(wl=0;wl<qe.length;wl+=mi)qe[wl](qe[wl+1],qe[wl+2],qe[wl+3]);qe.length=0}},off(){},set(r){let d=s.value;d!==r&&(s.value=r,s.notify(d))},subscribe(r){let d=s.listen(r);return r(s.value),d},value:i};return s},Wg=5,yi=6,vi=10;let Fg=(i,c,s,r)=>(i.events=i.events||{},i.events[s+vi]||(i.events[s+vi]=r(d=>{i.events[s].reduceRight((m,v)=>(v(m),m),{shared:{},...d})})),i.events[s]=i.events[s]||[],i.events[s].push(c),()=>{let d=i.events[s],m=d.indexOf(c);d.splice(m,1),d.length||(delete i.events[s],i.events[s+vi](),delete i.events[s+vi])}),kg=1e3,hm=(i,c)=>Fg(i,r=>{let d=c(r);d&&i.events[yi].push(d)},Wg,r=>{let d=i.listen;i.listen=(...v)=>(!i.lc&&!i.active&&(i.active=!0,r()),d(...v));let m=i.off;return i.events[yi]=[],i.off=()=>{m(),setTimeout(()=>{if(i.active&&!i.lc){i.active=!1;for(let v of i.events[yi])v();i.events[yi]=[]}},kg)},()=>{i.listen=d,i.off=m}});function Ig(i,c,s){let r=new Set(c).add(void 0);return i.listen((d,m,v)=>{r.has(v)&&s(d,m,v)})}const Pg=()=>typeof window>"u",t1=(i,c,s,r)=>{const d=dm({data:null,error:null,isPending:!0,isRefetching:!1,refetch:R=>m(R)}),m=async R=>new Promise(y=>{const h=typeof r=="function"?r({data:d.get().data,error:d.get().error,isPending:d.get().isPending}):r;s(c,{...h,query:{...h==null?void 0:h.query,...R==null?void 0:R.query},async onSuccess(b){var E;d.set({data:b.data,error:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch}),await((E=h==null?void 0:h.onSuccess)==null?void 0:E.call(h,b))},async onError(b){var Q,j;const{request:E}=b,N=typeof E.retry=="number"?E.retry:(Q=E.retry)==null?void 0:Q.attempts,q=E.retryAttempt||0;N&&q<N||(d.set({error:b.error,data:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch}),await((j=h==null?void 0:h.onError)==null?void 0:j.call(h,b)))},async onRequest(b){var N;const E=d.get();d.set({isPending:E.data===null,data:E.data,error:null,isRefetching:!0,refetch:d.value.refetch}),await((N=h==null?void 0:h.onRequest)==null?void 0:N.call(h,b))}}).catch(b=>{d.set({error:b,data:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch})}).finally(()=>{y(void 0)})});i=Array.isArray(i)?i:[i];let v=!1;for(const R of i)R.subscribe(async()=>{Pg()||(v?await m():hm(d,()=>{const y=setTimeout(async()=>{v||(await m(),v=!0)},0);return()=>{d.off(),R.off(),clearTimeout(y)}}))});return d},tr=Symbol.for("better-auth:broadcast-channel"),e1=()=>Math.floor(Date.now()/1e3);var l1=class{constructor(i="better-auth.message"){Xa(this,"listeners",new Set);Xa(this,"name");this.name=i}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}post(i){if(!(typeof window>"u"))try{localStorage.setItem(this.name,JSON.stringify({...i,timestamp:e1()}))}catch{}}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const i=c=>{if(c.key!==this.name)return;const s=JSON.parse(c.newValue??"{}");(s==null?void 0:s.event)!=="session"||!(s!=null&&s.data)||this.listeners.forEach(r=>r(s))};return window.addEventListener("storage",i),()=>{window.removeEventListener("storage",i)}}};function er(i="better-auth.message"){return globalThis[tr]||(globalThis[tr]=new l1(i)),globalThis[tr]}const lr=Symbol.for("better-auth:focus-manager");var a1=class{constructor(){Xa(this,"listeners",new Set)}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}setFocused(i){this.listeners.forEach(c=>c(i))}setup(){if(typeof window>"u"||typeof document>"u"||typeof window.addEventListener>"u")return()=>{};const i=()=>{document.visibilityState==="visible"&&this.setFocused(!0)};return document.addEventListener("visibilitychange",i,!1),()=>{document.removeEventListener("visibilitychange",i,!1)}}};function Gh(){return globalThis[lr]||(globalThis[lr]=new a1),globalThis[lr]}const ar=Symbol.for("better-auth:online-manager");var n1=class{constructor(){Xa(this,"listeners",new Set);Xa(this,"isOnline",typeof navigator<"u"?navigator.onLine:!0)}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}setOnline(i){this.isOnline=i,this.listeners.forEach(c=>c(i))}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const i=()=>this.setOnline(!0),c=()=>this.setOnline(!1);return window.addEventListener("online",i,!1),window.addEventListener("offline",c,!1),()=>{window.removeEventListener("online",i,!1),window.removeEventListener("offline",c,!1)}}};function nr(){return globalThis[ar]||(globalThis[ar]=new n1),globalThis[ar]}const Qa=()=>Math.floor(Date.now()/1e3),u1=5;function i1(i){var $,L,F;const{sessionAtom:c,sessionSignal:s,$fetch:r,options:d={}}=i,m=(($=d.sessionOptions)==null?void 0:$.refetchInterval)??0,v=((L=d.sessionOptions)==null?void 0:L.refetchOnWindowFocus)??!0,R=((F=d.sessionOptions)==null?void 0:F.refetchWhenOffline)??!1,y={lastSync:0,lastSessionRequest:0,cachedSession:void 0},h=()=>R||nr().isOnline,b=W=>{if(!h())return;if((W==null?void 0:W.event)==="storage"){y.lastSync=Qa(),s.set(!s.get());return}const G=c.get();if((W==null?void 0:W.event)==="poll"){y.lastSessionRequest=Qa(),r("/get-session").then(K=>{K.error?c.set({...G,data:null,error:K.error}):c.set({...G,data:K.data,error:null}),y.lastSync=Qa(),s.set(!s.get())}).catch(()=>{});return}if((W==null?void 0:W.event)==="visibilitychange"){if(Qa()-y.lastSessionRequest<u1)return;y.lastSessionRequest=Qa()}((G==null?void 0:G.data)===null||(G==null?void 0:G.data)===void 0||(W==null?void 0:W.event)==="visibilitychange")&&(y.lastSync=Qa(),s.set(!s.get()))},E=W=>{er().post({event:"session",data:{trigger:W},clientId:Math.random().toString(36).substring(7)})},N=()=>{m&&m>0&&(y.pollInterval=setInterval(()=>{var W;(W=c.get())!=null&&W.data&&b({event:"poll"})},m*1e3))},q=()=>{y.unsubscribeBroadcast=er().subscribe(()=>{b({event:"storage"})})},Q=()=>{v&&(y.unsubscribeFocus=Gh().subscribe(()=>{b({event:"visibilitychange"})}))},j=()=>{y.unsubscribeOnline=nr().subscribe(W=>{W&&b({event:"visibilitychange"})})};return{init:()=>{N(),q(),Q(),j(),er().setup(),Gh().setup(),nr().setup()},cleanup:()=>{y.pollInterval&&(clearInterval(y.pollInterval),y.pollInterval=void 0),y.unsubscribeBroadcast&&(y.unsubscribeBroadcast(),y.unsubscribeBroadcast=void 0),y.unsubscribeFocus&&(y.unsubscribeFocus(),y.unsubscribeFocus=void 0),y.unsubscribeOnline&&(y.unsubscribeOnline(),y.unsubscribeOnline=void 0),y.lastSync=0,y.lastSessionRequest=0,y.cachedSession=void 0},triggerRefetch:b,broadcastSessionUpdate:E}}function c1(i,c){const s=dm(!1),r=t1(s,"/get-session",i,{method:"GET"});return hm(r,()=>{const d=i1({sessionAtom:r,sessionSignal:s,$fetch:i,options:c});return d.init(),()=>{d.cleanup()}}),{session:r,$sessionSignal:s}}var f1=Object.defineProperty,r1=Object.defineProperties,s1=Object.getOwnPropertyDescriptors,Xh=Object.getOwnPropertySymbols,o1=Object.prototype.hasOwnProperty,d1=Object.prototype.propertyIsEnumerable,Qh=(i,c,s)=>c in i?f1(i,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[c]=s,we=(i,c)=>{for(var s in c||(c={}))o1.call(c,s)&&Qh(i,s,c[s]);if(Xh)for(var s of Xh(c))d1.call(c,s)&&Qh(i,s,c[s]);return i},Qe=(i,c)=>r1(i,s1(c)),h1=class extends Error{constructor(i,c,s){super(c||i.toString(),{cause:s}),this.status=i,this.statusText=c,this.error=s,Error.captureStackTrace(this,this.constructor)}},m1=async(i,c)=>{var s,r,d,m,v,R;let y=c||{};const h={onRequest:[c==null?void 0:c.onRequest],onResponse:[c==null?void 0:c.onResponse],onSuccess:[c==null?void 0:c.onSuccess],onError:[c==null?void 0:c.onError],onRetry:[c==null?void 0:c.onRetry]};if(!c||!(c!=null&&c.plugins))return{url:i,options:y,hooks:h};for(const b of(c==null?void 0:c.plugins)||[]){if(b.init){const E=await((s=b.init)==null?void 0:s.call(b,i.toString(),c));y=E.options||y,i=E.url}h.onRequest.push((r=b.hooks)==null?void 0:r.onRequest),h.onResponse.push((d=b.hooks)==null?void 0:d.onResponse),h.onSuccess.push((m=b.hooks)==null?void 0:m.onSuccess),h.onError.push((v=b.hooks)==null?void 0:v.onError),h.onRetry.push((R=b.hooks)==null?void 0:R.onRetry)}return{url:i,options:y,hooks:h}},Vh=class{constructor(i){this.options=i}shouldAttemptRetry(i,c){return this.options.shouldRetry?Promise.resolve(i<this.options.attempts&&this.options.shouldRetry(c)):Promise.resolve(i<this.options.attempts)}getDelay(){return this.options.delay}},y1=class{constructor(i){this.options=i}shouldAttemptRetry(i,c){return this.options.shouldRetry?Promise.resolve(i<this.options.attempts&&this.options.shouldRetry(c)):Promise.resolve(i<this.options.attempts)}getDelay(i){return Math.min(this.options.maxDelay,this.options.baseDelay*2**i)}};function v1(i){if(typeof i=="number")return new Vh({type:"linear",attempts:i,delay:1e3});switch(i.type){case"linear":return new Vh(i);case"exponential":return new y1(i);default:throw new Error("Invalid retry strategy")}}var g1=async i=>{const c={},s=async r=>typeof r=="function"?await r():r;if(i!=null&&i.auth){if(i.auth.type==="Bearer"){const r=await s(i.auth.token);if(!r)return c;c.authorization=`Bearer ${r}`}else if(i.auth.type==="Basic"){const[r,d]=await Promise.all([s(i.auth.username),s(i.auth.password)]);if(!r||!d)return c;c.authorization=`Basic ${btoa(`${r}:${d}`)}`}else if(i.auth.type==="Custom"){const[r,d]=await Promise.all([s(i.auth.prefix),s(i.auth.value)]);if(!d)return c;c.authorization=`${r??""} ${d}`}}return c},p1=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function S1(i){const c=i.headers.get("content-type"),s=new Set(["image/svg","application/xml","application/xhtml","application/html"]);if(!c)return"json";const r=c.split(";").shift()||"";return p1.test(r)?"json":s.has(r)||r.startsWith("text/")?"text":"blob"}function b1(i){try{return JSON.parse(i),!0}catch{return!1}}function rr(i){if(i===void 0)return!1;const c=typeof i;return c==="string"||c==="number"||c==="boolean"||c===null?!0:c!=="object"?!1:Array.isArray(i)?!0:i.buffer?!1:i.constructor&&i.constructor.name==="Object"||typeof i.toJSON=="function"}function Zh(i){try{return JSON.parse(i)}catch{return i}}function Jh(i){return typeof i=="function"}function E1(i){if(i!=null&&i.customFetchImpl)return i.customFetchImpl;if(typeof globalThis<"u"&&Jh(globalThis.fetch))return globalThis.fetch;if(typeof window<"u"&&Jh(window.fetch))return window.fetch;throw new Error("No fetch implementation found")}async function T1(i){const c=new Headers(i==null?void 0:i.headers),s=await g1(i);for(const[r,d]of Object.entries(s||{}))c.set(r,d);if(!c.has("content-type")){const r=R1(i==null?void 0:i.body);r&&c.set("content-type",r)}return c}function R1(i){return rr(i)?"application/json":null}function _1(i){if(!(i!=null&&i.body))return null;const c=new Headers(i==null?void 0:i.headers);if(rr(i.body)&&!c.has("content-type")){for(const[s,r]of Object.entries(i==null?void 0:i.body))r instanceof Date&&(i.body[s]=r.toISOString());return JSON.stringify(i.body)}return c.has("content-type")&&c.get("content-type")==="application/x-www-form-urlencoded"&&rr(i.body)?new URLSearchParams(i.body).toString():i.body}function O1(i,c){var s;if(c!=null&&c.method)return c.method.toUpperCase();if(i.startsWith("@")){const r=(s=i.split("@")[1])==null?void 0:s.split("/")[0];return ym.includes(r)?r.toUpperCase():c!=null&&c.body?"POST":"GET"}return c!=null&&c.body?"POST":"GET"}function A1(i,c){let s;return!(i!=null&&i.signal)&&(i!=null&&i.timeout)&&(s=setTimeout(()=>c==null?void 0:c.abort(),i==null?void 0:i.timeout)),{abortTimeout:s,clearTimeout:()=>{s&&clearTimeout(s)}}}var z1=class mm extends Error{constructor(c,s){super(s||JSON.stringify(c,null,2)),this.issues=c,Object.setPrototypeOf(this,mm.prototype)}};async function Ei(i,c){const s=await i["~standard"].validate(c);if(s.issues)throw new z1(s.issues);return s.value}var ym=["get","post","put","patch","delete"],M1=i=>({id:"apply-schema",name:"Apply Schema",version:"1.0.0",async init(c,s){var r,d,m,v;const R=((d=(r=i.plugins)==null?void 0:r.find(y=>{var h;return(h=y.schema)!=null&&h.config?c.startsWith(y.schema.config.baseURL||"")||c.startsWith(y.schema.config.prefix||""):!1}))==null?void 0:d.schema)||i.schema;if(R){let y=c;(m=R.config)!=null&&m.prefix&&y.startsWith(R.config.prefix)&&(y=y.replace(R.config.prefix,""),R.config.baseURL&&(c=c.replace(R.config.prefix,R.config.baseURL))),(v=R.config)!=null&&v.baseURL&&y.startsWith(R.config.baseURL)&&(y=y.replace(R.config.baseURL,""));const h=R.schema[y];if(h){let b=Qe(we({},s),{method:h.method,output:h.output});return s!=null&&s.disableValidation||(b=Qe(we({},b),{body:h.input?await Ei(h.input,s==null?void 0:s.body):s==null?void 0:s.body,params:h.params?await Ei(h.params,s==null?void 0:s.params):s==null?void 0:s.params,query:h.query?await Ei(h.query,s==null?void 0:s.query):s==null?void 0:s.query})),{url:c,options:b}}}return{url:c,options:s}}}),U1=i=>{async function c(s,r){const d=Qe(we(we({},i),r),{plugins:[...(i==null?void 0:i.plugins)||[],M1(i||{}),...(r==null?void 0:r.plugins)||[]]});if(i!=null&&i.catchAllError)try{return await sr(s,d)}catch(m){return{data:null,error:{status:500,statusText:"Fetch Error",message:"Fetch related error. Captured by catchAllError option. See error property for more details.",error:m}}}return await sr(s,d)}return c};function C1(i,c){const{baseURL:s,params:r,query:d}=c||{query:{},params:{},baseURL:""};let m=i.startsWith("http")?i.split("/").slice(0,3).join("/"):s||"";if(i.startsWith("@")){const E=i.toString().split("@")[1].split("/")[0];ym.includes(E)&&(i=i.replace(`@${E}/`,"/"))}m.endsWith("/")||(m+="/");let[v,R]=i.replace(m,"").split("?");const y=new URLSearchParams(R);for(const[E,N]of Object.entries(d||{})){if(N==null)continue;let q;if(typeof N=="string")q=N;else if(Array.isArray(N)){for(const Q of N)y.append(E,Q);continue}else q=JSON.stringify(N);y.set(E,q)}if(r)if(Array.isArray(r)){const E=v.split("/").filter(N=>N.startsWith(":"));for(const[N,q]of E.entries()){const Q=r[N];v=v.replace(q,Q)}}else for(const[E,N]of Object.entries(r))v=v.replace(`:${E}`,String(N));v=v.split("/").map(encodeURIComponent).join("/"),v.startsWith("/")&&(v=v.slice(1));let h=y.toString();return h=h.length>0?`?${h}`.replace(/\+/g,"%20"):"",m.startsWith("http")?new URL(`${v}${h}`,m):`${m}${v}${h}`}var sr=async(i,c)=>{var s,r,d,m,v,R,y,h;const{hooks:b,url:E,options:N}=await m1(i,c),q=E1(N),Q=new AbortController,j=(s=N.signal)!=null?s:Q.signal,B=C1(E,N),V=_1(N),$=await T1(N),L=O1(E,N);let F=Qe(we({},N),{url:B,headers:$,body:V,method:L,signal:j});for(const Lt of b.onRequest)if(Lt){const Tt=await Lt(F);typeof Tt=="object"&&Tt!==null&&(F=Tt)}("pipeTo"in F&&typeof F.pipeTo=="function"||typeof((r=c==null?void 0:c.body)==null?void 0:r.pipe)=="function")&&("duplex"in F||(F.duplex="half"));const{clearTimeout:W}=A1(N,Q);let G=await q(F.url,F);W();const K={response:G,request:F};for(const Lt of b.onResponse)if(Lt){const Tt=await Lt(Qe(we({},K),{response:(d=c==null?void 0:c.hookOptions)!=null&&d.cloneResponse?G.clone():G}));Tt instanceof Response?G=Tt:typeof Tt=="object"&&Tt!==null&&(G=Tt.response)}if(G.ok){if(!(F.method!=="HEAD"))return{data:"",error:null};const Tt=S1(G),Nt={data:null,response:G,request:F};if(Tt==="json"||Tt==="text"){const M=await G.text(),w=(m=F.jsonParser)!=null?m:Zh;Nt.data=await w(M)}else Nt.data=await G[Tt]();F!=null&&F.output&&F.output&&!F.disableValidation&&(Nt.data=await Ei(F.output,Nt.data));for(const M of b.onSuccess)M&&await M(Qe(we({},Nt),{response:(v=c==null?void 0:c.hookOptions)!=null&&v.cloneResponse?G.clone():G}));return c!=null&&c.throw?Nt.data:{data:Nt.data,error:null}}const gt=(R=c==null?void 0:c.jsonParser)!=null?R:Zh,Ot=await G.text(),Qt=b1(Ot),P=Qt?await gt(Ot):null,Vt={response:G,responseText:Ot,request:F,error:Qe(we({},P),{status:G.status,statusText:G.statusText})};for(const Lt of b.onError)Lt&&await Lt(Qe(we({},Vt),{response:(y=c==null?void 0:c.hookOptions)!=null&&y.cloneResponse?G.clone():G}));if(c!=null&&c.retry){const Lt=v1(c.retry),Tt=(h=c.retryAttempt)!=null?h:0;if(await Lt.shouldAttemptRetry(Tt,G)){for(const M of b.onRetry)M&&await M(K);const Nt=Lt.getDelay(Tt);return await new Promise(M=>setTimeout(M,Nt)),await sr(i,Qe(we({},c),{retryAttempt:Tt+1}))}}if(c!=null&&c.throw)throw new h1(G.status,G.statusText,Qt?P:Ot);return{data:null,error:Qe(we({},P),{status:G.status,statusText:G.statusText})}};const D1=(i,c)=>{var F,W,G,K,gt,Ot,Qt;const s="credentials"in Request.prototype,r=jg(i==null?void 0:i.baseURL,i==null?void 0:i.basePath)??"/api/auth",d=((F=i==null?void 0:i.plugins)==null?void 0:F.flatMap(P=>P.fetchPlugins).filter(P=>P!==void 0))||[],m={id:"lifecycle-hooks",name:"lifecycle-hooks",hooks:{onSuccess:(W=i==null?void 0:i.fetchOptions)==null?void 0:W.onSuccess,onError:(G=i==null?void 0:i.fetchOptions)==null?void 0:G.onError,onRequest:(K=i==null?void 0:i.fetchOptions)==null?void 0:K.onRequest,onResponse:(gt=i==null?void 0:i.fetchOptions)==null?void 0:gt.onResponse}},{onSuccess:v,onError:R,onRequest:y,onResponse:h,...b}=(i==null?void 0:i.fetchOptions)||{},E=U1({baseURL:r,...s?{credentials:"include"}:{},method:"GET",jsonParser(P){return P?$g(P,{strict:!1}):null},customFetchImpl:fetch,...b,plugins:[m,...b.plugins||[],...i!=null&&i.disableDefaultFetchPlugins?[]:[Gg],...d]}),{$sessionSignal:N,session:q}=c1(E,i),Q=(i==null?void 0:i.plugins)||[],j={},B={$sessionSignal:N,session:q},V={"/sign-out":"POST","/revoke-sessions":"POST","/revoke-other-sessions":"POST","/delete-user":"POST"},$=[{signal:"$sessionSignal",matcher(P){return P==="/sign-out"||P==="/update-user"||P==="/sign-up/email"||P==="/sign-in/email"||P==="/delete-user"||P==="/verify-email"||P==="/revoke-sessions"||P==="/revoke-session"||P==="/change-email"}}];for(const P of Q)P.getAtoms&&Object.assign(B,(Ot=P.getAtoms)==null?void 0:Ot.call(P,E)),P.pathMethods&&Object.assign(V,P.pathMethods),P.atomListeners&&$.push(...P.atomListeners);const L={notify:P=>{B[P].set(!B[P].get())},listen:(P,Vt)=>{B[P].subscribe(Vt)},atoms:B};for(const P of Q)P.getActions&&Object.assign(j,(Qt=P.getActions)==null?void 0:Qt.call(P,E,L,i));return{get baseURL(){return r},pluginsActions:j,pluginsAtoms:B,pluginPathMethods:V,atomListeners:$,$fetch:E,$store:L}};function N1(i){return typeof i=="object"&&i!==null&&"get"in i&&typeof i.get=="function"&&"lc"in i&&typeof i.lc=="number"}function x1(i,c,s){const r=c[i],{fetchOptions:d,query:m,...v}=s||{};return r||(d!=null&&d.method?d.method:v&&Object.keys(v).length>0?"POST":"GET")}function H1(i,c,s,r,d){function m(v=[]){return new Proxy(function(){},{get(R,y){if(typeof y!="string"||y==="then"||y==="catch"||y==="finally")return;const h=[...v,y];let b=i;for(const E of h)if(b&&typeof b=="object"&&E in b)b=b[E];else{b=void 0;break}return typeof b=="function"||N1(b)?b:m(h)},apply:async(R,y,h)=>{const b="/"+v.map($=>$.replace(/[A-Z]/g,L=>`-${L.toLowerCase()}`)).join("/"),E=h[0]||{},N=h[1]||{},{query:q,fetchOptions:Q,...j}=E,B={...N,...Q},V=x1(b,s,E);return await c(b,{...B,body:V==="GET"?void 0:{...j,...(B==null?void 0:B.body)||{}},query:q||(B==null?void 0:B.query),method:V,async onSuccess($){var W;if(await((W=B==null?void 0:B.onSuccess)==null?void 0:W.call(B,$)),!d||B.disableSignal)return;const L=d.filter(G=>G.matcher(b));if(!L.length)return;const F=new Set;for(const G of L){const K=r[G.signal];if(!K)return;if(F.has(G.signal))continue;F.add(G.signal);const gt=K.get();setTimeout(()=>{K.set(!gt)},10)}}})}})}return m()}function B1(i,c={}){const s=U.useRef(i.get()),{keys:r,deps:d=[i,r]}=c,m=U.useCallback(R=>{const y=h=>{s.current!==h&&(s.current=h,R())};return y(i.value),r!=null&&r.length?Ig(i,r,y):i.listen(y)},d),v=()=>s.current;return U.useSyncExternalStore(m,v,v)}function L1(i){return`use${qg(i)}`}function K1(i){const{pluginPathMethods:c,pluginsActions:s,pluginsAtoms:r,$fetch:d,$store:m,atomListeners:v}=D1(i),R={};for(const[y,h]of Object.entries(r))R[L1(y)]=()=>B1(h);return H1({...s,...R,$fetch:d,$store:m},d,c,r,v)}export{Z1 as B,bg as N,Q1 as O,Y1 as R,X1 as a,V1 as b,K1 as c,$0 as d,G1 as e,j1 as f,dl as g,J1 as h,w1 as j,U as r,yr as u};
|
|
61
|
-
//# sourceMappingURL=framework-vendor-
|
|
60
|
+
Please change the parent <Route path="${L}"> to <Route path="${L==="/"?"*":`${L}/*`}">.`)}let N=dl(),q;if(c){let L=typeof c=="string"?Va(c):c;Ut(b==="/"||(($=L.pathname)==null?void 0:$.startsWith(b)),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${b}" but pathname "${L.pathname}" was given in the \`location\` prop.`),q=L}else q=N;let Q=q.pathname||"/",j=Q;if(b!=="/"){let L=b.replace(/^\//,"").split("/");j="/"+Q.replace(/^\//,"").split("/").slice(L.length).join("/")}let B=$h(i,{pathname:j});Ne(E||B!=null,`No routes matched location "${q.pathname}${q.search}${q.hash}" `),Ne(B==null||B[B.length-1].route.element!==void 0||B[B.length-1].route.Component!==void 0||B[B.length-1].route.lazy!==void 0,`Matched leaf route at location "${q.pathname}${q.search}${q.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let V=j0(B&&B.map(L=>Object.assign({},L,{params:Object.assign({},y,L.params),pathname:sl([b,m.encodeLocation?m.encodeLocation(L.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:L.pathname]),pathnameBase:L.pathnameBase==="/"?b:sl([b,m.encodeLocation?m.encodeLocation(L.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:L.pathnameBase])})),v,s,r,d);return c&&V?U.createElement(Kn.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...q},navigationType:"POP"}},V):V}function L0(){let i=Z0(),c=E0(i)?`${i.status} ${i.statusText}`:i instanceof Error?i.message:JSON.stringify(i),s=i instanceof Error?i.stack:null,r="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:r},m={padding:"2px 4px",backgroundColor:r},v=null;return console.error("Error handled by React Router default ErrorBoundary:",i),v=U.createElement(U.Fragment,null,U.createElement("p",null,"💿 Hey developer 👋"),U.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",U.createElement("code",{style:m},"ErrorBoundary")," or"," ",U.createElement("code",{style:m},"errorElement")," prop on your route.")),U.createElement(U.Fragment,null,U.createElement("h2",null,"Unexpected Application Error!"),U.createElement("h3",{style:{fontStyle:"italic"}},c),s?U.createElement("pre",{style:d},s):null,v)}var q0=U.createElement(L0,null),um=class extends U.Component{constructor(i){super(i),this.state={location:i.location,revalidation:i.revalidation,error:i.error}}static getDerivedStateFromError(i){return{error:i}}static getDerivedStateFromProps(i,c){return c.location!==i.location||c.revalidation!=="idle"&&i.revalidation==="idle"?{error:i.error,location:i.location,revalidation:i.revalidation}:{error:i.error!==void 0?i.error:c.error,location:c.location,revalidation:i.revalidation||c.revalidation}}componentDidCatch(i,c){this.props.onError?this.props.onError(i,c):console.error("React Router caught the following error during render",i)}render(){let i=this.state.error;if(this.context&&typeof i=="object"&&i&&"digest"in i&&typeof i.digest=="string"){const s=C0(i.digest);s&&(i=s)}let c=i!==void 0?U.createElement(xe.Provider,{value:this.props.routeContext},U.createElement(mr.Provider,{value:i,children:this.props.component})):this.props.children;return this.context?U.createElement(w0,{error:i},c):c}};um.contextType=_0;var kf=new WeakMap;function w0({children:i,error:c}){let{basename:s}=U.useContext(be);if(typeof c=="object"&&c&&"digest"in c&&typeof c.digest=="string"){let r=U0(c.digest);if(r){let d=kf.get(c);if(d)throw d;let m=Ih(r.location,s);if(kh&&!kf.get(c))if(m.isExternal||r.reloadDocument)window.location.href=m.absoluteURL||m.to;else{const v=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(m.to,{replace:r.replace}));throw kf.set(c,v),v}return U.createElement("meta",{httpEquiv:"refresh",content:`0;url=${m.absoluteURL||m.to}`})}}return i}function Y0({routeContext:i,match:c,children:s}){let r=U.useContext(Za);return r&&r.static&&r.staticContext&&(c.route.errorElement||c.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=c.route.id),U.createElement(xe.Provider,{value:i},s)}function j0(i,c=[],s=null,r=null,d=null){if(i==null){if(!s)return null;if(s.errors)i=s.matches;else if(c.length===0&&!s.initialized&&s.matches.length>0)i=s.matches;else return null}let m=i,v=s==null?void 0:s.errors;if(v!=null){let b=m.findIndex(E=>E.route.id&&(v==null?void 0:v[E.route.id])!==void 0);Ut(b>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(v).join(",")}`),m=m.slice(0,Math.min(m.length,b+1))}let R=!1,y=-1;if(s)for(let b=0;b<m.length;b++){let E=m[b];if((E.route.HydrateFallback||E.route.hydrateFallbackElement)&&(y=b),E.route.id){let{loaderData:N,errors:q}=s,Q=E.route.loader&&!N.hasOwnProperty(E.route.id)&&(!q||q[E.route.id]===void 0);if(E.route.lazy||Q){R=!0,y>=0?m=m.slice(0,y+1):m=[m[0]];break}}}let h=s&&r?(b,E)=>{var N,q;r(b,{location:s.location,params:((q=(N=s.matches)==null?void 0:N[0])==null?void 0:q.params)??{},unstable_pattern:T0(s.matches),errorInfo:E})}:void 0;return m.reduceRight((b,E,N)=>{let q,Q=!1,j=null,B=null;s&&(q=v&&E.route.id?v[E.route.id]:void 0,j=E.route.errorElement||q0,R&&(y<0&&N===0?(im("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),Q=!0,B=null):y===N&&(Q=!0,B=E.route.hydrateFallbackElement||null)));let V=c.concat(m.slice(0,N+1)),$=()=>{let L;return q?L=j:Q?L=B:E.route.Component?L=U.createElement(E.route.Component,null):E.route.element?L=E.route.element:L=b,U.createElement(Y0,{match:E,routeContext:{outlet:b,matches:V,isDataRoute:s!=null},children:L})};return s&&(E.route.ErrorBoundary||E.route.errorElement||N===0)?U.createElement(um,{location:s.location,revalidation:s.revalidation,component:j,error:q,children:$(),routeContext:{outlet:null,matches:V,isDataRoute:!0},onError:h}):$()},null)}function vr(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function G0(i){let c=U.useContext(Za);return Ut(c,vr(i)),c}function X0(i){let c=U.useContext(Ri);return Ut(c,vr(i)),c}function Q0(i){let c=U.useContext(xe);return Ut(c,vr(i)),c}function gr(i){let c=Q0(i),s=c.matches[c.matches.length-1];return Ut(s.route.id,`${i} can only be used on routes that contain a unique "id"`),s.route.id}function V0(){return gr("useRouteId")}function Z0(){var r;let i=U.useContext(mr),c=X0("useRouteError"),s=gr("useRouteError");return i!==void 0?i:(r=c.errors)==null?void 0:r[s]}function J0(){let{router:i}=G0("useNavigate"),c=gr("useNavigate"),s=U.useRef(!1);return am(()=>{s.current=!0}),U.useCallback(async(d,m={})=>{Ne(s.current,lm),s.current&&(typeof d=="number"?await i.navigate(d):await i.navigate(d,{fromRouteId:c,...m}))},[i,c])}var Lh={};function im(i,c,s){!c&&!Lh[i]&&(Lh[i]=!0,Ne(!1,s))}U.memo(K0);function K0({routes:i,future:c,state:s,onError:r}){return nm(i,void 0,s,r,c)}function X1({to:i,replace:c,state:s,relative:r}){Ut(Ja(),"<Navigate> may be used only in the context of a <Router> component.");let{static:d}=U.useContext(be);Ne(!d,"<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.");let{matches:m}=U.useContext(xe),{pathname:v}=dl(),R=yr(),y=hr(i,dr(m),v,r==="path"),h=JSON.stringify(y);return U.useEffect(()=>{R(JSON.parse(h),{replace:c,state:s,relative:r})},[R,h,r,c,s]),null}function Q1(i){return H0(i.context)}function $0(i){Ut(!1,"A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.")}function W0({basename:i="/",children:c=null,location:s,navigationType:r="POP",navigator:d,static:m=!1,unstable_useTransitions:v}){Ut(!Ja(),"You cannot render a <Router> inside another <Router>. You should never have more than one in your app.");let R=i.replace(/^\/*/,"/"),y=U.useMemo(()=>({basename:R,navigator:d,static:m,unstable_useTransitions:v,future:{}}),[R,d,m,v]);typeof s=="string"&&(s=Va(s));let{pathname:h="/",search:b="",hash:E="",state:N=null,key:q="default"}=s,Q=U.useMemo(()=>{let j=ol(h,R);return j==null?null:{location:{pathname:j,search:b,hash:E,state:N,key:q},navigationType:r}},[R,h,b,E,N,q,r]);return Ne(Q!=null,`<Router basename="${R}"> is not able to match the URL "${h}${b}${E}" because it does not start with the basename, so the <Router> won't render anything.`),Q==null?null:U.createElement(be.Provider,{value:y},U.createElement(Kn.Provider,{children:c,value:Q}))}function V1({children:i,location:c}){return B0(ir(i),c)}function ir(i,c=[]){let s=[];return U.Children.forEach(i,(r,d)=>{if(!U.isValidElement(r))return;let m=[...c,d];if(r.type===U.Fragment){s.push.apply(s,ir(r.props.children,m));return}Ut(r.type===$0,`[${typeof r.type=="string"?r.type:r.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),Ut(!r.props.index||!r.props.children,"An index route cannot have child routes.");let v={id:r.props.id||m.join("-"),caseSensitive:r.props.caseSensitive,element:r.props.element,Component:r.props.Component,index:r.props.index,path:r.props.path,middleware:r.props.middleware,loader:r.props.loader,action:r.props.action,hydrateFallbackElement:r.props.hydrateFallbackElement,HydrateFallback:r.props.HydrateFallback,errorElement:r.props.errorElement,ErrorBoundary:r.props.ErrorBoundary,hasErrorBoundary:r.props.hasErrorBoundary===!0||r.props.ErrorBoundary!=null||r.props.errorElement!=null,shouldRevalidate:r.props.shouldRevalidate,handle:r.props.handle,lazy:r.props.lazy};r.props.children&&(v.children=ir(r.props.children,m)),s.push(v)}),s}var gi="get",pi="application/x-www-form-urlencoded";function _i(i){return typeof HTMLElement<"u"&&i instanceof HTMLElement}function F0(i){return _i(i)&&i.tagName.toLowerCase()==="button"}function k0(i){return _i(i)&&i.tagName.toLowerCase()==="form"}function I0(i){return _i(i)&&i.tagName.toLowerCase()==="input"}function P0(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function tg(i,c){return i.button===0&&(!c||c==="_self")&&!P0(i)}function cr(i=""){return new URLSearchParams(typeof i=="string"||Array.isArray(i)||i instanceof URLSearchParams?i:Object.keys(i).reduce((c,s)=>{let r=i[s];return c.concat(Array.isArray(r)?r.map(d=>[s,d]):[[s,r]])},[]))}function eg(i,c){let s=cr(i);return c&&c.forEach((r,d)=>{s.has(d)||c.getAll(d).forEach(m=>{s.append(d,m)})}),s}var hi=null;function lg(){if(hi===null)try{new FormData(document.createElement("form"),0),hi=!1}catch{hi=!0}return hi}var ag=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function If(i){return i!=null&&!ag.has(i)?(Ne(!1,`"${i}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${pi}"`),null):i}function ng(i,c){let s,r,d,m,v;if(k0(i)){let R=i.getAttribute("action");r=R?ol(R,c):null,s=i.getAttribute("method")||gi,d=If(i.getAttribute("enctype"))||pi,m=new FormData(i)}else if(F0(i)||I0(i)&&(i.type==="submit"||i.type==="image")){let R=i.form;if(R==null)throw new Error('Cannot submit a <button> or <input type="submit"> without a <form>');let y=i.getAttribute("formaction")||R.getAttribute("action");if(r=y?ol(y,c):null,s=i.getAttribute("formmethod")||R.getAttribute("method")||gi,d=If(i.getAttribute("formenctype"))||If(R.getAttribute("enctype"))||pi,m=new FormData(R,i),!lg()){let{name:h,type:b,value:E}=i;if(b==="image"){let N=h?`${h}.`:"";m.append(`${N}x`,"0"),m.append(`${N}y`,"0")}else h&&m.append(h,E)}}else{if(_i(i))throw new Error('Cannot submit element that is not <form>, <button>, or <input type="submit|image">');s=gi,r=null,d=pi,v=i}return m&&d==="text/plain"&&(v=m,m=void 0),{action:r,method:s.toLowerCase(),encType:d,formData:m,body:v}}Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function pr(i,c){if(i===!1||i===null||typeof i>"u")throw new Error(c)}function ug(i,c,s,r){let d=typeof i=="string"?new URL(i,typeof window>"u"?"server://singlefetch/":window.location.origin):i;return s?d.pathname.endsWith("/")?d.pathname=`${d.pathname}_.${r}`:d.pathname=`${d.pathname}.${r}`:d.pathname==="/"?d.pathname=`_root.${r}`:c&&ol(d.pathname,c)==="/"?d.pathname=`${c.replace(/\/$/,"")}/_root.${r}`:d.pathname=`${d.pathname.replace(/\/$/,"")}.${r}`,d}async function ig(i,c){if(i.id in c)return c[i.id];try{let s=await import(i.module);return c[i.id]=s,s}catch(s){return console.error(`Error loading route module \`${i.module}\`, reloading page...`),console.error(s),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function cg(i){return i==null?!1:i.href==null?i.rel==="preload"&&typeof i.imageSrcSet=="string"&&typeof i.imageSizes=="string":typeof i.rel=="string"&&typeof i.href=="string"}async function fg(i,c,s){let r=await Promise.all(i.map(async d=>{let m=c.routes[d.route.id];if(m){let v=await ig(m,s);return v.links?v.links():[]}return[]}));return dg(r.flat(1).filter(cg).filter(d=>d.rel==="stylesheet"||d.rel==="preload").map(d=>d.rel==="stylesheet"?{...d,rel:"prefetch",as:"style"}:{...d,rel:"prefetch"}))}function qh(i,c,s,r,d,m){let v=(y,h)=>s[h]?y.route.id!==s[h].route.id:!0,R=(y,h)=>{var b;return s[h].pathname!==y.pathname||((b=s[h].route.path)==null?void 0:b.endsWith("*"))&&s[h].params["*"]!==y.params["*"]};return m==="assets"?c.filter((y,h)=>v(y,h)||R(y,h)):m==="data"?c.filter((y,h)=>{var E;let b=r.routes[y.route.id];if(!b||!b.hasLoader)return!1;if(v(y,h)||R(y,h))return!0;if(y.route.shouldRevalidate){let N=y.route.shouldRevalidate({currentUrl:new URL(d.pathname+d.search+d.hash,window.origin),currentParams:((E=s[0])==null?void 0:E.params)||{},nextUrl:new URL(i,window.origin),nextParams:y.params,defaultShouldRevalidate:!0});if(typeof N=="boolean")return N}return!0}):[]}function rg(i,c,{includeHydrateFallback:s}={}){return sg(i.map(r=>{let d=c.routes[r.route.id];if(!d)return[];let m=[d.module];return d.clientActionModule&&(m=m.concat(d.clientActionModule)),d.clientLoaderModule&&(m=m.concat(d.clientLoaderModule)),s&&d.hydrateFallbackModule&&(m=m.concat(d.hydrateFallbackModule)),d.imports&&(m=m.concat(d.imports)),m}).flat(1))}function sg(i){return[...new Set(i)]}function og(i){let c={},s=Object.keys(i).sort();for(let r of s)c[r]=i[r];return c}function dg(i,c){let s=new Set;return new Set(c),i.reduce((r,d)=>{let m=JSON.stringify(og(d));return s.has(m)||(s.add(m),r.push({key:m,link:d})),r},[])}function cm(){let i=U.useContext(Za);return pr(i,"You must render this element inside a <DataRouterContext.Provider> element"),i}function hg(){let i=U.useContext(Ri);return pr(i,"You must render this element inside a <DataRouterStateContext.Provider> element"),i}var Sr=U.createContext(void 0);Sr.displayName="FrameworkContext";function fm(){let i=U.useContext(Sr);return pr(i,"You must render this element inside a <HydratedRouter> element"),i}function mg(i,c){let s=U.useContext(Sr),[r,d]=U.useState(!1),[m,v]=U.useState(!1),{onFocus:R,onBlur:y,onMouseEnter:h,onMouseLeave:b,onTouchStart:E}=c,N=U.useRef(null);U.useEffect(()=>{if(i==="render"&&v(!0),i==="viewport"){let j=V=>{V.forEach($=>{v($.isIntersecting)})},B=new IntersectionObserver(j,{threshold:.5});return N.current&&B.observe(N.current),()=>{B.disconnect()}}},[i]),U.useEffect(()=>{if(r){let j=setTimeout(()=>{v(!0)},100);return()=>{clearTimeout(j)}}},[r]);let q=()=>{d(!0)},Q=()=>{d(!1),v(!1)};return s?i!=="intent"?[m,N,{}]:[m,N,{onFocus:Qn(R,q),onBlur:Qn(y,Q),onMouseEnter:Qn(h,q),onMouseLeave:Qn(b,Q),onTouchStart:Qn(E,q)}]:[!1,N,{}]}function Qn(i,c){return s=>{i&&i(s),s.defaultPrevented||c(s)}}function yg({page:i,...c}){let{router:s}=cm(),r=U.useMemo(()=>$h(s.routes,i,s.basename),[s.routes,i,s.basename]);return r?U.createElement(gg,{page:i,matches:r,...c}):null}function vg(i){let{manifest:c,routeModules:s}=fm(),[r,d]=U.useState([]);return U.useEffect(()=>{let m=!1;return fg(i,c,s).then(v=>{m||d(v)}),()=>{m=!0}},[i,c,s]),r}function gg({page:i,matches:c,...s}){let r=dl(),{future:d,manifest:m,routeModules:v}=fm(),{basename:R}=cm(),{loaderData:y,matches:h}=hg(),b=U.useMemo(()=>qh(i,c,h,m,r,"data"),[i,c,h,m,r]),E=U.useMemo(()=>qh(i,c,h,m,r,"assets"),[i,c,h,m,r]),N=U.useMemo(()=>{if(i===r.pathname+r.search+r.hash)return[];let j=new Set,B=!1;if(c.forEach($=>{var F;let L=m.routes[$.route.id];!L||!L.hasLoader||(!b.some(W=>W.route.id===$.route.id)&&$.route.id in y&&((F=v[$.route.id])!=null&&F.shouldRevalidate)||L.hasClientLoader?B=!0:j.add($.route.id))}),j.size===0)return[];let V=ug(i,R,d.unstable_trailingSlashAwareDataRequests,"data");return B&&j.size>0&&V.searchParams.set("_routes",c.filter($=>j.has($.route.id)).map($=>$.route.id).join(",")),[V.pathname+V.search]},[R,d.unstable_trailingSlashAwareDataRequests,y,r,m,b,c,i,v]),q=U.useMemo(()=>rg(E,m),[E,m]),Q=vg(E);return U.createElement(U.Fragment,null,N.map(j=>U.createElement("link",{key:j,rel:"prefetch",as:"fetch",href:j,...s})),q.map(j=>U.createElement("link",{key:j,rel:"modulepreload",href:j,...s})),Q.map(({key:j,link:B})=>U.createElement("link",{key:j,nonce:s.nonce,...B,crossOrigin:B.crossOrigin??s.crossOrigin})))}function pg(...i){return c=>{i.forEach(s=>{typeof s=="function"?s(c):s!=null&&(s.current=c)})}}var Sg=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";try{Sg&&(window.__reactRouterVersion="7.13.0")}catch{}function Z1({basename:i,children:c,unstable_useTransitions:s,window:r}){let d=U.useRef();d.current==null&&(d.current=kv({window:r,v5Compat:!0}));let m=d.current,[v,R]=U.useState({action:m.action,location:m.location}),y=U.useCallback(h=>{s===!1?R(h):U.startTransition(()=>R(h))},[s]);return U.useLayoutEffect(()=>m.listen(y),[m,y]),U.createElement(W0,{basename:i,children:c,location:v.location,navigationType:v.action,navigator:m,unstable_useTransitions:s})}var rm=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,sm=U.forwardRef(function({onClick:c,discover:s="render",prefetch:r="none",relative:d,reloadDocument:m,replace:v,state:R,target:y,to:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N,...q},Q){let{basename:j,unstable_useTransitions:B}=U.useContext(be),V=typeof h=="string"&&rm.test(h),$=Ih(h,j);h=$.to;let L=D0(h,{relative:d}),[F,W,G]=mg(r,q),K=Rg(h,{replace:v,state:R,target:y,preventScrollReset:b,relative:d,viewTransition:E,unstable_defaultShouldRevalidate:N,unstable_useTransitions:B});function gt(Qt){c&&c(Qt),Qt.defaultPrevented||K(Qt)}let Ot=U.createElement("a",{...q,...G,href:$.absoluteURL||L,onClick:$.isExternal||m?c:gt,ref:pg(Q,W),target:y,"data-discover":!V&&s==="render"?"true":void 0});return F&&!V?U.createElement(U.Fragment,null,Ot,U.createElement(yg,{page:L})):Ot});sm.displayName="Link";var bg=U.forwardRef(function({"aria-current":c="page",caseSensitive:s=!1,className:r="",end:d=!1,style:m,to:v,viewTransition:R,children:y,...h},b){let E=$n(v,{relative:h.relative}),N=dl(),q=U.useContext(Ri),{navigator:Q,basename:j}=U.useContext(be),B=q!=null&&Mg(E)&&R===!0,V=Q.encodeLocation?Q.encodeLocation(E).pathname:E.pathname,$=N.pathname,L=q&&q.navigation&&q.navigation.location?q.navigation.location.pathname:null;s||($=$.toLowerCase(),L=L?L.toLowerCase():null,V=V.toLowerCase()),L&&j&&(L=ol(L,j)||L);const F=V!=="/"&&V.endsWith("/")?V.length-1:V.length;let W=$===V||!d&&$.startsWith(V)&&$.charAt(F)==="/",G=L!=null&&(L===V||!d&&L.startsWith(V)&&L.charAt(V.length)==="/"),K={isActive:W,isPending:G,isTransitioning:B},gt=W?c:void 0,Ot;typeof r=="function"?Ot=r(K):Ot=[r,W?"active":null,G?"pending":null,B?"transitioning":null].filter(Boolean).join(" ");let Qt=typeof m=="function"?m(K):m;return U.createElement(sm,{...h,"aria-current":gt,className:Ot,ref:b,style:Qt,to:v,viewTransition:R},typeof y=="function"?y(K):y)});bg.displayName="NavLink";var Eg=U.forwardRef(({discover:i="render",fetcherKey:c,navigate:s,reloadDocument:r,replace:d,state:m,method:v=gi,action:R,onSubmit:y,relative:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N,...q},Q)=>{let{unstable_useTransitions:j}=U.useContext(be),B=Ag(),V=zg(R,{relative:h}),$=v.toLowerCase()==="get"?"get":"post",L=typeof R=="string"&&rm.test(R),F=W=>{if(y&&y(W),W.defaultPrevented)return;W.preventDefault();let G=W.nativeEvent.submitter,K=(G==null?void 0:G.getAttribute("formmethod"))||v,gt=()=>B(G||W.currentTarget,{fetcherKey:c,method:K,navigate:s,replace:d,state:m,relative:h,preventScrollReset:b,viewTransition:E,unstable_defaultShouldRevalidate:N});j&&s!==!1?U.startTransition(()=>gt()):gt()};return U.createElement("form",{ref:Q,method:$,action:V,onSubmit:r?y:F,...q,"data-discover":!L&&i==="render"?"true":void 0})});Eg.displayName="Form";function Tg(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function om(i){let c=U.useContext(Za);return Ut(c,Tg(i)),c}function Rg(i,{target:c,replace:s,state:r,preventScrollReset:d,relative:m,viewTransition:v,unstable_defaultShouldRevalidate:R,unstable_useTransitions:y}={}){let h=yr(),b=dl(),E=$n(i,{relative:m});return U.useCallback(N=>{if(tg(N,c)){N.preventDefault();let q=s!==void 0?s:Jn(b)===Jn(E),Q=()=>h(i,{replace:q,state:r,preventScrollReset:d,relative:m,viewTransition:v,unstable_defaultShouldRevalidate:R});y?U.startTransition(()=>Q()):Q()}},[b,h,E,s,r,c,i,d,m,v,R,y])}function J1(i){Ne(typeof URLSearchParams<"u","You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let c=U.useRef(cr(i)),s=U.useRef(!1),r=dl(),d=U.useMemo(()=>eg(r.search,s.current?null:c.current),[r.search]),m=yr(),v=U.useCallback((R,y)=>{const h=cr(typeof R=="function"?R(new URLSearchParams(d)):R);s.current=!0,m("?"+h,y)},[m,d]);return[d,v]}var _g=0,Og=()=>`__${String(++_g)}__`;function Ag(){let{router:i}=om("useSubmit"),{basename:c}=U.useContext(be),s=V0(),r=i.fetch,d=i.navigate;return U.useCallback(async(m,v={})=>{let{action:R,method:y,encType:h,formData:b,body:E}=ng(m,c);if(v.navigate===!1){let N=v.fetcherKey||Og();await r(N,s,v.action||R,{unstable_defaultShouldRevalidate:v.unstable_defaultShouldRevalidate,preventScrollReset:v.preventScrollReset,formData:b,body:E,formMethod:v.method||y,formEncType:v.encType||h,flushSync:v.flushSync})}else await d(v.action||R,{unstable_defaultShouldRevalidate:v.unstable_defaultShouldRevalidate,preventScrollReset:v.preventScrollReset,formData:b,body:E,formMethod:v.method||y,formEncType:v.encType||h,replace:v.replace,state:v.state,fromRouteId:s,flushSync:v.flushSync,viewTransition:v.viewTransition})},[r,d,c,s])}function zg(i,{relative:c}={}){let{basename:s}=U.useContext(be),r=U.useContext(xe);Ut(r,"useFormAction must be used inside a RouteContext");let[d]=r.matches.slice(-1),m={...$n(i||".",{relative:c})},v=dl();if(i==null){m.search=v.search;let R=new URLSearchParams(m.search),y=R.getAll("index");if(y.some(b=>b==="")){R.delete("index"),y.filter(E=>E).forEach(E=>R.append("index",E));let b=R.toString();m.search=b?`?${b}`:""}}return(!i||i===".")&&d.route.index&&(m.search=m.search?m.search.replace(/^\?/,"?index&"):"?index"),s!=="/"&&(m.pathname=m.pathname==="/"?s:sl([s,m.pathname])),Jn(m)}function Mg(i,{relative:c}={}){let s=U.useContext(tm);Ut(s!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=om("useViewTransitionState"),d=$n(i,{relative:c});if(!s.isTransitioning)return!1;let m=ol(s.currentLocation.pathname,r)||s.currentLocation.pathname,v=ol(s.nextLocation.pathname,r)||s.nextLocation.pathname;return Ti(d.pathname,v)!=null||Ti(d.pathname,m)!=null}var Ug={},wh={};const Si=Object.create(null),Vn=i=>{var c;return Ug||((c=globalThis.Deno)==null?void 0:c.env.toObject())||globalThis.__env__||(i?Si:globalThis)},De=new Proxy(Si,{get(i,c){return Vn()[c]??Si[c]},has(i,c){return c in Vn()||c in Si},set(i,c,s){const r=Vn(!0);return r[c]=s,!0},deleteProperty(i,c){if(!c)return!1;const s=Vn(!0);return delete s[c],!0},ownKeys(){const i=Vn(!0);return Object.keys(i)}});function Gt(i,c){return typeof process<"u"&&wh?wh[i]??c:typeof Deno<"u"?Deno.env.get(i)??c:typeof Bun<"u"?Bun.env[i]??c:c}const Zn=1,Kt=4,Ve=8,Se=24,Yh={eterm:Kt,cons25:Kt,console:Kt,cygwin:Kt,dtterm:Kt,gnome:Kt,hurd:Kt,jfbterm:Kt,konsole:Kt,kterm:Kt,mlterm:Kt,mosh:Se,putty:Kt,st:Kt,"rxvt-unicode-24bit":Se,terminator:Se,"xterm-kitty":Se},Cg=new Map(Object.entries({APPVEYOR:Ve,BUILDKITE:Ve,CIRCLECI:Se,DRONE:Ve,GITEA_ACTIONS:Se,GITHUB_ACTIONS:Se,GITLAB_CI:Ve,TRAVIS:Ve})),Dg=[/ansi/,/color/,/linux/,/direct/,/^con[0-9]*x[0-9]/,/^rxvt/,/^screen/,/^xterm/,/^vt100/,/^vt220/];function Ng(){if(Gt("FORCE_COLOR")!==void 0)switch(Gt("FORCE_COLOR")){case"":case"1":case"true":return Kt;case"2":return Ve;case"3":return Se;default:return Zn}if(Gt("NODE_DISABLE_COLORS")!==void 0&&Gt("NODE_DISABLE_COLORS")!==""||Gt("NO_COLOR")!==void 0&&Gt("NO_COLOR")!==""||Gt("TERM")==="dumb")return Zn;if(Gt("TMUX"))return Se;if("TF_BUILD"in De&&"AGENT_NAME"in De)return Kt;if("CI"in De){for(const{0:i,1:c}of Cg)if(i in De)return c;return Gt("CI_NAME")==="codeship"?Ve:Zn}if("TEAMCITY_VERSION"in De)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.exec(Gt("TEAMCITY_VERSION"))!==null?Kt:Zn;switch(Gt("TERM_PROGRAM")){case"iTerm.app":return!Gt("TERM_PROGRAM_VERSION")||/^[0-2]\./.exec(Gt("TERM_PROGRAM_VERSION"))!==null?Ve:Se;case"HyperTerm":case"MacTerm":return Se;case"Apple_Terminal":return Ve}if(Gt("COLORTERM")==="truecolor"||Gt("COLORTERM")==="24bit")return Se;if(Gt("TERM")){if(/truecolor/.exec(Gt("TERM"))!==null)return Se;if(/^xterm-256/.exec(Gt("TERM"))!==null)return Ve;const i=Gt("TERM").toLowerCase();if(Yh[i])return Yh[i];if(Dg.some(c=>c.exec(i)!==null))return Kt}return Gt("COLORTERM")?Kt:Zn}const Ze={reset:"\x1B[0m",bright:"\x1B[1m",dim:"\x1B[2m",fg:{red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m"}},fr=["debug","info","success","warn","error"];function xg(i,c){return fr.indexOf(c)>=fr.indexOf(i)}const Hg={info:Ze.fg.blue,success:Ze.fg.green,warn:Ze.fg.yellow,error:Ze.fg.red,debug:Ze.fg.magenta},Bg=(i,c,s)=>{const r=new Date().toISOString();return s?`${Ze.dim}${r}${Ze.reset} ${Hg[i]}${i.toUpperCase()}${Ze.reset} ${Ze.bright}[Better Auth]:${Ze.reset} ${c}`:`${r} ${i.toUpperCase()} [Better Auth]: ${c}`},Lg=i=>{const c="error",s=Ng()!==1,r=(d,m,v=[])=>{if(!xg(c,d))return;const R=Bg(d,m,s);{d==="error"?console.error(R,...v):d==="warn"?console.warn(R,...v):console.log(R,...v);return}};return{...Object.fromEntries(fr.map(d=>[d,(...[m,...v])=>r(d,m,v)])),get level(){return c}}};Lg();function qg(i){return i.charAt(0).toUpperCase()+i.slice(1)}var bi=class extends Error{constructor(i,c){super(i,c),this.name="BetterAuthError",this.message=i,this.stack=""}};function wg(i){try{return(new URL(i).pathname.replace(/\/+$/,"")||"/")!=="/"}catch{throw new bi(`Invalid base URL: ${i}. Please provide a valid base URL.`)}}function Yg(i){try{const c=new URL(i);if(c.protocol!=="http:"&&c.protocol!=="https:")throw new bi(`Invalid base URL: ${i}. URL must include 'http://' or 'https://'`)}catch(c){throw c instanceof bi?c:new bi(`Invalid base URL: ${i}. Please provide a valid base URL.`,{cause:c})}}function Pf(i,c="/api/auth"){if(Yg(i),wg(i))return i;const s=i.replace(/\/+$/,"");return!c||c==="/"?s:(c=c.startsWith("/")?c:`/${c}`,`${s}${c}`)}function jg(i,c,s,r,d){if(i)return Pf(i,c);{const m=De.BETTER_AUTH_URL||De.NEXT_PUBLIC_BETTER_AUTH_URL||De.PUBLIC_BETTER_AUTH_URL||De.NUXT_PUBLIC_BETTER_AUTH_URL||De.NUXT_PUBLIC_AUTH_URL||(De.BASE_URL!=="/"?De.BASE_URL:void 0);if(m)return Pf(m,c)}if(typeof window<"u"&&window.location)return Pf(window.location.origin,c)}const Gg={id:"redirect",name:"Redirect",hooks:{onSuccess(i){var c,s;if((c=i.data)!=null&&c.url&&((s=i.data)!=null&&s.redirect)&&typeof window<"u"&&window.location&&window.location)try{window.location.href=i.data.url}catch{}}}},Xg={proto:/"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,constructor:/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,protoShort:/"__proto__"\s*:/,constructorShort:/"constructor"\s*:/},Qg=/^\s*["[{]|^\s*-?\d{1,16}(\.\d{1,17})?([Ee][+-]?\d+)?\s*$/,jh={true:!0,false:!1,null:null,undefined:void 0,nan:NaN,infinity:Number.POSITIVE_INFINITY,"-infinity":Number.NEGATIVE_INFINITY},Vg=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,7}))?(?:Z|([+-])(\d{2}):(\d{2}))$/;function Zg(i){return i instanceof Date&&!isNaN(i.getTime())}function Jg(i){const c=Vg.exec(i);if(!c)return null;const[,s,r,d,m,v,R,y,h,b,E]=c,N=new Date(Date.UTC(parseInt(s,10),parseInt(r,10)-1,parseInt(d,10),parseInt(m,10),parseInt(v,10),parseInt(R,10),y?parseInt(y.padEnd(3,"0"),10):0));if(h){const q=(parseInt(b,10)*60+parseInt(E,10))*(h==="+"?-1:1);N.setUTCMinutes(N.getUTCMinutes()+q)}return Zg(N)?N:null}function Kg(i,c={}){const{strict:s=!1,warnings:r=!1,reviver:d,parseDates:m=!0}=c;if(typeof i!="string")return i;const v=i.trim();if(v.length>0&&v[0]==='"'&&v.endsWith('"')&&!v.slice(1,-1).includes('"'))return v.slice(1,-1);const R=v.toLowerCase();if(R.length<=9&&R in jh)return jh[R];if(!Qg.test(v)){if(s)throw new SyntaxError("[better-json] Invalid JSON");return i}if(Object.entries(Xg).some(([y,h])=>{const b=h.test(v);return b&&r&&console.warn(`[better-json] Detected potential prototype pollution attempt using ${y} pattern`),b})&&s)throw new Error("[better-json] Potential prototype pollution attempt detected");try{return JSON.parse(v,(h,b)=>{if(h==="__proto__"||h==="constructor"&&b&&typeof b=="object"&&"prototype"in b){r&&console.warn(`[better-json] Dropping "${h}" key to prevent prototype pollution`);return}if(m&&typeof b=="string"){const E=Jg(b);if(E)return E}return d?d(h,b):b})}catch(y){if(s)throw y;return i}}function $g(i,c={strict:!0}){return Kg(i,c)}let qe=[],wl=0;const mi=4,dm=i=>{let c=[],s={get(){return s.lc||s.listen(()=>{})(),s.value},lc:0,listen(r){return s.lc=c.push(r),()=>{for(let m=wl+mi;m<qe.length;)qe[m]===r?qe.splice(m,mi):m+=mi;let d=c.indexOf(r);~d&&(c.splice(d,1),--s.lc||s.off())}},notify(r,d){let m=!qe.length;for(let v of c)qe.push(v,s.value,r,d);if(m){for(wl=0;wl<qe.length;wl+=mi)qe[wl](qe[wl+1],qe[wl+2],qe[wl+3]);qe.length=0}},off(){},set(r){let d=s.value;d!==r&&(s.value=r,s.notify(d))},subscribe(r){let d=s.listen(r);return r(s.value),d},value:i};return s},Wg=5,yi=6,vi=10;let Fg=(i,c,s,r)=>(i.events=i.events||{},i.events[s+vi]||(i.events[s+vi]=r(d=>{i.events[s].reduceRight((m,v)=>(v(m),m),{shared:{},...d})})),i.events[s]=i.events[s]||[],i.events[s].push(c),()=>{let d=i.events[s],m=d.indexOf(c);d.splice(m,1),d.length||(delete i.events[s],i.events[s+vi](),delete i.events[s+vi])}),kg=1e3,hm=(i,c)=>Fg(i,r=>{let d=c(r);d&&i.events[yi].push(d)},Wg,r=>{let d=i.listen;i.listen=(...v)=>(!i.lc&&!i.active&&(i.active=!0,r()),d(...v));let m=i.off;return i.events[yi]=[],i.off=()=>{m(),setTimeout(()=>{if(i.active&&!i.lc){i.active=!1;for(let v of i.events[yi])v();i.events[yi]=[]}},kg)},()=>{i.listen=d,i.off=m}});function Ig(i,c,s){let r=new Set(c).add(void 0);return i.listen((d,m,v)=>{r.has(v)&&s(d,m,v)})}const Pg=()=>typeof window>"u",t1=(i,c,s,r)=>{const d=dm({data:null,error:null,isPending:!0,isRefetching:!1,refetch:R=>m(R)}),m=async R=>new Promise(y=>{const h=typeof r=="function"?r({data:d.get().data,error:d.get().error,isPending:d.get().isPending}):r;s(c,{...h,query:{...h==null?void 0:h.query,...R==null?void 0:R.query},async onSuccess(b){var E;d.set({data:b.data,error:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch}),await((E=h==null?void 0:h.onSuccess)==null?void 0:E.call(h,b))},async onError(b){var Q,j;const{request:E}=b,N=typeof E.retry=="number"?E.retry:(Q=E.retry)==null?void 0:Q.attempts,q=E.retryAttempt||0;N&&q<N||(d.set({error:b.error,data:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch}),await((j=h==null?void 0:h.onError)==null?void 0:j.call(h,b)))},async onRequest(b){var N;const E=d.get();d.set({isPending:E.data===null,data:E.data,error:null,isRefetching:!0,refetch:d.value.refetch}),await((N=h==null?void 0:h.onRequest)==null?void 0:N.call(h,b))}}).catch(b=>{d.set({error:b,data:null,isPending:!1,isRefetching:!1,refetch:d.value.refetch})}).finally(()=>{y(void 0)})});i=Array.isArray(i)?i:[i];let v=!1;for(const R of i)R.subscribe(async()=>{Pg()||(v?await m():hm(d,()=>{const y=setTimeout(async()=>{v||(await m(),v=!0)},0);return()=>{d.off(),R.off(),clearTimeout(y)}}))});return d},tr=Symbol.for("better-auth:broadcast-channel"),e1=()=>Math.floor(Date.now()/1e3);var l1=class{constructor(i="better-auth.message"){Xa(this,"listeners",new Set);Xa(this,"name");this.name=i}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}post(i){if(!(typeof window>"u"))try{localStorage.setItem(this.name,JSON.stringify({...i,timestamp:e1()}))}catch{}}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const i=c=>{if(c.key!==this.name)return;const s=JSON.parse(c.newValue??"{}");(s==null?void 0:s.event)!=="session"||!(s!=null&&s.data)||this.listeners.forEach(r=>r(s))};return window.addEventListener("storage",i),()=>{window.removeEventListener("storage",i)}}};function er(i="better-auth.message"){return globalThis[tr]||(globalThis[tr]=new l1(i)),globalThis[tr]}const lr=Symbol.for("better-auth:focus-manager");var a1=class{constructor(){Xa(this,"listeners",new Set)}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}setFocused(i){this.listeners.forEach(c=>c(i))}setup(){if(typeof window>"u"||typeof document>"u"||typeof window.addEventListener>"u")return()=>{};const i=()=>{document.visibilityState==="visible"&&this.setFocused(!0)};return document.addEventListener("visibilitychange",i,!1),()=>{document.removeEventListener("visibilitychange",i,!1)}}};function Gh(){return globalThis[lr]||(globalThis[lr]=new a1),globalThis[lr]}const ar=Symbol.for("better-auth:online-manager");var n1=class{constructor(){Xa(this,"listeners",new Set);Xa(this,"isOnline",typeof navigator<"u"?navigator.onLine:!0)}subscribe(i){return this.listeners.add(i),()=>{this.listeners.delete(i)}}setOnline(i){this.isOnline=i,this.listeners.forEach(c=>c(i))}setup(){if(typeof window>"u"||typeof window.addEventListener>"u")return()=>{};const i=()=>this.setOnline(!0),c=()=>this.setOnline(!1);return window.addEventListener("online",i,!1),window.addEventListener("offline",c,!1),()=>{window.removeEventListener("online",i,!1),window.removeEventListener("offline",c,!1)}}};function nr(){return globalThis[ar]||(globalThis[ar]=new n1),globalThis[ar]}const Qa=()=>Math.floor(Date.now()/1e3),u1=5;function i1(i){var $,L,F;const{sessionAtom:c,sessionSignal:s,$fetch:r,options:d={}}=i,m=(($=d.sessionOptions)==null?void 0:$.refetchInterval)??0,v=((L=d.sessionOptions)==null?void 0:L.refetchOnWindowFocus)??!0,R=((F=d.sessionOptions)==null?void 0:F.refetchWhenOffline)??!1,y={lastSync:0,lastSessionRequest:0,cachedSession:void 0},h=()=>R||nr().isOnline,b=W=>{if(!h())return;if((W==null?void 0:W.event)==="storage"){y.lastSync=Qa(),s.set(!s.get());return}const G=c.get();if((W==null?void 0:W.event)==="poll"){y.lastSessionRequest=Qa(),r("/get-session").then(K=>{K.error?c.set({...G,data:null,error:K.error}):c.set({...G,data:K.data,error:null}),y.lastSync=Qa(),s.set(!s.get())}).catch(()=>{});return}if((W==null?void 0:W.event)==="visibilitychange"){if(Qa()-y.lastSessionRequest<u1)return;y.lastSessionRequest=Qa()}((G==null?void 0:G.data)===null||(G==null?void 0:G.data)===void 0||(W==null?void 0:W.event)==="visibilitychange")&&(y.lastSync=Qa(),s.set(!s.get()))},E=W=>{er().post({event:"session",data:{trigger:W},clientId:Math.random().toString(36).substring(7)})},N=()=>{m&&m>0&&(y.pollInterval=setInterval(()=>{var W;(W=c.get())!=null&&W.data&&b({event:"poll"})},m*1e3))},q=()=>{y.unsubscribeBroadcast=er().subscribe(()=>{b({event:"storage"})})},Q=()=>{v&&(y.unsubscribeFocus=Gh().subscribe(()=>{b({event:"visibilitychange"})}))},j=()=>{y.unsubscribeOnline=nr().subscribe(W=>{W&&b({event:"visibilitychange"})})};return{init:()=>{N(),q(),Q(),j(),er().setup(),Gh().setup(),nr().setup()},cleanup:()=>{y.pollInterval&&(clearInterval(y.pollInterval),y.pollInterval=void 0),y.unsubscribeBroadcast&&(y.unsubscribeBroadcast(),y.unsubscribeBroadcast=void 0),y.unsubscribeFocus&&(y.unsubscribeFocus(),y.unsubscribeFocus=void 0),y.unsubscribeOnline&&(y.unsubscribeOnline(),y.unsubscribeOnline=void 0),y.lastSync=0,y.lastSessionRequest=0,y.cachedSession=void 0},triggerRefetch:b,broadcastSessionUpdate:E}}function c1(i,c){const s=dm(!1),r=t1(s,"/get-session",i,{method:"GET"});return hm(r,()=>{const d=i1({sessionAtom:r,sessionSignal:s,$fetch:i,options:c});return d.init(),()=>{d.cleanup()}}),{session:r,$sessionSignal:s}}var f1=Object.defineProperty,r1=Object.defineProperties,s1=Object.getOwnPropertyDescriptors,Xh=Object.getOwnPropertySymbols,o1=Object.prototype.hasOwnProperty,d1=Object.prototype.propertyIsEnumerable,Qh=(i,c,s)=>c in i?f1(i,c,{enumerable:!0,configurable:!0,writable:!0,value:s}):i[c]=s,we=(i,c)=>{for(var s in c||(c={}))o1.call(c,s)&&Qh(i,s,c[s]);if(Xh)for(var s of Xh(c))d1.call(c,s)&&Qh(i,s,c[s]);return i},Qe=(i,c)=>r1(i,s1(c)),h1=class extends Error{constructor(i,c,s){super(c||i.toString(),{cause:s}),this.status=i,this.statusText=c,this.error=s,Error.captureStackTrace(this,this.constructor)}},m1=async(i,c)=>{var s,r,d,m,v,R;let y=c||{};const h={onRequest:[c==null?void 0:c.onRequest],onResponse:[c==null?void 0:c.onResponse],onSuccess:[c==null?void 0:c.onSuccess],onError:[c==null?void 0:c.onError],onRetry:[c==null?void 0:c.onRetry]};if(!c||!(c!=null&&c.plugins))return{url:i,options:y,hooks:h};for(const b of(c==null?void 0:c.plugins)||[]){if(b.init){const E=await((s=b.init)==null?void 0:s.call(b,i.toString(),c));y=E.options||y,i=E.url}h.onRequest.push((r=b.hooks)==null?void 0:r.onRequest),h.onResponse.push((d=b.hooks)==null?void 0:d.onResponse),h.onSuccess.push((m=b.hooks)==null?void 0:m.onSuccess),h.onError.push((v=b.hooks)==null?void 0:v.onError),h.onRetry.push((R=b.hooks)==null?void 0:R.onRetry)}return{url:i,options:y,hooks:h}},Vh=class{constructor(i){this.options=i}shouldAttemptRetry(i,c){return this.options.shouldRetry?Promise.resolve(i<this.options.attempts&&this.options.shouldRetry(c)):Promise.resolve(i<this.options.attempts)}getDelay(){return this.options.delay}},y1=class{constructor(i){this.options=i}shouldAttemptRetry(i,c){return this.options.shouldRetry?Promise.resolve(i<this.options.attempts&&this.options.shouldRetry(c)):Promise.resolve(i<this.options.attempts)}getDelay(i){return Math.min(this.options.maxDelay,this.options.baseDelay*2**i)}};function v1(i){if(typeof i=="number")return new Vh({type:"linear",attempts:i,delay:1e3});switch(i.type){case"linear":return new Vh(i);case"exponential":return new y1(i);default:throw new Error("Invalid retry strategy")}}var g1=async i=>{const c={},s=async r=>typeof r=="function"?await r():r;if(i!=null&&i.auth){if(i.auth.type==="Bearer"){const r=await s(i.auth.token);if(!r)return c;c.authorization=`Bearer ${r}`}else if(i.auth.type==="Basic"){const[r,d]=await Promise.all([s(i.auth.username),s(i.auth.password)]);if(!r||!d)return c;c.authorization=`Basic ${btoa(`${r}:${d}`)}`}else if(i.auth.type==="Custom"){const[r,d]=await Promise.all([s(i.auth.prefix),s(i.auth.value)]);if(!d)return c;c.authorization=`${r??""} ${d}`}}return c},p1=/^application\/(?:[\w!#$%&*.^`~-]*\+)?json(;.+)?$/i;function S1(i){const c=i.headers.get("content-type"),s=new Set(["image/svg","application/xml","application/xhtml","application/html"]);if(!c)return"json";const r=c.split(";").shift()||"";return p1.test(r)?"json":s.has(r)||r.startsWith("text/")?"text":"blob"}function b1(i){try{return JSON.parse(i),!0}catch{return!1}}function rr(i){if(i===void 0)return!1;const c=typeof i;return c==="string"||c==="number"||c==="boolean"||c===null?!0:c!=="object"?!1:Array.isArray(i)?!0:i.buffer?!1:i.constructor&&i.constructor.name==="Object"||typeof i.toJSON=="function"}function Zh(i){try{return JSON.parse(i)}catch{return i}}function Jh(i){return typeof i=="function"}function E1(i){if(i!=null&&i.customFetchImpl)return i.customFetchImpl;if(typeof globalThis<"u"&&Jh(globalThis.fetch))return globalThis.fetch;if(typeof window<"u"&&Jh(window.fetch))return window.fetch;throw new Error("No fetch implementation found")}async function T1(i){const c=new Headers(i==null?void 0:i.headers),s=await g1(i);for(const[r,d]of Object.entries(s||{}))c.set(r,d);if(!c.has("content-type")){const r=R1(i==null?void 0:i.body);r&&c.set("content-type",r)}return c}function R1(i){return rr(i)?"application/json":null}function _1(i){if(!(i!=null&&i.body))return null;const c=new Headers(i==null?void 0:i.headers);if(rr(i.body)&&!c.has("content-type")){for(const[s,r]of Object.entries(i==null?void 0:i.body))r instanceof Date&&(i.body[s]=r.toISOString());return JSON.stringify(i.body)}return c.has("content-type")&&c.get("content-type")==="application/x-www-form-urlencoded"&&rr(i.body)?new URLSearchParams(i.body).toString():i.body}function O1(i,c){var s;if(c!=null&&c.method)return c.method.toUpperCase();if(i.startsWith("@")){const r=(s=i.split("@")[1])==null?void 0:s.split("/")[0];return ym.includes(r)?r.toUpperCase():c!=null&&c.body?"POST":"GET"}return c!=null&&c.body?"POST":"GET"}function A1(i,c){let s;return!(i!=null&&i.signal)&&(i!=null&&i.timeout)&&(s=setTimeout(()=>c==null?void 0:c.abort(),i==null?void 0:i.timeout)),{abortTimeout:s,clearTimeout:()=>{s&&clearTimeout(s)}}}var z1=class mm extends Error{constructor(c,s){super(s||JSON.stringify(c,null,2)),this.issues=c,Object.setPrototypeOf(this,mm.prototype)}};async function Ei(i,c){const s=await i["~standard"].validate(c);if(s.issues)throw new z1(s.issues);return s.value}var ym=["get","post","put","patch","delete"],M1=i=>({id:"apply-schema",name:"Apply Schema",version:"1.0.0",async init(c,s){var r,d,m,v;const R=((d=(r=i.plugins)==null?void 0:r.find(y=>{var h;return(h=y.schema)!=null&&h.config?c.startsWith(y.schema.config.baseURL||"")||c.startsWith(y.schema.config.prefix||""):!1}))==null?void 0:d.schema)||i.schema;if(R){let y=c;(m=R.config)!=null&&m.prefix&&y.startsWith(R.config.prefix)&&(y=y.replace(R.config.prefix,""),R.config.baseURL&&(c=c.replace(R.config.prefix,R.config.baseURL))),(v=R.config)!=null&&v.baseURL&&y.startsWith(R.config.baseURL)&&(y=y.replace(R.config.baseURL,""));const h=R.schema[y];if(h){let b=Qe(we({},s),{method:h.method,output:h.output});return s!=null&&s.disableValidation||(b=Qe(we({},b),{body:h.input?await Ei(h.input,s==null?void 0:s.body):s==null?void 0:s.body,params:h.params?await Ei(h.params,s==null?void 0:s.params):s==null?void 0:s.params,query:h.query?await Ei(h.query,s==null?void 0:s.query):s==null?void 0:s.query})),{url:c,options:b}}}return{url:c,options:s}}}),U1=i=>{async function c(s,r){const d=Qe(we(we({},i),r),{plugins:[...(i==null?void 0:i.plugins)||[],M1(i||{}),...(r==null?void 0:r.plugins)||[]]});if(i!=null&&i.catchAllError)try{return await sr(s,d)}catch(m){return{data:null,error:{status:500,statusText:"Fetch Error",message:"Fetch related error. Captured by catchAllError option. See error property for more details.",error:m}}}return await sr(s,d)}return c};function C1(i,c){const{baseURL:s,params:r,query:d}=c||{query:{},params:{},baseURL:""};let m=i.startsWith("http")?i.split("/").slice(0,3).join("/"):s||"";if(i.startsWith("@")){const E=i.toString().split("@")[1].split("/")[0];ym.includes(E)&&(i=i.replace(`@${E}/`,"/"))}m.endsWith("/")||(m+="/");let[v,R]=i.replace(m,"").split("?");const y=new URLSearchParams(R);for(const[E,N]of Object.entries(d||{})){if(N==null)continue;let q;if(typeof N=="string")q=N;else if(Array.isArray(N)){for(const Q of N)y.append(E,Q);continue}else q=JSON.stringify(N);y.set(E,q)}if(r)if(Array.isArray(r)){const E=v.split("/").filter(N=>N.startsWith(":"));for(const[N,q]of E.entries()){const Q=r[N];v=v.replace(q,Q)}}else for(const[E,N]of Object.entries(r))v=v.replace(`:${E}`,String(N));v=v.split("/").map(encodeURIComponent).join("/"),v.startsWith("/")&&(v=v.slice(1));let h=y.toString();return h=h.length>0?`?${h}`.replace(/\+/g,"%20"):"",m.startsWith("http")?new URL(`${v}${h}`,m):`${m}${v}${h}`}var sr=async(i,c)=>{var s,r,d,m,v,R,y,h;const{hooks:b,url:E,options:N}=await m1(i,c),q=E1(N),Q=new AbortController,j=(s=N.signal)!=null?s:Q.signal,B=C1(E,N),V=_1(N),$=await T1(N),L=O1(E,N);let F=Qe(we({},N),{url:B,headers:$,body:V,method:L,signal:j});for(const Lt of b.onRequest)if(Lt){const Tt=await Lt(F);typeof Tt=="object"&&Tt!==null&&(F=Tt)}("pipeTo"in F&&typeof F.pipeTo=="function"||typeof((r=c==null?void 0:c.body)==null?void 0:r.pipe)=="function")&&("duplex"in F||(F.duplex="half"));const{clearTimeout:W}=A1(N,Q);let G=await q(F.url,F);W();const K={response:G,request:F};for(const Lt of b.onResponse)if(Lt){const Tt=await Lt(Qe(we({},K),{response:(d=c==null?void 0:c.hookOptions)!=null&&d.cloneResponse?G.clone():G}));Tt instanceof Response?G=Tt:typeof Tt=="object"&&Tt!==null&&(G=Tt.response)}if(G.ok){if(!(F.method!=="HEAD"))return{data:"",error:null};const Tt=S1(G),Nt={data:null,response:G,request:F};if(Tt==="json"||Tt==="text"){const M=await G.text(),w=(m=F.jsonParser)!=null?m:Zh;Nt.data=await w(M)}else Nt.data=await G[Tt]();F!=null&&F.output&&F.output&&!F.disableValidation&&(Nt.data=await Ei(F.output,Nt.data));for(const M of b.onSuccess)M&&await M(Qe(we({},Nt),{response:(v=c==null?void 0:c.hookOptions)!=null&&v.cloneResponse?G.clone():G}));return c!=null&&c.throw?Nt.data:{data:Nt.data,error:null}}const gt=(R=c==null?void 0:c.jsonParser)!=null?R:Zh,Ot=await G.text(),Qt=b1(Ot),P=Qt?await gt(Ot):null,Vt={response:G,responseText:Ot,request:F,error:Qe(we({},P),{status:G.status,statusText:G.statusText})};for(const Lt of b.onError)Lt&&await Lt(Qe(we({},Vt),{response:(y=c==null?void 0:c.hookOptions)!=null&&y.cloneResponse?G.clone():G}));if(c!=null&&c.retry){const Lt=v1(c.retry),Tt=(h=c.retryAttempt)!=null?h:0;if(await Lt.shouldAttemptRetry(Tt,G)){for(const M of b.onRetry)M&&await M(K);const Nt=Lt.getDelay(Tt);return await new Promise(M=>setTimeout(M,Nt)),await sr(i,Qe(we({},c),{retryAttempt:Tt+1}))}}if(c!=null&&c.throw)throw new h1(G.status,G.statusText,Qt?P:Ot);return{data:null,error:Qe(we({},P),{status:G.status,statusText:G.statusText})}};const D1=(i,c)=>{var F,W,G,K,gt,Ot,Qt;const s="credentials"in Request.prototype,r=jg(i==null?void 0:i.baseURL,i==null?void 0:i.basePath)??"/api/auth",d=((F=i==null?void 0:i.plugins)==null?void 0:F.flatMap(P=>P.fetchPlugins).filter(P=>P!==void 0))||[],m={id:"lifecycle-hooks",name:"lifecycle-hooks",hooks:{onSuccess:(W=i==null?void 0:i.fetchOptions)==null?void 0:W.onSuccess,onError:(G=i==null?void 0:i.fetchOptions)==null?void 0:G.onError,onRequest:(K=i==null?void 0:i.fetchOptions)==null?void 0:K.onRequest,onResponse:(gt=i==null?void 0:i.fetchOptions)==null?void 0:gt.onResponse}},{onSuccess:v,onError:R,onRequest:y,onResponse:h,...b}=(i==null?void 0:i.fetchOptions)||{},E=U1({baseURL:r,...s?{credentials:"include"}:{},method:"GET",jsonParser(P){return P?$g(P,{strict:!1}):null},customFetchImpl:fetch,...b,plugins:[m,...b.plugins||[],...i!=null&&i.disableDefaultFetchPlugins?[]:[Gg],...d]}),{$sessionSignal:N,session:q}=c1(E,i),Q=(i==null?void 0:i.plugins)||[],j={},B={$sessionSignal:N,session:q},V={"/sign-out":"POST","/revoke-sessions":"POST","/revoke-other-sessions":"POST","/delete-user":"POST"},$=[{signal:"$sessionSignal",matcher(P){return P==="/sign-out"||P==="/update-user"||P==="/sign-up/email"||P==="/sign-in/email"||P==="/delete-user"||P==="/verify-email"||P==="/revoke-sessions"||P==="/revoke-session"||P==="/change-email"}}];for(const P of Q)P.getAtoms&&Object.assign(B,(Ot=P.getAtoms)==null?void 0:Ot.call(P,E)),P.pathMethods&&Object.assign(V,P.pathMethods),P.atomListeners&&$.push(...P.atomListeners);const L={notify:P=>{B[P].set(!B[P].get())},listen:(P,Vt)=>{B[P].subscribe(Vt)},atoms:B};for(const P of Q)P.getActions&&Object.assign(j,(Qt=P.getActions)==null?void 0:Qt.call(P,E,L,i));return{get baseURL(){return r},pluginsActions:j,pluginsAtoms:B,pluginPathMethods:V,atomListeners:$,$fetch:E,$store:L}};function N1(i){return typeof i=="object"&&i!==null&&"get"in i&&typeof i.get=="function"&&"lc"in i&&typeof i.lc=="number"}function x1(i,c,s){const r=c[i],{fetchOptions:d,query:m,...v}=s||{};return r||(d!=null&&d.method?d.method:v&&Object.keys(v).length>0?"POST":"GET")}function H1(i,c,s,r,d){function m(v=[]){return new Proxy(function(){},{get(R,y){if(typeof y!="string"||y==="then"||y==="catch"||y==="finally")return;const h=[...v,y];let b=i;for(const E of h)if(b&&typeof b=="object"&&E in b)b=b[E];else{b=void 0;break}return typeof b=="function"||N1(b)?b:m(h)},apply:async(R,y,h)=>{const b="/"+v.map($=>$.replace(/[A-Z]/g,L=>`-${L.toLowerCase()}`)).join("/"),E=h[0]||{},N=h[1]||{},{query:q,fetchOptions:Q,...j}=E,B={...N,...Q},V=x1(b,s,E);return await c(b,{...B,body:V==="GET"?void 0:{...j,...(B==null?void 0:B.body)||{}},query:q||(B==null?void 0:B.query),method:V,async onSuccess($){var W;if(await((W=B==null?void 0:B.onSuccess)==null?void 0:W.call(B,$)),!d||B.disableSignal)return;const L=d.filter(G=>G.matcher(b));if(!L.length)return;const F=new Set;for(const G of L){const K=r[G.signal];if(!K)return;if(F.has(G.signal))continue;F.add(G.signal);const gt=K.get();setTimeout(()=>{K.set(!gt)},10)}}})}})}return m()}function B1(i,c={}){const s=U.useRef(i.get()),{keys:r,deps:d=[i,r]}=c,m=U.useCallback(R=>{const y=h=>{s.current!==h&&(s.current=h,R())};return y(i.value),r!=null&&r.length?Ig(i,r,y):i.listen(y)},d),v=()=>s.current;return U.useSyncExternalStore(m,v,v)}function L1(i){return`use${qg(i)}`}function K1(i){const{pluginPathMethods:c,pluginsActions:s,pluginsAtoms:r,$fetch:d,$store:m,atomListeners:v}=D1(i),R={};for(const[y,h]of Object.entries(r))R[L1(y)]=()=>B1(h);return H1({...s,...R,$fetch:d,$store:m},d,c,r,v)}export{Z1 as B,bg as N,Q1 as O,Y1 as R,G1 as a,yr as b,K1 as c,X1 as d,V1 as e,$0 as f,j1 as g,J1 as h,w1 as j,U as r,dl as u};
|
|
61
|
+
//# sourceMappingURL=framework-vendor-BUhDPOUZ.js.map
|