rssany 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -22
- package/app/plugins/builtin/agi-eval-evaluation.rssany.js +6 -7
- package/app/plugins/builtin/amii-research-talent.rssany.js +6 -7
- package/app/plugins/builtin/anthropic-research.rssany.js +6 -8
- package/app/plugins/builtin/appen-resources.rssany.js +6 -7
- package/app/plugins/builtin/baai-wudao-paper-article.rssany.js +9 -10
- package/app/plugins/builtin/baaidata-csdn.rssany.js +6 -7
- package/app/plugins/builtin/baidu-research.rssany.js +5 -8
- package/app/plugins/builtin/brightdata-blog.rssany.js +6 -11
- package/app/plugins/builtin/bytedance-seed-research.rssany.js +5 -7
- package/app/plugins/builtin/email.rssany.js +9 -9
- package/app/plugins/builtin/five-radar.rssany.js +9 -11
- package/app/plugins/builtin/flageval-news.rssany.js +5 -7
- package/app/plugins/builtin/google-deepmind-research.rssany.js +6 -8
- package/app/plugins/builtin/google-research-datasets.rssany.js +6 -8
- package/app/plugins/builtin/google-research.rssany.js +6 -8
- package/app/plugins/builtin/hacker-news-newest.rssany.js +7 -9
- package/app/plugins/builtin/harvard-dataverse.rssany.js +6 -8
- package/app/plugins/builtin/huaweicloud-bbs-blogs.rssany.js +7 -9
- package/app/plugins/builtin/lingowhale.rssany.js +7 -9
- package/app/plugins/builtin/meituan-tech.rssany.js +7 -10
- package/app/plugins/builtin/meta-ai-publications.rssany.js +6 -11
- package/app/plugins/builtin/mila-quebec.rssany.js +6 -8
- package/app/plugins/builtin/mit-csail-research.rssany.js +7 -9
- package/app/plugins/builtin/moonshot.rssany.js +6 -8
- package/app/plugins/builtin/opendatalab-news.rssany.js +6 -7
- package/app/plugins/builtin/opendatalab.rssany.js +5 -6
- package/app/plugins/builtin/opendrivelab-autonomous-driving.rssany.js +6 -7
- package/app/plugins/builtin/opendrivelab-embodiedai.rssany.js +7 -8
- package/app/plugins/builtin/opendrivelab-publications.rssany.js +6 -8
- package/app/plugins/builtin/opendrivelab.rssany.js +7 -8
- package/app/plugins/builtin/paperswithcode.rssany.js +6 -8
- package/app/plugins/builtin/pjlab-adg-publications.rssany.js +7 -9
- package/app/plugins/builtin/rss.rssany.js +11 -12
- package/app/plugins/builtin/selectdataset.rssany.js +6 -8
- package/app/plugins/builtin/sensetime-tech-achievements.rssany.js +7 -8
- package/app/plugins/builtin/supervisely-blog.rssany.js +6 -8
- package/app/plugins/builtin/theinformation-briefings.rssany.js +7 -13
- package/app/plugins/builtin/uci-ml-repository.rssany.js +6 -7
- package/app/plugins/builtin/venturebeat.rssany.js +7 -9
- package/app/plugins/builtin/worldlabs.rssany.js +6 -8
- package/app/plugins/builtin/x.rssany.js +7 -9
- package/app/plugins/builtin/xiaohongshu.rssany.js +119 -56
- package/app/plugins/builtin/zhipu-research.rssany.js +5 -8
- package/app/plugins/site.rssany.js +25 -26
- package/{statics → app/statics}/README.md +7 -7
- package/bin/rssany.js +226 -6
- package/dist/index.js +209 -152
- package/dist/index.js.map +1 -1
- package/package.json +16 -9
- package/scripts/dev.mjs +114 -0
- package/scripts/reset.mjs +1 -1
- package/init/config.json +0 -17
- package/init/sources.json +0 -353
- package/statics/401.html +0 -56
- package/statics/404.html +0 -12
- package/statics/image.png +0 -0
- package/webui/build/200.html +0 -49
- package/webui/build/_app/env.js +0 -1
- package/webui/build/_app/immutable/assets/0.BB88QFoe.css +0 -1
- package/webui/build/_app/immutable/assets/10.Dj8_pmut.css +0 -1
- package/webui/build/_app/immutable/assets/11.qYZMiTb0.css +0 -1
- package/webui/build/_app/immutable/assets/12.DfJcfUWl.css +0 -1
- package/webui/build/_app/immutable/assets/13.BhO9zvFi.css +0 -1
- package/webui/build/_app/immutable/assets/14.CujIhjQK.css +0 -1
- package/webui/build/_app/immutable/assets/15.nNGjXhCQ.css +0 -1
- package/webui/build/_app/immutable/assets/16.PP9XLDf7.css +0 -1
- package/webui/build/_app/immutable/assets/4.9wPHhVwv.css +0 -1
- package/webui/build/_app/immutable/assets/5.B-dPiwB7.css +0 -1
- package/webui/build/_app/immutable/assets/6.B27N7pdA.css +0 -1
- package/webui/build/_app/immutable/assets/7.CrNxmd8B.css +0 -1
- package/webui/build/_app/immutable/assets/8.Cgji2b15.css +0 -1
- package/webui/build/_app/immutable/assets/9.BsCIAvn3.css +0 -1
- package/webui/build/_app/immutable/assets/BackToParentRoute.DGk-X5ow.css +0 -1
- package/webui/build/_app/immutable/assets/SourcesList.yTBBi3_m.css +0 -1
- package/webui/build/_app/immutable/assets/homeFeedPanelStore.CSvlNcpm.css +0 -1
- package/webui/build/_app/immutable/chunks/5LVkDJzw.js +0 -1
- package/webui/build/_app/immutable/chunks/B-OsL1Ct.js +0 -1
- package/webui/build/_app/immutable/chunks/B2Q1a1-H.js +0 -2
- package/webui/build/_app/immutable/chunks/BK3WtZwv.js +0 -1
- package/webui/build/_app/immutable/chunks/BQqoDzLx.js +0 -1
- package/webui/build/_app/immutable/chunks/BUApaBEI.js +0 -1
- package/webui/build/_app/immutable/chunks/BbWUOQ_m.js +0 -1
- package/webui/build/_app/immutable/chunks/Bfc47y5P.js +0 -1
- package/webui/build/_app/immutable/chunks/Bns1MuyM.js +0 -36
- package/webui/build/_app/immutable/chunks/Bp63qm3L.js +0 -1
- package/webui/build/_app/immutable/chunks/Bu9HsS-V.js +0 -1
- package/webui/build/_app/immutable/chunks/CBY2biv-.js +0 -1
- package/webui/build/_app/immutable/chunks/CVzlFH44.js +0 -1
- package/webui/build/_app/immutable/chunks/CWNeClHp.js +0 -6
- package/webui/build/_app/immutable/chunks/Cihqbfi5.js +0 -1
- package/webui/build/_app/immutable/chunks/CmjOpds-.js +0 -1
- package/webui/build/_app/immutable/chunks/D5GvRCv7.js +0 -1
- package/webui/build/_app/immutable/chunks/DEDI7Ecm.js +0 -1
- package/webui/build/_app/immutable/chunks/DFuhmi31.js +0 -1
- package/webui/build/_app/immutable/chunks/DMWEh-Ek.js +0 -2
- package/webui/build/_app/immutable/chunks/DjNLq3TF.js +0 -1
- package/webui/build/_app/immutable/chunks/Dt2CddFe.js +0 -1
- package/webui/build/_app/immutable/chunks/Dw782Tjs.js +0 -1
- package/webui/build/_app/immutable/chunks/Xy_fhzQq.js +0 -1
- package/webui/build/_app/immutable/chunks/bvuf_jZd.js +0 -36
- package/webui/build/_app/immutable/chunks/hp4PFHFv.js +0 -1
- package/webui/build/_app/immutable/chunks/lk5LaiqA.js +0 -1
- package/webui/build/_app/immutable/chunks/mW5RwvnK.js +0 -13
- package/webui/build/_app/immutable/chunks/tB7QMF3U.js +0 -1
- package/webui/build/_app/immutable/chunks/xtNWTdbD.js +0 -1
- package/webui/build/_app/immutable/entry/app.BVkrDt5l.js +0 -2
- package/webui/build/_app/immutable/entry/start.D3Q-BMMd.js +0 -1
- package/webui/build/_app/immutable/nodes/0.I1lQdWMl.js +0 -11
- package/webui/build/_app/immutable/nodes/1.BiQQfx2j.js +0 -1
- package/webui/build/_app/immutable/nodes/10.CvfUsqsw.js +0 -1
- package/webui/build/_app/immutable/nodes/11.B4LHPNL6.js +0 -1
- package/webui/build/_app/immutable/nodes/12.DVFJuIWI.js +0 -1
- package/webui/build/_app/immutable/nodes/13.nT3SOzEB.js +0 -1
- package/webui/build/_app/immutable/nodes/14.DfaAf0f8.js +0 -1
- package/webui/build/_app/immutable/nodes/15.CMzkX9OK.js +0 -1
- package/webui/build/_app/immutable/nodes/16.zPgTQNze.js +0 -24
- package/webui/build/_app/immutable/nodes/17.BtYZF6FM.js +0 -1
- package/webui/build/_app/immutable/nodes/18.BIzqhTqv.js +0 -1
- package/webui/build/_app/immutable/nodes/2.BYWOpaxy.js +0 -1
- package/webui/build/_app/immutable/nodes/3.B8Viux9S.js +0 -1
- package/webui/build/_app/immutable/nodes/4.DTSxpKm7.js +0 -2
- package/webui/build/_app/immutable/nodes/5.B6fR3n6J.js +0 -2
- package/webui/build/_app/immutable/nodes/6.j2O5Mwjv.js +0 -1
- package/webui/build/_app/immutable/nodes/7.Bd2USIrl.js +0 -1
- package/webui/build/_app/immutable/nodes/8.Bw_d63B_.js +0 -1
- package/webui/build/_app/immutable/nodes/9.pMMi5PP6.js +0 -1
- package/webui/build/_app/version.json +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as v,f as c}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as xe}from"../chunks/Bp63qm3L.js";import{v as we,at as ke,f as Ce,az as E,i as s,au as Te,d as Le,av as n,a5 as a,z as w,aw as i,$ as Ee,ax as r,u as $e}from"../chunks/BbWUOQ_m.js";import{e as f,s as S}from"../chunks/DMWEh-Ek.js";import{i as O}from"../chunks/Dt2CddFe.js";import{e as se,i as ae}from"../chunks/BQqoDzLx.js";import{h as Me}from"../chunks/DEDI7Ecm.js";import{P as Pe,r as Se,d as Oe}from"../chunks/B2Q1a1-H.js";import{b as Fe}from"../chunks/Dw782Tjs.js";import{s as X}from"../chunks/Bfc47y5P.js";import{i as Je}from"../chunks/CVzlFH44.js";import{B as Ne}from"../chunks/CmjOpds-.js";import{b as Y}from"../chunks/CBY2biv-.js";import{s as F}from"../chunks/tB7QMF3U.js";function je(z,$){var k;var o=(k=z.$$events)==null?void 0:k[$.type],p=we(o)?o.slice():o==null?[]:[o];for(var u of p)u.call(this,$)}var ze=c('<div class="state svelte-1s5glru">加载中…</div>'),Be=c('<p class="empty-hint svelte-1s5glru">暂无标签。添加后,pipeline 会对新入库条目自动打标签。</p>'),De=c('<span class="tag-meta svelte-1s5glru"> </span>'),Ie=c('<div class="tag-badge svelte-1s5glru"><span class="tag-name svelte-1s5glru"> </span> <!> <button type="button" class="tag-remove svelte-1s5glru" title="从系统标签中删除">×</button></div>'),Re=c('<div class="tag-list svelte-1s5glru"></div>'),Ue=c('<div class="tag-badge suggested svelte-1s5glru"><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>'),qe=c('<div class="suggested-section svelte-1s5glru"><h3 class="section-title svelte-1s5glru">建议添加(文章中出现但未在系统标签库中)</h3> <div class="tag-list svelte-1s5glru"></div></div>'),Ae=c('<div class="body svelte-1s5glru"><div class="tags-section svelte-1s5glru"><h3 class="section-title svelte-1s5glru"> </h3> <!></div> <!></div>'),Xe=c('<div class="context-menu svelte-1s5glru" role="menu" tabindex="-1"><button type="button" class="context-menu-item svelte-1s5glru">从所有文章中移除该标签</button></div>'),Ye=c('<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,$){ke($,!1);let o=w([]),p=[],u=w([]),k=w(!0),_=w(!1),M=w(""),b=w(null),J=w(!1);async function re(){a(k,!0);try{const t=await Y("/api/tags");a(o,(t==null?void 0:t.tags)??[]),p=(t==null?void 0:t.stats)??[],a(u,(t==null?void 0:t.suggestedTags)??[])}catch{a(o,[]),p=[],a(u,[])}finally{a(k,!1)}}function oe(t){return p.find(e=>e.name.toLowerCase()===t.toLowerCase())}async function B(t){a(_,!0);try{const e=await Y("/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(u,(e==null?void 0:e.suggestedTags)??[]),F("已保存","success")}catch(e){F("保存失败: "+(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())){F("标签已存在","error");return}a(M,""),B([...s(o),t])}}function ne(t){s(_)||B(s(o).filter(e=>e!==t))}function ie(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 le(t){if(!s(J)){a(J,!0),a(b,null);try{const e=await Y("/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(u,(e==null?void 0:e.suggestedTags)??s(u)),F(`已从 ${(e==null?void 0:e.removedCount)??0} 篇文章中移除该标签`,"success")}catch(e){F("操作失败: "+(e instanceof Error?e.message:String(e)),"error")}finally{a(J,!1)}}}xe(()=>{re();const t=()=>D(),e=()=>D();return document.addEventListener("click",t),document.addEventListener("contextmenu",e),()=>{document.removeEventListener("click",t),document.removeEventListener("contextmenu",e)}}),Je();var K=Ye();Me("1s5glru",t=>{Le(()=>{Ee.title=`标签 - ${Pe}`})});var I=Ce(K),Q=n(I),R=n(Q),V=n(R);Ne(V,{});var W=i(V,2),Z=i(n(W),2),N=n(Z);Se(N);var ee=i(N,2);r(Z),r(W),r(R);var te=i(R,2),ve=n(te);{var ce=t=>{var e=ze();v(t,e)},ue=t=>{var e=Ae(),C=n(e),h=n(C),ge=n(h);r(h);var fe=i(h,2);{var pe=l=>{var d=Be();v(l,d)},_e=l=>{var d=Re();se(d,5,()=>s(o),ae,(j,T)=>{const m=$e(()=>oe(s(T)));var g=Ie(),y=n(g),U=n(y,!0);r(y);var L=i(y,2);{var q=x=>{var A=De(),ye=n(A);r(A),E(()=>S(ye,`${s(m).count??""} 篇 · 热度 ${s(m).hotness??""}`)),v(x,A)};O(L,x=>{s(m)&&x(q)})}var P=i(L,2);r(g),E(()=>{S(U,s(T)),P.disabled=s(_)}),f("click",P,X(()=>ne(s(T)))),f("contextmenu",g,x=>H(x,s(T))),v(j,g)}),r(d),v(l,d)};O(fe,l=>{s(o).length===0?l(pe):l(_e,-1)})}r(C);var be=i(C,2);{var he=l=>{var d=qe(),j=i(n(d),2);se(j,5,()=>s(u),ae,(T,m)=>{var g=Ue(),y=n(g),U=n(y,!0);r(y);var L=i(y,2),q=n(L);r(L);var P=i(L,2);r(g),E(()=>{S(U,s(m).name),S(q,`${s(m).count??""} 篇 · 热度 ${s(m).hotness??""}`),P.disabled=s(_)}),f("click",P,X(()=>ie(s(m).name))),f("contextmenu",g,x=>H(x,s(m).name)),v(T,g)}),r(j),r(d),v(l,d)};O(be,l=>{s(u).length>0&&l(he)})}r(e),E(()=>S(ge,`当前标签 (${s(o).length??""})`)),v(t,e)};O(ve,t=>{s(k)?t(ce):t(ue,-1)})}r(te),r(Q),r(I);var de=i(I,2);{var me=t=>{var e=Xe(),C=n(e);r(e),E(()=>{Oe(e,`left: ${s(b).x??""}px; top: ${s(b).y??""}px`),C.disabled=s(J)}),f("click",C,()=>le(s(b).tag)),f("click",e,X(function(h){je.call(this,$,h)})),f("keydown",e,h=>h.key==="Escape"&&D()),v(t,e)};O(de,t=>{s(b)&&t(me)})}E(t=>ee.disabled=t,[()=>!s(M).trim()||s(_)]),Fe(N,()=>s(M),t=>a(M,t)),f("keydown",N,t=>t.key==="Enter"&&G()),f("click",ee,G),v(z,K),Te()}export{lt as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as p,f as u}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as Rt,a as jt}from"../chunks/Bp63qm3L.js";import{at as At,az as g,i as e,au as Ht,d as Bt,av as a,a5 as r,z as c,aw as n,$ as Gt,ax as s,f as Vt}from"../chunks/BbWUOQ_m.js";import{e as m,s as f}from"../chunks/DMWEh-Ek.js";import{i as nt}from"../chunks/Dt2CddFe.js";import{e as vt}from"../chunks/BQqoDzLx.js";import{h as Zt}from"../chunks/DEDI7Ecm.js";import{c as qt,P as Kt,r as Qt,a as Wt,s as Xt}from"../chunks/B2Q1a1-H.js";import{b as Yt}from"../chunks/Dw782Tjs.js";import{i as te}from"../chunks/CVzlFH44.js";import{a as dt}from"../chunks/CBY2biv-.js";import{s as q}from"../chunks/tB7QMF3U.js";var ee=u("<option> </option>"),se=u('<div class="state err svelte-1lsf4ps"> </div>'),ae=u('<div class="state svelte-1lsf4ps">加载中…</div>'),le=u('<div class="state svelte-1lsf4ps">暂无日志</div>'),re=u('<tr class="payload-row svelte-1lsf4ps"><td colspan="5" class="svelte-1lsf4ps"><pre class="payload-content svelte-1lsf4ps"> </pre></td></tr>'),ie=u('<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><td class="td-detail svelte-1lsf4ps"> </td></tr> <!>',1),oe=u('<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><th class="th-detail 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>'),ne=u('<div class="feed-wrap svelte-1lsf4ps"><div class="feed-col svelte-1lsf4ps"><div class="feed-toolbar-block svelte-1lsf4ps"><div class="feed-header svelte-1lsf4ps"><div class="header-left svelte-1lsf4ps"><input type="search" class="filter-input svelte-1lsf4ps" placeholder="过滤…" autocomplete="off" spellcheck="false" aria-label="分类"/></div> <div class="header-right svelte-1lsf4ps"><select class="filter-input filter-input--level svelte-1lsf4ps" aria-label="级别"><option>全部</option><!></select> <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 we(ct,ft){At(ft,!1);const pt=["error","warn","info","debug"],ut=350;let d=c([]),y=c(0),h=c(!1),T=c(""),L=c(""),O=c(""),x=null,o=c(0),P=c(null),D=c(!1);const $=100;function I(){x&&(clearTimeout(x),x=null)}function _t(){I(),x=setTimeout(()=>{x=null,r(o,0),b()},ut)}function mt(){r(o,0),b()}Rt(()=>{b()}),jt(()=>{I()});function ht(){const t=new URLSearchParams;t.set("limit",String($)),t.set("offset",String(e(o))),e(L)&&t.set("level",e(L));const l=e(O).trim();return l&&t.set("category",l),"/api/logs?"+t.toString()}async function b(){r(h,!0),r(T,"");try{const t=await dt(ht());if(!t.ok)throw new Error(await t.text().catch(()=>`HTTP ${t.status}`));const l=await t.json();r(d,l.items??[]),r(y,l.total??0)}catch(t){r(T,t instanceof Error?t.message:String(t)),r(d,[]),r(y,0)}finally{r(h,!1)}}async function bt(){if(confirm("确定清空全部日志?此操作不可恢复。")){r(D,!0),I();try{const t=await dt("/api/logs",{method:"DELETE"}),l=await t.text();let i={};try{i=l?JSON.parse(l):{}}catch{i={}}if(!t.ok){q(i.error||l||`HTTP ${t.status}`,"error");return}i.ok&&(q(i.deleted!=null?`已清空 ${i.deleted} 条`:"已清空日志","success"),r(o,0),r(P,null),await b())}catch(t){q(t instanceof Error?t.message:String(t),"error")}finally{r(D,!1)}}}function gt(){e(o)<=0||(r(o,Math.max(0,e(o)-$)),b())}function yt(){e(o)+e(d).length>=e(y)||(r(o,e(o)+$),b())}function K(t){r(P,e(P)===t?null:t)}function xt(t){try{return new Date(t).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return t}}function wt(t){if(!t)return"";try{return JSON.stringify(JSON.parse(t),null,2)}catch{return t}}function Et(t){if(t==null||t.trim()==="")return"—";try{return JSON.stringify(JSON.parse(t))}catch{return t.replace(/\s+/g," ").trim()}}te();var C=ne();Zt("1lsf4ps",t=>{Bt(()=>{Gt.title=`日志 - ${Kt}`})});var Q=a(C),F=a(Q),W=a(F),J=a(W),M=a(J);Qt(M),s(J);var X=n(J,2),w=a(X),U=a(w);U.value=U.__value="";var St=n(U);vt(St,1,()=>pt,t=>t,(t,l)=>{var i=ee(),N=a(i,!0);s(i);var E={};g(()=>{f(N,e(l)),E!==(E=e(l))&&(i.value=(i.__value=e(l))??"")}),p(t,i)}),s(w);var Y=n(w,2);s(X),s(W),s(F);var tt=n(F,2),kt=a(tt);{var Tt=t=>{var l=se(),i=a(l,!0);s(l),g(()=>f(i,e(T))),p(t,l)},Lt=t=>{var l=ae();p(t,l)},Pt=t=>{var l=le();p(t,l)},Nt=t=>{var l=oe(),i=a(l),N=a(i),E=a(N),et=n(a(E));vt(et,5,()=>e(d),j=>j.id,(j,v)=>{var rt=ie(),S=Vt(rt),A=a(S),Dt=a(A,!0);s(A);var H=n(A),B=a(H),$t=a(B,!0);s(B),s(H);var G=n(H),It=a(G,!0);s(G);var V=n(G),Ct=a(V,!0);s(V);var Z=n(V),Ft=a(Z,!0);s(Z),s(S);var Jt=n(S,2);{var Mt=_=>{var k=re(),it=a(k),ot=a(it),Ut=a(ot,!0);s(ot),s(it),s(k),g(zt=>f(Ut,zt),[()=>wt(e(v).payload)]),p(_,k)};nt(Jt,_=>{e(P)===e(v).id&&e(v).payload&&_(Mt)})}g((_,k)=>{f(Dt,_),Wt(B,1,`badge level-${e(v).level??""}`,"svelte-1lsf4ps"),f($t,e(v).level),f(It,e(v).category),f(Ct,e(v).message),Xt(Z,"title",e(v).payload??void 0),f(Ft,k)},[()=>xt(e(v).created_at),()=>Et(e(v).payload)]),m("click",S,()=>K(e(v).id)),m("keydown",S,_=>_.key==="Enter"&&K(e(v).id)),p(j,rt)}),s(et),s(E),s(N),s(i);var st=n(i,2),z=a(st),Ot=a(z);s(z);var at=n(z,2),R=a(at),lt=n(R,2);s(at),s(st),s(l),g(()=>{f(Ot,`共 ${e(y)??""} 条,当前 ${e(d).length?`${e(o)+1}–${e(o)+e(d).length}`:"—"}`),R.disabled=e(o)<=0||e(h),lt.disabled=e(o)+e(d).length>=e(y)||e(h)}),m("click",R,gt),m("click",lt,yt),p(t,l)};nt(kt,t=>{e(T)?t(Tt):e(h)&&e(d).length===0?t(Lt,1):e(d).length===0?t(Pt,2):t(Nt,-1)})}s(tt),s(Q),s(C),g(()=>Y.disabled=e(h)||e(D)),Yt(M,()=>e(O),t=>r(O,t)),m("input",M,_t),qt(w,()=>e(L),t=>r(L,t)),m("change",w,mt),m("click",Y,bt),p(ct,C),Ht()}export{we as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as u,t as rt,f as p}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as Et}from"../chunks/Bp63qm3L.js";import{at as Lt,aC as bt,aD as Ot,f as lt,i as t,au as Nt,d as zt,av as r,az as ot,a5 as o,aw as c,z as h,$ as Jt,ax as s,U as b,ay as H}from"../chunks/BbWUOQ_m.js";import{d as Mt,a as D,e as Bt,s as K}from"../chunks/DMWEh-Ek.js";import{g as Ft}from"../chunks/D5GvRCv7.js";import{i as Q}from"../chunks/Dt2CddFe.js";import{e as Ht}from"../chunks/BQqoDzLx.js";import{h as Kt}from"../chunks/DEDI7Ecm.js";import{s as O,P as Qt,r as it}from"../chunks/B2Q1a1-H.js";import{b as nt}from"../chunks/Dw782Tjs.js";import{i as qt}from"../chunks/CVzlFH44.js";import{a as q}from"../chunks/CBY2biv-.js";import{p as Gt}from"../chunks/Bu9HsS-V.js";import{g as dt}from"../chunks/5LVkDJzw.js";import{s as m}from"../chunks/tB7QMF3U.js";import{P as Vt}from"../chunks/CWNeClHp.js";import{D as Wt,P as Xt,a as Yt,b as Zt,c as te,d as gt}from"../chunks/mW5RwvnK.js";var ee=p('<div class="state svelte-1nj0iur">加载中…</div>'),ae=p('<div class="state error svelte-1nj0iur"> </div>'),se=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>'),re=p('<div class="state svelte-1nj0iur">无匹配结果</div>'),le=p('<span class="kind-badge svelte-1nj0iur">Source</span>'),oe=p('<button type="button" class="cell-btn cell-btn--primary svelte-1nj0iur">登录</button>'),ie=p('<span class="cell-dash svelte-1nj0iur" title="未声明站点登录">—</span>'),ne=p('<button type="button" class="cell-btn cell-btn--secondary svelte-1nj0iur">检查登录</button>'),de=p('<span class="cell-dash svelte-1nj0iur" title="未声明站点登录">—</span>'),ce=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>'),ve=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>'),ue=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),pe=p("<!> <!>",1),fe=p('<div class="feed-wrap svelte-1nj0iur"><div class="feed-col svelte-1nj0iur"><div class="plugins-toolbar-block svelte-1nj0iur"><div class="feed-header svelte-1nj0iur"><div class="header-left svelte-1nj0iur"><input class="filter-input svelte-1nj0iur" type="search" placeholder="过滤…" autocomplete="off"/></div> <div class="header-right svelte-1nj0iur"><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 Re(jt,yt){Lt(yt,!1);const U=h(),N=h();let $=h([]),z=h(""),G=h(!0),C=h(!1),j=h(""),y=h(""),S=h(!1),J=h("");function ct(){o(j,""),o(y,""),o(C,!0)}function wt(e){o(C,e),e||(o(j,""),o(y,""))}async function Pt(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(S,!0);try{const n=await q("/api/plugins",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({id:a,listUrlPattern:i})}),_=await n.text();let l={};try{l=_?JSON.parse(_):{}}catch{l={}}if(!n.ok){m(l.error||_||`HTTP ${n.status}`,"error");return}l.ok&&(m("已创建插件文件","success"),o(C,!1),o(j,""),o(y,""),await vt(),await dt("/plugins/"+encodeURIComponent(a)))}catch(n){m("请求失败: "+(n instanceof Error?n.message:String(n)),"error")}finally{o(S,!1)}}async function vt(){o(G,!0),o(z,"");try{const a=await(await q("/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(G,!1)}}async function kt(e,a){a.preventDefault(),a.stopPropagation();try{const n=await(await q(`/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 ut(e){dt("/plugins/"+encodeURIComponent(e.id))}function $t(e,a){(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),ut(e))}async function xt(e,a){a.preventDefault(),a.stopPropagation();try{const n=await(await q(`/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")}}Et(()=>{vt(),Ft(Gt).url.searchParams.get("openAdd")==="1"&&(o(j,""),o(y,""),o(C,!0),dt("/plugins",{replaceState:!0}))}),bt(()=>t(J),()=>{o(U,t(J).trim().toLowerCase())}),bt(()=>(t(U),t($)),()=>{o(N,t(U)?t($).filter(e=>e.id.toLowerCase().includes(t(U))||e.listUrlPattern.toLowerCase().includes(t(U))):t($))}),Ot(),qt();var pt=fe();Kt("1nj0iur",e=>{zt(()=>{Jt.title=`插件 - ${Qt}`})});var V=lt(pt),ft=r(V),W=r(ft),mt=r(W),X=r(mt),Y=r(X);it(Y),O(Y,"spellcheck",!1),s(X);var _t=c(X,2),Z=r(_t),Dt=r(Z);Vt(Dt,{size:16,"aria-hidden":"true"}),s(Z),s(_t),s(mt),s(W);var ht=c(W,2),Ut=r(ht);{var Ct=e=>{var a=ee();u(e,a)},St=e=>{var a=ae(),i=r(a,!0);s(a),ot(()=>K(i,t(z))),u(e,a)},At=e=>{var a=se(),i=c(r(a));H(5),s(a),D("click",i,ct),u(e,a)},It=e=>{var a=re();u(e,a)},Rt=e=>{var a=ve(),i=r(a),n=c(r(i));Ht(n,5,()=>t(N),_=>_.id,(_,l)=>{var g=ce(),A=r(g),tt=r(A),x=r(tt),I=r(x,!0);s(x);var M=c(x,2);{var et=d=>{var v=le();u(d,v)};Q(M,d=>{t(l),b(()=>t(l).kind==="source")&&d(et)})}s(tt),s(A);var w=c(A),P=r(w),R=r(P,!0);s(P),s(w);var k=c(w),T=r(k);{var B=d=>{var v=oe();D("click",v,st=>xt(t(l),st)),u(d,v)},F=d=>{var v=ie();u(d,v)};Q(T,d=>{t(l),b(()=>t(l).hasAuth)?d(B):d(F,-1)})}s(k);var E=c(k),L=r(E);{var at=d=>{var v=ne();D("click",v,st=>kt(t(l),st)),u(d,v)},f=d=>{var v=de();u(d,v)};Q(L,d=>{t(l),b(()=>t(l).hasAuth)?d(at):d(f,-1)})}s(E),s(g),ot(()=>{O(g,"aria-label",`打开插件 ${t(l),b(()=>t(l).id)??""}`),K(I,(t(l),b(()=>t(l).id))),O(P,"title",(t(l),b(()=>t(l).listUrlPattern))),K(R,(t(l),b(()=>t(l).listUrlPattern)))}),D("click",g,()=>ut(t(l))),D("keydown",g,d=>$t(t(l),d)),u(_,g)}),s(n),s(i),s(a),u(e,a)};Q(Ut,e=>{t(G)?e(Ct):t(z)?e(St,1):(t($),b(()=>t($).length===0)?e(At,2):(t(N),b(()=>t(N).length===0)?e(It,3):e(Rt,-1)))})}s(ht),s(ft),s(V);var Tt=c(V,2);Wt(Tt,{get open(){return t(C)},onOpenChange:wt,children:(e,a)=>{Xt(e,{children:(i,n)=>{var _=pe(),l=lt(_);Yt(l,{class:"modal-overlay"});var g=c(l,2);Zt(g,{class:"modal","aria-describedby":void 0,children:(A,tt)=>{var x=ue(),I=lt(x),M=r(I);te(M,{class:"modal-title",children:(f,d)=>{H();var v=rt("添加插件");u(f,v)},$$slots:{default:!0}});var et=c(M,2);gt(et,{class:"modal-close","aria-label":"关闭",children:(f,d)=>{H();var v=rt("✕");u(f,v)},$$slots:{default:!0}}),s(I);var w=c(I,2),P=c(r(w),2),R=c(r(P),2);it(R),O(R,"spellcheck",!1),s(P);var k=c(P,2),T=c(r(k),2);it(T),O(T,"spellcheck",!1),s(k);var B=c(k,2),F=r(B),E=r(F);gt(E,{class:"btn-cancel",get disabled(){return t(S)},type:"button",children:(f,d)=>{H();var v=rt("取消");u(f,v)},$$slots:{default:!0}});var L=c(E,2),at=r(L,!0);s(L),s(F),s(B),s(w),ot(()=>{L.disabled=t(S),K(at,t(S)?"创建中…":"创建并打开编辑")}),Bt("submit",w,Pt),nt(R,()=>t(y),f=>o(y,f)),nt(T,()=>t(j),f=>o(j,f)),u(A,x)},$$slots:{default:!0}}),u(i,_)},$$slots:{default:!0}})},$$slots:{default:!0}}),nt(Y,()=>t(J),e=>o(J,e)),D("click",Z,ct),u(jt,pt),Nt()}Mt(["click","keydown"]);export{Re as component};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a,f as p}from"../chunks/BK3WtZwv.js";import"../chunks/lk5LaiqA.js";import{o as m}from"../chunks/Bp63qm3L.js";import{at as e,au as s,X as i,$ as f}from"../chunks/BbWUOQ_m.js";import{h as n}from"../chunks/DEDI7Ecm.js";import{i as c}from"../chunks/CVzlFH44.js";import{g as d}from"../chunks/5LVkDJzw.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};
|