mirror of
https://github.com/Wei-Shaw/claude-relay-service.git
synced 2026-01-22 16:43:35 +00:00
chore: update frontend build for v1.1.81 [skip ci]
This commit is contained in:
10
README.md
Normal file
10
README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Claude Relay Service - Web Frontend Build
|
||||
|
||||
This branch contains the pre-built frontend assets for Claude Relay Service.
|
||||
|
||||
**DO NOT EDIT FILES IN THIS BRANCH DIRECTLY**
|
||||
|
||||
These files are automatically generated by the CI/CD pipeline.
|
||||
|
||||
Version: 1.1.81
|
||||
Build Date: $(date -u +"%Y-%m-%d %H:%M:%S UTC")
|
||||
17
assets/AccountsView-16GLZCq-.js
Normal file
17
assets/AccountsView-16GLZCq-.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/AccountsView-82LpKW8Q.css
Normal file
1
assets/AccountsView-82LpKW8Q.css
Normal file
@@ -0,0 +1 @@
|
||||
.loading-spinner[data-v-2c7d7fea]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-2c7d7fea 1s linear infinite}@keyframes spin-2c7d7fea{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-2c7d7fea]{min-height:calc(100vh - 300px)}.table-container[data-v-2c7d7fea]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-2c7d7fea]{transition:all .2s ease}.table-row[data-v-2c7d7fea]:hover{background-color:#00000005}
|
||||
1
assets/ApiKeysView-BXVmt5BV.css
Normal file
1
assets/ApiKeysView-BXVmt5BV.css
Normal file
@@ -0,0 +1 @@
|
||||
.custom-scrollbar[data-v-8e1e3115]{scrollbar-width:thin;scrollbar-color:#cbd5e0 #f7fafc}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-track{background:#f7fafc}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-thumb{background-color:#cbd5e0;border-radius:3px}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-thumb:hover{background-color:#a0aec0}pre[data-v-2c02f1f7],pre[data-v-cff10d08]{white-space:pre-wrap;word-wrap:break-word}@keyframes fadeIn-060bf571{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn[data-v-060bf571]{animation:fadeIn-060bf571 .2s ease-out}.loading-spinner[data-v-060bf571]{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin-060bf571 .8s linear infinite;display:inline-block}@keyframes spin-060bf571{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tab-content[data-v-a6056fd1]{min-height:calc(100vh - 300px)}.table-container[data-v-a6056fd1]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-a6056fd1]{transition:all .2s ease}.table-row[data-v-a6056fd1]:hover{background-color:#00000005}.loading-spinner[data-v-a6056fd1]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-a6056fd1 1s linear infinite}@keyframes spin-a6056fd1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.api-key-date-picker[data-v-a6056fd1] .el-input__inner{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.api-key-date-picker[data-v-a6056fd1] .el-input__inner:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.api-key-date-picker[data-v-a6056fd1] .el-range-separator{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}
|
||||
19
assets/ApiKeysView-Cpoo_9rp.js
Normal file
19
assets/ApiKeysView-Cpoo_9rp.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/ApiStatsView-Bsr4EtTR.js
Normal file
1
assets/ApiStatsView-Bsr4EtTR.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/ApiStatsView-z3DmkD1S.css
Normal file
1
assets/ApiStatsView-z3DmkD1S.css
Normal file
File diff suppressed because one or more lines are too long
1
assets/DashboardView-D0H7r_kA.js
Normal file
1
assets/DashboardView-D0H7r_kA.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/DashboardView-R6dMwgzw.css
Normal file
1
assets/DashboardView-R6dMwgzw.css
Normal file
@@ -0,0 +1 @@
|
||||
.custom-date-picker[data-v-a1b368e2] .el-input__inner{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.custom-date-picker[data-v-a1b368e2] .el-input__inner:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.custom-date-picker[data-v-a1b368e2] .el-input__inner{font-size:13px;padding:0 10px}.custom-date-picker[data-v-a1b368e2] .el-range-separator{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));padding:0 2px}.custom-date-picker[data-v-a1b368e2] .el-range-input{font-size:13px}@keyframes spin-a1b368e2{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-a1b368e2]{animation:spin-a1b368e2 1s linear infinite}
|
||||
1
assets/LoginView-Mj3shjXc.js
Normal file
1
assets/LoginView-Mj3shjXc.js
Normal file
@@ -0,0 +1 @@
|
||||
import{c as x,r as b,q as f,x as a,z as t,L as i,Q as y,u as o,P as d,Y as w,K as u,aq as c,O as p,y as n}from"./vue-vendor-CKToUHZx.js";import{_,u as v}from"./index-a_f0M4v_.js";/* empty css */import"./element-plus-B8Fs_0jW.js";import"./vendor-BDiMbLwQ.js";const h={class:"flex items-center justify-center min-h-screen p-4 sm:p-6"},k={class:"glass-strong rounded-xl sm:rounded-2xl md:rounded-3xl p-6 sm:p-8 md:p-10 w-full max-w-md shadow-2xl"},L={class:"text-center mb-6 sm:mb-8"},S={class:"w-16 h-16 sm:w-20 sm:h-20 mx-auto mb-4 sm:mb-6 bg-gradient-to-br from-blue-500/20 to-purple-500/20 border border-gray-300/30 rounded-xl sm:rounded-2xl flex items-center justify-center backdrop-blur-sm overflow-hidden"},V=["src"],I={key:1,class:"fas fa-cloud text-2xl sm:text-3xl text-gray-700"},N={key:1,class:"w-10 h-10 sm:w-12 sm:h-12 bg-gray-300/50 rounded animate-pulse"},q={key:0,class:"text-2xl sm:text-3xl font-bold text-white mb-2 header-title"},D={key:1,class:"h-8 sm:h-9 w-48 sm:w-64 bg-gray-300/50 rounded animate-pulse mx-auto mb-2"},E=["disabled"],j={key:0,class:"fas fa-sign-in-alt mr-2"},B={key:1,class:"loading-spinner mr-2"},M={key:0,class:"mt-4 sm:mt-6 p-3 sm:p-4 bg-red-500/20 border border-red-500/30 rounded-lg sm:rounded-xl text-red-800 text-xs sm:text-sm text-center backdrop-blur-sm"},F={__name:"LoginView",setup(O){const e=v(),m=x(()=>e.oemLoading),l=b({username:"",password:""});f(()=>{e.loadOemSettings()});const g=async()=>{await e.login(l.value)};return(T,s)=>(n(),a("div",h,[t("div",k,[t("div",L,[t("div",S,[m.value?(n(),a("div",N)):(n(),a(y,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(n(),a("img",{key:0,src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,alt:"Logo",class:"w-10 h-10 sm:w-12 sm:h-12 object-contain",onError:s[0]||(s[0]=r=>r.target.style.display="none")},null,40,V)):(n(),a("i",I))],64))]),!m.value&&o(e).oemSettings.siteName?(n(),a("h1",q,d(o(e).oemSettings.siteName),1)):m.value?(n(),a("div",D)):i("",!0),s[3]||(s[3]=t("p",{class:"text-gray-600 text-base sm:text-lg"}," 管理后台 ",-1))]),t("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(g,["prevent"])},[t("div",null,[s[4]||(s[4]=t("label",{class:"block text-sm font-semibold text-gray-900 mb-2 sm:mb-3"},"用户名",-1)),u(t("input",{"onUpdate:modelValue":s[1]||(s[1]=r=>l.value.username=r),type:"text",required:"",class:"form-input w-full",placeholder:"请输入用户名"},null,512),[[c,l.value.username]])]),t("div",null,[s[5]||(s[5]=t("label",{class:"block text-sm font-semibold text-gray-900 mb-2 sm:mb-3"},"密码",-1)),u(t("input",{"onUpdate:modelValue":s[2]||(s[2]=r=>l.value.password=r),type:"password",required:"",class:"form-input w-full",placeholder:"请输入密码"},null,512),[[c,l.value.password]])]),t("button",{type:"submit",disabled:o(e).loginLoading,class:"btn btn-primary w-full py-3 sm:py-4 px-4 sm:px-6 text-base sm:text-lg font-semibold"},[o(e).loginLoading?i("",!0):(n(),a("i",j)),o(e).loginLoading?(n(),a("div",B)):i("",!0),p(" "+d(o(e).loginLoading?"登录中...":"登录"),1)],8,E)],32),o(e).loginError?(n(),a("div",M,[s[6]||(s[6]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),p(d(o(e).loginError),1)])):i("",!0)])]))}},P=_(F,[["__scopeId","data-v-d68c64ae"]]);export{P as default};
|
||||
0
assets/LoginView-tn0RQdqM.css
Normal file
0
assets/LoginView-tn0RQdqM.css
Normal file
1
assets/LogoTitle-BiOf3Vkp.css
Normal file
1
assets/LogoTitle-BiOf3Vkp.css
Normal file
@@ -0,0 +1 @@
|
||||
@keyframes pulse-718feedc{0%{opacity:.7}50%{opacity:.4}to{opacity:.7}}.animate-pulse[data-v-718feedc]{animation:pulse-718feedc 2s cubic-bezier(.4,0,.6,1) infinite}.header-title[data-v-718feedc]{text-shadow:0 1px 2px rgba(0,0,0,.1)}
|
||||
1
assets/LogoTitle-Dqsvy7oN.js
Normal file
1
assets/LogoTitle-Dqsvy7oN.js
Normal file
@@ -0,0 +1 @@
|
||||
/* empty css */import{_ as r}from"./index-a_f0M4v_.js";import{x as t,y as s,z as o,Q as d,L as a,A as c,C as g,P as i}from"./vue-vendor-CKToUHZx.js";const u={class:"flex items-center gap-4"},f={class:"w-12 h-12 bg-gradient-to-br from-blue-500/20 to-purple-500/20 border border-gray-300/30 rounded-xl flex items-center justify-center backdrop-blur-sm flex-shrink-0 overflow-hidden"},y=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700"},h={key:1,class:"w-8 h-8 bg-gray-300/50 rounded animate-pulse"},x={class:"flex flex-col justify-center min-h-[48px]"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 bg-gray-300/50 rounded animate-pulse"},_={key:0,class:"text-gray-600 text-sm leading-tight mt-0.5"},S={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const n=l=>{l.target.style.display="none"};return(l,p)=>(s(),t("div",u,[o("div",f,[e.loading?(s(),t("div",h)):(s(),t(d,{key:0},[e.logoSrc?(s(),t("img",{key:0,src:e.logoSrc,alt:"Logo",class:"w-8 h-8 object-contain",onError:n},null,40,y)):(s(),t("i",m))],64))]),o("div",x,[o("div",b,[!e.loading&&e.title?(s(),t("h1",{key:0,class:g(["text-2xl font-bold header-title leading-tight",e.titleClass])},i(e.title),3)):e.loading?(s(),t("div",k)):a("",!0),c(l.$slots,"after-title",{},void 0,!0)]),e.subtitle?(s(),t("p",_,i(e.subtitle),1)):a("",!0)])]))}},C=r(S,[["__scopeId","data-v-718feedc"]]);export{C as L};
|
||||
1
assets/MainLayout-BLMS6s15.js
Normal file
1
assets/MainLayout-BLMS6s15.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/MainLayout-CXiJ2-1D.css
Normal file
1
assets/MainLayout-CXiJ2-1D.css
Normal file
@@ -0,0 +1 @@
|
||||
.user-menu-dropdown[data-v-9c585a16]{margin-top:8px}.fade-enter-active[data-v-9c585a16],.fade-leave-active[data-v-9c585a16]{transition:opacity .3s}.fade-enter-from[data-v-9c585a16],.fade-leave-to[data-v-9c585a16]{opacity:0}
|
||||
3
assets/SettingsView-B-lK2YN3.js
Normal file
3
assets/SettingsView-B-lK2YN3.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/SettingsView-aBCTYIG7.css
Normal file
1
assets/SettingsView-aBCTYIG7.css
Normal file
@@ -0,0 +1 @@
|
||||
.settings-container[data-v-7f74a34a]{min-height:calc(100vh - 300px)}.card[data-v-7f74a34a]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}.table-container[data-v-7f74a34a]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}.table-row[data-v-7f74a34a]{transition:background-color .2s ease}.table-row[data-v-7f74a34a]:hover{background-color:#f9fafb}.form-input[data-v-7f74a34a]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-7f74a34a]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-7f74a34a]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-7f74a34a]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-7f74a34a]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-7f74a34a]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-7f74a34a]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-7f74a34a]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-7f74a34a]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-7f74a34a]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-7f74a34a]{height:1.25rem;width:1.25rem}@keyframes spin-7f74a34a{to{transform:rotate(360deg)}}.loading-spinner[data-v-7f74a34a]{animation:spin-7f74a34a 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}
|
||||
1
assets/TutorialView-D6FDZgGX.js
Normal file
1
assets/TutorialView-D6FDZgGX.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/TutorialView-DhuUgHXV.css
Normal file
1
assets/TutorialView-DhuUgHXV.css
Normal file
@@ -0,0 +1 @@
|
||||
.tutorial-container[data-v-3c2eeab4]{min-height:calc(100vh - 300px)}.tutorial-content[data-v-3c2eeab4]{animation:fadeIn-3c2eeab4 .3s ease-in-out}@keyframes fadeIn-3c2eeab4{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}code[data-v-3c2eeab4]{font-family:Fira Code,Monaco,Menlo,Ubuntu Mono,monospace}.tutorial-content h4[data-v-3c2eeab4]{scroll-margin-top:100px}.tutorial-content .bg-gradient-to-r[data-v-3c2eeab4]{transition:all .2s ease}.tutorial-content .bg-gradient-to-r[data-v-3c2eeab4]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}
|
||||
13
assets/chart-Cor9iTVD.js
Normal file
13
assets/chart-Cor9iTVD.js
Normal file
File diff suppressed because one or more lines are too long
13
assets/element-plus-B8Fs_0jW.js
Normal file
13
assets/element-plus-B8Fs_0jW.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/element-plus-CPnoEkWW.css
Normal file
1
assets/element-plus-CPnoEkWW.css
Normal file
File diff suppressed because one or more lines are too long
BIN
assets/fa-brands-400-D1LuMI3I.ttf
Normal file
BIN
assets/fa-brands-400-D1LuMI3I.ttf
Normal file
Binary file not shown.
BIN
assets/fa-brands-400-D_cYUPeE.woff2
Normal file
BIN
assets/fa-brands-400-D_cYUPeE.woff2
Normal file
Binary file not shown.
BIN
assets/fa-regular-400-BjRzuEpd.woff2
Normal file
BIN
assets/fa-regular-400-BjRzuEpd.woff2
Normal file
Binary file not shown.
BIN
assets/fa-regular-400-DZaxPHgR.ttf
Normal file
BIN
assets/fa-regular-400-DZaxPHgR.ttf
Normal file
Binary file not shown.
BIN
assets/fa-solid-900-CTAAxXor.woff2
Normal file
BIN
assets/fa-solid-900-CTAAxXor.woff2
Normal file
Binary file not shown.
BIN
assets/fa-solid-900-D0aA9rwL.ttf
Normal file
BIN
assets/fa-solid-900-D0aA9rwL.ttf
Normal file
Binary file not shown.
BIN
assets/fa-v4compatibility-C9RhG_FT.woff2
Normal file
BIN
assets/fa-v4compatibility-C9RhG_FT.woff2
Normal file
Binary file not shown.
BIN
assets/fa-v4compatibility-CCth-dXg.ttf
Normal file
BIN
assets/fa-v4compatibility-CCth-dXg.ttf
Normal file
Binary file not shown.
5
assets/index-D6Sq3vWn.css
Normal file
5
assets/index-D6Sq3vWn.css
Normal file
File diff suppressed because one or more lines are too long
2
assets/index-a_f0M4v_.js
Normal file
2
assets/index-a_f0M4v_.js
Normal file
File diff suppressed because one or more lines are too long
22
assets/toast-BvwA7Mwb.js
Normal file
22
assets/toast-BvwA7Mwb.js
Normal file
@@ -0,0 +1,22 @@
|
||||
let e=null,r=0;function c(n,s="info",a="",i=3e3){e||(e=document.createElement("div"),e.id="toast-container",e.style.cssText="position: fixed; top: 20px; right: 20px; z-index: 10000;",document.body.appendChild(e));const o=++r,t=document.createElement("div");t.className=`toast rounded-2xl p-4 shadow-2xl backdrop-blur-sm toast-${s}`,t.style.cssText=`
|
||||
position: relative;
|
||||
min-width: 320px;
|
||||
max-width: 500px;
|
||||
margin-bottom: 16px;
|
||||
transform: translateX(100%);
|
||||
transition: transform 0.3s ease-in-out;
|
||||
`;const l={success:"fas fa-check-circle",error:"fas fa-times-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return t.innerHTML=`
|
||||
<div class="flex items-start gap-3">
|
||||
<div class="flex-shrink-0 mt-0.5">
|
||||
<i class="${l[s]} text-lg"></i>
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
${a?`<h4 class="font-semibold text-sm mb-1">${a}</h4>`:""}
|
||||
<p class="text-sm opacity-90 leading-relaxed">${n}</p>
|
||||
</div>
|
||||
<button onclick="this.parentElement.parentElement.remove()"
|
||||
class="flex-shrink-0 text-white/70 hover:text-white transition-colors ml-2">
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
</div>
|
||||
`,e.appendChild(t),setTimeout(()=>{t.style.transform="translateX(0)"},10),i>0&&setTimeout(()=>{t.style.transform="translateX(100%)",setTimeout(()=>{t.remove()},300)},i),o}export{c as s};
|
||||
30
assets/vendor-BDiMbLwQ.js
Normal file
30
assets/vendor-BDiMbLwQ.js
Normal file
File diff suppressed because one or more lines are too long
25
assets/vue-vendor-CKToUHZx.js
Normal file
25
assets/vue-vendor-CKToUHZx.js
Normal file
File diff suppressed because one or more lines are too long
31
index.html
Normal file
31
index.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Claude Relay Service - 管理后台</title>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
|
||||
<!-- 预连接到CDN域名,加速资源加载 -->
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
|
||||
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
|
||||
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
|
||||
<script type="module" crossorigin src="/admin-next/assets/index-a_f0M4v_.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/vue-vendor-CKToUHZx.js">
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/vendor-BDiMbLwQ.js">
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/element-plus-B8Fs_0jW.js">
|
||||
<link rel="stylesheet" crossorigin href="/admin-next/assets/element-plus-CPnoEkWW.css">
|
||||
<link rel="stylesheet" crossorigin href="/admin-next/assets/index-D6Sq3vWn.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
17
web/admin-spa/dist/assets/AccountsView-16GLZCq-.js
vendored
Normal file
17
web/admin-spa/dist/assets/AccountsView-16GLZCq-.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/AccountsView-82LpKW8Q.css
vendored
Normal file
1
web/admin-spa/dist/assets/AccountsView-82LpKW8Q.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.loading-spinner[data-v-2c7d7fea]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-2c7d7fea 1s linear infinite}@keyframes spin-2c7d7fea{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.accounts-container[data-v-2c7d7fea]{min-height:calc(100vh - 300px)}.table-container[data-v-2c7d7fea]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-2c7d7fea]{transition:all .2s ease}.table-row[data-v-2c7d7fea]:hover{background-color:#00000005}
|
||||
1
web/admin-spa/dist/assets/ApiKeysView-BXVmt5BV.css
vendored
Normal file
1
web/admin-spa/dist/assets/ApiKeysView-BXVmt5BV.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.custom-scrollbar[data-v-8e1e3115]{scrollbar-width:thin;scrollbar-color:#cbd5e0 #f7fafc}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar{width:6px}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-track{background:#f7fafc}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-thumb{background-color:#cbd5e0;border-radius:3px}.custom-scrollbar[data-v-8e1e3115]::-webkit-scrollbar-thumb:hover{background-color:#a0aec0}pre[data-v-2c02f1f7],pre[data-v-cff10d08]{white-space:pre-wrap;word-wrap:break-word}@keyframes fadeIn-060bf571{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn[data-v-060bf571]{animation:fadeIn-060bf571 .2s ease-out}.loading-spinner[data-v-060bf571]{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin-060bf571 .8s linear infinite;display:inline-block}@keyframes spin-060bf571{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tab-content[data-v-a6056fd1]{min-height:calc(100vh - 300px)}.table-container[data-v-a6056fd1]{overflow-x:auto;border-radius:12px;border:1px solid rgba(0,0,0,.05)}.table-row[data-v-a6056fd1]{transition:all .2s ease}.table-row[data-v-a6056fd1]:hover{background-color:#00000005}.loading-spinner[data-v-a6056fd1]{width:24px;height:24px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin-a6056fd1 1s linear infinite}@keyframes spin-a6056fd1{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.api-key-date-picker[data-v-a6056fd1] .el-input__inner{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.api-key-date-picker[data-v-a6056fd1] .el-input__inner:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.api-key-date-picker[data-v-a6056fd1] .el-range-separator{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}
|
||||
19
web/admin-spa/dist/assets/ApiKeysView-Cpoo_9rp.js
vendored
Normal file
19
web/admin-spa/dist/assets/ApiKeysView-Cpoo_9rp.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/ApiStatsView-Bsr4EtTR.js
vendored
Normal file
1
web/admin-spa/dist/assets/ApiStatsView-Bsr4EtTR.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/ApiStatsView-z3DmkD1S.css
vendored
Normal file
1
web/admin-spa/dist/assets/ApiStatsView-z3DmkD1S.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/DashboardView-D0H7r_kA.js
vendored
Normal file
1
web/admin-spa/dist/assets/DashboardView-D0H7r_kA.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/DashboardView-R6dMwgzw.css
vendored
Normal file
1
web/admin-spa/dist/assets/DashboardView-R6dMwgzw.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.custom-date-picker[data-v-a1b368e2] .el-input__inner{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.custom-date-picker[data-v-a1b368e2] .el-input__inner:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1));--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.custom-date-picker[data-v-a1b368e2] .el-input__inner{font-size:13px;padding:0 10px}.custom-date-picker[data-v-a1b368e2] .el-range-separator{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));padding:0 2px}.custom-date-picker[data-v-a1b368e2] .el-range-input{font-size:13px}@keyframes spin-a1b368e2{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin[data-v-a1b368e2]{animation:spin-a1b368e2 1s linear infinite}
|
||||
1
web/admin-spa/dist/assets/LoginView-Mj3shjXc.js
vendored
Normal file
1
web/admin-spa/dist/assets/LoginView-Mj3shjXc.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
import{c as x,r as b,q as f,x as a,z as t,L as i,Q as y,u as o,P as d,Y as w,K as u,aq as c,O as p,y as n}from"./vue-vendor-CKToUHZx.js";import{_,u as v}from"./index-a_f0M4v_.js";/* empty css */import"./element-plus-B8Fs_0jW.js";import"./vendor-BDiMbLwQ.js";const h={class:"flex items-center justify-center min-h-screen p-4 sm:p-6"},k={class:"glass-strong rounded-xl sm:rounded-2xl md:rounded-3xl p-6 sm:p-8 md:p-10 w-full max-w-md shadow-2xl"},L={class:"text-center mb-6 sm:mb-8"},S={class:"w-16 h-16 sm:w-20 sm:h-20 mx-auto mb-4 sm:mb-6 bg-gradient-to-br from-blue-500/20 to-purple-500/20 border border-gray-300/30 rounded-xl sm:rounded-2xl flex items-center justify-center backdrop-blur-sm overflow-hidden"},V=["src"],I={key:1,class:"fas fa-cloud text-2xl sm:text-3xl text-gray-700"},N={key:1,class:"w-10 h-10 sm:w-12 sm:h-12 bg-gray-300/50 rounded animate-pulse"},q={key:0,class:"text-2xl sm:text-3xl font-bold text-white mb-2 header-title"},D={key:1,class:"h-8 sm:h-9 w-48 sm:w-64 bg-gray-300/50 rounded animate-pulse mx-auto mb-2"},E=["disabled"],j={key:0,class:"fas fa-sign-in-alt mr-2"},B={key:1,class:"loading-spinner mr-2"},M={key:0,class:"mt-4 sm:mt-6 p-3 sm:p-4 bg-red-500/20 border border-red-500/30 rounded-lg sm:rounded-xl text-red-800 text-xs sm:text-sm text-center backdrop-blur-sm"},F={__name:"LoginView",setup(O){const e=v(),m=x(()=>e.oemLoading),l=b({username:"",password:""});f(()=>{e.loadOemSettings()});const g=async()=>{await e.login(l.value)};return(T,s)=>(n(),a("div",h,[t("div",k,[t("div",L,[t("div",S,[m.value?(n(),a("div",N)):(n(),a(y,{key:0},[o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon?(n(),a("img",{key:0,src:o(e).oemSettings.siteIconData||o(e).oemSettings.siteIcon,alt:"Logo",class:"w-10 h-10 sm:w-12 sm:h-12 object-contain",onError:s[0]||(s[0]=r=>r.target.style.display="none")},null,40,V)):(n(),a("i",I))],64))]),!m.value&&o(e).oemSettings.siteName?(n(),a("h1",q,d(o(e).oemSettings.siteName),1)):m.value?(n(),a("div",D)):i("",!0),s[3]||(s[3]=t("p",{class:"text-gray-600 text-base sm:text-lg"}," 管理后台 ",-1))]),t("form",{class:"space-y-4 sm:space-y-6",onSubmit:w(g,["prevent"])},[t("div",null,[s[4]||(s[4]=t("label",{class:"block text-sm font-semibold text-gray-900 mb-2 sm:mb-3"},"用户名",-1)),u(t("input",{"onUpdate:modelValue":s[1]||(s[1]=r=>l.value.username=r),type:"text",required:"",class:"form-input w-full",placeholder:"请输入用户名"},null,512),[[c,l.value.username]])]),t("div",null,[s[5]||(s[5]=t("label",{class:"block text-sm font-semibold text-gray-900 mb-2 sm:mb-3"},"密码",-1)),u(t("input",{"onUpdate:modelValue":s[2]||(s[2]=r=>l.value.password=r),type:"password",required:"",class:"form-input w-full",placeholder:"请输入密码"},null,512),[[c,l.value.password]])]),t("button",{type:"submit",disabled:o(e).loginLoading,class:"btn btn-primary w-full py-3 sm:py-4 px-4 sm:px-6 text-base sm:text-lg font-semibold"},[o(e).loginLoading?i("",!0):(n(),a("i",j)),o(e).loginLoading?(n(),a("div",B)):i("",!0),p(" "+d(o(e).loginLoading?"登录中...":"登录"),1)],8,E)],32),o(e).loginError?(n(),a("div",M,[s[6]||(s[6]=t("i",{class:"fas fa-exclamation-triangle mr-2"},null,-1)),p(d(o(e).loginError),1)])):i("",!0)])]))}},P=_(F,[["__scopeId","data-v-d68c64ae"]]);export{P as default};
|
||||
0
web/admin-spa/dist/assets/LoginView-tn0RQdqM.css
vendored
Normal file
0
web/admin-spa/dist/assets/LoginView-tn0RQdqM.css
vendored
Normal file
1
web/admin-spa/dist/assets/LogoTitle-BiOf3Vkp.css
vendored
Normal file
1
web/admin-spa/dist/assets/LogoTitle-BiOf3Vkp.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
@keyframes pulse-718feedc{0%{opacity:.7}50%{opacity:.4}to{opacity:.7}}.animate-pulse[data-v-718feedc]{animation:pulse-718feedc 2s cubic-bezier(.4,0,.6,1) infinite}.header-title[data-v-718feedc]{text-shadow:0 1px 2px rgba(0,0,0,.1)}
|
||||
1
web/admin-spa/dist/assets/LogoTitle-Dqsvy7oN.js
vendored
Normal file
1
web/admin-spa/dist/assets/LogoTitle-Dqsvy7oN.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/* empty css */import{_ as r}from"./index-a_f0M4v_.js";import{x as t,y as s,z as o,Q as d,L as a,A as c,C as g,P as i}from"./vue-vendor-CKToUHZx.js";const u={class:"flex items-center gap-4"},f={class:"w-12 h-12 bg-gradient-to-br from-blue-500/20 to-purple-500/20 border border-gray-300/30 rounded-xl flex items-center justify-center backdrop-blur-sm flex-shrink-0 overflow-hidden"},y=["src"],m={key:1,class:"fas fa-cloud text-xl text-gray-700"},h={key:1,class:"w-8 h-8 bg-gray-300/50 rounded animate-pulse"},x={class:"flex flex-col justify-center min-h-[48px]"},b={class:"flex items-center gap-3"},k={key:1,class:"h-8 w-64 bg-gray-300/50 rounded animate-pulse"},_={key:0,class:"text-gray-600 text-sm leading-tight mt-0.5"},S={__name:"LogoTitle",props:{loading:{type:Boolean,default:!1},title:{type:String,default:""},subtitle:{type:String,default:""},logoSrc:{type:String,default:""},titleClass:{type:String,default:"text-gray-900"}},setup(e){const n=l=>{l.target.style.display="none"};return(l,p)=>(s(),t("div",u,[o("div",f,[e.loading?(s(),t("div",h)):(s(),t(d,{key:0},[e.logoSrc?(s(),t("img",{key:0,src:e.logoSrc,alt:"Logo",class:"w-8 h-8 object-contain",onError:n},null,40,y)):(s(),t("i",m))],64))]),o("div",x,[o("div",b,[!e.loading&&e.title?(s(),t("h1",{key:0,class:g(["text-2xl font-bold header-title leading-tight",e.titleClass])},i(e.title),3)):e.loading?(s(),t("div",k)):a("",!0),c(l.$slots,"after-title",{},void 0,!0)]),e.subtitle?(s(),t("p",_,i(e.subtitle),1)):a("",!0)])]))}},C=r(S,[["__scopeId","data-v-718feedc"]]);export{C as L};
|
||||
1
web/admin-spa/dist/assets/MainLayout-BLMS6s15.js
vendored
Normal file
1
web/admin-spa/dist/assets/MainLayout-BLMS6s15.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/MainLayout-CXiJ2-1D.css
vendored
Normal file
1
web/admin-spa/dist/assets/MainLayout-CXiJ2-1D.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.user-menu-dropdown[data-v-9c585a16]{margin-top:8px}.fade-enter-active[data-v-9c585a16],.fade-leave-active[data-v-9c585a16]{transition:opacity .3s}.fade-enter-from[data-v-9c585a16],.fade-leave-to[data-v-9c585a16]{opacity:0}
|
||||
3
web/admin-spa/dist/assets/SettingsView-B-lK2YN3.js
vendored
Normal file
3
web/admin-spa/dist/assets/SettingsView-B-lK2YN3.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/SettingsView-aBCTYIG7.css
vendored
Normal file
1
web/admin-spa/dist/assets/SettingsView-aBCTYIG7.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.settings-container[data-v-7f74a34a]{min-height:calc(100vh - 300px)}.card[data-v-7f74a34a]{background:#fff;border-radius:12px;box-shadow:0 2px 12px #0000001a;border:1px solid #e5e7eb}.table-container[data-v-7f74a34a]{overflow:hidden;border-radius:8px;border:1px solid #f3f4f6}.table-row[data-v-7f74a34a]{transition:background-color .2s ease}.table-row[data-v-7f74a34a]:hover{background-color:#f9fafb}.form-input[data-v-7f74a34a]{width:100%;border-radius:.5rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));padding:.5rem 1rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input[data-v-7f74a34a]:focus{border-color:transparent;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn[data-v-7f74a34a]{display:inline-flex;align-items:center;justify-content:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:600;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.btn[data-v-7f74a34a]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-offset-width: 2px}.btn-primary[data-v-7f74a34a]{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary[data-v-7f74a34a]:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.btn-primary[data-v-7f74a34a]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1))}.btn-success[data-v-7f74a34a]{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-success[data-v-7f74a34a]:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.btn-success[data-v-7f74a34a]:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(34 197 94 / var(--tw-ring-opacity, 1))}.loading-spinner[data-v-7f74a34a]{height:1.25rem;width:1.25rem}@keyframes spin-7f74a34a{to{transform:rotate(360deg)}}.loading-spinner[data-v-7f74a34a]{animation:spin-7f74a34a 1s linear infinite;border-radius:9999px;border-width:2px;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-border-opacity: 1;border-top-color:rgb(37 99 235 / var(--tw-border-opacity, 1))}
|
||||
1
web/admin-spa/dist/assets/TutorialView-D6FDZgGX.js
vendored
Normal file
1
web/admin-spa/dist/assets/TutorialView-D6FDZgGX.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/TutorialView-DhuUgHXV.css
vendored
Normal file
1
web/admin-spa/dist/assets/TutorialView-DhuUgHXV.css
vendored
Normal file
@@ -0,0 +1 @@
|
||||
.tutorial-container[data-v-3c2eeab4]{min-height:calc(100vh - 300px)}.tutorial-content[data-v-3c2eeab4]{animation:fadeIn-3c2eeab4 .3s ease-in-out}@keyframes fadeIn-3c2eeab4{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}code[data-v-3c2eeab4]{font-family:Fira Code,Monaco,Menlo,Ubuntu Mono,monospace}.tutorial-content h4[data-v-3c2eeab4]{scroll-margin-top:100px}.tutorial-content .bg-gradient-to-r[data-v-3c2eeab4]{transition:all .2s ease}.tutorial-content .bg-gradient-to-r[data-v-3c2eeab4]:hover{transform:translateY(-1px);box-shadow:0 4px 12px #0000001a}
|
||||
13
web/admin-spa/dist/assets/chart-Cor9iTVD.js
vendored
Normal file
13
web/admin-spa/dist/assets/chart-Cor9iTVD.js
vendored
Normal file
File diff suppressed because one or more lines are too long
13
web/admin-spa/dist/assets/element-plus-B8Fs_0jW.js
vendored
Normal file
13
web/admin-spa/dist/assets/element-plus-B8Fs_0jW.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
web/admin-spa/dist/assets/element-plus-CPnoEkWW.css
vendored
Normal file
1
web/admin-spa/dist/assets/element-plus-CPnoEkWW.css
vendored
Normal file
File diff suppressed because one or more lines are too long
BIN
web/admin-spa/dist/assets/fa-brands-400-D1LuMI3I.ttf
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-brands-400-D1LuMI3I.ttf
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-brands-400-D_cYUPeE.woff2
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-brands-400-D_cYUPeE.woff2
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-regular-400-BjRzuEpd.woff2
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-regular-400-BjRzuEpd.woff2
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-regular-400-DZaxPHgR.ttf
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-regular-400-DZaxPHgR.ttf
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-solid-900-CTAAxXor.woff2
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-solid-900-CTAAxXor.woff2
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-solid-900-D0aA9rwL.ttf
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-solid-900-D0aA9rwL.ttf
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-v4compatibility-C9RhG_FT.woff2
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-v4compatibility-C9RhG_FT.woff2
vendored
Normal file
Binary file not shown.
BIN
web/admin-spa/dist/assets/fa-v4compatibility-CCth-dXg.ttf
vendored
Normal file
BIN
web/admin-spa/dist/assets/fa-v4compatibility-CCth-dXg.ttf
vendored
Normal file
Binary file not shown.
5
web/admin-spa/dist/assets/index-D6Sq3vWn.css
vendored
Normal file
5
web/admin-spa/dist/assets/index-D6Sq3vWn.css
vendored
Normal file
File diff suppressed because one or more lines are too long
2
web/admin-spa/dist/assets/index-a_f0M4v_.js
vendored
Normal file
2
web/admin-spa/dist/assets/index-a_f0M4v_.js
vendored
Normal file
File diff suppressed because one or more lines are too long
22
web/admin-spa/dist/assets/toast-BvwA7Mwb.js
vendored
Normal file
22
web/admin-spa/dist/assets/toast-BvwA7Mwb.js
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
let e=null,r=0;function c(n,s="info",a="",i=3e3){e||(e=document.createElement("div"),e.id="toast-container",e.style.cssText="position: fixed; top: 20px; right: 20px; z-index: 10000;",document.body.appendChild(e));const o=++r,t=document.createElement("div");t.className=`toast rounded-2xl p-4 shadow-2xl backdrop-blur-sm toast-${s}`,t.style.cssText=`
|
||||
position: relative;
|
||||
min-width: 320px;
|
||||
max-width: 500px;
|
||||
margin-bottom: 16px;
|
||||
transform: translateX(100%);
|
||||
transition: transform 0.3s ease-in-out;
|
||||
`;const l={success:"fas fa-check-circle",error:"fas fa-times-circle",warning:"fas fa-exclamation-triangle",info:"fas fa-info-circle"};return t.innerHTML=`
|
||||
<div class="flex items-start gap-3">
|
||||
<div class="flex-shrink-0 mt-0.5">
|
||||
<i class="${l[s]} text-lg"></i>
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
${a?`<h4 class="font-semibold text-sm mb-1">${a}</h4>`:""}
|
||||
<p class="text-sm opacity-90 leading-relaxed">${n}</p>
|
||||
</div>
|
||||
<button onclick="this.parentElement.parentElement.remove()"
|
||||
class="flex-shrink-0 text-white/70 hover:text-white transition-colors ml-2">
|
||||
<i class="fas fa-times"></i>
|
||||
</button>
|
||||
</div>
|
||||
`,e.appendChild(t),setTimeout(()=>{t.style.transform="translateX(0)"},10),i>0&&setTimeout(()=>{t.style.transform="translateX(100%)",setTimeout(()=>{t.remove()},300)},i),o}export{c as s};
|
||||
30
web/admin-spa/dist/assets/vendor-BDiMbLwQ.js
vendored
Normal file
30
web/admin-spa/dist/assets/vendor-BDiMbLwQ.js
vendored
Normal file
File diff suppressed because one or more lines are too long
25
web/admin-spa/dist/assets/vue-vendor-CKToUHZx.js
vendored
Normal file
25
web/admin-spa/dist/assets/vue-vendor-CKToUHZx.js
vendored
Normal file
File diff suppressed because one or more lines are too long
31
web/admin-spa/dist/index.html
vendored
Normal file
31
web/admin-spa/dist/index.html
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Claude Relay Service - 管理后台</title>
|
||||
|
||||
<!-- Google Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Font Awesome -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
|
||||
<!-- 预连接到CDN域名,加速资源加载 -->
|
||||
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
|
||||
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
|
||||
<link rel="dns-prefetch" href="https://cdn.jsdelivr.net">
|
||||
<link rel="dns-prefetch" href="https://cdnjs.cloudflare.com">
|
||||
<script type="module" crossorigin src="/admin-next/assets/index-a_f0M4v_.js"></script>
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/vue-vendor-CKToUHZx.js">
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/vendor-BDiMbLwQ.js">
|
||||
<link rel="modulepreload" crossorigin href="/admin-next/assets/element-plus-B8Fs_0jW.js">
|
||||
<link rel="stylesheet" crossorigin href="/admin-next/assets/element-plus-CPnoEkWW.css">
|
||||
<link rel="stylesheet" crossorigin href="/admin-next/assets/index-D6Sq3vWn.css">
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
</html>
|
||||
1
web/admin-spa/node_modules/.bin/acorn
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/acorn
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../acorn/bin/acorn
|
||||
1
web/admin-spa/node_modules/.bin/autoprefixer
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/autoprefixer
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../autoprefixer/bin/autoprefixer
|
||||
1
web/admin-spa/node_modules/.bin/browserslist
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/browserslist
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../browserslist/cli.js
|
||||
1
web/admin-spa/node_modules/.bin/cssesc
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/cssesc
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../cssesc/bin/cssesc
|
||||
1
web/admin-spa/node_modules/.bin/esbuild
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/esbuild
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../esbuild/bin/esbuild
|
||||
1
web/admin-spa/node_modules/.bin/eslint
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/eslint
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../eslint/bin/eslint.js
|
||||
1
web/admin-spa/node_modules/.bin/jiti
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/jiti
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../jiti/bin/jiti.js
|
||||
1
web/admin-spa/node_modules/.bin/js-yaml
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/js-yaml
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../js-yaml/bin/js-yaml.js
|
||||
1
web/admin-spa/node_modules/.bin/nanoid
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/nanoid
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../nanoid/bin/nanoid.cjs
|
||||
1
web/admin-spa/node_modules/.bin/node-which
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/node-which
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../which/bin/node-which
|
||||
1
web/admin-spa/node_modules/.bin/parser
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/parser
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../@babel/parser/bin/babel-parser.js
|
||||
1
web/admin-spa/node_modules/.bin/prettier
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/prettier
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../prettier/bin/prettier.cjs
|
||||
1
web/admin-spa/node_modules/.bin/resolve
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/resolve
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../resolve/bin/resolve
|
||||
1
web/admin-spa/node_modules/.bin/rimraf
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/rimraf
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../rimraf/bin.js
|
||||
1
web/admin-spa/node_modules/.bin/rollup
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/rollup
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../rollup/dist/bin/rollup
|
||||
1
web/admin-spa/node_modules/.bin/semver
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/semver
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../semver/bin/semver.js
|
||||
1
web/admin-spa/node_modules/.bin/sucrase
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/sucrase
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../sucrase/bin/sucrase
|
||||
1
web/admin-spa/node_modules/.bin/sucrase-node
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/sucrase-node
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../sucrase/bin/sucrase-node
|
||||
1
web/admin-spa/node_modules/.bin/tailwind
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/tailwind
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../tailwindcss/lib/cli.js
|
||||
1
web/admin-spa/node_modules/.bin/tailwindcss
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/tailwindcss
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../tailwindcss/lib/cli.js
|
||||
1
web/admin-spa/node_modules/.bin/update-browserslist-db
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/update-browserslist-db
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../update-browserslist-db/cli.js
|
||||
1
web/admin-spa/node_modules/.bin/vite
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/vite
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../vite/bin/vite.js
|
||||
1
web/admin-spa/node_modules/.bin/vue-demi-fix
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/vue-demi-fix
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../vue-demi/bin/vue-demi-fix.js
|
||||
1
web/admin-spa/node_modules/.bin/vue-demi-switch
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/vue-demi-switch
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../vue-demi/bin/vue-demi-switch.js
|
||||
1
web/admin-spa/node_modules/.bin/yaml
generated
vendored
Symbolic link
1
web/admin-spa/node_modules/.bin/yaml
generated
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../yaml/bin.mjs
|
||||
4092
web/admin-spa/node_modules/.package-lock.json
generated
vendored
Normal file
4092
web/admin-spa/node_modules/.package-lock.json
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
128
web/admin-spa/node_modules/@alloc/quick-lru/index.d.ts
generated
vendored
Normal file
128
web/admin-spa/node_modules/@alloc/quick-lru/index.d.ts
generated
vendored
Normal file
@@ -0,0 +1,128 @@
|
||||
declare namespace QuickLRU {
|
||||
interface Options<KeyType, ValueType> {
|
||||
/**
|
||||
The maximum number of milliseconds an item should remain in the cache.
|
||||
|
||||
@default Infinity
|
||||
|
||||
By default, `maxAge` will be `Infinity`, which means that items will never expire.
|
||||
Lazy expiration upon the next write or read call.
|
||||
|
||||
Individual expiration of an item can be specified by the `set(key, value, maxAge)` method.
|
||||
*/
|
||||
readonly maxAge?: number;
|
||||
|
||||
/**
|
||||
The maximum number of items before evicting the least recently used items.
|
||||
*/
|
||||
readonly maxSize: number;
|
||||
|
||||
/**
|
||||
Called right before an item is evicted from the cache.
|
||||
|
||||
Useful for side effects or for items like object URLs that need explicit cleanup (`revokeObjectURL`).
|
||||
*/
|
||||
onEviction?: (key: KeyType, value: ValueType) => void;
|
||||
}
|
||||
}
|
||||
|
||||
declare class QuickLRU<KeyType, ValueType>
|
||||
implements Iterable<[KeyType, ValueType]> {
|
||||
/**
|
||||
The stored item count.
|
||||
*/
|
||||
readonly size: number;
|
||||
|
||||
/**
|
||||
Simple ["Least Recently Used" (LRU) cache](https://en.m.wikipedia.org/wiki/Cache_replacement_policies#Least_Recently_Used_.28LRU.29).
|
||||
|
||||
The instance is [`iterable`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Iteration_protocols) so you can use it directly in a [`for…of`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...of) loop.
|
||||
|
||||
@example
|
||||
```
|
||||
import QuickLRU = require('quick-lru');
|
||||
|
||||
const lru = new QuickLRU({maxSize: 1000});
|
||||
|
||||
lru.set('🦄', '🌈');
|
||||
|
||||
lru.has('🦄');
|
||||
//=> true
|
||||
|
||||
lru.get('🦄');
|
||||
//=> '🌈'
|
||||
```
|
||||
*/
|
||||
constructor(options: QuickLRU.Options<KeyType, ValueType>);
|
||||
|
||||
[Symbol.iterator](): IterableIterator<[KeyType, ValueType]>;
|
||||
|
||||
/**
|
||||
Set an item. Returns the instance.
|
||||
|
||||
Individual expiration of an item can be specified with the `maxAge` option. If not specified, the global `maxAge` value will be used in case it is specified in the constructor, otherwise the item will never expire.
|
||||
|
||||
@returns The list instance.
|
||||
*/
|
||||
set(key: KeyType, value: ValueType, options?: {maxAge?: number}): this;
|
||||
|
||||
/**
|
||||
Get an item.
|
||||
|
||||
@returns The stored item or `undefined`.
|
||||
*/
|
||||
get(key: KeyType): ValueType | undefined;
|
||||
|
||||
/**
|
||||
Check if an item exists.
|
||||
*/
|
||||
has(key: KeyType): boolean;
|
||||
|
||||
/**
|
||||
Get an item without marking it as recently used.
|
||||
|
||||
@returns The stored item or `undefined`.
|
||||
*/
|
||||
peek(key: KeyType): ValueType | undefined;
|
||||
|
||||
/**
|
||||
Delete an item.
|
||||
|
||||
@returns `true` if the item is removed or `false` if the item doesn't exist.
|
||||
*/
|
||||
delete(key: KeyType): boolean;
|
||||
|
||||
/**
|
||||
Delete all items.
|
||||
*/
|
||||
clear(): void;
|
||||
|
||||
/**
|
||||
Update the `maxSize` in-place, discarding items as necessary. Insertion order is mostly preserved, though this is not a strong guarantee.
|
||||
|
||||
Useful for on-the-fly tuning of cache sizes in live systems.
|
||||
*/
|
||||
resize(maxSize: number): void;
|
||||
|
||||
/**
|
||||
Iterable for all the keys.
|
||||
*/
|
||||
keys(): IterableIterator<KeyType>;
|
||||
|
||||
/**
|
||||
Iterable for all the values.
|
||||
*/
|
||||
values(): IterableIterator<ValueType>;
|
||||
|
||||
/**
|
||||
Iterable for all entries, starting with the oldest (ascending in recency).
|
||||
*/
|
||||
entriesAscending(): IterableIterator<[KeyType, ValueType]>;
|
||||
|
||||
/**
|
||||
Iterable for all entries, starting with the newest (descending in recency).
|
||||
*/
|
||||
entriesDescending(): IterableIterator<[KeyType, ValueType]>;
|
||||
}
|
||||
|
||||
export = QuickLRU;
|
||||
263
web/admin-spa/node_modules/@alloc/quick-lru/index.js
generated
vendored
Normal file
263
web/admin-spa/node_modules/@alloc/quick-lru/index.js
generated
vendored
Normal file
@@ -0,0 +1,263 @@
|
||||
'use strict';
|
||||
|
||||
class QuickLRU {
|
||||
constructor(options = {}) {
|
||||
if (!(options.maxSize && options.maxSize > 0)) {
|
||||
throw new TypeError('`maxSize` must be a number greater than 0');
|
||||
}
|
||||
|
||||
if (typeof options.maxAge === 'number' && options.maxAge === 0) {
|
||||
throw new TypeError('`maxAge` must be a number greater than 0');
|
||||
}
|
||||
|
||||
this.maxSize = options.maxSize;
|
||||
this.maxAge = options.maxAge || Infinity;
|
||||
this.onEviction = options.onEviction;
|
||||
this.cache = new Map();
|
||||
this.oldCache = new Map();
|
||||
this._size = 0;
|
||||
}
|
||||
|
||||
_emitEvictions(cache) {
|
||||
if (typeof this.onEviction !== 'function') {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const [key, item] of cache) {
|
||||
this.onEviction(key, item.value);
|
||||
}
|
||||
}
|
||||
|
||||
_deleteIfExpired(key, item) {
|
||||
if (typeof item.expiry === 'number' && item.expiry <= Date.now()) {
|
||||
if (typeof this.onEviction === 'function') {
|
||||
this.onEviction(key, item.value);
|
||||
}
|
||||
|
||||
return this.delete(key);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
_getOrDeleteIfExpired(key, item) {
|
||||
const deleted = this._deleteIfExpired(key, item);
|
||||
if (deleted === false) {
|
||||
return item.value;
|
||||
}
|
||||
}
|
||||
|
||||
_getItemValue(key, item) {
|
||||
return item.expiry ? this._getOrDeleteIfExpired(key, item) : item.value;
|
||||
}
|
||||
|
||||
_peek(key, cache) {
|
||||
const item = cache.get(key);
|
||||
|
||||
return this._getItemValue(key, item);
|
||||
}
|
||||
|
||||
_set(key, value) {
|
||||
this.cache.set(key, value);
|
||||
this._size++;
|
||||
|
||||
if (this._size >= this.maxSize) {
|
||||
this._size = 0;
|
||||
this._emitEvictions(this.oldCache);
|
||||
this.oldCache = this.cache;
|
||||
this.cache = new Map();
|
||||
}
|
||||
}
|
||||
|
||||
_moveToRecent(key, item) {
|
||||
this.oldCache.delete(key);
|
||||
this._set(key, item);
|
||||
}
|
||||
|
||||
* _entriesAscending() {
|
||||
for (const item of this.oldCache) {
|
||||
const [key, value] = item;
|
||||
if (!this.cache.has(key)) {
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const item of this.cache) {
|
||||
const [key, value] = item;
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield item;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
get(key) {
|
||||
if (this.cache.has(key)) {
|
||||
const item = this.cache.get(key);
|
||||
|
||||
return this._getItemValue(key, item);
|
||||
}
|
||||
|
||||
if (this.oldCache.has(key)) {
|
||||
const item = this.oldCache.get(key);
|
||||
if (this._deleteIfExpired(key, item) === false) {
|
||||
this._moveToRecent(key, item);
|
||||
return item.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
set(key, value, {maxAge = this.maxAge === Infinity ? undefined : Date.now() + this.maxAge} = {}) {
|
||||
if (this.cache.has(key)) {
|
||||
this.cache.set(key, {
|
||||
value,
|
||||
maxAge
|
||||
});
|
||||
} else {
|
||||
this._set(key, {value, expiry: maxAge});
|
||||
}
|
||||
}
|
||||
|
||||
has(key) {
|
||||
if (this.cache.has(key)) {
|
||||
return !this._deleteIfExpired(key, this.cache.get(key));
|
||||
}
|
||||
|
||||
if (this.oldCache.has(key)) {
|
||||
return !this._deleteIfExpired(key, this.oldCache.get(key));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
peek(key) {
|
||||
if (this.cache.has(key)) {
|
||||
return this._peek(key, this.cache);
|
||||
}
|
||||
|
||||
if (this.oldCache.has(key)) {
|
||||
return this._peek(key, this.oldCache);
|
||||
}
|
||||
}
|
||||
|
||||
delete(key) {
|
||||
const deleted = this.cache.delete(key);
|
||||
if (deleted) {
|
||||
this._size--;
|
||||
}
|
||||
|
||||
return this.oldCache.delete(key) || deleted;
|
||||
}
|
||||
|
||||
clear() {
|
||||
this.cache.clear();
|
||||
this.oldCache.clear();
|
||||
this._size = 0;
|
||||
}
|
||||
|
||||
resize(newSize) {
|
||||
if (!(newSize && newSize > 0)) {
|
||||
throw new TypeError('`maxSize` must be a number greater than 0');
|
||||
}
|
||||
|
||||
const items = [...this._entriesAscending()];
|
||||
const removeCount = items.length - newSize;
|
||||
if (removeCount < 0) {
|
||||
this.cache = new Map(items);
|
||||
this.oldCache = new Map();
|
||||
this._size = items.length;
|
||||
} else {
|
||||
if (removeCount > 0) {
|
||||
this._emitEvictions(items.slice(0, removeCount));
|
||||
}
|
||||
|
||||
this.oldCache = new Map(items.slice(removeCount));
|
||||
this.cache = new Map();
|
||||
this._size = 0;
|
||||
}
|
||||
|
||||
this.maxSize = newSize;
|
||||
}
|
||||
|
||||
* keys() {
|
||||
for (const [key] of this) {
|
||||
yield key;
|
||||
}
|
||||
}
|
||||
|
||||
* values() {
|
||||
for (const [, value] of this) {
|
||||
yield value;
|
||||
}
|
||||
}
|
||||
|
||||
* [Symbol.iterator]() {
|
||||
for (const item of this.cache) {
|
||||
const [key, value] = item;
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield [key, value.value];
|
||||
}
|
||||
}
|
||||
|
||||
for (const item of this.oldCache) {
|
||||
const [key, value] = item;
|
||||
if (!this.cache.has(key)) {
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield [key, value.value];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
* entriesDescending() {
|
||||
let items = [...this.cache];
|
||||
for (let i = items.length - 1; i >= 0; --i) {
|
||||
const item = items[i];
|
||||
const [key, value] = item;
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield [key, value.value];
|
||||
}
|
||||
}
|
||||
|
||||
items = [...this.oldCache];
|
||||
for (let i = items.length - 1; i >= 0; --i) {
|
||||
const item = items[i];
|
||||
const [key, value] = item;
|
||||
if (!this.cache.has(key)) {
|
||||
const deleted = this._deleteIfExpired(key, value);
|
||||
if (deleted === false) {
|
||||
yield [key, value.value];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
* entriesAscending() {
|
||||
for (const [key, value] of this._entriesAscending()) {
|
||||
yield [key, value.value];
|
||||
}
|
||||
}
|
||||
|
||||
get size() {
|
||||
if (!this._size) {
|
||||
return this.oldCache.size;
|
||||
}
|
||||
|
||||
let oldCacheSize = 0;
|
||||
for (const key of this.oldCache.keys()) {
|
||||
if (!this.cache.has(key)) {
|
||||
oldCacheSize++;
|
||||
}
|
||||
}
|
||||
|
||||
return Math.min(this._size + oldCacheSize, this.maxSize);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = QuickLRU;
|
||||
9
web/admin-spa/node_modules/@alloc/quick-lru/license
generated
vendored
Normal file
9
web/admin-spa/node_modules/@alloc/quick-lru/license
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user