rssany 0.3.2 → 0.3.3

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.
Files changed (114) hide show
  1. package/.env.example +52 -52
  2. package/README.md +156 -147
  3. package/app/plugins/builtin/email.rssany.js +84 -84
  4. package/app/plugins/builtin/rss.rssany.js +164 -164
  5. package/app/statics/README.md +7 -7
  6. package/app/webui/build/200.html +36 -36
  7. package/app/webui/build/_app/immutable/assets/10.CmGYYZFR.css +1 -0
  8. package/app/webui/build/_app/immutable/assets/11.Dkz3VS_N.css +1 -0
  9. package/app/webui/build/_app/immutable/assets/14.BCCBoMGj.css +1 -0
  10. package/app/webui/build/_app/immutable/assets/6.Cm_jpHOq.css +1 -0
  11. package/app/webui/build/_app/immutable/assets/7.CJ3BjogD.css +1 -0
  12. package/app/webui/build/_app/immutable/assets/9.CATKVZ-n.css +1 -0
  13. package/app/webui/build/_app/immutable/assets/{SourcesList.D5Lso0bo.css → SourcesList.ke66uOSi.css} +1 -1
  14. package/app/webui/build/_app/immutable/assets/chevron-down.CV-KWLNP.css +1 -0
  15. package/app/webui/build/_app/immutable/chunks/{CGCMIfh3.js → 4TuV_psf.js} +1 -1
  16. package/app/webui/build/_app/immutable/chunks/{DAdOEnFb.js → B0czyjwj.js} +1 -1
  17. package/app/webui/build/_app/immutable/chunks/{CFwxUBGi.js → B553hBXT.js} +1 -1
  18. package/app/webui/build/_app/immutable/chunks/B8StT3Do.js +6 -0
  19. package/app/webui/build/_app/immutable/chunks/BI_ale1m.js +1 -0
  20. package/app/webui/build/_app/immutable/chunks/BK0ygNWX.js +2 -0
  21. package/app/webui/build/_app/immutable/chunks/BKm6QCwp.js +1 -0
  22. package/app/webui/build/_app/immutable/chunks/BT6b4LcZ.js +36 -0
  23. package/app/webui/build/_app/immutable/chunks/{Brun6sCr.js → BZY5aksi.js} +2 -2
  24. package/app/webui/build/_app/immutable/chunks/{C8umpVpB.js → BnqaikL8.js} +1 -1
  25. package/app/webui/build/_app/immutable/chunks/BsQ08Wq_.js +1 -0
  26. package/app/webui/build/_app/immutable/chunks/C9wTDiHH.js +1 -0
  27. package/app/webui/build/_app/immutable/chunks/{B-CeeY89.js → CAKuIoAf.js} +1 -1
  28. package/app/webui/build/_app/immutable/chunks/CEWi_rGa.js +1 -0
  29. package/app/webui/build/_app/immutable/chunks/{ChUctqXA.js → Cc7aBSsN.js} +1 -1
  30. package/app/webui/build/_app/immutable/chunks/{BAJAS8BI.js → D8G961Hm.js} +1 -1
  31. package/app/webui/build/_app/immutable/chunks/{CS53ooo0.js → DIeahUKq.js} +1 -1
  32. package/app/webui/build/_app/immutable/chunks/DO5OXNYS.js +1 -0
  33. package/app/webui/build/_app/immutable/chunks/Dg_D3pjF.js +1 -0
  34. package/app/webui/build/_app/immutable/chunks/{Dyvi1wBH.js → DptdhtA1.js} +1 -1
  35. package/app/webui/build/_app/immutable/chunks/{ClknbeNl.js → FDS7fbwH.js} +1 -1
  36. package/app/webui/build/_app/immutable/chunks/{DXDBlEGf.js → GeNMTUn1.js} +1 -1
  37. package/app/webui/build/_app/immutable/chunks/{DCEayuDt.js → IhDlsCxD.js} +1 -1
  38. package/app/webui/build/_app/immutable/chunks/Nd0ktDhd.js +1 -0
  39. package/app/webui/build/_app/immutable/chunks/{D6kzEN_P.js → SvdgnirT.js} +1 -1
  40. package/app/webui/build/_app/immutable/chunks/WW6La7Nt.js +2 -0
  41. package/app/webui/build/_app/immutable/chunks/{DsxvjlCC.js → pd_p3yYy.js} +5 -5
  42. package/app/webui/build/_app/immutable/chunks/rNwPv4DZ.js +1 -0
  43. package/app/webui/build/_app/immutable/entry/app.BKLBG-4w.js +2 -0
  44. package/app/webui/build/_app/immutable/entry/start.D-X6pVtx.js +1 -0
  45. package/app/webui/build/_app/immutable/nodes/{0.CQDkqUeN.js → 0.CJDC_3s9.js} +3 -3
  46. package/app/webui/build/_app/immutable/nodes/1.DsKocFSb.js +1 -0
  47. package/app/webui/build/_app/immutable/nodes/10.BeejAn8z.js +1 -0
  48. package/app/webui/build/_app/immutable/nodes/11.D--uwkk0.js +3 -0
  49. package/app/webui/build/_app/immutable/nodes/12.BLyQ6rUu.js +1 -0
  50. package/app/webui/build/_app/immutable/nodes/13.Cl0WQK13.js +1 -0
  51. package/app/webui/build/_app/immutable/nodes/14.T9l5Rh19.js +1 -0
  52. package/app/webui/build/_app/immutable/nodes/15.DHfwIlBx.js +1 -0
  53. package/app/webui/build/_app/immutable/nodes/{16.p6WfP435.js → 16.BKDfR-KV.js} +2 -2
  54. package/app/webui/build/_app/immutable/nodes/17.DofB8HQB.js +1 -0
  55. package/app/webui/build/_app/immutable/nodes/2.BOYqXdCa.js +1 -0
  56. package/app/webui/build/_app/immutable/nodes/3.B9ucbp_W.js +1 -0
  57. package/app/webui/build/_app/immutable/nodes/5.9zgwFV6I.js +2 -0
  58. package/app/webui/build/_app/immutable/nodes/6.Bs32Ieii.js +2 -0
  59. package/app/webui/build/_app/immutable/nodes/7.Cigxrk0v.js +1 -0
  60. package/app/webui/build/_app/immutable/nodes/8.pG10rCF0.js +1 -0
  61. package/app/webui/build/_app/immutable/nodes/9.Bzqb3xHY.js +1 -0
  62. package/app/webui/build/_app/version.json +1 -1
  63. package/bin/rssany.js +55 -3
  64. package/dist/index.js +314 -96
  65. package/dist/index.js.map +1 -1
  66. package/package.json +107 -103
  67. package/scripts/postinstall.mjs +44 -0
  68. package/scripts/reset.mjs +137 -135
  69. package/scripts/user-dir.mjs +52 -0
  70. package/app/webui/build/_app/immutable/assets/10.Dj8_pmut.css +0 -1
  71. package/app/webui/build/_app/immutable/assets/13.Qu_tY6H9.css +0 -1
  72. package/app/webui/build/_app/immutable/assets/5.B-dPiwB7.css +0 -1
  73. package/app/webui/build/_app/immutable/assets/6.B27N7pdA.css +0 -1
  74. package/app/webui/build/_app/immutable/assets/8.Cgji2b15.css +0 -1
  75. package/app/webui/build/_app/immutable/assets/9.BsCIAvn3.css +0 -1
  76. package/app/webui/build/_app/immutable/chunks/6prdYIKP.js +0 -1
  77. package/app/webui/build/_app/immutable/chunks/B2cyTHdf.js +0 -2
  78. package/app/webui/build/_app/immutable/chunks/B6WG2Sd3.js +0 -1
  79. package/app/webui/build/_app/immutable/chunks/BA4Gucnq.js +0 -1
  80. package/app/webui/build/_app/immutable/chunks/BXTsojX2.js +0 -36
  81. package/app/webui/build/_app/immutable/chunks/BkD3yAYe.js +0 -1
  82. package/app/webui/build/_app/immutable/chunks/C4uF_YIK.js +0 -1
  83. package/app/webui/build/_app/immutable/chunks/CBY2biv-.js +0 -1
  84. package/app/webui/build/_app/immutable/chunks/DAV9bzjw.js +0 -1
  85. package/app/webui/build/_app/immutable/chunks/DL3Q5sfb.js +0 -1
  86. package/app/webui/build/_app/immutable/chunks/DVa8Y-mQ.js +0 -1
  87. package/app/webui/build/_app/immutable/chunks/DoRPmqLn.js +0 -2
  88. package/app/webui/build/_app/immutable/chunks/Dr67pd7v.js +0 -1
  89. package/app/webui/build/_app/immutable/chunks/vtBo8kBV.js +0 -1
  90. package/app/webui/build/_app/immutable/entry/app.dq7-6soi.js +0 -2
  91. package/app/webui/build/_app/immutable/entry/start.BnoTfBrB.js +0 -1
  92. package/app/webui/build/_app/immutable/nodes/1.BUa24rXB.js +0 -1
  93. package/app/webui/build/_app/immutable/nodes/10.MZgVhpGF.js +0 -1
  94. package/app/webui/build/_app/immutable/nodes/11.B39IbrZ0.js +0 -1
  95. package/app/webui/build/_app/immutable/nodes/12.B5B81dLQ.js +0 -1
  96. package/app/webui/build/_app/immutable/nodes/13.DWWcH27k.js +0 -6
  97. package/app/webui/build/_app/immutable/nodes/14.Db6eOPqq.js +0 -1
  98. package/app/webui/build/_app/immutable/nodes/15.B2jiP2VJ.js +0 -1
  99. package/app/webui/build/_app/immutable/nodes/2.AJd2163d.js +0 -1
  100. package/app/webui/build/_app/immutable/nodes/3.BZQeL-vz.js +0 -1
  101. package/app/webui/build/_app/immutable/nodes/4.BT_N8pCh.js +0 -2
  102. package/app/webui/build/_app/immutable/nodes/5.Bo_ftyqW.js +0 -2
  103. package/app/webui/build/_app/immutable/nodes/6.vOowdQUr.js +0 -1
  104. package/app/webui/build/_app/immutable/nodes/7.BfVbBKZu.js +0 -1
  105. package/app/webui/build/_app/immutable/nodes/8.BslYG5f2.js +0 -1
  106. package/app/webui/build/_app/immutable/nodes/9.DAgT-df2.js +0 -1
  107. /package/app/webui/build/_app/immutable/assets/{11.qYZMiTb0.css → 12.qYZMiTb0.css} +0 -0
  108. /package/app/webui/build/_app/immutable/assets/{12.DfJcfUWl.css → 13.DfJcfUWl.css} +0 -0
  109. /package/app/webui/build/_app/immutable/assets/{14.DfMfOrS3.css → 15.DfMfOrS3.css} +0 -0
  110. /package/app/webui/build/_app/immutable/assets/{15.nNGjXhCQ.css → 17.nNGjXhCQ.css} +0 -0
  111. /package/app/webui/build/_app/immutable/assets/{4.Di6rvlY-.css → 5.Di6rvlY-.css} +0 -0
  112. /package/app/webui/build/_app/immutable/assets/{7.CrNxmd8B.css → 8.CrNxmd8B.css} +0 -0
  113. /package/app/webui/build/_app/immutable/nodes/{17.BtYZF6FM.js → 18.BtYZF6FM.js} +0 -0
  114. /package/app/webui/build/_app/immutable/nodes/{18.BIzqhTqv.js → 4.BIzqhTqv.js} +0 -0
@@ -1,11 +1,11 @@
1
- import{c as U,a as $,f as V}from"../chunks/CS53ooo0.js";import"../chunks/BA4Gucnq.js";import{f as S,at as la,au as ra,av as t,ax as s,az as ia,aC as P,aD as Ga,a5 as O,i as a,aw as h,aq as Ra,U as m,z as W,u as _}from"../chunks/vtBo8kBV.js";import{s as oa,a as T}from"../chunks/B6WG2Sd3.js";import{s as na}from"../chunks/B2cyTHdf.js";import{i as va}from"../chunks/BkD3yAYe.js";import{s as B}from"../chunks/ChUctqXA.js";import{a as g,s as I,G as Ca,P as ta}from"../chunks/DoRPmqLn.js";import{i as ca}from"../chunks/DVa8Y-mQ.js";import{p as Fa}from"../chunks/DXDBlEGf.js";import{t as Na}from"../chunks/CGCMIfh3.js";import{R as Oa,P as Wa,h as w,S as Ia}from"../chunks/Brun6sCr.js";import{l as ua,s as da}from"../chunks/BAJAS8BI.js";import{I as ha}from"../chunks/DsxvjlCC.js";const Ta=!1,Ua=!1,ce=Object.freeze(Object.defineProperty({__proto__:null,prerender:Ua,ssr:Ta},Symbol.toStringTag,{value:"Module"})),Va='<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>',Ba='</title><path d="',Da='"/></svg>',sa={title:"GitHub",slug:"github",get svg(){return Va+"GitHub"+Ba+this.path+Da},path:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",source:"https://github.com/logos",hex:"181717",guidelines:"https://github.com/logos"};function La(f,o){const n=ua(o,["children","$$slots","$$events","$$legacy"]);/**
1
+ import{c as V,a as $,f as B}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{f as S,at as la,au as ra,av as t,ax as s,az as ia,aC as P,aD as Fa,a5 as O,k as a,aw as h,aq as Ga,u as m,F as W,y as _}from"../chunks/BsQ08Wq_.js";import{s as oa,a as T}from"../chunks/BI_ale1m.js";import{s as na}from"../chunks/BK0ygNWX.js";import{i as va}from"../chunks/rNwPv4DZ.js";import{s as D}from"../chunks/Cc7aBSsN.js";import{b as g,s as I,G as Ra,P as ta}from"../chunks/WW6La7Nt.js";import{i as ca}from"../chunks/Nd0ktDhd.js";import{p as Ca}from"../chunks/GeNMTUn1.js";import{t as Na}from"../chunks/4TuV_psf.js";import{R as Oa,P as Wa,h as w,S as Ia}from"../chunks/BZY5aksi.js";import{l as ua,s as da}from"../chunks/D8G961Hm.js";import{I as ha}from"../chunks/pd_p3yYy.js";const Ta=!1,Va=!1,ce=Object.freeze(Object.defineProperty({__proto__:null,prerender:Va,ssr:Ta},Symbol.toStringTag,{value:"Module"})),Ba='<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>',Da='</title><path d="',La='"/></svg>',sa={title:"GitHub",slug:"github",get svg(){return Ba+"GitHub"+Da+this.path+La},path:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12",source:"https://github.com/logos",hex:"181717",guidelines:"https://github.com/logos"};function Ua(f,o){const n=ua(o,["children","$$slots","$$events","$$legacy"]);/**
2
2
  * @license lucide-svelte v0.460.1 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
5
5
  * See the LICENSE file in the root directory of this source tree.
6
- */const l=[["path",{d:"M15 12h-5"}],["path",{d:"M15 8h-5"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"}]];ha(f,da({name:"scroll-text"},()=>n,{get iconNode(){return l},children:(u,p)=>{var e=U(),d=S(e);B(d,o,"default",{}),$(u,e)},$$slots:{default:!0}}))}function ja(f,o){const n=ua(o,["children","$$slots","$$events","$$legacy"]);/**
6
+ */const l=[["path",{d:"M15 12h-5"}],["path",{d:"M15 8h-5"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3"}]];ha(f,da({name:"scroll-text"},()=>n,{get iconNode(){return l},children:(u,p)=>{var e=V(),d=S(e);D(d,o,"default",{}),$(u,e)},$$slots:{default:!0}}))}function ja(f,o){const n=ua(o,["children","$$slots","$$events","$$legacy"]);/**
7
7
  * @license lucide-svelte v0.460.1 - ISC
8
8
  *
9
9
  * This source code is licensed under the ISC license.
10
10
  * See the LICENSE file in the root directory of this source tree.
11
- */const l=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["circle",{cx:"12",cy:"12",r:"3"}]];ha(f,da({name:"settings"},()=>n,{get iconNode(){return l},children:(u,p)=>{var e=U(),d=S(e);B(d,o,"default",{}),$(u,e)},$$slots:{default:!0}}))}var Aa=V("<div> </div>");function Ea(f,o){la(o,!1);const n=()=>T(Na,"$toast",l),[l,u]=oa();ca();var p=U(),e=S(p);{var d=v=>{var c=Aa(),H=t(c,!0);s(c),ia(()=>{g(c,1,`toast ${n().type??""}`,"svelte-zemmny"),na(H,n().msg)}),$(v,c)};va(e,v=>{n().msg&&v(d)})}$(f,p),ra(),u()}var Ja=V('<div class="layout-feed-rail layout-feed-rail--home svelte-12qhfyh"><!></div>'),Ka=V('<div class="layout-outer svelte-12qhfyh"><div class="layout-app svelte-12qhfyh"><div id="layout-inner-scroll" class="layout-merged-cluster svelte-12qhfyh"><aside class="layout-nav-rail svelte-12qhfyh" aria-label="主导航"><nav class="nav-rail-links svelte-12qhfyh"><div class="nav-rail-cluster svelte-12qhfyh"><a href="/" title="信源" aria-label="信源"><!></a> <a href="/logs" title="日志" aria-label="日志"><!></a> <a href="/plugins" title="插件" aria-label="插件"><!></a> <a href="/admin" title="设置" aria-label="设置"><!></a></div></nav> <div class="nav-rail-footer svelte-12qhfyh"><a class="nav-rail-github svelte-12qhfyh" target="_blank" rel="noopener noreferrer" aria-label="在 GitHub 打开源码仓库" title="GitHub"><svg class="nav-rail-github-icon svelte-12qhfyh" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill="currentColor"></path></svg></a> <a class="nav-rail-brand svelte-12qhfyh" href="/" aria-label="返回信源首页"> </a></div></aside> <div><main><!></main></div> <!></div></div></div> <!>',1);function ue(f,o){la(o,!1);const n=()=>T(Fa,"$page",u),l=()=>T(w,"$homeFeedPanelSource",u),[u,p]=oa(),e=W(),d=W(),v=W(),c=18;function H(i){return!!(i==="/"||i==="/admin"||i==="/admin/sources"||i==="/admin/tags"||i==="/plugins"||i==="/logs"||i.startsWith("/plugins/")||i.startsWith("/logs/"))}P(()=>n(),()=>{O(e,n().url.pathname)}),P(()=>a(e),()=>{O(d,H(a(e)))}),P(()=>(a(e),w),()=>{a(e)!=="/"&&w.set(null)}),P(()=>a(e),()=>{O(v,{sources:a(e)==="/"||a(e)==="/admin/sources",logs:a(e)==="/logs"||a(e).startsWith("/logs/"),plugins:a(e).startsWith("/plugins"),settings:a(e)==="/admin"||a(e).startsWith("/admin/")})}),Ga(),ca();var D=Ka(),M=S(D),L=t(M),j=t(L),k=t(j),G=t(k),A=t(G),y=t(A);let E;var fa=t(y);Oa(fa,{size:c}),s(y);var b=h(y,2);let J;var ga=t(b);La(ga,{size:c}),s(b);var q=h(b,2);let K;var pa=t(q);Wa(pa,{size:c}),s(q);var R=h(q,2);let Q;var ma=t(R);ja(ma,{size:c}),s(R),s(A),s(G);var X=h(G,2),x=t(X),Y=t(x),_a=t(Y);s(Y),s(x);var C=h(x,2),$a=t(C,!0);s(C),s(X),s(k);var z=h(k,2);let Z;var F=t(z);let aa;var ya=t(F);B(ya,o,"default",{}),s(F),s(z);var ba=h(z,2);{var qa=i=>{var N=Ja(),za=t(N);{let Pa=_(()=>l()!=null),wa=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.ref)??""}))),Sa=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.displayLabel)??""}))),Ha=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.description)??""}))),Ma=_(()=>(l(),m(()=>{var r,ea;return((ea=(r=l())==null?void 0:r.proxy)==null?void 0:ea.trim())??""}))),ka=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.parseHint)??null})));Ia(za,{variant:"inline",get open(){return a(Pa)},get sourceRef(){return a(wa)},get sourceLabel(){return a(Sa)},get sourceDescription(){return a(Ha)},get sourceProxy(){return a(Ma)},get sourceParseHint(){return a(ka)},onOpenChange:r=>{r||w.set(null)}})}s(N),$(i,N)};va(ba,i=>{a(e)==="/"&&i(qa)})}s(j),s(L),s(M);var xa=h(M,2);Ea(xa,{}),ia(()=>{E=g(y,1,"nav-rail-link svelte-12qhfyh",null,E,{active:a(v).sources}),J=g(b,1,"nav-rail-link svelte-12qhfyh",null,J,{active:a(v).logs}),K=g(q,1,"nav-rail-link svelte-12qhfyh",null,K,{active:a(v).plugins}),Q=g(R,1,"nav-rail-link svelte-12qhfyh",null,Q,{active:a(v).settings}),I(x,"href",Ca),I(_a,"d",(Ra(sa),m(()=>sa.path))),I(C,"title",ta),na($a,ta),Z=g(z,1,"shell-frame svelte-12qhfyh",null,Z,{"shell-frame--with-feed-rail":a(e)==="/"}),aa=g(F,1,"main shell svelte-12qhfyh",null,aa,{"main-fill":a(d)})}),$(f,D),ra(),p()}export{ue as component,ce as universal};
11
+ */const l=[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["circle",{cx:"12",cy:"12",r:"3"}]];ha(f,da({name:"settings"},()=>n,{get iconNode(){return l},children:(u,p)=>{var e=V(),d=S(e);D(d,o,"default",{}),$(u,e)},$$slots:{default:!0}}))}var Aa=B("<div> </div>");function Ea(f,o){la(o,!1);const n=()=>T(Na,"$toast",l),[l,u]=oa();ca();var p=V(),e=S(p);{var d=v=>{var c=Aa(),H=t(c,!0);s(c),ia(()=>{g(c,1,`toast ${n().type??""}`,"svelte-zemmny"),na(H,n().msg)}),$(v,c)};va(e,v=>{n().msg&&v(d)})}$(f,p),ra(),u()}var Ja=B('<div class="layout-feed-rail layout-feed-rail--home svelte-12qhfyh"><!></div>'),Ka=B('<div class="layout-outer svelte-12qhfyh"><div class="layout-app svelte-12qhfyh"><div id="layout-inner-scroll" class="layout-merged-cluster svelte-12qhfyh"><aside class="layout-nav-rail svelte-12qhfyh" aria-label="主导航"><nav class="nav-rail-links svelte-12qhfyh"><div class="nav-rail-cluster svelte-12qhfyh"><a href="/" title="信源" aria-label="信源"><!></a> <a href="/logs" title="日志" aria-label="日志"><!></a> <a href="/plugins" title="插件" aria-label="插件"><!></a> <a href="/admin" title="设置" aria-label="设置"><!></a></div></nav> <div class="nav-rail-footer svelte-12qhfyh"><a class="nav-rail-github svelte-12qhfyh" target="_blank" rel="noopener noreferrer" aria-label="在 GitHub 打开源码仓库" title="GitHub"><svg class="nav-rail-github-icon svelte-12qhfyh" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill="currentColor"></path></svg></a> <a class="nav-rail-brand svelte-12qhfyh" href="/" aria-label="返回信源首页"> </a></div></aside> <div><main><!></main></div> <!></div></div></div> <!>',1);function ue(f,o){la(o,!1);const n=()=>T(Ca,"$page",u),l=()=>T(w,"$homeFeedPanelSource",u),[u,p]=oa(),e=W(),d=W(),v=W(),c=18;function H(i){return!!(i==="/"||i==="/admin"||i==="/admin/sources"||i==="/admin/tags"||i==="/plugins"||i==="/logs"||i.startsWith("/plugins/")||i.startsWith("/logs/"))}P(()=>n(),()=>{O(e,n().url.pathname)}),P(()=>a(e),()=>{O(d,H(a(e)))}),P(()=>(a(e),w),()=>{a(e)!=="/"&&w.set(null)}),P(()=>a(e),()=>{O(v,{sources:a(e)==="/"||a(e)==="/admin/sources",logs:a(e)==="/logs"||a(e).startsWith("/logs/"),plugins:a(e).startsWith("/plugins"),settings:a(e)==="/admin"||a(e).startsWith("/admin/")})}),Fa(),ca();var L=Ka(),k=S(L),U=t(k),j=t(U),M=t(j),F=t(M),A=t(F),y=t(A);let E;var fa=t(y);Oa(fa,{size:c}),s(y);var b=h(y,2);let J;var ga=t(b);Ua(ga,{size:c}),s(b);var q=h(b,2);let K;var pa=t(q);Wa(pa,{size:c}),s(q);var G=h(q,2);let Q;var ma=t(G);ja(ma,{size:c}),s(G),s(A),s(F);var X=h(F,2),x=t(X),Y=t(x),_a=t(Y);s(Y),s(x);var R=h(x,2),$a=t(R,!0);s(R),s(X),s(M);var z=h(M,2);let Z;var C=t(z);let aa;var ya=t(C);D(ya,o,"default",{}),s(C),s(z);var ba=h(z,2);{var qa=i=>{var N=Ja(),za=t(N);{let Pa=_(()=>l()!=null),wa=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.ref)??""}))),Sa=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.displayLabel)??""}))),Ha=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.description)??""}))),ka=_(()=>(l(),m(()=>{var r,ea;return((ea=(r=l())==null?void 0:r.proxy)==null?void 0:ea.trim())??""}))),Ma=_(()=>(l(),m(()=>{var r;return((r=l())==null?void 0:r.parseHint)??null})));Ia(za,{variant:"inline",get open(){return a(Pa)},get sourceRef(){return a(wa)},get sourceLabel(){return a(Sa)},get sourceDescription(){return a(Ha)},get sourceProxy(){return a(ka)},get sourceParseHint(){return a(Ma)},onOpenChange:r=>{r||w.set(null)}})}s(N),$(i,N)};va(ba,i=>{a(e)==="/"&&i(qa)})}s(j),s(U),s(k);var xa=h(k,2);Ea(xa,{}),ia(()=>{E=g(y,1,"nav-rail-link svelte-12qhfyh",null,E,{active:a(v).sources}),J=g(b,1,"nav-rail-link svelte-12qhfyh",null,J,{active:a(v).logs}),K=g(q,1,"nav-rail-link svelte-12qhfyh",null,K,{active:a(v).plugins}),Q=g(G,1,"nav-rail-link svelte-12qhfyh",null,Q,{active:a(v).settings}),I(x,"href",Ra),I(_a,"d",(Ga(sa),m(()=>sa.path))),I(R,"title",ta),na($a,ta),Z=g(z,1,"shell-frame svelte-12qhfyh",null,Z,{"shell-frame--with-feed-rail":a(e)==="/"}),aa=g(C,1,"main shell svelte-12qhfyh",null,aa,{"main-fill":a(d)})}),$(f,L),ra(),p()}export{ue as component,ce as universal};
@@ -0,0 +1 @@
1
+ import{a as h,f as g}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{at as v,f as l,az as d,au as x,av as e,ax as o,aw as _}from"../chunks/BsQ08Wq_.js";import{s as p}from"../chunks/BK0ygNWX.js";import{i as $}from"../chunks/Nd0ktDhd.js";import{s as k,p as m}from"../chunks/BKm6QCwp.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var w=g("<h1> </h1> <p> </p>",1);function B(f,n){v(n,!1),$();var t=w(),r=l(t),c=e(r,!0);o(r);var a=_(r,2),u=e(a,!0);o(a),d(()=>{var s;p(c,i.status),p(u,(s=i.error)==null?void 0:s.message)}),h(f,t),x()}export{B as component};
@@ -0,0 +1 @@
1
+ import{a as u,f as b}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as se}from"../chunks/DptdhtA1.js";import{at as te,au as re,d as le,av as o,$ as ie,ay as B,ax as i,aw as c,k as a,a5 as r,F as g,az as S,aA as oe}from"../chunks/BsQ08Wq_.js";import{s as F,e as f}from"../chunks/BK0ygNWX.js";import{i as I}from"../chunks/rNwPv4DZ.js";import{e as ne,i as de}from"../chunks/B553hBXT.js";import{h as ve}from"../chunks/DO5OXNYS.js";import{P as ce,c as O,r as fe,b as pe,d as me}from"../chunks/WW6La7Nt.js";import{i as ue}from"../chunks/Nd0ktDhd.js";import{B as ge}from"../chunks/Dg_D3pjF.js";import{s as $}from"../chunks/4TuV_psf.js";var be=b('<div class="state svelte-jqd85f">加载中…</div>'),_e=b('<div role="listitem" draggable="true"><span class="drag-handle svelte-jqd85f" title="拖拽排序">⋮⋮</span> <label class="toggle-wrap svelte-jqd85f"><input type="checkbox" class="svelte-jqd85f"/> <span class="toggle-slider svelte-jqd85f"></span></label> <span class="step-label svelte-jqd85f"> </span></div>'),he=b('<button type="button" class="btn-add svelte-jqd85f">+ 添加步骤</button>'),je=b('<div class="body svelte-jqd85f"><section class="pipeline-section svelte-jqd85f"><h3 class="section-title svelte-jqd85f">Pipeline(入库前)</h3> <p class="hint svelte-jqd85f">对每条新入库条目执行,顺序由上到下。</p> <div class="step-list svelte-jqd85f" role="list"></div> <!></section> <div class="save-row svelte-jqd85f"><button type="button" class="btn btn-primary svelte-jqd85f"> </button></div></div>'),qe=b('<div class="feed-wrap svelte-jqd85f"><div class="feed-col svelte-jqd85f"><div class="feed-header svelte-jqd85f"><!> <h2 class="svelte-jqd85f">Pipeline</h2> <p class="page-desc svelte-jqd85f">入库前处理(打标签、翻译),可调整顺序与开关。</p></div> <!></div></div>');function Ie(C,J){te(J,!1);const L={qualityFilter:"质量过滤",tagger:"打标签",translator:"翻译"};let t=g([]),_=g([]),q=g(!0),p=g(!1),m=g(null);async function M(){r(q,!0);try{const e=await O("/api/pipeline");r(t,(e==null?void 0:e.steps)??[]),r(_,(e==null?void 0:e.availableIds)??[])}catch{r(t,[]),r(_,[])}finally{r(q,!1)}}async function N(){r(p,!0);try{const e=await O("/api/pipeline",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({steps:a(t)})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"保存失败");r(t,(e==null?void 0:e.steps)??a(t)),$("已保存","success")}catch(e){$("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{r(p,!1)}}function R(e){r(t,a(t).map((s,l)=>l===e?{...s,enabled:!s.enabled}:s))}function U(e){r(m,e)}function z(e){e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")}function G(e){if(a(m)==null)return;const s=[...a(t)],[l]=s.splice(a(m),1);s.splice(e,0,l),r(t,s),r(m,null)}function H(){const e=new Set(a(t).map(l=>l.id)),s=a(_).find(l=>!e.has(l));s&&r(t,[...a(t),{id:s,enabled:!1}])}se(M),ue();var y=qe();ve("jqd85f",e=>{le(()=>{ie.title=`Pipeline - ${ce}`})});var T=o(y),w=o(T),K=o(w);ge(K,{}),B(4),i(w);var Q=c(w,2);{var V=e=>{var s=be();u(e,s)},W=e=>{var s=je(),l=o(s),x=c(o(l),4);ne(x,5,()=>a(t),de,(d,n,j)=>{var v=_e();let D;var k=c(o(v),2),P=o(k);fe(P),B(2),i(k);var A=c(k,2),ae=o(A,!0);i(A),i(v),S(()=>{D=pe(v,1,"step-row svelte-jqd85f",null,D,{dragging:a(m)===j}),me(P,a(n).enabled),F(ae,L[a(n).id]??a(n).id)}),f("change",P,()=>R(j)),f("dragstart",v,()=>U(j)),f("dragover",v,z),f("drop",v,()=>G(j)),u(d,v)}),i(x);var X=c(x,2);{var Y=d=>{var n=he();S(()=>n.disabled=a(p)),f("click",n,H),u(d,n)},Z=oe(()=>a(_).some(d=>!a(t).some(n=>n.id===d)));I(X,d=>{a(Z)&&d(Y)})}i(l);var E=c(l,2),h=o(E),ee=o(h,!0);i(h),i(E),i(s),S(()=>{h.disabled=a(p),F(ee,a(p)?"保存中…":"保存")}),f("click",h,N),u(e,s)};I(Q,e=>{a(q)?e(V):e(W,-1)})}i(T),i(y),u(C,y),re()}export{Ie as component};
@@ -0,0 +1,3 @@
1
+ import{a as o,f as p,c as pe,t as de}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as me}from"../chunks/DptdhtA1.js";import{at as ue,aC as j,aD as _e,az as A,au as ye,k as t,d as he,F as l,av as i,a5 as s,$ as ge,aw as v,ax as n,f as g,aE as xe,ay as O,u as E}from"../chunks/BsQ08Wq_.js";import{d as be,a as Pe,s as R}from"../chunks/BK0ygNWX.js";import{i as X}from"../chunks/rNwPv4DZ.js";import{e as $e}from"../chunks/B553hBXT.js";import{h as je}from"../chunks/DO5OXNYS.js";import{b as ze}from"../chunks/BnqaikL8.js";import{i as we}from"../chunks/Nd0ktDhd.js";import{c as Y,P as Te}from"../chunks/WW6La7Nt.js";import{B as Le}from"../chunks/Dg_D3pjF.js";import{s as V}from"../chunks/4TuV_psf.js";import{S as Se,a as ke,C as Ce,b as Ae,c as Oe,d as Ee}from"../chunks/B8StT3Do.js";import{P as Re}from"../chunks/pd_p3yYy.js";var He=p('<p class="hint svelte-1f24zj">加载中…</p>'),Ne=p('<textarea class="text-input svelte-1f24zj" rows="5" placeholder="http://127.0.0.1:7890 http://user:pass@host:port" autocomplete="off" spellcheck="false"></textarea> <p class="hint svelte-1f24zj">一行一个代理,支持带账号:<code>http://user:pass@host:port</code></p>',1),Be=p('<p class="hint svelte-1f24zj">加载中…</p>'),De=p("<span> </span> <!>",1),Fe=p("<!> <!>",1),Ge=p('<!> <p class="hint svelte-1f24zj">全局代理作为信源未指定代理时的默认值。</p>',1),Ie=p('<div class="feed-wrap svelte-1f24zj"><div class="feed-col svelte-1f24zj"><div class="body svelte-1f24zj"><!> <p class="intro svelte-1f24zj">写入 <code class="svelte-1f24zj">.rssany/config.json</code> 的 <code class="svelte-1f24zj">proxyList</code> 与 <code class="svelte-1f24zj">globalProxy</code>。信源可从代理列表中选择单源代理;未指定单源代理时使用全局代理;未填写时仍可使用环境变量 <code class="svelte-1f24zj">HTTP_PROXY</code> / <code class="svelte-1f24zj">HTTPS_PROXY</code>。</p> <section class="form-section svelte-1f24zj"><h3 class="section-title svelte-1f24zj">代理列表</h3> <!></section> <section class="form-section svelte-1f24zj"><h3 class="section-title svelte-1f24zj">全局 HTTP(S) 代理</h3> <!></section> <div class="btn-row svelte-1f24zj"><button type="button" class="btn btn-primary svelte-1f24zj"> </button></div></div></div></div>');function ot(q,K){ue(K,!1);const d=l(),z=l(),u=l(),H=l();let a=l(""),c=l(""),_=l(!0),x=l(!1);function Q(e){const r=new Set,f=[];for(const y of e.split(/\r?\n/)){const h=y.trim();!h||r.has(h)||(r.add(h),f.push(h))}return f}function W(e){s(a,e)}async function Z(){s(_,!0);try{const e=await Y("/api/proxy");s(a,typeof(e==null?void 0:e.globalProxy)=="string"?e.globalProxy:""),s(c,Array.isArray(e==null?void 0:e.proxyList)?e.proxyList.join(`
2
+ `):"")}catch{s(a,""),s(c,"")}finally{s(_,!1)}}async function ee(){s(x,!0);try{const e=await Y("/api/proxy",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({globalProxy:t(a).trim(),proxyList:t(d)})});if(!(e!=null&&e.ok))throw new Error("保存失败");s(a,typeof e.globalProxy=="string"?e.globalProxy:""),s(c,Array.isArray(e.proxyList)?e.proxyList.join(`
3
+ `):""),V("已保存","success")}catch(e){V("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{s(x,!1)}}me(Z),j(()=>t(c),()=>{s(d,Q(t(c)))}),j(()=>(t(a),t(d)),()=>{s(z,t(a).trim()&&!t(d).includes(t(a).trim()))}),j(()=>(t(z),t(a),t(d)),()=>{s(u,[{value:"",label:"不设置全局代理"},...t(z)?[{value:t(a),label:`${t(a)}(当前配置,未在列表中)`}]:[],...t(d).map(e=>({value:e,label:e}))])}),j(()=>(t(u),t(a)),()=>{var e;s(H,((e=t(u).find(r=>r.value===t(a)))==null?void 0:e.label)??"不设置全局代理")}),_e(),we();var w=Ie();je("1f24zj",e=>{he(()=>{ge.title=`代理 - ${Te}`})});var N=i(w),B=i(N),D=i(B);Le(D,{});var T=v(D,4),te=v(i(T),2);{var se=e=>{var r=He();o(e,r)},ae=e=>{var r=Ne(),f=g(r);xe(f),O(2),ze(f,()=>t(c),y=>s(c,y)),o(e,r)};X(te,e=>{t(_)?e(se):e(ae,-1)})}n(T);var L=v(T,2),re=v(i(L),2);{var oe=e=>{var r=Be();o(e,r)},le=e=>{var r=Ge(),f=g(r);Se(f,{type:"single",get value(){return t(a)},onValueChange:W,get items(){return t(u)},children:(y,h)=>{var G=Fe(),I=g(G);ke(I,{class:"proxy-select-trigger","aria-label":"全局代理",children:(S,ce)=>{var P=De(),$=g(P),k=i($,!0);n($);var J=v($,2);Ce(J,{size:14,"aria-hidden":"true"}),A(()=>R(k,t(H))),o(S,P)},$$slots:{default:!0}});var ne=v(I,2);Re(ne,{children:(S,ce)=>{Ae(S,{class:"proxy-select-content",sideOffset:4,children:(P,$)=>{Oe(P,{class:"proxy-select-viewport",children:(k,J)=>{var M=pe(),fe=g(M);$e(fe,1,()=>t(u),C=>C.value,(C,m)=>{Ee(C,{class:"proxy-select-item",get value(){return t(m),E(()=>t(m).value)},get label(){return t(m),E(()=>t(m).label)},children:(ve,Je)=>{O();var U=de();A(()=>R(U,(t(m),E(()=>t(m).label)))),o(ve,U)},$$slots:{default:!0}})}),o(k,M)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}}),o(y,G)},$$slots:{default:!0}}),O(2),o(e,r)};X(re,e=>{t(_)?e(oe):e(le,-1)})}n(L);var F=v(L,2),b=i(F),ie=i(b,!0);n(b),n(F),n(B),n(N),n(w),A(()=>{b.disabled=t(_)||t(x),R(ie,t(x)?"保存中…":"保存")}),Pe("click",b,ee),o(q,w),ye()}be(["click"]);export{ot as component};
@@ -0,0 +1 @@
1
+ import{a as s,f as m}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{f as i,d as c,av as f,aw as d,$ as n,ax as p}from"../chunks/BsQ08Wq_.js";import{h as v}from"../chunks/DO5OXNYS.js";import{S as l}from"../chunks/BT6b4LcZ.js";import{B as _}from"../chunks/Dg_D3pjF.js";import{P as h}from"../chunks/WW6La7Nt.js";var u=m('<div class="admin-sources-back svelte-8cr5m9"><!></div> <!>',1);function R(o){var r=u();v("8cr5m9",$=>{c(()=>{n.title=`Sources — ${h}`})});var a=i(r),e=f(a);_(e,{}),p(a);var t=d(a,2);l(t,{}),s(o,r)}export{R as component};
@@ -0,0 +1 @@
1
+ import{a as u,f as d}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as ke}from"../chunks/DptdhtA1.js";import{z as we,at as Ce,f as Te,az as E,k as s,au as Le,d as Ee,av as n,a5 as a,F as w,aw as i,$ as $e,ax as r,y as Me}from"../chunks/BsQ08Wq_.js";import{e as f,s as S}from"../chunks/BK0ygNWX.js";import{i as F}from"../chunks/rNwPv4DZ.js";import{e as se,i as ae}from"../chunks/B553hBXT.js";import{h as Pe}from"../chunks/DO5OXNYS.js";import{P as Se,r as Fe,c as X,e as Oe,s as re}from"../chunks/WW6La7Nt.js";import{b as Je}from"../chunks/BnqaikL8.js";import{s as Y}from"../chunks/Bfc47y5P.js";import{i as Ne}from"../chunks/Nd0ktDhd.js";import{B as je}from"../chunks/Dg_D3pjF.js";import{s as O}from"../chunks/4TuV_psf.js";function ze(z,$){var C;var o=(C=z.$$events)==null?void 0:C[$.type],p=we(o)?o.slice():o==null?[]:[o];for(var m of p)m.call(this,$)}var Be=d('<div class="state svelte-1s5glru">加载中…</div>'),De=d('<p class="empty-hint svelte-1s5glru">暂无标签。添加后,pipeline 会对新入库条目自动打标签。</p>'),Ie=d('<span class="tag-meta svelte-1s5glru"> </span>'),Re=d('<div class="tag-badge svelte-1s5glru" role="button" tabindex="0"><span class="tag-name svelte-1s5glru"> </span> <!> <button type="button" class="tag-remove svelte-1s5glru" title="从系统标签中删除">×</button></div>'),Ue=d('<div class="tag-list svelte-1s5glru"></div>'),qe=d('<div class="tag-badge suggested svelte-1s5glru" role="button" tabindex="0"><span class="tag-name svelte-1s5glru"> </span> <span class="tag-meta svelte-1s5glru"> </span> <button type="button" class="tag-add svelte-1s5glru" title="添加到系统标签">+</button></div>'),Ae=d('<div class="suggested-section svelte-1s5glru"><h3 class="section-title svelte-1s5glru">建议添加(文章中出现但未在系统标签库中)</h3> <div class="tag-list svelte-1s5glru"></div></div>'),Xe=d('<div class="body svelte-1s5glru"><div class="tags-section svelte-1s5glru"><h3 class="section-title svelte-1s5glru"> </h3> <!></div> <!></div>'),Ye=d('<div class="context-menu svelte-1s5glru" role="menu" tabindex="-1"><button type="button" class="context-menu-item svelte-1s5glru">从所有文章中移除该标签</button></div>'),Ge=d('<div class="feed-wrap svelte-1s5glru"><div class="feed-col svelte-1s5glru"><div class="feed-toolbar-block svelte-1s5glru"><!> <div class="admin-feed-header"><div class="admin-feed-header__left"><h2>系统标签</h2> <p class="admin-feed-header__desc">系统标签库,新入库条目会由 LLM 自动匹配打标签。</p></div> <div class="admin-feed-header__actions"><input type="text" class="admin-toolbar-input" placeholder="输入新标签,回车添加"/> <button type="button" class="admin-toolbar-btn admin-toolbar-btn--primary">添加</button></div></div></div> <div class="feed-body-scroll"><!></div></div></div> <!>',1);function lt(z,$){Ce($,!1);let o=w([]),p=[],m=w([]),C=w(!0),_=w(!1),M=w(""),b=w(null),J=w(!1);async function oe(){a(C,!0);try{const t=await X("/api/tags");a(o,(t==null?void 0:t.tags)??[]),p=(t==null?void 0:t.stats)??[],a(m,(t==null?void 0:t.suggestedTags)??[])}catch{a(o,[]),p=[],a(m,[])}finally{a(C,!1)}}function ne(t){return p.find(e=>e.name.toLowerCase()===t.toLowerCase())}async function B(t){a(_,!0);try{const e=await X("/api/tags",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tags:t})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"保存失败");a(o,(e==null?void 0:e.tags)??t),p=(e==null?void 0:e.stats)??[],a(m,(e==null?void 0:e.suggestedTags)??[]),O("已保存","success")}catch(e){O("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{a(_,!1)}}function G(){const t=s(M).trim();if(!(!t||s(_))){if(s(o).some(e=>e.toLowerCase()===t.toLowerCase())){O("标签已存在","error");return}a(M,""),B([...s(o),t])}}function ie(t){s(_)||B(s(o).filter(e=>e!==t))}function le(t){s(_)||s(o).some(e=>e.toLowerCase()===t.toLowerCase())||B([...s(o),t])}function H(t,e){t.preventDefault(),t.stopPropagation(),a(b,{x:t.clientX,y:t.clientY,tag:e})}function D(){a(b,null)}async function ve(t){if(!s(J)){a(J,!0),a(b,null);try{const e=await X("/api/tags/remove-from-items",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tag:t})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"操作失败");a(o,(e==null?void 0:e.tags)??s(o)),p=(e==null?void 0:e.stats)??p,a(m,(e==null?void 0:e.suggestedTags)??s(m)),O(`已从 ${(e==null?void 0:e.removedCount)??0} 篇文章中移除该标签`,"success")}catch(e){O("操作失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{a(J,!1)}}}ke(()=>{oe();const t=()=>D(),e=()=>D();return document.addEventListener("click",t),document.addEventListener("contextmenu",e),()=>{document.removeEventListener("click",t),document.removeEventListener("contextmenu",e)}}),Ne();var K=Ge();Pe("1s5glru",t=>{Ee(()=>{$e.title=`标签 - ${Se}`})});var I=Te(K),Q=n(I),R=n(Q),V=n(R);je(V,{});var W=i(V,2),Z=i(n(W),2),N=n(Z);Fe(N);var ee=i(N,2);r(Z),r(W),r(R);var te=i(R,2),ce=n(te);{var ue=t=>{var e=Be();u(t,e)},de=t=>{var e=Xe(),T=n(e),h=n(T),fe=n(h);r(h);var pe=i(h,2);{var _e=v=>{var g=De();u(v,g)},be=v=>{var g=Ue();se(g,5,()=>s(o),ae,(j,y)=>{const c=Me(()=>ne(s(y)));var l=Re(),x=n(l),U=n(x,!0);r(x);var L=i(x,2);{var q=k=>{var A=Ie(),xe=n(A);r(A),E(()=>S(xe,`${s(c).count??""} 篇 · 热度 ${s(c).hotness??""}`)),u(k,A)};F(L,k=>{s(c)&&k(q)})}var P=i(L,2);r(l),E(()=>{re(l,"aria-label",`标签 ${s(y)},右键打开菜单`),S(U,s(y)),P.disabled=s(_)}),f("click",P,Y(()=>ie(s(y)))),f("contextmenu",l,k=>H(k,s(y))),u(j,l)}),r(g),u(v,g)};F(pe,v=>{s(o).length===0?v(_e):v(be,-1)})}r(T);var he=i(T,2);{var ye=v=>{var g=Ae(),j=i(n(g),2);se(j,5,()=>s(m),ae,(y,c)=>{var l=qe(),x=n(l),U=n(x,!0);r(x);var L=i(x,2),q=n(L);r(L);var P=i(L,2);r(l),E(()=>{re(l,"aria-label",`建议标签 ${s(c).name},右键打开菜单`),S(U,s(c).name),S(q,`${s(c).count??""} 篇 · 热度 ${s(c).hotness??""}`),P.disabled=s(_)}),f("click",P,Y(()=>le(s(c).name))),f("contextmenu",l,k=>H(k,s(c).name)),u(y,l)}),r(j),r(g),u(v,g)};F(he,v=>{s(m).length>0&&v(ye)})}r(e),E(()=>S(fe,`当前标签 (${s(o).length??""})`)),u(t,e)};F(ce,t=>{s(C)?t(ue):t(de,-1)})}r(te),r(Q),r(I);var me=i(I,2);{var ge=t=>{var e=Ye(),T=n(e);r(e),E(()=>{Oe(e,`left: ${s(b).x??""}px; top: ${s(b).y??""}px`),T.disabled=s(J)}),f("click",T,()=>ve(s(b).tag)),f("click",e,Y(function(h){ze.call(this,$,h)})),f("keydown",e,h=>h.key==="Escape"&&D()),u(t,e)};F(me,t=>{s(b)&&t(ge)})}E(t=>ee.disabled=t,[()=>!s(M).trim()||s(_)]),Je(N,()=>s(M),t=>a(M,t)),f("keydown",N,t=>t.key==="Enter"&&G()),f("click",ee,G),u(z,K),Le()}export{lt as component};
@@ -0,0 +1 @@
1
+ import{a as f,c as Ut,f as m,t as Vt}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as zt,a as Jt}from"../chunks/DptdhtA1.js";import{at as Rt,aC as jt,aD as At,az as $,k as t,au as Ht,d as Bt,av as l,aw as v,f as R,a5 as o,F as p,$ as Gt,ax as a,ay as Zt,u as d}from"../chunks/BsQ08Wq_.js";import{e as T,s as _}from"../chunks/BK0ygNWX.js";import{i as ct}from"../chunks/rNwPv4DZ.js";import{e as ft}from"../chunks/B553hBXT.js";import{h as qt}from"../chunks/DO5OXNYS.js";import{a as pt,P as Kt,r as Qt,b as Wt}from"../chunks/WW6La7Nt.js";import{b as Xt}from"../chunks/BnqaikL8.js";import{i as Yt}from"../chunks/Nd0ktDhd.js";import{s as Y}from"../chunks/4TuV_psf.js";import{S as te,a as ee,C as se,b as ae,c as le,d as re}from"../chunks/B8StT3Do.js";import{P as oe}from"../chunks/pd_p3yYy.js";var ie=m('<span class="log-level-label svelte-1lsf4ps"> </span> <!>',1),ne=m("<!> <!>",1),ve=m('<div class="state err svelte-1lsf4ps"> </div>'),de=m('<div class="state svelte-1lsf4ps">加载中…</div>'),ce=m('<div class="state svelte-1lsf4ps">暂无日志</div>'),fe=m('<tr class="payload-row svelte-1lsf4ps"><td colspan="4" class="svelte-1lsf4ps"><pre class="payload-content svelte-1lsf4ps"> </pre></td></tr>'),pe=m('<tr class="log-row svelte-1lsf4ps" role="button" tabindex="0"><td class="td-time svelte-1lsf4ps"> </td><td class="td-level svelte-1lsf4ps"><span> </span></td><td class="td-cat svelte-1lsf4ps"> </td><td class="td-msg svelte-1lsf4ps"> </td></tr> <!>',1),ue=m('<div class="log-has-data svelte-1lsf4ps"><div class="log-table-scroll svelte-1lsf4ps"><div class="table-wrap svelte-1lsf4ps"><table class="svelte-1lsf4ps"><thead class="svelte-1lsf4ps"><tr><th class="th-time svelte-1lsf4ps">时间</th><th class="th-level svelte-1lsf4ps">级别</th><th class="th-cat svelte-1lsf4ps">分类</th><th class="th-msg svelte-1lsf4ps">消息</th></tr></thead><tbody class="svelte-1lsf4ps"></tbody></table></div></div> <div class="log-toolbar svelte-1lsf4ps"><span class="pagination-info svelte-1lsf4ps"> </span> <div class="pagination-btns svelte-1lsf4ps"><button class="btn btn-secondary btn-sm svelte-1lsf4ps">上一页</button> <button class="btn btn-secondary btn-sm svelte-1lsf4ps">下一页</button></div></div></div>'),_e=m('<div class="feed-wrap svelte-1lsf4ps"><div class="feed-col svelte-1lsf4ps"><div class="feed-toolbar-block svelte-1lsf4ps"><div class="admin-feed-header"><div class="admin-feed-header__left"><h2>日志</h2> <p class="admin-feed-header__desc">查看运行日志、筛选分类与级别</p></div> <div class="admin-feed-header__actions"><input type="search" class="admin-toolbar-input log-filter-input svelte-1lsf4ps" placeholder="过滤…" autocomplete="off" spellcheck="false" aria-label="分类"/> <!> <button class="admin-toolbar-btn admin-toolbar-btn--danger" type="button" title="清空全部日志">清空</button></div></div></div> <div class="log-body-scroll svelte-1lsf4ps"><!></div></div></div>');function De(ut,_t){Rt(_t,!1);const tt=p(),j=[{value:"",label:"全部"},...["error","warn","info","debug"].map(e=>({value:e,label:e}))],mt=350;let c=p([]),w=p(0),h=p(!1),F=p(""),x=p(""),A=p(""),C=null,i=p(0),D=p(null),H=p(!1);const B=100;function G(){C&&(clearTimeout(C),C=null)}function ht(){G(),C=setTimeout(()=>{C=null,o(i,0),S()},mt)}function bt(e){o(x,e),o(i,0),S()}zt(()=>{S()}),Jt(()=>{G()});function gt(){const e=new URLSearchParams;e.set("limit",String(B)),e.set("offset",String(t(i))),t(x)&&e.set("level",t(x));const s=t(A).trim();return s&&e.set("category",s),"/api/logs?"+e.toString()}async function S(){o(h,!0),o(F,"");try{const e=await pt(gt());if(!e.ok)throw new Error(await e.text().catch(()=>`HTTP ${e.status}`));const s=await e.json();o(c,s.items??[]),o(w,s.total??0)}catch(e){o(F,e instanceof Error?e.message:String(e)),o(c,[]),o(w,0)}finally{o(h,!1)}}async function yt(){if(confirm("确定清空全部日志?此操作不可恢复。")){o(H,!0),G();try{const e=await pt("/api/logs",{method:"DELETE"}),s=await e.text();let n={};try{n=s?JSON.parse(s):{}}catch{n={}}if(!e.ok){Y(n.error||s||`HTTP ${e.status}`,"error");return}n.ok&&(Y(n.deleted!=null?`已清空 ${n.deleted} 条`:"已清空日志","success"),o(i,0),o(D,null),await S())}catch(e){Y(e instanceof Error?e.message:String(e),"error")}finally{o(H,!1)}}}function $t(){t(i)<=0||(o(i,Math.max(0,t(i)-B)),S())}function wt(){t(i)+t(c).length>=t(w)||(o(i,t(i)+B),S())}function et(e){o(D,t(D)===e?null:e)}function xt(e){try{return new Date(e).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return e}}function St(e){if(!e)return"";try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}jt(()=>t(x),()=>{var e;o(tt,((e=j.find(s=>s.value===t(x)))==null?void 0:e.label)??"全部")}),At(),Yt();var Z=_e();qt("1lsf4ps",e=>{Bt(()=>{Gt.title=`日志 - ${Kt}`})});var st=l(Z),q=l(st),at=l(q),lt=v(l(at),2),M=l(lt);Qt(M);var rt=v(M,2);te(rt,{type:"single",get value(){return t(x)},onValueChange:bt,get items(){return j},children:(e,s)=>{var n=ne(),O=R(n);ee(O,{class:"log-level-trigger","aria-label":"级别",children:(E,V)=>{var b=ie(),P=R(b),L=l(P,!0);a(P);var k=v(P,2);se(k,{size:14,"aria-hidden":"true"}),$(()=>_(L,t(tt))),f(E,b)},$$slots:{default:!0}});var U=v(O,2);oe(U,{children:(E,V)=>{ae(E,{class:"log-level-content",sideOffset:4,children:(b,P)=>{le(b,{class:"log-level-viewport",children:(L,k)=>{var I=Ut(),N=R(I);ft(N,1,()=>j,r=>r.value,(r,u)=>{re(r,{class:"log-level-item",get value(){return t(u),d(()=>t(u).value)},get label(){return t(u),d(()=>t(u).label)},children:(g,z)=>{Zt();var J=Vt();$(()=>_(J,(t(u),d(()=>t(u).label)))),f(g,J)},$$slots:{default:!0}})}),f(L,I)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}}),f(e,n)},$$slots:{default:!0}});var ot=v(rt,2);a(lt),a(at),a(q);var it=v(q,2),Et=l(it);{var Pt=e=>{var s=ve(),n=l(s,!0);a(s),$(()=>_(n,t(F))),f(e,s)},Lt=e=>{var s=de();f(e,s)},kt=e=>{var s=ce();f(e,s)},Tt=e=>{var s=ue(),n=l(s),O=l(n),U=l(O),E=v(l(U));ft(E,5,()=>t(c),N=>N.id,(N,r)=>{var u=pe(),g=R(u),z=l(g),J=l(z,!0);a(z);var K=v(z),Q=l(K),Ct=l(Q,!0);a(Q),a(K);var W=v(K),Dt=l(W,!0);a(W);var nt=v(W),Ot=l(nt,!0);a(nt),a(g);var It=v(g,2);{var Nt=y=>{var X=fe(),vt=l(X),dt=l(vt),Ft=l(dt,!0);a(dt),a(vt),a(X),$(Mt=>_(Ft,Mt),[()=>(t(r),d(()=>St(t(r).payload)))]),f(y,X)};ct(It,y=>{t(D),t(r),d(()=>t(D)===t(r).id&&t(r).payload)&&y(Nt)})}$(y=>{_(J,y),Wt(Q,1,`badge level-${t(r),d(()=>t(r).level)??""}`,"svelte-1lsf4ps"),_(Ct,(t(r),d(()=>t(r).level))),_(Dt,(t(r),d(()=>t(r).category))),_(Ot,(t(r),d(()=>t(r).message)))},[()=>(t(r),d(()=>xt(t(r).created_at)))]),T("click",g,()=>et(t(r).id)),T("keydown",g,y=>y.key==="Enter"&&et(t(r).id)),f(N,u)}),a(E),a(U),a(O),a(n);var V=v(n,2),b=l(V),P=l(b);a(b);var L=v(b,2),k=l(L),I=v(k,2);a(L),a(V),a(s),$(()=>{_(P,`共 ${t(w)??""} 条,当前 ${t(c),t(i),d(()=>t(c).length?`${t(i)+1}–${t(i)+t(c).length}`:"—")??""}`),k.disabled=t(i)<=0||t(h),I.disabled=(t(i),t(c),t(w),t(h),d(()=>t(i)+t(c).length>=t(w)||t(h)))}),T("click",k,$t),T("click",I,wt),f(e,s)};ct(Et,e=>{t(F)?e(Pt):(t(h),t(c),d(()=>t(h)&&t(c).length===0)?e(Lt,1):(t(c),d(()=>t(c).length===0)?e(kt,2):e(Tt,-1)))})}a(it),a(st),a(Z),$(()=>ot.disabled=t(h)||t(H)),Xt(M,()=>t(A),e=>o(A,e)),T("input",M,ht),T("click",ot,yt),f(ut,Z),Ht()}export{De as component};
@@ -0,0 +1 @@
1
+ import{a as u,t as st,f as p}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as Tt}from"../chunks/DptdhtA1.js";import{at as Et,aC as ht,aD as Lt,f as rt,k as t,au as Ot,d as Nt,av as l,az as lt,a5 as o,aw as c,F as h,$ as zt,ax as s,u as b,ay as K}from"../chunks/BsQ08Wq_.js";import{d as Ft,a as D,e as Jt,s as Q}from"../chunks/BK0ygNWX.js";import{g as Mt}from"../chunks/FDS7fbwH.js";import{i as q}from"../chunks/rNwPv4DZ.js";import{e as Bt}from"../chunks/B553hBXT.js";import{h as Ht}from"../chunks/DO5OXNYS.js";import{s as O,P as Kt,r as ot,a as G}from"../chunks/WW6La7Nt.js";import{b as it}from"../chunks/BnqaikL8.js";import{i as Qt}from"../chunks/Nd0ktDhd.js";import{p as qt}from"../chunks/GeNMTUn1.js";import{g as nt}from"../chunks/BKm6QCwp.js";import{s as m}from"../chunks/4TuV_psf.js";import{P as Gt}from"../chunks/SvdgnirT.js";import{D as Vt,a as Wt,b as Xt,c as Yt,d as bt}from"../chunks/B0czyjwj.js";import{P as Zt}from"../chunks/pd_p3yYy.js";var te=p('<div class="state svelte-1nj0iur">加载中…</div>'),ee=p('<div class="state error svelte-1nj0iur"> </div>'),ae=p('<div class="state svelte-1nj0iur">暂无已加载插件。可 <button type="button" class="link-btn svelte-1nj0iur">添加插件</button> 从模板创建,或在 <code>app/plugins/builtin/</code>、<code>.rssany/plugins/</code> 放置 *.rssany.js / *.rssany.ts</div>'),se=p('<div class="state svelte-1nj0iur">无匹配结果</div>'),re=p('<span class="kind-badge svelte-1nj0iur">Source</span>'),le=p('<button type="button" class="cell-btn cell-btn--primary svelte-1nj0iur">登录</button>'),oe=p('<span class="cell-dash svelte-1nj0iur" title="未声明站点登录">—</span>'),ie=p('<button type="button" class="cell-btn cell-btn--secondary svelte-1nj0iur">检查登录</button>'),ne=p('<span class="cell-dash svelte-1nj0iur" title="未声明站点登录">—</span>'),de=p('<tr class="plugin-row svelte-1nj0iur" tabindex="0"><td class="td-name svelte-1nj0iur"><div class="name-cell svelte-1nj0iur"><span class="plugin-id-text svelte-1nj0iur"> </span> <!></div></td><td class="td-pattern svelte-1nj0iur"><span class="pattern-text svelte-1nj0iur"> </span></td><td class="td-login svelte-1nj0iur"><!></td><td class="td-check svelte-1nj0iur"><!></td></tr>'),ce=p('<div class="plugin-table-wrap svelte-1nj0iur"><table class="plugin-table svelte-1nj0iur"><thead class="svelte-1nj0iur"><tr><th class="th-name svelte-1nj0iur" scope="col">插件名</th><th class="th-pattern svelte-1nj0iur" scope="col">匹配规则</th><th class="th-login svelte-1nj0iur" scope="col">登录</th><th class="th-check svelte-1nj0iur" scope="col">检查登录</th></tr></thead><tbody class="svelte-1nj0iur"></tbody></table></div>'),ve=p('<div class="modal-header svelte-1nj0iur"><!> <!></div> <form class="modal-body svelte-1nj0iur"><p class="add-hint svelte-1nj0iur">对于不支持RSS的站点,添加插件可以覆盖特定站点的解析规则</p> <div class="field svelte-1nj0iur"><span class="field-label svelte-1nj0iur">站点匹配规则</span> <input class="field-input svelte-1nj0iur" type="text" name="listUrlPattern" placeholder="例如 https://www.example.com/* 或 https://example.com/list/{segment}" autocomplete="off"/></div> <div class="field svelte-1nj0iur"><span class="field-label svelte-1nj0iur">插件 id</span> <input class="field-input svelte-1nj0iur" type="text" name="pluginId" placeholder="例如 my-site" autocomplete="off"/></div> <div class="modal-footer svelte-1nj0iur"><div class="modal-footer-right svelte-1nj0iur"><!> <button type="submit" class="btn-save svelte-1nj0iur"> </button></div></div></form>',1),ue=p("<!> <!>",1),pe=p('<div class="feed-wrap svelte-1nj0iur"><div class="feed-col svelte-1nj0iur"><div class="plugins-toolbar-block svelte-1nj0iur"><div class="admin-feed-header"><div class="admin-feed-header__left"><h2>插件</h2> <p class="admin-feed-header__desc">管理站点解析插件与登录检查</p></div> <div class="admin-feed-header__actions"><input class="admin-toolbar-input" type="search" placeholder="过滤…" autocomplete="off"/> <button type="button" class="btn-add svelte-1nj0iur" title="添加插件" aria-label="添加插件"><!></button></div></div></div> <div class="plugins-body-scroll svelte-1nj0iur"><!></div></div></div> <!>',1);function Ie(gt,jt){Et(jt,!1);const C=h(),N=h();let $=h([]),z=h(""),V=h(!0),S=h(!1),j=h(""),y=h(""),U=h(!1),F=h("");function dt(){o(j,""),o(y,""),o(S,!0)}function yt(e){o(S,e),e||(o(j,""),o(y,""))}async function wt(e){e.preventDefault();const a=t(j).trim(),i=t(y).trim();if(!a){m("请填写插件 id","error");return}if(!i){m("请填写支持的站点(URL 或匹配规则)","error");return}o(U,!0);try{const n=await G("/api/plugins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,listUrlPattern:i})}),_=await n.text();let r={};try{r=_?JSON.parse(_):{}}catch{r={}}if(!n.ok){m(r.error||_||`HTTP ${n.status}`,"error");return}r.ok&&(m("已创建插件文件","success"),o(S,!1),o(j,""),o(y,""),await ct(),await nt("/plugins/"+encodeURIComponent(a)))}catch(n){m("请求失败: "+(n instanceof Error?n.message:String(n)),"error")}finally{o(U,!1)}}async function ct(){o(V,!0),o(z,"");try{const a=await(await G("/api/plugins")).json();o($,[...a].sort((i,n)=>(n.hasAuth?1:0)-(i.hasAuth?1:0)))}catch(e){o(z,"加载失败: "+(e instanceof Error?e.message:String(e)))}finally{o(V,!1)}}async function Pt(e,a){a.preventDefault(),a.stopPropagation();try{const n=await(await G(`/auth/check?siteId=${encodeURIComponent(e.id)}`)).json();n.ok?m(`${e.id}:${n.authenticated?"✓ 已登录":"✗ 未登录"}`,n.authenticated?"success":"error"):m(n.message||"检查失败","error")}catch(i){m("请求失败: "+(i instanceof Error?i.message:String(i)),"error")}}function vt(e){nt("/plugins/"+encodeURIComponent(e.id))}function kt(e,a){(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),vt(e))}async function $t(e,a){a.preventDefault(),a.stopPropagation();try{const n=await(await G(`/auth/open?siteId=${encodeURIComponent(e.id)}`,{method:"POST"})).json();n.ok?m(n.message||"已打开登录页面","success"):m(n.message||"打开失败","error")}catch(i){m("请求失败: "+(i instanceof Error?i.message:String(i)),"error")}}Tt(()=>{ct(),Mt(qt).url.searchParams.get("openAdd")==="1"&&(o(j,""),o(y,""),o(S,!0),nt("/plugins",{replaceState:!0}))}),ht(()=>t(F),()=>{o(C,t(F).trim().toLowerCase())}),ht(()=>(t(C),t($)),()=>{o(N,t(C)?t($).filter(e=>e.id.toLowerCase().includes(t(C))||e.listUrlPattern.toLowerCase().includes(t(C))):t($))}),Lt(),Qt();var ut=pe();Ht("1nj0iur",e=>{Nt(()=>{zt.title=`插件 - ${Kt}`})});var W=rt(ut),pt=l(W),X=l(pt),ft=l(X),mt=c(l(ft),2),J=l(mt);ot(J),O(J,"spellcheck",!1);var Y=c(J,2),xt=l(Y);Gt(xt,{size:16,"aria-hidden":"true"}),s(Y),s(mt),s(ft),s(X);var _t=c(X,2),Dt=l(_t);{var Ct=e=>{var a=te();u(e,a)},St=e=>{var a=ee(),i=l(a,!0);s(a),lt(()=>Q(i,t(z))),u(e,a)},Ut=e=>{var a=ae(),i=c(l(a));K(5),s(a),D("click",i,dt),u(e,a)},At=e=>{var a=se();u(e,a)},It=e=>{var a=ce(),i=l(a),n=c(l(i));Bt(n,5,()=>t(N),_=>_.id,(_,r)=>{var g=de(),A=l(g),Z=l(A),x=l(Z),I=l(x,!0);s(x);var M=c(x,2);{var tt=d=>{var v=re();u(d,v)};q(M,d=>{t(r),b(()=>t(r).kind==="source")&&d(tt)})}s(Z),s(A);var w=c(A),P=l(w),R=l(P,!0);s(P),s(w);var k=c(w),T=l(k);{var B=d=>{var v=le();D("click",v,at=>$t(t(r),at)),u(d,v)},H=d=>{var v=oe();u(d,v)};q(T,d=>{t(r),b(()=>t(r).hasAuth)?d(B):d(H,-1)})}s(k);var E=c(k),L=l(E);{var et=d=>{var v=ie();D("click",v,at=>Pt(t(r),at)),u(d,v)},f=d=>{var v=ne();u(d,v)};q(L,d=>{t(r),b(()=>t(r).hasAuth)?d(et):d(f,-1)})}s(E),s(g),lt(()=>{O(g,"aria-label",`打开插件 ${t(r),b(()=>t(r).id)??""}`),Q(I,(t(r),b(()=>t(r).id))),O(P,"title",(t(r),b(()=>t(r).listUrlPattern))),Q(R,(t(r),b(()=>t(r).listUrlPattern)))}),D("click",g,()=>vt(t(r))),D("keydown",g,d=>kt(t(r),d)),u(_,g)}),s(n),s(i),s(a),u(e,a)};q(Dt,e=>{t(V)?e(Ct):t(z)?e(St,1):(t($),b(()=>t($).length===0)?e(Ut,2):(t(N),b(()=>t(N).length===0)?e(At,3):e(It,-1)))})}s(_t),s(pt),s(W);var Rt=c(W,2);Vt(Rt,{get open(){return t(S)},onOpenChange:yt,children:(e,a)=>{Zt(e,{children:(i,n)=>{var _=ue(),r=rt(_);Wt(r,{class:"modal-overlay"});var g=c(r,2);Xt(g,{class:"modal","aria-describedby":void 0,children:(A,Z)=>{var x=ve(),I=rt(x),M=l(I);Yt(M,{class:"modal-title",children:(f,d)=>{K();var v=st("添加插件");u(f,v)},$$slots:{default:!0}});var tt=c(M,2);bt(tt,{class:"modal-close","aria-label":"关闭",children:(f,d)=>{K();var v=st("✕");u(f,v)},$$slots:{default:!0}}),s(I);var w=c(I,2),P=c(l(w),2),R=c(l(P),2);ot(R),O(R,"spellcheck",!1),s(P);var k=c(P,2),T=c(l(k),2);ot(T),O(T,"spellcheck",!1),s(k);var B=c(k,2),H=l(B),E=l(H);bt(E,{class:"btn-cancel",get disabled(){return t(U)},type:"button",children:(f,d)=>{K();var v=st("取消");u(f,v)},$$slots:{default:!0}});var L=c(E,2),et=l(L,!0);s(L),s(H),s(B),s(w),lt(()=>{L.disabled=t(U),Q(et,t(U)?"创建中…":"创建并打开编辑")}),Jt("submit",w,wt),it(R,()=>t(y),f=>o(y,f)),it(T,()=>t(j),f=>o(j,f)),u(A,x)},$$slots:{default:!0}}),u(i,_)},$$slots:{default:!0}})},$$slots:{default:!0}}),it(J,()=>t(F),e=>o(F,e)),D("click",Y,dt),u(gt,ut),Ot()}Ft(["click","keydown"]);export{Ie as component};
@@ -1,4 +1,4 @@
1
- import{a as Ye,f as Kt,t as wi}from"../chunks/CS53ooo0.js";import"../chunks/BA4Gucnq.js";import{at as fh,au as uh,aC as al,aD as wu,az as vi,i as B,d as vu,z as Dt,a5 as xe,$ as $u,av as Xe,ax as Le,aw as gn,u as Pu,U as Tu}from"../chunks/vtBo8kBV.js";import{s as Cu,a as Zu}from"../chunks/B6WG2Sd3.js";import{s as $i,e as Au}from"../chunks/B2cyTHdf.js";import{i as yn}from"../chunks/BkD3yAYe.js";import{k as Mu}from"../chunks/DCEayuDt.js";import{h as Ru}from"../chunks/DL3Q5sfb.js";import{i as Xu}from"../chunks/DVa8Y-mQ.js";import{P as Lu}from"../chunks/DoRPmqLn.js";import{a as hl}from"../chunks/CBY2biv-.js";import{p as Du}from"../chunks/DXDBlEGf.js";import{s as cl}from"../chunks/CGCMIfh3.js";import{o as Wu}from"../chunks/Dyvi1wBH.js";import{b as Eu}from"../chunks/B-CeeY89.js";import{p as fl}from"../chunks/BAJAS8BI.js";import{B as _u}from"../chunks/DAV9bzjw.js";let kr=[],dh=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<n.length;e++)(e%2?dh:kr).push(t=t+n[e])})();function zu(n){if(n<768)return!1;for(let e=0,t=kr.length;;){let i=e+t>>1;if(n<kr[i])t=i;else if(n>=dh[i])e=i+1;else return!0;if(e==t)return!1}}function ul(n){return n>=127462&&n<=127487}const dl=8205;function Yu(n,e,t=!0,i=!0){return(t?Oh:Bu)(n,e,i)}function Oh(n,e,t){if(e==n.length)return e;e&&ph(n.charCodeAt(e))&&mh(n.charCodeAt(e-1))&&e--;let i=qs(n,e);for(e+=Ol(i);e<n.length;){let s=qs(n,e);if(i==dl||s==dl||t&&zu(s))e+=Ol(s),i=s;else if(ul(s)){let r=0,o=e-2;for(;o>=0&&ul(qs(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Bu(n,e,t){for(;e>0;){let i=Oh(n,e-2,t);if(i<e)return i;e--}return 0}function qs(n,e){let t=n.charCodeAt(e);if(!mh(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return ph(i)?(t-55296<<10)+(i-56320)+65536:t}function ph(n){return n>=56320&&n<57344}function mh(n){return n>=55296&&n<56320}function Ol(n){return n<65536?1:2}class Y{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=di(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),rt.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=di(this,e,t);let i=[];return this.decompose(e,t,i,0),rt.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new Wi(this),r=new Wi(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new Wi(this,e)}iterRange(e,t=this.length){return new gh(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new yh(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Y.empty:e.length<=32?new ee(e):rt.from(ee.split(e,[]))}}class ee extends Y{constructor(e,t=qu(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new Vu(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new ee(pl(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Bn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ee(l,o.length+r.length));else{let a=l.length>>1;i.push(new ee(l.slice(0,a)),new ee(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof ee))return super.replace(e,t,i);[e,t]=di(this,e,t);let s=Bn(this.text,Bn(i.text,pl(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new ee(s,r):rt.from(ee.split(s,[]),r)}sliceString(e,t=this.length,i=`
1
+ import{a as Ye,f as Kt,t as wi}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{at as fh,au as uh,aC as al,aD as wu,az as vi,k as B,d as vu,F as Dt,a5 as xe,$ as $u,av as Xe,ax as Le,aw as gn,y as Pu,u as Tu}from"../chunks/BsQ08Wq_.js";import{s as Cu,a as Zu}from"../chunks/BI_ale1m.js";import{s as $i,e as Au}from"../chunks/BK0ygNWX.js";import{i as yn}from"../chunks/rNwPv4DZ.js";import{k as Mu}from"../chunks/IhDlsCxD.js";import{h as Ru}from"../chunks/DO5OXNYS.js";import{i as Xu}from"../chunks/Nd0ktDhd.js";import{P as Lu,a as hl}from"../chunks/WW6La7Nt.js";import{p as Du}from"../chunks/GeNMTUn1.js";import{s as cl}from"../chunks/4TuV_psf.js";import{o as Wu}from"../chunks/DptdhtA1.js";import{b as Eu}from"../chunks/CAKuIoAf.js";import{p as fl}from"../chunks/D8G961Hm.js";import{B as _u}from"../chunks/Dg_D3pjF.js";let kr=[],dh=[];(()=>{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e<n.length;e++)(e%2?dh:kr).push(t=t+n[e])})();function zu(n){if(n<768)return!1;for(let e=0,t=kr.length;;){let i=e+t>>1;if(n<kr[i])t=i;else if(n>=dh[i])e=i+1;else return!0;if(e==t)return!1}}function ul(n){return n>=127462&&n<=127487}const dl=8205;function Yu(n,e,t=!0,i=!0){return(t?Oh:Bu)(n,e,i)}function Oh(n,e,t){if(e==n.length)return e;e&&ph(n.charCodeAt(e))&&mh(n.charCodeAt(e-1))&&e--;let i=qs(n,e);for(e+=Ol(i);e<n.length;){let s=qs(n,e);if(i==dl||s==dl||t&&zu(s))e+=Ol(s),i=s;else if(ul(s)){let r=0,o=e-2;for(;o>=0&&ul(qs(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Bu(n,e,t){for(;e>0;){let i=Oh(n,e-2,t);if(i<e)return i;e--}return 0}function qs(n,e){let t=n.charCodeAt(e);if(!mh(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return ph(i)?(t-55296<<10)+(i-56320)+65536:t}function ph(n){return n>=56320&&n<57344}function mh(n){return n>=55296&&n<56320}function Ol(n){return n<65536?1:2}class Y{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=di(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),rt.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=di(this,e,t);let i=[];return this.decompose(e,t,i,0),rt.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new Wi(this),r=new Wi(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new Wi(this,e)}iterRange(e,t=this.length){return new gh(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new yh(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?Y.empty:e.length<=32?new ee(e):rt.from(ee.split(e,[]))}}class ee extends Y{constructor(e,t=qu(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new Vu(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new ee(pl(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Bn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new ee(l,o.length+r.length));else{let a=l.length>>1;i.push(new ee(l.slice(0,a)),new ee(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof ee))return super.replace(e,t,i);[e,t]=di(this,e,t);let s=Bn(this.text,Bn(i.text,pl(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new ee(s,r):rt.from(ee.split(s,[]),r)}sliceString(e,t=this.length,i=`
2
2
  `){[e,t]=di(this,e,t);let s="";for(let r=0,o=0;r<=t&&o<this.text.length;o++){let l=this.text[o],a=r+l.length;r>e&&o&&(s+=i),e<a&&t>r&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new ee(i,s)),i=[],s=-1);return s>-1&&t.push(new ee(i,s)),t}}class rt extends Y{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r<this.children.length;r++){let l=this.children[r],a=o+l.length;if(e<=a&&t>=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=di(this,e,t),i.lines<this.lines)for(let s=0,r=0;s<this.children.length;s++){let o=this.children[s],l=r+o.length;if(e>=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines<h>>4&&a.lines>h>>6){let c=this.children.slice();return c[s]=a,new rt(c,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=`
3
3
  `){[e,t]=di(this,e,t);let s="";for(let r=0,o=0;r<this.children.length&&o<=t;r++){let l=this.children[r],a=o+l.length;o>e&&r&&(s+=i),e<a&&t>o&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof rt))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let O of e)O.flatten(d);return new ee(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,c=[];function f(d){let O;if(d.lines>r&&d instanceof rt)for(let p of d.children)f(p);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof ee&&a&&(O=c[c.length-1])instanceof ee&&d.lines+O.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new ee(O.text.concat(d.text),O.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,c.push(d))}function u(){a!=0&&(l.push(c.length==1?c[0]:rt.from(c,h)),h=-1,a=c.length=0)}for(let d of e)f(d);return u(),l.length==1?l[0]:new rt(l,t)}}Y.empty=new ee([""],0);function qu(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Bn(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r<n.length&&s<=i;r++){let l=n[r],a=s+l.length;a>=t&&(a>i&&(l=l.slice(0,i-s)),s<t&&(l=l.slice(t-s)),o?(e[e.length-1]+=l,o=!1):e.push(l)),s=a+1}return e}function pl(n,e,t){return Bn(n,[""],e,t)}class Wi{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof ee?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof ee?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=`
4
4
  `,this;e--}else if(s instanceof ee){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof ee?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class gh{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Wi(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class yh{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(Y.prototype[Symbol.iterator]=function(){return this.iter()},Wi.prototype[Symbol.iterator]=gh.prototype[Symbol.iterator]=yh.prototype[Symbol.iterator]=function(){return this});class Vu{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}}function di(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function he(n,e,t=!0,i=!0){return Yu(n,e,t,i)}function Iu(n){return n>=56320&&n<57344}function ju(n){return n>=55296&&n<56320}function ve(n,e){let t=n.charCodeAt(e);if(!ju(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Iu(i)?(t-55296<<10)+(i-56320)+65536:t}function bo(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function ot(n){return n<65536?1:2}const wr=/\r\n?|\n/;var de=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(de||(de={}));class ut{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t+1];e+=i<0?this.sections[t]:i}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,i=0,s=0;t<this.sections.length;){let r=this.sections[t++],o=this.sections[t++];o<0?(e(i,s,r),s+=r):s+=o,i+=r}}iterChangedRanges(e,t=!1){vr(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];s<0?e.push(i,s):e.push(s,i)}return new ut(e)}composeDesc(e){return this.empty?e:e.empty?this:xh(this,e)}mapDesc(e,t=!1){return e.empty?this:$r(this,e,t)}mapPos(e,t=-1,i=de.Simple){let s=0,r=0;for(let o=0;o<this.sections.length;){let l=this.sections[o++],a=this.sections[o++],h=s+l;if(a<0){if(h>e)return r+(e-s);r+=l}else{if(i!=de.Simple&&h>=e&&(i==de.TrackDel&&s<e&&h>e||i==de.TrackBefore&&s<e||i==de.TrackAfter&&h>e))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i<this.sections.length&&s<=t;){let r=this.sections[i++],o=this.sections[i++],l=s+r;if(o>=0&&s<=t&&l>=e)return s<e&&l>t?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let i=this.sections[t++],s=this.sections[t++];e+=(e?" ":"")+i+(s>=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new ut(e)}static create(e){return new ut(e)}}class oe extends ut{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return vr(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return $r(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s<t.length;s+=2){let o=t[s],l=t[s+1];if(l>=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length<a;)i.push(Y.empty);i.push(o?e.slice(r,r+o):Y.empty)}r+=o}return new oe(t,i)}compose(e){return this.empty?e:e.empty?this:xh(this,e,!0)}map(e,t=!1){return e.empty?this:$r(this,e,t,!0)}iterChanges(e,t=!1){vr(this,e,t)}get desc(){return ut.create(this.sections)}filter(e){let t=[],i=[],s=[],r=new Vi(this);e:for(let o=0,l=0;;){let a=o==e.length?1e9:e[o++];for(;l<a||l==a&&r.len==0;){if(r.done)break e;let c=Math.min(r.len,a-l);me(s,c,-1);let f=r.ins==-1?-1:r.off==0?r.ins:0;me(t,c,f),f>0&&vt(i,t,r.text),r.forward(c),l+=c}let h=e[o++];for(;l<h;){if(r.done)break e;let c=Math.min(r.len,h-l);me(t,c,-1),me(s,c,r.ins==-1?-1:r.off==0?r.ins:0),r.forward(c),l+=c}}return{changes:new oe(t,i),filtered:ut.create(s)}}toJSON(){let e=[];for(let t=0;t<this.sections.length;t+=2){let i=this.sections[t],s=this.sections[t+1];s<0?e.push(i):s==0?e.push([i]):e.push([i].concat(this.inserted[t>>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!s.length)return;o<t&&me(s,t-o,-1);let f=new oe(s,r);l=l?l.compose(f.map(l)):f,s=[],r=[],o=0}function h(c){if(Array.isArray(c))for(let f of c)h(f);else if(c instanceof oe){if(c.length!=t)throw new RangeError(`Mismatched change set length (got ${c.length}, expected ${t})`);a(),l=l?l.compose(c.map(l)):c}else{let{from:f,to:u=f,insert:d}=c;if(f>u||f<0||u>t)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${t})`);let O=d?typeof d=="string"?Y.of(d.split(i||wr)):d:Y.empty,p=O.length;if(f==u&&p==0)return;f<o&&a(),f>o&&me(s,f-o,-1),me(s,u-f,p),vt(r,s,O),o=u}}return h(e),a(!l),l}static empty(e){return new oe(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;s<e.length;s++){let r=e[s];if(typeof r=="number")t.push(r,-1);else{if(!Array.isArray(r)||typeof r[0]!="number"||r.some((o,l)=>l&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length<s;)i.push(Y.empty);i[s]=Y.of(r.slice(1)),t.push(r[0],i[s].length)}}}return new oe(t,i)}static createSet(e,t){return new oe(e,t)}}function me(n,e,t,i=!1){if(e==0&&t<=0)return;let s=n.length-2;s>=0&&t<=0&&t==n[s+1]?n[s]+=e:s>=0&&e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function vt(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i<n.length)n[n.length-1]=n[n.length-1].append(t);else{for(;n.length<i;)n.push(Y.empty);n.push(t)}}function vr(n,e,t){let i=n.inserted;for(let s=0,r=0,o=0;o<n.sections.length;){let l=n.sections[o++],a=n.sections[o++];if(a<0)s+=l,r+=l;else{let h=s,c=r,f=Y.empty;for(;h+=l,c+=a,a&&i&&(f=f.append(i[o-2>>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,c,f),s=h,r=c}}}function $r(n,e,t,i=!1){let s=[],r=i?[]:null,o=new Vi(n),l=new Vi(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);me(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len<o.len||l.len==o.len&&!t))){let h=l.len;for(me(s,l.ins,-1);h;){let c=Math.min(o.len,h);o.ins>=0&&a<o.i&&o.len<=c&&(me(s,0,o.ins),r&&vt(r,s,o.text),a=o.i),o.forward(c),h-=c}l.next()}else if(o.ins>=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.len<c)c-=l.len,l.next();else break;me(s,h,a<o.i?o.ins:0),r&&a<o.i&&vt(r,s,o.text),a=o.i,o.forward(o.len-c)}else{if(o.done&&l.done)return r?oe.createSet(s,r):ut.create(s);throw new Error("Mismatched change set lengths")}}}function xh(n,e,t=!1){let i=[],s=t?[]:null,r=new Vi(n),o=new Vi(e);for(let l=!1;;){if(r.done&&o.done)return s?oe.createSet(i,s):ut.create(i);if(r.ins==0)me(i,r.len,0,l),r.next();else if(o.len==0&&!o.done)me(i,0,o.ins,l),s&&vt(s,i,o.text),o.next();else{if(r.done||o.done)throw new Error("Mismatched change set lengths");{let a=Math.min(r.len2,o.len),h=i.length;if(r.ins==-1){let c=o.ins==-1?-1:o.off?0:o.ins;me(i,a,c,l),s&&c&&vt(s,i,o.text)}else o.ins==-1?(me(i,r.off?0:r.len,a,l),s&&vt(s,i,r.textBit(a))):(me(i,r.off?0:r.len,o.off?0:o.ins,l),s&&!o.off&&vt(s,i,o.text));l=(r.ins>a||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class Vi{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i<e.length?(this.len=e[this.i++],this.ins=e[this.i++]):(this.len=0,this.ins=-2),this.off=0}get done(){return this.ins==-2}get len2(){return this.ins<0?this.len:this.ins}get text(){let{inserted:e}=this.set,t=this.i-2>>1;return t>=e.length?Y.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?Y.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Yt{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new Yt(i,s,this.flags)}extend(e,t=e,i=0){if(e<=this.anchor&&t>=this.anchor)return x.range(e,t,void 0,void 0,i);let s=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return x.range(this.anchor,s,void 0,void 0,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&this.goalColumn==e.goalColumn&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return x.range(e.anchor,e.head)}static create(e,t,i){return new Yt(e,t,i)}}class x{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:x.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;i<this.ranges.length;i++)if(!this.ranges[i].eq(e.ranges[i],t))return!1;return!0}get main(){return this.ranges[this.mainIndex]}asSingle(){return this.ranges.length==1?this:new x([this.main],0)}addRange(e,t=!0){return x.create([e].concat(this.ranges),t?0:this.mainIndex+1)}replaceRange(e,t=this.mainIndex){let i=this.ranges.slice();return i[t]=e,x.create(i,this.mainIndex)}toJSON(){return{ranges:this.ranges.map(e=>e.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new x(e.ranges.map(t=>Yt.fromJSON(t)),e.main)}static single(e,t=e){return new x([x.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;s<e.length;s++){let r=e[s];if(r.empty?r.from<=i:r.from<i)return x.normalized(e.slice(),t);i=r.to}return new x(e,t)}static cursor(e,t=0,i,s){return Yt.create(e,e,(t==0?0:t<0?8:16)|(i==null?7:Math.min(6,i))|(s??16777215)<<6)}static range(e,t,i,s,r){let o=(i??16777215)<<6|(s==null?7:Math.min(6,s));return!r&&e!=t&&(r=t<e?1:-1),t<e?Yt.create(t,e,48|o):Yt.create(e,t,(r?r<0?8:16:0)|o)}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;s<e.length;s++){let r=e[s],o=e[s-1];if(r.empty?r.from<=o.to:r.from<o.to){let l=o.from,a=Math.max(r.to,o.to);s<=t&&t--,e.splice(--s,2,r.anchor>r.head?x.range(a,l):x.range(l,a))}}return new x(e,t)}}function bh(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let So=0;class P{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=So++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new P(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:Qo),!!e.static,e.enables)}of(e){return new qn([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new qn(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new qn(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}}function Qo(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}class qn{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=So++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:(((t=e[f.id])!==null&&t!==void 0?t:1)&1)==0&&c.push(e[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Pr(f,c)){let d=i(f);if(l?!ml(d,f.values[o],s):!s(d,f.values[o]))return f.values[o]=d,1}return 0},reconfigure:(f,u)=>{let d,O=u.config.address[r];if(O!=null){let p=Jn(u,O);if(this.dependencies.every(g=>g instanceof P?u.facet(g)===f.facet(g):g instanceof pe?u.field(g,!1)==f.field(g,!1):!0)||(l?ml(d=i(f),p,s):s(d=i(f),p)))return f.values[o]=p,0}else d=i(f);return f.values[o]=d,1}}}}function ml(n,e,t){if(n.length!=e.length)return!1;for(let i=0;i<n.length;i++)if(!t(n[i],e[i]))return!1;return!0}function Pr(n,e){let t=!1;for(let i of e)Ei(n,i)&1&&(t=!0);return t}function Nu(n,e,t){let i=t.map(a=>n[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;c<i.length;c++){let f=Jn(a,i[c]);if(s[c]==2)for(let u of f)h.push(u);else h.push(f)}return e.combine(h)}return{create(a){for(let h of i)Ei(a,h);return a.values[o]=l(a),1},update(a,h){if(!Pr(a,r))return 0;let c=l(a);return e.compare(c,a.values[o])?0:(a.values[o]=c,1)},reconfigure(a,h){let c=Pr(a,i),f=h.config.facets[e.id],u=h.facet(e);if(f&&!c&&Qo(t,f))return a.values[o]=u,0;let d=l(a);return e.compare(d,u)?(a.values[o]=u,0):(a.values[o]=d,1)}}}const xn=P.define({static:!0});class pe{constructor(e,t,i,s,r){this.id=e,this.createF=t,this.updateF=i,this.compareF=s,this.spec=r,this.provides=void 0}static define(e){let t=new pe(So++,e.create,e.update,e.compare||((i,s)=>i===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(xn).find(i=>i.field==this);return((t==null?void 0:t.create)||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>{let r=i.facet(xn),o=s.facet(xn),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}}init(e){return[this,xn.of({field:this,create:e})]}get extension(){return this}}const _t={lowest:4,low:3,default:2,high:1,highest:0};function Pi(n){return e=>new Sh(e,n)}const Xt={highest:Pi(_t.highest),high:Pi(_t.high),default:Pi(_t.default),low:Pi(_t.low),lowest:Pi(_t.lowest)};class Sh{constructor(e,t){this.inner=e,this.prec=t}}class Ps{of(e){return new Tr(this,e)}reconfigure(e){return Ps.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Tr{constructor(e,t){this.compartment=e,this.inner=t}}class Kn{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length<i.length;)this.statusTemplate.push(0)}staticFacet(e){let t=this.address[e.id];return t==null?e.default:this.staticValues[t>>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of Gu(e,t,o))u instanceof pe?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let c=i==null?void 0:i.config.facets;for(let u in r){let d=r[u],O=d[0].facet,p=c&&c[u]||[];if(d.every(g=>g.type==0))if(l[O.id]=a.length<<1|1,Qo(p,d))a.push(i.facet(O));else{let g=O.combine(d.map(y=>y.value));a.push(i&&O.compare(g,i.facet(O))?i.facet(O):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(y=>g.dynamicSlot(y)));l[O.id]=h.length<<1,h.push(g=>Nu(g,O,d))}}let f=h.map(u=>u(l));return new Kn(e,o,f,l,a,r)}}function Gu(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Tr&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof Tr){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Sh)r(o.inner,o.prec);else if(o instanceof pe)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof qn)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,_t.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,_t.default),i.reduce((o,l)=>o.concat(l))}function Ei(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function Jn(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}const Qh=P.define(),Cr=P.define({combine:n=>n.some(e=>e),static:!0}),kh=P.define({combine:n=>n.length?n[0]:void 0,static:!0}),wh=P.define(),vh=P.define(),$h=P.define(),Ph=P.define({combine:n=>n.length?n[0]:!1});class St{constructor(e,t){this.type=e,this.value=t}static define(){return new Uu}}class Uu{of(e){return new St(this,e)}}class Fu{constructor(e){this.map=e}of(e){return new R(this,e)}}class R{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new R(this.type,t)}is(e){return this.type==e}static define(e={}){return new Fu(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}}R.reconfigure=R.define();R.appendConfig=R.define();class ne{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&bh(i,t.newLength),r.some(l=>l.type==ne.time)||(this.annotations=r.concat(ne.time.of(Date.now())))}static create(e,t,i,s,r,o){return new ne(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(ne.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}ne.time=St.define();ne.userEvent=St.define();ne.addToHistory=St.define();ne.remote=St.define();function Hu(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i<n.length&&(s==e.length||e[s]>=n[i]))r=n[i++],o=n[i++];else if(s<e.length)r=e[s++],o=e[s++];else return t;!t.length||t[t.length-1]<r?t.push(r,o):t[t.length-1]<o&&(t[t.length-1]=o)}}function Th(n,e,t){var i;let s,r,o;return t?(s=e.changes,r=oe.empty(e.changes.length),o=n.changes.compose(e.changes)):(s=e.changes.map(n.changes),r=n.changes.mapDesc(e.changes,!0),o=n.changes.compose(s)),{changes:o,selection:e.selection?e.selection.map(r):(i=n.selection)===null||i===void 0?void 0:i.map(s),effects:R.mapEffects(n.effects,s).concat(R.mapEffects(e.effects,r)),annotations:n.annotations.length?n.annotations.concat(e.annotations):e.annotations,scrollIntoView:n.scrollIntoView||e.scrollIntoView}}function Zr(n,e,t){let i=e.selection,s=oi(e.annotations);return e.userEvent&&(s=s.concat(ne.userEvent.of(e.userEvent))),{changes:e.changes instanceof oe?e.changes:oe.of(e.changes||[],t,n.facet(kh)),selection:i&&(i instanceof x?i:x.single(i.anchor,i.head)),effects:oi(e.effects),annotations:s,scrollIntoView:!!e.scrollIntoView}}function Ch(n,e,t){let i=Zr(n,e.length?e[0]:{},n.doc.length);e.length&&e[0].filter===!1&&(t=!1);for(let r=1;r<e.length;r++){e[r].filter===!1&&(t=!1);let o=!!e[r].sequential;i=Th(i,Zr(n,e[r],o?i.changes.newLength:n.doc.length),o)}let s=ne.create(n,i.changes,i.selection,i.effects,i.annotations,i.scrollIntoView);return Ju(t?Ku(s):s)}function Ku(n){let e=n.startState,t=!0;for(let s of e.facet(wh)){let r=s(n);if(r===!1){t=!1;break}Array.isArray(r)&&(t=t===!0?r:Hu(t,r))}if(t!==!0){let s,r;if(t===!1)r=n.changes.invertedDesc,s=oe.empty(e.doc.length);else{let o=n.changes.filter(t);s=o.changes,r=o.filtered.mapDesc(o.changes).invertedDesc}n=ne.create(e,s,n.selection&&n.selection.map(r),R.mapEffects(n.effects,r),n.annotations,n.scrollIntoView)}let i=e.facet(vh);for(let s=i.length-1;s>=0;s--){let r=i[s](n);r instanceof ne?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof ne?n=r[0]:n=Ch(e,oi(r),!1)}return n}function Ju(n){let e=n.startState,t=e.facet($h),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=Th(i,Zr(e,r,n.changes.newLength),!0))}return i==n?n:ne.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}const ed=[];function oi(n){return n==null?ed:Array.isArray(n)?n:[n]}var H=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(H||(H={}));const td=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Ar;try{Ar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function id(n){if(Ar)return Ar.test(n);for(let e=0;e<n.length;e++){let t=n[e];if(/\w/.test(t)||t>"€"&&(t.toUpperCase()!=t.toLowerCase()||td.test(t)))return!0}return!1}function nd(n){return e=>{if(!/\S/.test(e))return H.Space;if(id(e))return H.Word;for(let t=0;t<n.length;t++)if(e.indexOf(n[t])>-1)return H.Word;return H.Other}}class q{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;l<this.config.dynamicSlots.length;l++)Ei(this,l<<1);this.computeSlot=null}field(e,t=!0){let i=this.config.address[e.id];if(i==null){if(t)throw new RangeError("Field is not present in this state");return}return Ei(this,i),Jn(this,i)}update(...e){return Ch(this,e,!0)}applyTransaction(e){let t=this.config,{base:i,compartments:s}=t;for(let l of e.effects)l.is(Ps.reconfigure)?(t&&(s=new Map,t.compartments.forEach((a,h)=>s.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is(R.reconfigure)?(t=null,i=l.value):l.is(R.appendConfig)&&(t=null,i=oi(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=Kn.resolve(i,s,this),r=new q(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Cr)?e.newSelection:e.newSelection.asSingle();new q(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:x.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=oi(i.effects);for(let l=1;l<t.ranges.length;l++){let a=e(t.ranges[l]),h=this.changes(a.changes),c=h.map(s);for(let u=0;u<l;u++)r[u]=r[u].map(c);let f=s.mapDesc(h,!0);r.push(a.range.map(f)),s=s.compose(c),o=R.mapEffects(o,c).concat(R.mapEffects(oi(a.effects),f))}return{changes:s,selection:x.create(r,t.mainIndex),effects:o}}changes(e=[]){return e instanceof oe?e:oe.of(e,this.doc.length,this.facet(q.lineSeparator))}toText(e){return Y.of(e.split(this.facet(q.lineSeparator)||wr))}sliceDoc(e=0,t=this.doc.length){return this.doc.sliceString(e,t,this.lineBreak)}facet(e){let t=this.config.address[e.id];return t==null?e.default:(Ei(this,t),Jn(this,t))}toJSON(e){let t={doc:this.sliceDoc(),selection:this.selection.toJSON()};if(e)for(let i in e){let s=e[i];s instanceof pe&&this.config.address[s.id]!=null&&(t[i]=s.spec.toJSON(this.field(e[i]),this))}return t}static fromJSON(e,t={},i){if(!e||typeof e.doc!="string")throw new RangeError("Invalid JSON representation for EditorState");let s=[];if(i){for(let r in i)if(Object.prototype.hasOwnProperty.call(e,r)){let o=i[r],l=e[r];s.push(o.init(a=>o.spec.fromJSON(l,a)))}}return q.create({doc:e.doc,selection:x.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=Kn.resolve(e.extensions||[],new Map),i=e.doc instanceof Y?e.doc:Y.of((e.doc||"").split(t.staticFacet(q.lineSeparator)||wr)),s=e.selection?e.selection instanceof x?e.selection:x.single(e.selection.anchor,e.selection.head):x.single(0);return bh(s,i.length),t.staticFacet(Cr)||(s=s.asSingle()),new q(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(q.tabSize)}get lineBreak(){return this.facet(q.lineSeparator)||`
@@ -21,4 +21,4 @@ import{a as Ye,f as Kt,t as wi}from"../chunks/CS53ooo0.js";import"../chunks/BA4G
21
21
  constructor(\${params}) {
22
22
  \${}
23
23
  }
24
- }`,{label:"class",detail:"definition",type:"keyword"}),we('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),we('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],By=pu.concat([we("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),we("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),we("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),nh=new tm,mu=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Mi(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}const qy=["FunctionDeclaration"],Vy={FunctionDeclaration:Mi("function"),ClassDeclaration:Mi("class"),ClassExpression:()=>!0,EnumDeclaration:Mi("constant"),TypeAliasDeclaration:Mi("type"),NamespaceDeclaration:Mi("namespace"),VariableDefinition(n,e){n.matchContext(qy)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function gu(n,e){let t=nh.get(e);if(t)return t;let i=[],s=!0;function r(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return e.cursor(K.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let l=Vy[o.name];if(l&&l(o,r)||mu.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of gu(n,o.node))i.push(l);return!1}}),nh.set(e,i),i}const sh=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,yu=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function Iy(n){let e=le(n.state).resolveInner(n.pos,-1);if(yu.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&sh.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let s=e;s;s=s.parent)mu.has(s.name)&&(i=i.concat(gu(n.state.doc,s)));return{options:i,from:t?e.from:n.pos,validFor:sh}}const Nt=fs.define({name:"javascript",parser:Yy.configure({props:[Gc.add({IfStatement:hr({except:/^\s*({|else\b)/}),TryStatement:hr({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Qm,SwitchBody:n=>{let e=n.textAfter,t=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:i?1:2)*n.unit},Block:Sm({closing:"}"}),ArrowFunction:n=>n.baseIndent+n.unit,"TemplateString BlockComment":()=>null,"Statement Property":hr({except:/^\s*{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),Hc.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":$m,BlockComment(n){return{from:n.from+2,to:n.to-2}},JSXElement(n){let e=n.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=n.lastChild;return{from:e.to,to:t.type.isError?n.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(n){var e;let t=(e=n.firstChild)===null||e===void 0?void 0:e.nextSibling,i=n.lastChild;return!t||t.type.isError?null:{from:t.to,to:i.type.isError?n.to:i.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),xu={test:n=>/^JSX/.test(n.name),facet:jc({commentTokens:{block:{open:"{/*",close:"*/}"}}})},jy=Nt.configure({dialect:"ts"},"typescript"),Ny=Nt.configure({dialect:"jsx",props:[qo.add(n=>n.isTop?[xu]:void 0)]}),Gy=Nt.configure({dialect:"jsx ts",props:[qo.add(n=>n.isTop?[xu]:void 0)]},"typescript");let bu=n=>({label:n,type:"keyword"});const Su="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(bu),Uy=Su.concat(["declare","implements","private","protected","public"].map(bu));function Fy(n={}){let e=n.jsx?n.typescript?Gy:Ny:n.typescript?jy:Nt,t=n.typescript?By.concat(Uy):pu.concat(Su);return new dm(e,[Nt.data.of({autocomplete:j0(yu,Kf(t))}),Nt.data.of({autocomplete:Iy}),n.jsx?Jy:[]])}function Hy(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}function rh(n,e,t=n.length){for(let i=e==null?void 0:e.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return n.sliceString(i.from,Math.min(i.to,t));return""}const Ky=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Jy=$.inputHandler.of((n,e,t,i,s)=>{if((Ky?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!Nt.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h;let{head:c}=a,f=le(o).resolveInner(c-1,-1),u;if(f.name=="JSXStartTag"&&(f=f.parent),!(o.doc.sliceString(c-1,c)!=i||f.name=="JSXAttributeValue"&&f.to>c)){if(i==">"&&f.name=="JSXFragmentTag")return{range:a,changes:{from:c,insert:"</>"}};if(i=="/"&&f.name=="JSXStartCloseTag"){let d=f.parent,O=d.parent;if(O&&d.from==c-2&&((u=rh(o.doc,O.firstChild,c))||((h=O.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let p=`${u}>`;return{range:x.cursor(c+p.length,-1),changes:{from:c,insert:p}}}}else if(i==">"){let d=Hy(f);if(d&&d.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(u=rh(o.doc,d,c)))return{range:a,changes:{from:c,insert:`</${u}>`}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),ex="#e5c07b",oh="#e06c75",tx="#56b6c2",ix="#ffffff",Hn="#abb2bf",xo="#7d8799",nx="#61afef",sx="#98c379",lh="#d19a66",rx="#c678dd",ox="#21252b",ah="#2c313a",hh="#282c34",Qr="#353a42",lx="#3E4451",ch="#528bff",ax=$.theme({"&":{color:Hn,backgroundColor:hh},".cm-content":{caretColor:ch},".cm-cursor, .cm-dropCursor":{borderLeftColor:ch},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:lx},".cm-panels":{backgroundColor:ox,color:Hn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:hh,color:xo,border:"none"},".cm-activeLineGutter":{backgroundColor:ah},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Qr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Qr,borderBottomColor:Qr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:ah,color:Hn}}},{dark:!0}),hx=fn.define([{tag:m.keyword,color:rx},{tag:[m.name,m.deleted,m.character,m.propertyName,m.macroName],color:oh},{tag:[m.function(m.variableName),m.labelName],color:nx},{tag:[m.color,m.constant(m.name),m.standard(m.name)],color:lh},{tag:[m.definition(m.name),m.separator],color:Hn},{tag:[m.typeName,m.className,m.number,m.changed,m.annotation,m.modifier,m.self,m.namespace],color:ex},{tag:[m.operator,m.operatorKeyword,m.url,m.escape,m.regexp,m.link,m.special(m.string)],color:tx},{tag:[m.meta,m.comment],color:xo},{tag:m.strong,fontWeight:"bold"},{tag:m.emphasis,fontStyle:"italic"},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.link,color:xo,textDecoration:"underline"},{tag:m.heading,fontWeight:"bold",color:oh},{tag:[m.atom,m.bool,m.special(m.variableName)],color:lh},{tag:[m.processingInstruction,m.string,m.inserted],color:sx},{tag:m.invalid,color:ix}]),cx=[ax,lf(hx)];var fx=Kt('<div class="cm-root svelte-15dfyqh"></div>');function ux(n,e){fh(e,!0);let t=fl(e,"content",15,""),i=fl(e,"typescript",3,!1),s;Wu(()=>{if(!s)return;const o=q.create({doc:t(),extensions:[ty,Fy({typescript:i()}),cx,$.theme({"&":{height:"100%",minHeight:"0",fontSize:"0.8125rem",lineHeight:"1.5"},".cm-scroller":{fontFamily:"ui-monospace, 'Cascadia Code', 'Consolas', monospace"}}),$.lineWrapping,$.updateListener.of(a=>{var h;a.docChanged&&(t(a.state.doc.toString()),(h=e.onedit)==null||h.call(e))})]}),l=new $({state:o,parent:s});return()=>l.destroy()});var r=fx();Eu(r,o=>s=o,()=>s),Ye(n,r),uh()}var dx=Kt('<button type="button" class="admin-toolbar-btn admin-toolbar-btn--primary"> </button>'),Ox=Kt('<div class="state svelte-1141x2j">缺少插件 id</div>'),px=Kt('<div class="state svelte-1141x2j">加载中…</div>'),mx=Kt('<div class="state err svelte-1141x2j"> </div>'),gx=Kt('<div class="plugin-editor-area svelte-1141x2j"><div class="editor-wrap svelte-1141x2j"><!></div></div>'),yx=Kt('<div class="feed-wrap svelte-1141x2j"><div class="feed-col svelte-1141x2j"><div class="feed-toolbar-block plugin-detail-toolbar svelte-1141x2j"><div class="admin-feed-header"><div class="admin-feed-header__left"><h2> </h2> <p class="admin-feed-header__desc plugin-path svelte-1141x2j"><!></p></div> <div class="admin-feed-header__actions"><!> <!></div></div></div> <div class="feed-body-scroll svelte-1141x2j"><!></div></div></div>');function Ex(n,e){fh(e,!1);const t=()=>Zu(Du,"$page",i),[i,s]=Cu(),r=Dt();let o=Dt(""),l=Dt(""),a=Dt(!0),h=Dt(!1),c=Dt(""),f=Dt(!1);async function u(){if(B(r)){xe(a,!0),xe(c,"");try{const Z=await hl("/api/plugins/"+encodeURIComponent(B(r)));if(!Z.ok){const re=await Z.text();let Ge=`HTTP ${Z.status}`;try{const mn=JSON.parse(re);mn.error&&(Ge=mn.error)}catch{re.trim()&&(Ge=re)}throw new Error(Ge)}const L=await Z.json();xe(o,L.filePath??""),xe(l,L.content??""),xe(f,!1)}catch(Z){xe(c,Z instanceof Error?Z.message:String(Z)),xe(o,""),xe(l,"")}finally{xe(a,!1)}}}function d(){xe(f,!0)}async function O(){if(!(!B(r)||B(h))){xe(h,!0);try{const Z=await hl("/api/plugins/"+encodeURIComponent(B(r)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:B(l)})});if(!Z.ok){const L=await Z.text();let re=`HTTP ${Z.status}`;try{const Ge=JSON.parse(L);Ge.error&&(re=Ge.error)}catch{L.trim()&&(re=L)}throw new Error(re)}xe(f,!1),cl("已保存并重新加载插件","success")}catch(Z){cl(Z instanceof Error?Z.message:String(Z),"error")}finally{xe(h,!1)}}}al(()=>t(),()=>{xe(r,t().params.id?decodeURIComponent(t().params.id):"")}),al(()=>B(r),()=>{B(r)&&u()}),wu(),Xu();var p=yx();Ru("1141x2j",Z=>{vu(()=>{$u.title=`${B(r)?`${B(r)} · 插件`:"插件"} — ${Lu}`})});var g=Xe(p),y=Xe(g),b=Xe(y),S=Xe(b),C=Xe(S),Q=Xe(C,!0);Le(C);var k=gn(C,2),w=Xe(k);{var X=Z=>{var L=wi("缺少插件 id");Ye(Z,L)},E=Z=>{var L=wi("加载中…");Ye(Z,L)},I=Z=>{var L=wi();vi(()=>$i(L,B(c))),Ye(Z,L)},D=Z=>{var L=wi();vi(()=>$i(L,B(o))),Ye(Z,L)},M=Z=>{var L=wi("—");Ye(Z,L)};yn(w,Z=>{B(r)?B(a)?Z(E,1):B(c)?Z(I,2):B(o)?Z(D,3):Z(M,-1):Z(X)})}Le(k),Le(S);var V=gn(S,2),z=Xe(V);{var j=Z=>{_u(Z,{})};yn(z,Z=>{B(r)&&Z(j)})}var ce=gn(z,2);{var ye=Z=>{var L=dx(),re=Xe(L,!0);Le(L),vi(()=>{L.disabled=B(h)||!B(f),$i(re,B(h)?"保存中…":"保存")}),Au("click",L,O),Ye(Z,L)};yn(ce,Z=>{B(r)&&!B(a)&&!B(c)&&Z(ye)})}Le(V),Le(b),Le(y);var Re=gn(y,2),se=Xe(Re);{var Qe=Z=>{var L=Ox();Ye(Z,L)},Ne=Z=>{var L=px();Ye(Z,L)},ke=Z=>{var L=mx(),re=Xe(L,!0);Le(L),vi(()=>$i(re,B(c))),Ye(Z,L)},ze=Z=>{var L=gx(),re=Xe(L),Ge=Xe(re);Mu(Ge,()=>B(r),mn=>{{let Qu=Pu(()=>(B(o),Tu(()=>B(o).endsWith(".ts"))));ux(mn,{get typescript(){return B(Qu)},onedit:d,get content(){return B(l)},set content(ku){xe(l,ku)},$$legacy:!0})}}),Le(re),Le(L),Ye(Z,L)};yn(se,Z=>{B(r)?B(a)?Z(Ne,1):B(c)?Z(ke,2):Z(ze,-1):Z(Qe)})}Le(Re),Le(g),Le(p),vi(()=>$i(Q,B(r)||"插件")),Ye(n,p),uh(),s()}export{Ex as component};
24
+ }`,{label:"class",detail:"definition",type:"keyword"}),we('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),we('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],By=pu.concat([we("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),we("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),we("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),nh=new tm,mu=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Mi(n){return(e,t)=>{let i=e.node.getChild("VariableDefinition");return i&&t(i,n),!0}}const qy=["FunctionDeclaration"],Vy={FunctionDeclaration:Mi("function"),ClassDeclaration:Mi("class"),ClassExpression:()=>!0,EnumDeclaration:Mi("constant"),TypeAliasDeclaration:Mi("type"),NamespaceDeclaration:Mi("namespace"),VariableDefinition(n,e){n.matchContext(qy)||e(n,"variable")},TypeDefinition(n,e){e(n,"type")},__proto__:null};function gu(n,e){let t=nh.get(e);if(t)return t;let i=[],s=!0;function r(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return e.cursor(K.IncludeAnonymous).iterate(o=>{if(s)s=!1;else if(o.name){let l=Vy[o.name];if(l&&l(o,r)||mu.has(o.name))return!1}else if(o.to-o.from>8192){for(let l of gu(n,o.node))i.push(l);return!1}}),nh.set(e,i),i}const sh=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,yu=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function Iy(n){let e=le(n.state).resolveInner(n.pos,-1);if(yu.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&sh.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let s=e;s;s=s.parent)mu.has(s.name)&&(i=i.concat(gu(n.state.doc,s)));return{options:i,from:t?e.from:n.pos,validFor:sh}}const Nt=fs.define({name:"javascript",parser:Yy.configure({props:[Gc.add({IfStatement:hr({except:/^\s*({|else\b)/}),TryStatement:hr({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Qm,SwitchBody:n=>{let e=n.textAfter,t=/^\s*\}/.test(e),i=/^\s*(case|default)\b/.test(e);return n.baseIndent+(t?0:i?1:2)*n.unit},Block:Sm({closing:"}"}),ArrowFunction:n=>n.baseIndent+n.unit,"TemplateString BlockComment":()=>null,"Statement Property":hr({except:/^\s*{/}),JSXElement(n){let e=/^\s*<\//.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},JSXEscape(n){let e=/\s*\}/.test(n.textAfter);return n.lineIndent(n.node.from)+(e?0:n.unit)},"JSXOpenTag JSXSelfClosingTag"(n){return n.column(n.node.from)+n.unit}}),Hc.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":$m,BlockComment(n){return{from:n.from+2,to:n.to-2}},JSXElement(n){let e=n.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=n.lastChild;return{from:e.to,to:t.type.isError?n.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(n){var e;let t=(e=n.firstChild)===null||e===void 0?void 0:e.nextSibling,i=n.lastChild;return!t||t.type.isError?null:{from:t.to,to:i.type.isError?n.to:i.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),xu={test:n=>/^JSX/.test(n.name),facet:jc({commentTokens:{block:{open:"{/*",close:"*/}"}}})},jy=Nt.configure({dialect:"ts"},"typescript"),Ny=Nt.configure({dialect:"jsx",props:[qo.add(n=>n.isTop?[xu]:void 0)]}),Gy=Nt.configure({dialect:"jsx ts",props:[qo.add(n=>n.isTop?[xu]:void 0)]},"typescript");let bu=n=>({label:n,type:"keyword"});const Su="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(bu),Uy=Su.concat(["declare","implements","private","protected","public"].map(bu));function Fy(n={}){let e=n.jsx?n.typescript?Gy:Ny:n.typescript?jy:Nt,t=n.typescript?By.concat(Uy):pu.concat(Su);return new dm(e,[Nt.data.of({autocomplete:j0(yu,Kf(t))}),Nt.data.of({autocomplete:Iy}),n.jsx?Jy:[]])}function Hy(n){for(;;){if(n.name=="JSXOpenTag"||n.name=="JSXSelfClosingTag"||n.name=="JSXFragmentTag")return n;if(n.name=="JSXEscape"||!n.parent)return null;n=n.parent}}function rh(n,e,t=n.length){for(let i=e==null?void 0:e.firstChild;i;i=i.nextSibling)if(i.name=="JSXIdentifier"||i.name=="JSXBuiltin"||i.name=="JSXNamespacedName"||i.name=="JSXMemberExpression")return n.sliceString(i.from,Math.min(i.to,t));return""}const Ky=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Jy=$.inputHandler.of((n,e,t,i,s)=>{if((Ky?n.composing:n.compositionStarted)||n.state.readOnly||e!=t||i!=">"&&i!="/"||!Nt.isActiveAt(n.state,e,-1))return!1;let r=s(),{state:o}=r,l=o.changeByRange(a=>{var h;let{head:c}=a,f=le(o).resolveInner(c-1,-1),u;if(f.name=="JSXStartTag"&&(f=f.parent),!(o.doc.sliceString(c-1,c)!=i||f.name=="JSXAttributeValue"&&f.to>c)){if(i==">"&&f.name=="JSXFragmentTag")return{range:a,changes:{from:c,insert:"</>"}};if(i=="/"&&f.name=="JSXStartCloseTag"){let d=f.parent,O=d.parent;if(O&&d.from==c-2&&((u=rh(o.doc,O.firstChild,c))||((h=O.firstChild)===null||h===void 0?void 0:h.name)=="JSXFragmentTag")){let p=`${u}>`;return{range:x.cursor(c+p.length,-1),changes:{from:c,insert:p}}}}else if(i==">"){let d=Hy(f);if(d&&d.name=="JSXOpenTag"&&!/^\/?>|^<\//.test(o.doc.sliceString(c,c+2))&&(u=rh(o.doc,d,c)))return{range:a,changes:{from:c,insert:`</${u}>`}}}}return{range:a}});return l.changes.empty?!1:(n.dispatch([r,o.update(l,{userEvent:"input.complete",scrollIntoView:!0})]),!0)}),ex="#e5c07b",oh="#e06c75",tx="#56b6c2",ix="#ffffff",Hn="#abb2bf",xo="#7d8799",nx="#61afef",sx="#98c379",lh="#d19a66",rx="#c678dd",ox="#21252b",ah="#2c313a",hh="#282c34",Qr="#353a42",lx="#3E4451",ch="#528bff",ax=$.theme({"&":{color:Hn,backgroundColor:hh},".cm-content":{caretColor:ch},".cm-cursor, .cm-dropCursor":{borderLeftColor:ch},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:lx},".cm-panels":{backgroundColor:ox,color:Hn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:hh,color:xo,border:"none"},".cm-activeLineGutter":{backgroundColor:ah},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Qr},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Qr,borderBottomColor:Qr},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:ah,color:Hn}}},{dark:!0}),hx=fn.define([{tag:m.keyword,color:rx},{tag:[m.name,m.deleted,m.character,m.propertyName,m.macroName],color:oh},{tag:[m.function(m.variableName),m.labelName],color:nx},{tag:[m.color,m.constant(m.name),m.standard(m.name)],color:lh},{tag:[m.definition(m.name),m.separator],color:Hn},{tag:[m.typeName,m.className,m.number,m.changed,m.annotation,m.modifier,m.self,m.namespace],color:ex},{tag:[m.operator,m.operatorKeyword,m.url,m.escape,m.regexp,m.link,m.special(m.string)],color:tx},{tag:[m.meta,m.comment],color:xo},{tag:m.strong,fontWeight:"bold"},{tag:m.emphasis,fontStyle:"italic"},{tag:m.strikethrough,textDecoration:"line-through"},{tag:m.link,color:xo,textDecoration:"underline"},{tag:m.heading,fontWeight:"bold",color:oh},{tag:[m.atom,m.bool,m.special(m.variableName)],color:lh},{tag:[m.processingInstruction,m.string,m.inserted],color:sx},{tag:m.invalid,color:ix}]),cx=[ax,lf(hx)];var fx=Kt('<div class="cm-root svelte-15dfyqh"></div>');function ux(n,e){fh(e,!0);let t=fl(e,"content",15,""),i=fl(e,"typescript",3,!1),s;Wu(()=>{if(!s)return;const o=q.create({doc:t(),extensions:[ty,Fy({typescript:i()}),cx,$.theme({"&":{height:"100%",minHeight:"0",fontSize:"0.8125rem",lineHeight:"1.5"},".cm-scroller":{fontFamily:"ui-monospace, 'Cascadia Code', 'Consolas', monospace"}}),$.lineWrapping,$.updateListener.of(a=>{var h;a.docChanged&&(t(a.state.doc.toString()),(h=e.onedit)==null||h.call(e))})]}),l=new $({state:o,parent:s});return()=>l.destroy()});var r=fx();Eu(r,o=>s=o,()=>s),Ye(n,r),uh()}var dx=Kt('<button type="button" class="admin-toolbar-btn admin-toolbar-btn--primary"> </button>'),Ox=Kt('<div class="state svelte-1141x2j">缺少插件 id</div>'),px=Kt('<div class="state svelte-1141x2j">加载中…</div>'),mx=Kt('<div class="state err svelte-1141x2j"> </div>'),gx=Kt('<div class="plugin-editor-area svelte-1141x2j"><div class="editor-wrap svelte-1141x2j"><!></div></div>'),yx=Kt('<div class="feed-wrap svelte-1141x2j"><div class="feed-col svelte-1141x2j"><div class="feed-toolbar-block plugin-detail-toolbar svelte-1141x2j"><div class="admin-feed-header"><div class="admin-feed-header__left"><h2> </h2> <p class="admin-feed-header__desc plugin-path svelte-1141x2j"><!></p></div> <div class="admin-feed-header__actions"><!> <!></div></div></div> <div class="feed-body-scroll svelte-1141x2j"><!></div></div></div>');function Wx(n,e){fh(e,!1);const t=()=>Zu(Du,"$page",i),[i,s]=Cu(),r=Dt();let o=Dt(""),l=Dt(""),a=Dt(!0),h=Dt(!1),c=Dt(""),f=Dt(!1);async function u(){if(B(r)){xe(a,!0),xe(c,"");try{const Z=await hl("/api/plugins/"+encodeURIComponent(B(r)));if(!Z.ok){const re=await Z.text();let Ge=`HTTP ${Z.status}`;try{const mn=JSON.parse(re);mn.error&&(Ge=mn.error)}catch{re.trim()&&(Ge=re)}throw new Error(Ge)}const L=await Z.json();xe(o,L.filePath??""),xe(l,L.content??""),xe(f,!1)}catch(Z){xe(c,Z instanceof Error?Z.message:String(Z)),xe(o,""),xe(l,"")}finally{xe(a,!1)}}}function d(){xe(f,!0)}async function O(){if(!(!B(r)||B(h))){xe(h,!0);try{const Z=await hl("/api/plugins/"+encodeURIComponent(B(r)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:B(l)})});if(!Z.ok){const L=await Z.text();let re=`HTTP ${Z.status}`;try{const Ge=JSON.parse(L);Ge.error&&(re=Ge.error)}catch{L.trim()&&(re=L)}throw new Error(re)}xe(f,!1),cl("已保存并重新加载插件","success")}catch(Z){cl(Z instanceof Error?Z.message:String(Z),"error")}finally{xe(h,!1)}}}al(()=>t(),()=>{xe(r,t().params.id?decodeURIComponent(t().params.id):"")}),al(()=>B(r),()=>{B(r)&&u()}),wu(),Xu();var p=yx();Ru("1141x2j",Z=>{vu(()=>{$u.title=`${B(r)?`${B(r)} · 插件`:"插件"} — ${Lu}`})});var g=Xe(p),y=Xe(g),b=Xe(y),S=Xe(b),C=Xe(S),Q=Xe(C,!0);Le(C);var k=gn(C,2),w=Xe(k);{var X=Z=>{var L=wi("缺少插件 id");Ye(Z,L)},E=Z=>{var L=wi("加载中…");Ye(Z,L)},I=Z=>{var L=wi();vi(()=>$i(L,B(c))),Ye(Z,L)},D=Z=>{var L=wi();vi(()=>$i(L,B(o))),Ye(Z,L)},M=Z=>{var L=wi("—");Ye(Z,L)};yn(w,Z=>{B(r)?B(a)?Z(E,1):B(c)?Z(I,2):B(o)?Z(D,3):Z(M,-1):Z(X)})}Le(k),Le(S);var V=gn(S,2),z=Xe(V);{var j=Z=>{_u(Z,{})};yn(z,Z=>{B(r)&&Z(j)})}var ce=gn(z,2);{var ye=Z=>{var L=dx(),re=Xe(L,!0);Le(L),vi(()=>{L.disabled=B(h)||!B(f),$i(re,B(h)?"保存中…":"保存")}),Au("click",L,O),Ye(Z,L)};yn(ce,Z=>{B(r)&&!B(a)&&!B(c)&&Z(ye)})}Le(V),Le(b),Le(y);var Re=gn(y,2),se=Xe(Re);{var Qe=Z=>{var L=Ox();Ye(Z,L)},Ne=Z=>{var L=px();Ye(Z,L)},ke=Z=>{var L=mx(),re=Xe(L,!0);Le(L),vi(()=>$i(re,B(c))),Ye(Z,L)},ze=Z=>{var L=gx(),re=Xe(L),Ge=Xe(re);Mu(Ge,()=>B(r),mn=>{{let Qu=Pu(()=>(B(o),Tu(()=>B(o).endsWith(".ts"))));ux(mn,{get typescript(){return B(Qu)},onedit:d,get content(){return B(l)},set content(ku){xe(l,ku)},$$legacy:!0})}}),Le(re),Le(L),Ye(Z,L)};yn(se,Z=>{B(r)?B(a)?Z(Ne,1):B(c)?Z(ke,2):Z(ze,-1):Z(Qe)})}Le(Re),Le(g),Le(p),vi(()=>$i(Q,B(r)||"插件")),Ye(n,p),uh(),s()}export{Wx as component};
@@ -0,0 +1 @@
1
+ import{a,f as p}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as m}from"../chunks/DptdhtA1.js";import{at as e,au as s,X as i,$ as f}from"../chunks/BsQ08Wq_.js";import{h as n}from"../chunks/DO5OXNYS.js";import{i as c}from"../chunks/Nd0ktDhd.js";import{g as d}from"../chunks/BKm6QCwp.js";var h=p('<p class="redirect-msg svelte-1b0rhdm">正在打开添加插件…</p>');function A(o,r){e(r,!1),m(()=>{d("/plugins?openAdd=1",{replaceState:!0})}),c();var t=h();n("1b0rhdm",l=>{i(()=>{f.title="插件"})}),a(o,t),s()}export{A as component};
@@ -0,0 +1 @@
1
+ import{c as m,a as f}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{f as n}from"../chunks/BsQ08Wq_.js";import{s as p}from"../chunks/Cc7aBSsN.js";function d(t,a){var o=m(),r=n(o);p(r,a,"default",{}),f(t,o)}export{d as component};
@@ -0,0 +1 @@
1
+ import{a as t,f as r}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{d as m,$ as s}from"../chunks/BsQ08Wq_.js";import{h as p}from"../chunks/DO5OXNYS.js";import{S as n}from"../chunks/BT6b4LcZ.js";import{P as f}from"../chunks/WW6La7Nt.js";var i=r('<meta name="description" content="Subscribed sources: labels, counts, pull and manage feeds."/>');function S(e){p("1uha8ag",o=>{var a=i();m(()=>{s.title=`Sources — ${f}`}),t(o,a)}),n(e,{})}export{S as component};
@@ -0,0 +1,2 @@
1
+ import{a as u,f as p}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as V,a as W}from"../chunks/DptdhtA1.js";import{at as Z,au as ee,d as te,$ as ae,av as s,aw as v,k as r,ax as t,ay as se,az as $,a5 as Y,F as re,y as L,aA as z,aB as le}from"../chunks/BsQ08Wq_.js";import{s as g}from"../chunks/BK0ygNWX.js";import{i as ie}from"../chunks/rNwPv4DZ.js";import{e as y,i as D}from"../chunks/B553hBXT.js";import{h as ne}from"../chunks/DO5OXNYS.js";import{P as oe,s as de,a as ce,b as ve}from"../chunks/WW6La7Nt.js";import{i as fe}from"../chunks/Nd0ktDhd.js";var ue=p("<span></span>"),pe=p('<div class="scheduler-row svelte-1jef3w8"><div class="scheduler-left svelte-1jef3w8"><span class="scheduler-name svelte-1jef3w8"> </span> <span class="scheduler-meta svelte-1jef3w8"> </span></div> <div class="scheduler-slots svelte-1jef3w8"></div></div>'),he=p('<section class="scheduler-section svelte-1jef3w8"><h3 class="section-title svelte-1jef3w8">调度任务</h3> <div class="scheduler-card svelte-1jef3w8"></div></section>'),me=p('<a class="card svelte-1jef3w8"><div class="card-main svelte-1jef3w8"><span class="card-label svelte-1jef3w8"> </span> <span class="card-desc svelte-1jef3w8"> </span></div> <span class="card-arrow svelte-1jef3w8">›</span></a>'),_e=p('<section class="links-section svelte-1jef3w8"><h3 class="section-title svelte-1jef3w8"> </h3> <div class="links svelte-1jef3w8"></div></section>'),we=p('<div class="feed-wrap svelte-1jef3w8"><div class="feed-col svelte-1jef3w8"><div class="settings-toolbar-block svelte-1jef3w8"><div class="admin-feed-header settings-header svelte-1jef3w8"><div class="admin-feed-header__left"><h2>设置</h2> <p class="admin-feed-header__desc">管理入口与调试工具</p></div></div></div> <div class="settings-body-scroll svelte-1jef3w8"><div class="body svelte-1jef3w8"><!> <!></div></div></div></div>');function Pe(U,q){Z(q,!1);function B(l){if(l===void 0)return"";if(l===0)return"· 正在执行";if(l===-1)return"· 无定时任务";const e=new Date(l),o=Date.now(),i=l-o;if(i<=0)return"· 即将执行";if(i<6e4)return`· 约 ${Math.round(i/1e3)} 秒后`;if(i<36e5)return`· 约 ${Math.round(i/6e4)} 分钟后`;const c=e.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),n=new Date(o),h=e.getDate()===n.getDate()&&e.getMonth()===n.getMonth()&&e.getFullYear()===n.getFullYear(),a=new Date(n);a.setDate(a.getDate()+1);const d=e.getDate()===a.getDate()&&e.getMonth()===a.getMonth()&&e.getFullYear()===a.getFullYear();return h?`· 下次 ${c}`:d?`· 下次 明天 ${c}`:`· 下次 ${e.toLocaleDateString("zh-CN",{month:"numeric",day:"numeric"})} ${c}`}const E=[{title:"管理",links:[{href:"/admin/tags",label:"标签",desc:"系统标签库,新入库条目由 LLM 自动匹配打标签"},{href:"/admin/pipeline",label:"Pipeline",desc:"入库前处理(打标签、翻译),支持顺序与开关"}]},{title:"集成",links:[{href:"/admin/llm",label:"LLM",desc:"OpenAI 兼容 API(解析、Pipeline、标签与翻译);可替代 .env 中的 OPENAI_*"},{href:"/admin/proxy",label:"代理",desc:"维护代理列表,并选择全局默认代理;信源可从列表中单独选择"},{href:"/admin/deliver",label:"投递",desc:"配置下游 URL 与可选 Bearer 令牌;非空 URL 时在写库与 Pipeline 后额外 POST 条目"}]},{title:"调试",links:[{href:"/admin/parse",label:"Parse",desc:"从列表页解析条目,返回 JSON"}]}];let j=re({}),M=null;async function O(){try{const e=await(await ce("/api/scheduler/stats")).text();Y(j,e.trim()?JSON.parse(e):{})}catch{Y(j,{})}}V(()=>{O(),M=setInterval(O,2e3)}),W(()=>{M&&clearInterval(M)});const J=5;fe();var x=we();ne("1jef3w8",l=>{te(()=>{ae.title=`设置 - ${oe}`})});var P=s(x),k=v(s(P),2),N=s(k),A=s(N);{var R=l=>{var e=he(),o=v(s(e),2);y(o,5,()=>Object.entries(r(j)),D,(i,c)=>{var n=z(()=>le(r(c),2));let h=()=>r(n)[0],a=()=>r(n)[1];const d=L(()=>a().running),b=L(()=>a().completedCount??0),m=L(()=>Math.min(a().concurrency,J));var _=pe(),f=s(_),w=s(f),H=s(w,!0);t(w);var C=v(w,2),K=s(C);t(C),t(f);var F=v(f,2);y(F,5,()=>Array(r(m)),D,(S,ge,Q)=>{var I=ue();let T;$(()=>T=ve(I,1,"slot svelte-1jef3w8",null,T,{filled:Q<r(d)})),u(S,I)}),t(F),t(_),$(S=>{g(H,h()),g(K,`执行中 ${r(d)??""}/${a().concurrency??""} · 排队 ${a().queued??""} · 定时 ${a().scheduledCount??""} · 已完成 ${r(b)??""}
2
+ ${S??""}`)},[()=>B(a().nextRunTime)]),u(i,_)}),t(o),t(e),u(l,e)},X=z(()=>Object.keys(r(j)).length>0);ie(A,l=>{r(X)&&l(R)})}var G=v(A,2);y(G,1,()=>E,D,(l,e)=>{var o=_e(),i=s(o),c=s(i,!0);t(i);var n=v(i,2);y(n,5,()=>r(e).links,D,(h,a)=>{var d=me(),b=s(d),m=s(b),_=s(m,!0);t(m);var f=v(m,2),w=s(f,!0);t(f),t(b),se(2),t(d),$(()=>{de(d,"href",r(a).href),g(_,r(a).label),g(w,r(a).desc)}),u(h,d)}),t(n),t(o),$(()=>g(c,r(e).title)),u(l,o)}),t(N),t(k),t(P),t(x),u(U,x),ee()}export{Pe as component};
@@ -0,0 +1,2 @@
1
+ import{a as p,f as d}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as Y}from"../chunks/DptdhtA1.js";import{at as Z,az as ee,au as te,d as se,k as s,F as h,av as o,aw as c,$ as ae,ax as r,ay as P,a5 as a,f as J}from"../chunks/BsQ08Wq_.js";import{e as N,s as x}from"../chunks/BK0ygNWX.js";import{i as R}from"../chunks/rNwPv4DZ.js";import{h as oe}from"../chunks/DO5OXNYS.js";import{P as re,c as S,r as z}from"../chunks/WW6La7Nt.js";import{b as A}from"../chunks/BnqaikL8.js";import{i as ie}from"../chunks/Nd0ktDhd.js";import{B as ne}from"../chunks/Dg_D3pjF.js";import{s as f}from"../chunks/4TuV_psf.js";var ce=d('<p class="hint svelte-bhaf7m">加载中…</p>'),le=d('<input type="url" class="url-input svelte-bhaf7m" placeholder="https://agidaily.cc/api/gateway"/> <p class="hint svelte-bhaf7m">保存后生效;测试仅向 <code>…/test</code> 发一条合并的连通性请求(示例 items + 当前 sources),不写本地库。</p>',1),fe=d('<p class="hint svelte-bhaf7m">加载中…</p>'),me=d('<input type="password" class="url-input svelte-bhaf7m" placeholder="与下游 token.txt 内容一致,留空则不发送 Authorization" autocomplete="off"/> <p class="hint svelte-bhaf7m">非空时出站请求携带 Bearer。清空并保存可从配置中移除 token 字段。</p>',1),ve=d(`<div class="feed-wrap svelte-bhaf7m"><div class="feed-col svelte-bhaf7m"><div class="body svelte-bhaf7m"><!> <p class="intro svelte-bhaf7m">填写<strong>Gateway 基址</strong>(到 <code class="svelte-bhaf7m">/api/gateway</code> 为止,不要带 <code class="svelte-bhaf7m">/items</code>)。非空时:入库与 Pipeline
2
+ 完成后会 <code class="svelte-bhaf7m"> </code>(体为 <code class="svelte-bhaf7m">sourceRef</code> + <code class="svelte-bhaf7m">items</code>);<code class="svelte-bhaf7m">sources.json</code> 变更后会 <code class="svelte-bhaf7m">POST …/sources</code>(正文与本地信源文件一致)。下游按固定路径接收即可。</p> <section class="form-section svelte-bhaf7m"><h3 class="section-title svelte-bhaf7m">Gateway 基址</h3> <!></section> <section class="form-section svelte-bhaf7m"><h3 class="section-title svelte-bhaf7m">Gateway 令牌(可选)</h3> <!></section> <section class="form-section svelte-bhaf7m"><div class="btn-row svelte-bhaf7m"><button type="button" class="btn btn-primary svelte-bhaf7m"> </button> <button type="button" class="btn btn-secondary svelte-bhaf7m"> </button></div></section></div></div></div>`);function xe(F,M){Z(M,!1);let i=h(""),n=h(""),l=h(!0),b=h(!1),u=h(!1);async function U(){a(l,!0);try{const e=await S("/api/deliver");a(i,(e==null?void 0:e.gateway)??""),a(n,(e==null?void 0:e.token)??"")}catch{a(i,""),a(n,"")}finally{a(l,!1)}}async function $(){a(b,!0);try{const e=await S("/api/deliver",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({gateway:s(i).trim(),token:s(n).trim()})});if(!(e!=null&&e.ok))throw new Error((e==null?void 0:e.message)??"保存失败");a(i,(e==null?void 0:e.gateway)??s(i)),a(n,(e==null?void 0:e.token)??s(n)),f("已保存","success")}catch(e){f("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{a(b,!1)}}async function D(){const e=s(i).trim();if(!e){f("请先填写 Gateway 基址","error");return}a(u,!0);try{const t=await S("/api/deliver/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gateway:e,token:s(n).trim()})});t!=null&&t.ok?f("Gateway 测试投递成功(POST …/test)","success"):f("测试失败: "+((t==null?void 0:t.message)??"未知错误"),"error")}catch(t){f("测试失败: "+(t instanceof Error?t.message:String(t)),"error")}finally{a(u,!1)}}Y(U),ie();var _=ve();oe("bhaf7m",e=>{se(()=>{ae.title=`投递 - ${re}`})});var O=o(_),G=o(O),E=o(G);ne(E,{});var g=c(E,2),j=c(o(g),7),q=o(j);r(j),P(9),r(g);var w=c(g,2),H=c(o(w),2);{var I=e=>{var t=ce();p(e,t)},K=e=>{var t=le(),v=J(t);z(v),P(2),A(v,()=>s(i),T=>a(i,T)),p(e,t)};R(H,e=>{s(l)?e(I):e(K,-1)})}r(w);var k=c(w,2),L=c(o(k),2);{var Q=e=>{var t=fe();p(e,t)},V=e=>{var t=me(),v=J(t);z(v),P(2),A(v,()=>s(n),T=>a(n,T)),p(e,t)};R(L,e=>{s(l)?e(Q):e(V,-1)})}r(k);var B=c(k,2),C=o(B),m=o(C),W=o(m,!0);r(m);var y=c(m,2),X=o(y,!0);r(y),r(C),r(B),r(G),r(O),r(_),ee(e=>{x(q,`POST ${(s(i)||"…")??""}/items`),m.disabled=s(b)||s(l),x(W,s(b)?"保存中…":"保存"),y.disabled=e,x(X,s(u)?"测试中…":"测试 Gateway")},[()=>s(u)||s(l)||!s(i).trim()]),N("click",m,$),N("click",y,D),p(F,_),te()}export{xe as component};
@@ -0,0 +1 @@
1
+ import{a as v,f as p,t as ve}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as ce}from"../chunks/DptdhtA1.js";import{at as pe,az as R,au as me,d as fe,av as i,aw as n,$ as de,k as o,ax as l,a5 as s,F as c,f as ue,ay as j}from"../chunks/BsQ08Wq_.js";import{e as $,s as z}from"../chunks/BK0ygNWX.js";import{i as b}from"../chunks/rNwPv4DZ.js";import{h as ge}from"../chunks/DO5OXNYS.js";import{P as _e,c as U,r as E,s as O}from"../chunks/WW6La7Nt.js";import{b as C}from"../chunks/BnqaikL8.js";import{i as ye}from"../chunks/Nd0ktDhd.js";import{B as he}from"../chunks/Dg_D3pjF.js";import{s as w}from"../chunks/4TuV_psf.js";var be=p('<p class="hint svelte-1a0dvmg">加载中…</p>'),we=p('<input type="url" class="text-input svelte-1a0dvmg" placeholder="https://api.openai.com/v1" autocomplete="off"/>'),xe=p('<input type="text" class="text-input svelte-1a0dvmg" placeholder="gpt-4o-mini" autocomplete="off"/>'),Ke=p('<p class="hint svelte-1a0dvmg">加载中…</p>'),Pe=p("当前<strong>可用</strong>(文件或环境变量)。",1),ke=p("未检测到 Key,请填写或设置 <code>OPENAI_API_KEY</code>。",1),Ae=p('<input type="password" class="text-input svelte-1a0dvmg" autocomplete="new-password"/> <p class="hint svelte-1a0dvmg"><!> <!></p>',1),Ie=p('<div class="feed-wrap svelte-1a0dvmg"><div class="feed-col svelte-1a0dvmg"><div class="body svelte-1a0dvmg"><!> <p class="intro svelte-1a0dvmg">与 OpenAI 兼容的 Chat Completions API,用于列表解析、正文提取、Pipeline 打标签与翻译等。</p> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">API Base URL</h3> <!></section> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">模型</h3> <!></section> <section class="form-section svelte-1a0dvmg"><h3 class="section-title svelte-1a0dvmg">API Key</h3> <!></section> <section class="form-section svelte-1a0dvmg"><div class="btn-row svelte-1a0dvmg"><button type="button" class="btn btn-primary svelte-1a0dvmg"> </button> <button type="button" class="btn btn-secondary svelte-1a0dvmg"> </button></div></section></div></div></div>');function Re(D,Y){pe(Y,!1);let m=c(""),f=c(""),u=c(""),g=c(!1),_=c(!1),d=c(!0),x=c(!1),K=c(!1);async function q(){s(d,!0);try{const e=await U("/api/llm");s(m,(e==null?void 0:e.baseUrl)??""),s(f,(e==null?void 0:e.model)??""),s(g,!!(e!=null&&e.hasApiKey)),s(_,!!(e!=null&&e.apiKeyInFile)),s(u,"")}catch{s(m,""),s(f,""),s(g,!1),s(_,!1)}finally{s(d,!1)}}async function G(){s(x,!0);try{const e={baseUrl:o(m).trim(),model:o(f).trim()},a=o(u).trim();a&&(e.apiKey=a);const t=await U("/api/llm",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!(t!=null&&t.ok))throw new Error((t==null?void 0:t.message)??"保存失败");s(m,(t==null?void 0:t.baseUrl)??o(m)),s(f,(t==null?void 0:t.model)??o(f)),s(g,!!(t!=null&&t.hasApiKey)),s(_,!!(t!=null&&t.apiKeyInFile)),s(u,""),w("已保存","success")}catch(e){w("保存失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{s(x,!1)}}async function H(){s(K,!0);try{const e=await U("/api/llm/test",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(e!=null&&e.ok){const a=typeof e.reply=="string"?e.reply.trim():"";w(a?`连接成功:${a.slice(0,120)}${a.length>120?"…":""}`:"连接成功","success")}else w("测试失败: "+((e==null?void 0:e.message)??"未知错误"),"error")}catch(e){w("测试失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{s(K,!1)}}ce(q),ye();var k=Ie();ge("1a0dvmg",e=>{fe(()=>{de.title=`LLM - ${_e}`})});var F=i(k),S=i(F),N=i(S);he(N,{});var A=n(N,4),Q=n(i(A),2);{var V=e=>{var a=be();v(e,a)},W=e=>{var a=we();E(a),C(a,()=>o(m),t=>s(m,t)),v(e,a)};b(Q,e=>{o(d)?e(V):e(W,-1)})}l(A);var I=n(A,2),X=n(i(I),2);{var Z=e=>{var a=xe();E(a),O(a,"spellcheck",!1),C(a,()=>o(f),t=>s(f,t)),v(e,a)};b(X,e=>{o(d)||e(Z)})}l(I);var T=n(I,2),ee=n(i(T),2);{var te=e=>{var a=Ke();v(e,a)},se=e=>{var a=Ae(),t=ue(a);E(t),O(t,"spellcheck",!1);var L=n(t,2),M=i(L);{var re=r=>{var h=Pe();j(2),v(r,h)},ie=r=>{var h=ke();j(2),v(r,h)};b(M,r=>{o(g)?r(re):r(ie,-1)})}var le=n(M,2);{var ne=r=>{var h=ve("已写入配置文件。");v(r,h)};b(le,r=>{o(_)&&r(ne)})}l(L),R(()=>O(t,"placeholder",o(_)?"已保存在配置中,留空表示不修改":"sk-...")),C(t,()=>o(u),r=>s(u,r)),v(e,a)};b(ee,e=>{o(d)?e(te):e(se,-1)})}l(T);var B=n(T,2),J=i(B),y=i(J),ae=i(y,!0);l(y);var P=n(y,2),oe=i(P,!0);l(P),l(J),l(B),l(S),l(F),l(k),R(()=>{y.disabled=o(x)||o(d),z(ae,o(x)?"保存中…":"保存"),P.disabled=o(K)||o(d)||!o(g),z(oe,o(K)?"测试中…":"测试连接")}),$("click",y,G),$("click",P,H),v(D,k),me()}export{Re as component};
@@ -0,0 +1 @@
1
+ import{a as e,f as m}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as i}from"../chunks/DptdhtA1.js";import{at as f,au as n}from"../chunks/BsQ08Wq_.js";import{s as l,a as u}from"../chunks/BI_ale1m.js";import{i as c}from"../chunks/Nd0ktDhd.js";import{g}from"../chunks/BKm6QCwp.js";import{p as $}from"../chunks/GeNMTUn1.js";var v=m('<p class="muted svelte-1w6l7vk">正在跳转…</p>');function b(o,t){f(t,!1);const a=()=>u($,"$page",r),[r,s]=l();i(()=>{g("/logs"+a().url.search,{replaceState:!0})}),c();var p=v();e(o,p),n(),s()}export{b as component};
@@ -0,0 +1 @@
1
+ import{a as d,f as _,c as de,t as pe}from"../chunks/DIeahUKq.js";import"../chunks/CEWi_rGa.js";import{o as ue}from"../chunks/DptdhtA1.js";import{at as fe,aC as q,aD as me,az as g,k as e,au as _e,d as xe,av as s,a5 as a,F as n,$ as he,ay as K,ax as l,aw as v,f as A,u as C}from"../chunks/BsQ08Wq_.js";import{e as ye,s as b}from"../chunks/BK0ygNWX.js";import{i as D}from"../chunks/rNwPv4DZ.js";import{e as $e}from"../chunks/B553hBXT.js";import{h as ge}from"../chunks/DO5OXNYS.js";import{P as be,r as Pe,c as we}from"../chunks/WW6La7Nt.js";import{b as Se}from"../chunks/BnqaikL8.js";import{p as Oe}from"../chunks/Bfc47y5P.js";import{i as Ce}from"../chunks/Nd0ktDhd.js";import{B as Te}from"../chunks/Dg_D3pjF.js";import{S as ke,a as Ie,C as Ne,b as Je,c as Le,d as Re}from"../chunks/B8StT3Do.js";import{P as Ue}from"../chunks/pd_p3yYy.js";var qe=_("<span> </span> <!>",1),Ae=_("<!> <!>",1),De=_('<p class="field-hint svelte-1x680s0">暂无代理列表,可在后台「代理」中添加。</p>'),ze=_('<div class="result-error svelte-1x680s0" role="alert"> </div>'),Be=_('<div class="result-wrap svelte-1x680s0"><p class="result-label svelte-1x680s0">解析结果(与下方接口一致)</p> <pre class="result-json svelte-1x680s0"> </pre></div>'),Ee=_('<div class="feed-wrap svelte-1x680s0"><div class="feed-col svelte-1x680s0"><div class="feed-header svelte-1x680s0"><!> <h2 class="svelte-1x680s0">Parse</h2> <p class="page-desc svelte-1x680s0">从列表页解析条目结构,返回 JSON,用于调试插件 Parser 规则</p></div> <div class="body svelte-1x680s0"><form><div class="url-row svelte-1x680s0"><input type="url" placeholder="输入列表页地址…" required="" autocomplete="url" class="svelte-1x680s0"/></div> <div class="proxy-row svelte-1x680s0"><!> <!></div> <div class="action-row svelte-1x680s0"><button type="submit" class="svelte-1x680s0"> </button></div></form> <!> <!></div></div></div>');function st(Q,X){fe(X,!1);const T=n(),x=n(),z=n();let f=n(""),o=n(""),c=n([]),P=n(!1),h=n(""),y=n("");function Y(t){a(o,t)}async function Z(){try{const t=await we("/api/proxy");a(c,Array.isArray(t.proxyList)?t.proxyList.filter(r=>typeof r=="string"&&r.trim().length>0):[])}catch{a(c,[])}}async function ee(){if(e(f).trim()){a(P,!0),a(h,""),a(y,"");try{const t=e(f).startsWith("http")?e(f):"https://"+e(f),r=new URLSearchParams,i=e(o).trim();i&&r.set("proxy",i);const p=r.toString(),$=await fetch("/admin/parse/"+encodeURIComponent(t)+(p?"?"+p:""),{credentials:"include"}),u=await $.text();if(!$.ok){a(h,u||`HTTP ${$.status}`);return}try{a(y,JSON.stringify(JSON.parse(u),null,2))}catch{a(y,u)}}catch(t){a(h,t instanceof Error?t.message:String(t))}finally{a(P,!1)}}}ue(Z),q(()=>(e(o),e(c)),()=>{a(T,e(o).trim()&&!e(c).includes(e(o).trim()))}),q(()=>(e(T),e(o),e(c)),()=>{a(x,[{value:"",label:"使用默认代理"},...e(T)?[{value:e(o),label:`${e(o)}(当前配置,未在代理列表中)`}]:[],...e(c).map(t=>({value:t,label:t}))])}),q(()=>(e(x),e(o)),()=>{var t;a(z,((t=e(x).find(r=>r.value===e(o)))==null?void 0:t.label)??"使用默认代理")}),me(),Ce();var k=Ee();ge("1x680s0",t=>{xe(()=>{he.title=`Parse - ${be}`})});var B=s(k),I=s(B),te=s(I);Te(te,{}),K(4),l(I);var E=v(I,2),w=s(E),N=s(w),F=s(N);Pe(F),l(N);var J=v(N,2),M=s(J);ke(M,{type:"single",get value(){return e(o)},onValueChange:Y,get items(){return e(x)},children:(t,r)=>{var i=Ae(),p=A(i);Ie(p,{class:"proxy-select-trigger","aria-label":"代理",children:(u,ne)=>{var S=qe(),O=A(S),R=s(O,!0);l(O);var V=v(O,2);Ne(V,{size:14,"aria-hidden":"true"}),g(()=>b(R,e(z))),d(u,S)},$$slots:{default:!0}});var $=v(p,2);Ue($,{children:(u,ne)=>{Je(u,{class:"proxy-select-content",sideOffset:4,children:(S,O)=>{Le(S,{class:"proxy-select-viewport",children:(R,V)=>{var W=de(),ve=A(W);$e(ve,1,()=>e(x),U=>U.value,(U,m)=>{Re(U,{class:"proxy-select-item",get value(){return e(m),C(()=>e(m).value)},get label(){return e(m),C(()=>e(m).label)},children:(ce,Fe)=>{K();var G=pe();g(()=>b(G,(e(m),C(()=>e(m).label)))),d(ce,G)},$$slots:{default:!0}})}),d(R,W)},$$slots:{default:!0}})},$$slots:{default:!0}})},$$slots:{default:!0}}),d(t,i)},$$slots:{default:!0}});var re=v(M,2);{var ae=t=>{var r=De();d(t,r)};D(re,t=>{e(c),C(()=>e(c).length===0)&&t(ae)})}l(J);var j=v(J,2),L=s(j),se=s(L,!0);l(L),l(j),l(w);var H=v(w,2);{var le=t=>{var r=ze(),i=s(r,!0);l(r),g(()=>b(i,e(h))),d(t,r)};D(H,t=>{e(h)&&t(le)})}var oe=v(H,2);{var ie=t=>{var r=Be(),i=v(s(r),2),p=s(i,!0);l(i),l(r),g(()=>b(p,e(y))),d(t,r)};D(oe,t=>{e(y)&&t(ie)})}l(E),l(B),l(k),g(()=>{L.disabled=e(P),b(se,e(P)?"解析中…":"解析")}),Se(F,()=>e(f),t=>a(f,t)),ye("submit",w,Oe(ee)),d(Q,k),_e()}export{st as component};
@@ -1 +1 @@
1
- {"version":"1780571209371"}
1
+ {"version":"1780905173365"}
package/bin/rssany.js CHANGED
@@ -3,14 +3,15 @@ import { spawn } from "node:child_process";
3
3
  import { closeSync, openSync } from "node:fs";
4
4
  import { access, mkdir, readFile, rm, writeFile } from "node:fs/promises";
5
5
  import http from "node:http";
6
- import { homedir, networkInterfaces } from "node:os";
6
+ import { networkInterfaces } from "node:os";
7
7
  import { dirname, join } from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
+ import { resolveDefaultUserDir } from "../scripts/user-dir.mjs";
9
10
 
10
11
  const command = process.argv[2];
11
12
  const binDir = dirname(fileURLToPath(import.meta.url));
12
13
  const packageRoot = join(binDir, "..");
13
- const userDir = process.env.RSSANY_USER_DIR?.trim() || join(homedir(), ".rssany");
14
+ const userDir = resolveDefaultUserDir(packageRoot);
14
15
  const pidPath = join(userDir, "rssany.pid");
15
16
  const logPath = join(userDir, "rssany.log");
16
17
  const port = Number(process.env.PORT) || 18473;
@@ -58,11 +59,12 @@ function printAddress(prefix = "RssAny 已启动") {
58
59
  }
59
60
 
60
61
  function printUsage() {
61
- console.log("用法: rssany <start|stop|reset|crawl>");
62
+ console.log("用法: rssany <start|stop|reset|crawl|update>");
62
63
  console.log(" rssany start 后台启动服务并输出访问地址");
63
64
  console.log(" rssany stop 关闭后台服务并输出执行状态");
64
65
  console.log(" rssany reset 重置本地数据");
65
66
  console.log(" rssany crawl <ref> 按内部抓取链路拉取指定信源");
67
+ console.log(" rssany update 更新到最新 npm 包;若服务正在运行则自动停止并重启");
66
68
  }
67
69
 
68
70
  async function canConnectToServer() {
@@ -212,6 +214,54 @@ async function crawl() {
212
214
  }
213
215
  }
214
216
 
217
+ async function runCommand(commandName, args) {
218
+ return new Promise((resolve, reject) => {
219
+ const child = spawn(commandName, args, {
220
+ cwd: process.cwd(),
221
+ env: process.env,
222
+ shell: process.platform === "win32",
223
+ stdio: "inherit",
224
+ });
225
+ child.on("error", reject);
226
+ child.on("close", (code) => {
227
+ if (code === 0) {
228
+ resolve();
229
+ return;
230
+ }
231
+ reject(new Error(commandName + " " + args.join(" ") + " 失败,退出码 " + (code ?? "unknown")));
232
+ });
233
+ });
234
+ }
235
+
236
+ async function update() {
237
+ await mkdir(userDir, { recursive: true });
238
+ const pid = await readPid();
239
+ const shouldRestart = pid != null && isProcessRunning(pid);
240
+
241
+ if (shouldRestart) {
242
+ console.log("RssAny 正在运行 (pid " + pid + "),先停止服务...");
243
+ await stop();
244
+ } else if (pid != null) {
245
+ await rm(pidPath, { force: true });
246
+ }
247
+
248
+ const npmCommand = process.env.RSSANY_UPDATE_NPM_CMD?.trim() || (process.platform === "win32" ? "npm.cmd" : "npm");
249
+ console.log("正在更新 RssAny: npm install -g rssany@latest");
250
+ try {
251
+ await runCommand(npmCommand, ["install", "-g", "rssany@latest"]);
252
+ } catch (err) {
253
+ console.error(err instanceof Error ? err.message : String(err));
254
+ process.exitCode = 1;
255
+ return;
256
+ }
257
+
258
+ console.log("RssAny 更新完成。");
259
+ if (shouldRestart) {
260
+ console.log("重新启动 RssAny...");
261
+ await start();
262
+ }
263
+ }
264
+
215
265
  if (command === "reset") {
216
266
  await import(new URL("../scripts/reset.mjs", import.meta.url));
217
267
  } else if (command === "start") {
@@ -220,6 +270,8 @@ if (command === "reset") {
220
270
  await stop();
221
271
  } else if (command === "crawl") {
222
272
  await crawl();
273
+ } else if (command === "update") {
274
+ await update();
223
275
  } else {
224
276
  printUsage();
225
277
  if (command) process.exitCode = 1;