koa-ts-core 0.0.4 → 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/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/package.json +4 -3
- package/dist/utils/port.d.ts +0 -13
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,"'")+"'"):""}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=""";break;case 38:a="&";break;case 60:a="<";break;case 62:a=">";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} [0m`;r[0]=s+r[0].split("\n").join("\n"+s),r.push(o+"m+"+e.exports.humanize(this.diff)+"[0m")}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,"'")+"'"):""}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=""";break;case 38:i="&";break;case 60:i="<";break;case 62:i=">";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,"'")+"'"):""}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=""";break;case 38:a="&";break;case 60:a="<";break;case 62:a=">";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} [0m`;r[0]=s+r[0].split("\n").join("\n"+s),r.push(o+"m+"+e.exports.humanize(this.diff)+"[0m")}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,"'")+"'"):""}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=""";break;case 38:i="&";break;case 60:i="<";break;case 62:i=">";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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koa-ts-core",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "koa-ts-core",
|
|
5
5
|
"main": "dist/index.cjs.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"build": "npx rollup -c",
|
|
14
14
|
"link": "npm run build:dev && pnpm link --dir ..",
|
|
15
15
|
"build:dev": "NODE_ENV=development npx rollup -c --bundleConfigAsCjs",
|
|
16
|
-
"publish": "npm run build &&release-it",
|
|
16
|
+
"publish": "npm run build && release-it",
|
|
17
17
|
"gen-doc": "npx ts-node src/generate.ts"
|
|
18
18
|
},
|
|
19
19
|
"keywords": [
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
"dotenv": "^16.4.7",
|
|
28
28
|
"koa": "^2.15.4",
|
|
29
29
|
"koa-router": "^13.0.1",
|
|
30
|
+
"portfinder": "^1.0.37",
|
|
30
31
|
"pug": "^3.0.3",
|
|
31
32
|
"rollup-plugin-pug": "^1.1.1"
|
|
32
33
|
},
|
|
@@ -49,4 +50,4 @@
|
|
|
49
50
|
"engines": {
|
|
50
51
|
"node": ">=14.0.0"
|
|
51
52
|
}
|
|
52
|
-
}
|
|
53
|
+
}
|
package/dist/utils/port.d.ts
DELETED
|
@@ -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 };
|