@senrijs/senri 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +377 -2
- package/dist/adapters/node/index.d.ts +14 -0
- package/dist/adapters/node/index.js +152 -0
- package/dist/adapters/serve/index.d.ts +28 -0
- package/dist/adapters/serve/index.js +137 -0
- package/dist/adapters/static/index.d.ts +9 -0
- package/dist/adapters/static/index.js +120 -0
- package/dist/src/app.d.ts +86 -0
- package/dist/src/app.js +325 -0
- package/dist/src/body.d.ts +3 -0
- package/dist/src/body.js +45 -0
- package/dist/src/compose.d.ts +22 -0
- package/dist/src/compose.js +80 -0
- package/dist/src/connection.d.ts +3 -0
- package/dist/src/connection.js +49 -0
- package/dist/src/context.d.ts +58 -0
- package/dist/src/context.js +235 -0
- package/dist/src/cookie.d.ts +18 -0
- package/dist/src/cookie.js +73 -0
- package/dist/src/dev/dashboard/access.d.ts +6 -0
- package/dist/src/dev/dashboard/access.js +46 -0
- package/dist/src/dev/dashboard/index.d.ts +27 -0
- package/dist/src/dev/dashboard/index.js +51 -0
- package/dist/src/dev/dashboard/links.d.ts +3 -0
- package/dist/src/dev/dashboard/links.js +8 -0
- package/dist/src/dev/dashboard/log.d.ts +20 -0
- package/dist/src/dev/dashboard/log.js +53 -0
- package/dist/src/dev/dashboard/mask.d.ts +4 -0
- package/dist/src/dev/dashboard/mask.js +43 -0
- package/dist/src/dev/dashboard/record.d.ts +37 -0
- package/dist/src/dev/dashboard/record.js +50 -0
- package/dist/src/dev/dashboard/routes.d.ts +7 -0
- package/dist/src/dev/dashboard/routes.js +121 -0
- package/dist/src/dev/dashboard/sse.d.ts +7 -0
- package/dist/src/dev/dashboard/sse.js +73 -0
- package/dist/src/dev/editor-url.d.ts +14 -0
- package/dist/src/dev/editor-url.js +61 -0
- package/dist/src/dev/editor.d.ts +6 -0
- package/dist/src/dev/editor.js +14 -0
- package/dist/src/dev/error-page.d.ts +3 -0
- package/dist/src/dev/error-page.js +69 -0
- package/dist/src/dev/explain.d.ts +2 -0
- package/dist/src/dev/explain.js +37 -0
- package/dist/src/dev/fallback.d.ts +3 -0
- package/dist/src/dev/fallback.js +40 -0
- package/dist/src/dev/hints.d.ts +6 -0
- package/dist/src/dev/hints.js +85 -0
- package/dist/src/dev/html.d.ts +1 -0
- package/dist/src/dev/html.js +14 -0
- package/dist/src/dev/index.d.ts +3 -0
- package/dist/src/dev/index.js +185 -0
- package/dist/src/dev/messages.d.ts +2 -0
- package/dist/src/dev/messages.js +6 -0
- package/dist/src/dev/not-found-page.d.ts +7 -0
- package/dist/src/dev/not-found-page.js +33 -0
- package/dist/src/dev/not-found.d.ts +3 -0
- package/dist/src/dev/not-found.js +15 -0
- package/dist/src/dev/page-data.d.ts +95 -0
- package/dist/src/dev/page-data.js +0 -0
- package/dist/src/dev/page.generated.d.ts +1 -0
- package/dist/src/dev/page.generated.js +3 -0
- package/dist/src/dev/pages.d.ts +4 -0
- package/dist/src/dev/pages.js +59 -0
- package/dist/src/dev/registry.d.ts +3 -0
- package/dist/src/dev/registry.js +7 -0
- package/dist/src/dev/render.d.ts +5 -0
- package/dist/src/dev/render.js +42 -0
- package/dist/src/dev/server-timing.d.ts +6 -0
- package/dist/src/dev/server-timing.js +45 -0
- package/dist/src/dev/source.d.ts +20 -0
- package/dist/src/dev/source.js +106 -0
- package/dist/src/dev/stack.d.ts +12 -0
- package/dist/src/dev/stack.js +93 -0
- package/dist/src/dev/suggest.d.ts +12 -0
- package/dist/src/dev/suggest.js +95 -0
- package/dist/src/dev/validation.d.ts +3 -0
- package/dist/src/dev/validation.js +47 -0
- package/dist/src/errors.d.ts +25 -0
- package/dist/src/errors.js +97 -0
- package/dist/src/group.d.ts +37 -0
- package/dist/src/group.js +75 -0
- package/dist/src/health.d.ts +9 -0
- package/dist/src/health.js +40 -0
- package/dist/src/index.d.ts +13 -0
- package/dist/src/index.js +12 -0
- package/dist/src/ip.d.ts +2 -0
- package/dist/src/ip.js +12 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.js +110 -0
- package/dist/src/matcher.d.ts +16 -0
- package/dist/src/matcher.js +86 -0
- package/dist/src/middleware/body-limit.d.ts +6 -0
- package/dist/src/middleware/body-limit.js +47 -0
- package/dist/src/middleware/cors.d.ts +10 -0
- package/dist/src/middleware/cors.js +79 -0
- package/dist/src/middleware/response.d.ts +2 -0
- package/dist/src/middleware/response.js +28 -0
- package/dist/src/middleware/secure-headers.d.ts +19 -0
- package/dist/src/middleware/secure-headers.js +46 -0
- package/dist/src/router.d.ts +30 -0
- package/dist/src/router.js +177 -0
- package/dist/src/runtime.d.ts +5 -0
- package/dist/src/runtime.js +55 -0
- package/dist/src/validate.d.ts +46 -0
- package/dist/src/validate.js +55 -0
- package/package.json +90 -4
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// このファイルは scripts/build-pages.ts が作る。手で書き換えないこと(bun run build:pages で作り直す)
|
|
2
|
+
// 中身は ui/ を Vue + Vite でビルドした1枚の HTML。利用者には Vue も Vite も入らない
|
|
3
|
+
export const PAGE_HTML = "<!doctype html>\n<html lang=\"ja\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <meta name=\"color-scheme\" content=\"light dark\" />\n <title>Senri</title>\n <!-- オフラインのときは theme.css の等幅のシステムフォントで表示される -->\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\" />\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin />\n <link\n rel=\"stylesheet\"\n href=\"https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700;800&family=Noto+Sans+JP:wght@400;500;700&display=swap\"\n />\n <script type=\"module\" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel=\"modulepreload\"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();function e(e){let t=Object.create(null);for(let n of e.split(`,`))t[n]=1;return e=>e in t}var t={},n=[],r=()=>{},i=()=>!1,a=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),o=e=>e.startsWith(`onUpdate:`),s=Object.assign,c=(e,t)=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)},l=Object.prototype.hasOwnProperty,u=(e,t)=>l.call(e,t),d=Array.isArray,f=e=>x(e)===`[object Map]`,p=e=>x(e)===`[object Set]`,m=e=>x(e)===`[object Date]`,h=e=>typeof e==`function`,g=e=>typeof e==`string`,_=e=>typeof e==`symbol`,v=e=>typeof e==`object`&&!!e,y=e=>(v(e)||h(e))&&h(e.then)&&h(e.catch),b=Object.prototype.toString,x=e=>b.call(e),ee=e=>x(e).slice(8,-1),S=e=>x(e)===`[object Object]`,C=e=>g(e)&&e!==`NaN`&&e[0]!==`-`&&``+parseInt(e,10)===e,te=e(`,key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted`),ne=e=>{let t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},re=/-\\w/g,w=ne(e=>e.replace(re,e=>e.slice(1).toUpperCase())),ie=/\\B([A-Z])/g,T=ne(e=>e.replace(ie,`-$1`).toLowerCase()),ae=ne(e=>e.charAt(0).toUpperCase()+e.slice(1)),oe=ne(e=>e?`on${ae(e)}`:``),E=(e,t)=>!Object.is(e,t),se=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},D=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},ce=e=>{let t=parseFloat(e);return isNaN(t)?e:t},le,ue=()=>le||=typeof globalThis<`u`?globalThis:typeof self<`u`?self:typeof window<`u`?window:typeof global<`u`?global:{};function O(e){if(d(e)){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=g(r)?me(r):O(r);if(i)for(let e in i)t[e]=i[e]}return t}if(g(e)||v(e))return e}var de=/;(?![^(]*\\))/g,fe=/:([^]+)/,pe=/\"(?:[^\"\\\\]|\\\\[^])*\"|'(?:[^'\\\\]|\\\\[^])*'|\\\\[^]|\\/\\*[^]*?\\*\\//g;function me(e){let t={};return e.replace(pe,e=>e.startsWith(`/*`)?``:e).split(de).forEach(e=>{if(e){let n=e.split(fe);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function k(e){let t=``;if(g(e))t=e;else if(d(e))for(let n=0;n<e.length;n++){let r=k(e[n]);r&&(t+=r+` `)}else if(v(e))for(let n in e)e[n]&&(t+=n+` `);return t.trim()}var he=e(`itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,playsinline,readonly`);function ge(e){return!!e||e===``}function _e(e,t,n){if(e.length!==t.length)return!1;let r=!0;for(let i=0;r&&i<e.length;i++)r=xe(e[i],t[i],n);return r}function ve(e,t,n){if(e.size!==t.size)return!1;let r=Array.from(t),i=new Uint8Array(r.length);for(let t of e){let e=-1;for(let a=0;a<r.length;a++)if(!i[a]&&xe(t,r[a],n)){e=a;break}if(e<0)return!1;i[e]=1}return!0}function ye(e,t,n){let r=f(e),i=f(t);if(r||i||(r=p(e),i=p(t),r||i))return r&&i?ve(e,t,n):!1;if(Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e){let i=e.hasOwnProperty(r),a=t.hasOwnProperty(r);if(i&&!a||!i&&a||!xe(e[r],t[r],n))return!1}return String(e)===String(t)}function be(e,t,n,r){n||=[new Map,new Map];let[i,a]=n;if(i.has(e)||a.has(t))return i.get(e)===t&&a.get(t)===e;i.set(e,t),a.set(t,e);let o=r(e,t,n);return i.delete(e),a.delete(t),o}function xe(e,t,n){if(e===t)return!0;let r=m(e),i=m(t);return r||i?r&&i?e.getTime()===t.getTime():!1:(r=_(e),i=_(t),r||i?e===t:(r=d(e),i=d(t),r||i?r&&i?be(e,t,n,_e):!1:(r=v(e),i=v(t),r||i?!r||!i?!1:be(e,t,n,ye):String(e)===String(t))))}function Se(e,t){return e.findIndex(e=>xe(e,t))}var Ce=e=>!!(e&&e.__v_isRef===!0),A=e=>g(e)?e:e==null?``:d(e)||v(e)&&(e.toString===b||!h(e.toString))?Ce(e)?A(e.value):JSON.stringify(e,we,2):String(e),we=(e,t)=>Ce(t)?we(e,t.value):f(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((e,[t,n],r)=>(e[Te(t,r)+` =>`]=n,e),{})}:p(t)?{[`Set(${t.size})`]:[...t.values()].map(e=>Te(e))}:_(t)?Te(t):v(t)&&!d(t)&&!S(t)?String(t):t,Te=(e,t=``)=>_(e)?`Symbol(${e.description??t})`:e,j,Ee=class{constructor(e=!1){this.detached=e,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this._warnOnRun=!0,this.__v_skip=!0,!e&&j&&(j.active?(this.parent=j,this.index=(j.scopes||(j.scopes=[])).push(this)-1):(this._active=!1,this._warnOnRun=!1))}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e<t;e++)n[e].pause()}for(e=0,t=this.effects.length;e<t;e++)this.effects[e].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let e,t;if(this.scopes){let n=this.scopes.slice();for(e=0,t=n.length;e<t;e++)n[e].resume()}let n=this.effects.slice();for(e=0,t=n.length;e<t;e++)n[e].resume()}}run(e){if(this._active){let t=j;try{return j=this,e()}finally{j=t}}}on(){++this._on===1&&(this.prevScope=j,j=this)}off(){if(this._on>0&&--this._on===0){if(j===this)j=this.prevScope;else{let e=j;for(;e;){if(e.prevScope===this){e.prevScope=this.prevScope;break}e=e.prevScope}}this.prevScope=void 0}}stop(e){if(this._active){this._active=!1;let t,n;for(t=0,n=this.effects.length;t<n;t++)this.effects[t].stop();for(this.effects.length=0,t=0,n=this.cleanups.length;t<n;t++)this.cleanups[t]();if(this.cleanups.length=0,this.scopes){let e=this.scopes.slice();for(t=0,n=e.length;t<n;t++)e[t].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!e){let e=this.parent.scopes.pop();e&&e!==this&&(this.parent.scopes[this.index]=e,e.index=this.index)}this.parent=void 0}}};function De(){return j}var M,Oe=new WeakSet,ke=class{constructor(e){this.fn=e,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,j&&(j.active?j.effects.push(this):this.flags&=-2)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Oe.has(this)&&(Oe.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ne(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ke(this),Ie(this);let e=M,t=He;M=this,He=!0;try{return this.fn()}finally{Le(this),M=e,He=t,this.flags&=-3}}stop(){if(this.flags&1){for(let e=this.deps;e;e=e.nextDep)Be(e);this.deps=this.depsTail=void 0,Ke(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Oe.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Re(this)&&this.run()}get dirty(){return Re(this)}},Ae=0,je,Me;function Ne(e,t=!1){e.flags|=8,t?(e.next=Me,Me=e):(e.next=je,je=e)}function Pe(){Ae++}function Fe(){if(--Ae>0)return;if(Me){let e=Me;for(Me=void 0;e;){let t=e.next;e.next=void 0,e.flags&=-9,e=t}}let e;for(;je;){let t=je;for(je=void 0;t;){let n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(t){e||=t}t=n}}if(e)throw e}function Ie(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Le(e){let t,n=e.depsTail,r=n;for(;r;){let e=r.prevDep;r.version===-1?(r===n&&(n=e),Be(r),Ve(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=e}e.deps=t,e.depsTail=n}function Re(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ze(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ze(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===qe)||(e.globalVersion=qe,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Re(e))))return;e.flags|=2;let t=e.dep,n=M,r=He;M=e,He=!0;try{Ie(e);let n=e.fn(e._value);(t.version===0||E(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(e){throw t.version++,e}finally{M=n,He=r,Le(e),e.flags&=-3}}function Be(e,t=!1){let{dep:n,prevSub:r,nextSub:i}=e;if(r&&(r.nextSub=i,e.prevSub=void 0),i&&(i.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let e=n.computed.deps;e;e=e.nextDep)Be(e,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ve(e){let{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}var He=!0,Ue=[];function We(){Ue.push(He),He=!1}function Ge(){let e=Ue.pop();He=e===void 0||e}function Ke(e){let{cleanup:t}=e;if(e.cleanup=void 0,t){let e=M;M=void 0;try{t()}finally{M=e}}}var qe=0,Je=class{constructor(e,t){this.sub=e,this.dep=t,this.version=t.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}},Ye=class{constructor(e){this.computed=e,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(e){if(!M||!He||M===this.computed)return;let t=this.activeLink;if(t===void 0||t.sub!==M)t=this.activeLink=new Je(M,this),M.deps?(t.prevDep=M.depsTail,M.depsTail.nextDep=t,M.depsTail=t):M.deps=M.depsTail=t,Xe(t);else if(t.version===-1&&(t.version=this.version,t.nextDep)){let e=t.nextDep;e.prevDep=t.prevDep,t.prevDep&&(t.prevDep.nextDep=e),t.prevDep=M.depsTail,t.nextDep=void 0,M.depsTail.nextDep=t,M.depsTail=t,M.deps===t&&(M.deps=e)}return t}trigger(e){this.version++,qe++,this.notify(e)}notify(e){Pe();try{for(let e=this.subs;e;e=e.prevSub)e.sub.notify()&&e.sub.dep.notify()}finally{Fe()}}};function Xe(e){if(e.dep.sc++,e.sub.flags&4){let t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let e=t.deps;e;e=e.nextDep)Xe(e)}let n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}var Ze=new WeakMap,Qe=Symbol(``),$e=Symbol(``),et=Symbol(``);function N(e,t,n){if(He&&M){let t=Ze.get(e);t||Ze.set(e,t=new Map);let r=t.get(n);r||(t.set(n,r=new Ye),r.map=t,r.key=n),r.track()}}function tt(e,t,n,r,i,a){let o=Ze.get(e);if(!o){qe++;return}let s=e=>{e&&e.trigger()};if(Pe(),t===`clear`)o.forEach(s);else{let i=d(e),a=i&&C(n);if(i&&n===`length`){let e=Number(r);o.forEach((t,n)=>{(n===`length`||n===et||!_(n)&&n>=e)&&s(t)})}else switch((n!==void 0||o.has(void 0))&&s(o.get(n)),a&&s(o.get(et)),t){case`add`:i?a&&s(o.get(`length`)):(s(o.get(Qe)),f(e)&&s(o.get($e)));break;case`delete`:i||(s(o.get(Qe)),f(e)&&s(o.get($e)));break;case`set`:f(e)&&s(o.get(Qe))}}Fe()}function nt(e){let t=P(e);return t===e||(N(t,`iterate`,et),Ht(e))?t:Vt(e)?Bt(e)?t.map(e=>Gt(F(e))):t.map(Gt):t.map(F)}function rt(e){return N(e=P(e),`iterate`,et),e}function it(e,t){return Vt(e)?Gt(Bt(e)?F(t):t):F(t)}var at={__proto__:null,[Symbol.iterator](){return ot(this,Symbol.iterator,e=>it(this,e))},concat(...e){return nt(this).concat(...e.map(e=>d(e)?nt(e):e))},entries(){return ot(this,`entries`,e=>(e[1]=it(this,e[1]),e))},every(e,t){return lt(this,`every`,e,t,void 0,arguments)},filter(e,t){return lt(this,`filter`,e,t,e=>e.map(e=>it(this,e)),arguments)},find(e,t){return lt(this,`find`,e,t,e=>it(this,e),arguments)},findIndex(e,t){return lt(this,`findIndex`,e,t,void 0,arguments)},findLast(e,t){return lt(this,`findLast`,e,t,e=>it(this,e),arguments)},findLastIndex(e,t){return lt(this,`findLastIndex`,e,t,void 0,arguments)},forEach(e,t){return lt(this,`forEach`,e,t,void 0,arguments)},includes(...e){return dt(this,`includes`,e)},indexOf(...e){return dt(this,`indexOf`,e)},join(e){return nt(this).join(e)},lastIndexOf(...e){return dt(this,`lastIndexOf`,e)},map(e,t){return lt(this,`map`,e,t,void 0,arguments)},pop(){return ft(this,`pop`)},push(...e){return ft(this,`push`,e)},reduce(e,...t){return ut(this,`reduce`,e,t)},reduceRight(e,...t){return ut(this,`reduceRight`,e,t)},shift(){return ft(this,`shift`)},some(e,t){return lt(this,`some`,e,t,void 0,arguments)},splice(...e){return ft(this,`splice`,e)},toReversed(){return nt(this).toReversed()},toSorted(e){return nt(this).toSorted(e)},toSpliced(...e){return nt(this).toSpliced(...e)},unshift(...e){return ft(this,`unshift`,e)},values(){return ot(this,`values`,e=>it(this,e))}};function ot(e,t,n){let r=rt(e),i=r[t],a=i.call(r);if(r!==e&&!Ht(e)){if(a[Symbol.toStringTag]===`Array Iterator`){let e=Object.create(Object.getPrototypeOf(a));return e.next=()=>st(a.next(),n),i!==ct[t]&&Object.defineProperties(e,{return:{get(){let e=a.return;return typeof e==`function`?e.bind(a):e}},throw:{get(){let e=a.throw;return typeof e==`function`?e.bind(a):e}}}),e}a._next=a.next,a.next=()=>st(a._next(),n)}return a}function st(e,t){return e.done||(e.value=t(e.value)),e}var ct=Array.prototype;function lt(e,t,n,r,i,a){let o=rt(e),s=o!==e&&!Ht(e),c=o[t];if(c!==ct[t]){let t=c.apply(e,a);return s?F(t):t}let l=n;o!==e&&(s?l=function(t,r){return n.call(this,it(e,t),r,e)}:n.length>2&&(l=function(t,r){return n.call(this,t,r,e)}));let u=c.call(o,l,r);return s&&i?i(u):u}function ut(e,t,n,r){let i=rt(e),a=i!==e&&!Ht(e),o=n,s=!1;i!==e&&(a?(s=r.length===0,o=function(t,r,i){return s&&(s=!1,t=it(e,t)),n.call(this,t,it(e,r),i,e)}):n.length>3&&(o=function(t,r,i){return n.call(this,t,r,i,e)}));let c=i[t](o,...r);return s?it(e,c):c}function dt(e,t,n){let r=P(e);N(r,`iterate`,et);let i=r[t](...n);return(i===-1||i===!1)&&Ut(n[0])?(n[0]=P(n[0]),r[t](...n)):i}function ft(e,t,n=[]){We(),Pe();let r=P(e)[t].apply(e,n);return Fe(),Ge(),r}var pt=e(`__proto__,__v_isRef,__isVue`),mt=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==`arguments`&&e!==`caller`).map(e=>Symbol[e]).filter(_));function ht(e){_(e)||(e=String(e));let t=P(this);return N(t,`has`,e),t.hasOwnProperty(e)}var gt=class{constructor(e=!1,t=!1){this._isReadonly=e,this._isShallow=t}get(e,t,n){if(t===`__v_skip`)return e.__v_skip;let r=this._isReadonly,i=this._isShallow;if(t===`__v_isReactive`)return!r;if(t===`__v_isReadonly`)return r;if(t===`__v_isShallow`)return i;if(t===`__v_raw`)return n===(r?i?Pt:Nt:i?Mt:jt).get(e)||Object.getPrototypeOf(e)===Object.getPrototypeOf(n)?e:void 0;let a=d(e);if(!r){let e;if(a&&(e=at[t]))return e;if(t===`hasOwnProperty`)return ht}let o=Reflect.get(e,t,I(e)?e:n);if((_(t)?mt.has(t):pt(t))||(r||N(e,`get`,t),i))return o;if(I(o)){let e=a&&C(t)?o:o.value;return r&&v(e)?Rt(e):e}return v(o)?r?Rt(o):It(o):o}},_t=class extends gt{constructor(e=!1){super(!1,e)}set(e,t,n,r){let i=e[t],a=d(e)&&C(t);if(!this._isShallow){let e=Vt(i);if(!Ht(n)&&!Vt(n)&&(i=P(i),n=P(n)),!a&&I(i)&&!I(n))return e||(i.value=n),!0}let o=a?Number(t)<e.length:u(e,t),s=Reflect.set(e,t,n,I(e)?e:r);return e===P(r)&&s&&(o?E(n,i)&&tt(e,`set`,t,n,i):tt(e,`add`,t,n)),s}deleteProperty(e,t){let n=u(e,t),r=e[t],i=Reflect.deleteProperty(e,t);return i&&n&&tt(e,`delete`,t,void 0,r),i}has(e,t){let n=Reflect.has(e,t);return _(t)&&mt.has(t)||N(e,`has`,t),n}ownKeys(e){return N(e,`iterate`,d(e)?`length`:Qe),Reflect.ownKeys(e)}},vt=class extends gt{constructor(e=!1){super(!0,e)}set(e,t){return!0}deleteProperty(e,t){return!0}},yt=new _t,bt=new vt,xt=new _t(!0),St=e=>e,Ct=e=>Reflect.getPrototypeOf(e);function wt(e,t,n){return function(...r){let i=this.__v_raw,a=P(i),o=f(a),c=e===`entries`||e===Symbol.iterator&&o,l=e===`keys`&&o,u=i[e](...r),d=n?St:t?Gt:F;return!t&&N(a,`iterate`,l?$e:Qe),s(Object.create(u),{next(){let{value:e,done:t}=u.next();return t?{value:e,done:t}:{value:c?[d(e[0]),d(e[1])]:d(e),done:t}}})}}function Tt(e){return function(...t){return e===`delete`?!1:e===`clear`?void 0:this}}function Et(e,t){let n={get(n){let r=this.__v_raw,i=P(r),a=P(n);e||(E(n,a)&&N(i,`get`,n),N(i,`get`,a));let{has:o}=Ct(i),s=t?St:e?Gt:F;if(o.call(i,n))return s(r.get(n));if(o.call(i,a))return s(r.get(a));r!==i&&r.get(n)},get size(){let t=this.__v_raw;return!e&&N(P(t),`iterate`,Qe),t.size},has(t){let n=this.__v_raw,r=P(n),i=P(t);return e||(E(t,i)&&N(r,`has`,t),N(r,`has`,i)),t===i?n.has(t):n.has(t)||n.has(i)},forEach(n,r){let i=this,a=i.__v_raw,o=P(a),s=t?St:e?Gt:F;return!e&&N(o,`iterate`,Qe),a.forEach((e,t)=>n.call(r,s(e),s(t),i))}};return s(n,e?{add:Tt(`add`),set:Tt(`set`),delete:Tt(`delete`),clear:Tt(`clear`)}:{add(e){let n=P(this),r=Ct(n),i=P(e),a=!t&&!Ht(e)&&!Vt(e)?i:e;return r.has.call(n,a)||E(e,a)&&r.has.call(n,e)||E(i,a)&&r.has.call(n,i)||(n.add(a),tt(n,`add`,a,a)),this},set(e,n){t||Ht(n)||Vt(n)||(n=P(n));let r=P(this),{has:i,get:a}=Ct(r),o=i.call(r,e);o||=(e=P(e),i.call(r,e));let s=a.call(r,e);return r.set(e,n),o?E(n,s)&&tt(r,`set`,e,n,s):tt(r,`add`,e,n),this},delete(e){let t=P(this),{has:n,get:r}=Ct(t),i=n.call(t,e);i||=(e=P(e),n.call(t,e));let a=r?r.call(t,e):void 0,o=t.delete(e);return i&&tt(t,`delete`,e,void 0,a),o},clear(){let e=P(this),t=e.size!==0,n=e.clear();return t&&tt(e,`clear`,void 0,void 0,void 0),n}}),[`keys`,`values`,`entries`,Symbol.iterator].forEach(r=>{n[r]=wt(r,e,t)}),n}function Dt(e,t){let n=Et(e,t);return(r,i,a)=>i===`__v_isReactive`?!e:i===`__v_isReadonly`?e:i===`__v_isShallow`?t:i===`__v_raw`?r:Reflect.get(u(n,i)&&i in r?n:r,i,a)}var Ot={get:Dt(!1,!1)},kt={get:Dt(!1,!0)},At={get:Dt(!0,!1)},jt=new WeakMap,Mt=new WeakMap,Nt=new WeakMap,Pt=new WeakMap;function Ft(e){switch(e){case`Object`:case`Array`:return 1;case`Map`:case`Set`:case`WeakMap`:case`WeakSet`:return 2;default:return 0}}function It(e){return Vt(e)?e:zt(e,!1,yt,Ot,jt)}function Lt(e){return zt(e,!1,xt,kt,Mt)}function Rt(e){return zt(e,!0,bt,At,Nt)}function zt(e,t,n,r,i){if(!v(e)||e.__v_raw&&!(t&&e.__v_isReactive)||e.__v_skip||!Object.isExtensible(e))return e;let a=i.get(e);if(a)return a;let o=Ft(ee(e));if(o===0)return e;let s=new Proxy(e,o===2?r:n);return i.set(e,s),s}function Bt(e){return Vt(e)?Bt(e.__v_raw):!!(e&&e.__v_isReactive)}function Vt(e){return!!(e&&e.__v_isReadonly)}function Ht(e){return!!(e&&e.__v_isShallow)}function Ut(e){return e?!!e.__v_raw:!1}function P(e){let t=e&&e.__v_raw;return t?P(t):e}function Wt(e){return!u(e,`__v_skip`)&&Object.isExtensible(e)&&D(e,`__v_skip`,!0),e}var F=e=>v(e)?It(e):e,Gt=e=>v(e)?Rt(e):e;function I(e){return e?e.__v_isRef===!0:!1}function L(e){return Kt(e,!1)}function Kt(e,t){return I(e)?e:new qt(e,t)}var qt=class{constructor(e,t){this.dep=new Ye,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=t?e:P(e),this._value=t?e:F(e),this.__v_isShallow=t}get value(){return this.dep.track(),this._value}set value(e){let t=this._rawValue,n=this.__v_isShallow||Ht(e)||Vt(e);e=n?e:P(e),E(e,t)&&(this._rawValue=e,this._value=n?e:F(e),this.dep.trigger())}};function R(e){return I(e)?e.value:e}var Jt={get:(e,t,n)=>t===`__v_raw`?e:R(Reflect.get(e,t,n)),set:(e,t,n,r)=>{let i=e[t];return I(i)&&!I(n)?(i.value=n,!0):Reflect.set(e,t,n,r)}};function Yt(e){return Bt(e)?e:new Proxy(e,Jt)}var Xt=class{constructor(e){this.__v_isRef=!0,this._value=void 0;let t=this.dep=new Ye,{get:n,set:r}=e(t.track.bind(t),t.trigger.bind(t));this._get=n,this._set=r}get value(){return this._value=this._get()}set value(e){this._set(e)}};function Zt(e){return new Xt(e)}var Qt=class{constructor(e,t,n){this.fn=e,this.setter=t,this._value=void 0,this.dep=new Ye(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=qe-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!t,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&M!==this)return Ne(this,!0),!0}get value(){let e=this.dep.track();return ze(this),e&&(e.version=this.dep.version),this._value}set value(e){this.setter&&this.setter(e)}};function $t(e,t,n=!1){let r,i;return h(e)?r=e:(r=e.get,i=e.set),new Qt(r,i,n)}var en={},tn=new WeakMap,nn=void 0;function rn(e,t=!1,n=nn){if(n){let t=tn.get(n);t||tn.set(n,t=[]),t.push(e)}}function an(e,n,i=t){let{immediate:a,deep:o,once:s,scheduler:l,augmentJob:u,call:f}=i,p=e=>o?e:Ht(e)||o===!1||o===0?on(e,1):on(e),m,g,_,v,y=!1,b=!1;if(I(e)?(g=()=>e.value,y=Ht(e)):Bt(e)?(g=()=>p(e),y=!0):d(e)?(b=!0,y=e.some(e=>Bt(e)||Ht(e)),g=()=>e.map(e=>{if(I(e))return e.value;if(Bt(e))return p(e);if(h(e))return f?f(e,2):e()})):g=h(e)?n?f?()=>f(e,2):e:()=>{if(_){We();try{_()}finally{Ge()}}let t=nn;nn=m;try{return f?f(e,3,[v]):e(v)}finally{nn=t}}:r,n&&o){let e=g,t=o===!0?1/0:o;g=()=>on(e(),t)}let x=De(),ee=()=>{m.stop(),x&&x.active&&c(x.effects,m)};if(s&&n){let e=n;n=(...t)=>{try{return e(...t)}finally{ee()}}}let S=b?Array(e.length).fill(en):en,C=e=>{if(m.flags&1&&(m.dirty||e)){if(n){let t=m.run();if(e||o||y||(b?t.some((e,t)=>E(e,S[t])):E(t,S))){let e=nn;We();try{_&&_(),nn=m;let e=[t,S===en?void 0:b&&S[0]===en?[]:S,v];S=t,f?f(n,3,e):n(...e)}finally{nn=e,Ge()}}}else m.run()}};return u&&u(C),m=new ke(g),m.scheduler=l?()=>l(C,!1):C,v=e=>rn(e,!1,m),_=m.onStop=()=>{let e=tn.get(m);if(e){if(f)f(e,4);else for(let t of e)t();tn.delete(m)}},n?a?C(!0):S=m.run():l?l(C.bind(null,!0),!0):m.run(),ee.pause=m.pause.bind(m),ee.resume=m.resume.bind(m),ee.stop=ee,ee}function on(e,t=1/0,n){if(t<=0||!v(e)||e.__v_skip||(n||=new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,I(e))on(e.value,t,n);else if(d(e))for(let r=0;r<e.length;r++)on(e[r],t,n);else if(p(e)||f(e))e.forEach(e=>{on(e,t,n)});else if(S(e)){for(let r in e)on(e[r],t,n);for(let r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&on(e[r],t,n)}return e}function sn(e,t,n,r){try{return r?e(...r):e()}catch(e){ln(e,t,n)}}function cn(e,t,n,r){if(h(e)){let i=sn(e,t,n,r);return i&&y(i)&&i.catch(e=>{ln(e,t,n)}),i}if(d(e)){let i=[];for(let a=0;a<e.length;a++)i.push(cn(e[a],t,n,r));return i}}function ln(e,n,r,i=!0){let a=n?n.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:s}=n&&n.appContext.config||t;if(n){let t=n.parent,i=n.proxy,a=`https://vuejs.org/error-reference/#runtime-${r}`;for(;t;){let n=t.ec;if(n){for(let t=0;t<n.length;t++)if(n[t](e,i,a)===!1)return}t=t.parent}if(o){We(),sn(o,null,10,[e,i,a]),Ge();return}}un(e,r,a,i,s)}function un(e,t,n,r=!0,i=!1){if(i)throw e;console.error(e)}var z=[],dn=-1,fn=[],pn=null,mn=0,hn=Promise.resolve(),gn=null;function _n(e){let t=gn||hn;return e?t.then(this?e.bind(this):e):t}function vn(e){let t=dn+1,n=z.length;for(;t<n;){let r=t+n>>>1,i=z[r],a=En(i);a<e||a===e&&i.flags&2?t=r+1:n=r}return t}function yn(e){if(!(e.flags&1)){let t=En(e),n=z[z.length-1];!n||!(e.flags&2)&&t>=En(n)?z.push(e):z.splice(vn(t),0,e),e.flags|=1,bn()}}function bn(){gn||=hn.then(Dn)}function xn(e){if(!d(e))pn&&e.id===-1?pn.splice(mn+1,0,e):e.flags&1||(fn.push(e),e.flags|=1);else for(let t=0;t<e.length;t++)fn.push(e[t]);bn()}function Sn(e,t,n,r=dn+1){for(;r<z.length;r++){let n=z[r];if(n&&n.flags&2){if(e&&n.id!==e.uid||t!==void 0&&!(n.id>=t))continue;z.splice(r,1),r=e?r-1:dn,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function Cn(e,t,n=0){if(fn.length){let e=fn,r=0;if(t){e=[];for(let i=0;i<fn.length;i++){let a=fn[i];(a.i===void 0?t.has(a):!a.i||a.i.uid<n)?fn[r++]=a:e.push(a)}}let i=[...new Set(e)].sort((e,t)=>En(e)-En(t));if(fn.length=r,pn){for(let e=0;e<i.length;e++)pn.push(i[e]);return}for(pn=i,mn=0;mn<pn.length;mn++){let e=pn[mn];e.flags&4&&(e.flags&=-2),e.flags&8||e(),e.flags&=-2}pn=null,mn=0}}var wn=!1;function Tn(e,t){if(wn){e();return}let n=t===void 0?void 0:new Set(fn);e(),wn=!0;try{Sn(void 0,t),Cn(void 0,n,t)}finally{wn=!1}}var En=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Dn(e){try{for(dn=0;dn<z.length;dn++){let e=z[dn];e&&!(e.flags&8)&&(e.flags&4&&(e.flags&=-2),sn(e,e.i,e.i?15:14),e.flags&4||(e.flags&=-2))}}finally{for(;dn<z.length;dn++){let e=z[dn];e&&(e.flags&=-2)}dn=-1,z.length=0,Cn(e),gn=null,(z.length||fn.length)&&Dn(e)}}var B=null,On=null;function kn(e){let t=B;return B=e,On=e&&e.type.__scopeId||null,t}function An(e,t=B,n){if(!t||e._n)return e;let r=(...n)=>{r._d&&Gi(-1);let i=kn(t),a=Hi.length,o;try{o=e(...n)}finally{for(let e=Hi.length;e>a;e--)Ui();kn(i),r._d&&Gi(1)}return o};return r._n=!0,r._c=!0,r._d=!0,r}function jn(e,n){if(B===null)return e;let r=wa(B),i=e.dirs||=[];for(let e=0;e<n.length;e++){let[a,o,s,c=t]=n[e];a&&(h(a)&&(a={mounted:a,updated:a}),a.deep&&on(o),i.push({dir:a,instance:r,value:o,oldValue:void 0,arg:s,modifiers:c}))}return e}function Mn(e,t,n,r){let i=e.dirs,a=t&&t.dirs;for(let o=0;o<i.length;o++){let s=i[o];a&&(s.oldValue=a[o].value);let c=s.dir[r];c&&(We(),cn(c,n,8,[e.el,s,e,t]),Ge())}}function Nn(e,t){if($){let n=$.provides,r=$.parent&&$.parent.provides;r===n&&(n=$.provides=Object.create(r)),n[e]=t}}function Pn(e,t,n=!1){let r=da();if(r||Yr){let i=Yr?Yr._context.provides:r?r.parent==null||r.ce?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(i&&e in i)return i[e];if(arguments.length>1)return n&&h(t)?t.call(r&&r.proxy):t}}var Fn=Symbol.for(`v-scx`),In=()=>Pn(Fn);function Ln(e,t){return zn(e,null,{flush:`sync`})}function Rn(e,t,n){return zn(e,t,n)}function zn(e,n,i=t){let{immediate:a,deep:o,flush:c,once:l}=i,u=s({},i),d=n&&a||!n&&c!==`post`,f;if(_a){if(c===`sync`){let e=In();f=e.__watcherHandles||=[]}else if(!d){let e=()=>{};return e.stop=r,e.resume=r,e.pause=r,e}}let p=$;u.call=(e,t,n)=>cn(e,p,t,n);let m=!1;c===`post`?u.scheduler=e=>{e.i=p,U(e,p&&p.suspense)}:c!==`sync`&&(m=!0,u.scheduler=(e,t)=>{t?e():yn(e)}),u.augmentJob=e=>{n&&(e.flags|=4),m&&(e.flags|=2,p&&(e.id=p.uid,e.i=p))};let h=an(e,n,u);return _a&&(f?f.push(h):d&&h()),h}function Bn(e,t,n){let r=this.proxy,i=g(e)?e.includes(`.`)?Vn(r,e):()=>r[e]:e.bind(r,r),a;h(t)?a=t:(a=t.handler,n=t);let o=ma(this),s=zn(i,a.bind(r),n);return o(),s}function Vn(e,t){let n=t.split(`.`);return()=>{let t=e;for(let e=0;e<n.length&&t;e++)t=t[n[e]];return t}}var Hn=Symbol(`_vte`),Un=e=>e.__isTeleport,Wn=Symbol(`_leaveCb`);function Gn(e){let t=e[0];if(e.length>1){for(let n of e)if(n.type!==G){t=n;break}}return t}function Kn(e){if(!nr(e))return Un(e.type)&&e.children?Gn(e.children):e;if(e.component)return e.component.subTree;let{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&h(n.default))return n.default()}}function qn(e,t){if(e.shapeFlag&6&&e.component){e.transition=t;let n=e.component.subTree;qn(Un(n.type)&&Kn(n)||n,t)}else if(e.shapeFlag&128)e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback);else if(e.transition=t,e.type===W&&d(e.children)){let n=ri(e.children,!1);n&&qn(n,t)}}function Jn(e){if(e.component)return Jn(e.component.subTree);if(e.type===W){let t=d(e.children)&&ri(e.children,!1);return t?Jn(t):void 0}if(e.type!==G)return e}function Yn(e,t){return h(e)?s({name:e.name},t,{setup:e}):e}function Xn(e){e.ids=[e.ids[0]+e.ids[2]+++`-`,0,0]}function Zn(e,t){let n;return!!((n=Object.getOwnPropertyDescriptor(e,t))&&!n.configurable)}var Qn=new WeakMap;function $n(e,n,r,a,o=!1){if(d(e)){e.forEach((e,t)=>$n(e,n&&(d(n)?n[t]:n),r,a,o));return}if(tr(a)&&!o){a.shapeFlag&512&&a.type.__asyncResolved&&a.component.subTree.component&&$n(e,n,r,a.component.subTree);return}let s=a.shapeFlag&4?wa(a.component):a.el,l=o?null:s,{i:f,r:p}=e,m=n&&n.r,_=f.refs===t?f.refs={}:f.refs,v=f.setupState,y=P(v),b=v===t?i:e=>!Zn(_,e)&&u(y,e),x=(e,t)=>!(t&&Zn(_,t));if(m!=null&&m!==p){if(er(n),g(m))_[m]=null,b(m)&&(v[m]=null);else if(I(m)){let e=n;x(m,e.k)&&(m.value=null),e.k&&(_[e.k]=null)}}if(h(p))sn(p,f,12,[l,_]);else{let t=g(p),n=I(p);if(t||n){let i=()=>{if(e.f){let n=t?b(p)?v[p]:_[p]:x(p)||!e.k?p.value:_[e.k];if(o)d(n)&&c(n,s);else if(d(n))n.includes(s)||n.push(s);else if(t)_[p]=[s],b(p)&&(v[p]=_[p]);else{let t=[s];x(p,e.k)&&(p.value=t),e.k&&(_[e.k]=t)}}else t?(_[p]=l,b(p)&&(v[p]=l)):n&&(x(p,e.k)&&(p.value=l),e.k&&(_[e.k]=l))};if(l){let t=()=>{i(),Qn.delete(e)};t.id=-1,Qn.set(e,t),U(t,r)}else er(e),i()}}}function er(e){let t=Qn.get(e);t&&(t.flags|=8,Qn.delete(e))}ue().requestIdleCallback,ue().cancelIdleCallback;var tr=e=>!!e.type.__asyncLoader,nr=e=>e.type.__isKeepAlive;function rr(e,t){ar(e,`a`,t)}function ir(e,t){ar(e,`da`,t)}function ar(e,t,n=$){let r=e.__wdc||=()=>{let t=n;for(;t;){if(t.isDeactivated)return;t=t.parent}return e()};if(sr(t,r,n),n){let e=n.parent;for(;e&&e.parent;)nr(e.parent.vnode)&&or(r,t,n,e),e=e.parent}}function or(e,t,n,r){let i=sr(t,e,r,!0);mr(()=>{c(r[t],i)},n)}function sr(e,t,n=$,r=!1){if(n){let i=n[e]||(n[e]=[]),a=t.__weh||=(...r)=>{We();let i=ma(n),a=cn(t,n,e,r);return i(),Ge(),a};return r?i.unshift(a):i.push(a),a}}var cr=e=>(t,n=$)=>{_a&&e!==`sp`||sr(e,(...e)=>t(...e),n)},lr=cr(`bm`),ur=cr(`m`),dr=cr(`bu`),fr=cr(`u`),pr=cr(`bum`),mr=cr(`um`),hr=cr(`sp`),gr=cr(`rtg`),_r=cr(`rtc`);function vr(e,t=$){sr(`ec`,e,t)}var yr=`components`,br=Symbol.for(`v-ndc`);function xr(e){return g(e)?Sr(yr,e,!1)||e:e||br}function Sr(e,t,n=!0,r=!1){let i=B||$;if(i){let n=i.type;if(e===yr){let e=Ta(n,!1);if(e&&(e===t||e===w(t)||e===ae(w(t))))return n}let a=Cr(i[e]||n[e],t)||Cr(i.appContext[e],t);return!a&&r?n:a}}function Cr(e,t){return e&&(e[t]||e[w(t)]||e[ae(w(t))])}function V(e,t,n,r){let i,a=n&&n[r],o=d(e);if(o||g(e)){let n=o&&Bt(e),r=!1,s=!1;n&&(r=!Ht(e),s=Vt(e),e=rt(e)),i=Array(e.length);for(let n=0,o=e.length;n<o;n++)i[n]=t(r?s?Gt(F(e[n])):F(e[n]):e[n],n,void 0,a&&a[n])}else if(typeof e==`number`){if(!Number.isInteger(e)||e<0)i=[];else{i=Array(e);for(let n=0;n<e;n++)i[n]=t(n+1,n,void 0,a&&a[n])}}else if(v(e)){if(e[Symbol.iterator])i=Array.from(e,(e,n)=>t(e,n,void 0,a&&a[n]));else{let n=Object.keys(e);i=Array(n.length);for(let r=0,o=n.length;r<o;r++){let o=n[r];i[r]=t(e[o],o,r,a&&a[r])}}}else i=[];return n&&(n[r]=i),i}function wr(e,t,n,r,i,a){if(n??={},B.ce||B.parent&&tr(B.parent)&&B.parent.ce){let e=a!=null&&n.key==null?s({},n,{key:a}):n,i=Object.keys(e).length>0;return t!==\"default\"&&(e.name=t),q(),qi(W,null,[X(`slot`,e,r&&r())],i?-2:64)}let o=e[t];o&&o._c&&(o._d=!1);let c=Hi.length;q();let l;try{let i=o&&Tr(o(n)),s=n.key||a||i&&i.key;l=qi(W,{key:(s&&!_(s)?s:`_${t}`)+(!i&&r?`_fb`:``)},i||(r?r():[]),i&&e._===1?64:-2)}catch(e){for(let e=Hi.length;e>c;e--)Ui();throw e}finally{o&&o._c&&(o._d=!0)}return!i&&l.scopeId&&(l.slotScopeIds=[l.scopeId+`-s`]),l}function Tr(e){return e.some(e=>!Ji(e)||!(e.type===G||e.type===W&&!Tr(e.children)))?e:null}var Er=e=>e?ga(e)?wa(e):Er(e.parent):null,Dr=s(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Er(e.parent),$root:e=>Er(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Lr(e),$forceUpdate:e=>e.f||=()=>{yn(e.update)},$nextTick:e=>e.n||=_n.bind(e.proxy),$watch:e=>Bn.bind(e)}),Or=(e,n)=>e!==t&&!e.__isScriptSetup&&u(e,n),kr={get({_:e},n){if(n===`__v_skip`)return!0;let{ctx:r,setupState:i,data:a,props:o,accessCache:s,type:c,appContext:l}=e;if(n[0]!==`$`){let e=s[n];if(e!==void 0)switch(e){case 1:return i[n];case 2:return a[n];case 4:return r[n];case 3:return o[n]}else if(Or(i,n))return s[n]=1,i[n];else if(a!==t&&u(a,n))return s[n]=2,a[n];else if(u(o,n))return s[n]=3,o[n];else if(r!==t&&u(r,n))return s[n]=4,r[n];else Mr&&(s[n]=0)}let d=Dr[n],f,p;if(d)return n===`$attrs`&&N(e.attrs,`get`,``),d(e);if((f=c.__cssModules)&&(f=f[n]))return f;if(r!==t&&u(r,n))return s[n]=4,r[n];if(p=l.config.globalProperties,u(p,n))return p[n]},set({_:e},n,r){let{data:i,setupState:a,ctx:o}=e;return Or(a,n)?(a[n]=r,!0):i!==t&&u(i,n)?(i[n]=r,!0):u(e.props,n)||n[0]===`$`&&n.slice(1)in e?!1:(o[n]=r,!0)},has({_:{data:e,setupState:n,accessCache:r,ctx:i,appContext:a,props:o,type:s}},c){let l;return!!(r[c]||e!==t&&c[0]!==`$`&&u(e,c)||Or(n,c)||u(o,c)||u(i,c)||u(Dr,c)||u(a.config.globalProperties,c)||(l=s.__cssModules)&&l[c])},defineProperty(e,t,n){return n.get==null?u(n,`value`)&&this.set(e,t,n.value,null):e._.accessCache[t]=0,Reflect.defineProperty(e,t,n)}};function Ar(e){return d(e)?e.reduce((e,t)=>(e[t]=null,e),{}):e}function jr(e,t){return!e||!t?e||t:d(e)&&d(t)?e.concat(t):s({},Ar(e),Ar(t))}var Mr=!0;function Nr(e){let t=Lr(e),n=e.proxy,i=e.ctx;Mr=!1,t.beforeCreate&&Fr(t.beforeCreate,e,`bc`);let{data:a,computed:o,methods:s,watch:c,provide:l,inject:u,created:f,beforeMount:p,mounted:m,beforeUpdate:g,updated:_,activated:y,deactivated:b,beforeDestroy:x,beforeUnmount:ee,destroyed:S,unmounted:C,render:te,renderTracked:ne,renderTriggered:re,errorCaptured:w,serverPrefetch:ie,expose:T,inheritAttrs:ae,components:oe,directives:E,filters:se}=t;if(u&&Pr(u,i,null),s)for(let e in s){let t=s[e];h(t)&&(i[e]=t.bind(n))}if(a){let t=a.call(n,n);v(t)&&(e.data=It(t))}if(Mr=!0,o)for(let e in o){let t=o[e],a=Da({get:h(t)?t.bind(n,n):h(t.get)?t.get.bind(n,n):r,set:!h(t)&&h(t.set)?t.set.bind(n):r});Object.defineProperty(i,e,{enumerable:!0,configurable:!0,get:()=>a.value,set:e=>a.value=e})}if(c)for(let e in c)Ir(c[e],i,n,e);if(l){let e=h(l)?l.call(n):l;Reflect.ownKeys(e).forEach(t=>{Nn(t,e[t])})}f&&Fr(f,e,`c`);function D(e,t){d(t)?t.forEach(t=>e(t.bind(n))):t&&e(t.bind(n))}if(D(lr,p),D(ur,m),D(dr,g),D(fr,_),D(rr,y),D(ir,b),D(vr,w),D(_r,ne),D(gr,re),D(pr,ee),D(mr,C),D(hr,ie),d(T)){if(T.length){let t=e.exposed||={};T.forEach(e=>{Object.defineProperty(t,e,{get:()=>n[e],set:t=>n[e]=t,enumerable:!0})})}else e.exposed||={}}te&&e.render===r&&(e.render=te),ae!=null&&(e.inheritAttrs=ae),oe&&(e.components=oe),E&&(e.directives=E),ie&&Xn(e)}function Pr(e,t,n=r){d(e)&&(e=Hr(e));for(let n in e){let r=e[n],i;i=v(r)?`default`in r?Pn(r.from||n,r.default,!0):Pn(r.from||n):Pn(r),I(i)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>i.value,set:e=>i.value=e}):t[n]=i}}function Fr(e,t,n){cn(d(e)?e.map(e=>e.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ir(e,t,n,r){let i=r.includes(`.`)?Vn(n,r):()=>n[r];if(g(e)){let n=t[e];h(n)&&Rn(i,n)}else if(h(e))Rn(i,e.bind(n));else if(v(e)){if(d(e))e.forEach(e=>Ir(e,t,n,r));else{let r=h(e.handler)?e.handler.bind(n):t[e.handler];h(r)&&Rn(i,r,e)}}}function Lr(e){let t=e.type,{mixins:n,extends:r}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t),c;return s?c=s:!i.length&&!n&&!r?c=t:(c={},i.length&&i.forEach(e=>Rr(c,e,o,!0)),Rr(c,t,o)),v(t)&&a.set(t,c),c}function Rr(e,t,n,r=!1){let{mixins:i,extends:a}=t;a&&Rr(e,a,n,!0),i&&i.forEach(t=>Rr(e,t,n,!0));for(let i in t)if(!(r&&i===`expose`)){let r=zr[i]||n&&n[i];e[i]=r?r(e[i],t[i]):t[i]}return e}var zr={data:Br,props:Wr,emits:Wr,methods:Ur,computed:Ur,beforeCreate:H,created:H,beforeMount:H,mounted:H,beforeUpdate:H,updated:H,beforeDestroy:H,beforeUnmount:H,destroyed:H,unmounted:H,activated:H,deactivated:H,errorCaptured:H,serverPrefetch:H,components:Ur,directives:Ur,watch:Gr,provide:Br,inject:Vr};function Br(e,t){return t?e?function(){return s(h(e)?e.call(this,this):e,h(t)?t.call(this,this):t)}:t:e}function Vr(e,t){return Ur(Hr(e),Hr(t))}function Hr(e){if(d(e)){let t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function H(e,t){return e?[...new Set([].concat(e,t))]:t}function Ur(e,t){return e?s(Object.create(null),e,t):t}function Wr(e,t){return e?d(e)&&d(t)?[...new Set([...e,...t])]:s(Object.create(null),Ar(e),Ar(t??{})):t}function Gr(e,t){if(!e)return t;if(!t)return e;let n=s(Object.create(null),e);for(let r in t)n[r]=H(e[r],t[r]);return n}function Kr(){return{app:null,config:{isNativeTag:i,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}var qr=0;function Jr(e,t){return function(n,r=null){h(n)||(n=s({},n)),r!=null&&!v(r)&&(r=null);let i=Kr(),a=new WeakSet,o=[],c=!1,l=i.app={_uid:qr++,_component:n,_props:r,_container:null,_context:i,_instance:null,version:Oa,get config(){return i.config},set config(e){},use(e,...t){return a.has(e)||(e&&h(e.install)?(a.add(e),e.install(l,...t)):h(e)&&(a.add(e),e(l,...t))),l},mixin(e){return i.mixins.includes(e)||i.mixins.push(e),l},component(e,t){return t?(i.components[e]=t,l):i.components[e]},directive(e,t){return t?(i.directives[e]=t,l):i.directives[e]},mount(a,o,s){if(!c){let u=l._ceVNode||X(n,r);return u.appContext=i,s===!0?s=`svg`:s===!1&&(s=void 0),o&&t?t(u,a):e(u,a,s),c=!0,l._container=a,a.__vue_app__=l,wa(u.component)}},onUnmount(e){o.push(e)},unmount(){c&&(cn(o,l._instance,16),e(null,l._container),delete l._container.__vue_app__)},provide(e,t){return i.provides[e]=t,l},runWithContext(e){let t=Yr;Yr=l;try{return e()}finally{Yr=t}}};return l}}var Yr=null;function Xr(e,n,r=t){let i=da(),a=w(n),o=T(n),s=Zr(e,a),c=Zt((s,c)=>{let l,u=t,d;return Ln(()=>{let t=e[a];E(l,t)&&(l=t,c())}),{get(){return s(),r.get?r.get(l):l},set(e){let s=r.set?r.set(e):e;if(!E(s,l)&&!(u!==t&&E(e,u)))return;let f=i.vnode.props,p=!!(f&&(n in f||a in f||o in f)&&(`onUpdate:${n}`in f||`onUpdate:${a}`in f||`onUpdate:${o}`in f));p||(l=e,c()),i.emit(`update:${n}`,s),E(e,u)&&(E(e,s)&&!E(s,d)||p&&u!==t&&!E(s,l))&&c(),u=e,d=s}}});return c[Symbol.iterator]=()=>{let e=0;return{next(){return e<2?{value:e++?s||t:c,done:!1}:{done:!0}}}},c}var Zr=(e,t)=>t===`modelValue`||t===`model-value`?e.modelModifiers:e[`${t}Modifiers`]||e[`${w(t)}Modifiers`]||e[`${T(t)}Modifiers`];function Qr(e,n,...r){if(e.isUnmounted)return;let i=e.vnode.props||t,a=r,o=n.startsWith(`update:`),s=o&&Zr(i,n.slice(7));s&&(s.trim&&(a=r.map(e=>g(e)?e.trim():e)),s.number&&(a=a.map(ce)));let c,l=i[c=oe(n)]||i[c=oe(w(n))];!l&&o&&(l=i[c=oe(T(n))]),l&&cn(l,e,6,a);let u=i[c+`Once`];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[c])return;e.emitted[c]=!0,cn(u,e,6,a)}}var $r=new WeakMap;function ei(e,t,n=!1){let r=n?$r:t.emitsCache,i=r.get(e);if(i!==void 0)return i;let a=e.emits,o={},c=!1;if(!h(e)){let r=e=>{let n=ei(e,t,!0);n&&(c=!0,s(o,n))};!n&&t.mixins.length&&t.mixins.forEach(r),e.extends&&r(e.extends),e.mixins&&e.mixins.forEach(r)}return!a&&!c?(v(e)&&r.set(e,null),null):(d(a)?a.forEach(e=>o[e]=null):s(o,a),v(e)&&r.set(e,o),o)}function ti(e,t){return!e||!a(t)?!1:(t=t.slice(2),t=t===`Once`?t:t.replace(/Once$/,``),u(e,t[0].toLowerCase()+t.slice(1))||u(e,T(t))||u(e,t))}function ni(e){let{type:t,vnode:n,proxy:r,withProxy:i,propsOptions:[a],slots:s,attrs:c,emit:l,render:u,renderCache:d,props:f,data:p,setupState:m,ctx:h,inheritAttrs:g}=e,_=kn(e),v,y;try{if(n.shapeFlag&4){let e=i||r,t=e;v=na(u.call(t,e,d,f,m,p,h)),y=c}else{let e=t;v=na(e.length>1?e(f,{attrs:c,slots:s,emit:l}):e(f,null)),y=t.props?c:ii(c)}}catch(t){Hi.length=0,ln(t,e,1),v=X(G)}let b=v;if(y&&g!==!1){let e=Object.keys(y),{shapeFlag:t}=b;e.length&&t&7&&(a&&e.some(o)&&(y=ai(y,a)),b=ea(b,y,!1,!0))}return n.dirs&&(b=ea(b,null,!1,!0),b.dirs=b.dirs?b.dirs.concat(n.dirs):n.dirs),n.transition&&qn(Un(b.type)&&Kn(b)||b,n.transition),v=b,kn(_),v}function ri(e,t=!0){let n;for(let t=0;t<e.length;t++){let r=e[t];if(Ji(r)){if(r.type!==G||r.children===`v-if`){if(n)return;n=r}}else return}return n}var ii=e=>{let t;for(let n in e)(n===`class`||n===`style`||a(n))&&((t||={})[n]=e[n]);return t},ai=(e,t)=>{let n={};for(let r in e)o(r)&&r.slice(9)in t||(n[r]=e[r]);return n};function oi(e,t,n){let{props:r,children:i,component:a}=e,{props:o,children:s,patchFlag:c}=t,l=a.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?si(r,o,l):!!o;if(c&8){let e=t.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t];if(ci(o,r,n)&&!ti(l,n))return!0}}}else return(i||s)&&(!s||!s.$stable)?!0:r===o?!1:r?!o||si(r,o,l):!!o;return!1}function si(e,t,n){let r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let i=0;i<r.length;i++){let a=r[i];if(!u(e,a)||ci(t,e,a)&&!ti(n,a))return!0}return!1}function ci(e,t,n){let r=e[n],i=t[n];return n===`style`&&v(r)&&v(i)?!xe(r,i):r!==i}function li({vnode:e,parent:t,suspense:n},r){for(;t;){let n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.suspense.vnode.el=n.el=r,e=n),n===e)(e=t.vnode).el=r,t=t.parent;else break}n&&n.activeBranch===e&&(n.vnode.el=r)}var ui={},di=()=>Object.create(ui),fi=e=>Object.getPrototypeOf(e)===ui;function pi(e,t,n,r=!1){let i={},a=di();e.propsDefaults=Object.create(null),hi(e,t,i,a);for(let t in e.propsOptions[0])t in i||(i[t]=void 0);e.props=n?r?i:Lt(i):e.type.props?i:a,e.attrs=a}function mi(e,t,n,r){let{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=P(i),[c]=e.propsOptions,l=!1;if((r||o>0)&&!(o&16)){if(o&8){let n=e.vnode.dynamicProps;for(let r=0;r<n.length;r++){let o=n[r];if(ti(e.emitsOptions,o))continue;let d=t[o];if(c){if(u(a,o))d!==a[o]&&(a[o]=d,l=!0);else{let t=w(o);i[t]=gi(c,s,t,d,e,!1)}}else d!==a[o]&&(a[o]=d,l=!0)}}}else{hi(e,t,i,a)&&(l=!0);let r;for(let a in s)t&&(u(t,a)||(r=T(a))!==a&&u(t,r))||(c?n&&(n[a]!==void 0||n[r]!==void 0)&&(i[a]=gi(c,s,a,void 0,e,!0)):delete i[a]);if(a!==s)for(let e in a)t&&u(t,e)||(delete a[e],l=!0)}l&&tt(e.attrs,`set`,``)}function hi(e,n,r,i){let[a,o]=e.propsOptions,s=!1,c;if(n)for(let t in n){if(te(t))continue;let l=n[t],d;a&&u(a,d=w(t))?!o||!o.includes(d)?r[d]=l:(c||={})[d]=l:ti(e.emitsOptions,t)||t in i&&l===i[t]||(i[t]=l,s=!0)}if(o){let n=P(r),i=c||t;for(let t=0;t<o.length;t++){let s=o[t];r[s]=gi(a,n,s,i[s],e,!u(i,s))}}return s}function gi(e,t,n,r,i,a){let o=e[n];if(o!=null){let e=u(o,`default`);if(e&&r===void 0){let e=o.default;if(o.type!==Function&&!o.skipFactory&&h(e)){let{propsDefaults:a}=i;if(n in a)r=a[n];else{let o=ma(i);r=a[n]=e.call(null,t),o()}}else r=e;i.ce&&i.ce._setProp(n,r)}o[0]&&(a&&!e?r=!1:o[1]&&(r===``||r===T(n))&&(r=!0))}return r}var _i=new WeakMap;function vi(e,r,i=!1){let a=i?_i:r.propsCache,o=a.get(e);if(o)return o;let c=e.props,l={},f=[],p=!1;if(!h(e)){let t=e=>{p=!0;let[t,n]=vi(e,r,!0);s(l,t),n&&f.push(...n)};!i&&r.mixins.length&&r.mixins.forEach(t),e.extends&&t(e.extends),e.mixins&&e.mixins.forEach(t)}if(!c&&!p)return v(e)&&a.set(e,n),n;if(d(c))for(let e=0;e<c.length;e++){let n=w(c[e]);yi(n)&&(l[n]=t)}else if(c)for(let e in c){let t=w(e);if(yi(t)){let n=c[e],r=l[t]=d(n)||h(n)?{type:n}:s({},n),i=r.type,a=!1,o=!0;if(d(i))for(let e=0;e<i.length;++e){let t=i[e],n=h(t)&&t.name;if(n===`Boolean`){a=!0;break}n===`String`&&(o=!1)}else a=h(i)&&i.name===`Boolean`;r[0]=a,r[1]=o,(a||u(r,`default`))&&f.push(t)}}let m=[l,f];return v(e)&&a.set(e,m),m}function yi(e){return e[0]!==`$`&&!te(e)}var bi=e=>e===`_`||e===`_ctx`||e===`$stable`,xi=e=>d(e)?e.map(na):[na(e)],Si=(e,t,n)=>{if(t._n)return t;let r=An((...e)=>xi(t(...e)),n);return r._c=!1,r},Ci=(e,t,n)=>{let r=e._ctx;for(let n in e){if(bi(n))continue;let i=e[n];if(h(i))t[n]=Si(n,i,r);else if(i!=null){let e=xi(i);t[n]=()=>e}}},wi=(e,t)=>{let n=xi(t);e.slots.default=()=>n},Ti=(e,t,n)=>{for(let r in t)(n||!bi(r))&&(e[r]=t[r])},Ei=(e,t,n)=>{let r=e.slots=di();if(e.vnode.shapeFlag&32){let e=t._;e?(Ti(r,t,n),n&&D(r,`_`,e,!0)):Ci(t,r)}else t&&wi(e,t)},Di=(e,n,r)=>{let{vnode:i,slots:a}=e,o=!0,s=t;if(i.shapeFlag&32){let e=n._;e?r&&e===1?o=!1:Ti(a,n,r):(o=!n.$stable,Ci(n,a)),s=n}else n&&(wi(e,n),s={default:1});if(o)for(let e in a)!bi(e)&&s[e]==null&&delete a[e]},U=zi;function Oi(e){return ki(e)}function ki(e,i){let a=ue();a.__VUE__=!0;let{insert:o,remove:s,patchProp:c,createElement:l,createText:u,createComment:d,setText:f,setElementText:p,parentNode:m,nextSibling:h,setScopeId:g=r,insertStaticContent:_}=e,v=(e,t,r,i=null,a=null,o=null,s=void 0,c=null,l=!!t.dynamicChildren)=>{if(e===t)return;e&&!Yi(e,t)&&(i=ye(e),k(e,a,o,!0),e=null),t.patchFlag===-2&&(l=!1,t.dynamicChildren=null),t.dynamicChildren&&e&&e.dynamicChildren&&e.dynamicChildren.hasOnce&&(t.dynamicChildren===n&&(t.dynamicChildren=[]),t.dynamicChildren.hasOnce=!0);let{type:u,ref:d,shapeFlag:f}=t;switch(u){case Bi:y(e,t,r,i);break;case G:b(e,t,r,i);break;case Vi:e??x(t,r,i,s);break;case W:oe(e,t,r,i,a,o,s,c,l);break;default:f&1?C(e,t,r,i,a,o,s,c,l):f&6?E(e,t,r,i,a,o,s,c,l):(f&64||f&128)&&u.process(e,t,r,i,a,o,s,c,l,xe)}d!=null&&a?$n(d,e&&e.ref,o,t||e,!t):d==null&&e&&e.ref!=null&&$n(e.ref,null,o,e,!0)},y=(e,t,n,r)=>{if(e==null)o(t.el=u(t.children),n,r);else{let n=t.el=e.el;t.children!==e.children&&f(n,t.children)}},b=(e,t,n,r)=>{e==null?o(t.el=d(t.children||``),n,r):t.el=e.el},x=(e,t,n,r)=>{[e.el,e.anchor]=_(e.children,t,n,r,e.el,e.anchor)},ee=({el:e,anchor:t},n,r)=>{let i;for(;e&&e!==t;)i=h(e),o(e,n,r),e=i;o(t,n,r)},S=({el:e,anchor:t})=>{let n;for(;e&&e!==t;)n=h(e),s(e),e=n;s(t)},C=(e,t,n,r,i,a,o,s,c)=>{if(t.type===`svg`?o=`svg`:t.type===`math`&&(o=`mathml`),e==null)ne(t,n,r,i,a,o,s,c);else{let n=e.el&&e.el._isVueCE?e.el:null;try{n&&n._beginPatch(),ie(e,t,i,a,o,s,c)}finally{n&&n._endPatch()}}},ne=(e,t,n,r,i,a,s,u)=>{let d,f,{props:m,shapeFlag:h,transition:g,dirs:_}=e;if(d=e.el=l(e.type,a,m&&m.is,m),h&8?p(d,e.children):h&16&&w(e.children,d,null,r,i,Ai(e,a),s,u),_&&Mn(e,null,r,`created`),re(d,e,e.scopeId,s,r),m){for(let e in m)e!==`value`&&!te(e)&&c(d,e,null,m[e],a,r);`value`in m&&c(d,`value`,null,m.value,a),(f=m.onVnodeBeforeMount)&&oa(f,r,e)}_&&Mn(e,null,r,`beforeMount`);let v=Mi(i,g);v&&g.beforeEnter(d),o(d,t,n),((f=m&&m.onVnodeMounted)||v||_)&&U(()=>{try{f&&oa(f,r,e),v&&g.enter(d),_&&Mn(e,null,r,`mounted`)}finally{}},i)},re=(e,t,n,r,i)=>{if(n&&g(e,n),r)for(let t=0;t<r.length;t++)g(e,r[t]);if(i){let n=i.subTree;if(t===n||Ri(n.type)&&(n.ssContent===t||n.ssFallback===t)){let t=i.vnode;re(e,t,t.scopeId,t.slotScopeIds,i.parent)}}},w=(e,t,n,r,i,a,o,s,c=0)=>{for(let l=c;l<e.length;l++){let c=e[l]=s?ra(e[l]):na(e[l]);v(null,c,t,n,r,i,a,o,s)}},ie=(e,n,r,i,a,o,s)=>{let l=n.el=e.el,{patchFlag:u,dynamicChildren:d,dirs:f}=n;u|=e.patchFlag&16;let m=e.props||t,h=n.props||t,g;if(r&&ji(r,!1),(g=h.onVnodeBeforeUpdate)&&oa(g,r,n,e),f&&Mn(n,e,r,`beforeUpdate`),r&&ji(r,!0),d&&(!e.dynamicChildren||e.dynamicChildren.length!==d.length)&&(u=0,s=!1,d=null),(m.innerHTML&&h.innerHTML==null||m.textContent&&h.textContent==null)&&p(l,``),d?T(e.dynamicChildren,d,l,r,i,Ai(n,a),o):s||de(e,n,l,null,r,i,Ai(n,a),o,!1),u>0){if(u&16)ae(l,m,h,r,a);else if(u&2&&m.class!==h.class&&c(l,`class`,null,h.class,a),u&4&&c(l,`style`,m.style,h.style,a),u&8){let e=n.dynamicProps;for(let t=0;t<e.length;t++){let n=e[t],i=m[n],o=h[n];(o!==i||n===`value`)&&c(l,n,i,o,a,r)}}u&1&&e.children!==n.children&&p(l,n.children)}else!s&&d==null&&ae(l,m,h,r,a);((g=h.onVnodeUpdated)||f)&&U(()=>{g&&oa(g,r,n,e),f&&Mn(n,e,r,`updated`)},i)},T=(e,t,n,r,i,a,o)=>{for(let s=0;s<t.length;s++){let c=e[s],l=t[s],u=c.el||Li(c),d=u&&(c.type===W||!Yi(c,l)||c.shapeFlag&198)?m(u):n;v(c,l,d,null,r,i,a,o,!0)}},ae=(e,n,r,i,a)=>{if(n!==r){if(n!==t)for(let t in n)!te(t)&&!(t in r)&&c(e,t,n[t],null,a,i);for(let t in r){if(te(t))continue;let o=r[t],s=n[t];o!==s&&t!==`value`&&c(e,t,s,o,a,i)}`value`in r&&c(e,`value`,n.value,r.value,a)}},oe=(e,t,n,r,i,a,s,c,l)=>{let d=t.el=e?e.el:u(``),f=t.anchor=e?e.anchor:u(``),{patchFlag:p,dynamicChildren:m,slotScopeIds:h}=t;h&&(c=c?c.concat(h):h),e==null?(o(d,n,r),o(f,n,r),w(t.children||[],n,f,i,a,s,c,l)):p>0&&p&64&&m&&e.dynamicChildren&&e.dynamicChildren.length===m.length?(T(e.dynamicChildren,m,n,i,a,s,c),(t.key!=null||i&&t===i.subTree)&&Ni(e,t,!0)):de(e,t,n,f,i,a,s,c,l)},E=(e,t,n,r,i,a,o,s,c)=>{t.slotScopeIds=s,e==null?t.shapeFlag&512?i.ctx.activate(t,n,r,o,c):D(t,n,r,i,a,o,c):ce(e,t,c)},D=(e,t,n,r,i,a,o)=>{let s=e.component=ua(e,r,i);if(nr(e)&&(s.ctx.renderer=xe),va(s,!1,o),s.asyncDep){if(i&&i.registerDep(s,le,o,a),!e.el){let r=s.subTree=X(G);b(null,r,t,n),e.placeholder=r.el}}else le(s,e,t,n,i,a,o)},ce=(e,t,n)=>{let r=t.component=e.component;if(oi(e,t,n)){if(r.asyncDep&&!r.asyncResolved){t.el=e.el,t.placeholder=e.placeholder,O(r,t,n);return}r.next=t,r.update()}else t.el=e.el,t.placeholder=e.placeholder,r.vnode=t},le=(e,t,n,r,i,a,o)=>{let s=()=>{if(e.isMounted){let{next:t,bu:n,u:r,parent:s,vnode:c}=e;{let n=Fi(e);if(n){t&&(t.el=c.el,O(e,t,o)),n.asyncDep.then(()=>{U(()=>{e.isUnmounted||l()},i)});return}}let u=t,d;ji(e,!1),t?(t.el=c.el,O(e,t,o)):t=c,n&&se(n),(d=t.props&&t.props.onVnodeBeforeUpdate)&&oa(d,s,t,c),ji(e,!0);let f=ni(e),p=e.subTree;e.subTree=f,v(p,f,m(p.el),ye(p),e,i,a),t.el=f.el,u===null&&li(e,f.el),r&&U(r,i),(d=t.props&&t.props.onVnodeUpdated)&&U(()=>oa(d,s,t,c),i)}else{let o,{el:s,props:c}=t,{bm:l,m:u,parent:d,root:f,type:p}=e,m=tr(t);if(ji(e,!1),l&&se(l),!m&&(o=c&&c.onVnodeBeforeMount)&&oa(o,d,t),ji(e,!0),s&&Ce){let t=()=>{e.subTree=ni(e),Ce(s,e.subTree,e,i,null)};m&&p.__asyncHydrate?p.__asyncHydrate(s,e,t):t()}else{f.ce&&f.ce._hasShadowRoot()&&f.ce._injectChildStyle(p,e.parent?e.parent.type:void 0);let o=e.subTree=ni(e);v(null,o,n,r,e,i,a),t.el=o.el}if(u&&U(u,i),!m&&(o=c&&c.onVnodeMounted)){let e=t;U(()=>oa(o,d,e),i)}(t.shapeFlag&256||d&&tr(d.vnode)&&d.vnode.shapeFlag&256)&&e.a&&U(e.a,i),e.isMounted=!0,t=n=r=null}};e.scope.on();let c=e.effect=new ke(s);e.scope.off();let l=e.update=c.run.bind(c),u=e.job=c.runIfDirty.bind(c);u.i=e,u.id=e.uid,c.scheduler=()=>yn(u),ji(e,!0),l()},O=(e,t,n)=>{t.component=e;let r=e.vnode.props;e.vnode=t,e.next=null,mi(e,t.props,r,n),Di(e,t.children,n),We(),Sn(e),Ge()},de=(e,t,n,r,i,a,o,s,c=!1)=>{let l=e&&e.children,u=e?e.shapeFlag:0,d=t.children,{patchFlag:f,shapeFlag:m}=t;if(f>0){if(f&128){pe(l,d,n,r,i,a,o,s,c);return}if(f&256){fe(l,d,n,r,i,a,o,s,c);return}}m&8?(u&16&&ve(l,i,a),d!==l&&p(n,d)):u&16?m&16?pe(l,d,n,r,i,a,o,s,c):ve(l,i,a,!0):(u&8&&p(n,``),m&16&&w(d,n,r,i,a,o,s,c))},fe=(e,t,r,i,a,o,s,c,l)=>{e||=n,t||=n;let u=e.length,d=t.length,f=Math.min(u,d),p=0;for(;p<f;p++){let n=t[p]=l?ra(t[p]):na(t[p]);v(e[p],n,r,null,a,o,s,c,l)}u>d?ve(e,a,o,!0,!1,f):w(t,r,i,a,o,s,c,l,f)},pe=(e,t,r,i,a,o,s,c,l)=>{let u=0,d=t.length,f=e.length-1,p=d-1;for(;u<=f&&u<=p;){let n=e[u],i=t[u]=l?ra(t[u]):na(t[u]);if(Yi(n,i))v(n,i,r,null,a,o,s,c,l);else break;u++}for(;u<=f&&u<=p;){let n=e[f],i=t[p]=l?ra(t[p]):na(t[p]);if(Yi(n,i))v(n,i,r,null,a,o,s,c,l);else break;f--,p--}if(u>f){if(u<=p){let e=p+1,n=e<d?t[e].el:i;for(;u<=p;)v(null,t[u]=l?ra(t[u]):na(t[u]),r,n,a,o,s,c,l),u++}}else if(u>p)for(;u<=f;)k(e[u],a,o,!0),u++;else{let m=u,h=u,g=new Map;for(u=h;u<=p;u++){let e=t[u]=l?ra(t[u]):na(t[u]);e.key!=null&&g.set(e.key,u)}let _,y=0,b=p-h+1,x=!1,ee=0,S=Array(b);for(u=0;u<b;u++)S[u]=0;for(u=m;u<=f;u++){let n=e[u];if(y>=b){k(n,a,o,!0);continue}let i;if(n.key!=null)i=g.get(n.key);else for(_=h;_<=p;_++)if(S[_-h]===0&&Yi(n,t[_])){i=_;break}i===void 0?k(n,a,o,!0):(S[i-h]=u+1,i>=ee?ee=i:x=!0,v(n,t[i],r,null,a,o,s,c,l),y++)}let C=x?Pi(S):n;for(_=C.length-1,u=b-1;u>=0;u--){let e=h+u,n=t[e],f=t[e+1],p=e+1<d?f.el||Li(f):i;S[u]===0?v(null,n,r,p,a,o,s,c,l):x&&(_<0||u!==C[_]?me(n,r,p,2):_--)}}},me=(e,t,n,r,i=null)=>{let{el:a,type:c,transition:l,children:u,shapeFlag:d}=e;if(d&6)me(e.component.subTree,t,n,r);else if(d&128)e.suspense.move(t,n,r);else if(d&64)c.move(e,t,n,xe);else if(c===W){o(a,t,n);for(let e=0;e<u.length;e++)me(u[e],t,n,r);o(e.anchor,t,n)}else if(c===Vi)ee(e,t,n);else if(r!==2&&d&1&&l){if(r===0)l.persisted&&!a[Wn]?o(a,t,n):(l.beforeEnter(a),o(a,t,n),U(()=>l.enter(a),i));else{let{leave:r,delayLeave:i,afterLeave:c}=l,u=()=>{e.ctx.isUnmounted?s(a):o(a,t,n)},d=()=>{let e=a._isLeaving||!!a[Wn];a._isLeaving&&a[Wn](!0),l.persisted&&!e?u():r(a,()=>{u(),c&&c()})};i?i(a,u,d):d()}}else o(a,t,n)},k=(e,t,n,r=!1,i=!1)=>{let{type:a,props:o,ref:s,children:c,dynamicChildren:l,shapeFlag:u,patchFlag:d,dirs:f,cacheIndex:p,memo:m}=e;if((d===-2||l&&l.hasOnce)&&(i=!1),s!=null&&(We(),$n(s,null,n,e,!0),Ge()),p==null||e.ctx&&e.ctx!==t||(t.renderCache[p]=void 0),u&256){t.ctx.deactivate(e);return}let h=u&1&&f,g=!tr(e),_;if(g&&(_=o&&o.onVnodeBeforeUnmount)&&oa(_,t,e),u&6)_e(e.component,n,r);else{if(u&128){e.suspense.unmount(n,r);return}h&&Mn(e,null,t,`beforeUnmount`),u&64?e.type.remove(e,t,n,xe,r):l&&!l.hasOnce&&(a!==W||d>0&&d&64)?ve(l,t,n,!1,!0):(a===W&&d&384||!i&&u&16)&&ve(c,t,n),r&&he(e)}let v=m!=null&&p==null;(g&&(_=o&&o.onVnodeUnmounted)||h||v)&&U(()=>{_&&oa(_,t,e),h&&Mn(e,null,t,`unmounted`),v&&(e.el=null)},n)},he=e=>{let{type:t,el:n,anchor:r,transition:i}=e,a=t===W;if(a&&!i){ge(n,r);return}if(t===Vi){S(e),i&&!i.persisted&&i.afterLeave&&i.afterLeave();return}let o=a?Jn(e):e,c=()=>{a?m(n)&&ge(n,r):s(n),i&&!i.persisted&&i.afterLeave&&i.afterLeave()};if(o&&o.shapeFlag&1&&i&&!i.persisted){let{leave:e,delayLeave:t}=i,n=o.el,r=()=>e(n,c);t?t(n,c,r):r()}else c()},ge=(e,t)=>{let n;for(;e!==t;)n=h(e),s(e),e=n;s(t)},_e=(e,t,n)=>{let{bum:r,scope:i,job:a,subTree:o,um:s,m:c,a:l}=e;Ii(c),Ii(l),r&&se(r),i.stop(),a?(a.flags|=8,k(o,e,t,n)):e.vnode.el&&o&&(o.transition=e.vnode.transition,k(o,e,t,n)),s&&U(s,t),U(()=>{e.isUnmounted=!0},t)},ve=(e,t,n,r=!1,i=!1,a=0)=>{for(let o=a;o<e.length;o++)k(e[o],t,n,r,i)},ye=e=>{if(e.shapeFlag&6)return ye(e.component.subTree);if(e.shapeFlag&128)return e.suspense.next();let t=h(e.anchor||e.el),n=t&&t[Hn];return n?h(n):t},be=(e,t,n)=>{Tn(()=>{e==null?t._vnode&&k(t._vnode,null,null,!0):v(t._vnode||null,e,t,null,null,null,n),t._vnode=e},e&&t._vnode?void 0:e&&e.component?e.component.uid:la())},xe={p:v,um:k,m:me,r:he,mt:D,mc:w,pc:de,pbc:T,n:ye,o:e},Se,Ce;return i&&([Se,Ce]=i(xe)),{render:be,hydrate:Se,createApp:Jr(be,Se)}}function Ai({type:e,props:t},n){return n===`svg`&&e===`foreignObject`||n===`mathml`&&e===`annotation-xml`&&t&&t.encoding&&t.encoding.includes(`html`)?void 0:n}function ji({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Mi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ni(e,t,n=!1){let r=e.children,i=t.children;if(d(r)&&d(i))for(let e=0;e<r.length;e++){let t=r[e],a=i[e];a.shapeFlag&1&&!a.dynamicChildren&&((a.patchFlag<=0||a.patchFlag===32)&&(a=i[e]=ra(i[e]),a.el=t.el),!n&&a.patchFlag!==-2&&Ni(t,a)),a.type===Bi&&(a.patchFlag===-1&&(a=i[e]=ra(a)),a.el=t.el),a.type===G&&!a.el&&(a.el=t.el)}}function Pi(e){let t=e.slice(),n=[0],r,i,a,o,s,c=e.length;for(r=0;r<c;r++){let c=e[r];if(c!==0){if(i=n[n.length-1],e[i]<c){t[r]=i,n.push(r);continue}for(a=0,o=n.length-1;a<o;)s=a+o>>1,e[n[s]]<c?a=s+1:o=s;c<e[n[a]]&&(a>0&&(t[r]=n[a-1]),n[a]=r)}}for(a=n.length,o=n[a-1];a-->0;)n[a]=o,o=t[o];return n}function Fi(e){let t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Fi(t)}function Ii(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Li(e){if(e.placeholder)return e.placeholder;let t=e.component;return t?Li(t.subTree):null}var Ri=e=>e.__isSuspense;function zi(e,t){t&&t.pendingBranch?d(e)?t.effects.push(...e):t.effects.push(e):xn(e)}var W=Symbol.for(`v-fgt`),Bi=Symbol.for(`v-txt`),G=Symbol.for(`v-cmt`),Vi=Symbol.for(`v-stc`),Hi=[],K=null;function q(e=!1){Hi.push(K=e?null:[])}function Ui(){Hi.pop(),K=Hi[Hi.length-1]||null}var Wi=1;function Gi(e,t=!1){Wi+=e,e<0&&K&&t&&(K.hasOnce=!0)}function Ki(e){return e.dynamicChildren=Wi>0?K||n:null,Ui(),Wi>0&&K&&K.push(e),e}function J(e,t,n,r,i,a){return Ki(Y(e,t,n,r,i,a,!0))}function qi(e,t,n,r,i){return Ki(X(e,t,n,r,i,!0))}function Ji(e){return e?e.__v_isVNode===!0:!1}function Yi(e,t){return e.type===t.type&&e.key===t.key}var Xi=({key:e})=>e??null,Zi=({ref:e,ref_key:t,ref_for:n})=>(typeof e==`number`&&(e=``+e),e==null?null:g(e)||I(e)||h(e)?{i:B,r:e,k:t,f:!!n}:e);function Y(e,t=null,n=null,r=0,i=null,a=e===W?0:1,o=!1,s=!1){let c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Xi(t),ref:t&&Zi(t),scopeId:On,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:r,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:B};return s?(ia(c,n),a&128&&e.normalize(c)):n&&(c.shapeFlag|=g(n)?8:16),Wi>0&&!o&&K&&(c.patchFlag>0||a&6)&&c.patchFlag!==32&&K.push(c),c}var X=Qi;function Qi(e,t=null,n=null,r=0,i=null,a=!1){if(e&&e!==br||(e=G),Ji(e)){let r=ea(e,t,!0);return n&&ia(r,n),Wi>0&&!a&&K&&(r.shapeFlag&6?K[K.indexOf(e)]=r:K.push(r)),r.patchFlag=-2,r}if(Ea(e)&&(e=e.__vccOpts),t){t=$i(t);let{class:e,style:n}=t;e&&!g(e)&&(t.class=k(e)),v(n)&&(Ut(n)&&!d(n)&&(n=s({},n)),t.style=O(n))}let o=g(e)?1:Ri(e)?128:Un(e)?64:v(e)?4:h(e)?2:0;return Y(e,t,n,r,i,o,a,!0)}function $i(e){return e?Ut(e)||fi(e)?s({},e):e:null}function ea(e,t,n=!1,r=!1){let{props:i,ref:a,patchFlag:o,children:s,transition:c}=e,l=t?aa(i||{},t):i,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Xi(l),ref:t&&t.ref?n&&a?d(a)?a.concat(Zi(t)):[a,Zi(t)]:Zi(t):a,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:s,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==W?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ea(e.ssContent),ssFallback:e.ssFallback&&ea(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce,cacheIndex:e.cacheIndex};return c&&r&&qn(u,c.clone(u)),u}function Z(e=` `,t=0){return X(Bi,null,e,t)}function ta(e,t){let n=X(Vi,null,e);return n.staticCount=t,n}function Q(e=``,t=!1){return t?(q(),qi(G,null,e)):X(G,null,e)}function na(e){return e==null||typeof e==`boolean`?X(G):d(e)?X(W,null,e.slice()):Ji(e)?ra(e):X(Bi,null,String(e))}function ra(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ea(e)}function ia(e,t){let n=0,{shapeFlag:r}=e;if(t==null)t=null;else if(d(t))n=16;else if(typeof t==`object`){if(r&65){let n=t.default;n&&(n._c&&(n._d=!1),ia(e,n()),n._c&&(n._d=!0));return}{n=32;let r=t._;!r&&!fi(t)?t._ctx=B:r===3&&B&&(B.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}}else if(h(t)){if(r&65){ia(e,{default:t});return}t={default:t,_ctx:B},n=32}else t=String(t),r&64?(n=16,t=[Z(t)]):n=8;e.children=t,e.shapeFlag|=n}function aa(...e){let t={};for(let n=0;n<e.length;n++){let r=e[n];for(let e in r)if(e===`class`)t.class!==r.class&&(t.class=k([t.class,r.class]));else if(e===`style`)t.style=O([t.style,r.style]);else if(a(e)){let n=t[e],i=r[e];i&&n!==i&&!(d(n)&&n.includes(i))?t[e]=n?[].concat(n,i):i:i==null&&n==null&&!o(e)&&(t[e]=i)}else e!==``&&(t[e]=r[e])}return t}function oa(e,t,n,r=null){cn(e,t,7,[n,r])}var sa=Kr(),ca=0;function la(){return ca}function ua(e,n,r){let i=e.type,a=(n?n.appContext:e.appContext)||sa,o={uid:ca++,vnode:e,type:i,parent:n,appContext:a,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Ee(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:n?n.provides:Object.create(a.provides),ids:n?n.ids:[``,0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:vi(i,a),emitsOptions:ei(i,a),emit:null,emitted:null,propsDefaults:t,inheritAttrs:i.inheritAttrs,ctx:t,data:t,props:t,attrs:t,slots:t,refs:t,setupState:t,setupContext:null,suspense:r,suspenseId:r?r.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=n?n.root:o,o.emit=Qr.bind(null,o),e.ce&&e.ce(o),o}var $=null,da=()=>$||B,fa,pa;{let e=ue(),t=(t,n)=>{let r;return(r=e[t])||(r=e[t]=[]),r.push(n),e=>{r.length>1?r.forEach(t=>t(e)):r[0](e)}};fa=t(`__VUE_INSTANCE_SETTERS__`,e=>$=e),pa=t(`__VUE_SSR_SETTERS__`,e=>_a=e)}var ma=e=>{let t=$;return fa(e),e.scope.on(),()=>{e.scope.off(),fa(t)}},ha=()=>{$&&$.scope.off(),fa(null)};function ga(e){return e.vnode.shapeFlag&4}var _a=!1;function va(e,t=!1,n=!1){t&&pa(t);let{props:r,children:i}=e.vnode,a=ga(e);pi(e,r,a,t),Ei(e,i,n||t);let o=a?ya(e,t):void 0;return t&&pa(!1),o}function ya(e,t){let n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,kr);let{setup:r}=n;if(r){We();let n=e.setupContext=r.length>1?Ca(e):null,i=ma(e),a=sn(r,e,0,[e.props,n]),o=y(a);if(Ge(),i(),(o||e.sp)&&!tr(e)&&Xn(e),o){if(a.then(ha,ha),t)return a.then(n=>{pa(!0);try{ba(e,n,t)}finally{pa(!1)}}).catch(t=>{ln(t,e,0)});e.asyncDep=a}else ba(e,a,t)}else xa(e,t)}function ba(e,t,n){h(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:v(t)&&(e.setupState=Yt(t)),xa(e,n)}function xa(e,t,n){let i=e.type;e.render||=i.render||r;{let t=ma(e);We();try{Nr(e)}finally{Ge(),t()}}}var Sa={get(e,t){return N(e,`get`,``),e[t]}};function Ca(e){return{attrs:new Proxy(e.attrs,Sa),slots:e.slots,emit:e.emit,expose:t=>{e.exposed=t||{}}}}function wa(e){return e.exposed?e.exposeProxy||=new Proxy(Yt(Wt(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Dr)return Dr[n](e)},has(e,t){return t in e||t in Dr}}):e.proxy}function Ta(e,t=!0){return h(e)?e.displayName||e.name:e.name||t&&e.__name}function Ea(e){return h(e)&&`__vccOpts`in e}var Da=(e,t)=>$t(e,t,_a),Oa=`3.5.44`,ka=void 0,Aa=typeof window<`u`&&window.trustedTypes;if(Aa)try{ka=Aa.createPolicy(`vue`,{createHTML:e=>e})}catch{}var ja=ka?e=>ka.createHTML(e):e=>e,Ma=`http://www.w3.org/2000/svg`,Na=`http://www.w3.org/1998/Math/MathML`,Pa=typeof document<`u`?document:null,Fa=Pa&&Pa.createElement(`template`),Ia={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{let t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{let i=t===`svg`?Pa.createElementNS(Ma,e):t===`mathml`?Pa.createElementNS(Na,e):n?Pa.createElement(e,{is:n}):Pa.createElement(e);return e===`select`&&r&&r.multiple!=null&&i.setAttribute(`multiple`,r.multiple),i},createText:e=>Pa.createTextNode(e),createComment:e=>Pa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Pa.querySelector(e),setScopeId(e,t){e.setAttribute(t,``)},insertStaticContent(e,t,n,r,i,a){let o=n?n.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),n),i!==a&&(i=i.nextSibling););else{Fa.innerHTML=ja(r===`svg`?`<svg>${e}</svg>`:r===`mathml`?`<math>${e}</math>`:e);let i=Fa.content;if(r===`svg`||r===`mathml`){let e=i.firstChild;for(;e.firstChild;)i.appendChild(e.firstChild);i.removeChild(e)}t.insertBefore(i,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},La=Symbol(`_vtc`);function Ra(e,t,n){let r=e[La];r&&(t=(t?[t,...r]:[...r]).join(` `)),t==null?e.removeAttribute(`class`):n?e.setAttribute(`class`,t):e.className=t}var za=Symbol(`_vod`),Ba=Symbol(`_vsh`),Va=Symbol(``),Ha=/(?:^|;)\\s*display\\s*:/;function Ua(e,t,n){let r=e.style,i=g(n),a=!1;if(n&&!i){if(t){if(g(t))for(let e of t.split(`;`)){let t=e.slice(0,e.indexOf(`:`)).trim();n[t]??Ga(r,t,``)}else for(let e in t)n[e]??Ga(r,e,``)}for(let i in n){i===`display`&&(a=!0);let o=n[i];o==null?Ga(r,i,``):Ya(e,i,!g(t)&&t?t[i]:void 0,o)||Ga(r,i,o)}}else if(i){if(t!==n){let e=r[Va];e&&(n+=`;`+e),r.cssText=n,a=Ha.test(n)}}else t&&e.removeAttribute(`style`);za in e&&(i&&t===n||(e[za]=a?r.display:``),e[Ba]&&(r.display=`none`))}var Wa=/\\s*!important$/;function Ga(e,t,n){if(d(n))n.forEach(n=>Ga(e,t,n));else if(n??=``,t.startsWith(`--`))Wa.test(n)?e.setProperty(t,n.replace(Wa,``),`important`):e.setProperty(t,n);else{let r=Ja(e,t);Wa.test(n)?e.setProperty(T(r),n.replace(Wa,``),`important`):e[r]=n}}var Ka=[`Webkit`,`Moz`,`ms`],qa={};function Ja(e,t){let n=qa[t];if(n)return n;let r=w(t);if(r!==`filter`&&r in e)return qa[t]=r;r=ae(r);for(let n=0;n<Ka.length;n++){let i=Ka[n]+r;if(i in e)return qa[t]=i}return t}function Ya(e,t,n,r){return e.tagName===`TEXTAREA`&&(t===`width`||t===`height`)&&g(r)&&n===r}var Xa=`http://www.w3.org/1999/xlink`;function Za(e,t,n,r,i,a=he(t)){r&&t.startsWith(`xlink:`)?n==null?e.removeAttributeNS(Xa,t.slice(6,t.length)):e.setAttributeNS(Xa,t,n):n==null||a&&!ge(n)?e.removeAttribute(t):e.setAttribute(t,a?``:_(n)?String(n):n)}function Qa(e,t,n,r,i){if(t===`innerHTML`||t===`textContent`){n!=null&&(e[t]=t===`innerHTML`?ja(n):n);return}let a=e.tagName;if(t===`value`&&a!==`PROGRESS`&&!a.includes(`-`)){let r=a===`OPTION`?e.getAttribute(`value`)||``:e.value,i=n==null?e.type===`checkbox`?`on`:``:String(n);r===i&&`_value`in e||(e.value=i),n??e.removeAttribute(t),e._value=n;return}let o=!1;if(n===``||n==null){let r=typeof e[t];r===`boolean`?n=ge(n):n==null&&r===`string`?(n=``,o=!0):r===`number`&&(n=0,o=!0)}try{e[t]=n}catch{}o&&e.removeAttribute(i||t)}function $a(e,t,n,r){e.addEventListener(t,n,r)}function eo(e,t,n,r){e.removeEventListener(t,n,r)}var to=Symbol(`_vei`);function no(e,t,n,r,i=null){let a=e[to]||(e[to]={}),o=a[t];if(r&&o)o.value=r;else{let[n,s]=ao(t);r?$a(e,n,a[t]=lo(r,i),s):o&&(eo(e,n,o,s),a[t]=void 0)}}var ro=/(Once|Passive|Capture)$/,io=/^on:?(?:Once|Passive|Capture)$/;function ao(e){let t,n;for(;(n=e.match(ro))&&!io.test(e);)t||={},e=e.slice(0,e.length-n[1].length),t[n[1].toLowerCase()]=!0;return[e[2]===`:`?e.slice(3):T(e.slice(2)),t]}var oo=0,so=Promise.resolve(),co=()=>oo||=(so.then(()=>oo=0),Date.now());function lo(e,t){let n=e=>{if(!e._vts)e._vts=Date.now();else if(e._vts<=n.attached)return;let r=n.value;if(d(r)){let n=e.stopImmediatePropagation;e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0};let i=r.slice(),a=[e];for(let n=0;n<i.length&&!e._stopped;n++){let e=i[n];e&&cn(e,t,5,a)}}else cn(r,t,5,[e])};return n.value=e,n.attached=co(),n}var uo=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,fo=(e,t,n,r,i,s)=>{let c=i===`svg`;t===`class`?Ra(e,r,c):t===`style`?Ua(e,n,r):a(t)?o(t)||no(e,t,n,r,s):(t[0]===`.`?(t=t.slice(1),1):t[0]===`^`?(t=t.slice(1),0):po(e,t,r,c))?(Qa(e,t,r),e.tagName.includes(`-`)||t!==`value`&&t!==`checked`&&t!==`selected`||Za(e,t,r,c,s,t!==`value`)):e._isVueCE&&(mo(e,t)||e._def.__asyncLoader&&(/[A-Z]/.test(t)||!g(r)))?Qa(e,w(t),r,s,t):(t===`true-value`?e._trueValue=r:t===`false-value`&&(e._falseValue=r),Za(e,t,r,c))};function po(e,t,n,r){if(r)return!!(t===`innerHTML`||t===`textContent`||t in e&&uo(t)&&h(n));if(t===`spellcheck`||t===`draggable`||t===`translate`||t===`autocorrect`||t===`sandbox`&&e.tagName===`IFRAME`||t===`form`||t===`list`&&e.tagName===`INPUT`||t===`type`&&e.tagName===`TEXTAREA`)return!1;if(t===`width`||t===`height`){let t=e.tagName;if(t===`IMG`||t===`VIDEO`||t===`CANVAS`||t===`SOURCE`)return!1}return uo(t)&&g(n)?!1:t in e}function mo(e,t){let n=e._def.props;if(!n)return!1;let r=w(t);return Array.isArray(n)?n.some(e=>w(e)===r):Object.keys(n).some(e=>w(e)===r)}var ho=e=>{let t=e.props[`onUpdate:modelValue`]||!1;return d(t)?e=>se(t,e):t};function go(e){e.target.composing=!0}function _o(e){let t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(`input`)))}var vo=Symbol(`_assign`),yo=Symbol(`_initialValue`);function bo(e,t,n){return t&&(e=e.trim()),n&&(e=ce(e)),e}var xo={created(e,{modifiers:{lazy:t,trim:n,number:r}},i){e.parentNode&&(e.type===`text`?e[yo]=e.defaultValue.replace(/[\\r\\n]/g,``):e.type===`textarea`&&(e[yo]=e.defaultValue.replace(/\\r\\n?/g,`\n`))),e[vo]=ho(i);let a=r||i.props&&i.props.type===`number`;$a(e,t?`change`:`input`,t=>{t.target.composing||e[vo](bo(e.value,n,a))}),(n||a)&&$a(e,`change`,()=>{e.value=bo(e.value,n,a)}),t||($a(e,`compositionstart`,go),$a(e,`compositionend`,_o),$a(e,`change`,_o))},mounted(e,{value:t,modifiers:{trim:n,number:r}}){let i=t??``,a=e[yo];delete e[yo],a!==void 0&&(e.type===`text`||e.type===`textarea`)&&e.value!==a?e[vo](bo(e.value,n,r)):e.value=i},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:i,number:a}},o){if(e[vo]=ho(o),e.composing)return;let s=(a||e.type===`number`)&&!/^0\\d/.test(e.value)?ce(e.value):e.value,c=t??``;if(s===c)return;let l=e.getRootNode();(l instanceof Document||l instanceof ShadowRoot)&&l.activeElement===e&&e.type!==`range`&&(r&&t===n||i&&e.value.trim()===c)||(e.value=c)}},So={deep:!0,created(e,{value:t,modifiers:{number:n}},r){e._modelValue=t,$a(e,`change`,()=>{let t=Array.prototype.filter.call(e.options,e=>e.selected).map(e=>n?ce(To(e)):To(e)),r=e.multiple,i=r?p(e._modelValue)?new Set(t):t:t[0],a=e._pendingValue=[r,r?d(i)?t.slice():t:i];try{e[vo](i)}finally{_n(()=>{e._pendingValue===a&&(e._pendingValue=void 0)})}}),e[vo]=ho(r)},mounted(e,{value:t}){wo(e,t)},beforeUpdate(e,{value:t},n){e._modelValue=t,e[vo]=ho(n)},updated(e,{value:t}){let n=e._pendingValue;e._pendingValue=void 0,n&&n[0]===e.multiple&&Co(t,n[1],n[0])||wo(e,t)}};function Co(e,t,n){if(!n||d(e))return xe(e,t);if(p(e)){if(e.size!==t.length)return!1;for(let n of t)if(!e.has(n))return!1;return!0}return!1}function wo(e,t){let n=e.multiple,r=d(t);if(!n||r||p(t)){for(let i=0,a=e.options.length;i<a;i++){let a=e.options[i],o=To(a);if(n){if(r){let e=typeof o;a.selected=e===`string`||e===`number`?t.some(e=>String(e)===String(o)):Se(t,o)>-1}else a.selected=t.has(o)}else if(xe(To(a),t)){e.selectedIndex!==i&&(e.selectedIndex=i);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function To(e){return`_value`in e?e._value:e.value}var Eo=s({patchProp:fo},Ia),Do;function Oo(){return Do||=Oi(Eo)}var ko=((...e)=>{let t=Oo().createApp(...e),{mount:n}=t;return t.mount=e=>{let r=jo(e);if(!r)return;let i=t._component;h(i)||i.render||i.template||(i.template=r.innerHTML),r.nodeType===1&&(r.textContent=``);let a=n(r,!1,Ao(r));return r instanceof Element&&(r.removeAttribute(`v-cloak`),r.setAttribute(`data-v-app`,``)),a},t});function Ao(e){if(e instanceof SVGElement)return`svg`;if(typeof MathMLElement==`function`&&e instanceof MathMLElement)return`mathml`}function jo(e){return g(e)?document.querySelector(e):e}var Mo=[{id:`vscode`,label:`VS Code`},{id:`cursor`,label:`Cursor`},{id:`webstorm`,label:`WebStorm`,experimental:!0},{id:`zed`,label:`Zed`},{id:`copy`,label:`コピーのみ`}];function No(e){return e.split(`/`).map((e,t)=>t<=1&&/^[A-Za-z]:$/.test(e)?e:encodeURIComponent(e)).join(`/`)}function Po(e,{file:t,line:n,col:r}){return`${e}://file${No(t.startsWith(`/`)?t:`/${t}`)}:${n}:${r}`}function Fo(e,t){let n=e=>/^[A-Za-z]:\\//.test(e)?e.toLowerCase():e,r=t.replace(/\\/$/,``);return n(e).startsWith(`${n(r)}/`)?e.slice(r.length+1):null}function Io(e,t){switch(e){case`vscode`:case`cursor`:case`zed`:return Po(e,t);case`webstorm`:{if(!t.root)return null;let e=Fo(t.file,t.root);if(e===null)return null;let n=t.root.replace(/\\/$/,``).split(`/`).at(-1);return`jetbrains://web-storm/navigate/reference?project=${encodeURIComponent(n)}&path=${No(e)}:${t.line}:${t.col}`}case`copy`:return null}}function Lo({file:e,line:t,col:n}){return`${e}:${t}:${n}`}var Ro={class:`brand mono`},zo=Yn({__name:`BrandLogo`,setup(e){return(e,t)=>(q(),J(`div`,Ro,[...t[0]||=[Y(`span`,{class:`logo`},[Z(`senr`),Y(`svg`,{width:`13`,height:`21`,viewBox:`4 0 34 54`,role:`img`,\"aria-label\":`i`},[Y(`polygon`,{points:`5,54 15,54 30,19 20,19`,fill:`var(--accent)`}),Y(`polygon`,{points:`22.6,13 32.6,13 36.5,4 26.5,4`,fill:`var(--accent)`})])],-1),Y(`span`,{class:`dev`},`dev`,-1)]]))}}),Bo=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},Vo=Bo(zo,[[`__scopeId`,`data-v-66b0125c`]]),Ho={class:`site-header`},Uo={class:`inner`},Wo=Bo(Yn({__name:`SiteHeader`,setup(e){return(e,t)=>(q(),J(`header`,Ho,[Y(`div`,Uo,[X(Vo),wr(e.$slots,`default`,{},void 0,!0)])]))}}),[[`__scopeId`,`data-v-93d68027`]]),Go={class:`editor mono`},Ko=[`value`],qo=Bo(Yn({__name:`EditorSelect`,props:jr({options:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=Xr(e,`modelValue`);return(n,r)=>(q(),J(`div`,Go,[r[1]||=Y(`label`,{for:`editor`},`editor`,-1),jn(Y(`select`,{id:`editor`,\"onUpdate:modelValue\":r[0]||=e=>t.value=e},[(q(!0),J(W,null,V(e.options,e=>(q(),J(`option`,{key:e.id,value:e.id},A(e.label),9,Ko))),128))],512),[[So,t.value]])]))}}),[[`__scopeId`,`data-v-27ba4f1c`]]),Jo=[`title`],Yo={key:0,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,\"stroke-width\":`2.2`,\"stroke-linecap\":`round`,\"stroke-linejoin\":`round`,\"aria-hidden\":`true`},Xo={\"aria-live\":`polite`},Zo=Bo(Yn({__name:`CopyButton`,props:{text:{},label:{},icon:{type:Boolean}},setup(e){let t=e,n=L(!1);async function r(){try{await navigator.clipboard.writeText(t.text)}catch{let e=document.createElement(`textarea`);e.value=t.text,document.body.append(e),e.select(),document.execCommand(`copy`),e.remove()}n.value=!0,setTimeout(()=>n.value=!1,1500)}return(t,i)=>(q(),J(`button`,{type:`button`,class:`copy`,title:e.text,onClick:r},[e.icon?(q(),J(`svg`,Yo,[...i[0]||=[Y(`rect`,{x:`9`,y:`9`,width:`11`,height:`11`,rx:`2`},null,-1),Y(`path`,{d:`M5 15V5a1 1 0 0 1 1-1h10`},null,-1)]])):Q(``,!0),Y(`span`,Xo,A(n.value?`コピーしました`:e.label??`コピー`),1)],8,Jo))}}),[[`__scopeId`,`data-v-2cfe427e`]]);function Qo(e){return`${e.kind===`handler`?`${e.name} のハンドラー`:`ミドルウェア ${e.name} `}が返した値を、レスポンスにできませんでした`}function $o(e){return e.split(\"`\").map((e,t)=>({text:e,code:t%2==1})).filter(e=>e.text!==``)}function es(e){return e===null?null:`${e.toFixed(1)}ms`}function ts(e){let t=e.reduce((e,t)=>e+t.self,0);return e.map(e=>({name:e.name,ms:`${es(e.self)}${e.failed?` ×`:``}`,pct:t===0?0:Math.round(e.self/t*100),failed:e.failed}))}function ns(e,t){if(t)return{shown:e,hidden:0};let n=e.filter(e=>e.kind!==`senri`);return{shown:n,hidden:e.length-n.length}}function rs(e,t){let n=t.trim().toLowerCase();return n===``?e:e.filter(e=>e.path.toLowerCase().includes(n)||e.method.toLowerCase().includes(n))}function is(e,t,n){let r=rs(e,t);return t.trim()===``?{shown:r.slice(0,n),rest:Math.max(r.length-n,0)}:{shown:r,rest:0}}var as=new Set([`GET`,`POST`,`PUT`,`PATCH`,`DELETE`]);function os(e){return as.has(e)?`var(--${e.toLowerCase()})`:`var(--text)`}var ss=`senri.editor`;function cs(e,t){try{let t=e?.getItem(ss);if(t&&Mo.some(e=>e.id===t))return t}catch{}return t.id}function ls(e,t){try{e?.setItem(ss,t)}catch{}}function us(e){return Mo.map(t=>({id:t.id,label:`${t.label}${e.detected&&t.id===e.id?`(自動判別)`:``}${t.experimental?`(実験的)`:``}`}))}function ds(e){let t=Mo.find(t=>t.id===e);return e===`copy`?null:`${t.label} で開く${t.experimental?`(実験的)`:``}`}var fs={class:`head`},ps={class:`mono summary`},ms={class:`method`},hs={class:`mono error-name`},gs={key:0,class:`mono location`},_s={class:`muted`},vs={class:`text`},ys={key:1,class:`mono location`},bs={class:`muted`},xs={class:`text`},Ss={class:`actions`},Cs=[`href`],ws={key:0,class:`mono code-frame`,\"aria-label\":`エラーが起きたコード`},Ts={class:`num`},Es={class:`src`},Ds={key:0,class:`code-line`},Os={class:`caret`},ks={key:1,class:`mono help`},As={class:`help-text`},js={key:0},Ms={class:`help-code`},Ns={class:`stack`},Ps={class:`mono stack-head`},Fs={class:`mono frames`},Is={class:`mark`},Ls={class:`fn`},Rs={class:`loc`},zs={key:0,class:`actions`},Bs=[`href`],Vs={key:0,class:`hidden-count`},Hs={class:`mono details`},Us={class:`detail`},Ws={class:`wrap`},Gs={key:0,class:`detail`},Ks={class:`layers`},qs={class:`layer-name`},Js={class:`bar`},Ys={class:`layer-ms`},Xs=[`href`],Zs={class:`page-footer`},Qs=Bo(Yn({__name:`ErrorPage`,props:{data:{}},setup(e){let t=e.data,n=typeof localStorage>`u`?void 0:localStorage,r=L(cs(n,t.editor));Rn(r,e=>ls(n,e));let i=us(t.editor),a=Da(()=>ds(r.value)),o=e=>({file:e.file,line:e.line,col:e.col,root:t.root}),s=e=>Io(r.value,o(e)),c=L(!1),l=Da(()=>ns(t.frames,c.value)),u=t.frames.filter(e=>e.kind===`senri`).length,d=e=>t.location!==null&&e.file===t.location.file&&e.line===t.location.line&&e.col===t.location.col,f=ts(t.layers),p=es(t.durationMs);return(e,n)=>(q(),J(W,null,[X(Wo,null,{default:An(()=>[X(qo,{modelValue:r.value,\"onUpdate:modelValue\":n[0]||=e=>r.value=e,options:R(i)},null,8,[`modelValue`,`options`])]),_:1}),Y(`main`,null,[Y(`section`,fs,[Y(`div`,ps,[Y(`span`,ms,A(R(t).request.method),1),Z(` `+A(R(t).request.path)+` · `+A(R(t).status)+` `+A(R(t).statusText),1),R(p)?(q(),J(W,{key:0},[Z(` · `+A(R(p)),1)],64)):Q(``,!0)]),Y(`h1`,null,[Y(`span`,hs,A(R(t).error.name)+`:`,1),Z(` `+A(R(t).error.message),1)]),R(t).origin?(q(),J(`div`,gs,[Y(`span`,_s,[n[2]||=Z(`--> `,-1),Y(`span`,vs,A(R(Qo)(R(t).origin)),1)])])):R(t).location?(q(),J(`div`,ys,[Y(`span`,bs,[n[3]||=Z(`--> `,-1),Y(`span`,xs,A(R(t).location.display),1),Z(`:`+A(R(t).location.line)+`:`+A(R(t).location.col),1)]),Y(`span`,Ss,[a.value&&s(R(t).location)?(q(),J(`a`,{key:0,href:s(R(t).location),class:`open`},[n[4]||=Y(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,\"stroke-width\":`2.2`,\"stroke-linecap\":`round`,\"stroke-linejoin\":`round`,\"aria-hidden\":`true`},[Y(`path`,{d:`M14 4h6v6`}),Y(`path`,{d:`M20 4l-9 9`}),Y(`path`,{d:`M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5`})],-1),Z(` `+A(a.value),1)],8,Cs)):Q(``,!0),X(Zo,{text:R(Lo)(o(R(t).location)),icon:``},null,8,[`text`])])])):Q(``,!0)]),R(t).code?(q(),J(`section`,ws,[(q(!0),J(W,null,V(R(t).code.lines,e=>(q(),J(W,{key:e.num},[Y(`div`,{class:k([`code-line`,{hit:e.hit}])},[Y(`span`,Ts,A(e.num),1),Y(`span`,Es,A(e.code||` `),1)],2),e.hit?(q(),J(`div`,Ds,[n[5]||=Y(`span`,{class:`num`},null,-1),Y(`span`,Os,A(R(t).code.caret)+` `+A(R(t).code.label),1)])):Q(``,!0)],64))),128))])):Q(``,!0),R(t).hint?(q(),J(`section`,ks,[n[7]||=Y(`span`,{class:`help-label`},`= help:`,-1),Y(`span`,As,[(q(!0),J(W,null,V(R($o)(R(t).hint.text),(e,t)=>(q(),J(W,{key:t},[e.code?(q(),J(`code`,js,A(e.text),1)):(q(),J(W,{key:1},[Z(A(e.text),1)],64))],64))),128))]),R(t).hint.code?(q(),J(W,{key:0},[n[6]||=Y(`span`,null,null,-1),Y(`code`,Ms,A(R(t).hint.code),1)],64)):Q(``,!0)])):Q(``,!0),Y(`section`,Ns,[Y(`div`,Ps,[n[8]||=Y(`h2`,{class:`section`},`// スタックトレース`,-1),R(u)>0?(q(),J(`button`,{key:0,type:`button`,class:`toggle`,onClick:n[1]||=e=>c.value=!c.value},A(c.value?`Senri 内部を隠す`:`Senri 内部も表示(${R(u)})`),1)):Q(``,!0)]),Y(`ol`,Fs,[(q(!0),J(W,null,V(l.value.shown,(e,t)=>(q(),J(`li`,{key:t,class:k([`frame`,e.kind])},[Y(`span`,Is,A(d(e)?`›`:``),1),Y(`span`,Ls,A(e.fn),1),Y(`span`,Rs,A(e.kind===`runtime`?e.file:`${e.display}:${e.line}:${e.col}`),1),e.kind===`runtime`?Q(``,!0):(q(),J(`span`,zs,[s(e)?(q(),J(`a`,{key:0,href:s(e),class:`open-small`},`開く`,8,Bs)):Q(``,!0),X(Zo,{text:R(Lo)(o(e))},null,8,[`text`])]))],2))),128)),l.value.hidden>0?(q(),J(`li`,Vs,`… Senri 内部のフレーム `+A(l.value.hidden)+`件`,1)):Q(``,!0)])]),Y(`section`,Hs,[Y(`div`,Us,[n[14]||=Y(`h2`,{class:`section`},`// リクエスト`,-1),Y(`dl`,null,[n[10]||=Y(`dt`,null,`method`,-1),Y(`dd`,null,A(R(t).request.method),1),n[11]||=Y(`dt`,null,`path`,-1),Y(`dd`,null,A(R(t).request.path),1),n[12]||=Y(`dt`,null,`route`,-1),Y(`dd`,null,A(R(t).request.route??`(マッチなし)`),1),n[13]||=Y(`dt`,null,`params`,-1),Y(`dd`,null,A(JSON.stringify(R(t).request.params)),1),R(t).request.userAgent?(q(),J(W,{key:0},[n[9]||=Y(`dt`,null,`user-agent`,-1),Y(`dd`,Ws,A(R(t).request.userAgent),1)],64)):Q(``,!0)])]),R(f).length>0?(q(),J(`div`,Gs,[n[15]||=Y(`h2`,{class:`section`},`// 通った順番`,-1),Y(`ol`,Ks,[(q(!0),J(W,null,V(R(f),(e,t)=>(q(),J(`li`,{key:t,class:k({failed:e.failed})},[Y(`span`,qs,A(e.name),1),Y(`span`,Js,[Y(`span`,{style:O({width:`${e.pct}%`})},null,4)]),Y(`span`,Ys,A(e.ms),1)],2))),128))]),R(t).dashboardUrl?(q(),J(`a`,{key:0,href:R(t).dashboardUrl,class:`dashboard-link`},`/_senri で詳しく見る →`,8,Xs)):Q(``,!0)])):Q(``,!0)]),Y(`footer`,Zs,[n[16]||=Z(` このページは開発モード(`,-1),n[17]||=Y(`code`,null,`createApp({ dev: true })`,-1),Z(`)でのみ表示されます。本番では「`+A(R(t).production)+`」だけが返ります。 `,1)])])],64))}}),[[`__scopeId`,`data-v-cf966a5e`]]),$s=[`href`],ec={class:`head`},tc={class:`target`},nc={key:0,class:`mono suggestion`},rc={class:`path`},ic={key:0,class:`diff`},ac={key:0,width:`18`,height:`18`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,\"stroke-width\":`2`,\"stroke-linecap\":`round`,\"stroke-linejoin\":`round`,\"aria-hidden\":`true`,class:`arrow`},oc={class:`note`},sc={class:`routes`},cc={class:`mono routes-head`},lc={class:`section`},uc={class:`filter`},dc={class:`mono route-list`},fc=[`href`],pc={key:1},mc={key:0,class:`more`},hc={key:1,class:`more`},gc=20,_c=Bo(Yn({__name:`NotFoundPage`,props:{data:{}},setup(e){let t=e.data,n=L(``),r=Da(()=>is(t.routes,n.value,gc));return(e,i)=>(q(),J(W,null,[X(Wo,null,{default:An(()=>[R(t).dashboardUrl?(q(),J(`a`,{key:0,href:R(t).dashboardUrl,class:`mono dashboard-link`},`/_senri`,8,$s)):Q(``,!0)]),_:1}),Y(`main`,null,[Y(`section`,ec,[i[2]||=Y(`div`,{class:`mono status`},`404 Not Found`,-1),Y(`h1`,null,[Y(`code`,tc,A(R(t).method)+` `+A(R(t).path),1),i[1]||=Z(` は見つかりませんでした `,-1)])]),R(t).suggestion?(q(),J(`section`,nc,[i[4]||=Y(`span`,{class:`help-label`},`= もしかして:`,-1),i[5]||=Y(`span`,null,null,-1),i[6]||=Y(`span`,null,null,-1),(q(),qi(xr(R(t).suggestion.link?`a`:`span`),{href:R(t).suggestion.link?R(t).suggestion.path:void 0,class:`suggested`},{default:An(()=>[Y(`span`,{class:`method`,style:O({color:R(os)(R(t).suggestion.method)})},A(R(t).suggestion.method),5),Y(`span`,rc,[(q(!0),J(W,null,V(R(t).suggestion.parts,(e,t)=>(q(),J(W,{key:t},[e.mark?(q(),J(`span`,ic,A(e.text),1)):(q(),J(W,{key:1},[Z(A(e.text),1)],64))],64))),128))]),R(t).suggestion.link?(q(),J(`svg`,ac,[...i[3]||=[Y(`path`,{d:`M5 12h14`},null,-1),Y(`path`,{d:`M13 6l6 6-6 6`},null,-1)]])):Q(``,!0)]),_:1},8,[`href`])),i[7]||=Y(`span`,null,null,-1),Y(`span`,oc,A(R(t).suggestion.note),1)])):Q(``,!0),Y(`section`,sc,[Y(`div`,cc,[Y(`h2`,lc,`// 登録されているルート(`+A(R(t).routes.length)+`)`,1),Y(`div`,uc,[i[8]||=Y(`label`,{for:`filter`},`filter`,-1),jn(Y(`input`,{id:`filter`,\"onUpdate:modelValue\":i[0]||=e=>n.value=e,type:`search`,placeholder:`/users`},null,512),[[xo,n.value]])])]),Y(`ul`,dc,[(q(!0),J(W,null,V(r.value.shown,e=>(q(),J(`li`,{key:`${e.method} ${e.path}`},[Y(`span`,{class:`route-method`,style:O({color:R(os)(e.method)})},A(e.method),5),e.link?(q(),J(`a`,{key:0,href:e.path},A(e.path),9,fc)):(q(),J(`span`,pc,A(e.path),1))]))),128)),r.value.shown.length===0?(q(),J(`li`,mc,`一致するルートはありません`)):Q(``,!0),r.value.rest>0?(q(),J(`li`,hc,`… ほか `+A(r.value.rest)+` 件(filter で絞り込めます)`,1)):Q(``,!0)])]),i[9]||=Y(`footer`,{class:`page-footer`},[Z(` このページは開発モード(`),Y(`code`,null,`createApp({ dev: true })`),Z(`)でのみ表示されます。本番では「404 Not Found」だけが返り、ルートの一覧は出ません。 `)],-1)])],64))}}),[[`__scopeId`,`data-v-989ec986`]]),vc=[{id:`all`,label:`全部`},{id:`2`,label:`2xx`},{id:`4`,label:`4xx`},{id:`5`,label:`5xx`}];function yc(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>(n===`all`||String(e.status)[0]===n)&&(r===``||e.path.toLowerCase().includes(r)))}function bc(e){return e>=500?`error`:e>=400?`warn`:e>=300?`redirect`:`ok`}function xc(e){let t=new Date(e),n=e=>String(e).padStart(2,`0`);return`${n(t.getHours())}:${n(t.getMinutes())}:${n(t.getSeconds())}.${String(t.getMilliseconds()).padStart(3,`0`)}`}var Sc=e=>`${e.toFixed(1)}ms`;function Cc(e,t,n){if(t.type===`clear`)return[];let r=e.filter(e=>e.id!==t.item.id);return[t.item,...r].slice(0,n)}function wc(){let e=0;return{start(){let t=++e;return()=>t===e}}}var Tc=e=>Math.min(Math.max(e,0),100);function Ec(e){let t=e.durationMs;return e.layers.map(e=>{let n=e.state===`skipped`||t<=0,r=n?0:Tc(e.start/t*100),i=n?100:Math.min(Tc(e.total/t*100),100-r),a=e.state===`skipped`?`未到達`:e.state===`failed`?`${Sc(e.self)} ✕ 例外`:e.state===`stopped`?`${Sc(e.self)} ← ここで終了`:`self ${e.self.toFixed(1)} / ${Sc(e.total)}`;return{name:e.name,indent:e.depth,left:r,width:i,selfWidth:e.total>0?Tc(e.self/e.total*100):100,state:e.state,label:a}})}function Dc(e){return[...e.middlewares.filter(e=>e.applies!==`no`).map(e=>({name:e.name,maybe:e.applies===`maybe`})),{name:`handler`,maybe:!1}]}function Oc(e){return e===null?`すべてのパス`:`${e} とその下`}function kc(e){return e.some(e=>e.anonymous)?`anonymous#番号 は無名の関数です。app.use(function auth(c, next) { … }) のように名前付きの関数にすると、ここに名前が出ます。`:null}function Ac(e){return e.avgSelfMs===null?`—`:`平均 ${Sc(e.avgSelfMs)}(${e.runs}件)`}function jc(e){let t=e.layers.find(e=>e.state===`stopped`);if(t){let n=e.layers.find(e=>e.state===`skipped`);return`${t.name} が next() を呼ばずに ${e.status} を返したので、${n?.name??`内側`} には届いていません。`}let n=e.layers.find(e=>e.state===`failed`);if(n)return`${n.name} で例外が起きて、onError が ${e.status} を返しました。`;if(e.layers.at(-1)?.name===`notFound`)return`一致するルートがないので notFound が動きました。`;if(e.durationMs>0){let t=[...e.layers].sort((e,t)=>t.self-e.self)[0];if(t){let n=Math.round(t.self/e.durationMs*100);if(n>=75)return`ほとんどの時間(${n}%)は ${t.name} で使われています。`}}return``}var Mc={class:`detail`,\"aria-label\":`リクエストの詳細`},Nc={class:`title`},Pc={class:`mono`},Fc={class:`query`},Ic={class:`mono sub`},Lc={class:`mono kv`},Rc={key:0,class:`mono error`},zc={class:`error-name`},Bc={class:`error-message`},Vc=[`href`],Hc={class:`block`},Uc={class:`mono timeline`},Wc={class:`row axis`},Gc={class:`axis-labels`},Kc={class:`track`},qc={class:`label`},Jc={key:0,class:`note`},Yc={class:`section`},Xc={class:`kv headers`},Zc=Bo(Yn({__name:`RequestDetail`,props:{record:{}},setup(e){let t=e,n=Da(()=>Ec(t.record)),r=Da(()=>jc(t.record));return(t,i)=>(q(),J(`section`,Mc,[Y(`div`,Nc,[Y(`h1`,Pc,[Y(`span`,{style:O({color:R(os)(e.record.method)})},A(e.record.method),5),Z(` `+A(e.record.path),1),Y(`span`,Fc,A(e.record.query),1)]),Y(`div`,Ic,[Y(`span`,{class:k([`status`,R(bc)(e.record.status)])},A(e.record.status),3),Z(` · `+A(R(Sc)(e.record.durationMs))+` · `+A(R(xc)(e.record.time)),1)])]),Y(`dl`,Lc,[i[0]||=Y(`dt`,null,`route`,-1),Y(`dd`,null,A(e.record.route??`(一致なし)`),1),i[1]||=Y(`dt`,null,`params`,-1),Y(`dd`,null,A(JSON.stringify(e.record.params)),1)]),e.record.error?(q(),J(`div`,Rc,[Y(`span`,zc,A(e.record.error.error.name)+`:`,1),Y(`span`,Bc,A(e.record.error.error.message),1),Y(`a`,{href:`/_senri/api/requests/${e.record.id}/error`},`エラーページで見る →`,8,Vc)])):Q(``,!0),Y(`div`,Hc,[i[5]||=ta(`<div class=\"mono block-head\" data-v-c3274c3a><h2 class=\"section\" data-v-c3274c3a>// 玉ねぎタイムライン</h2><span class=\"legend\" data-v-c3274c3a><span data-v-c3274c3a><i class=\"swatch self\" data-v-c3274c3a></i>自分の時間</span><span data-v-c3274c3a><i class=\"swatch total\" data-v-c3274c3a></i>下流の待ち時間</span></span></div>`,1),Y(`div`,Uc,[Y(`div`,Wc,[i[3]||=Y(`span`,null,null,-1),Y(`span`,Gc,[i[2]||=Y(`span`,null,`0ms`,-1),Y(`span`,null,A(R(Sc)(e.record.durationMs)),1)]),i[4]||=Y(`span`,null,null,-1)]),(q(!0),J(W,null,V(n.value,(e,t)=>(q(),J(`div`,{key:t,class:k([`row`,e.state])},[Y(`span`,{class:`name`,style:O({paddingLeft:`${e.indent*14}px`})},A(e.name),5),Y(`span`,Kc,[Y(`span`,{class:`bar`,style:O({left:`${e.left}%`,width:`${e.width}%`})},[Y(`span`,{class:`self`,style:O({width:`${e.selfWidth}%`})},null,4)],4)]),Y(`span`,qc,A(e.label),1)],2))),128))]),r.value?(q(),J(`p`,Jc,A(r.value),1)):Q(``,!0)]),(q(!0),J(W,null,V([[`// リクエストヘッダー`,e.record.requestHeaders],[`// レスポンスヘッダー`,e.record.responseHeaders]],([e,t])=>(q(),J(`div`,{key:e,class:`mono block`},[Y(`h2`,Yc,A(e),1),Y(`dl`,Xc,[(q(!0),J(W,null,V(t,([e,t],n)=>(q(),J(W,{key:n},[Y(`dt`,null,A(e),1),Y(`dd`,{class:k({masked:t===R(`***`)})},A(t===R(`***`)?`*** (伏せています)`:t),3)],64))),128))])]))),128))]))}}),[[`__scopeId`,`data-v-c3274c3a`]]),Qc={class:`routes`,\"aria-label\":`登録されているルート`},$c={class:`mono head`},el={class:`section`},tl={class:`filter`},nl={class:`mono list`},rl=[`href`],il={key:1,class:`path`},al={class:`chain`},ol={key:0,class:`arrow`,\"aria-hidden\":`true`},sl={key:0,class:`maybe-mark`,title:`パスによる`},cl={key:0,class:`empty`},ll=Bo(Yn({__name:`RoutesTab`,props:{routes:{},middlewares:{}},setup(e){let t=e,n=L(``),r=Da(()=>{let e=new Set(rs(t.routes.map(e=>({...e,link:!1})),n.value).map(e=>`${e.method} ${e.path}`));return[...t.routes].filter(t=>e.has(`${t.method} ${t.path}`)).sort((e,t)=>e.path.localeCompare(t.path)||e.method.localeCompare(t.method))}),i=e=>(e.method===`GET`||e.method===`ALL`)&&!e.path.includes(`:`);return(t,a)=>(q(),J(`section`,Qc,[Y(`div`,$c,[Y(`h2`,el,`// 登録されているルート(`+A(e.routes.length)+`)`,1),Y(`div`,tl,[a[1]||=Y(`label`,{for:`route-filter`},`filter`,-1),jn(Y(`input`,{id:`route-filter`,\"onUpdate:modelValue\":a[0]||=e=>n.value=e,type:`search`,placeholder:`/users`},null,512),[[xo,n.value]])])]),a[2]||=Y(`p`,{class:`lead`},[Z(` 各ルートに来たリクエストが、どのミドルウェアをどの順に通ってハンドラーに着くかです(左が外側)。 `),Y(`span`,{class:`maybe-mark`},`*`),Z(` はパスによってかかるもの(`),Y(`code`,null,`:page`),Z(` のようなパラメーターに何が来るか次第)です。 `)],-1),Y(`ul`,nl,[(q(!0),J(W,null,V(r.value,e=>(q(),J(`li`,{key:`${e.method} ${e.path}`},[Y(`span`,{class:`method`,style:O({color:R(os)(e.method)})},A(e.method),5),i(e)?(q(),J(`a`,{key:0,href:e.path,class:`path`},A(e.path),9,rl)):(q(),J(`span`,il,A(e.path),1)),Y(`span`,al,[(q(!0),J(W,null,V(R(Dc)(e),(e,t)=>(q(),J(W,{key:t},[t>0?(q(),J(`span`,ol,`→`)):Q(``,!0),Y(`span`,{class:k({handler:e.name===`handler`,maybe:e.maybe})},[Z(A(e.name),1),e.maybe?(q(),J(`span`,sl,`*`)):Q(``,!0)],2)],64))),128))])]))),128)),r.value.length===0?(q(),J(`li`,cl,`一致するルートはありません`)):Q(``,!0)])]))}}),[[`__scopeId`,`data-v-d71ba0f1`]]),ul={class:`middleware`,\"aria-label\":`ミドルウェア`},dl={class:`section`},fl={class:`mono onion`},pl={class:`order`},ml={class:`name`},hl={class:`scope`},gl={class:`avg`},_l={key:0,class:`lead`},vl={key:1,class:`lead hint`},yl=Bo(Yn({__name:`MiddlewareTab`,props:{initial:{}},setup(e){let t=L(e.initial),n=Da(()=>kc(t.value));return ur(async()=>{let e=await fetch(`/_senri/api/middleware`);e.ok&&(t.value=await e.json())}),(e,r)=>(q(),J(`section`,ul,[Y(`h2`,dl,`// ミドルウェア(`+A(t.value.length)+`)`,1),r[1]||=Y(`p`,{class:`lead`},[Y(`code`,null,`app.use()`),Z(` で登録した順に、外側から内側へ通ります。`),Y(`code`,null,`next()`),Z(` を呼ぶと次の行へ進み、ハンドラーまで行ったら、逆の順に戻ってきます。 `)],-1),Y(`ol`,fl,[(q(!0),J(W,null,V(t.value,(e,t)=>(q(),J(`li`,{key:e.order,style:O({paddingLeft:`${t*20}px`})},[Y(`span`,pl,A(e.order),1),Y(`span`,ml,A(e.name),1),Y(`span`,hl,A(R(Oc)(e.path)),1),Y(`span`,gl,A(R(Ac)(e)),1)],4))),128)),Y(`li`,{class:`handler`,style:O({paddingLeft:`${t.value.length*20}px`})},[...r[0]||=[Y(`span`,{class:`order`},`→`,-1),Y(`span`,{class:`name`},`handler`,-1),Y(`span`,{class:`scope`},`マッチしたルートのハンドラー`,-1),Y(`span`,{class:`avg`},null,-1)]],4)]),t.value.length===0?(q(),J(`p`,_l,`まだミドルウェアは登録されていません。`)):Q(``,!0),n.value?(q(),J(`p`,vl,A(n.value),1)):Q(``,!0)]))}}),[[`__scopeId`,`data-v-9bf292b7`]]),bl={class:`dash-header`},xl={class:`inner mono`},Sl={class:`left`},Cl={\"aria-label\":`ダッシュボードのメニュー`},wl=[`aria-current`],Tl=[`aria-current`],El={class:`count`},Dl=[`aria-current`],Ol={class:`count`},kl={class:`right`},Al={class:`live`},jl={key:0,class:`dash-main requests`},Ml={class:`list`,\"aria-label\":`リクエスト一覧`},Nl={class:`mono toolbar`},Pl={class:`filter`},Fl={role:`group`,\"aria-label\":`ステータスで絞り込む`,class:`status-filters`},Il=[`aria-pressed`,`onClick`],Ll={class:`mono rows`},Rl=[`aria-pressed`,`onClick`],zl={class:`muted`},Bl={class:`path`},Vl={key:0,class:`empty`},Hl={class:`mono foot`},Ul={key:1,class:`detail-pane empty`},Wl={key:1,class:`dash-main`},Gl={key:2,class:`dash-main`},Kl=Bo(Yn({__name:`DashboardPage`,props:{data:{}},setup(e){let t=e,n=location.host,r=L(`requests`),i=L(null);function a(){let[e,t]=location.hash.replace(/^#/,``).split(`/`);r.value=e===`routes`||e===`middleware`?e:`requests`,i.value=r.value===`requests`&&t?t:i.value}let o=L(t.data.requests),s=L(``),c=L(`all`),l=Da(()=>yc(o.value,s.value,c.value)),u=L(!1);async function d(){let e=await fetch(`/_senri/api/requests`);e.ok&&(o.value=await e.json())}let f=null;function p(){f=new EventSource(`/_senri/api/events`),f.addEventListener(`open`,()=>{u.value||d(),u.value=!0}),f.addEventListener(`error`,()=>u.value=!1),f.addEventListener(`request`,e=>{let n=JSON.parse(e.data);o.value=Cc(o.value,{type:`request`,item:n},t.data.max),i.value===null&&(i.value=n.id)}),f.addEventListener(`clear`,()=>{o.value=Cc(o.value,{type:`clear`},t.data.max),i.value=null})}async function m(){await fetch(`/_senri/api/clear`,{method:`POST`})}let h=L(null),g=L(!1),_=wc();Rn(i,async e=>{let t=_.start();if(h.value=null,g.value=!1,e===null)return;let n=await fetch(`/_senri/api/requests/${encodeURIComponent(e)}`),r=n.ok?await n.json():null;t()&&(r?h.value=r:g.value=!0)},{immediate:!1});function v(e){location.hash=`requests/${e}`}return ur(()=>{a(),i.value===null&&(i.value=o.value[0]?.id??null),window.addEventListener(`hashchange`,a),p()}),mr(()=>{window.removeEventListener(`hashchange`,a),f?.close()}),(t,a)=>(q(),J(W,null,[Y(`header`,bl,[Y(`div`,xl,[Y(`div`,Sl,[X(Vo),Y(`nav`,Cl,[Y(`a`,{href:`#requests`,\"aria-current\":r.value===`requests`?`page`:void 0},`リクエスト`,8,wl),Y(`a`,{href:`#routes`,\"aria-current\":r.value===`routes`?`page`:void 0},[a[1]||=Z(`ルート `,-1),Y(`span`,El,A(e.data.routes.length),1)],8,Tl),Y(`a`,{href:`#middleware`,\"aria-current\":r.value===`middleware`?`page`:void 0},[a[2]||=Z(`ミドルウェア `,-1),Y(`span`,Ol,A(e.data.middlewares.length),1)],8,Dl)])]),Y(`div`,kl,[Y(`span`,Al,[Y(`i`,{class:k({on:u.value}),\"aria-hidden\":`true`},null,2),Z(A(u.value?`live`:`offline`),1)]),Y(`span`,null,A(R(n)),1),r.value===`requests`?(q(),J(`button`,{key:0,type:`button`,onClick:m},`クリア`)):Q(``,!0)])])]),r.value===`requests`?(q(),J(`main`,jl,[Y(`section`,Ml,[Y(`div`,Nl,[Y(`div`,Pl,[a[3]||=Y(`label`,{for:`q`},`filter`,-1),jn(Y(`input`,{id:`q`,\"onUpdate:modelValue\":a[0]||=e=>s.value=e,type:`search`,placeholder:`/users`},null,512),[[xo,s.value]])]),Y(`div`,Fl,[(q(!0),J(W,null,V(R(vc),e=>(q(),J(`button`,{key:e.id,type:`button`,\"aria-pressed\":c.value===e.id,onClick:t=>c.value=e.id},A(e.label),9,Il))),128))])]),Y(`div`,Ll,[a[4]||=Y(`div`,{class:`row head`},[Y(`span`,null,`// 時刻`),Y(`span`,null,`method`),Y(`span`,null,`path`),Y(`span`,null,`status`),Y(`span`,{class:`num`},`time`)],-1),(q(!0),J(W,null,V(l.value,e=>(q(),J(`button`,{key:e.id,type:`button`,class:`row`,\"aria-pressed\":e.id===i.value,onClick:t=>v(e.id)},[Y(`span`,zl,A(R(xc)(e.time).slice(0,8)),1),Y(`span`,{class:`method`,style:O({color:R(os)(e.method)})},A(e.method),5),Y(`span`,Bl,A(e.path),1),Y(`span`,{class:k([`status`,R(bc)(e.status)])},A(e.status),3),Y(`span`,{class:k([`num`,{slow:e.durationMs>=10}])},A(R(Sc)(e.durationMs)),3)],8,Rl))),128)),l.value.length===0?(q(),J(`p`,Vl,A(o.value.length===0?`まだリクエストがありません。アプリを開くと、ここに増えていきます。`:`一致するリクエストはありません`),1)):Q(``,!0)]),Y(`div`,Hl,`直近 `+A(e.data.max)+` 件まで保持 · 再起動で消えます`,1)]),h.value?(q(),qi(Zc,{key:0,record:h.value,class:`detail-pane`},null,8,[`record`])):g.value?(q(),J(`p`,Ul,` この記録はもうありません(直近 `+A(e.data.max)+` 件だけ保持しています)。 `,1)):Q(``,!0)])):r.value===`routes`?(q(),J(`main`,Wl,[X(ll,{routes:e.data.routes,middlewares:e.data.middlewares},null,8,[`routes`,`middlewares`])])):(q(),J(`main`,Gl,[X(yl,{initial:e.data.middlewares},null,8,[`initial`])]))],64))}}),[[`__scopeId`,`data-v-9405bfd2`]]),ql=Yn({__name:`App`,props:{data:{}},setup(e){return(t,n)=>e.data.kind===`error`?(q(),qi(Qs,{key:0,data:e.data},null,8,[`data`])):e.data.kind===`notFound`?(q(),qi(_c,{key:1,data:e.data},null,8,[`data`])):(q(),qi(Kl,{key:2,data:e.data},null,8,[`data`]))}});async function Jl(){let e=document.getElementById(`senri-data`)?.textContent??``;return JSON.parse(e)}ko(ql,{data:await Jl()}).mount(`#app`);</script>\n <style rel=\"stylesheet\" crossorigin>.brand[data-v-66b0125c]{align-items:baseline;gap:14px;display:flex}.logo[data-v-66b0125c]{letter-spacing:-.03em;align-items:flex-end;font-size:22px;font-weight:800;line-height:1;display:inline-flex}.logo svg[data-v-66b0125c]{margin-left:-1px}.dev[data-v-66b0125c]{color:var(--muted);font-size:13px}.site-header[data-v-93d68027]{border-bottom:1px solid var(--border)}.inner[data-v-93d68027]{box-sizing:border-box;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;max-width:1080px;margin:0 auto;padding:14px 32px;display:flex}.editor[data-v-27ba4f1c]{align-items:center;gap:10px;font-size:13px;display:flex}label[data-v-27ba4f1c]{color:var(--muted)}select[data-v-27ba4f1c]{border:1px solid var(--border);background:var(--bg);border-radius:6px;min-height:36px;padding:0 10px;font-size:13px}.copy[data-v-2cfe427e]{min-height:32px;color:var(--muted);font-family:var(--mono);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;padding:0 8px;font-size:13px;display:inline-flex}.copy[data-v-2cfe427e]:hover{color:var(--text)}.muted[data-v-cf966a5e]{color:var(--muted)}.text[data-v-cf966a5e]{color:var(--text)}.head[data-v-cf966a5e]{flex-direction:column;gap:10px;display:flex}.summary[data-v-cf966a5e]{color:var(--muted);font-size:14px}.method[data-v-cf966a5e]{color:var(--text);font-weight:700}h1[data-v-cf966a5e]{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0;font-size:34px;font-weight:700;line-height:1.3}.error-name[data-v-cf966a5e]{color:var(--accent-text);font-weight:800}.location[data-v-cf966a5e]{flex-wrap:wrap;align-items:center;gap:6px 16px;font-size:14px;display:flex}.actions[data-v-cf966a5e]{gap:4px;display:flex}.open[data-v-cf966a5e]{min-height:36px;color:var(--accent-text);border-radius:6px;align-items:center;gap:6px;padding:0 10px;font-weight:700;text-decoration:none;display:inline-flex}.open[data-v-cf966a5e]:hover{text-decoration:underline}.code-frame[data-v-cf966a5e]{background:var(--code);border-radius:8px;padding:16px 0;font-size:14px;line-height:1.75;overflow-x:auto}.code-line[data-v-cf966a5e]{white-space:pre;color:var(--muted);display:flex}.code-line.hit[data-v-cf966a5e]{background:var(--hit-bg);color:var(--text)}.num[data-v-cf966a5e]{text-align:right;box-sizing:border-box;width:64px;color:var(--num);-webkit-user-select:none;user-select:none;flex-shrink:0;padding-right:20px}.hit .num[data-v-cf966a5e]{color:var(--accent-text)}.caret[data-v-cf966a5e]{color:var(--accent);font-weight:700}.help[data-v-cf966a5e]{grid-template-columns:max-content 1fr;gap:6px 12px;font-size:14px;display:grid}.help-label[data-v-cf966a5e]{color:var(--help-text);font-weight:700}.help-text[data-v-cf966a5e]{font-family:var(--sans);font-size:15px}.help-code[data-v-cf966a5e]{color:var(--muted);white-space:pre;overflow-x:auto}.stack[data-v-cf966a5e]{flex-direction:column;gap:12px;display:flex}.stack-head[data-v-cf966a5e]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.toggle[data-v-cf966a5e]{min-height:32px;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 8px;font-size:13px;text-decoration:underline}.frames[data-v-cf966a5e]{margin:0;padding:0;font-size:14px;list-style:none}.frame[data-v-cf966a5e]{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 16px;padding:10px 0;display:flex}.frame.senri[data-v-cf966a5e],.frame.runtime[data-v-cf966a5e]{color:var(--muted)}.mark[data-v-cf966a5e]{width:14px;color:var(--accent);font-weight:800}.fn[data-v-cf966a5e]{min-width:120px;font-weight:700}.loc[data-v-cf966a5e]{color:var(--muted);overflow-wrap:anywhere;flex:280px}.open-small[data-v-cf966a5e]{align-items:center;min-height:32px;padding:0 8px;font-size:13px;display:inline-flex}.hidden-count[data-v-cf966a5e]{border-top:1px solid var(--border);color:var(--muted);padding:10px 0 10px 30px;font-size:13px}.details[data-v-cf966a5e]{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:40px;font-size:14px;display:grid}.detail[data-v-cf966a5e]{flex-direction:column;gap:12px;display:flex}dl[data-v-cf966a5e]{grid-template-columns:max-content 1fr;gap:6px 24px;margin:0;display:grid}dt[data-v-cf966a5e]{color:var(--muted)}dd[data-v-cf966a5e]{margin:0}.wrap[data-v-cf966a5e]{overflow-wrap:anywhere}.layers[data-v-cf966a5e]{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.layers li[data-v-cf966a5e]{grid-template-columns:88px 1fr 72px;align-items:center;gap:12px;display:grid}.layer-name[data-v-cf966a5e]{text-overflow:ellipsis;font-weight:700;overflow:hidden}.bar[data-v-cf966a5e]{background:var(--code);height:6px;display:block}.bar span[data-v-cf966a5e]{background:var(--muted);height:100%;display:block}.failed .bar span[data-v-cf966a5e]{background:var(--accent)}.layer-ms[data-v-cf966a5e]{text-align:right;color:var(--muted)}.failed .layer-ms[data-v-cf966a5e]{color:var(--accent-text)}.dashboard-link[data-v-cf966a5e]{color:var(--accent-text);font-size:13px}.head[data-v-989ec986]{flex-direction:column;gap:10px;display:flex}.status[data-v-989ec986]{color:var(--muted);font-size:14px}h1[data-v-989ec986]{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0;font-size:34px;font-weight:700;line-height:1.3}.target[data-v-989ec986]{color:var(--warn-text);font-weight:800}.suggestion[data-v-989ec986]{grid-template-columns:max-content 1fr;align-items:center;gap:10px 12px;font-size:14px;display:grid}.help-label[data-v-989ec986]{color:var(--help-text);font-weight:700}.suggested[data-v-989ec986]{background:var(--code);min-height:48px;color:var(--text);border-radius:8px;justify-self:start;align-items:center;gap:14px;padding:0 16px;font-size:20px;text-decoration:none;display:inline-flex}.suggested .method[data-v-989ec986],.suggested .path[data-v-989ec986]{font-weight:700}.diff[data-v-989ec986]{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.arrow[data-v-989ec986]{color:var(--muted)}.note[data-v-989ec986],.dashboard-link[data-v-989ec986]{color:var(--muted);font-size:13px}.routes[data-v-989ec986]{flex-direction:column;gap:12px;display:flex}.routes-head[data-v-989ec986]{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.filter[data-v-989ec986]{align-items:center;gap:10px;display:flex}.filter label[data-v-989ec986]{color:var(--muted);font-size:13px}.filter input[data-v-989ec986]{font-family:var(--mono);box-sizing:border-box;border:1px solid var(--border);background:var(--bg);border-radius:6px;width:220px;max-width:100%;min-height:36px;padding:0 10px;font-size:13px}.route-list[data-v-989ec986]{margin:0;padding:0;font-size:14px;list-style:none}.route-list li[data-v-989ec986]{border-top:1px solid var(--border);overflow-wrap:anywhere;align-items:center;gap:16px;padding:9px 0;display:flex}.route-method[data-v-989ec986]{flex-shrink:0;width:64px;font-weight:700}.more[data-v-989ec986]{color:var(--muted);font-size:13px;padding-left:80px!important}.detail[data-v-c3274c3a]{flex-direction:column;gap:28px;min-width:0;display:flex}.title[data-v-c3274c3a]{flex-direction:column;gap:6px;display:flex}h1[data-v-c3274c3a]{letter-spacing:-.01em;overflow-wrap:anywhere;margin:0;font-size:24px;font-weight:800}.query[data-v-c3274c3a]{color:var(--muted);font-weight:400}.sub[data-v-c3274c3a]{color:var(--muted);font-size:14px}.status[data-v-c3274c3a]{font-weight:700}.status.ok[data-v-c3274c3a]{color:var(--ok)}.status.redirect[data-v-c3274c3a]{color:var(--redirect)}.status.warn[data-v-c3274c3a]{color:var(--warn-text)}.status.error[data-v-c3274c3a]{color:var(--accent-text)}.kv[data-v-c3274c3a]{grid-template-columns:max-content 1fr;gap:6px 24px;margin:0;font-size:14px;display:grid}.kv dt[data-v-c3274c3a]{color:var(--muted)}.kv dd[data-v-c3274c3a]{overflow-wrap:anywhere;margin:0}.headers[data-v-c3274c3a]{gap:4px 24px;font-size:13px}.masked[data-v-c3274c3a]{color:var(--muted)}.error[data-v-c3274c3a]{flex-wrap:wrap;align-items:baseline;gap:6px 16px;font-size:14px;display:flex}.error-name[data-v-c3274c3a]{color:var(--accent-text);font-weight:800}.error-message[data-v-c3274c3a]{font-family:var(--sans)}.error a[data-v-c3274c3a]{color:var(--accent-text);font-size:13px}.block[data-v-c3274c3a]{flex-direction:column;gap:12px;display:flex}.block-head[data-v-c3274c3a]{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.legend[data-v-c3274c3a]{color:var(--muted);gap:16px;font-size:12px;display:flex}.legend span[data-v-c3274c3a]{align-items:center;gap:6px;display:inline-flex}.swatch[data-v-c3274c3a]{width:14px;height:8px;display:inline-block}.swatch.self[data-v-c3274c3a]{background:var(--self-bg)}.swatch.total[data-v-c3274c3a]{background:var(--total-bg)}.timeline[data-v-c3274c3a]{flex-direction:column;gap:10px;font-size:13px;display:flex}.row[data-v-c3274c3a]{grid-template-columns:140px minmax(0,1fr) 132px;align-items:center;gap:12px;display:grid}.axis[data-v-c3274c3a]{color:var(--muted);font-size:11px}.axis-labels[data-v-c3274c3a]{justify-content:space-between;display:flex}.name[data-v-c3274c3a]{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.track[data-v-c3274c3a]{background:var(--track);height:18px;display:block;position:relative}.bar[data-v-c3274c3a]{background:var(--total-bg);display:block;position:absolute;top:0;bottom:0}.self[data-v-c3274c3a]{background:var(--self-bg);height:100%;display:block}.label[data-v-c3274c3a]{text-align:right;color:var(--muted);white-space:nowrap}.row.stopped .self[data-v-c3274c3a]{background:var(--warn-text)}.row.stopped .label[data-v-c3274c3a]{color:var(--warn-text)}.row.failed .bar[data-v-c3274c3a],.row.failed .self[data-v-c3274c3a]{background:var(--accent)}.row.failed .name[data-v-c3274c3a],.row.failed .label[data-v-c3274c3a]{color:var(--accent-text)}.row.skipped .name[data-v-c3274c3a]{color:var(--muted)}.row.skipped .bar[data-v-c3274c3a]{outline:1px dashed var(--border);outline-offset:-1px;background:0 0}.row.skipped .self[data-v-c3274c3a]{display:none}.note[data-v-c3274c3a]{color:var(--muted);margin:0;font-size:14px}.routes[data-v-d71ba0f1]{flex-direction:column;gap:12px;display:flex}.head[data-v-d71ba0f1]{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.filter[data-v-d71ba0f1]{align-items:center;gap:10px;font-size:13px;display:flex}.filter label[data-v-d71ba0f1]{color:var(--muted)}.filter input[data-v-d71ba0f1]{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);border-radius:6px;width:220px;max-width:100%;min-height:36px;padding:0 10px;font-size:13px}.lead[data-v-d71ba0f1]{color:var(--muted);margin:0;font-size:14px}.list[data-v-d71ba0f1]{margin:0;padding:0;font-size:14px;list-style:none}.list li[data-v-d71ba0f1]{border-top:1px solid var(--border);grid-template-columns:72px minmax(160px,320px) 1fr;align-items:baseline;gap:16px;padding:9px 0;display:grid}.method[data-v-d71ba0f1]{font-weight:700}.path[data-v-d71ba0f1]{overflow-wrap:anywhere}.chain[data-v-d71ba0f1]{color:var(--muted);flex-wrap:wrap;gap:4px 8px;display:flex}.chain .handler[data-v-d71ba0f1]{color:var(--text);font-weight:700}.maybe[data-v-d71ba0f1]{font-style:italic}.maybe-mark[data-v-d71ba0f1]{color:var(--warn-text);margin-left:2px}.arrow[data-v-d71ba0f1]{color:var(--border)}.empty[data-v-d71ba0f1]{color:var(--muted);display:block!important}.middleware[data-v-9bf292b7]{flex-direction:column;gap:12px;max-width:960px;display:flex}.lead[data-v-9bf292b7]{color:var(--muted);margin:0;font-size:14px}.onion[data-v-9bf292b7]{margin:0;padding:0;font-size:14px;list-style:none}.onion li[data-v-9bf292b7]{border-top:1px solid var(--border);grid-template-columns:32px minmax(120px,200px) 1fr max-content;align-items:baseline;gap:16px;padding-top:10px;padding-bottom:10px;display:grid}.order[data-v-9bf292b7]{color:var(--accent-text);font-weight:700}.name[data-v-9bf292b7]{font-weight:700}.scope[data-v-9bf292b7],.avg[data-v-9bf292b7]{color:var(--muted)}.handler .name[data-v-9bf292b7]{color:var(--text)}.handler .order[data-v-9bf292b7]{color:var(--muted)}.hint[data-v-9bf292b7]{color:var(--help-text)}.dash-header[data-v-9405bfd2]{border-bottom:1px solid var(--border)}.inner[data-v-9405bfd2]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 24px;padding:0 32px;display:flex}.left[data-v-9405bfd2]{flex-wrap:wrap;align-items:center;gap:8px 28px;display:flex}.left[data-v-9405bfd2] .brand{padding:14px 0}nav[data-v-9405bfd2]{gap:4px;font-size:14px;display:flex}nav a[data-v-9405bfd2]{min-height:48px;color:var(--muted);align-items:center;padding:0 12px;text-decoration:none;display:inline-flex}nav a[aria-current=page][data-v-9405bfd2]{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);font-weight:700}.count[data-v-9405bfd2]{margin-left:6px}.right[data-v-9405bfd2]{color:var(--muted);align-items:center;gap:16px;font-size:13px;display:flex}.live[data-v-9405bfd2]{align-items:center;gap:8px;display:inline-flex}.live i[data-v-9405bfd2]{background:var(--border);border-radius:50%;width:8px;height:8px;display:inline-block}.live i.on[data-v-9405bfd2]{background:var(--live)}.right button[data-v-9405bfd2],.status-filters button[data-v-9405bfd2]{cursor:pointer;border-radius:6px;min-height:36px;padding:0 10px;font-size:13px}.right button[data-v-9405bfd2]{border:1px solid var(--border);background:0 0}.dash-main[data-v-9405bfd2]{max-width:none;margin:0;padding:24px 32px 48px;display:block}.requests[data-v-9405bfd2]{flex-flow:wrap;align-items:flex-start;gap:32px;display:flex}.list[data-v-9405bfd2]{flex-direction:column;flex:640px;gap:12px;min-width:0;display:flex}.detail-pane[data-v-9405bfd2]{flex:520px}.toolbar[data-v-9405bfd2]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.filter[data-v-9405bfd2]{align-items:center;gap:10px;display:flex}.filter label[data-v-9405bfd2]{color:var(--muted)}.filter input[data-v-9405bfd2]{box-sizing:border-box;border:1px solid var(--border);background:var(--bg);border-radius:6px;width:220px;max-width:100%;min-height:36px;padding:0 10px;font-size:13px}.status-filters[data-v-9405bfd2]{gap:2px;display:flex}.status-filters button[data-v-9405bfd2]{color:var(--muted);background:0 0;border:none}.status-filters button[aria-pressed=true][data-v-9405bfd2]{background:var(--row-sel);color:var(--text);font-weight:700}.rows[data-v-9405bfd2]{font-size:14px}.row[data-v-9405bfd2]{border:none;border-top:1px solid var(--border);text-align:left;cursor:pointer;background:0 0;grid-template-columns:92px 72px minmax(0,1fr) 56px 72px;gap:12px;width:100%;padding:10px 12px;font-size:14px;display:grid}.row.head[data-v-9405bfd2]{color:var(--muted);cursor:default;border-top:none;padding:6px 12px;font-size:12px}.row[aria-pressed=true][data-v-9405bfd2]{background:var(--row-sel)}.muted[data-v-9405bfd2]{color:var(--muted)}.method[data-v-9405bfd2],.status[data-v-9405bfd2]{font-weight:700}.path[data-v-9405bfd2]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status.ok[data-v-9405bfd2]{color:var(--ok)}.status.redirect[data-v-9405bfd2]{color:var(--redirect)}.status.warn[data-v-9405bfd2]{color:var(--warn-text)}.status.error[data-v-9405bfd2]{color:var(--accent-text)}.num[data-v-9405bfd2]{text-align:right;color:var(--muted)}.num.slow[data-v-9405bfd2]{color:var(--warn-text)}.foot[data-v-9405bfd2]{color:var(--muted);font-size:12px}.empty[data-v-9405bfd2]{color:var(--muted);margin:0;padding:16px 12px;font-size:14px}:root{--bg:#fff;--border:#e4e5e8;--text:#111418;--muted:#5b616a;--code:#f5f6f8;--hit-bg:#fdecea;--accent:#e3412b;--accent-text:#b42a17;--help-text:#1f55d6;--warn-text:#8a5a00;--num:#8a9099;--get:#0b6b43;--post:#0b5e70;--delete:#b42a17;--put:#7a4f00;--patch:#7a2e8a;--row-sel:#f1f2f5;--track:#f5f6f8;--total-bg:#d5d8de;--self-bg:#3a3f47;--ok:#0b6b43;--redirect:#0b5e70;--live:#0e9f6e;--mono:\"JetBrains Mono\", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--sans:\"Noto Sans JP\", system-ui, sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#0e1013;--border:#262a31;--text:#eef0f2;--muted:#a3a9b2;--code:#16191e;--hit-bg:#2a1714;--accent:#ff6a52;--accent-text:#ff8a75;--help-text:#7fb2ff;--warn-text:#f2c14e;--num:#5e646d;--get:#5fd39a;--post:#5cc8dd;--delete:#ff8a75;--put:#f2c14e;--patch:#d79be6;--row-sel:#1d2128;--track:#16191e;--total-bg:#3a404a;--self-bg:#c9ced6;--ok:#5fd39a;--redirect:#5cc8dd;--live:#5fd39a}}body{background:var(--bg);color:var(--text);font-family:var(--sans);margin:0;font-size:15px;line-height:1.6}code,.mono{font-family:var(--mono);font-variant-ligatures:none}a{color:inherit}button,select,input{font:inherit;color:inherit}main{box-sizing:border-box;flex-direction:column;gap:40px;max-width:1080px;margin:0 auto;padding:56px 32px 72px;display:flex}h2.section{font-family:var(--mono);color:var(--muted);margin:0;font-size:14px;font-weight:700}.page-footer{border-top:1px solid var(--border);color:var(--muted);padding-top:20px;font-size:13px}\n/*$vite$:1*/</style>\n </head>\n <body>\n <!-- サーバーがここに簡易表示を入れる。Vue が動けば置き換わる(src/dev/fallback.ts) -->\n <div id=\"app\"><!--senri:fallback--></div>\n <!-- サーバーがここにエラー情報の JSON を入れる(src/dev/render.ts) -->\n <script type=\"application/json\" id=\"senri-data\"><!--senri:data--></script>\n </body>\n</html>\n";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Context } from "../context.ts";
|
|
2
|
+
import type { ErrorHandler } from "../errors.ts";
|
|
3
|
+
export declare function withErrorPage(base: ErrorHandler, dev: boolean): ErrorHandler;
|
|
4
|
+
export declare function finishErrorPage(c: Context, res: Response): Promise<Response>;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { buildErrorPageData } from "./error-page.js";
|
|
2
|
+
import { errorFallback } from "./fallback.js";
|
|
3
|
+
import { PAGE_HTML } from "./page.generated.js";
|
|
4
|
+
import { renderPage, wantsHtml } from "./render.js";
|
|
5
|
+
const MARK = "x-senri-dev-page";
|
|
6
|
+
// Context ごとの「エラーページにする予定」(リクエストが終われば一緒に消える)
|
|
7
|
+
const pending = new WeakMap();
|
|
8
|
+
// 既定の onError を包む。開発モードで、ブラウザから開いた 5xx のときだけ「あとでエラーページにする」
|
|
9
|
+
// (利用者が app.onError で自分のものに替えたら、これは使われない)
|
|
10
|
+
export function withErrorPage(base, dev) {
|
|
11
|
+
if (!dev)
|
|
12
|
+
return base;
|
|
13
|
+
return async (err, c) => {
|
|
14
|
+
const res = c.toResponse(await base(err, c));
|
|
15
|
+
// 4xx(意図して投げた HttpError など)は、今までどおりテキストのまま
|
|
16
|
+
if (!wantsHtml(c.req) || res.status < 500)
|
|
17
|
+
return res;
|
|
18
|
+
return deferErrorPage(c, err, res);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
// 目印付きの仮のレスポンスを返す(本文はいつものテキストのまま)
|
|
22
|
+
function deferErrorPage(c, err, fallback) {
|
|
23
|
+
const token = crypto.randomUUID();
|
|
24
|
+
pending.set(c, { token, err });
|
|
25
|
+
const headers = new Headers(fallback.headers);
|
|
26
|
+
headers.set(MARK, token);
|
|
27
|
+
return new Response(fallback.body, { status: fallback.status, statusText: fallback.statusText, headers });
|
|
28
|
+
}
|
|
29
|
+
// app.fetch の最後に呼ぶ。目印があれば HTML のエラーページに差し替える
|
|
30
|
+
export async function finishErrorPage(c, res) {
|
|
31
|
+
const mark = res.headers.get(MARK);
|
|
32
|
+
if (mark === null)
|
|
33
|
+
return res;
|
|
34
|
+
// 内部ヘッダーは、どの場合でも外には出さない
|
|
35
|
+
const headers = new Headers(res.headers);
|
|
36
|
+
headers.delete(MARK);
|
|
37
|
+
const job = pending.get(c);
|
|
38
|
+
pending.delete(c);
|
|
39
|
+
// 合言葉が合わない(ハンドラーが同じ名前のヘッダーを付けた、など)ならページにはしない
|
|
40
|
+
if (!job || job.token !== mark) {
|
|
41
|
+
return new Response(res.body, { status: res.status, statusText: res.statusText, headers });
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const data = await buildErrorPageData(job.err, c, res);
|
|
45
|
+
await res.body?.cancel();
|
|
46
|
+
headers.set("content-type", "text/html; charset=utf-8");
|
|
47
|
+
// ボディを丸ごと差し替えるので、元のボディについてのヘッダーは消す
|
|
48
|
+
// (圧縮ミドルウェアの content-encoding: gzip が残ると、ブラウザが展開に失敗して何も出ない)
|
|
49
|
+
for (const name of ["content-length", "content-encoding", "etag", "last-modified", "content-range"]) {
|
|
50
|
+
headers.delete(name);
|
|
51
|
+
}
|
|
52
|
+
const body = c.req.method === "HEAD" ? null : renderPage(PAGE_HTML, data, errorFallback(data));
|
|
53
|
+
return new Response(body, { status: res.status, statusText: res.statusText, headers });
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// ページを作れなくても、いつものテキストのレスポンスは返す
|
|
57
|
+
return new Response(res.body, { status: res.status, statusText: res.statusText, headers });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const DATA_PLACEHOLDER = "<!--senri:data-->";
|
|
2
|
+
export declare function embedJson(data: unknown): string;
|
|
3
|
+
export declare function wantsHtml(req: Request): boolean;
|
|
4
|
+
export declare const FALLBACK_PLACEHOLDER = "<!--senri:fallback-->";
|
|
5
|
+
export declare function renderPage(template: string, data: unknown, fallbackHtml?: string): string;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ページの HTML(ビルド済みの1枚)に、エラー情報の JSON を埋め込む
|
|
2
|
+
//
|
|
3
|
+
// JSON は <script type="application/json"> の中に入れる。HTML の解析では、script の中身は
|
|
4
|
+
// "</script" が出てくるまで続くので、エラーメッセージに "</script><script>alert(1)</script>" が
|
|
5
|
+
// 入っていると、そこで script が終わり、攻撃者のスクリプトが動いてしまう(XSS)
|
|
6
|
+
// そこで "<" などを JSON の \u 表記に置き換える。JSON.parse すれば元の文字に戻るので、データは変わらない
|
|
7
|
+
// テンプレートの中の置き場所。ここを JSON に置き換える
|
|
8
|
+
export const DATA_PLACEHOLDER = "<!--senri:data-->";
|
|
9
|
+
// JSON では使えるが、古い JavaScript では改行扱いになる2文字(U+2028 / U+2029)
|
|
10
|
+
// ソースに直接書くと見えない文字になってしまうので、コードポイントから作る
|
|
11
|
+
const LINE_SEPARATOR = String.fromCharCode(0x2028);
|
|
12
|
+
const PARAGRAPH_SEPARATOR = String.fromCharCode(0x2029);
|
|
13
|
+
// 置き換え先は「\u」+ 16進4桁の6文字
|
|
14
|
+
const escapeChar = (ch) => "\\u" + ch.charCodeAt(0).toString(16).padStart(4, "0");
|
|
15
|
+
const UNSAFE_PATTERN = new RegExp(`[<>&${LINE_SEPARATOR}${PARAGRAPH_SEPARATOR}]`, "g");
|
|
16
|
+
export function embedJson(data) {
|
|
17
|
+
return JSON.stringify(data).replace(UNSAFE_PATTERN, escapeChar);
|
|
18
|
+
}
|
|
19
|
+
// ブラウザで開いたとき(Accept に text/html がある)だけ HTML にする。curl や fetch の */* は対象外
|
|
20
|
+
// "text/html;q=0" は「HTML は要らない」という意味なので除く
|
|
21
|
+
export function wantsHtml(req) {
|
|
22
|
+
const accept = req.headers.get("accept") ?? "";
|
|
23
|
+
return accept.split(",").some((entry) => {
|
|
24
|
+
const [type, ...params] = entry.split(";").map((s) => s.trim().toLowerCase());
|
|
25
|
+
if (type !== "text/html")
|
|
26
|
+
return false;
|
|
27
|
+
const q = params.find((p) => p.startsWith("q="));
|
|
28
|
+
return q === undefined || Number(q.slice(2)) > 0;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
// <div id="app"> の中の置き場所。スクリプトが動かないときに見える簡易表示(エスケープ済みの HTML)を入れる
|
|
32
|
+
export const FALLBACK_PLACEHOLDER = "<!--senri:fallback-->";
|
|
33
|
+
export function renderPage(template, data, fallbackHtml = "") {
|
|
34
|
+
if (!template.includes(DATA_PLACEHOLDER)) {
|
|
35
|
+
throw new Error(`ページのテンプレートに ${DATA_PLACEHOLDER} がありません`);
|
|
36
|
+
}
|
|
37
|
+
// 置き換え後の文字列を関数で返すのは、"$&" や "$1" が replace の特殊なパターンとして
|
|
38
|
+
// 解釈されないようにするため(エラーメッセージに $ が入っていても、そのまま出る)
|
|
39
|
+
// JSON の "<" も簡易表示の "<" もエスケープ済みなので、片方の中にもう片方の置き場所ができることはない
|
|
40
|
+
const json = embedJson(data);
|
|
41
|
+
return template.replace(DATA_PLACEHOLDER, () => json).replace(FALLBACK_PLACEHOLDER, () => fallbackHtml);
|
|
42
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Timing } from "../compose.ts";
|
|
2
|
+
export declare function serverTimingHeader(timings: readonly Timing[], inner: {
|
|
3
|
+
name: string;
|
|
4
|
+
desc: string;
|
|
5
|
+
}, total: number): string;
|
|
6
|
+
export declare function withServerTiming(res: Response, value: string): Response;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// desc は quoted-string なので、" と \ をエスケープする
|
|
2
|
+
// ヘッダーの値は ByteString(U+00FF まで)なので、ASCII の表示文字以外(日本語の名前など)は %XX にする
|
|
3
|
+
// (そのまま入れると Headers.set が例外を投げて、開発モードのレスポンスが返らなくなる)
|
|
4
|
+
function quote(text) {
|
|
5
|
+
const ascii = text.replace(/[^\x20-\x7e]/gu, (ch) => encodeURIComponent(ch));
|
|
6
|
+
return `"${ascii.replace(/[\\"]/g, (ch) => `\\${ch}`)}"`;
|
|
7
|
+
}
|
|
8
|
+
const ms = (n) => Math.max(0, n).toFixed(2);
|
|
9
|
+
// timings: 外側から順(最後がいちばん内側)。inner: いちばん内側の層の名前("GET /users/:id" や "notFound")
|
|
10
|
+
// 名前(metric-name)は、アプリが自分で付ける名前とぶつからないよう senri- で始める
|
|
11
|
+
export function serverTimingHeader(timings, inner, total) {
|
|
12
|
+
const entries = [];
|
|
13
|
+
const last = timings.length - 1;
|
|
14
|
+
timings.forEach((t, i) => {
|
|
15
|
+
// 例外などで途中までしか通っていないと、穴が空くことがある
|
|
16
|
+
if (!t)
|
|
17
|
+
return;
|
|
18
|
+
if (i === last && t.name === inner.name) {
|
|
19
|
+
entries.push(`senri-${inner.name};desc=${quote(inner.desc)};dur=${ms(t.total)}`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
entries.push(`senri-${i + 1};desc=${quote(`${i + 1}. ${t.name} (self ${ms(t.self)}ms)`)};dur=${ms(t.total)}`);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
entries.push(`senri-total;desc="total";dur=${ms(total)}`);
|
|
26
|
+
return entries.join(", ");
|
|
27
|
+
}
|
|
28
|
+
// レスポンスに足す。アプリが付けた Server-Timing は残して、後ろにつなぐ
|
|
29
|
+
export function withServerTiming(res, value) {
|
|
30
|
+
// 101(WebSocket のアップグレード)などは作り直すと壊れるので触らない
|
|
31
|
+
if (res.status < 200)
|
|
32
|
+
return res;
|
|
33
|
+
const current = res.headers.get("server-timing");
|
|
34
|
+
const next = current ? `${current}, ${value}` : value;
|
|
35
|
+
try {
|
|
36
|
+
res.headers.set("server-timing", next);
|
|
37
|
+
return res;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// fetch() や Response.redirect() の Response はヘッダーを変更できないので、作り直す
|
|
41
|
+
const headers = new Headers(res.headers);
|
|
42
|
+
headers.set("server-timing", next);
|
|
43
|
+
return new Response(res.body, { status: res.status, statusText: res.statusText, headers });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { StackFrame } from "./stack.ts";
|
|
2
|
+
export type CodeLine = {
|
|
3
|
+
num: number;
|
|
4
|
+
code: string;
|
|
5
|
+
hit: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type CodeFrame = {
|
|
8
|
+
file: string;
|
|
9
|
+
line: number;
|
|
10
|
+
col: number;
|
|
11
|
+
lines: CodeLine[];
|
|
12
|
+
caret: string;
|
|
13
|
+
label: string;
|
|
14
|
+
};
|
|
15
|
+
export type ReadOptions = {
|
|
16
|
+
root?: string | null;
|
|
17
|
+
canRead?: (path: string) => boolean;
|
|
18
|
+
maxBytes?: number;
|
|
19
|
+
};
|
|
20
|
+
export declare function readCodeFrame(frame: StackFrame, options?: ReadOptions): Promise<CodeFrame | null>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
|
|
2
|
+
if (typeof path === "string" && /^\.\.?\//.test(path)) {
|
|
3
|
+
return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
|
|
4
|
+
return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
|
|
5
|
+
});
|
|
6
|
+
}
|
|
7
|
+
return path;
|
|
8
|
+
};
|
|
9
|
+
import * as runtime from "../runtime.js";
|
|
10
|
+
const CONTEXT = 3;
|
|
11
|
+
const MAX_BYTES = 1024 * 1024;
|
|
12
|
+
const NODE_FS = "node:fs/promises";
|
|
13
|
+
// 等幅フォントで全角(日本語など)は2文字分の幅になるので、^ の位置がずれないよう幅で数える
|
|
14
|
+
function width(text) {
|
|
15
|
+
let w = 0;
|
|
16
|
+
for (const ch of text) {
|
|
17
|
+
const cp = ch.codePointAt(0);
|
|
18
|
+
const wide = (cp >= 0x1100 && cp <= 0x115f) ||
|
|
19
|
+
(cp >= 0x2e80 && cp <= 0xa4cf) ||
|
|
20
|
+
(cp >= 0xac00 && cp <= 0xd7a3) ||
|
|
21
|
+
(cp >= 0xf900 && cp <= 0xfaff) ||
|
|
22
|
+
(cp >= 0xfe30 && cp <= 0xfe4f) ||
|
|
23
|
+
(cp >= 0xff00 && cp <= 0xff60) ||
|
|
24
|
+
(cp >= 0xffe0 && cp <= 0xffe6) ||
|
|
25
|
+
cp >= 0x1f300;
|
|
26
|
+
w += wide ? 2 : 1;
|
|
27
|
+
}
|
|
28
|
+
return w;
|
|
29
|
+
}
|
|
30
|
+
function makeCaret(code, col) {
|
|
31
|
+
const start = Math.min(Math.max(col - 1, 0), code.length);
|
|
32
|
+
// 字下げのタブはそのままタブにしておくと、上の行とそろう
|
|
33
|
+
const before = code.slice(0, start).replace(/[^\t]/g, (ch) => " ".repeat(width(ch)));
|
|
34
|
+
const target = code.slice(start).trimEnd();
|
|
35
|
+
return before + "^".repeat(Math.max(width(target), 1));
|
|
36
|
+
}
|
|
37
|
+
// "a/./b/../c" → "a/c"。../ でルートの外に出るパスを見抜くため
|
|
38
|
+
function normalize(path) {
|
|
39
|
+
const out = [];
|
|
40
|
+
for (const part of path.split("/")) {
|
|
41
|
+
if (part === ".")
|
|
42
|
+
continue;
|
|
43
|
+
if (part === "..")
|
|
44
|
+
out.pop();
|
|
45
|
+
else
|
|
46
|
+
out.push(part);
|
|
47
|
+
}
|
|
48
|
+
return out.join("/");
|
|
49
|
+
}
|
|
50
|
+
function isInside(path, root) {
|
|
51
|
+
const fold = (p) => (/^[A-Za-z]:\//.test(p) ? p.toLowerCase() : p);
|
|
52
|
+
const p = fold(normalize(path));
|
|
53
|
+
const r = fold(normalize(root)).replace(/\/$/, "");
|
|
54
|
+
return p.startsWith(`${r}/`);
|
|
55
|
+
}
|
|
56
|
+
export async function readCodeFrame(frame, options = {}) {
|
|
57
|
+
// 利用者のコードだけ。Senri 内部・node_modules・ランタイム内部は読まない
|
|
58
|
+
if (frame.kind !== "user" || frame.line < 1)
|
|
59
|
+
return null;
|
|
60
|
+
const root = options.root === undefined ? runtime.cwd() : options.root;
|
|
61
|
+
if (!root)
|
|
62
|
+
return null;
|
|
63
|
+
// スタックに出てきたパスでも、プロジェクトの外や node_modules の中は読まない
|
|
64
|
+
if (!isInside(frame.file, root) || normalize(frame.file).includes("/node_modules/"))
|
|
65
|
+
return null;
|
|
66
|
+
const canRead = options.canRead ?? runtime.canRead;
|
|
67
|
+
if (!canRead(frame.file))
|
|
68
|
+
return null;
|
|
69
|
+
let text;
|
|
70
|
+
try {
|
|
71
|
+
// 動的 import にしておくと、ファイルを読めない環境でも Senri 自体は読み込める
|
|
72
|
+
const fs = (await import(__rewriteRelativeImportExtension(NODE_FS)));
|
|
73
|
+
const stat = await fs.stat(frame.file);
|
|
74
|
+
if (stat.size > (options.maxBytes ?? MAX_BYTES))
|
|
75
|
+
return null;
|
|
76
|
+
text = await fs.readFile(frame.file, "utf8");
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const all = text.split(/\r?\n/);
|
|
82
|
+
// 最後の改行のあとの空文字は行として数えない
|
|
83
|
+
if (all.at(-1) === "")
|
|
84
|
+
all.pop();
|
|
85
|
+
if (frame.line > all.length)
|
|
86
|
+
return null;
|
|
87
|
+
const first = Math.max(1, frame.line - CONTEXT);
|
|
88
|
+
const last = Math.min(all.length, frame.line + CONTEXT);
|
|
89
|
+
const lines = [];
|
|
90
|
+
for (let num = first; num <= last; num++) {
|
|
91
|
+
lines.push({ num, code: all[num - 1], hit: num === frame.line });
|
|
92
|
+
}
|
|
93
|
+
const hitLine = all[frame.line - 1];
|
|
94
|
+
// エラーの位置の直前が "throw" か "throw new" なら、その throw で投げたエラー
|
|
95
|
+
// (V8 は "new" の位置、Bun は "Error" の位置を指すので、どちらでも当たるようにする)
|
|
96
|
+
// 行のどこかに throw があるだけでは決めない(同じ行の別の場所で起きたエラーもあるので)
|
|
97
|
+
const thrownHere = /\bthrow\s+(?:new\s+)?$/.test(hitLine.slice(0, Math.max(frame.col - 1, 0)));
|
|
98
|
+
return {
|
|
99
|
+
file: frame.file,
|
|
100
|
+
line: frame.line,
|
|
101
|
+
col: frame.col,
|
|
102
|
+
lines,
|
|
103
|
+
caret: makeCaret(hitLine, frame.col),
|
|
104
|
+
label: thrownHere ? "ここで throw" : "ここでエラー",
|
|
105
|
+
};
|
|
106
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type FrameKind = "user" | "senri" | "node_modules" | "runtime";
|
|
2
|
+
export type StackFrame = {
|
|
3
|
+
fn: string;
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
col: number;
|
|
7
|
+
kind: FrameKind;
|
|
8
|
+
};
|
|
9
|
+
export type ParseOptions = {
|
|
10
|
+
senriDirs?: string[];
|
|
11
|
+
};
|
|
12
|
+
export declare function parseStack(stack: string, options?: ParseOptions): StackFrame[];
|