@yinuo-ngm/server 1.0.10 → 1.0.11

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 (29) hide show
  1. package/LICENSE +15 -0
  2. package/lib/plugins/error-handler.plugin.js +2 -0
  3. package/lib/routes/api-client/collection.routes.js +18 -2
  4. package/lib/routes/dashboard.routes.js +5 -1
  5. package/package.json +2 -2
  6. package/www/browser/{chunk-V6LX42JA.js → chunk-37KQ3UTB.js} +1 -1
  7. package/www/browser/chunk-3LDMO67C.js +1 -0
  8. package/www/browser/{chunk-FL6BUQ4M.js → chunk-3MAJTMXX.js} +1 -1
  9. package/www/browser/{chunk-PYGKDDJK.js → chunk-3PWCJ3D5.js} +1 -1
  10. package/www/browser/{chunk-UWKUE7CZ.js → chunk-AZV6AWGC.js} +1 -1
  11. package/www/browser/{chunk-DV7BEQJD.js → chunk-CO7S3LZV.js} +1 -1
  12. package/www/browser/{chunk-DUC7XBYN.js → chunk-DJJC6FPO.js} +1 -1
  13. package/www/browser/{chunk-FPDGZ3ZC.js → chunk-EP45FT55.js} +3 -3
  14. package/www/browser/{chunk-7U5ZOE34.js → chunk-FNLA2MNI.js} +1 -1
  15. package/www/browser/{chunk-IXHH6ENJ.js → chunk-G73D24UX.js} +1 -1
  16. package/www/browser/{chunk-5IUYSJVD.js → chunk-GCKL62DR.js} +1 -1
  17. package/www/browser/{chunk-MN4WB67T.js → chunk-HCBKQAGF.js} +1 -1
  18. package/www/browser/{chunk-EAYGWAZB.js → chunk-IMQG3SAE.js} +1 -1
  19. package/www/browser/{chunk-3N7T4ZJF.js → chunk-J2JNFWJN.js} +1 -1
  20. package/www/browser/{chunk-TLFV3T3W.js → chunk-MD6RDGU4.js} +1 -1
  21. package/www/browser/{chunk-5MHC25IS.js → chunk-OUE23ZE4.js} +1 -1
  22. package/www/browser/{chunk-A2SBXP7A.js → chunk-W6TCGG53.js} +1 -1
  23. package/www/browser/{chunk-KKLLU6U7.js → chunk-XN5C33GH.js} +1 -1
  24. package/www/browser/chunk-YVSVIACA.js +4 -0
  25. package/www/browser/index.html +1 -1
  26. package/www/browser/main-V3VSEZ7K.js +29 -0
  27. package/www/browser/chunk-2PBA7FNM.js +0 -4
  28. package/www/browser/chunk-U7FBNFSB.js +0 -1
  29. package/www/browser/main-IIW5QQA5.js +0 -29
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ ISC License
2
+
3
+ Copyright (c) 2026 ZhangJing
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any purpose
6
+ with or without fee is hereby granted, provided that the above copyright notice
7
+ and this permission notice appear in all copies.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11
+ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
13
+ OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
14
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
15
+ THIS SOFTWARE.
@@ -68,6 +68,8 @@ exports.ERROR_STATUS = {
68
68
  DASHBOARD_CONFLICT: 409,
69
69
  WIDGET_NOT_FOUND: 404,
70
70
  WIDGET_LOCKED: 423,
71
+ KILL_PORT_FAILED: 500,
72
+ INVALID_PORT: 400,
71
73
  RSS_FETCH_FAILED: 500,
72
74
  INVALID_RSS_URL: 400,
73
75
  UNKNOWN_ERROR: 500,
@@ -13,8 +13,24 @@ async function apiClientCollectionsRoutes(fastify) {
13
13
  const q = req.query;
14
14
  const scope = (q.scope ?? "project");
15
15
  assertProjectScope(scope, q.projectId);
16
- const items = await api.listCollections(scope, q.projectId);
17
- return items.sort((a, b) => (a.parentId ?? "").localeCompare(b.parentId ?? "") || a.order - b.order || a.name.localeCompare(b.name));
16
+ const collections = await api.listCollections(scope, q.projectId);
17
+ return collections.sort((a, b) => (a.parentId ?? "").localeCompare(b.parentId ?? "") || a.order - b.order || a.name.localeCompare(b.name));
18
+ });
19
+ fastify.get("/bundle", async (req) => {
20
+ const q = req.query;
21
+ const scope = (q.scope ?? "project");
22
+ assertProjectScope(scope, q.projectId);
23
+ const [collections, requests] = await Promise.all([
24
+ api.listCollections(scope, q.projectId),
25
+ api.listRequests(scope, q.projectId),
26
+ ]);
27
+ const cols = (collections ?? []).sort((a, b) => (a.parentId ?? "").localeCompare(b.parentId ?? "") ||
28
+ a.order - b.order ||
29
+ (a.name ?? "").localeCompare(b.name ?? ""));
30
+ const reqs = (requests ?? []).sort((a, b) => (a.collectionId ?? "").localeCompare(b.collectionId ?? "") ||
31
+ (a.order ?? 0) - (b.order ?? 0) ||
32
+ (a.name ?? "").localeCompare(b.name ?? ""));
33
+ return { collections: cols, requests: reqs };
18
34
  });
19
35
  fastify.post("/", async (req) => {
20
36
  const body = req.body;
@@ -21,7 +21,7 @@ async function dashboardRoutes(fastify) {
21
21
  y = Number(y) || 0;
22
22
  return await fastify.core.dashboard.addWidget(projectId, widgetKey, x, y);
23
23
  });
24
- fastify.get("/removeWidget/:projectId/:widgetId", async (req) => {
24
+ fastify.delete("/removeWidget/:projectId/:widgetId", async (req) => {
25
25
  const { projectId, widgetId } = req.params;
26
26
  return await fastify.core.dashboard.removeWidget(projectId, widgetId);
27
27
  });
@@ -30,4 +30,8 @@ async function dashboardRoutes(fastify) {
30
30
  const config = req.body;
31
31
  return await fastify.core.dashboard.updateItemConfig(projectId, widgetId, config);
32
32
  });
33
+ fastify.get("/killPort/:port", async (req) => {
34
+ const { port } = req.params;
35
+ return await fastify.core.dashboard.killPort(Number(port));
36
+ });
33
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yinuo-ngm/server",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "a server package for Yinuo NG Manager",
5
5
  "author": "ZhangJing <892295834@qq.com>",
6
6
  "license": "ISC",
@@ -34,5 +34,5 @@
34
34
  "devDependencies": {
35
35
  "tsx": "^4.21.0"
36
36
  },
37
- "gitHead": "d1e66d9eebe8b408c14903105d9537515e764b31"
37
+ "gitHead": "1efca29b6ad714d4033ad53c3933500d37a5659a"
38
38
  }
@@ -1 +1 @@
1
- import{a as Ie,b as Oe}from"./chunk-5IUYSJVD.js";import"./chunk-SIVPP74B.js";import{b as je}from"./chunk-POZS3PD3.js";import{a as Se,b as Fe}from"./chunk-3N7T4ZJF.js";import"./chunk-HZ73CM45.js";import{b as ce,c as de,d as ue,e as De,g as Pe,h as Te}from"./chunk-ROB7EMN5.js";import"./chunk-SNCDDYQR.js";import{G as be,I as Ne,g as we}from"./chunk-FPDGZ3ZC.js";import{Ab as ve,Bb as he,Cb as xe,Fb as ye,Hb as Me,M as oe,N as re,O as ae,P as pe,V as se,Y as le,Z as me,jb as ge,lb as fe,pb as _e,vb as ze,yb as Ce}from"./chunk-PTMJ422K.js";import"./chunk-HFZLJHYR.js";import{B as U,d as ie,i as E}from"./chunk-53YRDYLS.js";import{$b as J,B as q,Dc as K,Eb as O,Fb as y,Fc as Q,Ha as z,Ic as s,Jc as b,Kb as M,Kc as F,Mc as X,Nc as Y,Oc as Z,Tc as ee,Ub as W,V as P,Vb as C,Wc as $,Xb as v,_b as H,a as d,ac as c,ad as te,b as u,bc as r,cc as a,dc as g,fd as N,gd as ne,hc as j,ic as S,jc as R,kc as T,ma as G,mb as p,na as h,qc as w,ra as _,tc as l,vd as A,xa as x,ya as D}from"./chunk-SJG2JCPL.js";function Ve(n,t){if(n&1&&(j(0),s(1),S()),n&2){let e=l(2);p(),b(e.nzText)}}function Be(n,t){if(n&1&&(r(0,"span",0),M(1,Ve,2,1,"ng-container",1),a()),n&2){let e=l();p(),c("nzStringTemplateOutlet",e.nzText)}}var L=(()=>{class n{nzText;nzType="horizontal";nzOrientation="center";nzVariant="solid";nzSize;nzDashed=!1;nzPlain=!1;static \u0275fac=function(o){return new(o||n)};static \u0275cmp=O({type:n,selectors:[["nz-divider"]],hostAttrs:[1,"ant-divider"],hostVars:22,hostBindings:function(o,i){o&2&&Q("ant-divider-horizontal",i.nzType==="horizontal")("ant-divider-vertical",i.nzType==="vertical")("ant-divider-with-text",i.nzText)("ant-divider-plain",i.nzPlain)("ant-divider-with-text-left",i.nzText&&i.nzOrientation==="left")("ant-divider-with-text-right",i.nzText&&i.nzOrientation==="right")("ant-divider-with-text-center",i.nzText&&i.nzOrientation==="center")("ant-divider-dashed",i.nzDashed||i.nzVariant==="dashed")("ant-divider-dotted",i.nzVariant==="dotted")("ant-divider-sm",i.nzSize==="small")("ant-divider-md",i.nzSize==="middle")},inputs:{nzText:"nzText",nzType:"nzType",nzOrientation:"nzOrientation",nzVariant:"nzVariant",nzSize:"nzSize",nzDashed:[2,"nzDashed","nzDashed",A],nzPlain:[2,"nzPlain","nzPlain",A]},exportAs:["nzDivider"],decls:1,vars:1,consts:[[1,"ant-divider-inner-text"],[4,"nzStringTemplateOutlet"]],template:function(o,i){o&1&&C(0,Be,2,1,"span",0),o&2&&v(i.nzText?0:-1)},dependencies:[pe,ae],encapsulation:2,changeDetection:0})}return n})(),Ee=(()=>{class n{static \u0275fac=function(o){return new(o||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[L]})}return n})();var I=class n{api=_(we);getDeps(t){return this.api.get(`/api/deps/list/${t}`).pipe(q(e=>({items:[...e.dependencies.map(i=>u(d({},i),{group:"dependencies"})),...e.devDependencies.map(i=>u(d({},i),{group:"devDependencies"}))],meta:e.meta})))}install(t,e){return this.api.post(`/api/deps/install/${t}`,e)}uninstall(t,e){return this.api.post(`/api/deps/uninstall/${t}`,e)}installDevtools(t){return this.api.post(`/api/deps/devtools/install/${t}`,{tool:"devtools"})}static \u0275fac=function(e){return new(e||n)};static \u0275prov=G({token:n,factory:n.\u0275fac,providedIn:"root"})};var $e=["class","component"],Ae=n=>({$implicit:n,title:"\u8FD0\u884C\u4F9D\u8D56"}),Ue=n=>({$implicit:n,title:"\u5F00\u53D1\u4F9D\u8D56"});function Le(n,t){n&1&&R(0)}function qe(n,t){n&1&&R(0)}function Ge(n,t){n&1&&(r(0,"nz-tag",20),s(1,"\u5DF2\u5B89\u88C5"),a())}function We(n,t){n&1&&(r(0,"nz-tag",21),s(1,"\u672A\u5B89\u88C5"),a())}function He(n,t){if(n&1){let e=T();r(0,"button",27),w("click",function(){x(e);let i=l().$implicit,m=l(2);return D(m.installOrUpdate(i))}),g(1,"nz-icon",28),a()}if(n&2){let e=l().$implicit,o=l(2);c("nzLoading",o.installing()[e.name])("nz-tooltip",e.hasUpdate?"\u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C":"\u5B89\u88C5\u4F9D\u8D56")}}function Je(n,t){if(n&1){let e=T();r(0,"button",29),w("nzOnConfirm",function(){x(e);let i=l().$implicit,m=l(2);return D(m.uninstall(i))}),g(1,"nz-icon",30),a()}if(n&2){let e=l().$implicit;c("nzPopconfirmTitle",ee("\u786E\u5B9A\u5378\u8F7D ",e.name,"\uFF1F")),p(),c("nz-tooltip","\u5378\u8F7D"+e.name)}}function Ke(n,t){if(n&1){let e=T();r(0,"div",9)(1,"div",11)(2,"div",12)(3,"div",13),g(4,"span",14),a(),r(5,"div",15)(6,"div",16),s(7),a(),r(8,"div",17)(9,"span"),s(10),a(),r(11,"span",18),s(12,"\xB7"),a(),r(13,"span"),s(14),a(),r(15,"span",18),s(16,"\xB7"),a(),r(17,"span"),s(18),a()()()(),r(19,"div",19),C(20,Ge,2,0,"nz-tag",20)(21,We,2,0,"nz-tag",21),r(22,"a",22),w("click",function(){let i=x(e).$implicit,m=l(2);return D(m.openDetail(i))}),g(23,"span",23),s(24," \u67E5\u770B\u8BE6\u60C5 "),a()(),r(25,"div",24),C(26,He,2,2,"button",25),C(27,Je,2,3,"button",26),a()()()}if(n&2){let e=t.$implicit;p(7),b(e.name),p(3),F("\u7248\u672C ",e.current||"-"),p(4),F("\u8981\u6C42 ",e.required||"-"),p(4),F("\u6700\u65B0 ",e.latest||"-"),p(2),v(e.installed?20:21),p(6),v(e.hasUpdate||!e.installed?26:-1),p(),v(e.installed?27:-1)}}function Qe(n,t){n&1&&(r(0,"div",10),s(1,"\u65E0\u6570\u636E"),a())}function Xe(n,t){if(n&1&&(r(0,"div",7),s(1),a(),r(2,"div",8),H(3,Ke,28,7,"div",9,W().trackByName,!0),C(5,Qe,2,0,"div",10),a()),n&2){let e=t.$implicit,o=t.title;p(),b(o),p(2),J(e),p(2),v(e.length===0?5:-1)}}var V=class n{api=_(I);msg=_(be);projectId=N(()=>this.projectState.currentProjectId()||"");loading=z(!1);keyword=z("");items=z([]);meta=z(null);installing=z({});uninstalling=z({});runtimeItems=N(()=>this.filterItems(this.items().filter(t=>t.group==="dependencies")));devItems=N(()=>this.filterItems(this.items().filter(t=>t.group==="devDependencies")));runningCount=N(()=>this.items().filter(t=>t.hasUpdate).length);projectState=_(Ne);depsState=_(I);constructor(){ne(async()=>{this.refresh()})}filterItems(t){let e=this.keyword().trim().toLowerCase();return e?t.filter(o=>o.name.toLowerCase().includes(e)):t}refresh(){this.loading.set(!0),this.api.getDeps(this.projectId()).pipe(P(()=>this.loading.set(!1))).subscribe({next:({items:t,meta:e})=>{this.items.set(t),this.meta.set(e)},error:t=>this.msg.error(t?.message||"\u52A0\u8F7D\u4F9D\u8D56\u5931\u8D25")})}openDetail(t){t.homepage?window.open(t.homepage,"_blank"):window.open(`https://www.npmjs.com/package/${encodeURIComponent(t.name)}`,"_blank")}installOrUpdate(t){let e=t.name;this.installing.set(u(d({},this.installing()),{[e]:!0}));let o=t.installed&&t.hasUpdate?"latest":"required",i=t.installed&&t.hasUpdate?"\u5DF2\u66F4\u65B0":"\u5DF2\u5B89\u88C5";this.api.install(this.projectId(),{name:t.name,group:t.group,target:o}).pipe(P(()=>this.installing.set(u(d({},this.installing()),{[e]:!1})))).subscribe({next:()=>{this.msg.success(i),this.refresh()}})}uninstall(t){let e=t.name;this.uninstalling.set(u(d({},this.uninstalling()),{[e]:!0})),this.api.uninstall(this.projectId(),{name:t.name,group:t.group}).pipe(P(()=>this.uninstalling.set(u(d({},this.uninstalling()),{[e]:!1})))).subscribe({next:()=>{this.msg.success("\u5DF2\u5378\u8F7D"),this.refresh()}})}installDevtools(){this.loading.set(!0),this.api.installDevtools(this.projectId()).pipe(P(()=>this.loading.set(!1))).subscribe({next:()=>{this.msg.success("devtools \u5DF2\u5B89\u88C5"),this.refresh()},error:t=>this.msg.error(t?.message||"devtools \u5B89\u88C5\u5931\u8D25")})}installAll(){let t=this.items().filter(o=>!o.installed);if(!t.length){this.msg.info("\u6CA1\u6709\u9700\u8981\u5B89\u88C5\u7684\u4F9D\u8D56");return}(async()=>{this.loading.set(!0);try{for(let o of t)await new Promise((i,m)=>{this.api.install(this.projectId(),{name:o.name,group:o.group,target:"required"}).subscribe({next:()=>i(),error:f=>m(f)})});this.msg.success("\u5DF2\u5B8C\u6210\u5B89\u88C5"),this.refresh()}catch{this.msg.error("\u6279\u91CF\u5B89\u88C5\u5931\u8D25")}finally{this.loading.set(!1)}})()}trackByName(t,e){return e.group+":"+e.name}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=O({type:n,selectors:[["app-project-deps",8,"component"]],attrs:$e,decls:12,vars:11,consts:[["contentTemplate",""],[3,"title","loading"],["ngProjectAs","actions",5,["actions"]],["nz-input","","placeholder","\u641C\u7D22",1,"search",3,"ngModelChange","ngModel"],["nzType","search","nzInputPrefix",""],[1,"panel"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"group-title"],[1,"list"],[1,"row"],[1,"empty"],["nz-row","","nzAlign","middle",1,"row-inner"],["nz-col","","nzFlex","400px",1,"left"],[1,"pkg-icon"],["nz-icon","","nzType","appstore"],[1,"pkg"],[1,"name"],[1,"sub"],[1,"sep"],["nz-col","","nzFlex","auto",1,"mid"],["nzColor","success"],["nzColor","warning"],[1,"detail",3,"click"],["nz-icon","","nzType","link"],["nz-col","","nzFlex","180px",1,"right"],["nz-button","","nzType","text",3,"nzLoading","nz-tooltip"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzPopconfirmTitle"],["nz-button","","nzType","text",3,"click","nzLoading","nz-tooltip"],["nzType","download"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzOnConfirm","nzPopconfirmTitle"],["nzType","delete","nzTheme","fill",3,"nz-tooltip"]],template:function(e,o){if(e&1){let i=T();r(0,"app-page-layout",1),j(1,2),g(2,"app-ng-devtool"),r(3,"nz-input-wrapper")(4,"input",3),Z("ngModelChange",function(f){return x(i),Y(o.keyword,f)||(o.keyword=f),D(f)}),w("ngModelChange",function(f){return x(i),D(o.keyword.set(f))}),a(),g(5,"nz-icon",4),a(),S(),r(6,"div",5),M(7,Le,1,0,"ng-container",6),g(8,"nz-divider"),M(9,qe,1,0,"ng-container",6),a()(),M(10,Xe,6,2,"ng-template",null,0,te)}if(e&2){let i=K(11);c("title","\u9879\u76EE\u914D\u7F6E")("loading",o.loading()),p(4),X("ngModel",o.keyword),p(3),c("ngTemplateOutlet",i)("ngTemplateOutletContext",$(7,Ae,o.runtimeItems())),p(2),c("ngTemplateOutlet",i)("ngTemplateOutletContext",$(9,Ue,o.devItems()))}},dependencies:[E,ie,ze,ge,fe,_e,ue,de,ce,me,le,se,xe,ve,he,Ce,re,oe,Me,ye,Fe,Se,je,Ee,L,Oe,Ie,Pe,Te,De],styles:[".panel[_ngcontent-%COMP%]{border-radius:10px;padding:16px 18px;box-shadow:0 2px 8px #0000000f}.group-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:6px 0 12px;opacity:.65}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.row[_ngcontent-%COMP%]{border-radius:10px}.row[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a;background:var(--app-primary-3)}.row-inner[_ngcontent-%COMP%]{padding:10px 12px}.left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.left[_ngcontent-%COMP%] .pkg-icon[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:8px;opacity:.65;display:inline-flex;align-items:center;justify-content:center}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-weight:600;line-height:18px}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{margin-top:2px;font-size:12px;opacity:.55}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] .sep[_ngcontent-%COMP%]{margin:0 6px}.mid[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:8px}.mid[_ngcontent-%COMP%] .detail[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--text-color-primary)}.right[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:6px}.empty[_ngcontent-%COMP%]{padding:16px 0;text-align:center}"]})};var Ye=[{path:"",component:V}],B=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[U.forChild(Ye),U]})};var ke=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[E,B]})};export{ke as DependenciesModule};
1
+ import{a as Ie,b as Oe}from"./chunk-GCKL62DR.js";import"./chunk-SIVPP74B.js";import{b as je}from"./chunk-POZS3PD3.js";import{a as Se,b as Fe}from"./chunk-J2JNFWJN.js";import"./chunk-HZ73CM45.js";import{b as ce,c as de,d as ue,e as De,g as Pe,h as Te}from"./chunk-ROB7EMN5.js";import"./chunk-SNCDDYQR.js";import{E as be,G as Ne,g as we}from"./chunk-EP45FT55.js";import{Ab as ve,Bb as he,Cb as xe,Fb as ye,Hb as Me,M as oe,N as re,O as ae,P as pe,V as se,Y as le,Z as me,jb as ge,lb as fe,pb as _e,vb as ze,yb as Ce}from"./chunk-PTMJ422K.js";import"./chunk-HFZLJHYR.js";import{B as U,d as ie,i as E}from"./chunk-53YRDYLS.js";import{$b as J,B as q,Dc as K,Eb as O,Fb as y,Fc as Q,Ha as z,Ic as s,Jc as b,Kb as M,Kc as F,Mc as X,Nc as Y,Oc as Z,Tc as ee,Ub as W,V as P,Vb as C,Wc as $,Xb as v,_b as H,a as d,ac as c,ad as te,b as u,bc as r,cc as a,dc as g,fd as N,gd as ne,hc as j,ic as S,jc as R,kc as T,ma as G,mb as p,na as h,qc as w,ra as _,tc as l,vd as A,xa as x,ya as D}from"./chunk-SJG2JCPL.js";function Ve(n,t){if(n&1&&(j(0),s(1),S()),n&2){let e=l(2);p(),b(e.nzText)}}function Be(n,t){if(n&1&&(r(0,"span",0),M(1,Ve,2,1,"ng-container",1),a()),n&2){let e=l();p(),c("nzStringTemplateOutlet",e.nzText)}}var L=(()=>{class n{nzText;nzType="horizontal";nzOrientation="center";nzVariant="solid";nzSize;nzDashed=!1;nzPlain=!1;static \u0275fac=function(o){return new(o||n)};static \u0275cmp=O({type:n,selectors:[["nz-divider"]],hostAttrs:[1,"ant-divider"],hostVars:22,hostBindings:function(o,i){o&2&&Q("ant-divider-horizontal",i.nzType==="horizontal")("ant-divider-vertical",i.nzType==="vertical")("ant-divider-with-text",i.nzText)("ant-divider-plain",i.nzPlain)("ant-divider-with-text-left",i.nzText&&i.nzOrientation==="left")("ant-divider-with-text-right",i.nzText&&i.nzOrientation==="right")("ant-divider-with-text-center",i.nzText&&i.nzOrientation==="center")("ant-divider-dashed",i.nzDashed||i.nzVariant==="dashed")("ant-divider-dotted",i.nzVariant==="dotted")("ant-divider-sm",i.nzSize==="small")("ant-divider-md",i.nzSize==="middle")},inputs:{nzText:"nzText",nzType:"nzType",nzOrientation:"nzOrientation",nzVariant:"nzVariant",nzSize:"nzSize",nzDashed:[2,"nzDashed","nzDashed",A],nzPlain:[2,"nzPlain","nzPlain",A]},exportAs:["nzDivider"],decls:1,vars:1,consts:[[1,"ant-divider-inner-text"],[4,"nzStringTemplateOutlet"]],template:function(o,i){o&1&&C(0,Be,2,1,"span",0),o&2&&v(i.nzText?0:-1)},dependencies:[pe,ae],encapsulation:2,changeDetection:0})}return n})(),Ee=(()=>{class n{static \u0275fac=function(o){return new(o||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[L]})}return n})();var I=class n{api=_(we);getDeps(t){return this.api.get(`/api/deps/list/${t}`).pipe(q(e=>({items:[...e.dependencies.map(i=>u(d({},i),{group:"dependencies"})),...e.devDependencies.map(i=>u(d({},i),{group:"devDependencies"}))],meta:e.meta})))}install(t,e){return this.api.post(`/api/deps/install/${t}`,e)}uninstall(t,e){return this.api.post(`/api/deps/uninstall/${t}`,e)}installDevtools(t){return this.api.post(`/api/deps/devtools/install/${t}`,{tool:"devtools"})}static \u0275fac=function(e){return new(e||n)};static \u0275prov=G({token:n,factory:n.\u0275fac,providedIn:"root"})};var $e=["class","component"],Ae=n=>({$implicit:n,title:"\u8FD0\u884C\u4F9D\u8D56"}),Ue=n=>({$implicit:n,title:"\u5F00\u53D1\u4F9D\u8D56"});function Le(n,t){n&1&&R(0)}function qe(n,t){n&1&&R(0)}function Ge(n,t){n&1&&(r(0,"nz-tag",20),s(1,"\u5DF2\u5B89\u88C5"),a())}function We(n,t){n&1&&(r(0,"nz-tag",21),s(1,"\u672A\u5B89\u88C5"),a())}function He(n,t){if(n&1){let e=T();r(0,"button",27),w("click",function(){x(e);let i=l().$implicit,m=l(2);return D(m.installOrUpdate(i))}),g(1,"nz-icon",28),a()}if(n&2){let e=l().$implicit,o=l(2);c("nzLoading",o.installing()[e.name])("nz-tooltip",e.hasUpdate?"\u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C":"\u5B89\u88C5\u4F9D\u8D56")}}function Je(n,t){if(n&1){let e=T();r(0,"button",29),w("nzOnConfirm",function(){x(e);let i=l().$implicit,m=l(2);return D(m.uninstall(i))}),g(1,"nz-icon",30),a()}if(n&2){let e=l().$implicit;c("nzPopconfirmTitle",ee("\u786E\u5B9A\u5378\u8F7D ",e.name,"\uFF1F")),p(),c("nz-tooltip","\u5378\u8F7D"+e.name)}}function Ke(n,t){if(n&1){let e=T();r(0,"div",9)(1,"div",11)(2,"div",12)(3,"div",13),g(4,"span",14),a(),r(5,"div",15)(6,"div",16),s(7),a(),r(8,"div",17)(9,"span"),s(10),a(),r(11,"span",18),s(12,"\xB7"),a(),r(13,"span"),s(14),a(),r(15,"span",18),s(16,"\xB7"),a(),r(17,"span"),s(18),a()()()(),r(19,"div",19),C(20,Ge,2,0,"nz-tag",20)(21,We,2,0,"nz-tag",21),r(22,"a",22),w("click",function(){let i=x(e).$implicit,m=l(2);return D(m.openDetail(i))}),g(23,"span",23),s(24," \u67E5\u770B\u8BE6\u60C5 "),a()(),r(25,"div",24),C(26,He,2,2,"button",25),C(27,Je,2,3,"button",26),a()()()}if(n&2){let e=t.$implicit;p(7),b(e.name),p(3),F("\u7248\u672C ",e.current||"-"),p(4),F("\u8981\u6C42 ",e.required||"-"),p(4),F("\u6700\u65B0 ",e.latest||"-"),p(2),v(e.installed?20:21),p(6),v(e.hasUpdate||!e.installed?26:-1),p(),v(e.installed?27:-1)}}function Qe(n,t){n&1&&(r(0,"div",10),s(1,"\u65E0\u6570\u636E"),a())}function Xe(n,t){if(n&1&&(r(0,"div",7),s(1),a(),r(2,"div",8),H(3,Ke,28,7,"div",9,W().trackByName,!0),C(5,Qe,2,0,"div",10),a()),n&2){let e=t.$implicit,o=t.title;p(),b(o),p(2),J(e),p(2),v(e.length===0?5:-1)}}var V=class n{api=_(I);msg=_(be);projectId=N(()=>this.projectState.currentProjectId()||"");loading=z(!1);keyword=z("");items=z([]);meta=z(null);installing=z({});uninstalling=z({});runtimeItems=N(()=>this.filterItems(this.items().filter(t=>t.group==="dependencies")));devItems=N(()=>this.filterItems(this.items().filter(t=>t.group==="devDependencies")));runningCount=N(()=>this.items().filter(t=>t.hasUpdate).length);projectState=_(Ne);depsState=_(I);constructor(){ne(async()=>{this.refresh()})}filterItems(t){let e=this.keyword().trim().toLowerCase();return e?t.filter(o=>o.name.toLowerCase().includes(e)):t}refresh(){this.loading.set(!0),this.api.getDeps(this.projectId()).pipe(P(()=>this.loading.set(!1))).subscribe({next:({items:t,meta:e})=>{this.items.set(t),this.meta.set(e)},error:t=>this.msg.error(t?.message||"\u52A0\u8F7D\u4F9D\u8D56\u5931\u8D25")})}openDetail(t){t.homepage?window.open(t.homepage,"_blank"):window.open(`https://www.npmjs.com/package/${encodeURIComponent(t.name)}`,"_blank")}installOrUpdate(t){let e=t.name;this.installing.set(u(d({},this.installing()),{[e]:!0}));let o=t.installed&&t.hasUpdate?"latest":"required",i=t.installed&&t.hasUpdate?"\u5DF2\u66F4\u65B0":"\u5DF2\u5B89\u88C5";this.api.install(this.projectId(),{name:t.name,group:t.group,target:o}).pipe(P(()=>this.installing.set(u(d({},this.installing()),{[e]:!1})))).subscribe({next:()=>{this.msg.success(i),this.refresh()}})}uninstall(t){let e=t.name;this.uninstalling.set(u(d({},this.uninstalling()),{[e]:!0})),this.api.uninstall(this.projectId(),{name:t.name,group:t.group}).pipe(P(()=>this.uninstalling.set(u(d({},this.uninstalling()),{[e]:!1})))).subscribe({next:()=>{this.msg.success("\u5DF2\u5378\u8F7D"),this.refresh()}})}installDevtools(){this.loading.set(!0),this.api.installDevtools(this.projectId()).pipe(P(()=>this.loading.set(!1))).subscribe({next:()=>{this.msg.success("devtools \u5DF2\u5B89\u88C5"),this.refresh()},error:t=>this.msg.error(t?.message||"devtools \u5B89\u88C5\u5931\u8D25")})}installAll(){let t=this.items().filter(o=>!o.installed);if(!t.length){this.msg.info("\u6CA1\u6709\u9700\u8981\u5B89\u88C5\u7684\u4F9D\u8D56");return}(async()=>{this.loading.set(!0);try{for(let o of t)await new Promise((i,m)=>{this.api.install(this.projectId(),{name:o.name,group:o.group,target:"required"}).subscribe({next:()=>i(),error:f=>m(f)})});this.msg.success("\u5DF2\u5B8C\u6210\u5B89\u88C5"),this.refresh()}catch{this.msg.error("\u6279\u91CF\u5B89\u88C5\u5931\u8D25")}finally{this.loading.set(!1)}})()}trackByName(t,e){return e.group+":"+e.name}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=O({type:n,selectors:[["app-project-deps",8,"component"]],attrs:$e,decls:12,vars:11,consts:[["contentTemplate",""],[3,"title","loading"],["ngProjectAs","actions",5,["actions"]],["nz-input","","placeholder","\u641C\u7D22",1,"search",3,"ngModelChange","ngModel"],["nzType","search","nzInputPrefix",""],[1,"panel"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"group-title"],[1,"list"],[1,"row"],[1,"empty"],["nz-row","","nzAlign","middle",1,"row-inner"],["nz-col","","nzFlex","400px",1,"left"],[1,"pkg-icon"],["nz-icon","","nzType","appstore"],[1,"pkg"],[1,"name"],[1,"sub"],[1,"sep"],["nz-col","","nzFlex","auto",1,"mid"],["nzColor","success"],["nzColor","warning"],[1,"detail",3,"click"],["nz-icon","","nzType","link"],["nz-col","","nzFlex","180px",1,"right"],["nz-button","","nzType","text",3,"nzLoading","nz-tooltip"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzPopconfirmTitle"],["nz-button","","nzType","text",3,"click","nzLoading","nz-tooltip"],["nzType","download"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzOnConfirm","nzPopconfirmTitle"],["nzType","delete","nzTheme","fill",3,"nz-tooltip"]],template:function(e,o){if(e&1){let i=T();r(0,"app-page-layout",1),j(1,2),g(2,"app-ng-devtool"),r(3,"nz-input-wrapper")(4,"input",3),Z("ngModelChange",function(f){return x(i),Y(o.keyword,f)||(o.keyword=f),D(f)}),w("ngModelChange",function(f){return x(i),D(o.keyword.set(f))}),a(),g(5,"nz-icon",4),a(),S(),r(6,"div",5),M(7,Le,1,0,"ng-container",6),g(8,"nz-divider"),M(9,qe,1,0,"ng-container",6),a()(),M(10,Xe,6,2,"ng-template",null,0,te)}if(e&2){let i=K(11);c("title","\u9879\u76EE\u914D\u7F6E")("loading",o.loading()),p(4),X("ngModel",o.keyword),p(3),c("ngTemplateOutlet",i)("ngTemplateOutletContext",$(7,Ae,o.runtimeItems())),p(2),c("ngTemplateOutlet",i)("ngTemplateOutletContext",$(9,Ue,o.devItems()))}},dependencies:[E,ie,ze,ge,fe,_e,ue,de,ce,me,le,se,xe,ve,he,Ce,re,oe,Me,ye,Fe,Se,je,Ee,L,Oe,Ie,Pe,Te,De],styles:[".panel[_ngcontent-%COMP%]{border-radius:10px;padding:16px 18px;box-shadow:0 2px 8px #0000000f}.group-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:6px 0 12px;opacity:.65}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.row[_ngcontent-%COMP%]{border-radius:10px}.row[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a;background:var(--app-primary-3)}.row-inner[_ngcontent-%COMP%]{padding:10px 12px}.left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.left[_ngcontent-%COMP%] .pkg-icon[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:8px;opacity:.65;display:inline-flex;align-items:center;justify-content:center}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-weight:600;line-height:18px}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{margin-top:2px;font-size:12px;opacity:.55}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] .sep[_ngcontent-%COMP%]{margin:0 6px}.mid[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:8px}.mid[_ngcontent-%COMP%] .detail[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--text-color-primary)}.right[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:6px}.empty[_ngcontent-%COMP%]{padding:16px 0;text-align:center}"]})};var Ye=[{path:"",component:V}],B=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[U.forChild(Ye),U]})};var ke=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=y({type:n});static \u0275inj=h({imports:[E,B]})};export{ke as DependenciesModule};
@@ -0,0 +1 @@
1
+ import{e as wn,f as bn}from"./chunk-CO7S3LZV.js";import{a as it,b as De}from"./chunk-GCKL62DR.js";import{b as at,c as st,d as ct}from"./chunk-HCBKQAGF.js";import{a as cn,b as pn,c as Ge}from"./chunk-EC33AXSR.js";import{a as ot,b as rt,d as zn,e as Mn}from"./chunk-35COW2FA.js";import"./chunk-SIVPP74B.js";import{a as lt,b as Ve}from"./chunk-POZS3PD3.js";import{a as ye,b as xe}from"./chunk-J2JNFWJN.js";import{a as $e}from"./chunk-HZ73CM45.js";import{d as he,e as ve,f as ne}from"./chunk-DJJC6FPO.js";import{e as un,f as Ye,g as Xe}from"./chunk-ROB7EMN5.js";import"./chunk-SNCDDYQR.js";import{E as Se,G as xn,g as _n,j as Re,l as Pe,n as Cn,o as et,p as gn,q as fn,r as hn,s as vn,t as yn,u as tt,v as nt}from"./chunk-EP45FT55.js";import{Ab as H,Bb as fe,Cb as F,Fb as qe,G as nn,H as St,Hb as Ie,La as sn,M as J,N as U,O as on,P as rn,T as ln,U as an,V,W as X,Y as O,Z as I,jb as $,lb as K,pb as j,rb as dn,ub as mn,vb as P,x as en,yb as Qe,z as tn}from"./chunk-PTMJ422K.js";import"./chunk-HFZLJHYR.js";import{B as Pt,d as Ze,i as A,o as me}from"./chunk-53YRDYLS.js";import{$b as D,Ca as Lt,Dc as Q,Eb as T,Ec as Zt,Fb as ke,Fc as Y,Ha as E,Ic as m,Jc as k,Kb as W,Kc as se,Lc as Gt,Mc as ce,Nc as pe,Oa as te,Oc as de,Vb as g,Vc as Je,Wc as je,Xb as f,Xc as Qt,Zb as _e,_b as S,a as w,ac as d,ad as ge,b as z,bc as l,cc as a,dc as h,e as Be,f as qt,fd as v,gd as Rt,hc as le,ic as ae,jc as Ce,kc as b,ld as Le,ma as Ae,mb as s,na as Ne,pd as Yt,qc as C,r as It,ra as q,rb as y,rd as Xt,s as Ke,tc as c,uc as Ut,vc as $t,vd as Ue,xa as u,xc as Ht,ya as _,yc as Wt,z as L,zc as Jt}from"./chunk-SJG2JCPL.js";var $n=(i,t)=>t.id;function Hn(i,t){i&1&&h(0,"nz-spin")}function Wn(i,t){if(i&1&&(l(0,"nz-tag"),m(1),a()),i&2){let e=c().$implicit;s(),se("HTTP ",e.response.status)}}function Jn(i,t){i&1&&(l(0,"nz-tag",8),m(1,"ERR"),a())}function Zn(i,t){if(i&1){let e=b();l(0,"button",10),C("click",function(){u(e);let o=c().$implicit,r=c(3);return _(r.copy(o.resolved.curl.bash))}),m(1,"curl"),a()}}function Gn(i,t){if(i&1){let e=b();l(0,"div",3)(1,"div",5)(2,"nz-tag"),m(3),a(),l(4,"span",6),m(5),a()(),l(6,"div",7)(7,"span"),m(8),a(),g(9,Wn,2,1,"nz-tag"),g(10,Jn,2,0,"nz-tag",8),a(),l(11,"div",9)(12,"button",10),C("click",function(){let o=u(e).$implicit,r=c(3);return _(r.replay.emit(o))}),m(13,"\u91CD\u653E"),a(),g(14,Zn,2,0,"button",11),a()()}if(i&2){let e=t.$implicit;s(3),k(e.requestSnapshot.method),s(2),k(e.requestSnapshot.url),s(3),se("",e.metrics.durationMs," ms"),s(),f(e.response?9:-1),s(),f(e.error?10:-1),s(4),f(e.resolved.curl?14:-1)}}function Qn(i,t){i&1&&(l(0,"div",4),m(1,"\u6682\u65E0\u5386\u53F2\u8BB0\u5F55"),a())}function Yn(i,t){if(i&1&&(l(0,"div",2),S(1,Gn,15,6,"div",3,$n),g(3,Qn,2,0,"div",4),a()),i&2){let e=c(2);s(),D(e.histories),s(2),f(e.histories.length?-1:3)}}function Xn(i,t){if(i&1&&(le(0),g(1,Hn,1,0,"nz-spin")(2,Yn,4,1,"div",2),ae()),i&2){let e=c();s(),f(e.loading?1:2)}}var pt=class i{loading=!1;histories=[];close=new y;replay=new y;copy(t){navigator.clipboard.writeText(t)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-api-history-drawer"]],inputs:{loading:"loading",histories:"histories"},outputs:{close:"close",replay:"replay"},decls:2,vars:2,consts:[["nzTitle","\u8BF7\u6C42\u5386\u53F2","nzPlacement","right",3,"nzOnClose","nzVisible","nzWidth"],[4,"nzDrawerContent"],[1,"list"],[1,"item"],[1,"empty"],[1,"row"],[1,"url"],[1,"meta"],["nzColor","red"],[1,"actions"],["nz-button","","nzSize","small",3,"click"],["nz-button","","nzSize","small"]],template:function(e,n){e&1&&(l(0,"nz-drawer",0),C("nzOnClose",function(){return n.close.emit()}),W(1,Xn,3,1,"ng-container",1),a()),e&2&&d("nzVisible",!0)("nzWidth",520)},dependencies:[A,Ge,pn,cn,I,O,V,X,Ve,lt,xe,ye],styles:[".list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.item[_ngcontent-%COMP%]{border:1px solid #f0f0f0;border-radius:8px;padding:10px}.row[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;font-weight:500}.url[_ngcontent-%COMP%]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta[_ngcontent-%COMP%]{margin-top:6px;display:flex;gap:8px;font-size:12px;opacity:.7}.actions[_ngcontent-%COMP%]{margin-top:8px;display:flex;gap:8px}.empty[_ngcontent-%COMP%]{padding:16px;opacity:.6;text-align:center}"]})};var ni=["*"];function ii(i,t){if(i&1){let e=b();l(0,"button",12),C("click",function(o){u(e);let r=c();return r.toggle.emit(r.node.key),_(o.stopPropagation())}),h(1,"nz-icon",13),a()}if(i&2){let e=c();s(),d("nzType",e.hasChildren?e.expanded?"down":"right":"minus")}}function oi(i,t){if(i&1&&(l(0,"nz-tag",5),m(1),a()),i&2){let e=c();s(),k(e.node.method||"")}}function ri(i,t){if(i&1&&(l(0,"div",8),m(1),a()),i&2){let e=c();s(),k(e.node.subtitle)}}function li(i,t){if(i&1){let e=b();l(0,"li",16),C("click",function(){u(e);let o=c(3);return o.createFolder.emit(o.node.id),_(o.visible=!1)}),h(1,"nz-icon",22),l(2,"span"),m(3,"\u65B0\u5EFA\u76EE\u5F55"),a()()}}function ai(i,t){if(i&1){let e=b();l(0,"li",16),C("click",function(){u(e);let o=c(3);return o.move.emit(o.node.id),_(o.visible=!1)}),h(1,"nz-icon",22),l(2,"span"),m(3,"\u79FB\u52A8\u5230"),a()()}}function si(i,t){if(i&1){let e=b();g(0,li,4,0,"li",15),l(1,"li",16),C("click",function(){u(e);let o=c(2);return o.createRequest.emit(o.node.id),_(o.visible=!1)}),h(2,"nz-icon",17),l(3,"span"),m(4,"\u65B0\u5EFA\u8BF7\u6C42"),a()(),g(5,ai,4,0,"li",15),l(6,"li",16),C("click",function(){u(e);let o=c(2);return o.rename.emit(o.node.id),_(o.visible=!1)}),h(7,"nz-icon",18),l(8,"span"),m(9,"\u91CD\u547D\u540D"),a()(),h(10,"li",19),l(11,"li",20),C("nzOnConfirm",function(){u(e);let o=c(2);return _(o.delete.emit(o.node.id))}),h(12,"nz-icon",21),l(13,"span"),m(14,"\u5220\u9664"),a()()}if(i&2){let e=c(2);f(e.node.kind==="collection"?0:-1),s(5),f(e.node.kind==="folder"?5:-1)}}function ci(i,t){if(i&1){let e=b();l(0,"li",16),C("click",function(){u(e);let o=c(2);return o.move.emit(o.node.id),_(o.visible=!1)}),h(1,"nz-icon",22),l(2,"span"),m(3,"\u79FB\u52A8\u5230"),a()(),l(4,"li",16),C("click",function(){u(e);let o=c(2);return o.rename.emit(o.node.id),_(o.visible=!1)}),h(5,"nz-icon",18),l(6,"span"),m(7,"\u91CD\u547D\u540D"),a()(),h(8,"li",19),l(9,"li",20),C("nzOnConfirm",function(){u(e);let o=c(2);return _(o.delete.emit(o.node.id))}),h(10,"nz-icon",21),l(11,"span"),m(12,"\u5220\u9664"),a()()}}function pi(i,t){if(i&1&&(l(0,"ul",14),g(1,si,15,2)(2,ci,13,0),a()),i&2){let e=c();s(),f(e.node.kind!=="request"?1:2)}}function di(i,t){i&1&&(l(0,"div",11),$t(1),a())}var dt=class i{node;expanded=!1;activeKey=null;toggle=new y;selectRequest=new y;selectCollection=new y;createRequest=new y;createFolder=new y;rename=new y;move=new y;copyCurl=new y;delete=new y;visible=!1;get hasChildren(){return(this.node.children?.length??0)>0}get iconType(){return this.node.kind==="request"?"api":this.node.kind==="folder"?"folder":"database"}onClick(){this.node.kind==="request"?this.selectRequest.emit(this.node.id):this.selectCollection.emit(this.node.id)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-collection-tree-item"]],hostVars:2,hostBindings:function(e,n){e&2&&Y("ctree-item",!0)},inputs:{node:"node",expanded:"expanded",activeKey:"activeKey"},outputs:{toggle:"toggle",selectRequest:"selectRequest",selectCollection:"selectCollection",createRequest:"createRequest",createFolder:"createFolder",rename:"rename",move:"move",copyCurl:"copyCurl",delete:"delete"},ngContentSelectors:ni,decls:14,vars:11,consts:[["menuTpl",""],[1,"row"],["nz-button","","nzType","text","nzSize","small",1,"chev"],[1,"main",3,"click"],[1,"icon",3,"nzType"],[1,"method"],[1,"texts"],[1,"title"],[1,"sub"],["nz-button","","nzType","text","nzSize","small","nz-popover","","nzPopoverTrigger","click","nzPopover","","nzPopoverPlacement","right",1,"more",3,"click","nzPopoverVisibleChange","nzPopoverVisible","nzPopoverContent","nzPopoverOverlayClassName"],["nzType","more","nzTheme","outline"],[1,"children"],["nz-button","","nzType","text","nzSize","small",1,"chev",3,"click"],[3,"nzType"],["nz-menu",""],["nz-menu-item",""],["nz-menu-item","",3,"click"],["nzType","plus"],["nzType","edit"],["nz-menu-divider",""],["nz-menu-item","","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u8BA4\u5220\u9664\u5417\uFF1F",3,"nzOnConfirm"],["nzType","delete"],["nzType","folder"]],template:function(e,n){if(e&1){let o=b();Ut(),l(0,"div",1),g(1,ii,2,1,"button",2),l(2,"div",3),C("click",function(){return u(o),_(n.onClick())}),h(3,"nz-icon",4),g(4,oi,2,1,"nz-tag",5),l(5,"div",6)(6,"div",7),m(7),a(),g(8,ri,2,1,"div",8),a()(),l(9,"button",9),C("click",function(p){return u(o),_(p.stopPropagation())}),de("nzPopoverVisibleChange",function(p){return u(o),pe(n.visible,p)||(n.visible=p),_(p)}),h(10,"nz-icon",10),a(),W(11,pi,3,1,"ng-template",null,0,ge),a(),g(13,di,2,0,"div",11)}if(e&2){let o=Q(12);Y("active",n.activeKey===n.node.key),s(),f(n.hasChildren?1:-1),s(2),d("nzType",n.iconType),s(),f(n.node.kind==="request"?4:-1),s(3),k(n.node.title),s(),f(n.node.subtitle?8:-1),s(),ce("nzPopoverVisible",n.visible),d("nzPopoverContent",o)("nzPopoverOverlayClassName","project-item-popover"),s(4),f(n.hasChildren&&n.expanded?13:-1)}},dependencies:[A,I,O,V,P,U,J,Xe,Ye,et,Pe,Re,Cn,xe,ye,De,it],styles:[".item[_nghost-%COMP%]{display:block}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid #f0f0f0;border-radius:10px;cursor:pointer;transition:background .15s,border-color .15s}.row.active[_ngcontent-%COMP%]{background:#f5f5f5;border-color:#d9d9d9}.chev[_ngcontent-%COMP%]{flex:0 0 auto}.chev[_ngcontent-%COMP%] nz-icon[_ngcontent-%COMP%]{font-size:12px;transition:transform .15s}.main[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.icon[_ngcontent-%COMP%]{opacity:.75}.method[_ngcontent-%COMP%]{flex:0 0 auto}.texts[_ngcontent-%COMP%]{flex:1;min-width:0}.title[_ngcontent-%COMP%]{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sub[_ngcontent-%COMP%]{font-size:12px;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.more[_ngcontent-%COMP%]{flex:0 0 auto;visibility:hidden}.row[_ngcontent-%COMP%]:hover .more[_ngcontent-%COMP%]{visibility:visible}.children[_ngcontent-%COMP%]{margin-left:18px;padding-top:6px;display:flex;flex-direction:column;gap:6px}"]})};var En=i=>({$implicit:i}),An=(i,t)=>t.key;function ui(i,t){if(i&1&&Ce(0,1),i&2){let e=t.$implicit;c();let n=Q(4);d("ngTemplateOutlet",n)("ngTemplateOutletContext",je(2,En,e))}}function _i(i,t){i&1&&(l(0,"div",2),m(1,"\u6682\u65E0\u8BF7\u6C42"),a())}function Ci(i,t){if(i&1&&Ce(0,1),i&2){let e=t.$implicit;c(2);let n=Q(4);d("ngTemplateOutlet",n)("ngTemplateOutletContext",je(2,En,e))}}function gi(i,t){if(i&1){let e=b();l(0,"app-collection-tree-item",3),C("toggle",function(o){u(e);let r=c();return _(r.toggle(o))})("selectRequest",function(o){u(e);let r=c();return _(r.onSelectRequest(o))})("selectCollection",function(o){u(e);let r=c();return _(r.onSelectCollection(o))})("createRequest",function(o){u(e);let r=c();return _(r.createRequest.emit({collectionId:o}))})("createFolder",function(o){u(e);let r=c();return _(r.createFolder.emit({collectionId:o}))})("rename",function(o){let r=u(e).$implicit,p=c();return _(p.rename.emit({id:o,kind:r.kind}))})("move",function(o){let r=u(e).$implicit,p=c();return _(p.move.emit({id:o,kind:r.kind}))})("copyCurl",function(o){u(e);let r=c();return _(r.copyCurl.emit(o))})("delete",function(o){let r=u(e).$implicit,p=c();return _(p.delete.emit({id:o,kind:r.kind}))}),S(1,Ci,1,4,"ng-container",1,An),a()}if(i&2){let e=t.$implicit,n=c();d("node",e)("expanded",n.expanded(e.key))("activeKey",n.activeKey()),s(),D(e.children)}}var mt=class i{nodes=[];activeRequestId=Le(null);selectRequest=new y;selectCollection=new y;createRequest=new y;createFolder=new y;rename=new y;move=new y;copyCurl=new y;delete=new y;activeKey=v(()=>this.activeRequestId()?`r:${this.activeRequestId()}`:null);_activeCollectionId=E(null);activeCollectionId=v(()=>this._activeCollectionId());expandedMap=E({});expanded(t){return!!this.expandedMap()[t]}toggle(t){let e=w({},this.expandedMap());e[t]=!e[t],this.expandedMap.set(e)}onSelectRequest(t){this.selectRequest.emit(t)}onSelectCollection(t){this._activeCollectionId.set(t),this.selectCollection.emit(t);let e=`c:${t}`,n=w({},this.expandedMap());n[e]=!0,this.expandedMap.set(n)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-collection-tree"]],hostVars:2,hostBindings:function(e,n){e&2&&Y("tree-body",!0)},inputs:{nodes:"nodes",activeRequestId:[1,"activeRequestId"]},outputs:{selectRequest:"selectRequest",selectCollection:"selectCollection",createRequest:"createRequest",createFolder:"createFolder",rename:"rename",move:"move",copyCurl:"copyCurl",delete:"delete"},decls:5,vars:1,consts:[["nodeTpl",""],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"empty"],[3,"toggle","selectRequest","selectCollection","createRequest","createFolder","rename","move","copyCurl","delete","node","expanded","activeKey"]],template:function(e,n){e&1&&(S(0,ui,1,4,"ng-container",1,An),g(2,_i,2,0,"div",2),W(3,gi,3,3,"ng-template",null,0,ge)),e&2&&(D(n.nodes),s(2),f(n.nodes.length?-1:2))},dependencies:[A,Ze,P,F,U,I,dt],styles:[".tree-body[_nghost-%COMP%]{flex:1 1 auto;height:0;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px}.tree-body[_nghost-%COMP%] .empty[_ngcontent-%COMP%]{padding:16px;opacity:.6;text-align:center}"]})};function fi(i,t){if(i&1){let e=b();l(0,"ul",11)(1,"li",12),C("click",function(){u(e);let o=c();return o.createRequest.emit({collectionId:null}),_(o.visible=!1)}),h(2,"nz-icon",13),l(3,"span"),m(4,"\u65B0\u5EFA\u8BF7\u6C42"),a()(),l(5,"li",12),C("click",function(){u(e);let o=c();return _(o.createCollection.emit())}),h(6,"nz-icon",14),l(7,"span"),m(8,"\u65B0\u5EFA\u96C6\u5408"),a()()()}}var ut=class i{nodes=Le([]);q=Yt("");activeId=Le(null);loading=!1;select=new y;createRequest=new y;createCollection=new y;createFolder=new y;reload=new y;delete=new y;rename=new y;move=new y;visible=!1;static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-request-collections"]],inputs:{nodes:[1,"nodes"],q:[1,"q"],activeId:[1,"activeId"],loading:"loading"},outputs:{q:"qChange",select:"select",createRequest:"createRequest",createCollection:"createCollection",createFolder:"createFolder",reload:"reload",delete:"delete",rename:"rename",move:"move"},decls:13,vars:7,consts:[["menuTpl",""],[1,"wrap"],[1,"header"],["nzInputPrefix","","nzType","search",1,"search-icon"],["nz-input","","placeholder","\u641C\u7D22",3,"ngModelChange","ngModel"],["nz-button","","nzType","text",3,"click"],["nzTheme","outline",3,"nzType"],["nz-button","","nz-popover","","nzPopoverTrigger","click","nzPopoverPlacement","bottomCenter","nzType","text",3,"nzPopoverVisibleChange","nzPopoverVisible","nzPopoverContent","nzPopoverOverlayClassName"],["nzType","plus","nzTheme","outline"],[1,"body"],[3,"selectRequest","createRequest","createFolder","rename","move","delete","nodes","activeRequestId"],["nz-menu",""],["nz-menu-item","",1,"item",3,"click"],["nzType","api"],["nzType","folder-add"]],template:function(e,n){if(e&1){let o=b();l(0,"div",1)(1,"div",2)(2,"nz-input-wrapper"),h(3,"nz-icon",3),l(4,"input",4),de("ngModelChange",function(p){return u(o),pe(n.q,p)||(n.q=p),_(p)}),a()(),l(5,"button",5),C("click",function(){return u(o),_(n.reload.emit())}),h(6,"nz-icon",6),a(),l(7,"button",7),de("nzPopoverVisibleChange",function(p){return u(o),pe(n.visible,p)||(n.visible=p),_(p)}),h(8,"nz-icon",8),a()(),l(9,"div",9)(10,"app-collection-tree",10),C("selectRequest",function(p){return u(o),_(n.select.emit(p))})("createRequest",function(p){return u(o),_(n.createRequest.emit({collectionId:p.collectionId}))})("createFolder",function(p){return u(o),_(n.createFolder.emit({collectionId:p.collectionId??null}))})("rename",function(p){return u(o),_(n.rename.emit(p))})("move",function(p){return u(o),_(n.move.emit(p))})("delete",function(p){return u(o),_(n.delete.emit({id:p.id,kind:p.kind}))}),a()()(),W(11,fi,9,0,"ng-template",null,0,ge)}if(e&2){let o=Q(12);s(4),ce("ngModel",n.q),s(2),d("nzType",n.loading?"loading":"reload"),s(),ce("nzPopoverVisible",n.visible),d("nzPopoverContent",o)("nzPopoverOverlayClassName","project-item-popover"),s(3),d("nodes",n.nodes())("activeRequestId",n.activeId())}},dependencies:[A,P,$,K,j,I,O,V,F,H,fe,Qe,U,J,et,Pe,Re,Xe,Ye,mt],styles:["[_nghost-%COMP%]{height:100%;display:flex;flex-direction:column;width:320px;flex:0 0 320px}.wrap[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column;border:1px solid rgba(0,0,0,.12);border-radius:12px;overflow:hidden}.header[_ngcontent-%COMP%]{width:100%;padding:10px 12px;display:flex;gap:10px;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(0,0,0,.12);flex:0 0 auto}.header[_ngcontent-%COMP%] nz-input-wrapper[_ngcontent-%COMP%]{width:100%;border-radius:18px}.body[_ngcontent-%COMP%]{flex:1 1 auto;height:0;display:flex;flex-direction:column}"]})};function hi(i,t){i&1&&Ce(0)}function vi(i,t){if(i&1&&W(0,hi,1,0,"ng-container",7),i&2){let e=c(3);d("nzStringTemplateOutlet",e.nzIcon)}}function yi(i,t){if(i&1&&h(0,"nz-icon",6),i&2){let e=c(3);d("nzType",e.nzIconType||e.inferredIconType)("nzTheme",e.iconTheme)}}function xi(i,t){if(i&1&&(l(0,"div",2),g(1,vi,1,1,"ng-container")(2,yi,1,2,"nz-icon",6),a()),i&2){let e=c(2);s(),f(e.nzIcon?1:2)}}function wi(i,t){if(i&1&&(le(0),m(1),ae()),i&2){let e=c(4);s(),k(e.nzMessage)}}function bi(i,t){if(i&1&&(l(0,"span",8),W(1,wi,2,1,"ng-container",7),a()),i&2){let e=c(3);s(),d("nzStringTemplateOutlet",e.nzMessage)}}function zi(i,t){if(i&1&&(le(0),m(1),ae()),i&2){let e=c(4);s(),k(e.nzDescription)}}function Mi(i,t){if(i&1&&(l(0,"span",9),W(1,zi,2,1,"ng-container",7),a()),i&2){let e=c(3);s(),d("nzStringTemplateOutlet",e.nzDescription)}}function Ti(i,t){if(i&1&&(l(0,"div",3),g(1,bi,2,1,"span",8),g(2,Mi,2,1,"span",9),a()),i&2){let e=c(2);s(),f(e.nzMessage?1:-1),s(),f(e.nzDescription?2:-1)}}function Ei(i,t){if(i&1&&(le(0),m(1),ae()),i&2){let e=c(3);s(),k(e.nzAction)}}function Ai(i,t){if(i&1&&(l(0,"div",4),W(1,Ei,2,1,"ng-container",7),a()),i&2){let e=c(2);s(),d("nzStringTemplateOutlet",e.nzAction)}}function Ni(i,t){if(i&1&&(le(0),l(1,"span",12),m(2),a(),ae()),i&2){let e=c(4);s(2),k(e.nzCloseText)}}function ki(i,t){if(i&1&&W(0,Ni,3,1,"ng-container",7),i&2){let e=c(3);d("nzStringTemplateOutlet",e.nzCloseText)}}function qi(i,t){i&1&&h(0,"nz-icon",11)}function Ii(i,t){if(i&1){let e=b();l(0,"button",10),C("click",function(){u(e);let o=c(2);return _(o.closeAlert())}),g(1,ki,1,1,"ng-container")(2,qi,1,0,"nz-icon",11),a()}if(i&2){let e=c(2);s(),f(e.nzCloseText?1:2)}}function Ri(i,t){if(i&1){let e=b();l(0,"div",1),C("@slideAlertMotion.done",function(){u(e);let o=c();return _(o.onFadeAnimationDone())}),g(1,xi,3,1,"div",2),g(2,Ti,3,2,"div",3),g(3,Ai,2,1,"div",4),g(4,Ii,3,1,"button",5),a()}if(i&2){let e=c();Y("ant-alert-rtl",e.dir==="rtl")("ant-alert-success",e.nzType==="success")("ant-alert-info",e.nzType==="info")("ant-alert-warning",e.nzType==="warning")("ant-alert-error",e.nzType==="error")("ant-alert-no-icon",!e.nzShowIcon)("ant-alert-banner",e.nzBanner)("ant-alert-closable",e.nzCloseable)("ant-alert-with-description",!!e.nzDescription),d("@.disabled",e.nzNoAnimation)("@slideAlertMotion",void 0),s(),f(e.nzShowIcon?1:-1),s(),f(e.nzMessage||e.nzDescription?2:-1),s(),f(e.nzAction?3:-1),s(),f(e.nzCloseable||e.nzCloseText?4:-1)}}var Nn="alert",Te=(()=>{var p;let i,t=[],e=[],n,o=[],r=[];return p=class{cdr=q(Xt);directionality=q(en);destroyRef=q(Lt);_nzModuleName=Nn;nzAction=null;nzCloseText=null;nzIconType=null;nzMessage=null;nzDescription=null;nzType="info";nzCloseable=Ke(this,t,!1);nzShowIcon=(Ke(this,e),Ke(this,o,!1));nzBanner=(Ke(this,r),!1);nzNoAnimation=!1;nzIcon=null;nzOnClose=new y;closed=!1;iconTheme="fill";inferredIconType="info-circle";dir="ltr";isTypeSet=!1;isShowIconSet=!1;constructor(){nn(Nn,()=>this.cdr.markForCheck())}ngOnInit(){this.directionality.change?.pipe(tn(this.destroyRef)).subscribe(M=>{this.dir=M,this.cdr.detectChanges()}),this.dir=this.directionality.value}closeAlert(){this.closed=!0}onFadeAnimationDone(){this.closed&&this.nzOnClose.emit(!0)}ngOnChanges(M){let{nzShowIcon:N,nzDescription:G,nzType:At,nzBanner:R}=M;if(N&&(this.isShowIconSet=!0),At)switch(this.isTypeSet=!0,this.nzType){case"error":this.inferredIconType="close-circle";break;case"success":this.inferredIconType="check-circle";break;case"info":this.inferredIconType="info-circle";break;case"warning":this.inferredIconType="exclamation-circle";break}G&&(this.iconTheme=this.nzDescription?"outline":"fill"),R&&(this.isTypeSet||(this.nzType="warning"),this.isShowIconSet||(this.nzShowIcon=!0))}},(()=>{let M=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;i=[St()],n=[St()],It(null,null,i,{kind:"field",name:"nzCloseable",static:!1,private:!1,access:{has:N=>"nzCloseable"in N,get:N=>N.nzCloseable,set:(N,G)=>{N.nzCloseable=G}},metadata:M},t,e),It(null,null,n,{kind:"field",name:"nzShowIcon",static:!1,private:!1,access:{has:N=>"nzShowIcon"in N,get:N=>N.nzShowIcon,set:(N,G)=>{N.nzShowIcon=G}},metadata:M},o,r),M&&Object.defineProperty(p,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:M})})(),qt(p,"\u0275fac",function(N){return new(N||p)}),qt(p,"\u0275cmp",T({type:p,selectors:[["nz-alert"]],inputs:{nzAction:"nzAction",nzCloseText:"nzCloseText",nzIconType:"nzIconType",nzMessage:"nzMessage",nzDescription:"nzDescription",nzType:"nzType",nzCloseable:[2,"nzCloseable","nzCloseable",Ue],nzShowIcon:[2,"nzShowIcon","nzShowIcon",Ue],nzBanner:[2,"nzBanner","nzBanner",Ue],nzNoAnimation:[2,"nzNoAnimation","nzNoAnimation",Ue],nzIcon:"nzIcon"},outputs:{nzOnClose:"nzOnClose"},exportAs:["nzAlert"],features:[te],decls:1,vars:1,consts:[[1,"ant-alert",3,"ant-alert-rtl","ant-alert-success","ant-alert-info","ant-alert-warning","ant-alert-error","ant-alert-no-icon","ant-alert-banner","ant-alert-closable","ant-alert-with-description"],[1,"ant-alert"],[1,"ant-alert-icon"],[1,"ant-alert-content"],[1,"ant-alert-action"],["type","button","tabindex","0",1,"ant-alert-close-icon"],[3,"nzType","nzTheme"],[4,"nzStringTemplateOutlet"],[1,"ant-alert-message"],[1,"ant-alert-description"],["type","button","tabindex","0",1,"ant-alert-close-icon",3,"click"],["nzType","close"],[1,"ant-alert-close-text"]],template:function(N,G){N&1&&g(0,Ri,5,24,"div",0),N&2&&f(G.closed?-1:0)},dependencies:[U,J,rn,on],encapsulation:2,data:{animation:[sn]},changeDetection:0})),p})(),Oe=(()=>{class i{static \u0275fac=function(n){return new(n||i)};static \u0275mod=ke({type:i});static \u0275inj=Ne({imports:[Te]})}return i})();function Pi(i,t){if(i&1&&h(0,"nz-option",3),i&2){let e=t.$implicit;d("nzValue",e)("nzLabel",e)}}function Si(i,t){if(i&1){let e=b();l(0,"nz-select",8),C("ngModelChange",function(o){u(e);let r=c();return _(r.setApiKeyIn(o))}),h(1,"nz-option",9)(2,"nz-option",10),a()}if(i&2){let e=c();d("ngModel",e.apiKeyIn())}}function Di(i,t){i&1&&(l(0,"div",6),m(1,"\u65E0\u9274\u6743"),a())}function Vi(i,t){if(i&1){let e=b();l(0,"div",7)(1,"div",11)(2,"div",12),m(3,"Username"),a(),l(4,"input",13),C("ngModelChange",function(o){u(e);let r=c();return _(r.setBasicUsername(o))}),a()(),l(5,"div",11)(6,"div",12),m(7,"Password"),a(),l(8,"input",14),C("ngModelChange",function(o){u(e);let r=c();return _(r.setBasicPassword(o))}),a()()()}if(i&2){let e=c();s(4),d("ngModel",e.basicUsername()),s(4),d("ngModel",e.basicPassword())}}function Oi(i,t){if(i&1){let e=b();l(0,"div",7)(1,"div",11)(2,"div",12),m(3,"Token"),a(),l(4,"input",15),C("ngModelChange",function(o){u(e);let r=c();return _(r.setBearerToken(o))}),a()()()}if(i&2){let e=c();s(4),d("ngModel",e.bearerToken())}}function Fi(i,t){i&1&&h(0,"nz-alert",18)}function Bi(i,t){i&1&&h(0,"nz-alert",19)}function Ki(i,t){if(i&1){let e=b();l(0,"div",7)(1,"div",11)(2,"div",12),m(3,"Key"),a(),l(4,"input",16),C("ngModelChange",function(o){u(e);let r=c();return _(r.setApiKeyKey(o))}),a()(),l(5,"div",11)(6,"div",12),m(7,"Value"),a(),l(8,"input",17),C("ngModelChange",function(o){u(e);let r=c();return _(r.setApiKeyValue(o))}),a()(),g(9,Fi,1,0,"nz-alert",18),g(10,Bi,1,0,"nz-alert",19),a()}if(i&2){let e=c();s(4),d("ngModel",e.apiKeyKey()),s(4),d("ngModel",e.apiKeyValue()),s(),f(e.apiKeyIn()==="query"?9:-1),s(),f(e.apiKeyIn()==="header"?10:-1)}}var _t=class i{auth;authChange=new y;types=["none","basic","bearer","apikey"];type=v(()=>this.auth?.type??"none");basicUsername=v(()=>this.auth?.type==="basic"?this.auth.basic?.username??"":"");basicPassword=v(()=>this.auth?.type==="basic"?this.auth.basic?.password??"":"");bearerToken=v(()=>this.auth?.type==="bearer"?this.auth.bearer?.token??"":"");apiKeyIn=v(()=>this.auth?.type!=="apikey"?"header":this.auth.apikey?.in??"header");apiKeyKey=v(()=>this.auth?.type==="apikey"?this.auth.apikey?.key??"":"");apiKeyValue=v(()=>this.auth?.type==="apikey"?this.auth.apikey?.value??"":"");setType(t){if(t==="none"){this.authChange.emit({type:"none"});return}if(t==="basic"){this.authChange.emit({type:"basic",basic:{username:"",password:""}});return}if(t==="bearer"){this.authChange.emit({type:"bearer",bearer:{token:""}});return}if(t==="apikey"){this.authChange.emit({type:"apikey",apikey:{in:"header",key:"",value:""}});return}}setBasicUsername(t){let e=z(w({},this.auth??{type:"basic"}),{type:"basic",basic:z(w({},this.auth?.basic),{username:t})});this.authChange.emit(e)}setBasicPassword(t){let e=z(w({},this.auth??{type:"basic"}),{type:"basic",basic:z(w({},this.auth?.basic),{password:t})});this.authChange.emit(e)}setBearerToken(t){let e=z(w({},this.auth??{type:"bearer"}),{type:"bearer",bearer:z(w({},this.auth?.bearer),{token:t})});this.authChange.emit(e)}setApiKeyIn(t){let e=z(w({},this.auth??{type:"apikey"}),{type:"apikey",apikey:z(w({},this.auth?.apikey),{in:t,key:this.apiKeyKey(),value:this.apiKeyValue()})});this.authChange.emit(e)}setApiKeyKey(t){let e=z(w({},this.auth??{type:"apikey"}),{type:"apikey",apikey:z(w({},this.auth?.apikey),{in:this.apiKeyIn(),key:t,value:this.apiKeyValue()})});this.authChange.emit(e)}setApiKeyValue(t){let e=z(w({},this.auth??{type:"apikey"}),{type:"apikey",apikey:z(w({},this.auth?.apikey),{in:this.apiKeyIn(),key:this.apiKeyKey(),value:t})});this.authChange.emit(e)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-auth-editor"]],inputs:{auth:"auth"},outputs:{authChange:"authChange"},decls:11,vars:3,consts:[[1,"wrap"],[1,"bar"],[1,"type",3,"ngModelChange","ngModel"],[3,"nzValue","nzLabel"],[1,"in",3,"ngModel"],[1,"main"],[1,"empty"],[1,"grid"],[1,"in",3,"ngModelChange","ngModel"],["nzValue","header","nzLabel","in: header"],["nzValue","query","nzLabel","in: query"],[1,"row"],[1,"label"],["nz-input","","placeholder","username",3,"ngModelChange","ngModel"],["nz-input","","placeholder","password","type","password",3,"ngModelChange","ngModel"],["nz-input","","placeholder","Bearer token",3,"ngModelChange","ngModel"],["nz-input","","placeholder","x-api-key / api_key",3,"ngModelChange","ngModel"],["nz-input","","placeholder","value",3,"ngModelChange","ngModel"],["nzType","info","nzShowIcon","","nzMessage","\u63D0\u793A\uFF1Aquery \u578B API Key \u4E0D\u4F1A\u5199\u5165\u8BF7\u6C42\u5934\uFF0C\u4F1A\u5728\u53D1\u9001\u65F6\u62FC\u63A5\u5230 URL \u67E5\u8BE2\u53C2\u6570\u4E2D\u3002"],["nzType","info","nzShowIcon","","nzMessage","\u63D0\u793A\uFF1Aheader \u578B API Key \u4F1A\u5728\u53D1\u9001\u65F6\u5199\u5165\u8BF7\u6C42\u5934\u3002"]],template:function(e,n){if(e&1&&(l(0,"div",0)(1,"div",1)(2,"nz-select",2),C("ngModelChange",function(r){return n.setType(r)}),S(3,Pi,1,2,"nz-option",3,_e),a(),g(5,Si,3,1,"nz-select",4),a(),l(6,"div",5),g(7,Di,2,0,"div",6)(8,Vi,9,2,"div",7)(9,Oi,5,1,"div",7)(10,Ki,11,4,"div",7),a()()),e&2){let o;s(2),d("ngModel",n.type()),s(),D(n.types),s(2),f(n.type()==="apikey"?5:-1),s(2),f((o=n.type())==="none"?7:o==="basic"?8:o==="bearer"?9:o==="apikey"?10:-1)}},dependencies:[A,P,$,K,j,ne,he,ve,F,H,Oe,Te],styles:[".wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:220px}.bar[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0}.type[_ngcontent-%COMP%]{width:160px}.in[_ngcontent-%COMP%]{width:140px}.main[_ngcontent-%COMP%]{flex:1 1 auto;overflow:auto;padding-top:10px}.empty[_ngcontent-%COMP%]{padding:12px;opacity:.7}.grid[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.row[_ngcontent-%COMP%]{display:grid;grid-template-columns:100px 1fr;align-items:center;gap:10px}.label[_ngcontent-%COMP%]{font-size:12px;opacity:.8}"]})};var qn=Be($e());var Li=(i,t)=>t.id;function Ui(i,t){if(i&1){let e=b();l(0,"label",10),C("ngModelChange",function(o){u(e);let r=c();return _(r.toggleEnabled(o))}),a()}if(i&2){let e=c();d("ngModel",e.isAllEnabled())}}function $i(i,t){if(i&1){let e=b();l(0,"div",9)(1,"div",2)(2,"label",11),C("ngModelChange",function(o){let r=u(e).$index,p=c();return _(p.setEnabled(r,o))}),a()(),l(3,"div",12)(4,"input",13),C("ngModelChange",function(o){let r=u(e).$index,p=c();return _(p.setKey(r,o))}),a()(),l(5,"div",5)(6,"input",14),C("ngModelChange",function(o){let r=u(e).$index,p=c();return _(p.setValue(r,o))}),a()(),l(7,"div",6)(8,"input",14),C("ngModelChange",function(o){let r=u(e).$index,p=c();return _(p.setDescription(r,o))}),a()(),l(9,"div",7)(10,"button",15),C("click",function(){let o=u(e).$index,r=c();return _(r.removeRow(o))}),h(11,"nz-icon",16),a()()()}if(i&2){let e=t.$implicit,n=c();s(2),d("ngModel",e.enabled)("nzDisabled",!n.keepTrailingBlank),s(),d("nz-tooltip",n.keepTrailingBlank?"":"\u81EA\u52A8\u63D0\u53D6Url \u4E2D\u7684 Path \u53C2\u6570\uFF0C\u652F\u6301{param} \u4E0E :param"),s(),d("readonly",!n.keepTrailingBlank)("placeholder",n.keyPlaceholder)("ngModel",e.key),s(2),d("placeholder",n.valuePlaceholder)("ngModel",e.value),s(2),d("placeholder",n.descriptionLabel)("ngModel",e.description)}}var be=class i{ngOnChanges(t){t.rows&&(this.rows=this.withTrailingBlank(this.rows))}rows=[];rowsChange=new y;keyLabel="Key";valueLabel="Value";keyPlaceholder="key";valuePlaceholder="value";descriptionLabel="Description";keepTrailingBlank=!0;enabledCount=v(()=>this.rows.filter(t=>t.enabled).length);isAllEnabled(){return this.rows.length>0&&this.rows.every(t=>t.enabled)}toggleEnabled(t){let e=this.rows.map(n=>z(w({},n),{enabled:t}));this.emit(e)}emit(t){this.rowsChange.emit(t)}withTrailingBlank(t){return this.keepTrailingBlank?this.ensureTrailingBlank(t):t}createBlankRow(){return{id:(0,qn.uniqueId)(),key:"",value:"",description:"",enabled:!0}}isBlankRow(t){if(!t)return!0;let e=(t.key??"").trim(),n=(t.value??"").trim(),o=(t.description??"").trim();return!e&&!n&&!o}ensureTrailingBlank(t){let e=Array.isArray(t)?t:[];if(e.length===0)return[this.createBlankRow()];let n=e[e.length-1];return this.isBlankRow(n)?e:[...e,this.createBlankRow()]}sameRowsRefOrContent(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;let n=this.isBlankRow(t[t.length-1]),o=this.isBlankRow(e[e.length-1]);return n===o}removeRow(t){let e=this.rows.filter((n,o)=>o!==t);this.emit(this.withTrailingBlank(e))}setEnabled(t,e){let n=this.rows.map((o,r)=>r===t?z(w({},o),{enabled:e}):o);this.emit(n)}setValue(t,e){this.patchRow(t,{value:e})}setKey(t,e){this.patchRow(t,{key:e})}setDescription(t,e){this.patchRow(t,{description:e})}patchRow(t,e){let n=this.rows.map((o,r)=>r===t?w(w({},o),e):o);this.emit(this.withTrailingBlank(n))}addRow(){let t=[...this.rows,this.createBlankRow()];this.emit(this.withTrailingBlank(t))}clearDisabled(){let t=this.rows.filter(e=>e.enabled);this.emit(this.withTrailingBlank(t))}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-kv-table"]],inputs:{rows:"rows",keyLabel:"keyLabel",valueLabel:"valueLabel",keyPlaceholder:"keyPlaceholder",valuePlaceholder:"valuePlaceholder",descriptionLabel:"descriptionLabel",keepTrailingBlank:"keepTrailingBlank"},outputs:{rowsChange:"rowsChange"},features:[te],decls:14,vars:4,consts:[[1,"kv-wrap"],[1,"kv-head"],[1,"c-check"],["nz-checkbox","",3,"ngModel"],[1,"c-key"],[1,"c-val"],[1,"c-des"],[1,"c-op"],[1,"kv-body"],[1,"kv-row"],["nz-checkbox","",3,"ngModelChange","ngModel"],["nz-checkbox","",3,"ngModelChange","ngModel","nzDisabled"],[1,"c-key",3,"nz-tooltip"],["nz-input","",3,"ngModelChange","readonly","placeholder","ngModel"],["nz-input","",3,"ngModelChange","placeholder","ngModel"],["nz-button","","nzType","text","nz-tooltip","","nzTooltipTitle","\u5220\u9664",3,"click"],["nzType","minus-circle","nzTheme","outline"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"div",1)(2,"div",2),g(3,Ui,1,1,"label",3),a(),l(4,"div",4),m(5),a(),l(6,"div",5),m(7),a(),l(8,"div",6),m(9),a(),h(10,"div",7),a(),l(11,"div",8),S(12,$i,12,10,"div",9,Li),a()()),e&2&&(s(3),f(n.keepTrailingBlank?3:-1),s(2),k(n.keyLabel),s(2),k(n.valueLabel),s(2),k(n.descriptionLabel),s(3),D(n.rows))},dependencies:[A,P,$,K,j,I,O,V,rt,ot,F,H,U,J,Ie,qe],styles:[".kv-wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.kv-toolbar[_ngcontent-%COMP%]{padding:8px 0;display:flex;justify-content:space-between;align-items:center;gap:10px}.kv-toolbar[_ngcontent-%COMP%] .left[_ngcontent-%COMP%], .kv-toolbar[_ngcontent-%COMP%] .right[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}.hint[_ngcontent-%COMP%]{font-size:12px;opacity:.7}.kv-head[_ngcontent-%COMP%]{display:grid;grid-template-columns:40px 1fr 1fr 2fr 44px;gap:8px;padding:6px 0;font-size:14px;border-bottom:1px solid #f0f0f0;align-items:center}.kv-head[_ngcontent-%COMP%] .c-key[_ngcontent-%COMP%], .kv-head[_ngcontent-%COMP%] .c-val[_ngcontent-%COMP%], .kv-head[_ngcontent-%COMP%] .c-des[_ngcontent-%COMP%]{opacity:.75}.kv-body[_ngcontent-%COMP%]{flex:1 1 auto;overflow:auto;padding:8px 0}.kv-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:40px 1fr 1fr 2fr 44px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px dashed #f0f0f0}.c-check[_ngcontent-%COMP%], .c-op[_ngcontent-%COMP%]{display:flex;justify-content:center}.kv-empty[_ngcontent-%COMP%]{padding:16px;opacity:.75;display:flex;align-items:center;justify-content:space-between;border:1px dashed #e8e8e8;border-radius:8px;margin-top:8px}"]})};var In=Be($e());function Hi(i,t){if(i&1&&h(0,"nz-option",3),i&2){let e=t.$implicit;d("nzValue",e)("nzLabel",e)}}function Wi(i,t){if(i&1){let e=b();l(0,"button",10),C("click",function(){u(e);let o=c();return _(o.formatJson())}),m(1,"\u683C\u5F0F\u5316 JSON"),a()}}function Ji(i,t){i&1&&(l(0,"div",7),m(1,"\u65E0 Body"),a())}function Zi(i,t){if(i&1){let e=b();l(0,"textarea",11),C("ngModelChange",function(o){u(e);let r=c();return _(r.setTextBody(o))}),a()}if(i&2){let e=c();d("ngModel",e.textBody())}}function Gi(i,t){if(i&1&&(l(0,"div",13),m(1),a()),i&2){let e=c(2);s(),k(e.jsonError())}}function Qi(i,t){if(i&1){let e=b();l(0,"textarea",12),C("ngModelChange",function(o){u(e);let r=c();return _(r.setJsonText(o))}),a(),g(1,Gi,2,1,"div",13)}if(i&2){let e=c();d("ngModel",e.jsonText()),s(),f(e.jsonError()?1:-1)}}function Yi(i,t){if(i&1){let e=b();l(0,"app-kv-table",14),C("rowsChange",function(o){u(e);let r=c();return _(r.setUrlRows(o))}),a()}if(i&2){let e=c();d("rows",e.urlRows())}}function Xi(i,t){i&1&&(l(0,"div",7),m(1,"MVP \u4EC5\u652F\u6301 none/json/text/urlencoded"),a())}var Ct=class i{msg=q(Se);body;bodyChange=new y;bodySig=E(void 0);modes=["none","json","text","urlencoded","form","binary"];_jsonText=E("");mode=v(()=>this.bodySig()?.mode??"none");contentType=v(()=>this.bodySig()?.contentType??"");jsonText=v(()=>{if(this.mode()!=="json")return"";let t=this.body?.content;if(typeof t=="string")return t;if(t==null)return this._jsonText()||"";try{return JSON.stringify(t,null,2)}catch{return this._jsonText()||""}});jsonError=E("");textBody=v(()=>this.body?.mode==="text"?String(this.body?.content??""):"");urlRows=v(()=>{if(this.body?.mode!=="urlencoded")return[];let t=this.body?.content;return!t||typeof t!="object"||Array.isArray(t)?[]:Object.entries(t).map(([e,n])=>({key:e,value:String(n??""),enabled:!0,id:(0,In.uniqueId)()}))});setMode(t){let e=this.body,n=z(w({},e??{}),{mode:t});if(n.contentType||(t==="json"&&(n.contentType="application/json; charset=utf-8"),t==="text"&&(n.contentType="text/plain; charset=utf-8"),t==="urlencoded"&&(n.contentType="application/x-www-form-urlencoded; charset=utf-8"),t==="none"&&(n.contentType=void 0)),t==="none"){this.bodyChange.emit({mode:"none"});return}t==="json"&&e?.mode!=="json"&&(n.content={}),t==="text"&&e?.mode!=="text"&&(n.content=""),t==="urlencoded"&&e?.mode!=="urlencoded"&&(n.content={}),this.bodyChange.emit(n)}ngOnChanges(t){if(t.body){let e=t.body.currentValue;this.bodySig.set(e),e?.mode==="json"&&(typeof e.content=="string"?this._jsonText.set(e.content):this._jsonText.set(e.content?JSON.stringify(e.content,null,2):""),this.jsonError.set(""))}}setContentType(t){let e=this.mode(),n=z(w({},this.body??{mode:e}),{contentType:t});this.bodyChange.emit(n)}setTextBody(t){let e=z(w({},this.body??{mode:"text"}),{mode:"text",content:t});this.bodyChange.emit(e)}setJsonText(t){this._jsonText.set(t),this.jsonError.set("");try{let e=t.trim()?JSON.parse(t):{},n=z(w({},this.body??{mode:"json"}),{mode:"json",content:e});this.bodyChange.emit(n)}catch{this.jsonError.set("JSON \u4E0D\u5408\u6CD5\uFF08\u7EE7\u7EED\u8F93\u5165\u5373\u53EF\uFF09")}}formatJson(){if(this.mode()!=="json")return;let e=this.body?.content;try{let n=JSON.stringify(e??{},null,2);this._jsonText.set(n),this.jsonError.set("");let o=z(w({},this.body??{mode:"json"}),{mode:"json",content:e??{}});this.bodyChange.emit(o),this.msg.success("\u5DF2\u683C\u5F0F\u5316")}catch{this.msg.error("\u683C\u5F0F\u5316\u5931\u8D25")}}setUrlRows(t){let e={};for(let o of t){if(!o.enabled)continue;let r=(o.key??"").trim();r&&(e[r]=String(o.value??""))}let n=z(w({},this.body??{mode:"urlencoded"}),{mode:"urlencoded",content:e});this.bodyChange.emit(n)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-body-editor"]],inputs:{body:"body"},outputs:{bodyChange:"bodyChange"},features:[te],decls:13,vars:4,consts:[[1,"wrap"],[1,"bar"],[1,"mode",3,"ngModelChange","ngModel"],[3,"nzValue","nzLabel"],["nz-input","","placeholder","content-type\uFF08\u53EF\u9009\uFF09",1,"ctype",3,"ngModelChange","ngModel"],["nz-button","","nzType","default"],[1,"main"],[1,"empty"],["nz-input","","placeholder","\u6587\u672C\u5185\u5BB9",1,"ta",3,"ngModel"],["keyLabel","Key","valueLabel","Value","keyPlaceholder","a","valuePlaceholder","1",3,"rows"],["nz-button","","nzType","default",3,"click"],["nz-input","","placeholder","\u6587\u672C\u5185\u5BB9",1,"ta",3,"ngModelChange","ngModel"],["nz-input","","placeholder","{ }",1,"ta",3,"ngModelChange","ngModel"],[1,"err"],["keyLabel","Key","valueLabel","Value","keyPlaceholder","a","valuePlaceholder","1",3,"rowsChange","rows"]],template:function(e,n){if(e&1&&(l(0,"div",0)(1,"div",1)(2,"nz-select",2),C("ngModelChange",function(r){return n.setMode(r)}),S(3,Hi,1,2,"nz-option",3,_e),a(),l(5,"input",4),C("ngModelChange",function(r){return n.setContentType(r)}),a(),g(6,Wi,2,0,"button",5),a(),l(7,"div",6),g(8,Ji,2,0,"div",7)(9,Zi,1,1,"textarea",8)(10,Qi,2,2)(11,Yi,1,1,"app-kv-table",9)(12,Xi,2,0,"div",7),a()()),e&2){let o;s(2),d("ngModel",n.mode()),s(),D(n.modes),s(2),d("ngModel",n.contentType()),s(),f(n.mode()==="json"?6:-1),s(2),f((o=n.mode())==="none"?8:o==="text"?9:o==="json"?10:o==="urlencoded"?11:12)}},dependencies:[A,P,$,K,j,I,O,V,X,F,H,ne,he,ve,be],styles:[".wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:260px}.bar[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid #f0f0f0}.mode[_ngcontent-%COMP%]{width:140px}.ctype[_ngcontent-%COMP%]{flex:1 1 auto}.main[_ngcontent-%COMP%]{flex:1 1 auto;overflow:auto;padding-top:10px}.ta[_ngcontent-%COMP%]{width:100%;height:100%;min-height:240px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px}.empty[_ngcontent-%COMP%]{padding:12px;opacity:.7}.err[_ngcontent-%COMP%]{margin-top:8px;color:#a8071a;font-size:12px}"]})};var gt=class i{http=q(_n);base="/api/client";async listRequests(t,e){let n=new me().set("scope",t);return e&&(n=n.set("projectId",e)),await L(this.http.get(`${this.base}/requests`,n))}async saveRequest(t,e,n){return await L(this.http.post(`${this.base}/requests`,{scope:t,projectId:e,request:n}))}async updateRequest(t,e,n){return await L(this.http.post(`${this.base}/requests/update`,{scope:t,projectId:e,request:n}))}async deleteRequest(t,e,n){let o=new me().set("scope",e);return n&&(o=o.set("projectId",n)),await L(this.http.delete(`${this.base}/requests/${t}`,o))}async send(t){return await L(this.http.post(`${this.base}/send`,t))}async listHistory(t,e){let n=new me().set("scope",t);return e&&(n=n.set("projectId",e)),await L(this.http.get(`${this.base}/history`,n))}async listEnvs(t,e){let n=new me().set("scope",t);return e&&(n=n.set("projectId",e)),await L(this.http.get(`${this.base}/envs`,n))}async saveEnv(t,e,n){return await L(this.http.post(`${this.base}/envs`,{scope:t,projectId:e,env:n}))}async deleteEnv(t,e,n){let o=new me().set("scope",e);return n&&(o=o.set("projectId",n)),await L(this.http.delete(`${this.base}/envs/${t}`,o))}async listCollections(t,e){let n=new me().set("scope",t);return e&&(n=n.set("projectId",e)),await L(this.http.get(`${this.base}/collections`,n))}async createCollection(t){return await L(this.http.post(`${this.base}/collections`,t))}async updateCollection(t,e,n,o){let r=new me().set("scope",n).set("projectId",o??"");return await L(this.http.post(`${this.base}/collections/${t}`,e,r))}async deleteCollection(t,e,n){let o=new me().set("scope",e).set("projectId",n??"");return await L(this.http.delete(`${this.base}/collections/${t}`,o))}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Ae({token:i,factory:i.\u0275fac,providedIn:"root"})};var eo=/\{\{\s*([a-zA-Z0-9_.-]+)\s*\}\}/g;function Rn(i=[]){let t={};for(let e of i)e.enabled&&(t[e.key]=String(e.value??""));return t}function to(i,t){let e=new Set;return{out:i.replace(eo,(o,r)=>r in t?String(t[r]??""):(e.add(r),`{{${r}}}`)),missing:[...e]}}function Pn(i,t){let e=new Set;for(let n of i){if(!n)continue;let{missing:o}=to(n,t);o.forEach(r=>e.add(r))}return[...e]}var Sn=Be($e());function Fe(i){if(!i)return[];let t=i;try{t=new URL(i).pathname||""}catch{t=i.split("?")[0].split("#")[0]||"";let x=t.indexOf("/");x>=0&&(t=t.slice(x))}let e=no(t),n=[],o=/(?:^|\/):([A-Za-z_][A-Za-z0-9_]*)/g,r;for(;r=o.exec(e);)n.push(r[1]);let p=/\{([A-Za-z_][A-Za-z0-9_]*)\}/g;for(;r=p.exec(e);)n.push(r[1]);return n}function no(i){try{return decodeURIComponent(i)}catch{return i}}function Ft(i,t){let e=Fe(i),n=Array.isArray(t)?t:[],o=new Map;for(let p of n){let x=(p.key??"").trim();x&&(o.has(x)||o.set(x,p))}return e.map(p=>{let x=o.get(p);return x?z(w({},x),{key:p,enabled:!0}):{key:p,value:"",description:"",enabled:!0,id:(0,Sn.uniqueId)()}})}var Dn=Be($e());function Bt(i){return(i??[]).map(t=>({key:t.key,value:t.value,enabled:t.enabled,id:(0,Dn.uniqueId)(),description:t.description}))}function Vn(i,t){let e=new Map(t?.map(n=>[n.key,n]));return i.filter(n=>n.key?.trim()).map(n=>({key:n.key.trim(),value:String(n.value??""),enabled:n.enabled!==!1,secret:e.get(n.key)?.secret}))}function io(i,t){if(!t)return!0;let e=(i.name??"").toLowerCase(),n=(i.url??"").toLowerCase();return e.includes(t)||n.includes(t)}function We(i){if(i==null)return null;let t=String(i).trim();if(!t)return null;let e=t.toLowerCase();return e==="null"||e==="undefined"?null:t}function oo(i,t){return(i.parentId??"").localeCompare(t.parentId??"")||(i.order??0)-(t.order??0)||(i.name??"").localeCompare(t.name??"")}function ro(i,t){return(We(i.collectionId)??"").localeCompare(We(t.collectionId)??"")||(i.order??0)-(t.order??0)||(i.name??"").localeCompare(t.name??"")||(i.url??"").localeCompare(t.url??"")}function Kt(i,t,e){let n=e?.trim().toLowerCase()||"",o=[...i??[]].sort(oo),r=[...t??[]].sort(ro),p=new Map;for(let R of o){let re=We(R.parentId),ee=p.get(re)??[];ee.push(R),p.set(re,ee)}let x=new Map;for(let R of r){if(!io(R,n))continue;let re=We(R.collectionId),ee=x.get(re)??[];ee.push(R),x.set(re,ee)}let M=(R,re)=>({key:`r:${String(R.id)}`,kind:"request",id:String(R.id),title:R.name??"\u672A\u547D\u540D",name:R.name,subtitle:R.url??"",method:R.method??"",parentKey:re,children:[]}),N=(R,re)=>{let ee=We(R.id),Nt=`c:${ee}`,jn=p.get(ee)??[],Ln=x.get(ee)??[];return{key:Nt,kind:R.kind??"collection",id:ee,title:R.name??"\u672A\u547D\u540D",name:R.name,parentKey:re,children:[...jn.map(kt=>N(kt,Nt)),...Ln.map(kt=>M(kt,Nt))]}},G=p.get(null)??[],At=x.get(null)??[];return[...G.map(R=>N(R,null)),...At.map(R=>M(R,null))]}var Fn=Be($e());var lo=i=>({$implicit:i,level:0}),ao=(i,t)=>({$implicit:i,level:t}),On=(i,t)=>t.key;function so(i,t){if(i&1&&(l(0,"div",8),m(1),a()),i&2){let e=c(2);s(),k(e.nameErr())}}function co(i,t){if(i&1){let e=b();l(0,"label",5),m(1,"\u540D\u79F0"),a(),l(2,"nz-input-wrapper")(3,"input",6),C("ngModelChange",function(o){u(e);let r=c();return _(r.name.set(o))}),a(),h(4,"nz-icon",7),a(),g(5,so,2,1,"div",8)}if(i&2){let e=c();s(3),d("ngModel",e.name()),s(),d("nzType",e.iconForKind()),s(),f(e.nameErr()?5:-1)}}function po(i,t){if(i&1&&Ce(0,12),i&2){let e=t.$implicit;c(2);let n=Q(9);d("ngTemplateOutlet",n)("ngTemplateOutletContext",je(2,lo,e))}}function mo(i,t){i&1&&(l(0,"div",13),m(1,"\u6682\u65E0\u76EE\u5F55"),a())}function uo(i,t){if(i&1&&(l(0,"div",8),m(1),a()),i&2){let e=c(2);s(),k(e.moveErr())}}function _o(i,t){if(i&1){let e=b();l(0,"div",9)(1,"div",10),C("click",function(){u(e);let o=c();return _(o.select(null))}),h(2,"nz-icon",11),l(3,"span"),m(4,"\u6839\u76EE\u5F55"),a()(),S(5,po,1,4,"ng-container",12,On),g(7,mo,2,0,"div",13),a(),g(8,uo,2,1,"div",8)}if(i&2){let e=c();s(),Y("selected",e.selectedKey()===null),s(4),D(e.filteredNodes()),s(2),f(e.filteredNodes().length?-1:7),s(),f(e.moveErr()?8:-1)}}function Co(i,t){if(i&1&&Ce(0,12),i&2){let e=t.$implicit,n=c(2).level;c();let o=Q(9);d("ngTemplateOutlet",o)("ngTemplateOutletContext",Qt(2,ao,e,n+1))}}function go(i,t){if(i&1&&S(0,Co,1,5,"ng-container",12,On),i&2){let e=c().$implicit;D(e.children)}}function fo(i,t){if(i&1){let e=b();l(0,"div",14),C("click",function(){let o=u(e).$implicit,r=c();return _(r.select(o.key))}),l(1,"button",15),C("click",function(o){let r=u(e).$implicit;return c().toggle(r.key),_(o.stopPropagation())}),h(2,"nz-icon",16),a(),h(3,"nz-icon",17),l(4,"span",18),m(5),a()(),g(6,go,2,0)}if(i&2){let e=t.$implicit,n=t.level,o=c();Zt("padding-left",8+n*16,"px"),Y("selected",o.selectedKey()===e.key),s(),d("disabled",!(e.children!=null&&e.children.length)),s(),d("nzType",e.children!=null&&e.children.length?o.expanded(e.key)?"down":"right":"minus"),s(),d("nzType",e.kind==="folder"?"folder":"database"),s(2),k(e.title),s(),f(((e.children==null?null:e.children.length)??0)&&o.expanded(e.key)?6:-1)}}function ho(i){return i?`c:${i}`:null}function vo(i){return i&&i.startsWith("c:")?i.slice(2):null}var Ee=class i{data=q(yn);modalRef=q(tt);q=E("");name=E("");selectedKey=E(null);expandedMap=E({});mode=v(()=>this.data.mode??this.data.handleType);showParentPicker=v(()=>this.mode()==="move"||this.mode()==="pick");showName=v(()=>this.mode()==="create"||this.mode()==="rename");iconForKind=v(()=>{let t=this.data.kind??this.data.createBody?.kind??"collection";return t==="folder"?"folder":t==="request"?"api":"database"});ngOnInit(){let t=this.mode();if(t==="create"){let r=this.data.createBody;this.name.set(r?.name??""),this.selectedKey.set(null);return}if(t==="rename"||t==="update"){let r=this.data;this.name.set(r?.initialName??""),this.selectedKey.set(null);return}let e=this.data.initialParentId;this.selectedKey.set(e?e.startsWith("c:")?e:ho(e):null);let n=this.data.nodes??[],o={};for(let r of n)o[r.key]=!0;this.expandedMap.set(o)}expanded(t){return!!this.expandedMap()[t]}toggle(t){let e=w({},this.expandedMap());e[t]=!e[t],this.expandedMap.set(e)}select(t){this.selectedKey.set(t)}forbiddenKeys=v(()=>{if(this.mode()!=="move"||this.mode()!=="pick")return new Set;let t=this.data.target;if(!t||t.kind==="request")return new Set;let e=`c:${t.id}`,n=new Set([e]),o=this.data.nodes??[],r=x=>{for(let M of x.children??[])M.kind!=="request"&&(n.add(M.key),r(M))},p=x=>{for(let M of x)M.key===e?r(M):M.children?.length&&p(M.children)};return p(o),n});nodesForPicker=v(()=>{let t=(this.data.nodes??[]).filter(o=>o.kind!=="request"),e=this.forbiddenKeys(),n=o=>{let r=[];for(let p of o){if(p.kind==="request"||e.has(p.key))continue;let x=n(p.children??[]);r.push(z(w({},p),{children:x}))}return r};return n(t)});filteredNodes=v(()=>{if(!this.showParentPicker())return[];let t=this.q().trim().toLowerCase();if(!t)return this.nodesForPicker();let e=x=>(x.title??"").toLowerCase().includes(t),n=x=>{let M=[];for(let N of x){let G=n(N.children??[]);(e(N)||G.length)&&M.push(z(w({},N),{children:G}))}return M},o=n(this.nodesForPicker()),r=w({},this.expandedMap()),p=x=>{for(let M of x)M.children?.length&&(r[M.key]=!0),M.children?.length&&p(M.children)};return p(o),this.expandedMap.set(r),o});nameErr=v(()=>{if(!this.showName())return"";let t=(this.name()??"").trim();return t?t.length>50?"\u540D\u79F0\u8FC7\u957F\uFF08<= 50\uFF09":"":"\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A"});moveErr=v(()=>(this.showParentPicker(),""));canSubmit=v(()=>this.showName()&&this.nameErr()?!1:(this.showParentPicker(),!0));ok(){let t=this.mode();if(t==="rename"||t==="update"){let n={name:(this.name()??"").trim()};this.modalRef.close(n);return}if(t==="create"){let n=this.data.createBody,o=z(w({},n),{name:(this.name()??"").trim(),parentId:n.parentId??null});this.modalRef.close(o);return}let e=vo(this.selectedKey());this.modalRef.close({parentId:e})}cancel(){this.modalRef.close(null)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-collection-modal"]],decls:10,vars:3,consts:[["nodeTpl",""],[1,"modal-body"],[1,"footer"],["nz-button","",3,"click"],["nz-button","","nzType","primary",3,"click","disabled"],[1,"label"],["nz-input","","placeholder","\u8BF7\u8F93\u5165\u540D\u79F0","autofocus","",3,"ngModelChange","ngModel"],["nzInputPrefix","","nzTheme","outline",3,"nzType"],[1,"hint","err"],[1,"picker"],[1,"row","root",3,"click"],["nzType","home"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"empty"],[1,"row",3,"click"],["nz-button","","nzType","text","nzSize","small",1,"chev",3,"click","disabled"],[3,"nzType"],[1,"icon",3,"nzType"],[1,"title"]],template:function(e,n){if(e&1){let o=b();l(0,"div",1),g(1,co,6,3),g(2,_o,9,4),a(),l(3,"div",2)(4,"button",3),C("click",function(){return u(o),_(n.cancel())}),m(5,"\u53D6\u6D88"),a(),l(6,"button",4),C("click",function(){return u(o),_(n.ok())}),m(7," \u786E\u5B9A "),a()(),W(8,fo,7,9,"ng-template",null,0,ge)}e&2&&(s(),f(n.showName()?1:-1),s(),f(n.showParentPicker()?2:-1),s(4),d("disabled",!n.canSubmit()))},dependencies:[A,Ze,P,$,K,j,F,H,fe,Qe,I,O,V,X,U,J],styles:[".modal-body[_ngcontent-%COMP%]{display:grid;gap:12px}.label[_ngcontent-%COMP%]{font-weight:600}.hint[_ngcontent-%COMP%]{font-size:12px;opacity:.75}.hint.err[_ngcontent-%COMP%]{color:#cf1322;opacity:1}.picker[_ngcontent-%COMP%]{max-height:52vh;overflow:auto;border:1px solid rgba(0,0,0,.08);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px}.row[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;padding:8px;border-radius:10px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s;border:1px solid transparent}.row[_ngcontent-%COMP%]:hover{background:#0000000a}.row.selected[_ngcontent-%COMP%]{background:#00000014;border-color:#00000014}.row.root[_ngcontent-%COMP%]{font-weight:600}.chev[_ngcontent-%COMP%]{flex:0 0 auto}.chev[_ngcontent-%COMP%] nz-icon[_ngcontent-%COMP%]{font-size:12px;transition:transform .15s}.icon[_ngcontent-%COMP%]{opacity:.75}.title[_ngcontent-%COMP%]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty[_ngcontent-%COMP%]{padding:16px;opacity:.6;text-align:center}.footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}"]})};var ft=class i{modal=q(nt);async createCollection(t){let e=this.modal.create({nzTitle:t.kind==="folder"?"\u65B0\u5EFA\u76EE\u5F55":"\u65B0\u5EFA\u96C6\u5408",nzContent:Ee,nzFooter:null,nzWidth:520,nzMaskClosable:!1,nzData:{mode:"create",createBody:t.createBody,nodes:t.nodes}});return await L(e.afterClose)}async renameCollection(t){let e=this.modal.create({nzTitle:"\u91CD\u547D\u540D",nzContent:Ee,nzFooter:null,nzWidth:520,nzMaskClosable:!1,nzData:{mode:"rename",kind:t.kind,nodes:t.nodes,targetId:t.targetId,initialName:t.initialName}});return await L(e.afterClose)}async moveTarget(t){let e=this.modal.create({nzTitle:"\u79FB\u52A8\u5230",nzContent:Ee,nzFooter:null,nzWidth:520,nzMaskClosable:!1,nzData:{mode:"move",nodes:t.nodes,target:t.target,initialParentId:t.initialParentId??null}});return await L(e.afterClose)}async pickCollection(t){let e=this.modal.create({nzTitle:"\u9009\u62E9\u96C6\u5408/\u76EE\u5F55",nzContent:Ee,nzFooter:null,nzWidth:520,nzMaskClosable:!1,nzData:{mode:"pick",nodes:t.nodes}});return await L(e.afterClose)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Ae({token:i,factory:i.\u0275fac,providedIn:"root"})};function yo(){return Date.now()}function xo(i){let t=Math.random().toString(16).slice(2,10);return`${i}_${t}_${Date.now().toString(16)}`}var ze=class i{api=q(gt);msg=q(Se);projectState=q(xn);collectionModal=q(ft);scope=E("project");loading=E(!1);q=E("");sending=E(!1);requests=E([]);activeRequestId=E(null);collections=E([]);activeCollectionId=E(null);nodes=v(()=>Kt(this.collections(),this.requests(),"").filter(t=>t.kind!=="request"));filteredNodes=v(()=>{let t=this.q().toLowerCase();return Kt(this.collections(),this.requests(),t??"")});historyOpen=E(!1);historyLoading=E(!1);histories=E([]);envs=E([]);envLoading=E(!1);activeEnvId=E(null);lastResult=E(null);projectId=v(()=>this.projectState.currentProject()?.id??"");activeRequest=E(null);activeEnv=v(()=>{let t=this.activeEnvId();return t?this.envs().find(e=>e.id===t)??null:null});envVarRecord=v(()=>{let t=this.activeEnv();return t?Rn(t.variables):{}});collectionPath=v(()=>{let t=this.activeCollectionId();if(!t)return null;let e=this.collections().find(r=>r.id===t);if(!e)return null;let n=[],o=`${e.id}`;for(;o;){let r=this.collections().find(p=>p.id===o);r?(n.unshift(r.name||"\u672A\u547D\u540D"),o=r.parentId?`${r.parentId}`:null):o=null}return n.join(" / ")});projectCtx=v(()=>{let t=this.projectState.currentProject();return t?{scope:"project",projectId:t.id}:null});constructor(){Rt(()=>{this.scope()!=="project"||!this.projectId()||this.loadAll()}),Rt(()=>{if(this.scope()!=="project"){this.loadEnvs();return}this.projectId()&&this.loadEnvs()})}async loadAll(){let t=this.projectCtx();if(t){this.loading.set(!0);try{let[e,n]=await Promise.all([this.api.listCollections(t.scope,t.projectId),this.api.listRequests(t.scope,t.projectId)]);this.collections.set(e??[]),this.requests.set(n??[])}finally{this.loading.set(!1)}}}async reloadCollections(){let t=this.projectCtx();if(!t)return;let e=await this.api.listCollections(t.scope,t.projectId);this.collections.set(e??[])}async reloadRequests(){let t=this.projectCtx();if(!t)return;let e=await this.api.listRequests(t.scope,t.projectId);this.requests.set(e??[])}async loadRequests(){let t=this.projectCtx();if(t){this.loading.set(!0);try{let e=await this.api.listRequests(t.scope,t.projectId);this.requests.set(e);let n=this.activeRequestId();if(n&&e.some(o=>o.id===n))return;e.length?this.setActive(e[0]):(this.setActive(null),this.activeRequestId.set(null),this.lastResult.set(null),this.newRequest())}catch(e){this.msg.error(e?.message??"\u52A0\u8F7D\u8BF7\u6C42\u5931\u8D25")}finally{this.loading.set(!1)}}}selectRequest(t){let e=this.requests().find(n=>n.id===t)||null;this.setActive(e),this.activeCollectionId.set(e?.collectionId??null)}selectCollection(t){this.activeCollectionId.set(t)}async newCollection(t){let e=this.projectCtx();if(!e)return;let n={scope:e.scope,projectId:e.projectId,name:t.name??"",kind:t.kind??"collection",parentId:t.parentId??null},o=this.nodes(),r=await this.collectionModal.createCollection({createBody:n,nodes:o,kind:n.kind,initialParentId:n.parentId??null});if(r){let p=await this.api.createCollection(r);this.msg.success("\u521B\u5EFA\u6210\u529F"),this.collections.update(x=>[...x,p]),this.activeCollectionId.set(p.id)}}async deleteCollection(t,e){if(e==="request"){this.removeRequest(t);return}if(await this.api.deleteCollection(t,this.scope(),this.projectId()),this.msg.success("\u5DF2\u5220\u9664"),this.collections.update(n=>n.filter(o=>o.id!==t)),this.activeCollectionId()===t){let n=this.collections()[0];this.activeCollectionId.set(n?.id??null)}}async moveCollection(t,e){let n="";if(e=="request"){let p=this.requests().find(x=>x.id===t);if(!p){this.msg.error("\u8BF7\u6C42\u4E0D\u5B58\u5728");return}n=p.collectionId??""}else{let p=this.collections().find(x=>x.id===t);if(!p){this.msg.error("\u96C6\u5408\u4E0D\u5B58\u5728");return}n=p.parentId??""}let o=this.nodes(),{parentId:r}=await this.collectionModal.moveTarget({nodes:o,target:{kind:e,id:t},initialParentId:n})||{};if(r!==void 0)if(e==="request"){let p=this.requests().find(M=>M.id===t);if(!p){this.msg.error("\u8BF7\u6C42\u4E0D\u5B58\u5728");return}let x={collectionId:r??null,id:p.id};p.collectionId=r??null,await this.api.updateRequest(this.scope(),this.projectId(),x),this.requests.update(M=>M.map(N=>N.id===t?z(w({},N),{collectionId:r??null}):N)),this.setActive(p.id===this.activeRequestId()?z(w({},p),{collectionId:r??null}):p),this.msg.success("\u4FEE\u6539\u6210\u529F")}else{let p={parentId:r??null},x=await this.api.updateCollection(t,p,this.scope(),this.projectId());this.collections.update(M=>M.map(N=>N.id===t?x:N)),this.activeCollectionId.set(x.id),this.msg.success("\u4FEE\u6539\u6210\u529F")}}async renameCollection(t,e){let n="";if(e=="request"){let p=this.requests().find(x=>x.id===t);if(!p){this.msg.error("\u8BF7\u6C42\u4E0D\u5B58\u5728");return}n=p.name??""}else{let p=this.collections().find(x=>x.id===t);if(!p){this.msg.error("\u96C6\u5408\u4E0D\u5B58\u5728");return}n=p.name??""}let o=this.nodes(),r=await this.collectionModal.renameCollection({nodes:o,kind:e,targetId:t,initialName:n});if(r)if(e==="request")await this.api.updateRequest(this.scope(),this.projectId(),{id:t,name:r.name}),this.requests.update(p=>p.map(x=>x.id===t?z(w({},x),{name:r.name??x.name}):x)),this.msg.success("\u4FEE\u6539\u6210\u529F"),this.reloadRequests();else{let p=await this.api.updateCollection(t,r,this.scope(),this.projectId());this.collections.update(x=>x.map(M=>M.id===t?p:M)),this.msg.success("\u4FEE\u6539\u6210\u529F"),this.reloadCollections()}}newRequest(t={}){let e=this.projectId();if(this.scope()==="project"&&!e){this.msg.warning("\u8BF7\u5148\u9009\u62E9\u9879\u76EE");return}let n=yo(),o={id:xo("req"),name:"",method:"GET",url:"",collectionId:t.collectionId??null,query:[],pathParams:[],headers:[],body:{mode:"none"},auth:{type:"none"},options:{followRedirects:!0,timeoutMs:3e4},tags:[],createdAt:n,updatedAt:n};this.setActive(o),this.activeCollectionId.set(t.collectionId??null)}patchActive(t){let e=this.activeRequest();if(!e)return;let n=z(w(w({},e),t),{updatedAt:Date.now()});this.activeRequest.set(n)}async saveActive(){let t=this.activeRequest();if(!t)return;let e=this.scope(),n=e==="project"?this.projectId():void 0;if(e==="project"&&!n)throw new Error("projectId missing");if(!t.name?.trim()){this.msg.warning("\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A");return}if(!t.url?.trim()){this.msg.warning("URL \u4E0D\u80FD\u4E3A\u7A7A");return}if(!t.collectionId){let o=this.nodes(),{parentId:r}=await this.collectionModal.pickCollection({nodes:o})||{};t.collectionId=r??null}this.loading.set(!0);try{await this.api.saveRequest(e,n,t),this.msg.success("\u5DF2\u4FDD\u5B58"),this.activeRequest.set(w({},t)),await this.loadRequests()}catch(o){this.msg.error(o?.message??"\u4FDD\u5B58\u5931\u8D25")}finally{this.loading.set(!1)}}async sendActive(){let t=this.activeRequest();t&&await this.sendResolvedRequest(t)}async removeRequest(t){await this.api.deleteRequest(t,this.scope(),this.projectId()),this.msg.success("\u5DF2\u5220\u9664");let e=this.requests().filter(n=>n.id!==t);if(this.requests.set(e),this.activeRequestId()===t){let n=e[0]?.id??null;this.activeRequestId.set(n)}}setActive(t){!t||!t.id||t.id===this.activeRequestId()||(t.headers.length&&(t.headers=this.ensureKvId(t.headers)),t.query.length&&(t.query=this.ensureKvId(t.query)),t.pathParams.length&&(t.pathParams=this.ensureKvId(t.pathParams)),this.activeRequest.set(t),this.activeRequestId.set(t.id),this.lastResult.set(null))}ensureKvId(t){return t.map(e=>(e.id||(e.id=(0,Fn.uniqueId)()),e))}openHistory(){this.historyOpen.set(!0),this.loadHistory()}closeHistory(){this.historyOpen.set(!1)}async loadHistory(){this.historyLoading.set(!0);try{let t=await this.api.listHistory(this.scope(),this.projectId());this.histories.set(t)}finally{this.historyLoading.set(!1)}}async replayHistory(t){await this.sendResolvedRequest(t.requestSnapshot)}async sendResolvedRequest(t){let e=this.scope(),n=e==="project"?this.projectId():void 0;if(e==="project"&&!n){this.msg.warning("\u8BF7\u5148\u9009\u62E9\u9879\u76EE");return}this.sending.set(!0),this.lastResult.set(null);try{let o=await this.api.send({scope:e,projectId:n||void 0,request:t,envId:this.activeEnvId()??void 0,projectRoot:this.projectState.currentProject()?.root});this.lastResult.set(o),o.error?this.msg.error(`${o.error.code}: ${o.error.message}`):this.msg.success(`HTTP ${o.response?.status??""} (${o.metrics.durationMs}ms)`)}catch(o){this.msg.error(o?.message??"\u53D1\u9001\u5931\u8D25")}finally{this.sending.set(!1)}}async loadEnvs(){let t=this.scope(),e=t==="project"?this.projectId():void 0;if(!(t==="project"&&!e)){this.envLoading.set(!0);try{let n=await this.api.listEnvs(t,e);this.envs.set(n);let o=this.activeEnvId();if(o&&n.some(r=>r.id===o))return;this.activeEnvId.set(n[0]?.id??null)}finally{this.envLoading.set(!1)}}}setActiveEnv(t){this.activeEnvId.set(t)}async saveEnv(t){let e=this.scope(),n=e==="project"?this.projectId():void 0;await this.api.saveEnv(e,n||void 0,t),await this.loadEnvs()}async deleteEnv(t){await this.api.deleteEnv(t,this.scope(),this.projectId()),this.activeEnvId()===t&&this.activeEnvId.set(null),await this.loadEnvs()}static \u0275fac=function(e){return new(e||i)};static \u0275prov=Ae({token:i,factory:i.\u0275fac,providedIn:"root"})};var wo=["class","component"],bo=(i,t)=>t.id;function zo(i,t){if(i&1){let e=b();l(0,"div",9),C("click",function(){let o=u(e).$implicit,r=c();return _(r.selectEditEnv(o.id))}),l(1,"div",10),m(2),a(),l(3,"div",11),m(4),a()()}if(i&2){let e,n=t.$implicit,o=c();Y("active",n.id===((e=o.draft())==null?null:e.id)),s(2),k(n.name),s(2),se("",n.variables.length," vars")}}function Mo(i,t){i&1&&(l(0,"div",6),m(1,"\u6682\u65E0\u73AF\u5883"),a())}function To(i,t){i&1&&(l(0,"div",6),m(1,"\u9009\u62E9\u4E00\u4E2A\u73AF\u5883\u8FDB\u884C\u7F16\u8F91"),a())}function Eo(i,t){if(i&1){let e=b();l(0,"div",8)(1,"div",12)(2,"div",13),m(3,"\u540D\u79F0"),a(),l(4,"input",14),C("ngModelChange",function(o){u(e);let r=c();return _(r.setName(o))}),a()(),l(5,"div",12)(6,"div",13),m(7,"\u524D\u7F6EURL"),a(),l(8,"input",14),C("ngModelChange",function(o){u(e);let r=c();return _(r.setBaseUrl(o))}),a()(),l(9,"div",15)(10,"app-kv-table",16),C("rowsChange",function(o){u(e);let r=c();return _(r.varsRows.set(o))}),a()(),l(11,"div",17)(12,"button",3),C("click",function(){u(e);let o=c();return _(o.save())}),m(13,"\u4FDD\u5B58"),a(),l(14,"button",18),C("nzOnConfirm",function(){u(e);let o=c();return _(o.remove())}),m(15," \u5220\u9664 "),a(),l(16,"button",19),C("click",function(){u(e);let o=c();return _(o.useThisEnv())}),m(17,"\u8BBE\u4E3A\u5F53\u524D"),a()()()}if(i&2){let e=c();s(4),d("ngModel",e.draft().name),s(4),d("ngModel",e.draft().baseUrl),s(2),d("rows",e.varsRows())}}function Bn(){return Date.now()}function Ao(i){let t=Math.random().toString(16).slice(2,10);return`${i}_${t}_${Date.now().toString(16)}`}var ht=class i{envChange=new y;store=q(ze);modalRef=q(tt);msg=q(Se);draft=E(null);varsRows=E([]);selectEditEnv(t){this.store.activeEnvId.set(t);let e=this.store.envs().find(n=>n.id===t);e&&(this.draft.set(z(w({},e),{variables:e.variables})),this.varsRows.set(Bt(e.variables)))}createEnv(){let t=Bn(),e={id:Ao("env"),scope:"project",name:"\u672A\u547D\u540D\u73AF\u5883",variables:[],createdAt:t,updatedAt:t};this.draft.set(e),this.varsRows.set(Bt(e.variables))}setName(t){let e=this.draft();e&&this.draft.set(z(w({},e),{name:t}))}setBaseUrl(t){let e=this.draft();e&&this.draft.set(z(w({},e),{baseUrl:t}))}async save(){let t=this.draft();if(!t)return;let e=z(w({},t),{variables:Vn(this.varsRows(),t.variables),updatedAt:Bn()});await this.store.saveEnv(e),this.store.activeEnvId.set(e.id),this.msg.success("\u73AF\u5883\u53D8\u91CF\u4FDD\u5B58\u6210\u529F"),this.draft.set(e)}async remove(){let t=this.store.activeEnvId();t&&(await this.store.deleteEnv(t),this.store.activeEnvId.set(null),this.draft.set(null),this.varsRows.set([]),this.msg.success("\u73AF\u5883\u53D8\u91CF\u5220\u9664\u6210\u529F"))}useThisEnv(){let t=this.store.activeEnvId();t&&this.store.setActiveEnv(t)}close(){this.modalRef.close()}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-env-modal",8,"component"]],outputs:{envChange:"envChange"},attrs:wo,decls:12,vars:2,consts:[[1,"drawer"],[1,"left"],[1,"toolbar"],["nz-button","","nzType","primary",3,"click"],[1,"env-list"],[1,"env-item",3,"active"],[1,"empty"],[1,"right"],[1,"form"],[1,"env-item",3,"click"],[1,"name"],[1,"meta"],[1,"row"],[1,"label"],["nz-input","",3,"ngModelChange","ngModel"],[1,"vars"],["keyLabel","Key","valueLabel","Value","keyPlaceholder","TOKEN","valuePlaceholder","xxx",3,"rowsChange","rows"],[1,"actions"],["nz-button","","nzType","default","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u8BA4\u5220\u9664\u8BE5\u73AF\u5883\uFF1F",3,"nzOnConfirm"],["nz-button","","nzType","default",3,"click"]],template:function(e,n){if(e&1&&(l(0,"div",0)(1,"div",1)(2,"div",2)(3,"button",3),C("click",function(){return n.createEnv()}),m(4,"\u65B0\u5EFA"),a()(),l(5,"div",4),S(6,zo,5,4,"div",5,bo),g(8,Mo,2,0,"div",6),a()(),l(9,"div",7),g(10,To,2,0,"div",6)(11,Eo,18,3,"div",8),a()()),e&2){let o;s(6),D(n.store.envs()),s(2),f(n.store.envs().length?-1:8),s(2),f((o=n.draft())!=null&&o.id?11:10)}},dependencies:[A,P,$,K,j,be,I,O,V,X,F,H,De,it],styles:[".drawer[_ngcontent-%COMP%]{display:grid;grid-template-columns:180px 1fr;gap:12px;height:100%}.left[_ngcontent-%COMP%]{border-right:1px solid #f0f0f0;padding-right:12px}.toolbar[_ngcontent-%COMP%]{padding-bottom:10px}.env-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.env-item[_ngcontent-%COMP%]{padding:8px;border:1px solid #f0f0f0;border-radius:8px;cursor:pointer}.env-item.active[_ngcontent-%COMP%]{background:#f5f5f5}.name[_ngcontent-%COMP%]{font-weight:600}.meta[_ngcontent-%COMP%]{font-size:12px;opacity:.7}.right[_ngcontent-%COMP%]{min-width:0}.empty[_ngcontent-%COMP%]{padding:12px;opacity:.7}.row[_ngcontent-%COMP%]{display:grid;grid-template-columns:70px 1fr;gap:10px;align-items:center;margin-bottom:10px}.label[_ngcontent-%COMP%]{font-size:14px;opacity:.8}.vars[_ngcontent-%COMP%]{height:420px}.actions[_ngcontent-%COMP%]{display:flex;gap:8px;margin-top:12px}"]})};var No=(i,t)=>t.id;function ko(i,t){if(i&1&&h(0,"nz-option",2),i&2){let e=t.$implicit;d("nzValue",e.id)("nzLabel",e.name)}}var vt=class i{store=q(ze);modalService=q(nt);openEnvModal(){let t=this.modalService.create({nzTitle:"\u73AF\u5883\u53D8\u91CF",nzFooter:null,nzMaskClosable:!1,nzContent:ht,nzWidth:"1020px",nzCentered:!0});t.afterOpen.subscribe(()=>{let e=t.getContentComponent();e&&this.store.activeEnvId()?e.selectEditEnv(this.store.activeEnvId()??""):e.createEnv()})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-env-picker"]],decls:6,vars:3,consts:[[1,"picker"],[1,"sel",3,"ngModelChange","nzPlaceHolder","ngModel","nzAllowClear"],[3,"nzValue","nzLabel"],["nz-button","","nzType","text","nz-tooltip","","nzTooltipTitle","\u7BA1\u7406\u73AF\u5883\u53D8\u91CF",3,"click"],["nzType","setting","nzTheme","outline"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"nz-select",1),C("ngModelChange",function(r){return n.store.setActiveEnv(r)}),S(2,ko,1,2,"nz-option",2,No),a(),l(4,"button",3),C("click",function(){return n.openEnvModal()}),h(5,"nz-icon",4),a()()),e&2&&(s(),d("nzPlaceHolder","Env")("ngModel",n.store.activeEnvId())("nzAllowClear",!0),s(),D(n.store.envs()))},dependencies:[A,P,K,j,ne,he,ve,I,O,V,Ge,F,Ie,qe,U,J,De],styles:[".picker[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center}.sel[_ngcontent-%COMP%]{width:160px}"]})};var yt=class i{options;optionsChange=new y;timeoutMs=v(()=>this.options?.timeoutMs??3e4);followRedirects=v(()=>this.options?.followRedirects??!0);insecureTLS=v(()=>this.options?.insecureTLS??!1);proxy=v(()=>this.options?.proxy??"");emit(t){this.optionsChange.emit(t)}setTimeout(t){let e=Number(t);this.emit(z(w({},this.options??{}),{timeoutMs:isNaN(e)?void 0:e}))}setFollowRedirects(t){this.emit(z(w({},this.options??{}),{followRedirects:t}))}setInsecureTLS(t){this.emit(z(w({},this.options??{}),{insecureTLS:t}))}setProxy(t){this.emit(z(w({},this.options??{}),{proxy:t||void 0}))}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-advanced-editor"]],inputs:{options:"options"},outputs:{optionsChange:"optionsChange"},decls:25,vars:4,consts:[[1,"wrap"],[1,"grid"],[1,"row"],[1,"label"],["nz-input","","type","number","min","0","placeholder","30000",3,"ngModelChange","ngModel"],[1,"desc"],[1,"row","checkbox"],["nz-checkbox","",3,"ngModelChange","ngModel"],["nz-input","","placeholder","http://127.0.0.1:7890",3,"ngModelChange","ngModel"],[1,"desc","muted"],["nzType","info","nzShowIcon","","nzMessage","\u8BF4\u660E\uFF1AProxy \u914D\u7F6E\u5DF2\u4FDD\u5B58\uFF0C\u4F46\u5F53\u524D NodeHttpClient \u5C1A\u672A\u5B9E\u73B0\u4EE3\u7406\u652F\u6301\uFF0C\u8BF7\u52FF\u4F9D\u8D56\u8BE5\u9009\u9879\u8FDB\u884C\u8C03\u8BD5\u3002"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),m(4,"Timeout (ms)"),a(),l(5,"input",4),C("ngModelChange",function(r){return n.setTimeout(r)}),a(),l(6,"div",5),m(7,"\u8BF7\u6C42\u8D85\u65F6\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2\uFF080 \u8868\u793A\u4E0D\u8D85\u65F6\uFF09"),a()(),l(8,"div",6)(9,"label",7),C("ngModelChange",function(r){return n.setFollowRedirects(r)}),m(10," Follow Redirects "),a(),l(11,"div",5),m(12,"\u662F\u5426\u81EA\u52A8\u8DDF\u968F HTTP \u91CD\u5B9A\u5411\uFF08302 / 301\uFF09"),a()(),l(13,"div",6)(14,"label",7),C("ngModelChange",function(r){return n.setInsecureTLS(r)}),m(15," Insecure TLS "),a(),l(16,"div",5),m(17,"\u8DF3\u8FC7 TLS \u8BC1\u4E66\u6821\u9A8C\uFF08\u4EC5\u5728 Node \u73AF\u5883\u4E0B\u5C3D\u529B\u652F\u6301\uFF09"),a()(),l(18,"div",2)(19,"div",3),m(20,"Proxy"),a(),l(21,"input",8),C("ngModelChange",function(r){return n.setProxy(r)}),a(),l(22,"div",9),m(23,"\u4EE3\u7406\u5730\u5740\uFF08\u5F53\u524D\u7248\u672C\u4EC5\u4FDD\u5B58\uFF0C\u4E0D\u53C2\u4E0E\u5B9E\u9645\u8BF7\u6C42\uFF09"),a()(),h(24,"nz-alert",10),a()()),e&2&&(s(5),d("ngModel",n.timeoutMs()),s(4),d("ngModel",n.followRedirects()),s(5),d("ngModel",n.insecureTLS()),s(7),d("ngModel",n.proxy()))},dependencies:[A,P,$,dn,K,mn,j,rt,ot,F,H,Oe,Te],styles:[".wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:240px}.grid[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:14px;padding-top:10px}.row[_ngcontent-%COMP%]{display:grid;grid-template-columns:140px 1fr;align-items:center;gap:10px}.row.checkbox[_ngcontent-%COMP%]{grid-template-columns:1fr}.label[_ngcontent-%COMP%]{font-size:12px;opacity:.8}.desc[_ngcontent-%COMP%]{grid-column:2 / span 1;font-size:12px;opacity:.65}.row.checkbox[_ngcontent-%COMP%] .desc[_ngcontent-%COMP%]{grid-column:1 / span 1;margin-left:24px}.muted[_ngcontent-%COMP%]{color:#999}"]})};var jt=()=>[];function Io(i,t){if(i&1){let e=b();l(0,"div",3)(1,"div",4),m(2,"Path \u53C2\u6570"),a(),l(3,"app-kv-table",14),C("rowsChange",function(o){u(e);let r=c();return _(r.patch.emit({pathParams:o}))}),a()()}if(i&2){let e=c();s(3),d("keepTrailingBlank",!1)("rows",(e.req==null?null:e.req.pathParams)||Je(2,jt))}}var xt=class i{req=null;patch=new y;static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-request-tabs"]],inputs:{req:"req"},outputs:{patch:"patch"},decls:20,vars:8,consts:[[1,"tabs"],["nzTitle","Params"],[1,"tab"],[1,"item"],[1,"title"],["keyLabel","\u53C2\u6570\u540D","valueLabel","\u53C2\u6570\u503C","descriptionLabel","\u8BF4\u660E","keyPlaceholder","param","valuePlaceholder","value",3,"rowsChange","rows"],["nzTitle","Headers"],["keyLabel","Header","valueLabel","Value","keyPlaceholder","x-header","valuePlaceholder","value",3,"rowsChange","rows"],["nzTitle","Body"],[3,"bodyChange","body"],["nzTitle","Auth"],[3,"authChange","auth"],["nzTitle","Advanced"],[3,"optionsChange","options"],["keyLabel","\u53C2\u6570\u540D","valueLabel","\u53C2\u6570\u503C","descriptionLabel","\u8BF4\u660E","keyPlaceholder","param","valuePlaceholder","value",3,"rowsChange","keepTrailingBlank","rows"]],template:function(e,n){e&1&&(l(0,"nz-tabs",0)(1,"nz-tab",1)(2,"div",2)(3,"div",3)(4,"div",4),m(5,"Query \u53C2\u6570"),a(),l(6,"app-kv-table",5),C("rowsChange",function(r){return n.patch.emit({query:r})}),a()(),g(7,Io,4,3,"div",3),a()(),l(8,"nz-tab",6)(9,"div",2)(10,"app-kv-table",7),C("rowsChange",function(r){return n.patch.emit({headers:r})}),a()()(),l(11,"nz-tab",8)(12,"div",2)(13,"app-body-editor",9),C("bodyChange",function(r){return n.patch.emit({body:r})}),a()()(),l(14,"nz-tab",10)(15,"div",2)(16,"app-auth-editor",11),C("authChange",function(r){return n.patch.emit({auth:r})}),a()()(),l(17,"nz-tab",12)(18,"div",2)(19,"app-advanced-editor",13),C("optionsChange",function(r){return n.patch.emit({options:r})}),a()()()()),e&2&&(s(6),d("rows",(n.req==null?null:n.req.query)||Je(6,jt)),s(),f(!(n.req==null||n.req.pathParams==null)&&n.req.pathParams.length?7:-1),s(3),d("rows",(n.req==null?null:n.req.headers)||Je(7,jt)),s(3),d("body",n.req==null?null:n.req.body),s(3),d("auth",n.req==null?null:n.req.auth),s(3),d("options",n.req==null?null:n.req.options))},dependencies:[ct,st,at,be,Ct,_t,yt],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0}app-kv-table[_ngcontent-%COMP%]{display:block;height:100%}.tabs[_ngcontent-%COMP%]{flex:1 1 auto;overflow:hidden;height:100%}.tab[_ngcontent-%COMP%]{height:100%;overflow:hidden auto} nz-tabs.tabs .ant-tabs-content{height:100%} nz-tabs.tabs .ant-tabs-content .ant-tabs-tabpane{height:100%}"]})};function Ro(i,t){if(i&1&&h(0,"nz-option",2),i&2){let e=t.$implicit;d("nzValue",e)("nzLabel",e)}}function Po(i,t){if(i&1){let e=b();l(0,"div",7)(1,"nz-tag",8),m(2),a(),l(3,"a",9),C("click",function(){u(e);let o=c();return _(o.openEnv())}),m(4,"\u53BB\u914D\u7F6E"),a()()}if(i&2){let e=c();s(2),se(" \u672A\u89E3\u6790\u53D8\u91CF\uFF1A",e.missingVars().join(", ")," ")}}var wt=class i{envVars={};openEnv;method="GET";url="";sending=!1;envName=null;baseUrl=null;methodChange=new y;urlChange=new y;urlCommit=new y;send=new y;save=new y;methods=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"];missingVars=v(()=>Pn([this.draftUrl],this.envVars));draftUrl="";t;ngOnChanges(t){t.url&&(this.draftUrl=this.url??"")}onDraftChange(t){this.draftUrl=t??"",this.t&&window.clearTimeout(this.t),this.t=window.setTimeout(()=>{this.urlChange.emit(this.draftUrl)},250)}commit(){this.t&&(window.clearTimeout(this.t),this.t=void 0),this.urlChange.emit(this.draftUrl),this.urlCommit.emit(this.draftUrl)}placeholder=v(()=>this.baseUrl?'"/"\u5F00\u5934':"http://...");previewUrl=v(()=>{let t=(this.url??"").trim();if(!t||So(t))return"";let e=(this.baseUrl??"").trim();if(!e)return"";try{return new URL(t,e).toString()}catch{return""}});static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-request-urlbar"]],inputs:{envVars:"envVars",openEnv:"openEnv",method:"method",url:"url",sending:"sending",envName:"envName",baseUrl:"baseUrl"},outputs:{methodChange:"methodChange",urlChange:"urlChange",urlCommit:"urlCommit",send:"send",save:"save"},features:[te],decls:11,vars:6,consts:[[1,"bar"],[1,"method",3,"ngModelChange","ngModel"],[1,"m",3,"nzValue","nzLabel"],[1,"url",3,"nzAddonBefore"],["nz-input","",3,"ngModelChange","blur","keydown.enter","placeholder","ngModel"],["nz-button","","nzType","primary",3,"click","nzLoading"],["nz-button","","nzType","default",3,"click"],[1,"var-hint"],["nzColor","warning"],[3,"click"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"nz-select",1),C("ngModelChange",function(r){return n.methodChange.emit(r)}),S(2,Ro,1,2,"nz-option",2,_e),a(),l(4,"nz-input-wrapper",3)(5,"input",4),C("ngModelChange",function(r){return n.onDraftChange(r)})("blur",function(){return n.commit()})("keydown.enter",function(){return n.commit()}),a()(),l(6,"button",5),C("click",function(){return n.send.emit()}),m(7,"\u53D1\u9001"),a(),l(8,"button",6),C("click",function(){return n.save.emit()}),m(9,"\u4FDD\u5B58"),a()(),g(10,Po,5,1,"div",7)),e&2&&(s(),d("ngModel",n.method),s(),D(n.methods),s(2),d("nzAddonBefore",n.baseUrl?n.baseUrl+" ":void 0),s(),d("placeholder",n.placeholder())("ngModel",n.draftUrl),s(),d("nzLoading",n.sending),s(4),f(n.missingVars().length?10:-1))},dependencies:[A,P,$,K,j,I,O,V,X,F,H,fe,ne,he,ve,xe,ye],styles:[".bar[_ngcontent-%COMP%]{display:flex;gap:10px;padding:10px;border-bottom:1px solid #f0f0f0;align-items:center}.method[_ngcontent-%COMP%]{width:120px}.url[_ngcontent-%COMP%]{flex:1 1 auto}.var-hint[_ngcontent-%COMP%]{padding:4px 10px 8px;font-size:12px;display:flex;gap:8px;align-items:center}"]})};function So(i){return/^https?:\/\//i.test(i)}function Do(i,t){if(i&1){let e=b();l(0,"app-request-urlbar",0),C("methodChange",function(o){u(e);let r=c();return _(r.patch.emit({method:o}))})("urlChange",function(o){u(e);let r=c();return _(r.onUrlChange(o))})("urlCommit",function(o){u(e);let r=c();return _(r.onUrlCommit(o))})("send",function(){u(e);let o=c();return _(o.send.emit())})("save",function(){u(e);let o=c();return _(o.save.emit())}),a(),l(1,"div",1)(2,"nz-input-wrapper",2)(3,"input",3),C("ngModelChange",function(o){u(e);let r=c();return _(r.patch.emit({name:o}))}),a()()(),l(4,"app-request-tabs",4),C("patch",function(o){u(e);let r=c();return _(r.patch.emit(o))}),a()}if(i&2){let e=c();d("method",e.request.method)("baseUrl",e.baseUrl)("envVars",e.envVars)("openEnv",e.openEnv)("url",e.request.url)("sending",e.sending),s(2),d("nzAddonBefore",e.collectionPath||"\u672A\u5206\u7C7B"),s(),d("ngModel",e.request.name),s(),d("req",e.request)}}var bt=class i{request=null;sending=!1;envVars={};openEnv;baseUrl=null;patch=new y;send=new y;save=new y;collectionPath=null;methods=["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"];onUrlCommit(t){let e=this.request;if(!e)return;let n=Ft(t,e.pathParams),o=Fe(e.url??""),r=Fe(t??"");(o.length!==r.length||o.some((x,M)=>x!==r[M]))&&this.patch.emit({pathParams:n})}onUrlChange(t){let e=this.request;if(!e){this.patch.emit({url:t});return}let n=Ft(t,e.pathParams),o=Fe(e.url??""),r=Fe(t??"");o.length!==r.length||o.some((x,M)=>x!==r[M])?this.patch.emit({url:t,pathParams:n}):this.patch.emit({url:t})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-request-editor"]],inputs:{request:"request",sending:"sending",envVars:"envVars",openEnv:"openEnv",baseUrl:"baseUrl",collectionPath:"collectionPath"},outputs:{patch:"patch",send:"send",save:"save"},decls:1,vars:1,consts:[[3,"methodChange","urlChange","urlCommit","send","save","method","baseUrl","envVars","openEnv","url","sending"],[1,"name"],[3,"nzAddonBefore"],["nz-input","","placeholder","\u672A\u547D\u540D\u63A5\u53E3\u540D\u79F0",3,"ngModelChange","ngModel"],[1,"tabs",3,"patch","req"]],template:function(e,n){e&1&&g(0,Do,5,9),e&2&&f(n.request?0:-1)},dependencies:[A,P,$,K,j,I,F,H,fe,ne,Ve,xt,wt],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column}.name[_ngcontent-%COMP%]{padding:10px;border-bottom:1px solid #f0f0f0}.tabs[_ngcontent-%COMP%]{flex:1 1 auto;overflow:hidden;padding:0 10px}app-request-tabs[_ngcontent-%COMP%]{flex:1 1 auto;height:0}"]})};var zt=class i{clipboard=q(zn);curl=null;copy(t){this.clipboard.copy(t)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-curl-actions"]],inputs:{curl:"curl"},decls:17,vars:5,consts:[["menu","nzDropdownMenu"],[1,"wrap"],["nz-button","","nz-dropdown","","nzType","default","nzTrigger","hover","nzPlacement","bottomCenter",3,"disabled","nzDropdownMenu"],["nzType","copy","nzTheme","outline"],["nz-menu",""],["nz-menu-item",""],["nz-button","","nzType","text",3,"click","disabled"]],template:function(e,n){if(e&1){let o=b();l(0,"div",1)(1,"nz-space")(2,"button",2),h(3,"nz-icon",3),m(4," cURL "),a()(),l(5,"nz-dropdown-menu",null,0)(7,"ul",4)(8,"li",5)(9,"button",6),C("click",function(){return u(o),_(n.copy(n.curl.bash))}),m(10," cURL (Bash) "),a()(),l(11,"li",5)(12,"button",6),C("click",function(){return u(o),_(n.copy(n.curl.powershell))}),m(13," cURL (PS) "),a()(),l(14,"li",5)(15,"button",6),C("click",function(){return u(o),_(n.copy(n.curl.cmd))}),m(16," cURL (CMD) "),a()()()()()}if(e&2){let o=Q(6);s(2),d("disabled",!n.curl)("nzDropdownMenu",o),s(7),d("disabled",!(n.curl!=null&&n.curl.bash)),s(3),d("disabled",!(n.curl!=null&&n.curl.powershell)),s(3),d("disabled",!(n.curl!=null&&n.curl.cmd))}},dependencies:[A,Mn,an,ln,I,O,V,X,U,J,vn,Pe,Re,gn,hn,fn],encapsulation:2})};function Vo(i,t){if(i&1&&(l(0,"nz-tag",11),m(1),a(),l(2,"span",4),m(3),a()),i&2){let e,n,o=c();d("nzColor",o.statusColor()),s(),Gt(" ",(e=o.response())==null?null:e.status," ",((e=o.response())==null?null:e.statusText)||""," "),s(2),se("",(n=o.response())==null?null:n.bodySize," bytes")}}function Oo(i,t){i&1&&(l(0,"span",4),m(1,"-"),a())}function Fo(i,t){i&1&&(l(0,"div",7),h(1,"nz-spin"),a())}function Bo(i,t){if(i&1&&h(0,"nz-alert",8),i&2){let e=c();d("nzMessage",e.error())}}function Ko(i,t){i&1&&(l(0,"div",9),m(1,"\u53D1\u9001\u8BF7\u6C42\u540E\u5728\u6B64\u67E5\u770B\u54CD\u5E94"),a())}function jo(i,t){if(i&1&&(l(0,"pre",15),m(1),a()),i&2){let e=c(2);s(),k(e.prettyJson())}}function Lo(i,t){if(i&1&&(l(0,"pre",15),m(1),a()),i&2){let e,n=c(2);s(),k((e=n.response())==null?null:e.bodyText)}}function Uo(i,t){if(i&1&&(l(0,"div",18)(1,"div",20),m(2),a(),l(3,"div",21),m(4),a()()),i&2){let e,n=t.$implicit,o=c(2);s(2),k(n),s(2),k((e=o.response())==null||e.headers==null?null:e.headers[n])}}function $o(i,t){if(i&1){let e=b();l(0,"nz-tabs",12),de("nzSelectedIndexChange",function(o){u(e);let r=c();return pe(r.tabIndex,o)||(r.tabIndex=o),_(o)}),l(1,"nz-tab",13)(2,"div",14),g(3,jo,2,1,"pre",15)(4,Lo,2,1,"pre",15),a()(),l(5,"nz-tab",16)(6,"div",14)(7,"div",17),S(8,Uo,5,2,"div",18,_e),a()()(),l(10,"nz-tab",19)(11,"div",14)(12,"pre",15),m(13),a()()()()}if(i&2){let e=c();ce("nzSelectedIndex",e.tabIndex),s(3),f(e.isJson()?3:4),s(5),D(e.headerKeys()),s(5),k(e.rawDump())}}var Mt=class i{sending=!1;result=null;resultSig=E(null);tabIndex=0;ngOnChanges(t){if(t.result){let e=t.result.currentValue;this.resultSig.set(e)}}error=v(()=>{let t=this.resultSig();return t&&t.error?t.error.message:null});curl=v(()=>{let t=this.resultSig();return t&&t.curl?t.curl:null});response=v(()=>{let t=this.resultSig();return t?t.response:null});headerKeys=v(()=>{let t=this.response()?.headers??{};return Object.keys(t).sort((e,n)=>e.localeCompare(n))});statusColor=v(()=>{let t=this.response()?.status??0;return t?t>=200&&t<300?"green":t>=300&&t<400?"blue":t>=400&&t<500?"orange":"red":"default"});isJson=v(()=>{let t=this.response();if(!t)return!1;if((t.headers?.["content-type"]??t.headers?.["Content-Type"]??"").toLowerCase().includes("application/json"))return!0;let n=(t.bodyText??"").trim();return n.startsWith("{")&&n.endsWith("}")||n.startsWith("[")&&n.endsWith("]")});prettyJson=v(()=>{let t=(this.response()?.bodyText??"").trim();try{let e=JSON.parse(t);return JSON.stringify(e,null,2)}catch{return this.response()?.bodyText??""}});rawDump=v(()=>this.response()?JSON.stringify(this.response(),null,2):"");static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-response-viewer"]],inputs:{sending:"sending",result:"result"},features:[te],decls:13,vars:3,consts:[[1,"wrap"],[1,"top"],[1,"left"],[1,"title"],[1,"meta"],[1,"right"],[3,"curl"],[1,"loading"],["nzType","error","nzShowIcon","",3,"nzMessage"],[1,"empty"],[1,"tabs",3,"nzSelectedIndex"],[3,"nzColor"],[1,"tabs",3,"nzSelectedIndexChange","nzSelectedIndex"],["nzTitle","Body"],[1,"pane"],[1,"code"],["nzTitle","Headers"],[1,"hlist"],[1,"hrow"],["nzTitle","Raw"],[1,"hk"],[1,"hv"]],template:function(e,n){e&1&&(l(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),m(4,"Response"),a(),g(5,Vo,4,4)(6,Oo,2,0,"span",4),a(),l(7,"div",5),h(8,"app-curl-actions",6),a()(),g(9,Fo,2,0,"div",7)(10,Bo,1,1,"nz-alert",8)(11,Ko,2,0,"div",9)(12,$o,14,3,"nz-tabs",10),a()),e&2&&(s(5),f(n.response()?5:6),s(3),d("curl",n.curl()),s(),f(n.sending?9:n.error()?10:n.response()?12:11))},dependencies:[A,ct,st,at,xe,ye,Ve,lt,Oe,Te,zt],styles:["[_nghost-%COMP%]{display:flex;height:100%;min-height:0}.wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%;min-height:0;width:100%}.top[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #f0f0f0}.left[_ngcontent-%COMP%]{display:flex;gap:10px;align-items:center}.title[_ngcontent-%COMP%]{font-weight:700}.meta[_ngcontent-%COMP%]{font-size:12px;opacity:.65}.loading[_ngcontent-%COMP%]{padding:16px}.empty[_ngcontent-%COMP%]{padding:16px;opacity:.6}.tabs[_ngcontent-%COMP%]{flex:1 1 auto;min-height:0}.pane[_ngcontent-%COMP%]{height:100%;min-height:0;overflow:auto;padding:10px 12px}.code[_ngcontent-%COMP%]{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.hlist[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.hrow[_ngcontent-%COMP%]{display:grid;grid-template-columns:200px 1fr;gap:10px;padding:8px;border:1px solid #f0f0f0;border-radius:8px}.hk[_ngcontent-%COMP%]{font-weight:600;font-size:12px}.hv[_ngcontent-%COMP%]{font-size:12px;opacity:.85;word-break:break-word}"]})};var Ho=["envPicker"],Wo=["class","component"];function Jo(i,t){if(i&1){let e=b();l(0,"app-request-editor",8),C("patch",function(o){u(e);let r=c();return _(r.store.patchActive(o))})("save",function(){u(e);let o=c();return _(o.store.saveActive())})("send",function(){u(e);let o=c();return _(o.store.sendActive())}),a(),h(1,"app-response-viewer",9)}if(i&2){let e,n=c();d("collectionPath",n.store.collectionPath())("baseUrl",((e=n.store.activeEnv())==null?null:e.baseUrl)??null)("request",n.store.activeRequest())("sending",n.store.sending())("envVars",n.store.envVarRecord())("openEnv",n.openEnv),s(),d("sending",n.store.sending())("result",n.store.lastResult())}}function Zo(i,t){if(i&1){let e=b();l(0,"app-api-history-drawer",10),C("close",function(){u(e);let o=c();return _(o.store.closeHistory())})("replay",function(o){u(e);let r=c();return _(r.store.replayHistory(o))}),a()}if(i&2){let e=c();d("loading",e.store.historyLoading())("histories",e.store.histories())}}var Tt=class i{store=q(ze);envPicker;openEnv=()=>{this.envPicker.openEnvModal()};static \u0275fac=function(e){return new(e||i)};static \u0275cmp=T({type:i,selectors:[["app-api-client",8,"component"]],viewQuery:function(e,n){if(e&1&&Ht(Ho,5),e&2){let o;Wt(o=Jt())&&(n.envPicker=o.first)}},attrs:Wo,decls:10,vars:10,consts:[[3,"title","loading","isFullscreen","isOverflowYAuto"],["ngProjectAs","actions",5,["actions"]],["nz-button","","nzType","text","nz-tooltip","","nzTooltipTitle","\u5386\u53F2\u8BB0\u5F55",3,"click"],["nzType","history","nzTheme","outline"],[1,"page"],[3,"qChange","select","createRequest","createCollection","createFolder","reload","delete","rename","move","nodes","q","activeId","loading"],[1,"content"],[3,"loading","histories"],[3,"patch","save","send","collectionPath","baseUrl","request","sending","envVars","openEnv"],[3,"sending","result"],[3,"close","replay","loading","histories"]],template:function(e,n){e&1&&(l(0,"app-page-layout",0),le(1,1),h(2,"app-env-picker"),l(3,"button",2),C("click",function(){return n.store.openHistory()}),h(4,"nz-icon",3),a(),ae(),l(5,"nz-layout",4)(6,"app-request-collections",5),de("qChange",function(r){return pe(n.store.q,r)||(n.store.q=r),r}),C("select",function(r){return n.store.selectRequest(r)})("createRequest",function(r){return n.store.newRequest({collectionId:r.collectionId})})("createCollection",function(){return n.store.newCollection({kind:"collection"})})("createFolder",function(r){return n.store.newCollection({kind:"folder",parentId:r.collectionId})})("reload",function(){return n.store.loadAll()})("delete",function(r){return n.store.deleteCollection(r.id,r.kind)})("rename",function(r){return n.store.renameCollection(r.id,r.kind)})("move",function(r){return n.store.moveCollection(r.id,r.kind)}),a(),l(7,"div",6),g(8,Jo,2,8),a()()(),g(9,Zo,1,2,"app-api-history-drawer",7)),e&2&&(d("title","API \u8BF7\u6C42")("loading",n.store.loading())("isFullscreen",!0)("isOverflowYAuto",!1),s(6),d("nodes",n.store.filteredNodes()),ce("q",n.store.q),d("activeId",n.store.activeRequestId())("loading",n.store.loading()),s(2),f(n.store.activeRequest()?8:-1),s(),f(n.store.historyOpen()?9:-1))},dependencies:[A,un,I,O,V,U,J,bn,wn,Ie,qe,ut,bt,Mt,pt,vt],styles:[".page[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:row;overflow:hidden;gap:16px;padding:0 16px}.content[_ngcontent-%COMP%]{flex:1 1 auto;width:0;display:flex;flex-direction:column;height:100%;overflow:hidden}app-request-editor[_ngcontent-%COMP%]{flex:0 0 auto;height:50%}app-response-viewer[_ngcontent-%COMP%]{flex:0 0 auto;height:50%;overflow:auto}"]})};var Go=[{path:"",component:Tt}],Et=class i{static \u0275fac=function(e){return new(e||i)};static \u0275mod=ke({type:i});static \u0275inj=Ne({imports:[Pt.forChild(Go),Pt]})};var Kn=class i{static \u0275fac=function(e){return new(e||i)};static \u0275mod=ke({type:i});static \u0275inj=Ne({imports:[A,Et]})};export{Kn as ApiClientModule};
@@ -1 +1 @@
1
- import{B as n,i as m}from"./chunk-53YRDYLS.js";import{Fb as e,na as t}from"./chunk-SJG2JCPL.js";var d=[{path:"",loadComponent:()=>import("./chunk-2PBA7FNM.js").then(o=>o.DashboardComponent)}],i=class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n.forChild(d),n]})};var a=class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[m,i]})};export{a as DashboardModule};
1
+ import{B as n,i as m}from"./chunk-53YRDYLS.js";import{Fb as e,na as t}from"./chunk-SJG2JCPL.js";var d=[{path:"",loadComponent:()=>import("./chunk-YVSVIACA.js").then(o=>o.DashboardComponent)}],i=class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[n.forChild(d),n]})};var a=class o{static \u0275fac=function(r){return new(r||o)};static \u0275mod=e({type:o});static \u0275inj=t({imports:[m,i]})};export{a as DashboardModule};
@@ -1 +1 @@
1
- import{a as A,b as B}from"./chunk-5IUYSJVD.js";import{M as T,N as y,T as k,U as b,V as x,W as S,Y as E,Z as v}from"./chunk-PTMJ422K.js";import{Eb as C,Ic as r,Vb as g,Xb as _,bc as i,cc as o,dc as s,kc as c,mb as z,qc as l,rb as d,tc as f,xa as m,ya as u}from"./chunk-SJG2JCPL.js";function N(n,p){if(n&1){let t=c();i(0,"button",3),l("click",function(){m(t);let a=f();return u(a.toggle.emit())}),s(1,"span",4),r(2," \u8FD0\u884C "),o()}}function F(n,p){n&1&&(i(0,"button",1),s(1,"span",5),r(2," \u505C\u6B62\u4E2D... "),o())}function w(n,p){if(n&1){let t=c();i(0,"button",6),l("nzOnConfirm",function(){m(t);let a=f();return u(a.stopTask())}),s(1,"span",7),r(2," \u505C\u6B62 "),o()}}var D=class n{isRunning=!1;isStopping=!1;isStopped=!1;toggle=new d;stopTask(){this.toggle.emit()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=C({type:n,selectors:[["app-task-actions"]],inputs:{isRunning:"isRunning",isStopping:"isStopping",isStopped:"isStopped"},outputs:{toggle:"toggle"},decls:4,vars:1,consts:[["nz-button","","nzType","primary"],["nz-button","","nzType","primary","nzDanger",""],["nz-button","","nzType","primary","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u5B9A\u8981\u505C\u6B62\u8BE5\u4EFB\u52A1\u5417\uFF1F"],["nz-button","","nzType","primary",3,"click"],["nz-icon","","nzType","play-circle"],["nz-icon","","nzType","loading"],["nz-button","","nzType","primary","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u5B9A\u8981\u505C\u6B62\u8BE5\u4EFB\u52A1\u5417\uFF1F",3,"nzOnConfirm"],["nz-icon","","nzType","pause"]],template:function(t,e){t&1&&(i(0,"nz-space"),g(1,N,3,0,"button",0)(2,F,3,0,"button",1)(3,w,3,0,"button",2),o()),t&2&&(z(),_(e.isStopped?1:e.isStopping?2:e.isRunning?3:-1))},dependencies:[b,k,v,E,x,S,y,T,B,A],styles:["[_nghost-%COMP%]{padding:0 16px;display:flex;flex-direction:row;align-items:center;position:relative}"]})};export{D as a};
1
+ import{a as A,b as B}from"./chunk-GCKL62DR.js";import{M as T,N as y,T as k,U as b,V as x,W as S,Y as E,Z as v}from"./chunk-PTMJ422K.js";import{Eb as C,Ic as r,Vb as g,Xb as _,bc as i,cc as o,dc as s,kc as c,mb as z,qc as l,rb as d,tc as f,xa as m,ya as u}from"./chunk-SJG2JCPL.js";function N(n,p){if(n&1){let t=c();i(0,"button",3),l("click",function(){m(t);let a=f();return u(a.toggle.emit())}),s(1,"span",4),r(2," \u8FD0\u884C "),o()}}function F(n,p){n&1&&(i(0,"button",1),s(1,"span",5),r(2," \u505C\u6B62\u4E2D... "),o())}function w(n,p){if(n&1){let t=c();i(0,"button",6),l("nzOnConfirm",function(){m(t);let a=f();return u(a.stopTask())}),s(1,"span",7),r(2," \u505C\u6B62 "),o()}}var D=class n{isRunning=!1;isStopping=!1;isStopped=!1;toggle=new d;stopTask(){this.toggle.emit()}static \u0275fac=function(t){return new(t||n)};static \u0275cmp=C({type:n,selectors:[["app-task-actions"]],inputs:{isRunning:"isRunning",isStopping:"isStopping",isStopped:"isStopped"},outputs:{toggle:"toggle"},decls:4,vars:1,consts:[["nz-button","","nzType","primary"],["nz-button","","nzType","primary","nzDanger",""],["nz-button","","nzType","primary","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u5B9A\u8981\u505C\u6B62\u8BE5\u4EFB\u52A1\u5417\uFF1F"],["nz-button","","nzType","primary",3,"click"],["nz-icon","","nzType","play-circle"],["nz-icon","","nzType","loading"],["nz-button","","nzType","primary","nzDanger","","nz-popconfirm","","nzPopconfirmTitle","\u786E\u5B9A\u8981\u505C\u6B62\u8BE5\u4EFB\u52A1\u5417\uFF1F",3,"nzOnConfirm"],["nz-icon","","nzType","pause"]],template:function(t,e){t&1&&(i(0,"nz-space"),g(1,N,3,0,"button",0)(2,F,3,0,"button",1)(3,w,3,0,"button",2),o()),t&2&&(z(),_(e.isStopped?1:e.isStopping?2:e.isRunning?3:-1))},dependencies:[b,k,v,E,x,S,y,T,B,A],styles:["[_nghost-%COMP%]{padding:0 16px;display:flex;flex-direction:row;align-items:center;position:relative}"]})};export{D as a};