k99 0.2.0 → 0.3.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +8 -0
  3. package/README.zh.md +8 -0
  4. package/browser/package.json +8 -0
  5. package/browser/types.d.ts +20 -0
  6. package/cli/command/create.js +1 -2
  7. package/cli/command/index.js +1 -2
  8. package/cli/command/init.js +3 -5
  9. package/cli/command/start.js +9 -10
  10. package/cli/index.js +3 -4
  11. package/cli/opt/bind.js +1 -2
  12. package/cli/opt/index.js +1 -2
  13. package/cli/opt/listen.js +1 -2
  14. package/cli/opt/path.js +1 -2
  15. package/cli/opt/port.js +1 -2
  16. package/cli/opt/show-router.js +1 -2
  17. package/dist/k99.browser.js +3110 -0
  18. package/dist/k99.browser.min.js +6 -0
  19. package/dist/k99.esm.js +3082 -0
  20. package/dist/k99.esm.min.js +6 -0
  21. package/dist/k99.js +3104 -0
  22. package/dist/k99.mjs +3082 -0
  23. package/dist/k99Browser.browser.js +490 -0
  24. package/dist/k99Browser.browser.min.js +6 -0
  25. package/dist/k99Browser.esm.js +475 -0
  26. package/dist/k99Browser.esm.min.js +6 -0
  27. package/dist/k99Browser.js +484 -0
  28. package/dist/k99Browser.mjs +475 -0
  29. package/dist/k99Services.browser.js +145 -0
  30. package/dist/k99Services.browser.min.js +6 -0
  31. package/dist/k99Services.esm.js +136 -0
  32. package/dist/k99Services.esm.min.js +6 -0
  33. package/dist/k99Services.js +141 -0
  34. package/dist/k99Services.mjs +136 -0
  35. package/node/index.js +1386 -0
  36. package/node/index.mjs +1350 -0
  37. package/node/package.json +5 -0
  38. package/node/types.d.ts +166 -0
  39. package/package.json +77 -11
  40. package/services/package.json +8 -0
  41. package/services/types.d.ts +22 -0
  42. package/starter.js +0 -1
  43. package/types.d.ts +748 -0
  44. package/Container.d.ts +0 -92
  45. package/Container.js +0 -242
  46. package/Container.js.map +0 -1
  47. package/Controller/index.d.ts +0 -178
  48. package/Controller/index.js +0 -576
  49. package/Controller/index.js.map +0 -1
  50. package/Controller/patch/cookie.d.ts +0 -33
  51. package/Controller/patch/cookie.js +0 -168
  52. package/Controller/patch/cookie.js.map +0 -1
  53. package/Controller/patch/index.d.ts +0 -7
  54. package/Controller/patch/index.js +0 -26
  55. package/Controller/patch/index.js.map +0 -1
  56. package/Controller/patch/render.d.ts +0 -5
  57. package/Controller/patch/render.js +0 -24
  58. package/Controller/patch/render.js.map +0 -1
  59. package/ExitSignal.d.ts +0 -14
  60. package/ExitSignal.js +0 -29
  61. package/ExitSignal.js.map +0 -1
  62. package/Extension.d.ts +0 -56
  63. package/Extension.js +0 -93
  64. package/Extension.js.map +0 -1
  65. package/ExtensionContainer.d.ts +0 -55
  66. package/ExtensionContainer.js +0 -105
  67. package/ExtensionContainer.js.map +0 -1
  68. package/Plugin.d.ts +0 -52
  69. package/Plugin.js +0 -278
  70. package/Plugin.js.map +0 -1
  71. package/Preprocessor.d.ts +0 -86
  72. package/Preprocessor.js +0 -135
  73. package/Preprocessor.js.map +0 -1
  74. package/Router/assets.d.ts +0 -33
  75. package/Router/assets.js +0 -106
  76. package/Router/assets.js.map +0 -1
  77. package/Router/callback.d.ts +0 -9
  78. package/Router/callback.js +0 -152
  79. package/Router/callback.js.map +0 -1
  80. package/Router/extendsInterface.d.ts +0 -8
  81. package/Router/extendsInterface.js +0 -43
  82. package/Router/extendsInterface.js.map +0 -1
  83. package/Router/index.d.ts +0 -184
  84. package/Router/index.js +0 -615
  85. package/Router/index.js.map +0 -1
  86. package/Router/log.d.ts +0 -23
  87. package/Router/log.js +0 -120
  88. package/Router/log.js.map +0 -1
  89. package/Router/order.d.ts +0 -14
  90. package/Router/order.js +0 -71
  91. package/Router/order.js.map +0 -1
  92. package/Router/register.d.ts +0 -9
  93. package/Router/register.js +0 -252
  94. package/Router/register.js.map +0 -1
  95. package/Router/registerManager.d.ts +0 -22
  96. package/Router/registerManager.js +0 -102
  97. package/Router/registerManager.js.map +0 -1
  98. package/Router/scan.d.ts +0 -2
  99. package/Router/scan.js +0 -72
  100. package/Router/scan.js.map +0 -1
  101. package/Router/setHandleItem.d.ts +0 -3
  102. package/Router/setHandleItem.js +0 -94
  103. package/Router/setHandleItem.js.map +0 -1
  104. package/Router/settings.d.ts +0 -12
  105. package/Router/settings.js +0 -74
  106. package/Router/settings.js.map +0 -1
  107. package/Router/start.d.ts +0 -3
  108. package/Router/start.js +0 -270
  109. package/Router/start.js.map +0 -1
  110. package/Router/vars.d.ts +0 -10
  111. package/Router/vars.js +0 -40
  112. package/Router/vars.js.map +0 -1
  113. package/Service.d.ts +0 -12
  114. package/Service.js +0 -20
  115. package/Service.js.map +0 -1
  116. package/cli/command/create.d.ts +0 -7
  117. package/cli/command/create.js.map +0 -1
  118. package/cli/command/index.d.ts +0 -7
  119. package/cli/command/index.js.map +0 -1
  120. package/cli/command/init.d.ts +0 -6
  121. package/cli/command/init.js.map +0 -1
  122. package/cli/command/start.d.ts +0 -6
  123. package/cli/command/start.js.map +0 -1
  124. package/cli/index.d.ts +0 -2
  125. package/cli/index.js.map +0 -1
  126. package/cli/opt/bind.d.ts +0 -3
  127. package/cli/opt/bind.js.map +0 -1
  128. package/cli/opt/index.d.ts +0 -16
  129. package/cli/opt/index.js.map +0 -1
  130. package/cli/opt/listen.d.ts +0 -3
  131. package/cli/opt/listen.js.map +0 -1
  132. package/cli/opt/path.d.ts +0 -3
  133. package/cli/opt/path.js.map +0 -1
  134. package/cli/opt/port.d.ts +0 -3
  135. package/cli/opt/port.js.map +0 -1
  136. package/cli/opt/show-router.d.ts +0 -3
  137. package/cli/opt/show-router.js.map +0 -1
  138. package/index.d.ts +0 -354
  139. package/index.js +0 -155
  140. package/index.js.map +0 -1
  141. package/setOptions.d.ts +0 -12
  142. package/setOptions.js +0 -60
  143. package/setOptions.js.map +0 -1
  144. package/starter.d.ts +0 -2
  145. package/starter.js.map +0 -1
  146. package/symbols.d.ts +0 -13
  147. package/symbols.js +0 -31
  148. package/symbols.js.map +0 -1
  149. package/util/index.d.ts +0 -5
  150. package/util/index.js +0 -92
  151. package/util/index.js.map +0 -1
  152. package/util/stream.d.ts +0 -19
  153. package/util/stream.js +0 -66
  154. package/util/stream.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * k99 v0.3.0-beta.1
3
+ * (c) 2019-2022 Fierflame
4
+ * @license MIT
5
+ */
6
+ class t{constructor(t){this.context=t,Object.defineProperties(this,Object.getOwnPropertyDescriptors(t))}async destroy(){}}t||(t={});var e=t;const n=Symbol("return"),r=Symbol("catch"),o=Symbol("finally"),s=Symbol("data"),i=Symbol("init"),u=Symbol("methods"),c=Symbol("test"),a=Symbol("options");function f(t){return t}let l,h,p;function d(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}l||(l={}),h||(h={}),p||(p={});function y(t){return"{"===t?"{":"}"===t?"}":"*"===t||"+"===t||"?"===t?7:5}function*g(t){let e=0;for(;e<t.length;){const r=e,o=t[e++];if("\\"===o){const n=t[e++];yield[6,r,n];continue}if(":"===o){for(;e<t.length&&("0"<=(n=t[e])&&n<="9"||"a"<=n&&n<="z"||"A"<=n&&n<="Z"||"_"===n);e++);if(r+1===e){yield[5,e,o];continue}yield[4,r,t.substring(r+1,e)];continue}if("("!==o){yield[y(o),r,o];continue}if("?"===t[e])throw new TypeError(`Pattern cannot start with "?" at ${e}`);let s=1;const i=["(?:"];for(;e<t.length;){const n=t[e++];if(i.push(n),"\\"!==n){if(")"!==n)if("["!==n){if("("===n&&(s++,i.push("?:"),"?"===t[e]&&(e+=2,":"!==t[e-1])))throw new TypeError("Invalid pattern group at "+(e-2))}else for(;e<t.length;){const n=t[e++];if(i.push(n),"]"===n)break;"\\"===n&&i.push(t[e++])}else if(s--,0===s)break}else i.push(t[e++])}if(s)throw new TypeError(`Unterminated pattern at ${r}`);if(!i.length)throw new TypeError(`Missing pattern at ${r}`);yield[3,r,i.join("")]}var n}function m([t,e,n]){switch(t){case"{":case"}":throw new TypeError(`Unexpected token '${t}' at ${e}`);case 3:throw new TypeError(`Unexpected pattern '(${n})' at ${e}`);case 4:throw new TypeError(`Unexpected name ':${n}' at ${e}`);case 5:throw new TypeError(`Unexpected char '${n}' at ${e}`);case 6:throw new TypeError(`Unexpected char '\\' at ${e}`);case 7:throw new TypeError(`Unexpected token '${n}' at ${e}`)}}function b(){throw new TypeError("Unexpected end of input")}function w(t){return"/"===t||"string"!=typeof t&&"/"===t.prefix}const $=/^\.+$/;function _(t){if("/"!==t[0])return!0;if(1===t.length)return!1;if(2!==t.length)return!0;const[,e]=t;return"string"!=typeof e||!$.test(e)}function*P(t){let e=["/"];for(const n of t)w(n)&&(_(e)&&(yield*e),e=[]),e.push(n);_(e)&&(yield*e)}function O(t){return[...P(function*(t){let e=0;function n(n){const r=t[e];if(!r)return;const[o,,s]=r;return o===n?(e++,s):void 0}function r(){let n="";for(let r=t[e];r;r=t[++e]){const[t,,e]=r;if(5===t)n+=e;else{if(6!==t)break;n+=e}}return n}const o=[];for(;e<t.length;){const s=n(5)||n(7)||"",i=n(4),u=n(3);if(i||u){let t="";s&&"-/.:".includes(s)?t=s:s&&o.push(s),o.length&&(yield o.join(""),o.length=0);const e=n(7)||"";yield{prefix:t,name:i||"",suffix:"",pattern:u,modifier:e};continue}const c=s||n(6)||n(7);if(c){if("/"!==c){o.push(c);continue}o.length&&(yield o.join(""),o.length=0),yield"/";continue}o.length&&(yield o.join(""),o.length=0);const a=t[e++];if(!a)break;"{"!==a[0]&&m(a);const f=r(),l=n(4)||"",h=n(3),p=r(),d=t[e++];d||b(),"}"!==d[0]&&m(d);const y=n(7)||"";yield{prefix:f,name:l||"",pattern:h,suffix:p,modifier:y,group:!0}}o.length&&(yield o.join(""))}([...g(t)]))]}function x(t){return decodeURIComponent(t).replace(/([.+*?=^!:${}()[\]|\\])/g,"\\$1")}function T(t,e){if("string"==typeof t)return x(t);const n=x(t.prefix),r=x(t.suffix),{name:o,modifier:s}=t;if(""===o)return`(?:${n}${r})${s}`;e.push(function({name:t,modifier:e,suffix:n,prefix:r}){if(!["*","+"].includes(e)||!r&&!n)return"number"==typeof t?(e,n,r)=>e[t+r]=decodeURIComponent(n):(e,n)=>e[t]=decodeURIComponent(n);const o=r+n;return"number"==typeof t?(e,n,r)=>{e[t+r]=n.split(o).map((t=>decodeURIComponent(t)))}:(e,n)=>{e[t]=n.split(o).map((t=>decodeURIComponent(t)))}}(t));const i=t.pattern||"[^/]+?";return n||r?"?"===s?`(?:${n}(${i})${r})?`:"+"===s?`${n}(${i}(?:${r}${n}${i})*)${r}`:"*"===s?`(?:${n}(${i}(?:${r}${n}${i})*)${r})?`:`${n}(${i})${r}`:`((?:${i})${s})`}function E(t,e,n,r){const o=Object.create(null);for(let r=1;r<e.length;r++){const s=e[r];if(void 0===s)continue;const i=t[r];i&&i(o,s,n)}return o.$path=r,o}function j(t,e,n){const r=e.exec(n);return r?E(t,r,0,r[0]):null}function k(t,e,n,r,o=0){const s=e.exec(n.substring(r.length));return s?E(t,s,o,`${r}${s[0]}`):null}const v=/^(\.+)\/+/;function A(t,e){if(!t||"*"===t){const t=(t,e)=>({$path:e});return t.keyLen=0,t}if("."===t){const t=(t,n)=>{"/"===n[n.length-1]&&(n=n.substring(0,n.length-1));const r=t[n.length];if(r&&("/"!==r||e&&t.length-1>n.length))return null;const o=Object.create(null);return o.$path=`${n}${r}`,o};return t.keyLen=0,t}const n="/"===t[0];let r=0;for(let e=v.exec(t);e;e=v.exec(t)){const[{length:n},{length:o}]=e;t=t.substring(n),r+=o-1}r&&(t=`/${t}`);const o=O(t),s=function(t){let e=0;for(const n of t)"string"!=typeof n&&(n.name||n.pattern&&(n.name=e++));return e}(o),i=[()=>{}],u=function(t,e,n){const r=e.map((e=>T(e,t)));return r.unshift("^"),r.push(n?"$":"(?=/|$)"),new RegExp(r.join(""),"i")}(i,o,e);if(n){const t=t=>j(i,u,t);return t.keyLen=s,t.isRoot=!0,t}if(r){const t=(...t)=>function(t,e,n,r,o,s=0){const i=o.split("/").filter(Boolean);return n>=i.length?j(t,e,r):k(t,e,r,`/${i.splice(0,i.length-n).join("/")}`,s)}(i,u,r,...t);return t.keyLen=s,t}const c=(...t)=>function(t,e,n,r,o=0){return"/"===r[r.length-1]&&(r=r.substring(0,r.length-1)),k(t,e,n,r,o)}(i,u,...t);return c.keyLen=s,c}function S(t,e,n,r={}){const o=function(t){return"string"==typeof t?[t]:Array.isArray(t)?t:["GET","POST","PUT","DELETE"]}(r.methods||n[u]);if(!o.length)return null;const{controller:s,test:i=n[c],plugin:a="",root:f="",absPath:l="",filePath:h="",name:p=n.name}=r,d={controller:s,root:f,absPath:l,filePath:h,handle:n,plugin:a,path:e.replace(/(.)\/+$/,"$1").replace(/\/+/g,"/"),methods:o,test:i,name:p,match:A(e,!0)};return t.push(d),d}const U=new Set(["GET","POST","PUT","DELETE","HEAD","OPTIONS"]);function C(t,e,n,r,o=""){n&&("object"==typeof n?function(t,e,n,r,o=""){for(const s of U){const i=n[s];"function"==typeof i&&S(t,e,i,{...r,test:i[c]||n[c],methods:[s],name:o||s})}}(t,e,n,r,o):"function"==typeof n&&function(t,e,n,r,o=""){const s={...r};delete s.test,delete s.methods;const i=S(t,e,n,{...s,name:o});if(!i)return;if(i.methods.includes("OPTIONS"))return;let{controller:u,test:c,plugin:f="",root:l="",absPath:h="",filePath:p=""}=r||{};e=e.replace(/(.)\/+$/,"$1").replace(/\/+/g,"/"),t.push({controller:u,root:l,absPath:h,filePath:p,handle:a,plugin:f,path:e,methods:["OPTIONS"],test:c,name:`${o}:OPTIONS`,match:A(e,!0)})}(t,e,n,r,o))}function R(t,e,{controller:n,plugin:r,root:o,filePath:s,absPath:i}={}){const u={controller:e.Controller||n,plugin:r,root:o,filePath:s,absPath:i};return C(t,"",e,u),u}const I={index:{methods:["GET"],path:""},create:{methods:["POST"],path:""},new:{methods:["GET"],path:"new"},show:{methods:["GET"],path:":id"},update:{methods:["PUT"],path:":id"},destroy:{methods:["DELETE"],path:":id"}};function z(t,e,n){n=R(t,e,n);for(const r in e){const o=e[r];if(o&&/^[a-z0-9][a-z0-9A-Z_-]*$/.test(r))if("function"==typeof o&&r in I){const e=I[r];S(t,e.path,o,{...n,test:o[c],methods:e.methods,name:r})}else C(t,`:id/${r}`,o,n,r)}}class L{static isControllerConstructor(t){return t===L||"function"==typeof t&&L.isPrototypeOf(t)}constructor(t){this.context=t,Object.defineProperties(this,Object.getOwnPropertyDescriptors(t))}[i](){}[s](){const t={...this.query},{body:e}=this;return e&&"object"==typeof e&&Object.assign(t,e),Object.assign(t,this.params),t}[a](){}[n](t){return this.write(t).then((e=>{if(!e&&"object"==typeof t)return this.responseType="application/json",this.write(JSON.stringify(t))})).then((()=>{}))}[r](t){return this.logs.error(t).then((()=>{}))}[o](){}}L||(L={});var D=L;function B(t,e,{plugin:n="",root:r="",absPath:o="",filePath:s=""}={}){const{prototype:i}=e;for(const u in i){if("function"!=typeof i[u])continue;if(!/^[a-z0-9][a-z0-9A-Z_-]*$/.test(u))continue;let c=u.replace(/(.)\/+$/,"$1").replace(/\/+/g,"/"),a=["GET","POST","PUT","DELETE"];if(u in I){const t=I[u];c=t.path?`${t.path}`:"",({methods:a}=t)}t.push({controller:e,root:r,absPath:o,filePath:s,handle:u,plugin:n,path:c,methods:a,name:u,match:A(c,!0)})}}class G{constructor(t=""){d(this,"disabled",!1),d(this,"__routes",[]),d(this,"guards",new Set),t=t.replace(/(.)\/+$/,"$1").replace(/\/+/g,"/"),this.path=t,this.match=A(t,!1)}route(t){const e=t instanceof G?t:new G(t);return this.__routes.push(e),e}verb(t,e,n,r){return"function"!=typeof e||("string"==typeof n?S(this.__routes,t,e,{...r,methods:[n]}):Array.isArray(n)?S(this.__routes,t,e,{...r,methods:n}):S(this.__routes,t,e,n)),this}get(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["GET"]}),this}post(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["POST"]}),this}put(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["PUT"]}),this}delete(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["DELETE"]}),this}head(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["HEAD"]}),this}options(t,e,n){return"function"!=typeof e||S(this.__routes,t,e,{...n,methods:["OPTIONS"]}),this}resource(t,e){return z(this.__routes,t,e),this}register(t,e){return D.isControllerConstructor(t)?(B(this.__routes,t,e),this):D.isControllerConstructor(t.default)?(B(this.__routes,t.default,e),this):(z(this.__routes,t,e),this)}collection(t,e){e=R(this.__routes,t,e);for(const n in t)/^[a-z0-9][a-z0-9A-Z_-]*$/.test(n)&&C(this.__routes,n,t[n],e,n);return this}member(t,e){e=R(this.__routes,t,e);for(const n in t)/^[a-z0-9][a-z0-9A-Z_-]*$/.test(n)&&C(this.__routes,`:id/${n}`,t[n],e);return this}}class H extends e{decide(){return!0}static async test(t){return!0}set(t,e){return this}get(t){}delete(t){return!1}has(t){return!1}*keys(){}clear(){}get size(){return 0}static set(t,e){return this}static get(t){}static delete(t){return!1}static has(t){return!1}static*keys(){}static clear(){}static get size(){return 0}}H||(H={});var Z=H;class q extends Error{static assert(t){if(t instanceof q)throw t}}class M{constructor(t,e,{author:n,license:r}={}){this.name=t,this.version="string"==typeof e?e:"",this.author="string"==typeof n?n:"",this.license="string"==typeof r?r:""}_initRouter(t){}initRouter(){if(this.__initRouterPromise)return this.__initRouterPromise;const{router:t}=this;return this.__initRouterPromise=Promise.resolve().then((()=>this._initRouter(t))).then((()=>t))}get router(){const t=new G;return Reflect.defineProperty(this,"router",{value:t,configurable:!0}),this.initRouter(),t}get disabled(){return this.router.disabled}set disabled(t){this.router.disabled=t}}function N(t,e,n){let r=e.get(n);return r||(r=new Map,e.set(n,r)),Object.defineProperties(t,{set:{configurable:!0,value(t,e){return r.set(t,e),this}},get:{configurable:!0,value:t=>r.get(t)},delete:{configurable:!0,value:t=>r.delete(t)},has:{configurable:!0,value:t=>r.has(t)},keys:{configurable:!0,value:()=>r.keys()},clear:{configurable:!0,value:()=>r.clear()},size:{configurable:!0,get:()=>r.size}}),t}async function V(t,e,n,r,o,s){if(!function(t,e){return!t.length||!!t.includes(e)}(t.methods,e))return null;const{match:i}=t,u=i(n,o,s);if(!u)return null;const c=i.isRoot?u:{...r,...u};return!1===await async function({test:t},e){if("function"!=typeof t)return!0;try{return await t(e)}catch{return!1}}(t,c)?null:c}async function F(t,e,n,r,o,s,i,u){if(t.disabled)return null;const{match:c}=t,a=c(n,i,u);if(!a)return null;const f=c.isRoot?a:{...o,...a};if(!async function(t,e,n){for(let r of t){const t=N(Object.create(r),e,r);try{if(!await t.test(n))return!1}catch{return!1}}return!0}([...t.guards],r,f))return null;const l=[...s,t],h=c.isRoot?c.keyLen:c.keyLen+u,p=a.$path;for(const o of Array.from(t.__routes)){if(o instanceof G){const t=await F(o,e,n,r,f,l,p,h);if(t)return t;continue}const t=await V(o,e,n,f,p,h);if(t)return{route:o,routers:l,params:t}}return null}function J(t){const e=new Uint8Array(t);let n=[],r=0;for(;r<e.length;){let t=0|e[r++];t>224?(t=(15&t)<<12,t|=(63&e[r++])<<6,t|=63&e[r++]):t>192&&(t=(31&t)<<12,t|=63&e[r++]),n.push(t)}return n.map((t=>String.fromCharCode(t))).join("")}function K(t,e=t.reduce(((t,e)=>t+e.byteLength),0)){if(1===t.length)return t[0];const n=new Uint8Array(e);let r=0;for(const e of t)for(let t of new Uint8Array(e))n[r++]=t;return n.buffer}function Q(t,e,n){if(!n){const n=K(e);return t?J(n):n}let r,o=0;for(;r=e.shift();){if(o+r.byteLength>n){const t=r.slice(0,n-o);o+=t.byteLength,e.unshift(r.slice(t.byteLength));break}if(o+=r.byteLength,o===n)break}const s=K(e,o);return t?J(s):s}function W(t){return"string"==typeof t?function(t){let e=[];for(let n of t.split("").map((t=>t.charCodeAt(0))))n<128?e.push(n):n<2048?(e.push(192|31&n>>6),e.push(128|63&n)):(e.push(224|15&n>>12),e.push(128|63&n>>6),e.push(128|63&n));return new Uint8Array(e).buffer}(t):ArrayBuffer.isView(t)?t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength):t}async function*X(t){if(t){if("string"==typeof t)return yield t;if("object"==typeof t){if(function(t){if(t instanceof ArrayBuffer)return!0;if(ArrayBuffer.isView(t))return!0;try{if(t instanceof SharedArrayBuffer)return!0}catch{}return!1}(t))return yield t;if(Symbol.asyncIterator in t||Symbol.iterator in t)for await(const e of t)yield*X(e)}}}function Y(t){if(!t)return()=>Promise.resolve(null);const e=[];let n=null;return async function(t,e){const n=[];let r=0,[o,s,i]=await e();for await(const u of X(t)){const t=W(u);if(n.push(t),r+=t.byteLength,o<=0)r=0,i(Q(s,n)),[o,s,i]=await e();else for(r>=o&&(r-=o,i(Q(s,n,o)),[o,s,i]=await e());r&&(o<=0||o<=r);){if(o<=0){r=0,i(Q(s,n)),[o,s,i]=await e();break}r-=o,i(Q(s,n,o)),[o,s,i]=await e()}}for(r&&(i(Q(s,n)),[o,s,i]=await e()),i(null);;)[o,s,i]=await e(),i(null)}(t,(function(){return new Promise((t=>{const r=e.shift();if(r)return t(r);n=e=>{n=null,t(e)}}))})),function(t=0,r=!1){return new Promise((o=>{t=Math.max(t,0),n?n([t,r,o]):e.push([t,r,o])}))}}const tt=/^(?:(?:https?:)?\/\/(?:(?:[^/?#]*@)?)(?:\d+|(?:\[[0-9a-f:]+\])|(?:\d{1,3}\.){3}\d{1,3}|(?:(?:[a-z0-9\u0100-\uffff]+-*)+\.)+[a-z]+)(?::\d+)?)?((?:\/?[^?#]*)?)((?:\?[^#]*)?)(?:#.*)?$/i;function et(t){const e=t.indexOf("=");return e<0?[decodeURIComponent(t),""]:[decodeURIComponent(t.substring(0,e)),decodeURIComponent(t.substring(e+1))]}function nt(t){const e={};for(const n of t.split("&").filter(Boolean)){const[t,r]=et(n);e[t]=t in e?[e[t],r].flat():[r]}return e}function rt(t,e,n,r={}){const[o,s]=function(t){const e=tt.exec(t);if(!e)return["/",""];let[,n,r]=e;const o=[];for(const t of n.replace(/^[\\/]+/,"").replace(/[\\/]+/g,"/").split("/"))"."!==t&&(".."!==t?o.push(t):o.pop());return[`/${o.join("/")}`,r]}(e);return{method:t,url:`${o}${s}`,headers:r,pathname:o,search:s,query:nt(s.substring(1)),read:"function"==typeof n?n:Y(n)}}function ot(t,n,r,o,s){if(i=o,!e.isPrototypeOf(i)){if("function"==typeof e)return o(r,...s);throw new TypeError("the object not is service class or function")}var i;let u=t.get(o);return u||(u=new o(r),t.set(o,u),Z.isPrototypeOf(o)&&N(u,n,o)),u.export(...s)}async function st(t,e,n){if(!n)return!1;if(e())return!0;if("string"==typeof n)return t(n);if("object"!=typeof n)return!1;if(function(t){if(t instanceof ArrayBuffer)return!0;if(ArrayBuffer.isView(t))return!0;try{if(t instanceof SharedArrayBuffer)return!0}catch{}return!1}(n))return t(n);if(!(Symbol.asyncIterator in n)&&!(Symbol.iterator in n))return!1;for await(const r of n){if(e())return!0;if(!await st(t,e,r))return!1}return!0}function it(t){return t.map((({name:t,value:e,expire:n,domain:r,path:o,secure:s,httpOnly:i})=>t&&[`${encodeURI(t)}=${encodeURI(e||"")}`,n&&`Expires=${n}`,r&&`Domain=${encodeURI(r)}`,o&&`Path=${encodeURI(o)}`,s&&"Secure",i&&"HttpOnly"].filter(Boolean).join("; "))).filter(Boolean)}const ut=/^(\[[^\]]+\]|^:):(\d+)$/;function ct(t,e,n,r,{method:o,url:s,pathname:i,search:u,query:c,read:a,headers:{...f}}){const[l,h,p,d]=function(){let t=[],e=!1,n=null,r=null;function o(){r&&r(t.shift()||null)}let s=null;function i(){return n}return[function(r){return new Promise((s=>{if(n||e)return s(!1);t.push([r,s]),o()}))},function(){return s||(s=new Promise((t=>{if(e)return t();n=t,o()}))),s},async function*(){try{for(;;){const e=await new Promise((e=>{const o=t.shift();return o?e(o):n?e(null):void(r=t=>{r=null,e(t)})}));if(e){const[t,n]=e;try{yield t,n(!0)}catch{n(!1)}}else if(i())break}}finally{e=!0;for(let e;e=t.shift();){const[,t]=e;t(!1)}const n=i();n&&n()}}(),()=>e]}();let y,g,m=!1,b=200,w={};function $(){m||(m=!0,g={get statusCode(){return b},get finished(){return d()},headers:Object.freeze({...w}),[Symbol.asyncIterator]:()=>p},y&&y(g))}Object.freeze(f);const _=f.host||"",P=ut.exec(_),[O,x]=P?[P[1],P[2]]:[_,""],T=[],E=function(t){let e={};for(const n of t.replace(/\s/g,"").split(";")){const t=n.split("=");e[decodeURIComponent(t.shift())]=decodeURIComponent(t.join("="))}return e}(f.cookie||""),j=new Map;let k,v,A=!1;function S(){return A||d()}const U={get body(){return k},set body(t){k=t},get data(){return v},app:t,settings:n?t.settings(n,!0):t.settings,assets:n?t.assets(n,!0):t.assets,logs:n?t.logs(n,!0):t.logs,plugin:n,params:e,url:s,method:o,pathname:i,search:u,query:c,headers:f,referer:f.referer||"",host:_,hostname:O,port:x,userAgent:f["user-agent"]||"",accept:(f.accept||"").split(/,\s*/).filter(Boolean),acceptLanguage:(f["accept-language"]||"").split(/,\s*/).filter(Boolean),cookies:E,read:a,get destroyed(){return A},get finished(){return d()},get headersSent(){return m},get status(){return b},set status(t){m||(b=t)},getCookie:t=>function*(t,e){const n=t;for(const t of n)e&&t.name!==e||(yield{...t})}(T,t),setCookie(t,e,{expire:n,domain:r,path:o,secure:s,httpOnly:i}={}){m||(T.push({name:t,value:e,expire:n,domain:r,path:o,secure:s,httpOnly:i}),w["set-cookie"]=it(T))},clearCookie(t,e){m||(!function(t,e,n,r){let o="Fri, 31 Dec 1999 16:00:00 GMT";if("string"==typeof n){if(!n)return;const{domain:e,path:s,secure:i,httpOnly:u}=!0!==r&&r||{};t.push({name:n,value:"delete",expire:o,domain:e,path:s,secure:i,httpOnly:u})}else{const{domain:s,path:i,secure:u,httpOnly:c}=n||{};if(t.length=0,r)for(let n in e)t.push({name:n,value:"delete",expire:o,domain:s,path:i,secure:u,httpOnly:c})}}(T,E,t,e),w["set-cookie"]=it(T))},service(t,...e){if(A)throw new Error("This controller is destroyed");return ot(j,r,U,t,e)},get requestType(){return f["content-type"]||""},get responseType(){return w["content-type"]||""},set responseType(t){m||(w["content-type"]=t)},hasHeader:t=>t in w,getHeaderNames:()=>Object.keys(w),getHeaders:()=>({...w}),getHeader:t=>w[t],removeHeader(t){m||delete w[t]},setHeader(t,e){m||(void 0===e?delete w[t]:w[t]=e)},write:async t=>!t||($(),!!S()||st(l,S,t)),exit(t){throw"number"==typeof t&&t>=100&&t<700&&(b=t),new q},transfer(t,e){throw b=e?301:302,m||(w.location=t),new q},request:(e,n,{headers:r,body:o}={})=>t.request(rt(e,n,o,r))};const C=new Promise((t=>{m&&g?t(g):y=t}));return{context:U,destroy:async function(){if(!A){A=!0;for(const e of[...j.values()])try{await e.destroy()}catch(e){t.logs.error(e)}return $(),h()}},setData:function(t){v=t},response:C,runGuards:async function(t){for(const e of t){let t=j.get(e);if(t||(t=new e(U),N(t,r,e),j.set(e,t)),!1===await t.decide())return!1}return!0}}}function at(t,e,r){if(!r.finished&&t&&r!==t&&e!==t)return e[n](t)}async function ft(t,e,n,u,c,f,l,h){try{if(await n[i](),!await c(function*(t){for(const{guards:e}of[...t])yield*e}(f)))return;const r=await n[s]();h(r),await async function(t,e,n,r){if("function"==typeof t)return at(await t.call(n,r),e,n);if("string"==typeof t){const r=e[t];if("function"!=typeof r)return;return at(await r.call(e),e,n)}if(t===a)return at(await e[a](),e,n)}(e.handle,n,u,r)}catch(e){await async function(t,e,n){if(!(n instanceof q))try{await e[r](n)}catch(n){t.logs.error(n)}}(t,n,e)}finally{try{await n[o]()}catch(e){t.logs.error(e)}await l()}}function lt(t,e,n,r,o,s){const{context:i,destroy:u,setData:c,response:a,runGuards:f}=ct(t,s,r.plugin,e,o),l=function(t,{controller:e}){if(D.isControllerConstructor(e))return e;for(const{controller:e}of[...t].reverse())if(D.isControllerConstructor(e))return e;return D}(n,r);return ft(t,r,new l(i),i,f,n,u,c),a}async function ht(t){const e=new Map,n=await F(this,t.method,t.pathname,e,{},[],"",0);return n?lt(this,e,n.routers,n.route,t,n.params):null}const pt=/^\.+$/;function dt(...t){const e=[];for(const n of t.map((t=>t.split("/"))).flat())n&&"."!==n&&(pt.test(n)?e.length=Math.max(0,e.length-n.length+1):e.push(n));return`${e.join("/")}`}function yt(t,e,n,r,o,s){return void 0===o?r:("~"===o?o=n:"~/"===o.substr(0,2)?o=`${n}/${o.substr(2)}`:"\\~"===o.substr(0,2)&&(o=o.substr(1)),gt(t,e,s?dt(o):n,s?"":o,r))}function gt(t,e,n="",r="",o=""){o=dt(o,r);const s=yt.bind(null,t,e,n,o);for(const e in t){const n=t[e];s[e]="function"==typeof n?(t,...e)=>n(dt(o,t),...e):n}if(!e)return s;for(const t in e)s[t]=e[t];return s}function mt(t){return"string"==typeof t?t:t instanceof Error?t.stack||`${t.name}:${t.message}`:String(t)}const bt=/(?:^|\/)(debug|error|warn|info)\/?$/,wt=/^\/?(debug|error|warn|info)(?:\/|$)/;async function $t(){return""}function _t(t,e){switch(console.group(`log @ ${t}`),function(t){const e=bt.exec(t);if(e)return e[1];const n=wt.exec(t);return n?n[1]:""}(t)){case"debug":console.debug(e);break;case"info":console.info(e);break;case"warn":console.warn(e);break;case"error":console.error(e);break;default:console.log(e)}console.groupEnd()}async function Pt(t,e){switch(t){case"debug":console.debug(e);break;case"info":console.info(e);break;case"warn":console.warn(e);break;case"error":console.error(e);break;default:_t(t,e)}return!0}async function Ot(){}function xt({read:t=$t,write:e=Pt,clear:n=Ot}={}){function r(t,n,r){return r&&(n=function(t,{tags:e,indent:n}){let r="";return e&&(Array.isArray(e)||(e=[e]),r=e.map((t=>`[${t}]`)).join(" ")),r=`${(new Date).toISOString()} ${r}`,t.includes("\n")?("number"==typeof n&&(n=Math.floor(n),isFinite(n)&&n>0&&(n=Array(n).fill(" ").join(""))),n&&"string"==typeof n||(n=" "),t=(t=`${r}\n${t}`).split("\n").join(`\n${n}`)):`${r} ${t}`}(n,r)),"\n"!==n[n.length-1]&&(n+="\n"),e(t,n)}return gt({read:function(e){return t(e)},write:r,clear:function(t){return n(t)}},{debug:async(t,e)=>r("debug",t,e),info:async(t,e)=>r("info",t,e),warn:async(t,e)=>r("warn",mt(t),e),error:async(t,e)=>r("error",mt(t),e)})}const Tt="[a-zA-Z][a-zA-Z0-9_-]*(?:.[a-zA-Z][a-zA-Z0-9_-]*)*",Et=new RegExp(`^/plugins/((?:@${Tt}/)?${Tt})/(.+)$`);function jt(t,e){if(!e)return null;const n=Et.exec(t);if(!n)return null;const r=e[n[1]];return r?[r,n[2]]:null}async function kt(){}async function vt(){return!1}async function At(){return null}async function St(){return!1}class Ut extends G{constructor({router:t,settingApi:e,assetApi:n,logApi:r,path:o}={},s=Object.create(null)){super(o),this.settings=function({read:t=kt,write:e=vt}={},n){return gt({read:async function(e){const r=await t(e);if(r)return r;const o=jt(e,n);if(!o)return null;const[s,i]=o;return s.readSettings(i)},write:function(t,n){return e(t,n)}},{})}(e,s),this.assets=function({read:t=At,write:e=St,delete:n=St,stat:r=At}={},o){return gt({read:async function(e,n){const r=await t(e,n);if(null!==r)return r;const s=jt(e,o);if(!s)return null;const[i,u]=s;return i.readAsset(u,n)},write:function(t,n){return e(t,n)},delete:function(t){return n(t)},stat:async function(t){return r(t)}},{})}(n,s),this.logs=xt(r),this.plugins=s;for(const t of Object.values(s))this.route(t.router);t instanceof G&&this.route(t),this.request=ht.bind(this)}}function Ct(t,e,n){return void 0===n&&delete t[e],t[e]=n,t}function Rt(t){return e=>Ct(e,c,t)}function It(...t){return e=>Ct(e,u,t.length?t:void 0)}function zt(t){return e=>Ct(e,a,t)}export{Ut as App,p as Assets,D as Controller,q as ExitSignal,Z as Guard,f as Handle,l as Log,M as Plugin,G as Router,e as Service,h as Settings,r as catchSymbol,s as dataSymbol,o as finallySymbol,i as initSymbol,u as methodsSymbol,a as optionsSymbol,n as returnSymbol,It as setMethods,zt as setOptions,Rt as setTest,c as testSymbol};