koa-ts-core 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,199 @@
1
+ # Koa Application Initialization
2
+
3
+ 使用`typescript`开发`koa`, 提供约定式路由、权限校验、加载环境变量
4
+
5
+ ## 安装
6
+
7
+ ```shell
8
+ npm i koa-ts-core
9
+ ```
10
+
11
+ 宿主项目需要安装库
12
+
13
+ ```shell
14
+ npm i koa koa-router dotenv
15
+ ```
16
+
17
+ ## 初始化
18
+
19
+ ```typescript
20
+ import { initializeKoaApp } from "koa-ts-core";
21
+
22
+ const [app] = await initializeKoaApp({
23
+ // 权限校验
24
+ authCheckCallback: () => {
25
+ return Promise.resolve(true);
26
+ },
27
+ // 高优先级中间件注册
28
+ registerHighPriorityMiddleware: (app: Koa) => void,
29
+ // 异常处理
30
+ catchErrorCallback: (error: Error) => void,
31
+ });
32
+
33
+ app.listen();
34
+ ```
35
+
36
+ ## 函数说明
37
+
38
+ ### `init`
39
+
40
+ - options (TInitOPtions):该参数是一组可选的配置对象,包含以下字段:
41
+
42
+ - koaInstance (Koa):自定义 Koa 实例。如果未提供,将创建一个新的 Koa 实例。
43
+
44
+ - authCheckCallback (AuthRouterCallback):鉴权路由回调函数,用于处理鉴权逻辑。
45
+
46
+ - catchErrorCallback (TErrorCallback):用于捕获错误时的回调函数。
47
+
48
+ - registerHighPriorityMiddleware ((app: Koa) => void)) : 高优先级中间件注册函数,用于注册一些高优先级中间件。
49
+
50
+ ## 能力
51
+
52
+ ### 约定式路由
53
+
54
+ 控制器注册路由,约定在`src/controller`目录下.ts 文件,使用`@Router`和`@AuthRouter`装饰器注册路由
55
+
56
+ ```
57
+ --src
58
+ --controller
59
+ --user
60
+ --user.ts
61
+ ```
62
+
63
+ ```typescript
64
+ # src/controller/api/v1/user.ts
65
+ import { Router, AuthRouter } from "koa-ts-core";
66
+ import { Context } from "koa";
67
+
68
+ class User {
69
+ @Router("get")
70
+ // 注册普通路由
71
+ async userInfo(ctx: Context) {
72
+ ctx.body = {
73
+ success: true,
74
+ };
75
+ }
76
+
77
+ @AuthRouter("post")
78
+ // 注册权限路由
79
+ async setUserInfo(ctx: Context) {
80
+ ctx.body = {
81
+ success: true,
82
+ };
83
+ }
84
+ }
85
+
86
+ export default User;
87
+ ```
88
+
89
+ ### 权限校验
90
+
91
+ 每一个控制器的路由注册方法有一个唯一对应的参数校验器,例如:目录`src/controller/api/v1/user.ts`中`userInfo`方法对应的校验器为`src/validate/api/v1/user.ts`中的静态方法`userInfo`
92
+
93
+ ```typescript
94
+ # src/validate/api/v1/user.ts
95
+
96
+ import { Context } from 'koa';
97
+
98
+ class UserValidate {
99
+ static userInfo(ctx: Context) {
100
+ if (!ctx.query.id) {
101
+ throw new Error('id is required');
102
+ }
103
+ }
104
+ }
105
+
106
+ export default UserValidate;
107
+ ```
108
+
109
+ ### 无 Context 请求响应
110
+
111
+ ```typescript
112
+ /**
113
+ * 构建成功的请求响应
114
+ * @param options - 成功响应的选项,如数据和消息
115
+ */
116
+ export declare const successRsp: (options?: Options) => void;
117
+ /**
118
+ * 构建不成功的请求响应,但 HTTP 状态码仍为 200
119
+ * @param options - 包含可能的错误码、消息和数据
120
+ */
121
+ export declare const unSuccessRsp: (options?: Options) => void;
122
+ /**
123
+ * 构建异常请求响应,HTTP 状态码不为 200
124
+ * @param statusCode - 要返回的 HTTP 状态码
125
+ * @param options - 包含可能的错误信息、数据等
126
+ */
127
+ export declare const errorRsp: (statusCode: number, options?: Options) => void;
128
+ ```
129
+
130
+ ### 异常处理
131
+
132
+ ```typescript
133
+ import { BaseException } from "koa-ts-core";
134
+ /**
135
+ * 自定义异常
136
+ */
137
+ export class CustomException extends BaseException {
138
+ // 自定义异常码
139
+ code = 1000;
140
+
141
+ constructor(message: string) {
142
+ super(message);
143
+ }
144
+ }
145
+
146
+ throw new CustomException("自定义异常");
147
+ ```
148
+
149
+ ### 加载环境变量
150
+
151
+ 使用[dotenv](https://www.npmjs.com/package/dotenv)库对.env 文件进行预加载,约定目录为`env`,支持以下文件约定
152
+
153
+ ```
154
+ --env
155
+ --.development.env
156
+ --.production.env
157
+ --.test.env
158
+ --.common.env
159
+ ```
160
+
161
+ ### 根据配置生成文档
162
+
163
+ 在项目目录下执行`koa-ts-cli doc`,根据`controller`目录下生成在根目录`doc`目录下的配置文档
164
+
165
+ ```typescript
166
+ # 控制器目录 src/controller/test.ts
167
+ import Koa from 'koa';
168
+ import { successRsp, Router, AuthRouter } from 'koa-ts-core';
169
+
170
+ class Test {
171
+ @Router('get')
172
+ async get_test(ctx: Koa.Context) {
173
+ successRsp();
174
+ }
175
+ }
176
+
177
+ export default Test;
178
+
179
+ # 构建生成的文档 doc/test.ts
180
+ export default class Test {
181
+ static desc = '';
182
+ get_test() {
183
+ return {
184
+ method: 'get',
185
+ description: '',
186
+ path: '/get_test',
187
+ request: {
188
+ header: { 'Content-Type': 'application/json', Authorization: '' },
189
+ body: {},
190
+ query: {}
191
+ },
192
+ response: { body: {} }
193
+ };
194
+ }
195
+ }
196
+
197
+ ```
198
+
199
+ 打开`/doc`路由地址,渲染文档
package/dist/index.cjs.js CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("async_hooks"),n=require("fs"),r=require("path"),t=require("koa"),s=require("koa-router"),o=require("net"),a=require("dotenv");function c(e,n,r=!1){return(t,s,o)=>{let a=t.constructor.routesMap;a instanceof Map||(t.constructor.routesMap=new Map,a=t.constructor.routesMap);const c=t.constructor.name,i=n??s;return a.set(s,{handler:function(...e){if("function"!=typeof o.value)throw new Error("Register Router Error");return o.value.apply(t,e)},path:`/${i.replace("/","")}`,method:e,functionName:s,authRequired:r,middlewares:[],className:c}),t}}const i=["get","post","put","delete","patch","options"],l=0,p=new e.AsyncLocalStorage,u=()=>{const e=p.getStore();if(!e)throw new Error("context is not exist");return e},d=e=>{const{success:n=!0,errorCode:r=-1,message:t="success",errorMessage:s="error request",data:o=null,statusCode:a=200}=e??{},c=u(),i={code:n?l:r,message:n?t:s,...o&&{data:o}};c.body=i,c.status=a},h=(e,n)=>{d({success:!1,errorMessage:n?.message,errorCode:n?.code,data:n?.data,statusCode:e})};class f extends Error{constructor(e){super(e?.message||"An unexpected error occurred"),this.name=this.constructor.name,this.code=e?.code??-1,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.stack=this.stack??new Error(this.message).stack}get toRspOptions(){return{code:this.code,message:this.message,data:this.stack}}}const y=process.cwd(),g=()=>{const e=r.resolve(y,"src");return{controllerModule:r.resolve(e,"controller"),validateModule:r.resolve(e,"validate"),viewModule:r.resolve(e,"view"),docModule:r.resolve(e,"doc")}},v=e=>{if(n.existsSync(e)){return require(e).default}};function m(e,t){try{n.readdirSync(e,{withFileTypes:!0}).forEach((n=>{const s=r.resolve(e,n.name);n.isFile()?t({path:e,name:n.name,wholePath:s},n):n.isDirectory()&&m(s,t)}))}catch(e){}}const b=e=>"win32"===process.platform?e.replace(/\\/g,"/"):e,w=(e,n)=>p.run(e,(()=>n())),q=new s,x=e=>new Promise((n=>{const r=o.createServer();r.unref(),r.on("error",(()=>n(!1))),r.listen(e,(()=>{r.close((()=>n(!0)))}))})),E=t.prototype.listen,R=e=>{const n=e.address();if(n){((e,n)=>{const r=null!==n?`http://${e}:${n}`:e;console.log(`app listen ${r}`)})("object"==typeof n?(e=>"::"===e?"0.0.0.0":e)(n.address):n,"object"==typeof n?n.port:null)}},k=async e=>{const n=await(async(e=8e3,n=9999)=>{let r=e;for(;r<=n;){if(await x(r))return r;r+=1}throw new Error("No available port found")})();return e.listen=(...r)=>{const t=r?E.apply(e,[n]):E.apply(e,r);return t.on("listening",(()=>R(t))),t},n},S=(e,n,r,t)=>{const{controllerPrefix:s,moduleName:o,name:a}=(e=>{const n="controller",r=e.path.indexOf(n);if(-1===r)throw new Error(`'${n}' not found in path: ${e.path}`);const t=b(e.path.substring(r+10)),s=e.name?.split(".")?.[0];return{controllerPrefix:t,moduleName:s,name:e.name}})(n),c=`${s}/${o}`;if(!r)return;const i=v(`${e}${`${s}/${a}`}`);r.forEach((e=>{const{method:n,path:r,handler:s,functionName:o,authRequired:a,middlewares:l}=e;var p;i&&"function"==typeof i[o]&&l.push((p=i[o],async(e,n)=>{const r=p(e);r instanceof Promise&&await r,await n()}));const u=(d=a,h=s,async(e,n)=>{let r=t(d,e);return r instanceof Promise&&(r=await r),r?h(e,n):e.throw(403,"无权限")});var d,h;const f=[...l,u],y=A(r,c,o,f,n);e.path=y}))},A=(e,n,r,t,s)=>{const o=r.toLowerCase();let a="get";a="get_"===o?"get":i.includes(o)?o:s??"get";const c=`${n}${"get_"==o?"":e??""}`;return q[a](c,...t),c},O=process.cwd();var M=function(e){var n=Object.prototype.hasOwnProperty;function r(e,t){return Array.isArray(e)?function(e,n){for(var t,s="",o="",c=Array.isArray(n),i=0;i<e.length;i++)(t=r(e[i]))&&(c&&n[i]&&(t=a(t)),s=s+o+t,o=" ");return s}(e,t):e&&"object"==typeof e?function(e){var r="",t="";for(var s in e)s&&e[s]&&n.call(e,s)&&(r=r+t+s,t=" ");return r}(e):e||""}function t(e){if(!e)return"";if("object"==typeof e){var r="";for(var t in e)n.call(e,t)&&(r=r+t+":"+e[t]+";");return r}return e+""}function s(e,n,r,t){return!1!==n&&null!=n&&(n||"class"!==e&&"style"!==e)?!0===n?" "+(t?e:e+'="'+e+'"'):("function"==typeof n.toJSON&&(n=n.toJSON()),"string"==typeof n||(n=JSON.stringify(n),r||-1===n.indexOf('"'))?(r&&(n=a(n))," "+e+'="'+n+'"'):" "+e+"='"+n.replace(/'/g,"&#39;")+"'"):""}e.merge=function e(n,r){if(1===arguments.length){for(var s=n[0],o=1;o<n.length;o++)s=e(s,n[o]);return s}for(var a in r)if("class"===a){var c=n[a]||[];n[a]=(Array.isArray(c)?c:[c]).concat(r[a]||[])}else if("style"===a){c=(c=t(n[a]))&&";"!==c[c.length-1]?c+";":c;var i=t(r[a]);i=i&&";"!==i[i.length-1]?i+";":i,n[a]=c+i}else n[a]=r[a];return n},e.classes=r,e.style=t,e.attr=s,e.attrs=function(e,o){var a="";for(var c in e)if(n.call(e,c)){var i=e[c];if("class"===c){a=s(c,i=r(i),!1,o)+a;continue}"style"===c&&(i=t(i)),a+=s(c,i,!1,o)}return a};var o=/["&<>]/;function a(e){var n=""+e,r=o.exec(n);if(!r)return e;var t,s,a,c="";for(t=r.index,s=0;t<n.length;t++){switch(n.charCodeAt(t)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;case 62:a="&gt;";break;default:continue}s!==t&&(c+=n.substring(s,t)),s=t+1,c+=a}return s!==t?c+n.substring(s,t):c}return e.escape=a,e.rethrow=function e(n,r,t,s){if(!(n instanceof Error))throw n;if(!("undefined"==typeof window&&r||s))throw n.message+=" on line "+t,n;try{s=s||require("fs").readFileSync(r,"utf8")}catch(r){e(n,null,t)}var o=3,a=s.split("\n"),c=Math.max(t-o,0),i=Math.min(a.length,t+o);o=a.slice(c,i).map((function(e,n){var r=n+c+1;return(r==t?" > ":" ")+r+"| "+e})).join("\n");throw n.path=r,n.message=(r||"Pug")+":"+t+"\n"+o+"\n\n"+n.message,n},e}({});function N(e){var n,r,t="";try{var s={},o=e||{};(function(e,r){t+="<!DOCTYPE html>",t+="\n<html>",t+="\n <head>",t+="\n <title>",t+="API Documentation</title>",t+="\n <style>\n ",t+="body { font-family: Arial, sans-serif; margin: 20px; }",t+="\n ",t+="",t+="\n ",t+="h1 { color: #333; text-align: center; }",t+="\n ",t+="h2, h3 { cursor: pointer; transition: color 0.3s; }",t+="\n ",t+="h2 { color: #007BFF; }",t+="\n ",t+="h2:hover { color: #0056b3; }",t+="\n ",t+="h3 { color: #0d6efd; }",t+="\n ",t+="h3:hover { color: #0056b3; } ",t+="\n ",t+="",t+="\n ",t+=".api-section { ",t+="\n ",t+=" margin: 20px 0; ",t+="\n ",t+=" border: 1px solid #e0e0e0; ",t+="\n ",t+=" border-radius: 8px; ",t+="\n ",t+=" padding: 10px; ",t+="\n ",t+=" background-color: #f9f9f9; ",t+="\n ",t+=" box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); ",t+="\n ",t+="}",t+="\n ",t+="",t+="\n ",t+=".api-method { font-weight: bold; color: #333; }",t+="\n ",t+=".api-path { font-style: italic; color: #555; }",t+="\n ",t+="",t+="\n ",t+="pre { ",t+="\n ",t+=" background: #f4f4f4; ",t+="\n ",t+=" padding: 10px; ",t+="\n ",t+=" border-radius: 5px; ",t+="\n ",t+=" overflow-x: auto; ",t+="\n ",t+="}",t+="\n ",t+="",t+="\n ",t+=".collapse { display: none; }",t+="\n ",t+="\n </style>\n </head>",t+="\n <body>",t+="\n <h1>",t+="API Documentation</h1>",t+="\n \x3c!-- 添加 JavaScript 用于折叠 Sections--\x3e",t+="\n <script>\n ",t+="document.addEventListener('DOMContentLoaded', function() {",t+="\n ",t+=" // 折叠 API 部分",t+="\n ",t+=" const headings = document.querySelectorAll('h2');",t+="\n ",t+=" headings.forEach(heading => {",t+="\n ",t+=" heading.addEventListener('click', function() {",t+="\n ",t+=" const content = this.parentElement.querySelectorAll('.collapse')[0];",t+="\n ",t+=" if (content) {",t+="\n ",t+=' content.style.display = (content.style.display === "block") ? "none" : "block";',t+="\n ",t+=" }",t+="\n ",t+=" });",t+="\n ",t+=" });",t+="\n ",t+=" ",t+="\n ",t+=" // 折叠 API 方法",t+="\n ",t+=" const methodHeadings = document.querySelectorAll('h3');",t+="\n ",t+=" methodHeadings.forEach(method => {",t+="\n ",t+=" method.addEventListener('click', function() {",t+="\n ",t+=" const details = this.nextElementSibling;",t+="\n ",t+=" if (details) {",t+="\n ",t+=' details.style.display = (details.style.display === "block") ? "none" : "block";',t+="\n ",t+=" }",t+="\n ",t+=" });",t+="\n ",t+=" });",t+="\n ",t+="});",t+="\n ",t+="\n <\/script>",function(){var s=r;if("number"==typeof s.length)for(var o=0,a=s.length;o<a;o++){var c=s[o];t+='\n <div class="api-section">',t=(t+='\n <h2 class="toggle">')+M.escape(null==(n=c.name)?"":n)+"</h2>",c.desc&&(t=(t+="\n <p>")+M.escape(null==(n=c.desc)?"":n)+"</p>"),t+='\n <div class="collapse">',function(){var r=c.configs;if("number"==typeof r.length)for(var s=0,o=r.length;s<o;s++){var a=r[s];t=(t+='\n <h3 class="api-method">')+M.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",t=(t+="\n <h4>")+M.escape(null==(n=a.description)?"":n)+"</h4>",t+="\n <pre>",t+="Request Header:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Query:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Response Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}else{o=0;for(var s in r){o++;a=r[s];t=(t+='\n <h3 class="api-method">')+M.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",t=(t+="\n <h4>")+M.escape(null==(n=a.description)?"":n)+"</h4>",t+="\n <pre>",t+="Request Header:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Query:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Response Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}}}.call(this),t+="\n </div>\n </div>"}else{a=0;for(var o in s){a++;c=s[o];t+='\n <div class="api-section">',t=(t+='\n <h2 class="toggle">')+M.escape(null==(n=c.name)?"":n)+"</h2>",c.desc&&(t=(t+="\n <p>")+M.escape(null==(n=c.desc)?"":n)+"</p>"),t+='\n <div class="collapse">',function(){var r=c.configs;if("number"==typeof r.length)for(var s=0,o=r.length;s<o;s++){var a=r[s];t=(t+='\n <h3 class="api-method">')+M.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",t=(t+="\n <h4>")+M.escape(null==(n=a.description)?"":n)+"</h4>",t+="\n <pre>",t+="Request Header:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Query:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Response Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}else{o=0;for(var s in r){o++;a=r[s];t=(t+='\n <h3 class="api-method">')+M.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",t=(t+="\n <h4>")+M.escape(null==(n=a.description)?"":n)+"</h4>",t+="\n <pre>",t+="Request Header:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Request Query:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",t+="\n <pre>",t+="Response Body:</pre>",t=(t+="\n <pre>")+M.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}}}.call(this),t+="\n </div>\n </div>"}}}.call(this),t+="\n </body>\n</html>"}).call(this,"JSON"in o?o.JSON:"undefined"!=typeof JSON?JSON:void 0,"apiData"in o?o.apiData:"undefined"!=typeof apiData?apiData:void 0)}catch(e){M.rethrow(e,r,undefined,s[void 0])}return t}const C={DOCUMENTATION_DIR:r.join(process.cwd(),"doc")},P=e=>{const n=v(e.wholePath),r=n.prototype,t=Object.getOwnPropertyNames(r).filter((e=>"function"==typeof r[e]&&"constructor"!==e)),s=e.path.substring(e.path.indexOf("doc")+3);return{configs:t.map((e=>{if("function"==typeof r[e]){const n=r[e]();return n.path=s+n.path,n}return null})).filter((e=>!!e)),desc:n.desc,name:n.name}};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",n=r.resolve(O,"env");switch(console.log("load env path: ",n),a.config({path:r.resolve(n,".common.env")}),e){case"development":a.config({path:r.resolve(n,".development.env")});break;case"test":a.config({path:r.resolve(n,".test.env")});break;case"production":a.config({path:r.resolve(n,".production.env")})}})();exports.AuthRouter=function(e,n){return c(e,n,!0)},exports.BaseException=f,exports.Router=function(e,n){return c(e,n)},exports.contextStore=p,exports.errorRsp=h,exports.getCurrentContext=u,exports.getSrcModulePaths=g,exports.initializeKoaApp=async e=>{const{koaInstance:n,authCheckCallback:r,catchErrorCallback:s,registerHighPriorityMiddleware:o}=e;(e=>{const{controllerModule:n,validateModule:r}=g();m(n,(n=>{if(!n.path.includes("controller"))return;const t=v(n.wholePath),s=t?.routesMap;s&&S(r,n,s,((r,t)=>!r||e({filePath:n,ctx:t})))}))})(r);const a=n||new t;var c;if(a.use(w),o?.(a),a.use((c=s,async(e,n)=>{try{await n()}catch(n){c?c(n,e):h(500,{message:n.message})}})),isDev){const e=await(async()=>{const e=[];return m(C.DOCUMENTATION_DIR,(n=>{e.push(P(n))})),N({apiData:e})})();q.get("/doc",(async n=>{n.body=e}))}return a.use(q.routes()),await k(a),[a,q]},exports.successRsp=e=>{const n=Array.isArray(e?.data);d({success:!0,message:e?.message,data:n?{list:e?.data}:e?.data})},exports.unSuccessRsp=e=>{d({success:!1,errorCode:e?.code,errorMessage:e?.message,data:e?.data})};
1
+ "use strict";var e=require("async_hooks"),t=require("fs"),r=require("path"),n=require("koa"),o=require("koa-router"),s=require("os"),i=require("net"),a=require("tty"),u=require("util"),c=require("dotenv");function l(e,t,r=!1){return(n,o,s)=>{let i=n.constructor.routesMap;i instanceof Map||(n.constructor.routesMap=new Map,i=n.constructor.routesMap);const a=n.constructor.name,u=t??o;return i.set(o,{handler:function(...e){if("function"!=typeof s.value)throw new Error("Register Router Error");return s.value.apply(n,e)},path:`/${u.replace("/","")}`,method:e,functionName:o,authRequired:r,middlewares:[],className:a}),n}}const f=["get","post","put","delete","patch","options"],p=0,h=new e.AsyncLocalStorage,d=()=>{const e=h.getStore();if(!e)throw new Error("context is not exist");return e},y=e=>{const{success:t=!0,errorCode:r=-1,message:n="success",errorMessage:o="error request",data:s=null,statusCode:i=200}=e??{},a=d(),u={code:t?p:r,message:t?n:o,...s&&{data:s}};a.body=u,a.status=i},m=(e,t)=>{y({success:!1,errorMessage:t?.message,errorCode:t?.code,data:t?.data,statusCode:e})};class v extends Error{constructor(e){super(e?.message||"An unexpected error occurred"),this.name=this.constructor.name,this.code=e?.code??-1,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.stack=this.stack??new Error(this.message).stack}get toRspOptions(){return{code:this.code,message:this.message,data:this.stack}}}const g=process.cwd(),b=()=>{const e=r.resolve(g,"src");return{controllerModule:r.resolve(e,"controller"),validateModule:r.resolve(e,"validate"),viewModule:r.resolve(e,"view"),docModule:r.resolve(e,"doc")}},w=e=>{if(t.existsSync(e)){return require(e).default}};function C(e,n){try{t.readdirSync(e,{withFileTypes:!0}).forEach((t=>{const o=r.resolve(e,t.name);t.isFile()?n({path:e,name:t.name,wholePath:o},t):t.isDirectory()&&C(o,n)}))}catch(e){}}const k=e=>"win32"===process.platform?e.replace(/\\/g,"/"):e,x=(e,t)=>h.run(e,(()=>t())),S=new o;function P(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function E(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var O={};function F(e,...t){return(...r)=>e(...t,...r)}function A(e){return function(...t){var r=t.pop();return e.call(this,t,r)}}var j="function"==typeof queueMicrotask&&queueMicrotask,L="function"==typeof setImmediate&&setImmediate,q="object"==typeof process&&"function"==typeof process.nextTick;function _(e){setTimeout(e,0)}function I(e){return(t,...r)=>e((()=>t(...r)))}var M=I(j?queueMicrotask:L?setImmediate:q?process.nextTick:_);function N(e){return B(e)?function(...t){const r=t.pop();return D(e.apply(this,t),r)}:A((function(t,r){var n;try{n=e.apply(this,t)}catch(e){return r(e)}if(n&&"function"==typeof n.then)return D(n,r);r(null,n)}))}function D(e,t){return e.then((e=>{R(t,null,e)}),(e=>{R(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function R(e,t,r){try{e(t,r)}catch(e){M((e=>{throw e}),e)}}function B(e){return"AsyncFunction"===e[Symbol.toStringTag]}function T(e){if("function"!=typeof e)throw new Error("expected a function");return B(e)?N(e):e}function $(e,t){if(t||(t=e.length),!t)throw new Error("arity is undefined");return function(...r){return"function"==typeof r[t-1]?e.apply(this,r):new Promise(((n,o)=>{r[t-1]=(e,...t)=>{if(e)return o(e);n(t.length>1?t:t[0])},e.apply(this,r)}))}}function U(e){return function(t,...r){return $((function(n){var o=this;return e(t,((e,t)=>{T(e).apply(o,r.concat(t))}),n)}))}}function z(e,t,r,n){t=t||[];var o=[],s=0,i=T(r);return e(t,((e,t,r)=>{var n=s++;i(e,((e,t)=>{o[n]=t,r(e)}))}),(e=>{n(e,o)}))}function H(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0}const J={};function V(e){function t(...t){if(null!==e){var r=e;e=null,r.apply(this,t)}}return Object.assign(t,e),t}function Q(e){if(H(e))return function(e){var t=-1,r=e.length;return function(){return++t<r?{value:e[t],key:t}:null}}(e);var t,r,n,o,s=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}(e);return s?function(e){var t=-1;return function(){var r=e.next();return r.done?null:(t++,{value:r.value,key:t})}}(s):(r=(t=e)?Object.keys(t):[],n=-1,o=r.length,function e(){var s=r[++n];return"__proto__"===s?e():n<o?{value:t[s],key:s}:null})}function G(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var r=e;e=null,r.apply(this,t)}}function W(e,t,r,n){let o=!1,s=!1,i=!1,a=0,u=0;function c(){a>=t||i||o||(i=!0,e.next().then((({value:e,done:t})=>{if(!s&&!o){if(i=!1,t)return o=!0,void(a<=0&&n(null));a++,r(e,u,l),u++,c()}})).catch(f))}function l(e,t){if(a-=1,!s)return e?f(e):!1===e?(o=!0,void(s=!0)):t===J||o&&a<=0?(o=!0,n(null)):void c()}function f(e){s||(i=!1,o=!0,n(e))}c()}var K=e=>(t,r,n)=>{if(n=V(n),e<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return n(null);if("AsyncGenerator"===t[Symbol.toStringTag])return W(t,e,r,n);if(function(e){return"function"==typeof e[Symbol.asyncIterator]}(t))return W(t[Symbol.asyncIterator](),e,r,n);var o=Q(t),s=!1,i=!1,a=0,u=!1;function c(e,t){if(!i)if(a-=1,e)s=!0,n(e);else if(!1===e)s=!0,i=!0;else{if(t===J||s&&a<=0)return s=!0,n(null);u||l()}}function l(){for(u=!0;a<e&&!s;){var t=o();if(null===t)return s=!0,void(a<=0&&n(null));a+=1,r(t.value,t.key,G(c))}u=!1}l()};var Z=$((function(e,t,r,n){return K(t)(e,T(r),n)}),4);function Y(e,t,r){r=V(r);var n=0,o=0,{length:s}=e,i=!1;function a(e,t){!1===e&&(i=!0),!0!==i&&(e?r(e):++o!==s&&t!==J||r(null))}for(0===s&&r(null);n<s;n++)t(e[n],n,G(a))}function X(e,t,r){return Z(e,1/0,t,r)}var ee=$((function(e,t,r){return(H(e)?Y:X)(e,T(t),r)}),3);var te=$((function(e,t,r){return z(ee,e,t,r)}),3),re=U(te);var ne=$((function(e,t,r){return Z(e,1,t,r)}),3);var oe=$((function(e,t,r){return z(ne,e,t,r)}),3),se=U(oe);const ie=Symbol("promiseCallback");function ae(){let e,t;function r(r,...n){if(r)return t(r);e(n.length>1?n:n[0])}return r[ie]=new Promise(((r,n)=>{e=r,t=n})),r}function ue(e,t,r){"number"!=typeof t&&(r=t,t=null),r=V(r||ae());var n=Object.keys(e).length;if(!n)return r(null);t||(t=n);var o={},s=0,i=!1,a=!1,u=Object.create(null),c=[],l=[],f={};function p(e,t){c.push((()=>function(e,t){if(a)return;var n=G(((t,...n)=>{if(s--,!1!==t)if(n.length<2&&([n]=n),t){var c={};if(Object.keys(o).forEach((e=>{c[e]=o[e]})),c[e]=n,a=!0,u=Object.create(null),i)return;r(t,c)}else o[e]=n,(u[e]||[]).forEach((e=>e())),h();else i=!0}));s++;var c=T(t[t.length-1]);t.length>1?c(o,n):c(n)}(e,t)))}function h(){if(!i){if(0===c.length&&0===s)return r(null,o);for(;c.length&&s<t;){c.shift()()}}}function d(t){var r=[];return Object.keys(e).forEach((n=>{const o=e[n];Array.isArray(o)&&o.indexOf(t)>=0&&r.push(n)})),r}return Object.keys(e).forEach((t=>{var r=e[t];if(!Array.isArray(r))return p(t,[r]),void l.push(t);var n=r.slice(0,r.length-1),o=n.length;if(0===o)return p(t,r),void l.push(t);f[t]=o,n.forEach((s=>{if(!e[s])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+s+"` in "+n.join(", "));!function(e,t){var r=u[e];r||(r=u[e]=[]);r.push(t)}(s,(()=>{0===--o&&p(t,r)}))}))})),function(){var e=0;for(;l.length;)e++,d(l.pop()).forEach((e=>{0===--f[e]&&l.push(e)}));if(e!==n)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),h(),r[ie]}var ce=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,le=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,fe=/,/,pe=/(=.+)?(\s*)$/;function he(e,t){var r={};return Object.keys(e).forEach((t=>{var n,o=e[t],s=B(o),i=!s&&1===o.length||s&&0===o.length;if(Array.isArray(o))n=[...o],o=n.pop(),r[t]=n.concat(n.length>0?a:o);else if(i)r[t]=o;else{if(n=function(e){const t=function(e){let t="",r=0,n=e.indexOf("*/");for(;r<e.length;)if("/"===e[r]&&"/"===e[r+1]){let t=e.indexOf("\n",r);r=-1===t?e.length:t}else if(-1!==n&&"/"===e[r]&&"*"===e[r+1]){let o=e.indexOf("*/",r);-1!==o?(r=o+2,n=e.indexOf("*/",r)):(t+=e[r],r++)}else t+=e[r],r++;return t}(e.toString());let r=t.match(ce);if(r||(r=t.match(le)),!r)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,n]=r;return n.replace(/\s/g,"").split(fe).map((e=>e.replace(pe,"").trim()))}(o),0===o.length&&!s&&0===n.length)throw new Error("autoInject task functions require explicit parameters.");s||n.pop(),r[t]=n.concat(a)}function a(e,t){var r=n.map((t=>e[t]));r.push(t),T(o)(...r)}})),ue(r,t)}class de{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):ye(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):ye(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:r}=t;e(t)&&this.removeLink(t),t=r}return this}}function ye(e,t){e.length=1,e.head=e.tail=t}function me(e,t,r){if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var n=T(e),o=0,s=[];const i={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function a(e,t){return e?t?void(i[e]=i[e].filter((e=>e!==t))):i[e]=[]:Object.keys(i).forEach((e=>i[e]=[]))}function u(e,...t){i[e].forEach((e=>e(...t)))}var c=!1;function l(e,t,r,n){if(null!=n&&"function"!=typeof n)throw new Error("task callback must be a function");var o,s;function i(e,...t){return e?r?s(e):o():t.length<=1?o(t[0]):void o(t)}y.started=!0;var a=y._createTaskItem(e,r?i:n||i);if(t?y._tasks.unshift(a):y._tasks.push(a),c||(c=!0,M((()=>{c=!1,y.process()}))),r||!n)return new Promise(((e,t)=>{o=e,s=t}))}function f(e){return function(t,...r){o-=1;for(var n=0,i=e.length;n<i;n++){var a=e[n],c=s.indexOf(a);0===c?s.shift():c>0&&s.splice(c,1),a.callback(t,...r),null!=t&&u("error",t,a.data)}o<=y.concurrency-y.buffer&&u("unsaturated"),y.idle()&&u("drain"),y.process()}}function p(e){return!(0!==e.length||!y.idle())&&(M((()=>u("drain"))),!0)}const h=e=>t=>{if(!t)return new Promise(((t,r)=>{!function(e,t){const r=(...n)=>{a(e,r),t(...n)};i[e].push(r)}(e,((e,n)=>{if(e)return r(e);t(n)}))}));a(e),function(e,t){i[e].push(t)}(e,t)};var d=!1,y={_tasks:new de,_createTaskItem:(e,t)=>({data:e,callback:t}),*[Symbol.iterator](){yield*y._tasks[Symbol.iterator]()},concurrency:t,payload:r,buffer:t/4,started:!1,paused:!1,push(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!1,!1,t)))}return l(e,!1,!1,t)},pushAsync(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!1,!0,t)))}return l(e,!1,!0,t)},kill(){a(),y._tasks.empty()},unshift(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!0,!1,t)))}return l(e,!0,!1,t)},unshiftAsync(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!0,!0,t)))}return l(e,!0,!0,t)},remove(e){y._tasks.remove(e)},process(){if(!d){for(d=!0;!y.paused&&o<y.concurrency&&y._tasks.length;){var e=[],t=[],r=y._tasks.length;y.payload&&(r=Math.min(r,y.payload));for(var i=0;i<r;i++){var a=y._tasks.shift();e.push(a),s.push(a),t.push(a.data)}o+=1,0===y._tasks.length&&u("empty"),o===y.concurrency&&u("saturated");var c=G(f(e));n(t,c)}d=!1}},length:()=>y._tasks.length,running:()=>o,workersList:()=>s,idle:()=>y._tasks.length+o===0,pause(){y.paused=!0},resume(){!1!==y.paused&&(y.paused=!1,M(y.process))}};return Object.defineProperties(y,{saturated:{writable:!1,value:h("saturated")},unsaturated:{writable:!1,value:h("unsaturated")},empty:{writable:!1,value:h("empty")},drain:{writable:!1,value:h("drain")},error:{writable:!1,value:h("error")}}),y}function ve(e,t){return me(e,1,t)}function ge(e,t,r){return me(e,t,r)}var be=$((function(e,t,r,n){n=V(n);var o=T(r);return ne(e,((e,r,n)=>{o(t,e,((e,r)=>{t=r,n(e)}))}),(e=>n(e,t)))}),4);function we(...e){var t=e.map(T);return function(...e){var r=this,n=e[e.length-1];return"function"==typeof n?e.pop():n=ae(),be(t,e,((e,t,n)=>{t.apply(r,e.concat(((e,...t)=>{n(e,t)})))}),((e,t)=>n(e,...t))),n[ie]}}function Ce(...e){return we(...e.reverse())}var ke=$((function(e,t,r,n){return z(K(t),e,r,n)}),4);var xe=$((function(e,t,r,n){var o=T(r);return ke(e,t,((e,t)=>{o(e,((e,...r)=>e?t(e):t(e,r)))}),((e,t)=>{for(var r=[],o=0;o<t.length;o++)t[o]&&(r=r.concat(...t[o]));return n(e,r)}))}),4);var Se=$((function(e,t,r){return xe(e,1/0,t,r)}),3);var Pe=$((function(e,t,r){return xe(e,1,t,r)}),3);function Ee(...e){return function(...t){return t.pop()(null,...e)}}function Oe(e,t){return(r,n,o,s)=>{var i,a=!1;const u=T(o);r(n,((r,n,o)=>{u(r,((n,s)=>n||!1===n?o(n):e(s)&&!i?(a=!0,i=t(!0,r),o(null,J)):void o()))}),(e=>{if(e)return s(e);s(null,a?i:t(!1))}))}}var Fe=$((function(e,t,r){return Oe((e=>e),((e,t)=>t))(ee,e,t,r)}),3);var Ae=$((function(e,t,r,n){return Oe((e=>e),((e,t)=>t))(K(t),e,r,n)}),4);var je=$((function(e,t,r){return Oe((e=>e),((e,t)=>t))(K(1),e,t,r)}),3);function Le(e){return(t,...r)=>T(t)(...r,((t,...r)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&r.forEach((t=>console[e](t))))}))}var qe=Le("dir");var _e=$((function(e,t,r){r=G(r);var n,o=T(e),s=T(t);function i(e,...t){if(e)return r(e);!1!==e&&(n=t,s(...t,a))}function a(e,t){return e?r(e):!1!==e?t?void o(i):r(null,...n):void 0}return a(null,!0)}),3);function Ie(e,t,r){const n=T(t);return _e(e,((...e)=>{const t=e.pop();n(...e,((e,r)=>t(e,!r)))}),r)}function Me(e){return(t,r,n)=>e(t,n)}var Ne=$((function(e,t,r){return ee(e,Me(T(t)),r)}),3);var De=$((function(e,t,r,n){return K(t)(e,Me(T(r)),n)}),4);var Re=$((function(e,t,r){return De(e,1,t,r)}),3);function Be(e){return B(e)?e:function(...t){var r=t.pop(),n=!0;t.push(((...e)=>{n?M((()=>r(...e))):r(...e)})),e.apply(this,t),n=!1}}var Te=$((function(e,t,r){return Oe((e=>!e),(e=>!e))(ee,e,t,r)}),3);var $e=$((function(e,t,r,n){return Oe((e=>!e),(e=>!e))(K(t),e,r,n)}),4);var Ue=$((function(e,t,r){return Oe((e=>!e),(e=>!e))(ne,e,t,r)}),3);function ze(e,t,r,n){var o=new Array(t.length);e(t,((e,t,n)=>{r(e,((e,r)=>{o[t]=!!r,n(e)}))}),(e=>{if(e)return n(e);for(var r=[],s=0;s<t.length;s++)o[s]&&r.push(t[s]);n(null,r)}))}function He(e,t,r,n){var o=[];e(t,((e,t,n)=>{r(e,((r,s)=>{if(r)return n(r);s&&o.push({index:t,value:e}),n(r)}))}),(e=>{if(e)return n(e);n(null,o.sort(((e,t)=>e.index-t.index)).map((e=>e.value)))}))}function Je(e,t,r,n){return(H(t)?ze:He)(e,t,T(r),n)}var Ve=$((function(e,t,r){return Je(ee,e,t,r)}),3);var Qe=$((function(e,t,r,n){return Je(K(t),e,r,n)}),4);var Ge=$((function(e,t,r){return Je(ne,e,t,r)}),3);var We=$((function(e,t){var r=G(t),n=T(Be(e));return function e(t){if(t)return r(t);!1!==t&&n(e)}()}),2);var Ke=$((function(e,t,r,n){var o=T(r);return ke(e,t,((e,t)=>{o(e,((r,n)=>r?t(r):t(r,{key:n,val:e})))}),((e,t)=>{for(var r={},{hasOwnProperty:o}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:i}=t[s],{val:a}=t[s];o.call(r,i)?r[i].push(a):r[i]=[a]}return n(e,r)}))}),4);function Ze(e,t,r){return Ke(e,1/0,t,r)}function Ye(e,t,r){return Ke(e,1,t,r)}var Xe=Le("log");var et=$((function(e,t,r,n){n=V(n);var o={},s=T(r);return K(t)(e,((e,t,r)=>{s(e,t,((e,n)=>{if(e)return r(e);o[t]=n,r(e)}))}),(e=>n(e,o)))}),4);function tt(e,t,r){return et(e,1/0,t,r)}function rt(e,t,r){return et(e,1,t,r)}function nt(e,t=e=>e){var r=Object.create(null),n=Object.create(null),o=T(e),s=A(((e,s)=>{var i=t(...e);i in r?M((()=>s(null,...r[i]))):i in n?n[i].push(s):(n[i]=[s],o(...e,((e,...t)=>{e||(r[i]=t);var o=n[i];delete n[i];for(var s=0,a=o.length;s<a;s++)o[s](e,...t)})))}));return s.memo=r,s.unmemoized=e,s}var ot=I(q?process.nextTick:L?setImmediate:_),st=$(((e,t,r)=>{var n=H(t)?[]:{};e(t,((e,t,r)=>{T(e)(((e,...o)=>{o.length<2&&([o]=o),n[t]=o,r(e)}))}),(e=>r(e,n)))}),3);function it(e,t){return st(ee,e,t)}function at(e,t,r){return st(K(t),e,r)}function ut(e,t){var r=T(e);return me(((e,t)=>{r(e[0],t)}),t,1)}class ct{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(e){let t;for(;e>0&&ft(this.heap[e],this.heap[t=lt(e)]);){let r=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=r,e=t}}percDown(e){let t;for(;(t=1+(e<<1))<this.heap.length&&(t+1<this.heap.length&&ft(this.heap[t+1],this.heap[t])&&(t+=1),!ft(this.heap[e],this.heap[t]));){let r=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=r,e=t}}push(e){e.pushCount=++this.pushCount,this.heap.push(e),this.percUp(this.heap.length-1)}unshift(e){return this.heap.push(e)}shift(){let[e]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),e}toArray(){return[...this]}*[Symbol.iterator](){for(let e=0;e<this.heap.length;e++)yield this.heap[e].data}remove(e){let t=0;for(let r=0;r<this.heap.length;r++)e(this.heap[r])||(this.heap[t]=this.heap[r],t++);this.heap.splice(t);for(let e=lt(this.heap.length-1);e>=0;e--)this.percDown(e);return this}}function lt(e){return(e+1>>1)-1}function ft(e,t){return e.priority!==t.priority?e.priority<t.priority:e.pushCount<t.pushCount}function pt(e,t){var r=ut(e,t),{push:n,pushAsync:o}=r;function s(e,t){return Array.isArray(e)?e.map((e=>({data:e,priority:t}))):{data:e,priority:t}}return r._tasks=new ct,r._createTaskItem=({data:e,priority:t},r)=>({data:e,priority:t,callback:r}),r.push=function(e,t=0,r){return n(s(e,t),r)},r.pushAsync=function(e,t=0,r){return o(s(e,t),r)},delete r.unshift,delete r.unshiftAsync,r}var ht=$((function(e,t){if(t=V(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var r=0,n=e.length;r<n;r++)T(e[r])(t)}),2);function dt(e,t,r,n){var o=[...e].reverse();return be(o,t,r,n)}function yt(e){var t=T(e);return A((function(e,r){return e.push(((e,...t)=>{let n={};if(e&&(n.error=e),t.length>0){var o=t;t.length<=1&&([o]=t),n.value=o}r(null,n)})),t.apply(this,e)}))}function mt(e){var t;return Array.isArray(e)?t=e.map(yt):(t={},Object.keys(e).forEach((r=>{t[r]=yt.call(this,e[r])}))),t}function vt(e,t,r,n){const o=T(r);return Je(e,t,((e,t)=>{o(e,((e,r)=>{t(e,!r)}))}),n)}var gt=$((function(e,t,r){return vt(ee,e,t,r)}),3);var bt=$((function(e,t,r,n){return vt(K(t),e,r,n)}),4);var wt=$((function(e,t,r){return vt(ne,e,t,r)}),3);function Ct(e){return function(){return e}}function kt(e,t,r){var n={times:5,intervalFunc:Ct(0)};if(arguments.length<3&&"function"==typeof e?(r=t||ae(),t=e):(!function(e,t){if("object"==typeof t)e.times=+t.times||5,e.intervalFunc="function"==typeof t.interval?t.interval:Ct(+t.interval||0),e.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");e.times=+t||5}}(n,e),r=r||ae()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var o=T(t),s=1;return function e(){o(((t,...o)=>{!1!==t&&(t&&s++<n.times&&("function"!=typeof n.errorFilter||n.errorFilter(t))?setTimeout(e,n.intervalFunc(s-1)):r(t,...o))}))}(),r[ie]}function xt(e,t){t||(t=e,e=null);let r=e&&e.arity||t.length;B(t)&&(r+=1);var n=T(t);return A(((t,o)=>{function s(e){n(...t,e)}return(t.length<r-1||null==o)&&(t.push(o),o=ae()),e?kt(e,s,o):kt(s,o),o[ie]}))}function St(e,t){return st(ne,e,t)}var Pt=$((function(e,t,r){return Oe(Boolean,(e=>e))(ee,e,t,r)}),3);var Et=$((function(e,t,r,n){return Oe(Boolean,(e=>e))(K(t),e,r,n)}),4);var Ot=$((function(e,t,r){return Oe(Boolean,(e=>e))(ne,e,t,r)}),3);var Ft=$((function(e,t,r){var n=T(t);return te(e,((e,t)=>{n(e,((r,n)=>{if(r)return t(r);t(r,{value:e,criteria:n})}))}),((e,t)=>{if(e)return r(e);r(null,t.sort(o).map((e=>e.value)))}));function o(e,t){var r=e.criteria,n=t.criteria;return r<n?-1:r>n?1:0}}),3);function At(e,t,r){var n=T(e);return A(((o,s)=>{var i,a=!1;o.push(((...e)=>{a||(s(...e),clearTimeout(i))})),i=setTimeout((function(){var t=e.name||"anonymous",n=new Error('Callback function "'+t+'" timed out.');n.code="ETIMEDOUT",r&&(n.info=r),a=!0,s(n)}),t),n(...o)}))}function jt(e,t,r,n){var o=T(r);return ke(function(e){for(var t=Array(e);e--;)t[e]=e;return t}(e),t,o,n)}function Lt(e,t,r){return jt(e,1/0,t,r)}function qt(e,t,r){return jt(e,1,t,r)}function _t(e,t,r,n){arguments.length<=3&&"function"==typeof t&&(n=r,r=t,t=Array.isArray(e)?[]:{}),n=V(n||ae());var o=T(r);return ee(e,((e,r,n)=>{o(t,e,r,n)}),(e=>n(e,t))),n[ie]}var It=$((function(e,t){var r,n=null;return Re(e,((e,t)=>{T(e)(((e,...o)=>{if(!1===e)return t(e);o.length<2?[r]=o:r=o,n=e,t(e?null:{})}))}),(()=>t(n,r)))}));function Mt(e){return(...t)=>(e.unmemoized||e)(...t)}var Nt=$((function(e,t,r){r=G(r);var n=T(t),o=T(e),s=[];function i(e,...t){if(e)return r(e);s=t,!1!==e&&o(a)}function a(e,t){return e?r(e):!1!==e?t?void n(i):r(null,...s):void 0}return o(a)}),3);function Dt(e,t,r){const n=T(e);return Nt((e=>n(((t,r)=>e(t,!r)))),t,r)}var Rt,Bt,Tt,$t,Ut,zt=$((function(e,t){if(t=V(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;function n(t){T(e[r++])(...t,G(o))}function o(o,...s){if(!1!==o)return o||r===e.length?t(o,...s):void n(s)}n([])})),Ht={apply:F,applyEach:re,applyEachSeries:se,asyncify:N,auto:ue,autoInject:he,cargo:ve,cargoQueue:ge,compose:Ce,concat:Se,concatLimit:xe,concatSeries:Pe,constant:Ee,detect:Fe,detectLimit:Ae,detectSeries:je,dir:qe,doUntil:Ie,doWhilst:_e,each:Ne,eachLimit:De,eachOf:ee,eachOfLimit:Z,eachOfSeries:ne,eachSeries:Re,ensureAsync:Be,every:Te,everyLimit:$e,everySeries:Ue,filter:Ve,filterLimit:Qe,filterSeries:Ge,forever:We,groupBy:Ze,groupByLimit:Ke,groupBySeries:Ye,log:Xe,map:te,mapLimit:ke,mapSeries:oe,mapValues:tt,mapValuesLimit:et,mapValuesSeries:rt,memoize:nt,nextTick:ot,parallel:it,parallelLimit:at,priorityQueue:pt,queue:ut,race:ht,reduce:be,reduceRight:dt,reflect:yt,reflectAll:mt,reject:gt,rejectLimit:bt,rejectSeries:wt,retry:kt,retryable:xt,seq:we,series:St,setImmediate:M,some:Pt,someLimit:Et,someSeries:Ot,sortBy:Ft,timeout:At,times:Lt,timesLimit:jt,timesSeries:qt,transform:_t,tryEach:It,unmemoize:Mt,until:Dt,waterfall:zt,whilst:Nt,all:Te,allLimit:$e,allSeries:Ue,any:Pt,anyLimit:Et,anySeries:Ot,find:Fe,findLimit:Ae,findSeries:je,flatMap:Se,flatMapLimit:xe,flatMapSeries:Pe,forEach:Ne,forEachSeries:Re,forEachLimit:De,forEachOf:ee,forEachOfSeries:ne,forEachOfLimit:Z,inject:be,foldl:be,foldr:dt,select:Ve,selectLimit:Qe,selectSeries:Ge,wrapSync:N,during:Nt,doDuring:_e},Jt=E(Object.freeze({__proto__:null,all:Te,allLimit:$e,allSeries:Ue,any:Pt,anyLimit:Et,anySeries:Ot,apply:F,applyEach:re,applyEachSeries:se,asyncify:N,auto:ue,autoInject:he,cargo:ve,cargoQueue:ge,compose:Ce,concat:Se,concatLimit:xe,concatSeries:Pe,constant:Ee,default:Ht,detect:Fe,detectLimit:Ae,detectSeries:je,dir:qe,doDuring:_e,doUntil:Ie,doWhilst:_e,during:Nt,each:Ne,eachLimit:De,eachOf:ee,eachOfLimit:Z,eachOfSeries:ne,eachSeries:Re,ensureAsync:Be,every:Te,everyLimit:$e,everySeries:Ue,filter:Ve,filterLimit:Qe,filterSeries:Ge,find:Fe,findLimit:Ae,findSeries:je,flatMap:Se,flatMapLimit:xe,flatMapSeries:Pe,foldl:be,foldr:dt,forEach:Ne,forEachLimit:De,forEachOf:ee,forEachOfLimit:Z,forEachOfSeries:ne,forEachSeries:Re,forever:We,groupBy:Ze,groupByLimit:Ke,groupBySeries:Ye,inject:be,log:Xe,map:te,mapLimit:ke,mapSeries:oe,mapValues:tt,mapValuesLimit:et,mapValuesSeries:rt,memoize:nt,nextTick:ot,parallel:it,parallelLimit:at,priorityQueue:pt,queue:ut,race:ht,reduce:be,reduceRight:dt,reflect:yt,reflectAll:mt,reject:gt,rejectLimit:bt,rejectSeries:wt,retry:kt,retryable:xt,select:Ve,selectLimit:Qe,selectSeries:Ge,seq:we,series:St,setImmediate:M,some:Pt,someLimit:Et,someSeries:Ot,sortBy:Ft,timeout:At,times:Lt,timesLimit:jt,timesSeries:qt,transform:_t,tryEach:It,unmemoize:Mt,until:Dt,waterfall:zt,whilst:Nt,wrapSync:N})),Vt={exports:{}},Qt={exports:{}};function Gt(){if(Bt)return Rt;Bt=1;var e=1e3,t=60*e,r=60*t,n=24*r,o=7*n,s=365.25*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}return Rt=function(a,u){u=u||{};var c=typeof a;if("string"===c&&a.length>0)return function(i){if((i=String(i)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!a)return;var u=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return u*s;case"weeks":case"week":case"w":return u*o;case"days":case"day":case"d":return u*n;case"hours":case"hour":case"hrs":case"hr":case"h":return u*r;case"minutes":case"minute":case"mins":case"min":case"m":return u*t;case"seconds":case"second":case"secs":case"sec":case"s":return u*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return u;default:return}}(a);if("number"===c&&isFinite(a))return u.long?function(o){var s=Math.abs(o);if(s>=n)return i(o,s,n,"day");if(s>=r)return i(o,s,r,"hour");if(s>=t)return i(o,s,t,"minute");if(s>=e)return i(o,s,e,"second");return o+" ms"}(a):function(o){var s=Math.abs(o);if(s>=n)return Math.round(o/n)+"d";if(s>=r)return Math.round(o/r)+"h";if(s>=t)return Math.round(o/t)+"m";if(s>=e)return Math.round(o/e)+"s";return o+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}}function Wt(){if($t)return Tt;return $t=1,Tt=function(e){function t(e){let n,o,s,i=null;function a(...e){if(!a.enabled)return;const r=a,o=Number(new Date),s=o-(n||o);r.diff=s,r.prev=n,r.curr=o,n=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,o)=>{if("%%"===n)return"%";i++;const s=t.formatters[o];if("function"==typeof s){const t=e[i];n=s.call(r,t),e.splice(i,1),i--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,s=t.enabled(e)),s),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(e,t){let r=0,n=0,o=-1,s=0;for(;r<e.length;)if(n<t.length&&(t[n]===e[r]||"*"===t[n]))"*"===t[n]?(o=n,s=r,n++):(r++,n++);else{if(-1===o)return!1;n=o+1,s++,r=s}for(;n<t.length&&"*"===t[n];)n++;return n===t.length}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names,...t.skips.map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const e of r)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const r of t.skips)if(n(e,r))return!1;for(const r of t.names)if(n(e,r))return!0;return!1},t.humanize=Gt(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t},Tt}var Kt,Zt,Yt,Xt={exports:{}};function er(){return Kt||(Kt=1,function(e,t){const r=a,n=u;t.init=function(e){e.inspectOpts={};const r=Object.keys(t.inspectOpts);for(let n=0;n<r.length;n++)e.inspectOpts[r[n]]=t.inspectOpts[r[n]]},t.log=function(...e){return process.stderr.write(n.formatWithOptions(t.inspectOpts,...e)+"\n")},t.formatArgs=function(r){const{namespace:n,useColors:o}=this;if(o){const t=this.color,o="[3"+(t<8?t:"8;5;"+t),s=` ${o};1m${n} `;r[0]=s+r[0].split("\n").join("\n"+s),r.push(o+"m+"+e.exports.humanize(this.diff)+"")}else r[0]=function(){if(t.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+n+" "+r[0]},t.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},t.load=function(){return process.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):r.isatty(process.stderr.fd)},t.destroy=n.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=require("supports-color");e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const r=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let n=process.env[t];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[r]=n,e}),{}),e.exports=Wt()(t);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,n.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,n.inspect(e,this.inspectOpts)}}(Xt,Xt.exports)),Xt.exports}function tr(){return Zt||(Zt=1,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?Vt.exports=(Ut||(Ut=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")||t.storage.getItem("DEBUG")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=Wt()(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(Qt,Qt.exports)),Qt.exports):Vt.exports=er()),Vt.exports}var rr=(Yt||(Yt=1,function(e){const n=t,o=s,a=i,u=r,c=Jt,l=tr(),f=l("portfinder:testPort"),p=l("portfinder:getPort"),h=l("portfinder:defaultHosts"),d={testPort:function(t,r){function n(){f("done w/ testPort(): OK",t.host,"port",t.port),t.server.removeListener("error",o),t.server.close((function(){f("done w/ testPort(): Server closed",t.host,"port",t.port),r(null,t.port)}))}function o(o){if(f("done w/ testPort(): failed",t.host,"w/ port",t.port,"with error",o.code),t.server.removeListener("listening",n),"EADDRINUSE"!=o.code&&"EACCES"!=o.code)return r(o);const s=e.nextPort(t.port);if(s>e.highestPort)return r(new Error("No open ports available"));d.testPort({port:s,host:t.host,server:t.server},r)}r||(r=t,t={}),t.server=t.server||a.createServer((function(){})),f("entered testPort(): trying",t.host,"port",t.port),t.server.once("error",o),t.server.once("listening",n),t.host?t.server.listen(t.port,t.host):t.server.listen(t.port)}};e.basePort=8e3,e.setBasePort=function(t){e.basePort=t},e.highestPort=65535,e.setHighestPort=function(t){e.highestPort=t},e.basePath="/tmp/portfinder",e.setBasePath=function(t){e.basePath=t},d.getPort=function(t,r){if(t.port=Number(t.port)||Number(t.startPort)||Number(e.basePort),t.host=t.host||null,t.stopPort=Number(t.stopPort)||Number(e.highestPort),!t.startPort){if(t.startPort=t.port,t.startPort<0)return r(Error(`Provided options.port(${t.port}) is less than 0, which are cannot be bound.`));if(t.stopPort<t.startPort)return r(Error(`Provided options.stopPort(${t.stopPort}) is less than options.port(${t.startPort})`))}t.host&&-1===e._defaultHosts.indexOf(t.host)&&e._defaultHosts.push(t.host);const n=[];let o;return c.eachSeries(e._defaultHosts,(function(e,r){return p("in eachSeries() iteration callback: host is",e),d.testPort({host:e,port:t.port},(function(t,s){return t?(p("in eachSeries() iteration callback testPort() callback","with an err:",t.code),o=e,r(t)):(p("in eachSeries() iteration callback testPort() callback","with a success for port",s),n.push(s),r())}))}),(function(s){if(s){if(p("in eachSeries() result callback: err is",s),"EADDRNOTAVAIL"===s.code||"EINVAL"===s.code){if(t.host===o){const e="Provided host "+t.host+" could NOT be bound. Please provide a different host address or hostname";return r(Error(e))}{const n=e._defaultHosts.indexOf(o);return e._defaultHosts.splice(n,1),d.getPort(t,r)}}return r(s)}if(n.sort((function(e,t){return e-t})),p("in eachSeries() result callback: openPorts is",n),n[0]===n[n.length-1]){if(n[0]<=t.stopPort)return r(null,n[0]);{const e="No open ports found in between "+t.startPort+" and "+t.stopPort;return r(Error(e))}}return d.getPort({port:n.pop(),host:t.host,startPort:t.startPort,stopPort:t.stopPort},r)}))},e.getPort=function(e,t){if("function"==typeof e&&(t=e,e={}),e=e||{},!t)return new Promise((function(t,r){d.getPort(e,(function(e,n){if(e)return r(e);t(n)}))}));d.getPort(e,t)},e.getPortPromise=e.getPort,d.getPorts=function(t,r,n){let o=null;c.timesSeries(t,(function(t,n){o&&(r.port=e.nextPort(o)),d.getPort(r,(function(e,t){e?n(e):(o=t,n(null,t))}))}),n)},e.getPorts=function(e,t,r){if("function"==typeof t&&(r=t,t={}),t=t||{},!r)return new Promise((function(r,n){d.getPorts(e,t,(function(e,t){if(e)return n(e);r(t)}))}));d.getPorts(e,t,r)},e.getPortsPromise=e.getPorts,d.getSocket=function(t,r){function o(){n.stat(t.path,(function(n){n?"ENOENT"==n.code?r(null,t.path):r(n):(t.path=e.nextSocket(t.path),d.getSocket(t,r))}))}return t.mod=t.mod||parseInt(755,8),t.path=t.path||e.basePath+".sock",t.exists?o():function(){const e=u.dirname(t.path);n.stat(e,(function(s,i){if(s||!i.isDirectory())return function(e){n.mkdir(e,{mode:t.mod,recursive:!0},(function(e){if(e)return r(e);t.exists=!0,o()}))}(e);t.exists=!0,o()}))}()},e.getSocket=function(e,t){if("function"==typeof e&&(t=e,e={}),e=e||{},!t)return new Promise((function(t,r){d.getSocket(e,(function(e,n){if(e)return r(e);t(n)}))}));d.getSocket(e,t)},e.getSocketPromise=e.getSocket,e.nextPort=function(e){return e+1},e.nextSocket=function(e){const t=u.dirname(e),r=u.basename(e,".sock").match(/^([a-zA-z]+)(\d*)$/i),n=r[1];let o=parseInt(r[2]);return isNaN(o)&&(o=0),o+=1,u.join(t,n+o+".sock")},e._defaultHosts=function(){let e={};try{e=o.networkInterfaces()}catch(e){if("uv_interface_addresses"!==e.syscall)throw e}const t=Object.keys(e),r=["0.0.0.0"];for(let n=0;n<t.length;n++){const o=e[t[n]];for(let e=0;e<o.length;e++){const t=o[e];r.push(t.address)}}return r.push(null),h("exports._defaultHosts is: %o",r),r}()}(O)),O),nr=P(rr);const or=n.prototype.listen,sr=e=>{const t=e.address();if(t){((e,t)=>{const r=null!==t?`http://${e}:${t}`:e;console.log(`app listen ${r}`)})("object"==typeof t?(e=>"::"===e?"0.0.0.0":e)(t.address):t,"object"==typeof t?t.port:null)}},ir=(e,t,r,n)=>{const{controllerPrefix:o,moduleName:s,name:i}=(e=>{const t="controller",r=e.path.indexOf(t);if(-1===r)throw new Error(`'${t}' not found in path: ${e.path}`);const n=k(e.path.substring(r+10)),o=e.name?.split(".")?.[0];return{controllerPrefix:n,moduleName:o,name:e.name}})(t),a=`${o}/${s}`;if(!r)return;const u=w(`${e}${`${o}/${i}`}`);r.forEach((e=>{const{method:t,path:r,handler:o,functionName:s,authRequired:i,middlewares:c}=e;var l;u&&"function"==typeof u[s]&&c.push((l=u[s],async(e,t)=>{const r=l(e);r instanceof Promise&&await r,await t()}));const f=(p=i,h=o,async(e,t)=>{let r=n(p,e);return r instanceof Promise&&(r=await r),r?h(e,t):e.throw(403,"无权限")});var p,h;const d=[...c,f],y=ar(r,a,s,d,t);e.path=y}))},ar=(e,t,r,n,o)=>{const s=r.toLowerCase();let i="get";i="get_"===s?"get":f.includes(s)?s:o??"get";const a=`${t}${"get_"==s?"":e??""}`;return S[i](a,...n),a},ur=process.cwd();var cr=function(e){var t=Object.prototype.hasOwnProperty;function r(e,n){return Array.isArray(e)?function(e,t){for(var n,o="",s="",a=Array.isArray(t),u=0;u<e.length;u++)(n=r(e[u]))&&(a&&t[u]&&(n=i(n)),o=o+s+n,s=" ");return o}(e,n):e&&"object"==typeof e?function(e){var r="",n="";for(var o in e)o&&e[o]&&t.call(e,o)&&(r=r+n+o,n=" ");return r}(e):e||""}function n(e){if(!e)return"";if("object"==typeof e){var r="";for(var n in e)t.call(e,n)&&(r=r+n+":"+e[n]+";");return r}return e+""}function o(e,t,r,n){return!1!==t&&null!=t&&(t||"class"!==e&&"style"!==e)?!0===t?" "+(n?e:e+'="'+e+'"'):("function"==typeof t.toJSON&&(t=t.toJSON()),"string"==typeof t||(t=JSON.stringify(t),r||-1===t.indexOf('"'))?(r&&(t=i(t))," "+e+'="'+t+'"'):" "+e+"='"+t.replace(/'/g,"&#39;")+"'"):""}e.merge=function e(t,r){if(1===arguments.length){for(var o=t[0],s=1;s<t.length;s++)o=e(o,t[s]);return o}for(var i in r)if("class"===i){var a=t[i]||[];t[i]=(Array.isArray(a)?a:[a]).concat(r[i]||[])}else if("style"===i){a=(a=n(t[i]))&&";"!==a[a.length-1]?a+";":a;var u=n(r[i]);u=u&&";"!==u[u.length-1]?u+";":u,t[i]=a+u}else t[i]=r[i];return t},e.classes=r,e.style=n,e.attr=o,e.attrs=function(e,s){var i="";for(var a in e)if(t.call(e,a)){var u=e[a];if("class"===a){i=o(a,u=r(u),!1,s)+i;continue}"style"===a&&(u=n(u)),i+=o(a,u,!1,s)}return i};var s=/["&<>]/;function i(e){var t=""+e,r=s.exec(t);if(!r)return e;var n,o,i,a="";for(n=r.index,o=0;n<t.length;n++){switch(t.charCodeAt(n)){case 34:i="&quot;";break;case 38:i="&amp;";break;case 60:i="&lt;";break;case 62:i="&gt;";break;default:continue}o!==n&&(a+=t.substring(o,n)),o=n+1,a+=i}return o!==n?a+t.substring(o,n):a}return e.escape=i,e.rethrow=function e(t,r,n,o){if(!(t instanceof Error))throw t;if(!("undefined"==typeof window&&r||o))throw t.message+=" on line "+n,t;try{o=o||require("fs").readFileSync(r,"utf8")}catch(r){e(t,null,n)}var s=3,i=o.split("\n"),a=Math.max(n-s,0),u=Math.min(i.length,n+s);s=i.slice(a,u).map((function(e,t){var r=t+a+1;return(r==n?" > ":" ")+r+"| "+e})).join("\n");throw t.path=r,t.message=(r||"Pug")+":"+n+"\n"+s+"\n\n"+t.message,t},e}({});function lr(e){var t,r,n="";try{var o={},s=e||{};(function(e,r){n+="<!DOCTYPE html>",n+="\n<html>",n+="\n <head>",n+="\n <title>",n+="API Documentation</title>",n+="\n <style>\n ",n+="body { font-family: Arial, sans-serif; margin: 20px; }",n+="\n ",n+="",n+="\n ",n+="h1 { color: #333; text-align: center; }",n+="\n ",n+="h2, h3 { cursor: pointer; transition: color 0.3s; }",n+="\n ",n+="h2 { color: #007BFF; }",n+="\n ",n+="h2:hover { color: #0056b3; }",n+="\n ",n+="h3 { color: #0d6efd; }",n+="\n ",n+="h3:hover { color: #0056b3; } ",n+="\n ",n+="",n+="\n ",n+=".api-section { ",n+="\n ",n+=" margin: 20px 0; ",n+="\n ",n+=" border: 1px solid #e0e0e0; ",n+="\n ",n+=" border-radius: 8px; ",n+="\n ",n+=" padding: 10px; ",n+="\n ",n+=" background-color: #f9f9f9; ",n+="\n ",n+=" box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); ",n+="\n ",n+="}",n+="\n ",n+="",n+="\n ",n+=".api-method { font-weight: bold; color: #333; }",n+="\n ",n+=".api-path { font-style: italic; color: #555; }",n+="\n ",n+="",n+="\n ",n+="pre { ",n+="\n ",n+=" background: #f4f4f4; ",n+="\n ",n+=" padding: 10px; ",n+="\n ",n+=" border-radius: 5px; ",n+="\n ",n+=" overflow-x: auto; ",n+="\n ",n+="}",n+="\n ",n+="",n+="\n ",n+=".collapse { display: none; }",n+="\n ",n+="\n </style>\n </head>",n+="\n <body>",n+="\n <h1>",n+="API Documentation</h1>",n+="\n \x3c!-- 添加 JavaScript 用于折叠 Sections--\x3e",n+="\n <script>\n ",n+="document.addEventListener('DOMContentLoaded', function() {",n+="\n ",n+=" // 折叠 API 部分",n+="\n ",n+=" const headings = document.querySelectorAll('h2');",n+="\n ",n+=" headings.forEach(heading => {",n+="\n ",n+=" heading.addEventListener('click', function() {",n+="\n ",n+=" const content = this.parentElement.querySelectorAll('.collapse')[0];",n+="\n ",n+=" if (content) {",n+="\n ",n+=' content.style.display = (content.style.display === "block") ? "none" : "block";',n+="\n ",n+=" }",n+="\n ",n+=" });",n+="\n ",n+=" });",n+="\n ",n+=" ",n+="\n ",n+=" // 折叠 API 方法",n+="\n ",n+=" const methodHeadings = document.querySelectorAll('h3');",n+="\n ",n+=" methodHeadings.forEach(method => {",n+="\n ",n+=" method.addEventListener('click', function() {",n+="\n ",n+=" const details = this.nextElementSibling;",n+="\n ",n+=" if (details) {",n+="\n ",n+=' details.style.display = (details.style.display === "block") ? "none" : "block";',n+="\n ",n+=" }",n+="\n ",n+=" });",n+="\n ",n+=" });",n+="\n ",n+="});",n+="\n ",n+="\n <\/script>",function(){var o=r;if("number"==typeof o.length)for(var s=0,i=o.length;s<i;s++){var a=o[s];n+='\n <div class="api-section">',n=(n+='\n <h2 class="toggle">')+cr.escape(null==(t=a.name)?"":t)+"</h2>",a.desc&&(n=(n+="\n <p>")+cr.escape(null==(t=a.desc)?"":t)+"</p>"),n+='\n <div class="collapse">',function(){var r=a.configs;if("number"==typeof r.length)for(var o=0,s=r.length;o<s;o++){var i=r[o];n=(n+='\n <h3 class="api-method">')+cr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+cr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}else{s=0;for(var o in r){s++;i=r[o];n=(n+='\n <h3 class="api-method">')+cr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+cr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}}}.call(this),n+="\n </div>\n </div>"}else{i=0;for(var s in o){i++;a=o[s];n+='\n <div class="api-section">',n=(n+='\n <h2 class="toggle">')+cr.escape(null==(t=a.name)?"":t)+"</h2>",a.desc&&(n=(n+="\n <p>")+cr.escape(null==(t=a.desc)?"":t)+"</p>"),n+='\n <div class="collapse">',function(){var r=a.configs;if("number"==typeof r.length)for(var o=0,s=r.length;o<s;o++){var i=r[o];n=(n+='\n <h3 class="api-method">')+cr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+cr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}else{s=0;for(var o in r){s++;i=r[o];n=(n+='\n <h3 class="api-method">')+cr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+cr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+cr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}}}.call(this),n+="\n </div>\n </div>"}}}.call(this),n+="\n </body>\n</html>"}).call(this,"JSON"in s?s.JSON:"undefined"!=typeof JSON?JSON:void 0,"apiData"in s?s.apiData:"undefined"!=typeof apiData?apiData:void 0)}catch(e){cr.rethrow(e,r,undefined,o[void 0])}return n}const fr={DOCUMENTATION_DIR:r.join(process.cwd(),"doc")},pr=e=>{const t=w(e.wholePath),r=t.prototype,n=Object.getOwnPropertyNames(r).filter((e=>"function"==typeof r[e]&&"constructor"!==e)),o=e.path.substring(e.path.indexOf("doc")+3);return{configs:n.map((e=>{if("function"==typeof r[e]){const t=r[e]();return t.path=o+t.path,t}return null})).filter((e=>!!e)),desc:t.desc,name:t.name}};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",t=r.resolve(ur,"env");switch(console.log("load env path: ",t),c.config({path:r.resolve(t,".common.env")}),e){case"development":c.config({path:r.resolve(t,".development.env")});break;case"test":c.config({path:r.resolve(t,".test.env")});break;case"production":c.config({path:r.resolve(t,".production.env")})}})();exports.AuthRouter=function(e,t){return l(e,t,!0)},exports.BaseException=v,exports.Router=function(e,t){return l(e,t)},exports.contextStore=h,exports.errorRsp=m,exports.getCurrentContext=d,exports.getSrcModulePaths=b,exports.initializeKoaApp=async e=>{const{koaInstance:t,authCheckCallback:r,catchErrorCallback:o,registerHighPriorityMiddleware:s}=e;(e=>{const{controllerModule:t,validateModule:r}=b();C(t,(t=>{if(!t.path.includes("controller"))return;const n=w(t.wholePath),o=n?.routesMap;o&&ir(r,t,o,((r,n)=>!r||e({filePath:t,ctx:n})))}))})(r);const i=t||new n;var a;if(i.use(x),s?.(i),i.use((a=o,async(e,t)=>{try{await t()}catch(t){a?a(t,e):m(500,{message:t.message})}})),isDev){const e=await(async()=>{const e=[];return C(fr.DOCUMENTATION_DIR,(t=>{e.push(pr(t))})),lr({apiData:e})})();S.get("/doc",(async t=>{t.body=e}))}return i.use(S.routes()),await(async e=>{const t=await nr.getPortPromise({port:8e3,stopPort:9999});return e.listen=(...r)=>{const n=r?or.apply(e,[t]):or.apply(e,r);return n.on("listening",(()=>sr(n))),n},t})(i),[i,S]},exports.successRsp=e=>{const t=Array.isArray(e?.data);y({success:!0,message:e?.message,data:t?{list:e?.data}:e?.data})},exports.unSuccessRsp=e=>{y({success:!1,errorCode:e?.code,errorMessage:e?.message,data:e?.data})};
package/dist/index.esm.js CHANGED
@@ -1 +1 @@
1
- import{AsyncLocalStorage as e}from"async_hooks";import{readdirSync as n,existsSync as t}from"fs";import{resolve as r,join as o}from"path";import s from"koa";import a from"koa-router";import c from"net";import i from"dotenv";function l(e,n,t=!1){return(r,o,s)=>{let a=r.constructor.routesMap;a instanceof Map||(r.constructor.routesMap=new Map,a=r.constructor.routesMap);const c=r.constructor.name,i=n??o;return a.set(o,{handler:function(...e){if("function"!=typeof s.value)throw new Error("Register Router Error");return s.value.apply(r,e)},path:`/${i.replace("/","")}`,method:e,functionName:o,authRequired:t,middlewares:[],className:c}),r}}function p(e,n){return l(e,n)}function u(e,n){return l(e,n,!0)}const d=["get","post","put","delete","patch","options"],h=0,f=new e,y=()=>{const e=f.getStore();if(!e)throw new Error("context is not exist");return e},g=e=>{const{success:n=!0,errorCode:t=-1,message:r="success",errorMessage:o="error request",data:s=null,statusCode:a=200}=e??{},c=y(),i={code:n?h:t,message:n?r:o,...s&&{data:s}};c.body=i,c.status=a},m=e=>{const n=Array.isArray(e?.data);g({success:!0,message:e?.message,data:n?{list:e?.data}:e?.data})},v=e=>{g({success:!1,errorCode:e?.code,errorMessage:e?.message,data:e?.data})},b=(e,n)=>{g({success:!1,errorMessage:n?.message,errorCode:n?.code,data:n?.data,statusCode:e})};class w extends Error{constructor(e){super(e?.message||"An unexpected error occurred"),this.name=this.constructor.name,this.code=e?.code??-1,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.stack=this.stack??new Error(this.message).stack}get toRspOptions(){return{code:this.code,message:this.message,data:this.stack}}}const q=process.cwd(),x=()=>{const e=r(q,"src");return{controllerModule:r(e,"controller"),validateModule:r(e,"validate"),viewModule:r(e,"view"),docModule:r(e,"doc")}},k=e=>{if(t(e)){return require(e).default}};function E(e,t){try{n(e,{withFileTypes:!0}).forEach((n=>{const o=r(e,n.name);n.isFile()?t({path:e,name:n.name,wholePath:o},n):n.isDirectory()&&E(o,t)}))}catch(e){}}const O=e=>"win32"===process.platform?e.replace(/\\/g,"/"):e,R=(e,n)=>f.run(e,(()=>n())),N=new a,M=e=>new Promise((n=>{const t=c.createServer();t.unref(),t.on("error",(()=>n(!1))),t.listen(e,(()=>{t.close((()=>n(!0)))}))})),A=s.prototype.listen,C=e=>{const n=e.address();if(n){((e,n)=>{const t=null!==n?`http://${e}:${n}`:e;console.log(`app listen ${t}`)})("object"==typeof n?(e=>"::"===e?"0.0.0.0":e)(n.address):n,"object"==typeof n?n.port:null)}},D=async e=>{const n=await(async(e=8e3,n=9999)=>{let t=e;for(;t<=n;){if(await M(t))return t;t+=1}throw new Error("No available port found")})();return e.listen=(...t)=>{const r=t?A.apply(e,[n]):A.apply(e,t);return r.on("listening",(()=>C(r))),r},n},P=(e,n,t,r)=>{const{controllerPrefix:o,moduleName:s,name:a}=(e=>{const n="controller",t=e.path.indexOf(n);if(-1===t)throw new Error(`'${n}' not found in path: ${e.path}`);const r=O(e.path.substring(t+10)),o=e.name?.split(".")?.[0];return{controllerPrefix:r,moduleName:o,name:e.name}})(n),c=`${o}/${s}`;if(!t)return;const i=k(`${e}${`${o}/${a}`}`);t.forEach((e=>{const{method:n,path:t,handler:o,functionName:s,authRequired:a,middlewares:l}=e;var p;i&&"function"==typeof i[s]&&l.push((p=i[s],async(e,n)=>{const t=p(e);t instanceof Promise&&await t,await n()}));const u=(d=a,h=o,async(e,n)=>{let t=r(d,e);return t instanceof Promise&&(t=await t),t?h(e,n):e.throw(403,"无权限")});var d,h;const f=[...l,u],y=S(t,c,s,f,n);e.path=y}))},S=(e,n,t,r,o)=>{const s=t.toLowerCase();let a="get";a="get_"===s?"get":d.includes(s)?s:o??"get";const c=`${n}${"get_"==s?"":e??""}`;return N[a](c,...r),c},$=process.cwd();var B=function(e){var n=Object.prototype.hasOwnProperty;function t(e,r){return Array.isArray(e)?function(e,n){for(var r,o="",s="",c=Array.isArray(n),i=0;i<e.length;i++)(r=t(e[i]))&&(c&&n[i]&&(r=a(r)),o=o+s+r,s=" ");return o}(e,r):e&&"object"==typeof e?function(e){var t="",r="";for(var o in e)o&&e[o]&&n.call(e,o)&&(t=t+r+o,r=" ");return t}(e):e||""}function r(e){if(!e)return"";if("object"==typeof e){var t="";for(var r in e)n.call(e,r)&&(t=t+r+":"+e[r]+";");return t}return e+""}function o(e,n,t,r){return!1!==n&&null!=n&&(n||"class"!==e&&"style"!==e)?!0===n?" "+(r?e:e+'="'+e+'"'):("function"==typeof n.toJSON&&(n=n.toJSON()),"string"==typeof n||(n=JSON.stringify(n),t||-1===n.indexOf('"'))?(t&&(n=a(n))," "+e+'="'+n+'"'):" "+e+"='"+n.replace(/'/g,"&#39;")+"'"):""}e.merge=function e(n,t){if(1===arguments.length){for(var o=n[0],s=1;s<n.length;s++)o=e(o,n[s]);return o}for(var a in t)if("class"===a){var c=n[a]||[];n[a]=(Array.isArray(c)?c:[c]).concat(t[a]||[])}else if("style"===a){c=(c=r(n[a]))&&";"!==c[c.length-1]?c+";":c;var i=r(t[a]);i=i&&";"!==i[i.length-1]?i+";":i,n[a]=c+i}else n[a]=t[a];return n},e.classes=t,e.style=r,e.attr=o,e.attrs=function(e,s){var a="";for(var c in e)if(n.call(e,c)){var i=e[c];if("class"===c){a=o(c,i=t(i),!1,s)+a;continue}"style"===c&&(i=r(i)),a+=o(c,i,!1,s)}return a};var s=/["&<>]/;function a(e){var n=""+e,t=s.exec(n);if(!t)return e;var r,o,a,c="";for(r=t.index,o=0;r<n.length;r++){switch(n.charCodeAt(r)){case 34:a="&quot;";break;case 38:a="&amp;";break;case 60:a="&lt;";break;case 62:a="&gt;";break;default:continue}o!==r&&(c+=n.substring(o,r)),o=r+1,c+=a}return o!==r?c+n.substring(o,r):c}return e.escape=a,e.rethrow=function e(n,t,r,o){if(!(n instanceof Error))throw n;if(!("undefined"==typeof window&&t||o))throw n.message+=" on line "+r,n;try{o=o||require("fs").readFileSync(t,"utf8")}catch(t){e(n,null,r)}var s=3,a=o.split("\n"),c=Math.max(r-s,0),i=Math.min(a.length,r+s);s=a.slice(c,i).map((function(e,n){var t=n+c+1;return(t==r?" > ":" ")+t+"| "+e})).join("\n");throw n.path=t,n.message=(t||"Pug")+":"+r+"\n"+s+"\n\n"+n.message,n},e}({});function I(e){var n,t,r="";try{var o={},s=e||{};(function(e,t){r+="<!DOCTYPE html>",r+="\n<html>",r+="\n <head>",r+="\n <title>",r+="API Documentation</title>",r+="\n <style>\n ",r+="body { font-family: Arial, sans-serif; margin: 20px; }",r+="\n ",r+="",r+="\n ",r+="h1 { color: #333; text-align: center; }",r+="\n ",r+="h2, h3 { cursor: pointer; transition: color 0.3s; }",r+="\n ",r+="h2 { color: #007BFF; }",r+="\n ",r+="h2:hover { color: #0056b3; }",r+="\n ",r+="h3 { color: #0d6efd; }",r+="\n ",r+="h3:hover { color: #0056b3; } ",r+="\n ",r+="",r+="\n ",r+=".api-section { ",r+="\n ",r+=" margin: 20px 0; ",r+="\n ",r+=" border: 1px solid #e0e0e0; ",r+="\n ",r+=" border-radius: 8px; ",r+="\n ",r+=" padding: 10px; ",r+="\n ",r+=" background-color: #f9f9f9; ",r+="\n ",r+=" box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); ",r+="\n ",r+="}",r+="\n ",r+="",r+="\n ",r+=".api-method { font-weight: bold; color: #333; }",r+="\n ",r+=".api-path { font-style: italic; color: #555; }",r+="\n ",r+="",r+="\n ",r+="pre { ",r+="\n ",r+=" background: #f4f4f4; ",r+="\n ",r+=" padding: 10px; ",r+="\n ",r+=" border-radius: 5px; ",r+="\n ",r+=" overflow-x: auto; ",r+="\n ",r+="}",r+="\n ",r+="",r+="\n ",r+=".collapse { display: none; }",r+="\n ",r+="\n </style>\n </head>",r+="\n <body>",r+="\n <h1>",r+="API Documentation</h1>",r+="\n \x3c!-- 添加 JavaScript 用于折叠 Sections--\x3e",r+="\n <script>\n ",r+="document.addEventListener('DOMContentLoaded', function() {",r+="\n ",r+=" // 折叠 API 部分",r+="\n ",r+=" const headings = document.querySelectorAll('h2');",r+="\n ",r+=" headings.forEach(heading => {",r+="\n ",r+=" heading.addEventListener('click', function() {",r+="\n ",r+=" const content = this.parentElement.querySelectorAll('.collapse')[0];",r+="\n ",r+=" if (content) {",r+="\n ",r+=' content.style.display = (content.style.display === "block") ? "none" : "block";',r+="\n ",r+=" }",r+="\n ",r+=" });",r+="\n ",r+=" });",r+="\n ",r+=" ",r+="\n ",r+=" // 折叠 API 方法",r+="\n ",r+=" const methodHeadings = document.querySelectorAll('h3');",r+="\n ",r+=" methodHeadings.forEach(method => {",r+="\n ",r+=" method.addEventListener('click', function() {",r+="\n ",r+=" const details = this.nextElementSibling;",r+="\n ",r+=" if (details) {",r+="\n ",r+=' details.style.display = (details.style.display === "block") ? "none" : "block";',r+="\n ",r+=" }",r+="\n ",r+=" });",r+="\n ",r+=" });",r+="\n ",r+="});",r+="\n ",r+="\n <\/script>",function(){var o=t;if("number"==typeof o.length)for(var s=0,a=o.length;s<a;s++){var c=o[s];r+='\n <div class="api-section">',r=(r+='\n <h2 class="toggle">')+B.escape(null==(n=c.name)?"":n)+"</h2>",c.desc&&(r=(r+="\n <p>")+B.escape(null==(n=c.desc)?"":n)+"</p>"),r+='\n <div class="collapse">',function(){var t=c.configs;if("number"==typeof t.length)for(var o=0,s=t.length;o<s;o++){var a=t[o];r=(r+='\n <h3 class="api-method">')+B.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",r=(r+="\n <h4>")+B.escape(null==(n=a.description)?"":n)+"</h4>",r+="\n <pre>",r+="Request Header:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Query:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Response Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}else{s=0;for(var o in t){s++;a=t[o];r=(r+='\n <h3 class="api-method">')+B.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",r=(r+="\n <h4>")+B.escape(null==(n=a.description)?"":n)+"</h4>",r+="\n <pre>",r+="Request Header:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Query:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Response Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}}}.call(this),r+="\n </div>\n </div>"}else{a=0;for(var s in o){a++;c=o[s];r+='\n <div class="api-section">',r=(r+='\n <h2 class="toggle">')+B.escape(null==(n=c.name)?"":n)+"</h2>",c.desc&&(r=(r+="\n <p>")+B.escape(null==(n=c.desc)?"":n)+"</p>"),r+='\n <div class="collapse">',function(){var t=c.configs;if("number"==typeof t.length)for(var o=0,s=t.length;o<s;o++){var a=t[o];r=(r+='\n <h3 class="api-method">')+B.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",r=(r+="\n <h4>")+B.escape(null==(n=a.description)?"":n)+"</h4>",r+="\n <pre>",r+="Request Header:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Query:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Response Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}else{s=0;for(var o in t){s++;a=t[o];r=(r+='\n <h3 class="api-method">')+B.escape(null==(n=a.method.toUpperCase()+" "+a.path)?"":n)+"</h3>",r=(r+="\n <h4>")+B.escape(null==(n=a.description)?"":n)+"</h4>",r+="\n <pre>",r+="Request Header:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.header,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.body,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Request Query:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.request.query,null,2))?"":n)+"</pre>",r+="\n <pre>",r+="Response Body:</pre>",r=(r+="\n <pre>")+B.escape(null==(n=e.stringify(a.response.body,null,2))?"":n)+"</pre>"}}}.call(this),r+="\n </div>\n </div>"}}}.call(this),r+="\n </body>\n</html>"}).call(this,"JSON"in s?s.JSON:"undefined"!=typeof JSON?JSON:void 0,"apiData"in s?s.apiData:"undefined"!=typeof apiData?apiData:void 0)}catch(e){B.rethrow(e,t,undefined,o[void 0])}return r}const J={DOCUMENTATION_DIR:o(process.cwd(),"doc")},T=e=>{const n=k(e.wholePath),t=n.prototype,r=Object.getOwnPropertyNames(t).filter((e=>"function"==typeof t[e]&&"constructor"!==e)),o=e.path.substring(e.path.indexOf("doc")+3);return{configs:r.map((e=>{if("function"==typeof t[e]){const n=t[e]();return n.path=o+n.path,n}return null})).filter((e=>!!e)),desc:n.desc,name:n.name}};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",n=r($,"env");switch(console.log("load env path: ",n),i.config({path:r(n,".common.env")}),e){case"development":i.config({path:r(n,".development.env")});break;case"test":i.config({path:r(n,".test.env")});break;case"production":i.config({path:r(n,".production.env")})}})();const j=async e=>{const{koaInstance:n,authCheckCallback:t,catchErrorCallback:r,registerHighPriorityMiddleware:o}=e;(e=>{const{controllerModule:n,validateModule:t}=x();E(n,(n=>{if(!n.path.includes("controller"))return;const r=k(n.wholePath),o=r?.routesMap;o&&P(t,n,o,((t,r)=>!t||e({filePath:n,ctx:r})))}))})(t);const a=n||new s;var c;if(a.use(R),o?.(a),a.use((c=r,async(e,n)=>{try{await n()}catch(n){c?c(n,e):b(500,{message:n.message})}})),isDev){const e=await(async()=>{const e=[];return E(J.DOCUMENTATION_DIR,(n=>{e.push(T(n))})),I({apiData:e})})();N.get("/doc",(async n=>{n.body=e}))}return a.use(N.routes()),await D(a),[a,N]};export{u as AuthRouter,w as BaseException,p as Router,f as contextStore,b as errorRsp,y as getCurrentContext,x as getSrcModulePaths,j as initializeKoaApp,m as successRsp,v as unSuccessRsp};
1
+ import{AsyncLocalStorage as e}from"async_hooks";import t,{readdirSync as r,existsSync as n}from"fs";import o,{resolve as s,join as i}from"path";import a from"koa";import u from"koa-router";import c from"os";import l from"net";import f from"tty";import p from"util";import h from"dotenv";function d(e,t,r=!1){return(n,o,s)=>{let i=n.constructor.routesMap;i instanceof Map||(n.constructor.routesMap=new Map,i=n.constructor.routesMap);const a=n.constructor.name,u=t??o;return i.set(o,{handler:function(...e){if("function"!=typeof s.value)throw new Error("Register Router Error");return s.value.apply(n,e)},path:`/${u.replace("/","")}`,method:e,functionName:o,authRequired:r,middlewares:[],className:a}),n}}function m(e,t){return d(e,t)}function y(e,t){return d(e,t,!0)}const v=["get","post","put","delete","patch","options"],g=0,b=new e,w=()=>{const e=b.getStore();if(!e)throw new Error("context is not exist");return e},C=e=>{const{success:t=!0,errorCode:r=-1,message:n="success",errorMessage:o="error request",data:s=null,statusCode:i=200}=e??{},a=w(),u={code:t?g:r,message:t?n:o,...s&&{data:s}};a.body=u,a.status=i},k=e=>{const t=Array.isArray(e?.data);C({success:!0,message:e?.message,data:t?{list:e?.data}:e?.data})},P=e=>{C({success:!1,errorCode:e?.code,errorMessage:e?.message,data:e?.data})},E=(e,t)=>{C({success:!1,errorMessage:t?.message,errorCode:t?.code,data:t?.data,statusCode:e})};class S extends Error{constructor(e){super(e?.message||"An unexpected error occurred"),this.name=this.constructor.name,this.code=e?.code??-1,"function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.stack=this.stack??new Error(this.message).stack}get toRspOptions(){return{code:this.code,message:this.message,data:this.stack}}}const x=process.cwd(),O=()=>{const e=s(x,"src");return{controllerModule:s(e,"controller"),validateModule:s(e,"validate"),viewModule:s(e,"view"),docModule:s(e,"doc")}},F=e=>{if(n(e)){return require(e).default}};function A(e,t){try{r(e,{withFileTypes:!0}).forEach((r=>{const n=s(e,r.name);r.isFile()?t({path:e,name:r.name,wholePath:n},r):r.isDirectory()&&A(n,t)}))}catch(e){}}const j=e=>"win32"===process.platform?e.replace(/\\/g,"/"):e,L=(e,t)=>b.run(e,(()=>t())),_=new u;function I(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function q(e){if(Object.prototype.hasOwnProperty.call(e,"__esModule"))return e;var t=e.default;if("function"==typeof t){var r=function e(){return this instanceof e?Reflect.construct(t,arguments,this.constructor):t.apply(this,arguments)};r.prototype=t.prototype}else r={};return Object.defineProperty(r,"__esModule",{value:!0}),Object.keys(e).forEach((function(t){var n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:function(){return e[t]}})})),r}var M={};function N(e,...t){return(...r)=>e(...t,...r)}function D(e){return function(...t){var r=t.pop();return e.call(this,t,r)}}var B="function"==typeof queueMicrotask&&queueMicrotask,R="function"==typeof setImmediate&&setImmediate,T="object"==typeof process&&"function"==typeof process.nextTick;function $(e){setTimeout(e,0)}function U(e){return(t,...r)=>e((()=>t(...r)))}var z=U(B?queueMicrotask:R?setImmediate:T?process.nextTick:$);function H(e){return Q(e)?function(...t){const r=t.pop();return J(e.apply(this,t),r)}:D((function(t,r){var n;try{n=e.apply(this,t)}catch(e){return r(e)}if(n&&"function"==typeof n.then)return J(n,r);r(null,n)}))}function J(e,t){return e.then((e=>{V(t,null,e)}),(e=>{V(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function V(e,t,r){try{e(t,r)}catch(e){z((e=>{throw e}),e)}}function Q(e){return"AsyncFunction"===e[Symbol.toStringTag]}function G(e){if("function"!=typeof e)throw new Error("expected a function");return Q(e)?H(e):e}function W(e,t){if(t||(t=e.length),!t)throw new Error("arity is undefined");return function(...r){return"function"==typeof r[t-1]?e.apply(this,r):new Promise(((n,o)=>{r[t-1]=(e,...t)=>{if(e)return o(e);n(t.length>1?t:t[0])},e.apply(this,r)}))}}function Z(e){return function(t,...r){return W((function(n){var o=this;return e(t,((e,t)=>{G(e).apply(o,r.concat(t))}),n)}))}}function K(e,t,r,n){t=t||[];var o=[],s=0,i=G(r);return e(t,((e,t,r)=>{var n=s++;i(e,((e,t)=>{o[n]=t,r(e)}))}),(e=>{n(e,o)}))}function Y(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0}const X={};function ee(e){function t(...t){if(null!==e){var r=e;e=null,r.apply(this,t)}}return Object.assign(t,e),t}function te(e){if(Y(e))return function(e){var t=-1,r=e.length;return function(){return++t<r?{value:e[t],key:t}:null}}(e);var t,r,n,o,s=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()}(e);return s?function(e){var t=-1;return function(){var r=e.next();return r.done?null:(t++,{value:r.value,key:t})}}(s):(r=(t=e)?Object.keys(t):[],n=-1,o=r.length,function e(){var s=r[++n];return"__proto__"===s?e():n<o?{value:t[s],key:s}:null})}function re(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var r=e;e=null,r.apply(this,t)}}function ne(e,t,r,n){let o=!1,s=!1,i=!1,a=0,u=0;function c(){a>=t||i||o||(i=!0,e.next().then((({value:e,done:t})=>{if(!s&&!o){if(i=!1,t)return o=!0,void(a<=0&&n(null));a++,r(e,u,l),u++,c()}})).catch(f))}function l(e,t){if(a-=1,!s)return e?f(e):!1===e?(o=!0,void(s=!0)):t===X||o&&a<=0?(o=!0,n(null)):void c()}function f(e){s||(i=!1,o=!0,n(e))}c()}var oe=e=>(t,r,n)=>{if(n=ee(n),e<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return n(null);if("AsyncGenerator"===t[Symbol.toStringTag])return ne(t,e,r,n);if(function(e){return"function"==typeof e[Symbol.asyncIterator]}(t))return ne(t[Symbol.asyncIterator](),e,r,n);var o=te(t),s=!1,i=!1,a=0,u=!1;function c(e,t){if(!i)if(a-=1,e)s=!0,n(e);else if(!1===e)s=!0,i=!0;else{if(t===X||s&&a<=0)return s=!0,n(null);u||l()}}function l(){for(u=!0;a<e&&!s;){var t=o();if(null===t)return s=!0,void(a<=0&&n(null));a+=1,r(t.value,t.key,re(c))}u=!1}l()};var se=W((function(e,t,r,n){return oe(t)(e,G(r),n)}),4);function ie(e,t,r){r=ee(r);var n=0,o=0,{length:s}=e,i=!1;function a(e,t){!1===e&&(i=!0),!0!==i&&(e?r(e):++o!==s&&t!==X||r(null))}for(0===s&&r(null);n<s;n++)t(e[n],n,re(a))}function ae(e,t,r){return se(e,1/0,t,r)}var ue=W((function(e,t,r){return(Y(e)?ie:ae)(e,G(t),r)}),3);var ce=W((function(e,t,r){return K(ue,e,t,r)}),3),le=Z(ce);var fe=W((function(e,t,r){return se(e,1,t,r)}),3);var pe=W((function(e,t,r){return K(fe,e,t,r)}),3),he=Z(pe);const de=Symbol("promiseCallback");function me(){let e,t;function r(r,...n){if(r)return t(r);e(n.length>1?n:n[0])}return r[de]=new Promise(((r,n)=>{e=r,t=n})),r}function ye(e,t,r){"number"!=typeof t&&(r=t,t=null),r=ee(r||me());var n=Object.keys(e).length;if(!n)return r(null);t||(t=n);var o={},s=0,i=!1,a=!1,u=Object.create(null),c=[],l=[],f={};function p(e,t){c.push((()=>function(e,t){if(a)return;var n=re(((t,...n)=>{if(s--,!1!==t)if(n.length<2&&([n]=n),t){var c={};if(Object.keys(o).forEach((e=>{c[e]=o[e]})),c[e]=n,a=!0,u=Object.create(null),i)return;r(t,c)}else o[e]=n,(u[e]||[]).forEach((e=>e())),h();else i=!0}));s++;var c=G(t[t.length-1]);t.length>1?c(o,n):c(n)}(e,t)))}function h(){if(!i){if(0===c.length&&0===s)return r(null,o);for(;c.length&&s<t;){c.shift()()}}}function d(t){var r=[];return Object.keys(e).forEach((n=>{const o=e[n];Array.isArray(o)&&o.indexOf(t)>=0&&r.push(n)})),r}return Object.keys(e).forEach((t=>{var r=e[t];if(!Array.isArray(r))return p(t,[r]),void l.push(t);var n=r.slice(0,r.length-1),o=n.length;if(0===o)return p(t,r),void l.push(t);f[t]=o,n.forEach((s=>{if(!e[s])throw new Error("async.auto task `"+t+"` has a non-existent dependency `"+s+"` in "+n.join(", "));!function(e,t){var r=u[e];r||(r=u[e]=[]);r.push(t)}(s,(()=>{0===--o&&p(t,r)}))}))})),function(){var e=0;for(;l.length;)e++,d(l.pop()).forEach((e=>{0===--f[e]&&l.push(e)}));if(e!==n)throw new Error("async.auto cannot execute tasks due to a recursive dependency")}(),h(),r[de]}var ve=/^(?:async\s)?(?:function)?\s*(?:\w+\s*)?\(([^)]+)\)(?:\s*{)/,ge=/^(?:async\s)?\s*(?:\(\s*)?((?:[^)=\s]\s*)*)(?:\)\s*)?=>/,be=/,/,we=/(=.+)?(\s*)$/;function Ce(e,t){var r={};return Object.keys(e).forEach((t=>{var n,o=e[t],s=Q(o),i=!s&&1===o.length||s&&0===o.length;if(Array.isArray(o))n=[...o],o=n.pop(),r[t]=n.concat(n.length>0?a:o);else if(i)r[t]=o;else{if(n=function(e){const t=function(e){let t="",r=0,n=e.indexOf("*/");for(;r<e.length;)if("/"===e[r]&&"/"===e[r+1]){let t=e.indexOf("\n",r);r=-1===t?e.length:t}else if(-1!==n&&"/"===e[r]&&"*"===e[r+1]){let o=e.indexOf("*/",r);-1!==o?(r=o+2,n=e.indexOf("*/",r)):(t+=e[r],r++)}else t+=e[r],r++;return t}(e.toString());let r=t.match(ve);if(r||(r=t.match(ge)),!r)throw new Error("could not parse args in autoInject\nSource:\n"+t);let[,n]=r;return n.replace(/\s/g,"").split(be).map((e=>e.replace(we,"").trim()))}(o),0===o.length&&!s&&0===n.length)throw new Error("autoInject task functions require explicit parameters.");s||n.pop(),r[t]=n.concat(a)}function a(e,t){var r=n.map((t=>e[t]));r.push(t),G(o)(...r)}})),ye(r,t)}class ke{constructor(){this.head=this.tail=null,this.length=0}removeLink(e){return e.prev?e.prev.next=e.next:this.head=e.next,e.next?e.next.prev=e.prev:this.tail=e.prev,e.prev=e.next=null,this.length-=1,e}empty(){for(;this.head;)this.shift();return this}insertAfter(e,t){t.prev=e,t.next=e.next,e.next?e.next.prev=t:this.tail=t,e.next=t,this.length+=1}insertBefore(e,t){t.prev=e.prev,t.next=e,e.prev?e.prev.next=t:this.head=t,e.prev=t,this.length+=1}unshift(e){this.head?this.insertBefore(this.head,e):Pe(this,e)}push(e){this.tail?this.insertAfter(this.tail,e):Pe(this,e)}shift(){return this.head&&this.removeLink(this.head)}pop(){return this.tail&&this.removeLink(this.tail)}toArray(){return[...this]}*[Symbol.iterator](){for(var e=this.head;e;)yield e.data,e=e.next}remove(e){for(var t=this.head;t;){var{next:r}=t;e(t)&&this.removeLink(t),t=r}return this}}function Pe(e,t){e.length=1,e.head=e.tail=t}function Ee(e,t,r){if(null==t)t=1;else if(0===t)throw new RangeError("Concurrency must not be zero");var n=G(e),o=0,s=[];const i={error:[],drain:[],saturated:[],unsaturated:[],empty:[]};function a(e,t){return e?t?void(i[e]=i[e].filter((e=>e!==t))):i[e]=[]:Object.keys(i).forEach((e=>i[e]=[]))}function u(e,...t){i[e].forEach((e=>e(...t)))}var c=!1;function l(e,t,r,n){if(null!=n&&"function"!=typeof n)throw new Error("task callback must be a function");var o,s;function i(e,...t){return e?r?s(e):o():t.length<=1?o(t[0]):void o(t)}m.started=!0;var a=m._createTaskItem(e,r?i:n||i);if(t?m._tasks.unshift(a):m._tasks.push(a),c||(c=!0,z((()=>{c=!1,m.process()}))),r||!n)return new Promise(((e,t)=>{o=e,s=t}))}function f(e){return function(t,...r){o-=1;for(var n=0,i=e.length;n<i;n++){var a=e[n],c=s.indexOf(a);0===c?s.shift():c>0&&s.splice(c,1),a.callback(t,...r),null!=t&&u("error",t,a.data)}o<=m.concurrency-m.buffer&&u("unsaturated"),m.idle()&&u("drain"),m.process()}}function p(e){return!(0!==e.length||!m.idle())&&(z((()=>u("drain"))),!0)}const h=e=>t=>{if(!t)return new Promise(((t,r)=>{!function(e,t){const r=(...n)=>{a(e,r),t(...n)};i[e].push(r)}(e,((e,n)=>{if(e)return r(e);t(n)}))}));a(e),function(e,t){i[e].push(t)}(e,t)};var d=!1,m={_tasks:new ke,_createTaskItem:(e,t)=>({data:e,callback:t}),*[Symbol.iterator](){yield*m._tasks[Symbol.iterator]()},concurrency:t,payload:r,buffer:t/4,started:!1,paused:!1,push(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!1,!1,t)))}return l(e,!1,!1,t)},pushAsync(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!1,!0,t)))}return l(e,!1,!0,t)},kill(){a(),m._tasks.empty()},unshift(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!0,!1,t)))}return l(e,!0,!1,t)},unshiftAsync(e,t){if(Array.isArray(e)){if(p(e))return;return e.map((e=>l(e,!0,!0,t)))}return l(e,!0,!0,t)},remove(e){m._tasks.remove(e)},process(){if(!d){for(d=!0;!m.paused&&o<m.concurrency&&m._tasks.length;){var e=[],t=[],r=m._tasks.length;m.payload&&(r=Math.min(r,m.payload));for(var i=0;i<r;i++){var a=m._tasks.shift();e.push(a),s.push(a),t.push(a.data)}o+=1,0===m._tasks.length&&u("empty"),o===m.concurrency&&u("saturated");var c=re(f(e));n(t,c)}d=!1}},length:()=>m._tasks.length,running:()=>o,workersList:()=>s,idle:()=>m._tasks.length+o===0,pause(){m.paused=!0},resume(){!1!==m.paused&&(m.paused=!1,z(m.process))}};return Object.defineProperties(m,{saturated:{writable:!1,value:h("saturated")},unsaturated:{writable:!1,value:h("unsaturated")},empty:{writable:!1,value:h("empty")},drain:{writable:!1,value:h("drain")},error:{writable:!1,value:h("error")}}),m}function Se(e,t){return Ee(e,1,t)}function xe(e,t,r){return Ee(e,t,r)}var Oe=W((function(e,t,r,n){n=ee(n);var o=G(r);return fe(e,((e,r,n)=>{o(t,e,((e,r)=>{t=r,n(e)}))}),(e=>n(e,t)))}),4);function Fe(...e){var t=e.map(G);return function(...e){var r=this,n=e[e.length-1];return"function"==typeof n?e.pop():n=me(),Oe(t,e,((e,t,n)=>{t.apply(r,e.concat(((e,...t)=>{n(e,t)})))}),((e,t)=>n(e,...t))),n[de]}}function Ae(...e){return Fe(...e.reverse())}var je=W((function(e,t,r,n){return K(oe(t),e,r,n)}),4);var Le=W((function(e,t,r,n){var o=G(r);return je(e,t,((e,t)=>{o(e,((e,...r)=>e?t(e):t(e,r)))}),((e,t)=>{for(var r=[],o=0;o<t.length;o++)t[o]&&(r=r.concat(...t[o]));return n(e,r)}))}),4);var _e=W((function(e,t,r){return Le(e,1/0,t,r)}),3);var Ie=W((function(e,t,r){return Le(e,1,t,r)}),3);function qe(...e){return function(...t){return t.pop()(null,...e)}}function Me(e,t){return(r,n,o,s)=>{var i,a=!1;const u=G(o);r(n,((r,n,o)=>{u(r,((n,s)=>n||!1===n?o(n):e(s)&&!i?(a=!0,i=t(!0,r),o(null,X)):void o()))}),(e=>{if(e)return s(e);s(null,a?i:t(!1))}))}}var Ne=W((function(e,t,r){return Me((e=>e),((e,t)=>t))(ue,e,t,r)}),3);var De=W((function(e,t,r,n){return Me((e=>e),((e,t)=>t))(oe(t),e,r,n)}),4);var Be=W((function(e,t,r){return Me((e=>e),((e,t)=>t))(oe(1),e,t,r)}),3);function Re(e){return(t,...r)=>G(t)(...r,((t,...r)=>{"object"==typeof console&&(t?console.error&&console.error(t):console[e]&&r.forEach((t=>console[e](t))))}))}var Te=Re("dir");var $e=W((function(e,t,r){r=re(r);var n,o=G(e),s=G(t);function i(e,...t){if(e)return r(e);!1!==e&&(n=t,s(...t,a))}function a(e,t){return e?r(e):!1!==e?t?void o(i):r(null,...n):void 0}return a(null,!0)}),3);function Ue(e,t,r){const n=G(t);return $e(e,((...e)=>{const t=e.pop();n(...e,((e,r)=>t(e,!r)))}),r)}function ze(e){return(t,r,n)=>e(t,n)}var He=W((function(e,t,r){return ue(e,ze(G(t)),r)}),3);var Je=W((function(e,t,r,n){return oe(t)(e,ze(G(r)),n)}),4);var Ve=W((function(e,t,r){return Je(e,1,t,r)}),3);function Qe(e){return Q(e)?e:function(...t){var r=t.pop(),n=!0;t.push(((...e)=>{n?z((()=>r(...e))):r(...e)})),e.apply(this,t),n=!1}}var Ge=W((function(e,t,r){return Me((e=>!e),(e=>!e))(ue,e,t,r)}),3);var We=W((function(e,t,r,n){return Me((e=>!e),(e=>!e))(oe(t),e,r,n)}),4);var Ze=W((function(e,t,r){return Me((e=>!e),(e=>!e))(fe,e,t,r)}),3);function Ke(e,t,r,n){var o=new Array(t.length);e(t,((e,t,n)=>{r(e,((e,r)=>{o[t]=!!r,n(e)}))}),(e=>{if(e)return n(e);for(var r=[],s=0;s<t.length;s++)o[s]&&r.push(t[s]);n(null,r)}))}function Ye(e,t,r,n){var o=[];e(t,((e,t,n)=>{r(e,((r,s)=>{if(r)return n(r);s&&o.push({index:t,value:e}),n(r)}))}),(e=>{if(e)return n(e);n(null,o.sort(((e,t)=>e.index-t.index)).map((e=>e.value)))}))}function Xe(e,t,r,n){return(Y(t)?Ke:Ye)(e,t,G(r),n)}var et=W((function(e,t,r){return Xe(ue,e,t,r)}),3);var tt=W((function(e,t,r,n){return Xe(oe(t),e,r,n)}),4);var rt=W((function(e,t,r){return Xe(fe,e,t,r)}),3);var nt=W((function(e,t){var r=re(t),n=G(Qe(e));return function e(t){if(t)return r(t);!1!==t&&n(e)}()}),2);var ot=W((function(e,t,r,n){var o=G(r);return je(e,t,((e,t)=>{o(e,((r,n)=>r?t(r):t(r,{key:n,val:e})))}),((e,t)=>{for(var r={},{hasOwnProperty:o}=Object.prototype,s=0;s<t.length;s++)if(t[s]){var{key:i}=t[s],{val:a}=t[s];o.call(r,i)?r[i].push(a):r[i]=[a]}return n(e,r)}))}),4);function st(e,t,r){return ot(e,1/0,t,r)}function it(e,t,r){return ot(e,1,t,r)}var at=Re("log");var ut=W((function(e,t,r,n){n=ee(n);var o={},s=G(r);return oe(t)(e,((e,t,r)=>{s(e,t,((e,n)=>{if(e)return r(e);o[t]=n,r(e)}))}),(e=>n(e,o)))}),4);function ct(e,t,r){return ut(e,1/0,t,r)}function lt(e,t,r){return ut(e,1,t,r)}function ft(e,t=e=>e){var r=Object.create(null),n=Object.create(null),o=G(e),s=D(((e,s)=>{var i=t(...e);i in r?z((()=>s(null,...r[i]))):i in n?n[i].push(s):(n[i]=[s],o(...e,((e,...t)=>{e||(r[i]=t);var o=n[i];delete n[i];for(var s=0,a=o.length;s<a;s++)o[s](e,...t)})))}));return s.memo=r,s.unmemoized=e,s}var pt=U(T?process.nextTick:R?setImmediate:$),ht=W(((e,t,r)=>{var n=Y(t)?[]:{};e(t,((e,t,r)=>{G(e)(((e,...o)=>{o.length<2&&([o]=o),n[t]=o,r(e)}))}),(e=>r(e,n)))}),3);function dt(e,t){return ht(ue,e,t)}function mt(e,t,r){return ht(oe(t),e,r)}function yt(e,t){var r=G(e);return Ee(((e,t)=>{r(e[0],t)}),t,1)}class vt{constructor(){this.heap=[],this.pushCount=Number.MIN_SAFE_INTEGER}get length(){return this.heap.length}empty(){return this.heap=[],this}percUp(e){let t;for(;e>0&&bt(this.heap[e],this.heap[t=gt(e)]);){let r=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=r,e=t}}percDown(e){let t;for(;(t=1+(e<<1))<this.heap.length&&(t+1<this.heap.length&&bt(this.heap[t+1],this.heap[t])&&(t+=1),!bt(this.heap[e],this.heap[t]));){let r=this.heap[e];this.heap[e]=this.heap[t],this.heap[t]=r,e=t}}push(e){e.pushCount=++this.pushCount,this.heap.push(e),this.percUp(this.heap.length-1)}unshift(e){return this.heap.push(e)}shift(){let[e]=this.heap;return this.heap[0]=this.heap[this.heap.length-1],this.heap.pop(),this.percDown(0),e}toArray(){return[...this]}*[Symbol.iterator](){for(let e=0;e<this.heap.length;e++)yield this.heap[e].data}remove(e){let t=0;for(let r=0;r<this.heap.length;r++)e(this.heap[r])||(this.heap[t]=this.heap[r],t++);this.heap.splice(t);for(let e=gt(this.heap.length-1);e>=0;e--)this.percDown(e);return this}}function gt(e){return(e+1>>1)-1}function bt(e,t){return e.priority!==t.priority?e.priority<t.priority:e.pushCount<t.pushCount}function wt(e,t){var r=yt(e,t),{push:n,pushAsync:o}=r;function s(e,t){return Array.isArray(e)?e.map((e=>({data:e,priority:t}))):{data:e,priority:t}}return r._tasks=new vt,r._createTaskItem=({data:e,priority:t},r)=>({data:e,priority:t,callback:r}),r.push=function(e,t=0,r){return n(s(e,t),r)},r.pushAsync=function(e,t=0,r){return o(s(e,t),r)},delete r.unshift,delete r.unshiftAsync,r}var Ct=W((function(e,t){if(t=ee(t),!Array.isArray(e))return t(new TypeError("First argument to race must be an array of functions"));if(!e.length)return t();for(var r=0,n=e.length;r<n;r++)G(e[r])(t)}),2);function kt(e,t,r,n){var o=[...e].reverse();return Oe(o,t,r,n)}function Pt(e){var t=G(e);return D((function(e,r){return e.push(((e,...t)=>{let n={};if(e&&(n.error=e),t.length>0){var o=t;t.length<=1&&([o]=t),n.value=o}r(null,n)})),t.apply(this,e)}))}function Et(e){var t;return Array.isArray(e)?t=e.map(Pt):(t={},Object.keys(e).forEach((r=>{t[r]=Pt.call(this,e[r])}))),t}function St(e,t,r,n){const o=G(r);return Xe(e,t,((e,t)=>{o(e,((e,r)=>{t(e,!r)}))}),n)}var xt=W((function(e,t,r){return St(ue,e,t,r)}),3);var Ot=W((function(e,t,r,n){return St(oe(t),e,r,n)}),4);var Ft=W((function(e,t,r){return St(fe,e,t,r)}),3);function At(e){return function(){return e}}function jt(e,t,r){var n={times:5,intervalFunc:At(0)};if(arguments.length<3&&"function"==typeof e?(r=t||me(),t=e):(!function(e,t){if("object"==typeof t)e.times=+t.times||5,e.intervalFunc="function"==typeof t.interval?t.interval:At(+t.interval||0),e.errorFilter=t.errorFilter;else{if("number"!=typeof t&&"string"!=typeof t)throw new Error("Invalid arguments for async.retry");e.times=+t||5}}(n,e),r=r||me()),"function"!=typeof t)throw new Error("Invalid arguments for async.retry");var o=G(t),s=1;return function e(){o(((t,...o)=>{!1!==t&&(t&&s++<n.times&&("function"!=typeof n.errorFilter||n.errorFilter(t))?setTimeout(e,n.intervalFunc(s-1)):r(t,...o))}))}(),r[de]}function Lt(e,t){t||(t=e,e=null);let r=e&&e.arity||t.length;Q(t)&&(r+=1);var n=G(t);return D(((t,o)=>{function s(e){n(...t,e)}return(t.length<r-1||null==o)&&(t.push(o),o=me()),e?jt(e,s,o):jt(s,o),o[de]}))}function _t(e,t){return ht(fe,e,t)}var It=W((function(e,t,r){return Me(Boolean,(e=>e))(ue,e,t,r)}),3);var qt=W((function(e,t,r,n){return Me(Boolean,(e=>e))(oe(t),e,r,n)}),4);var Mt=W((function(e,t,r){return Me(Boolean,(e=>e))(fe,e,t,r)}),3);var Nt=W((function(e,t,r){var n=G(t);return ce(e,((e,t)=>{n(e,((r,n)=>{if(r)return t(r);t(r,{value:e,criteria:n})}))}),((e,t)=>{if(e)return r(e);r(null,t.sort(o).map((e=>e.value)))}));function o(e,t){var r=e.criteria,n=t.criteria;return r<n?-1:r>n?1:0}}),3);function Dt(e,t,r){var n=G(e);return D(((o,s)=>{var i,a=!1;o.push(((...e)=>{a||(s(...e),clearTimeout(i))})),i=setTimeout((function(){var t=e.name||"anonymous",n=new Error('Callback function "'+t+'" timed out.');n.code="ETIMEDOUT",r&&(n.info=r),a=!0,s(n)}),t),n(...o)}))}function Bt(e,t,r,n){var o=G(r);return je(function(e){for(var t=Array(e);e--;)t[e]=e;return t}(e),t,o,n)}function Rt(e,t,r){return Bt(e,1/0,t,r)}function Tt(e,t,r){return Bt(e,1,t,r)}function $t(e,t,r,n){arguments.length<=3&&"function"==typeof t&&(n=r,r=t,t=Array.isArray(e)?[]:{}),n=ee(n||me());var o=G(r);return ue(e,((e,r,n)=>{o(t,e,r,n)}),(e=>n(e,t))),n[de]}var Ut=W((function(e,t){var r,n=null;return Ve(e,((e,t)=>{G(e)(((e,...o)=>{if(!1===e)return t(e);o.length<2?[r]=o:r=o,n=e,t(e?null:{})}))}),(()=>t(n,r)))}));function zt(e){return(...t)=>(e.unmemoized||e)(...t)}var Ht=W((function(e,t,r){r=re(r);var n=G(t),o=G(e),s=[];function i(e,...t){if(e)return r(e);s=t,!1!==e&&o(a)}function a(e,t){return e?r(e):!1!==e?t?void n(i):r(null,...s):void 0}return o(a)}),3);function Jt(e,t,r){const n=G(e);return Ht((e=>n(((t,r)=>e(t,!r)))),t,r)}var Vt,Qt,Gt,Wt,Zt,Kt=W((function(e,t){if(t=ee(t),!Array.isArray(e))return t(new Error("First argument to waterfall must be an array of functions"));if(!e.length)return t();var r=0;function n(t){G(e[r++])(...t,re(o))}function o(o,...s){if(!1!==o)return o||r===e.length?t(o,...s):void n(s)}n([])})),Yt={apply:N,applyEach:le,applyEachSeries:he,asyncify:H,auto:ye,autoInject:Ce,cargo:Se,cargoQueue:xe,compose:Ae,concat:_e,concatLimit:Le,concatSeries:Ie,constant:qe,detect:Ne,detectLimit:De,detectSeries:Be,dir:Te,doUntil:Ue,doWhilst:$e,each:He,eachLimit:Je,eachOf:ue,eachOfLimit:se,eachOfSeries:fe,eachSeries:Ve,ensureAsync:Qe,every:Ge,everyLimit:We,everySeries:Ze,filter:et,filterLimit:tt,filterSeries:rt,forever:nt,groupBy:st,groupByLimit:ot,groupBySeries:it,log:at,map:ce,mapLimit:je,mapSeries:pe,mapValues:ct,mapValuesLimit:ut,mapValuesSeries:lt,memoize:ft,nextTick:pt,parallel:dt,parallelLimit:mt,priorityQueue:wt,queue:yt,race:Ct,reduce:Oe,reduceRight:kt,reflect:Pt,reflectAll:Et,reject:xt,rejectLimit:Ot,rejectSeries:Ft,retry:jt,retryable:Lt,seq:Fe,series:_t,setImmediate:z,some:It,someLimit:qt,someSeries:Mt,sortBy:Nt,timeout:Dt,times:Rt,timesLimit:Bt,timesSeries:Tt,transform:$t,tryEach:Ut,unmemoize:zt,until:Jt,waterfall:Kt,whilst:Ht,all:Ge,allLimit:We,allSeries:Ze,any:It,anyLimit:qt,anySeries:Mt,find:Ne,findLimit:De,findSeries:Be,flatMap:_e,flatMapLimit:Le,flatMapSeries:Ie,forEach:He,forEachSeries:Ve,forEachLimit:Je,forEachOf:ue,forEachOfSeries:fe,forEachOfLimit:se,inject:Oe,foldl:Oe,foldr:kt,select:et,selectLimit:tt,selectSeries:rt,wrapSync:H,during:Ht,doDuring:$e},Xt=q(Object.freeze({__proto__:null,all:Ge,allLimit:We,allSeries:Ze,any:It,anyLimit:qt,anySeries:Mt,apply:N,applyEach:le,applyEachSeries:he,asyncify:H,auto:ye,autoInject:Ce,cargo:Se,cargoQueue:xe,compose:Ae,concat:_e,concatLimit:Le,concatSeries:Ie,constant:qe,default:Yt,detect:Ne,detectLimit:De,detectSeries:Be,dir:Te,doDuring:$e,doUntil:Ue,doWhilst:$e,during:Ht,each:He,eachLimit:Je,eachOf:ue,eachOfLimit:se,eachOfSeries:fe,eachSeries:Ve,ensureAsync:Qe,every:Ge,everyLimit:We,everySeries:Ze,filter:et,filterLimit:tt,filterSeries:rt,find:Ne,findLimit:De,findSeries:Be,flatMap:_e,flatMapLimit:Le,flatMapSeries:Ie,foldl:Oe,foldr:kt,forEach:He,forEachLimit:Je,forEachOf:ue,forEachOfLimit:se,forEachOfSeries:fe,forEachSeries:Ve,forever:nt,groupBy:st,groupByLimit:ot,groupBySeries:it,inject:Oe,log:at,map:ce,mapLimit:je,mapSeries:pe,mapValues:ct,mapValuesLimit:ut,mapValuesSeries:lt,memoize:ft,nextTick:pt,parallel:dt,parallelLimit:mt,priorityQueue:wt,queue:yt,race:Ct,reduce:Oe,reduceRight:kt,reflect:Pt,reflectAll:Et,reject:xt,rejectLimit:Ot,rejectSeries:Ft,retry:jt,retryable:Lt,select:et,selectLimit:tt,selectSeries:rt,seq:Fe,series:_t,setImmediate:z,some:It,someLimit:qt,someSeries:Mt,sortBy:Nt,timeout:Dt,times:Rt,timesLimit:Bt,timesSeries:Tt,transform:$t,tryEach:Ut,unmemoize:zt,until:Jt,waterfall:Kt,whilst:Ht,wrapSync:H})),er={exports:{}},tr={exports:{}};function rr(){if(Qt)return Vt;Qt=1;var e=1e3,t=60*e,r=60*t,n=24*r,o=7*n,s=365.25*n;function i(e,t,r,n){var o=t>=1.5*r;return Math.round(e/r)+" "+n+(o?"s":"")}return Vt=function(a,u){u=u||{};var c=typeof a;if("string"===c&&a.length>0)return function(i){if((i=String(i)).length>100)return;var a=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(i);if(!a)return;var u=parseFloat(a[1]);switch((a[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return u*s;case"weeks":case"week":case"w":return u*o;case"days":case"day":case"d":return u*n;case"hours":case"hour":case"hrs":case"hr":case"h":return u*r;case"minutes":case"minute":case"mins":case"min":case"m":return u*t;case"seconds":case"second":case"secs":case"sec":case"s":return u*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return u;default:return}}(a);if("number"===c&&isFinite(a))return u.long?function(o){var s=Math.abs(o);if(s>=n)return i(o,s,n,"day");if(s>=r)return i(o,s,r,"hour");if(s>=t)return i(o,s,t,"minute");if(s>=e)return i(o,s,e,"second");return o+" ms"}(a):function(o){var s=Math.abs(o);if(s>=n)return Math.round(o/n)+"d";if(s>=r)return Math.round(o/r)+"h";if(s>=t)return Math.round(o/t)+"m";if(s>=e)return Math.round(o/e)+"s";return o+"ms"}(a);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(a))}}function nr(){if(Wt)return Gt;return Wt=1,Gt=function(e){function t(e){let n,o,s,i=null;function a(...e){if(!a.enabled)return;const r=a,o=Number(new Date),s=o-(n||o);r.diff=s,r.prev=n,r.curr=o,n=o,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,o)=>{if("%%"===n)return"%";i++;const s=t.formatters[o];if("function"==typeof s){const t=e[i];n=s.call(r,t),e.splice(i,1),i--}return n})),t.formatArgs.call(r,e);(r.log||t.log).apply(r,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=r,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(o!==t.namespaces&&(o=t.namespaces,s=t.enabled(e)),s),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function n(e,t){let r=0,n=0,o=-1,s=0;for(;r<e.length;)if(n<t.length&&(t[n]===e[r]||"*"===t[n]))"*"===t[n]?(o=n,s=r,n++):(r++,n++);else{if(-1===o)return!1;n=o+1,s++,r=s}for(;n<t.length&&"*"===t[n];)n++;return n===t.length}return t.debug=t,t.default=t,t.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},t.disable=function(){const e=[...t.names,...t.skips.map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){t.save(e),t.namespaces=e,t.names=[],t.skips=[];const r=("string"==typeof e?e:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(const e of r)"-"===e[0]?t.skips.push(e.slice(1)):t.names.push(e)},t.enabled=function(e){for(const r of t.skips)if(n(e,r))return!1;for(const r of t.names)if(n(e,r))return!0;return!1},t.humanize=rr(),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((r=>{t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let r=0;for(let t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t},Gt}var or,sr,ir,ar={exports:{}};function ur(){return or||(or=1,function(e,t){const r=f,n=p;t.init=function(e){e.inspectOpts={};const r=Object.keys(t.inspectOpts);for(let n=0;n<r.length;n++)e.inspectOpts[r[n]]=t.inspectOpts[r[n]]},t.log=function(...e){return process.stderr.write(n.formatWithOptions(t.inspectOpts,...e)+"\n")},t.formatArgs=function(r){const{namespace:n,useColors:o}=this;if(o){const t=this.color,o="[3"+(t<8?t:"8;5;"+t),s=` ${o};1m${n} `;r[0]=s+r[0].split("\n").join("\n"+s),r.push(o+"m+"+e.exports.humanize(this.diff)+"")}else r[0]=function(){if(t.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+n+" "+r[0]},t.save=function(e){e?process.env.DEBUG=e:delete process.env.DEBUG},t.load=function(){return process.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):r.isatty(process.stderr.fd)},t.destroy=n.deprecate((()=>{}),"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const e=require("supports-color");e&&(e.stderr||e).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(process.env).filter((e=>/^debug_/i.test(e))).reduce(((e,t)=>{const r=t.substring(6).toLowerCase().replace(/_([a-z])/g,((e,t)=>t.toUpperCase()));let n=process.env[t];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[r]=n,e}),{}),e.exports=nr()(t);const{formatters:o}=e.exports;o.o=function(e){return this.inspectOpts.colors=this.useColors,n.inspect(e,this.inspectOpts).split("\n").map((e=>e.trim())).join(" ")},o.O=function(e){return this.inspectOpts.colors=this.useColors,n.inspect(e,this.inspectOpts)}}(ar,ar.exports)),ar.exports}function cr(){return sr||(sr=1,"undefined"==typeof process||"renderer"===process.type||!0===process.browser||process.__nwjs?er.exports=(Zt||(Zt=1,function(e,t){t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const r="color: "+this.color;t.splice(1,0,r,"color: inherit");let n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")||t.storage.getItem("DEBUG")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let e;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&(e=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(e[1],10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=nr()(t);const{formatters:r}=e.exports;r.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}}(tr,tr.exports)),tr.exports):er.exports=ur()),er.exports}var lr=(ir||(ir=1,function(e){const r=t,n=c,s=l,i=o,a=Xt,u=cr(),f=u("portfinder:testPort"),p=u("portfinder:getPort"),h=u("portfinder:defaultHosts"),d={testPort:function(t,r){function n(){f("done w/ testPort(): OK",t.host,"port",t.port),t.server.removeListener("error",o),t.server.close((function(){f("done w/ testPort(): Server closed",t.host,"port",t.port),r(null,t.port)}))}function o(o){if(f("done w/ testPort(): failed",t.host,"w/ port",t.port,"with error",o.code),t.server.removeListener("listening",n),"EADDRINUSE"!=o.code&&"EACCES"!=o.code)return r(o);const s=e.nextPort(t.port);if(s>e.highestPort)return r(new Error("No open ports available"));d.testPort({port:s,host:t.host,server:t.server},r)}r||(r=t,t={}),t.server=t.server||s.createServer((function(){})),f("entered testPort(): trying",t.host,"port",t.port),t.server.once("error",o),t.server.once("listening",n),t.host?t.server.listen(t.port,t.host):t.server.listen(t.port)}};e.basePort=8e3,e.setBasePort=function(t){e.basePort=t},e.highestPort=65535,e.setHighestPort=function(t){e.highestPort=t},e.basePath="/tmp/portfinder",e.setBasePath=function(t){e.basePath=t},d.getPort=function(t,r){if(t.port=Number(t.port)||Number(t.startPort)||Number(e.basePort),t.host=t.host||null,t.stopPort=Number(t.stopPort)||Number(e.highestPort),!t.startPort){if(t.startPort=t.port,t.startPort<0)return r(Error(`Provided options.port(${t.port}) is less than 0, which are cannot be bound.`));if(t.stopPort<t.startPort)return r(Error(`Provided options.stopPort(${t.stopPort}) is less than options.port(${t.startPort})`))}t.host&&-1===e._defaultHosts.indexOf(t.host)&&e._defaultHosts.push(t.host);const n=[];let o;return a.eachSeries(e._defaultHosts,(function(e,r){return p("in eachSeries() iteration callback: host is",e),d.testPort({host:e,port:t.port},(function(t,s){return t?(p("in eachSeries() iteration callback testPort() callback","with an err:",t.code),o=e,r(t)):(p("in eachSeries() iteration callback testPort() callback","with a success for port",s),n.push(s),r())}))}),(function(s){if(s){if(p("in eachSeries() result callback: err is",s),"EADDRNOTAVAIL"===s.code||"EINVAL"===s.code){if(t.host===o){const e="Provided host "+t.host+" could NOT be bound. Please provide a different host address or hostname";return r(Error(e))}{const n=e._defaultHosts.indexOf(o);return e._defaultHosts.splice(n,1),d.getPort(t,r)}}return r(s)}if(n.sort((function(e,t){return e-t})),p("in eachSeries() result callback: openPorts is",n),n[0]===n[n.length-1]){if(n[0]<=t.stopPort)return r(null,n[0]);{const e="No open ports found in between "+t.startPort+" and "+t.stopPort;return r(Error(e))}}return d.getPort({port:n.pop(),host:t.host,startPort:t.startPort,stopPort:t.stopPort},r)}))},e.getPort=function(e,t){if("function"==typeof e&&(t=e,e={}),e=e||{},!t)return new Promise((function(t,r){d.getPort(e,(function(e,n){if(e)return r(e);t(n)}))}));d.getPort(e,t)},e.getPortPromise=e.getPort,d.getPorts=function(t,r,n){let o=null;a.timesSeries(t,(function(t,n){o&&(r.port=e.nextPort(o)),d.getPort(r,(function(e,t){e?n(e):(o=t,n(null,t))}))}),n)},e.getPorts=function(e,t,r){if("function"==typeof t&&(r=t,t={}),t=t||{},!r)return new Promise((function(r,n){d.getPorts(e,t,(function(e,t){if(e)return n(e);r(t)}))}));d.getPorts(e,t,r)},e.getPortsPromise=e.getPorts,d.getSocket=function(t,n){function o(){r.stat(t.path,(function(r){r?"ENOENT"==r.code?n(null,t.path):n(r):(t.path=e.nextSocket(t.path),d.getSocket(t,n))}))}return t.mod=t.mod||parseInt(755,8),t.path=t.path||e.basePath+".sock",t.exists?o():function(){const e=i.dirname(t.path);r.stat(e,(function(s,i){if(s||!i.isDirectory())return function(e){r.mkdir(e,{mode:t.mod,recursive:!0},(function(e){if(e)return n(e);t.exists=!0,o()}))}(e);t.exists=!0,o()}))}()},e.getSocket=function(e,t){if("function"==typeof e&&(t=e,e={}),e=e||{},!t)return new Promise((function(t,r){d.getSocket(e,(function(e,n){if(e)return r(e);t(n)}))}));d.getSocket(e,t)},e.getSocketPromise=e.getSocket,e.nextPort=function(e){return e+1},e.nextSocket=function(e){const t=i.dirname(e),r=i.basename(e,".sock").match(/^([a-zA-z]+)(\d*)$/i),n=r[1];let o=parseInt(r[2]);return isNaN(o)&&(o=0),o+=1,i.join(t,n+o+".sock")},e._defaultHosts=function(){let e={};try{e=n.networkInterfaces()}catch(e){if("uv_interface_addresses"!==e.syscall)throw e}const t=Object.keys(e),r=["0.0.0.0"];for(let n=0;n<t.length;n++){const o=e[t[n]];for(let e=0;e<o.length;e++){const t=o[e];r.push(t.address)}}return r.push(null),h("exports._defaultHosts is: %o",r),r}()}(M)),M),fr=I(lr);const pr=a.prototype.listen,hr=e=>{const t=e.address();if(t){((e,t)=>{const r=null!==t?`http://${e}:${t}`:e;console.log(`app listen ${r}`)})("object"==typeof t?(e=>"::"===e?"0.0.0.0":e)(t.address):t,"object"==typeof t?t.port:null)}},dr=(e,t,r,n)=>{const{controllerPrefix:o,moduleName:s,name:i}=(e=>{const t="controller",r=e.path.indexOf(t);if(-1===r)throw new Error(`'${t}' not found in path: ${e.path}`);const n=j(e.path.substring(r+10)),o=e.name?.split(".")?.[0];return{controllerPrefix:n,moduleName:o,name:e.name}})(t),a=`${o}/${s}`;if(!r)return;const u=F(`${e}${`${o}/${i}`}`);r.forEach((e=>{const{method:t,path:r,handler:o,functionName:s,authRequired:i,middlewares:c}=e;var l;u&&"function"==typeof u[s]&&c.push((l=u[s],async(e,t)=>{const r=l(e);r instanceof Promise&&await r,await t()}));const f=(p=i,h=o,async(e,t)=>{let r=n(p,e);return r instanceof Promise&&(r=await r),r?h(e,t):e.throw(403,"无权限")});var p,h;const d=[...c,f],m=mr(r,a,s,d,t);e.path=m}))},mr=(e,t,r,n,o)=>{const s=r.toLowerCase();let i="get";i="get_"===s?"get":v.includes(s)?s:o??"get";const a=`${t}${"get_"==s?"":e??""}`;return _[i](a,...n),a},yr=process.cwd();var vr=function(e){var t=Object.prototype.hasOwnProperty;function r(e,n){return Array.isArray(e)?function(e,t){for(var n,o="",s="",a=Array.isArray(t),u=0;u<e.length;u++)(n=r(e[u]))&&(a&&t[u]&&(n=i(n)),o=o+s+n,s=" ");return o}(e,n):e&&"object"==typeof e?function(e){var r="",n="";for(var o in e)o&&e[o]&&t.call(e,o)&&(r=r+n+o,n=" ");return r}(e):e||""}function n(e){if(!e)return"";if("object"==typeof e){var r="";for(var n in e)t.call(e,n)&&(r=r+n+":"+e[n]+";");return r}return e+""}function o(e,t,r,n){return!1!==t&&null!=t&&(t||"class"!==e&&"style"!==e)?!0===t?" "+(n?e:e+'="'+e+'"'):("function"==typeof t.toJSON&&(t=t.toJSON()),"string"==typeof t||(t=JSON.stringify(t),r||-1===t.indexOf('"'))?(r&&(t=i(t))," "+e+'="'+t+'"'):" "+e+"='"+t.replace(/'/g,"&#39;")+"'"):""}e.merge=function e(t,r){if(1===arguments.length){for(var o=t[0],s=1;s<t.length;s++)o=e(o,t[s]);return o}for(var i in r)if("class"===i){var a=t[i]||[];t[i]=(Array.isArray(a)?a:[a]).concat(r[i]||[])}else if("style"===i){a=(a=n(t[i]))&&";"!==a[a.length-1]?a+";":a;var u=n(r[i]);u=u&&";"!==u[u.length-1]?u+";":u,t[i]=a+u}else t[i]=r[i];return t},e.classes=r,e.style=n,e.attr=o,e.attrs=function(e,s){var i="";for(var a in e)if(t.call(e,a)){var u=e[a];if("class"===a){i=o(a,u=r(u),!1,s)+i;continue}"style"===a&&(u=n(u)),i+=o(a,u,!1,s)}return i};var s=/["&<>]/;function i(e){var t=""+e,r=s.exec(t);if(!r)return e;var n,o,i,a="";for(n=r.index,o=0;n<t.length;n++){switch(t.charCodeAt(n)){case 34:i="&quot;";break;case 38:i="&amp;";break;case 60:i="&lt;";break;case 62:i="&gt;";break;default:continue}o!==n&&(a+=t.substring(o,n)),o=n+1,a+=i}return o!==n?a+t.substring(o,n):a}return e.escape=i,e.rethrow=function e(t,r,n,o){if(!(t instanceof Error))throw t;if(!("undefined"==typeof window&&r||o))throw t.message+=" on line "+n,t;try{o=o||require("fs").readFileSync(r,"utf8")}catch(r){e(t,null,n)}var s=3,i=o.split("\n"),a=Math.max(n-s,0),u=Math.min(i.length,n+s);s=i.slice(a,u).map((function(e,t){var r=t+a+1;return(r==n?" > ":" ")+r+"| "+e})).join("\n");throw t.path=r,t.message=(r||"Pug")+":"+n+"\n"+s+"\n\n"+t.message,t},e}({});function gr(e){var t,r,n="";try{var o={},s=e||{};(function(e,r){n+="<!DOCTYPE html>",n+="\n<html>",n+="\n <head>",n+="\n <title>",n+="API Documentation</title>",n+="\n <style>\n ",n+="body { font-family: Arial, sans-serif; margin: 20px; }",n+="\n ",n+="",n+="\n ",n+="h1 { color: #333; text-align: center; }",n+="\n ",n+="h2, h3 { cursor: pointer; transition: color 0.3s; }",n+="\n ",n+="h2 { color: #007BFF; }",n+="\n ",n+="h2:hover { color: #0056b3; }",n+="\n ",n+="h3 { color: #0d6efd; }",n+="\n ",n+="h3:hover { color: #0056b3; } ",n+="\n ",n+="",n+="\n ",n+=".api-section { ",n+="\n ",n+=" margin: 20px 0; ",n+="\n ",n+=" border: 1px solid #e0e0e0; ",n+="\n ",n+=" border-radius: 8px; ",n+="\n ",n+=" padding: 10px; ",n+="\n ",n+=" background-color: #f9f9f9; ",n+="\n ",n+=" box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); ",n+="\n ",n+="}",n+="\n ",n+="",n+="\n ",n+=".api-method { font-weight: bold; color: #333; }",n+="\n ",n+=".api-path { font-style: italic; color: #555; }",n+="\n ",n+="",n+="\n ",n+="pre { ",n+="\n ",n+=" background: #f4f4f4; ",n+="\n ",n+=" padding: 10px; ",n+="\n ",n+=" border-radius: 5px; ",n+="\n ",n+=" overflow-x: auto; ",n+="\n ",n+="}",n+="\n ",n+="",n+="\n ",n+=".collapse { display: none; }",n+="\n ",n+="\n </style>\n </head>",n+="\n <body>",n+="\n <h1>",n+="API Documentation</h1>",n+="\n \x3c!-- 添加 JavaScript 用于折叠 Sections--\x3e",n+="\n <script>\n ",n+="document.addEventListener('DOMContentLoaded', function() {",n+="\n ",n+=" // 折叠 API 部分",n+="\n ",n+=" const headings = document.querySelectorAll('h2');",n+="\n ",n+=" headings.forEach(heading => {",n+="\n ",n+=" heading.addEventListener('click', function() {",n+="\n ",n+=" const content = this.parentElement.querySelectorAll('.collapse')[0];",n+="\n ",n+=" if (content) {",n+="\n ",n+=' content.style.display = (content.style.display === "block") ? "none" : "block";',n+="\n ",n+=" }",n+="\n ",n+=" });",n+="\n ",n+=" });",n+="\n ",n+=" ",n+="\n ",n+=" // 折叠 API 方法",n+="\n ",n+=" const methodHeadings = document.querySelectorAll('h3');",n+="\n ",n+=" methodHeadings.forEach(method => {",n+="\n ",n+=" method.addEventListener('click', function() {",n+="\n ",n+=" const details = this.nextElementSibling;",n+="\n ",n+=" if (details) {",n+="\n ",n+=' details.style.display = (details.style.display === "block") ? "none" : "block";',n+="\n ",n+=" }",n+="\n ",n+=" });",n+="\n ",n+=" });",n+="\n ",n+="});",n+="\n ",n+="\n <\/script>",function(){var o=r;if("number"==typeof o.length)for(var s=0,i=o.length;s<i;s++){var a=o[s];n+='\n <div class="api-section">',n=(n+='\n <h2 class="toggle">')+vr.escape(null==(t=a.name)?"":t)+"</h2>",a.desc&&(n=(n+="\n <p>")+vr.escape(null==(t=a.desc)?"":t)+"</p>"),n+='\n <div class="collapse">',function(){var r=a.configs;if("number"==typeof r.length)for(var o=0,s=r.length;o<s;o++){var i=r[o];n=(n+='\n <h3 class="api-method">')+vr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+vr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}else{s=0;for(var o in r){s++;i=r[o];n=(n+='\n <h3 class="api-method">')+vr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+vr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}}}.call(this),n+="\n </div>\n </div>"}else{i=0;for(var s in o){i++;a=o[s];n+='\n <div class="api-section">',n=(n+='\n <h2 class="toggle">')+vr.escape(null==(t=a.name)?"":t)+"</h2>",a.desc&&(n=(n+="\n <p>")+vr.escape(null==(t=a.desc)?"":t)+"</p>"),n+='\n <div class="collapse">',function(){var r=a.configs;if("number"==typeof r.length)for(var o=0,s=r.length;o<s;o++){var i=r[o];n=(n+='\n <h3 class="api-method">')+vr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+vr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}else{s=0;for(var o in r){s++;i=r[o];n=(n+='\n <h3 class="api-method">')+vr.escape(null==(t=i.method.toUpperCase()+" "+i.path)?"":t)+"</h3>",n=(n+="\n <h4>")+vr.escape(null==(t=i.description)?"":t)+"</h4>",n+="\n <pre>",n+="Request Header:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.header,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.body,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Request Query:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.request.query,null,2))?"":t)+"</pre>",n+="\n <pre>",n+="Response Body:</pre>",n=(n+="\n <pre>")+vr.escape(null==(t=e.stringify(i.response.body,null,2))?"":t)+"</pre>"}}}.call(this),n+="\n </div>\n </div>"}}}.call(this),n+="\n </body>\n</html>"}).call(this,"JSON"in s?s.JSON:"undefined"!=typeof JSON?JSON:void 0,"apiData"in s?s.apiData:"undefined"!=typeof apiData?apiData:void 0)}catch(e){vr.rethrow(e,r,undefined,o[void 0])}return n}const br={DOCUMENTATION_DIR:i(process.cwd(),"doc")},wr=e=>{const t=F(e.wholePath),r=t.prototype,n=Object.getOwnPropertyNames(r).filter((e=>"function"==typeof r[e]&&"constructor"!==e)),o=e.path.substring(e.path.indexOf("doc")+3);return{configs:n.map((e=>{if("function"==typeof r[e]){const t=r[e]();return t.path=o+t.path,t}return null})).filter((e=>!!e)),desc:t.desc,name:t.name}};global.isDev="development"===process.env.NODE_ENV,(()=>{const e=process.env.NODE_ENV||"production",t=s(yr,"env");switch(console.log("load env path: ",t),h.config({path:s(t,".common.env")}),e){case"development":h.config({path:s(t,".development.env")});break;case"test":h.config({path:s(t,".test.env")});break;case"production":h.config({path:s(t,".production.env")})}})();const Cr=async e=>{const{koaInstance:t,authCheckCallback:r,catchErrorCallback:n,registerHighPriorityMiddleware:o}=e;(e=>{const{controllerModule:t,validateModule:r}=O();A(t,(t=>{if(!t.path.includes("controller"))return;const n=F(t.wholePath),o=n?.routesMap;o&&dr(r,t,o,((r,n)=>!r||e({filePath:t,ctx:n})))}))})(r);const s=t||new a;var i;if(s.use(L),o?.(s),s.use((i=n,async(e,t)=>{try{await t()}catch(t){i?i(t,e):E(500,{message:t.message})}})),isDev){const e=await(async()=>{const e=[];return A(br.DOCUMENTATION_DIR,(t=>{e.push(wr(t))})),gr({apiData:e})})();_.get("/doc",(async t=>{t.body=e}))}return s.use(_.routes()),await(async e=>{const t=await fr.getPortPromise({port:8e3,stopPort:9999});return e.listen=(...r)=>{const n=r?pr.apply(e,[t]):pr.apply(e,r);return n.on("listening",(()=>hr(n))),n},t})(s),[s,_]};export{y as AuthRouter,S as BaseException,m as Router,b as contextStore,E as errorRsp,w as getCurrentContext,O as getSrcModulePaths,Cr as initializeKoaApp,k as successRsp,P as unSuccessRsp};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koa-ts-core",
3
- "version": "0.0.3",
4
- "description": "",
3
+ "version": "0.0.5",
4
+ "description": "koa-ts-core",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
7
7
  "types": "dist/index.d.ts",
@@ -9,28 +9,45 @@
9
9
  "dist"
10
10
  ],
11
11
  "scripts": {
12
- "build": "npx rollup -c --bundleConfigAsCjs",
13
- "build:dev": "NODE_ENV=development npx rollup -c --bundleConfigAsCjs"
12
+ "dev": "npx rollup -c -w",
13
+ "build": "npx rollup -c",
14
+ "link": "npm run build:dev && pnpm link --dir ..",
15
+ "build:dev": "NODE_ENV=development npx rollup -c --bundleConfigAsCjs",
16
+ "publish": "npm run build && release-it",
17
+ "gen-doc": "npx ts-node src/generate.ts"
14
18
  },
15
- "keywords": [],
19
+ "keywords": [
20
+ "koa",
21
+ "koa-ts",
22
+ "node-web"
23
+ ],
16
24
  "author": "",
17
25
  "license": "ISC",
18
26
  "dependencies": {
19
27
  "dotenv": "^16.4.7",
20
28
  "koa": "^2.15.4",
21
- "koa-router": "^13.0.1"
29
+ "koa-router": "^13.0.1",
30
+ "portfinder": "^1.0.37",
31
+ "pug": "^3.0.3",
32
+ "rollup-plugin-pug": "^1.1.1"
22
33
  },
23
34
  "devDependencies": {
35
+ "@rollup/plugin-commonjs": "^28.0.3",
36
+ "@rollup/plugin-node-resolve": "^16.0.0",
24
37
  "@rollup/plugin-terser": "^0.4.4",
25
38
  "@rollup/plugin-typescript": "^12.1.2",
26
39
  "@types/koa": "^2.15.0",
27
40
  "@types/koa-router": "^7.4.8",
28
41
  "@types/node": "^22.13.4",
42
+ "@types/pug": "^2.0.10",
43
+ "release-it": "^18.1.2",
44
+ "rollup": "^4.34.9",
45
+ "rollup-plugin-copy": "^3.5.0",
29
46
  "rollup-plugin-delete": "^2.1.0",
30
- "typeorm": "^0.3.20",
47
+ "rollup-plugin-dts-alias": "^0.0.4",
31
48
  "typescript": "^5.7.3"
32
49
  },
33
50
  "engines": {
34
51
  "node": ">=14.0.0"
35
52
  }
36
- }
53
+ }
@@ -1,13 +0,0 @@
1
- /**
2
- * 检查端口是否可用
3
- * @param {number} port - 要检查的端口号
4
- * @returns {Promise<boolean>} - 如果端口可用,则返回 true;否则返回 false
5
- */
6
- declare const isPortAvailable: (port: number) => Promise<boolean>;
7
- /**
8
- * 找到可用的端口,默认从指定的起始端口开始检查
9
- * @param {number} startPort - 起始检查的端口号,默认为 8000
10
- * @returns {Promise<number>} - 返回第一个可用的端口
11
- */
12
- declare const findAvailablePort: (startPort?: number, maxPort?: number) => Promise<number>;
13
- export { isPortAvailable, findAvailablePort };