befly 3.15.21 → 3.15.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/befly.js +10 -2
- package/dist/befly.min.js +10 -10
- package/dist/index.js +15 -3
- package/package.json +2 -2
package/dist/befly.min.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var z1=Object.create;var{getPrototypeOf:F1,defineProperty:lY,getOwnPropertyNames:K1}=Object;var R1=Object.prototype.hasOwnProperty;var q1=($,Z,J)=>{J=$!=null?z1(F1($)):{};let Y=Z||!$||!$.__esModule?lY(J,"default",{value:$,enumerable:!0}):J;for(let Q of K1($))if(!R1.call(Y,Q))lY(Y,Q,{get:()=>$[Q],enumerable:!0});return Y};var i=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var _$=($,Z)=>()=>($&&(Z=$($=0)),Z);var K$=import.meta.require;function RJ($,Z="dateTime"){let J=$.getFullYear(),Y=$.getMonth()+1,Q=$.getDate(),X=$.getHours(),G=$.getMinutes(),U=$.getSeconds(),V=Y<10?`0${Y}`:String(Y),M=Q<10?`0${Q}`:String(Q),z=X<10?`0${X}`:String(X),_=G<10?`0${G}`:String(G),L=U<10?`0${U}`:String(U);if(Z==="date")return`${J}-${V}-${M}`;if(Z==="time")return`${z}:${_}:${L}`;return`${J}-${V}-${M} ${z}:${_}:${L}`}function n($){if(typeof $!=="object"||$===null)return!1;let Z=Object.getPrototypeOf($);return Z===Object.prototype||Z===null}function qJ($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function FZ($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function
|
|
3
|
-
`)}catch{}}function g1($,Z){let J=[],Y=0;while($.length>0){let Q=$[0],X=Buffer.byteLength(Q);if(J.length>0&&Y+X>Z)break;J.push(Q),Y=Y+X,$.shift()}return{chunk:J.join(""),bytes:Y}}class kJ{pending;pendingBytes;scheduledTimer;flushing;maxBufferBytes;flushDelayMs;maxBatchBytes;writeChunk;onShutdown;constructor($){this.pending=[],this.pendingBytes=0,this.scheduledTimer=null,this.flushing=!1,this.maxBufferBytes=$.maxBufferBytes,this.flushDelayMs=$.flushDelayMs,this.maxBatchBytes=$.maxBatchBytes,this.writeChunk=$.writeChunk,this.onShutdown=$.onShutdown?$.onShutdown:null}scheduleFlush(){if(this.scheduledTimer)return;this.scheduledTimer=setTimeout(()=>{this.scheduledTimer=null,this.flush()},this.flushDelayMs)}cancelScheduledFlush(){if(!this.scheduledTimer)return;clearTimeout(this.scheduledTimer),this.scheduledTimer=null}enqueue($){let Z=Buffer.byteLength($);if(this.pendingBytes+Z>this.maxBufferBytes)return;this.pending.push($),this.pendingBytes=this.pendingBytes+Z,this.scheduleFlush()}async flushNow(){this.cancelScheduledFlush(),await this.flush()}async shutdown(){if(this.cancelScheduledFlush(),await this.flush(),this.onShutdown)await this.onShutdown()}async flush(){if(this.flushing)return;this.flushing=!0;try{while(this.pending.length>0){let Z=g1(this.pending,this.maxBatchBytes).chunk,J=Buffer.byteLength(Z);if(this.pendingBytes=this.pendingBytes-J,!await this.writeChunk(Z,J)){this.pending=[],this.pendingBytes=0;break}}}finally{if(this.flushing=!1,this.pending.length>0)this.scheduleFlush()}}}function h1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},J=new kJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Y)=>{try{let Q=Z();if(!Q.write(Y))await new Promise((G)=>{Q.once("drain",()=>G())});return!0}catch(Q){return BZ(`[Logger] stream sink error: ${Q?.message||Q}`),!1}}});return{enqueue(Y){J.enqueue(Y)},async flushNow(){await J.flushNow()},async shutdown(){await J.shutdown()}}}class NJ{prefix;maxFileBytes;buffer;stream;streamDate;streamIndex;streamSizeBytes;disabled;constructor($){this.prefix=$.prefix,this.maxFileBytes=$.maxFileBytes,this.stream=null,this.streamDate="",this.streamIndex=0,this.streamSizeBytes=0,this.disabled=!1,this.buffer=new kJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Z,J)=>{if(this.disabled)return!1;try{if(await this.ensureStreamReady(J),!this.stream)return!1;if(!this.stream.write(Z))await new Promise((Q)=>{let X=this.stream;if(!X){Q();return}X.once("drain",()=>Q())});return this.streamSizeBytes=this.streamSizeBytes+J,!0}catch(Y){return BZ(`[Logger] file sink flush error (${this.prefix}): ${Y?.message||Y}`),this.disabled=!0,await this.closeStream(),!1}},onShutdown:async()=>{await this.closeStream()}})}enqueue($){if(this.disabled)return;this.buffer.enqueue($)}async flushNow(){await this.buffer.flushNow()}async shutdown(){await this.buffer.shutdown()}async closeStream(){if(!this.stream)return;let $=this.stream;this.stream=null,await new Promise((Z)=>{try{$.end(()=>Z())}catch{Z()}})}openStream($){try{this.stream=w1($,{flags:"a"}),this.stream.on("error",(Z)=>{BZ(`[Logger] file sink error (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.closeStream()})}catch(Z){BZ(`[Logger] createWriteStream failed (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.stream=null}}getFilePath($,Z){let J=Z>0?`.${Z}`:"",Y=`${this.prefix}.${$}${J}.log`;return v1(WQ(),Y)}async ensureStreamReady($){let Z=RJ(new Date,"date");if(this.stream&&this.streamDate&&Z!==this.streamDate)await this.closeStream(),this.streamDate="",this.streamIndex=0,this.streamSizeBytes=0;if(!this.stream){let J=this.getFilePath(Z,0),Y=0;try{let Q=await N1(J);Y=typeof Q.size==="number"?Q.size:0}catch{Y=0}if(this.streamDate=Z,this.streamIndex=0,this.streamSizeBytes=Y,this.openStream(J),!this.stream)return}if(this.stream&&this.maxFileBytes>0&&this.streamSizeBytes+$>this.maxFileBytes){await this.closeStream(),this.streamIndex=this.streamIndex+1;let J=this.getFilePath(Z,this.streamIndex);if(this.streamDate=Z,this.streamSizeBytes=0,this.openStream(J),!this.stream)return}}}async function b1(){if(T$)return;let $=[];if(Q$)$.push({flush:()=>Q$?Q$.flushNow():Promise.resolve()});if(X$)$.push({flush:()=>X$?X$.flushNow():Promise.resolve()});if(G$)$.push({flush:()=>G$?G$.flushNow():Promise.resolve()});for(let Z of $)try{await Z.flush()}catch{}}async function HQ(){if(T$)return;let $=q$,Z=I$,J=Q$,Y=X$,Q=G$,X=[];if(J)X.push({shutdown:()=>J.shutdown()});if(Y)X.push({shutdown:()=>Y.shutdown()});if(Q)X.push({shutdown:()=>Q.shutdown()});for(let G of X)try{await G.shutdown()}catch{}if(Q$===J)Q$=null;if(X$===Y)X$=null;if(G$===Q)G$=null;if(q$===$)q$=null;if(I$===Z)I$=null}function WQ(){let $=n0.dir||"./logs";if(k1($))return $;return x1(f1,$)}function c1(){let $=WQ();try{if(!S1($))T1($,{recursive:!0})}catch(Z){throw Error(`\u521B\u5EFA logs \u76EE\u5F55\u5931\u8D25: ${$}. ${Z?.message||Z}`)}}function p1($){HQ(),n0=Object.assign({debug:0,dir:"./logs",console:1,maxSize:20},$);{let Z=n0.maxSize,J=typeof Z==="number"&&Number.isFinite(Z)?Z:20;if(J<10)J=10;if(J>100)J=100;n0.maxSize=J}q$=null,I$=null,Q$=null,X$=null,G$=null,DJ={maxStringLen:g$(n0.maxStringLen,100,20,200000),maxArrayItems:g$(n0.maxArrayItems,100,10,5000),sanitizeDepth:g$(n0.sanitizeDepth,3,1,10),sanitizeNodes:g$(n0.sanitizeNodes,500,50,20000),sanitizeObjectKeys:g$(n0.sanitizeObjectKeys,100,10,5000),sensitiveKeyMatcher:EJ({builtinPatterns:GQ,userPatterns:n0.excludeFields})}}function u1($){T$=$}function
|
|
2
|
+
var z1=Object.create;var{getPrototypeOf:F1,defineProperty:lY,getOwnPropertyNames:K1}=Object;var R1=Object.prototype.hasOwnProperty;var q1=($,Z,J)=>{J=$!=null?z1(F1($)):{};let Y=Z||!$||!$.__esModule?lY(J,"default",{value:$,enumerable:!0}):J;for(let Q of K1($))if(!R1.call(Y,Q))lY(Y,Q,{get:()=>$[Q],enumerable:!0});return Y};var i=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var _$=($,Z)=>()=>($&&(Z=$($=0)),Z);var K$=import.meta.require;function RJ($,Z="dateTime"){let J=$.getFullYear(),Y=$.getMonth()+1,Q=$.getDate(),X=$.getHours(),G=$.getMinutes(),U=$.getSeconds(),V=Y<10?`0${Y}`:String(Y),M=Q<10?`0${Q}`:String(Q),z=X<10?`0${X}`:String(X),_=G<10?`0${G}`:String(G),L=U<10?`0${U}`:String(U);if(Z==="date")return`${J}-${V}-${M}`;if(Z==="time")return`${z}:${_}:${L}`;return`${J}-${V}-${M} ${z}:${_}:${L}`}function n($){if(typeof $!=="object"||$===null)return!1;let Z=Object.getPrototypeOf($);return Z===Object.prototype||Z===null}function qJ($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function FZ($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function YZ($){return Array.isArray($)||FZ($)}function zZ($){if(qJ($))return!0;if(Array.isArray($)){for(let Z of $)if(!zZ(Z))return!1;return!0}if(FZ($)){for(let Z of Object.values($)){if(Z===void 0)continue;if(!zZ(Z))return!1}return!0}return!1}function KZ($){return typeof $==="number"&&Number.isFinite($)}function RZ($){return typeof $==="number"&&Number.isFinite($)&&Number.isInteger($)}function S$($){if($===null)return"null";if($===void 0)return"undefined";if(typeof $==="string"){let J=$.length>80?`${$.slice(0,80)}...`:$;return JSON.stringify(J)}if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return String($);if(typeof $==="function")return"[Function]";try{let J=JSON.stringify($);if(typeof J==="string")return J.length>120?`${J.slice(0,120)}...`:J}catch{}let Z=String($);return Z.length>120?`${Z.slice(0,120)}...`:Z}function IJ($){if($===null)return"null";if($===void 0)return"undefined";if(Array.isArray($))return"array";let Z=typeof $;if(Z==="string")return"string";if(Z==="number")return"number";if(Z==="boolean")return"boolean";if(Z==="bigint")return"bigint";if(Z==="symbol")return"symbol";if(Z==="function")return"function";return"object"}function j1($){let Z=String($||"").trim();if(Z.length<2)return!1;if(!Z.startsWith("/"))return!1;let J=Z.lastIndexOf("/");if(J<=0)return!1;let Y=Z.slice(J+1);if(Y!==""&&!/^[gimsuy]+$/.test(Y))return!1;return!0}function f$($){let Z=String($||"").trim();return j1(Z)||Z.startsWith("@")}function y$($){let Z=String($||"").trim();if(Z.length===0)return!1;return!Z.startsWith("/")&&Z.includes("|")}function jJ($){return String($||"").trim().startsWith("@")}function g$($,Z,J,Y){if(typeof $!=="number")return Z;if(!Number.isFinite($))return Z;let Q=Math.floor($);if(Q<J)return Z;if(Q>Y)return Y;return Q}function rY($,Z){if(typeof Z!=="function")return;if(!n($))return;let J=$;for(let Y of Object.keys(J))Z(J[Y],Y)}function L1($){let Z=String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim();if(Z.length===0)return[];return Z.split(/\s+/).filter((J)=>J.length>0)}function B1($){if($.length===0)return $;return $.charAt(0).toUpperCase()+$.slice(1)}function R$($){let Z=L1($);if(Z.length===0)return"";let J=Z[0];if(!J)return"";let Y=J.toLowerCase(),Q=Z.slice(1).map((X)=>B1(X.toLowerCase()));return[Y].concat(Q).join("")}function P1($){return String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim()}function c($){let Z=P1($);if(Z.length===0)return"";return Z.split(/\s+/).filter((J)=>J.length>0).map((J)=>J.toLowerCase()).join("_")}function u($,Z){if(!n($))return{};let J=new Set(Array.isArray(Z)?Z:[]),Y={};for(let[Q,X]of Object.entries($)){if(J.has(Q))continue;Y[Q]=X}return Y}function tY($,Z){let J={};if(!Array.isArray($)||typeof Z!=="function")return J;for(let Y of $){let Q=Z(Y);if(typeof Q!=="string"||Q==="")continue;J[Q]=Y}return J}function aY(){return Date.now().toString(36)+Math.random().toString(36).slice(2,7)}var LJ=($)=>{if(!$||!n($))return $;let Z={};for(let[J,Y]of Object.entries($)){let Q=R$(J);Z[Q]=Y}return Z},iY=($)=>{if(!$||!n($))return $;let Z={};for(let[J,Y]of Object.entries($)){let Q=c(J);Z[Q]=Y}return Z},BJ=($)=>{if(!$||!Array.isArray($))return $;return $.map((Z)=>LJ(Z))};var u0=()=>{};function EJ($){let Z=[];for(let Q of $.builtinPatterns){let X=String(Q).trim();if(X.length>0)Z.push(X.toLowerCase())}if(Array.isArray($.userPatterns))for(let Q of $.userPatterns){let X=String(Q).trim();if(X.length>0)Z.push(X.toLowerCase())}let J=new Set,Y=[];for(let Q of Z){if(!Q.includes("*")){J.add(Q);continue}let X=Q.replace(/\*+/g,"").trim();if(!X)continue;Y.push(X)}return{exactSet:J,contains:Y}}function wJ($,Z){let J=String($).toLowerCase();if(Z.exactSet.has(J))return!0;for(let Y of Z.contains)if(J.includes(Y))return!0;return!1}function qZ($,Z){if($.length<=Z)return $;return $.slice(0,Z)}function eY($,Z){let J={name:$.name||"Error",message:qZ($.message||"",Z.maxStringLen)};if(typeof $.stack==="string")J.stack=qZ($.stack,Z.maxStringLen);return J}function C1($,Z,J){if(typeof $==="string")return $;if($ instanceof Error)try{return JSON.stringify(eY($,Z))}catch{return`${$.name||"Error"}: ${$.message||""}`}if($&&typeof $==="object"){if(J.has($))return"[Circular]"}try{let Y=J;return JSON.stringify($,(X,G)=>{if(X&&wJ(X,Z.sensitiveKeyMatcher))return"[MASKED]";if(G&&typeof G==="object"){if(Y.has(G))return"[Circular]";Y.add(G)}return G})}catch{try{return String($)}catch{return"[Unserializable]"}}}function PJ($,Z,J){let Y=C1($,Z,J);return qZ(Y,Z.maxStringLen)}function CJ($,Z,J,Y,Q){if($===null||$===void 0)return $;if(typeof $==="string")return qZ($,Z.maxStringLen);if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return $;if($ instanceof Error)return eY($,Z);let X=Array.isArray($),G=n($);if(!X&&!G)return PJ($,Z,Q);if(Q.has($))return"[Circular]";if(Y>=Z.sanitizeDepth)return PJ($,Z,Q);if(J.nodes>=Z.sanitizeNodes)return PJ($,Z,Q);if(Q.add($),J.nodes=J.nodes+1,X){let _=$,L=[],C=_.length>Z.maxArrayItems?Z.maxArrayItems:_.length;for(let E=0;E<C;E++)L[E]=CJ(_[E],Z,J,Y+1,Q);return L}let U=$,V={},M=Object.entries(U),z=M.length>Z.sanitizeObjectKeys?Z.sanitizeObjectKeys:M.length;for(let _=0;_<z;_++){let L=M[_];if(!L)continue;let C=L[0],E=L[1];if(wJ(C,Z.sensitiveKeyMatcher)){V[C]="[MASKED]";continue}V[C]=CJ(E,Z,J,Y+1,Q)}return V}function SJ($,Z){let J=new WeakSet,Y={nodes:0},Q={};for(let[X,G]of Object.entries($)){if(wJ(X,Z.sensitiveKeyMatcher)){Q[X]="[MASKED]";continue}Q[X]=CJ(G,Z,Y,0,J)}return Q}var $Q=_$(()=>{u0()});import{AsyncLocalStorage as E1}from"async_hooks";function ZQ($,Z){return TJ.run($,Z)}function JQ(){let $=TJ.getStore();if(!$)return null;return $}function YQ($,Z,J,Y){let Q=TJ.getStore();if(!Q)return;Q.userId=$===void 0?null:$,Q.roleCode=Z===void 0?null:Z,Q.nickname=J===void 0?null:J,Q.roleType=Y===void 0?null:Y}var TJ;var IZ=_$(()=>{TJ=new E1});import{createWriteStream as w1,existsSync as S1,mkdirSync as T1}from"fs";import{stat as N1}from"fs/promises";import{hostname as D1}from"os";import{isAbsolute as k1,join as v1,resolve as x1}from"path";function BZ($){try{process.stderr.write(`${$}
|
|
3
|
+
`)}catch{}}function g1($,Z){let J=[],Y=0;while($.length>0){let Q=$[0],X=Buffer.byteLength(Q);if(J.length>0&&Y+X>Z)break;J.push(Q),Y=Y+X,$.shift()}return{chunk:J.join(""),bytes:Y}}class kJ{pending;pendingBytes;scheduledTimer;flushing;maxBufferBytes;flushDelayMs;maxBatchBytes;writeChunk;onShutdown;constructor($){this.pending=[],this.pendingBytes=0,this.scheduledTimer=null,this.flushing=!1,this.maxBufferBytes=$.maxBufferBytes,this.flushDelayMs=$.flushDelayMs,this.maxBatchBytes=$.maxBatchBytes,this.writeChunk=$.writeChunk,this.onShutdown=$.onShutdown?$.onShutdown:null}scheduleFlush(){if(this.scheduledTimer)return;this.scheduledTimer=setTimeout(()=>{this.scheduledTimer=null,this.flush()},this.flushDelayMs)}cancelScheduledFlush(){if(!this.scheduledTimer)return;clearTimeout(this.scheduledTimer),this.scheduledTimer=null}enqueue($){let Z=Buffer.byteLength($);if(this.pendingBytes+Z>this.maxBufferBytes)return;this.pending.push($),this.pendingBytes=this.pendingBytes+Z,this.scheduleFlush()}async flushNow(){this.cancelScheduledFlush(),await this.flush()}async shutdown(){if(this.cancelScheduledFlush(),await this.flush(),this.onShutdown)await this.onShutdown()}async flush(){if(this.flushing)return;this.flushing=!0;try{while(this.pending.length>0){let Z=g1(this.pending,this.maxBatchBytes).chunk,J=Buffer.byteLength(Z);if(this.pendingBytes=this.pendingBytes-J,!await this.writeChunk(Z,J)){this.pending=[],this.pendingBytes=0;break}}}finally{if(this.flushing=!1,this.pending.length>0)this.scheduleFlush()}}}function h1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},J=new kJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Y)=>{try{let Q=Z();if(!Q.write(Y))await new Promise((G)=>{Q.once("drain",()=>G())});return!0}catch(Q){return BZ(`[Logger] stream sink error: ${Q?.message||Q}`),!1}}});return{enqueue(Y){J.enqueue(Y)},async flushNow(){await J.flushNow()},async shutdown(){await J.shutdown()}}}class NJ{prefix;maxFileBytes;buffer;stream;streamDate;streamIndex;streamSizeBytes;disabled;constructor($){this.prefix=$.prefix,this.maxFileBytes=$.maxFileBytes,this.stream=null,this.streamDate="",this.streamIndex=0,this.streamSizeBytes=0,this.disabled=!1,this.buffer=new kJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Z,J)=>{if(this.disabled)return!1;try{if(await this.ensureStreamReady(J),!this.stream)return!1;if(!this.stream.write(Z))await new Promise((Q)=>{let X=this.stream;if(!X){Q();return}X.once("drain",()=>Q())});return this.streamSizeBytes=this.streamSizeBytes+J,!0}catch(Y){return BZ(`[Logger] file sink flush error (${this.prefix}): ${Y?.message||Y}`),this.disabled=!0,await this.closeStream(),!1}},onShutdown:async()=>{await this.closeStream()}})}enqueue($){if(this.disabled)return;this.buffer.enqueue($)}async flushNow(){await this.buffer.flushNow()}async shutdown(){await this.buffer.shutdown()}async closeStream(){if(!this.stream)return;let $=this.stream;this.stream=null,await new Promise((Z)=>{try{$.end(()=>Z())}catch{Z()}})}openStream($){try{this.stream=w1($,{flags:"a"}),this.stream.on("error",(Z)=>{BZ(`[Logger] file sink error (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.closeStream()})}catch(Z){BZ(`[Logger] createWriteStream failed (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.stream=null}}getFilePath($,Z){let J=Z>0?`.${Z}`:"",Y=`${this.prefix}.${$}${J}.log`;return v1(WQ(),Y)}async ensureStreamReady($){let Z=RJ(new Date,"date");if(this.stream&&this.streamDate&&Z!==this.streamDate)await this.closeStream(),this.streamDate="",this.streamIndex=0,this.streamSizeBytes=0;if(!this.stream){let J=this.getFilePath(Z,0),Y=0;try{let Q=await N1(J);Y=typeof Q.size==="number"?Q.size:0}catch{Y=0}if(this.streamDate=Z,this.streamIndex=0,this.streamSizeBytes=Y,this.openStream(J),!this.stream)return}if(this.stream&&this.maxFileBytes>0&&this.streamSizeBytes+$>this.maxFileBytes){await this.closeStream(),this.streamIndex=this.streamIndex+1;let J=this.getFilePath(Z,this.streamIndex);if(this.streamDate=Z,this.streamSizeBytes=0,this.openStream(J),!this.stream)return}}}async function b1(){if(T$)return;let $=[];if(Q$)$.push({flush:()=>Q$?Q$.flushNow():Promise.resolve()});if(X$)$.push({flush:()=>X$?X$.flushNow():Promise.resolve()});if(G$)$.push({flush:()=>G$?G$.flushNow():Promise.resolve()});for(let Z of $)try{await Z.flush()}catch{}}async function HQ(){if(T$)return;let $=q$,Z=I$,J=Q$,Y=X$,Q=G$,X=[];if(J)X.push({shutdown:()=>J.shutdown()});if(Y)X.push({shutdown:()=>Y.shutdown()});if(Q)X.push({shutdown:()=>Q.shutdown()});for(let G of X)try{await G.shutdown()}catch{}if(Q$===J)Q$=null;if(X$===Y)X$=null;if(G$===Q)G$=null;if(q$===$)q$=null;if(I$===Z)I$=null}function WQ(){let $=n0.dir||"./logs";if(k1($))return $;return x1(f1,$)}function c1(){let $=WQ();try{if(!S1($))T1($,{recursive:!0})}catch(Z){throw Error(`\u521B\u5EFA logs \u76EE\u5F55\u5931\u8D25: ${$}. ${Z?.message||Z}`)}}function p1($){HQ(),n0=Object.assign({debug:0,dir:"./logs",console:1,maxSize:20},$);{let Z=n0.maxSize,J=typeof Z==="number"&&Number.isFinite(Z)?Z:20;if(J<10)J=10;if(J>100)J=100;n0.maxSize=J}q$=null,I$=null,Q$=null,X$=null,G$=null,DJ={maxStringLen:g$(n0.maxStringLen,100,20,200000),maxArrayItems:g$(n0.maxArrayItems,100,10,5000),sanitizeDepth:g$(n0.sanitizeDepth,3,1,10),sanitizeNodes:g$(n0.sanitizeNodes,500,50,20000),sanitizeObjectKeys:g$(n0.sanitizeObjectKeys,100,10,5000),sensitiveKeyMatcher:EJ({builtinPatterns:GQ,userPatterns:n0.excludeFields})}}function u1($){T$=$}function QZ($){if(T$)return T$;if($==="app"){if(q$)return q$}else if(I$)return I$;c1();let Z=typeof n0.maxSize==="number"?n0.maxSize:20,J=Math.floor(Z*1024*1024);if($==="app"){if(!Q$)Q$=new NJ({prefix:"app",maxFileBytes:J});if(n0.console===1&&!G$)G$=h1("stdout");return q$=XQ({fileSink:Q$,consoleSink:n0.console===1?G$:null}),q$}if(!X$)X$=new NJ({prefix:"error",maxFileBytes:J});return I$=XQ({fileSink:X$,consoleSink:null}),I$}function m1($,Z){let J=Date.now(),Y={level:$,time:J,timeFormat:RJ(new Date(J)),pid:process.pid,hostname:y1};if(Z&&n(Z)){let Q={};Q.level=Y.level,Q.time=Y.time,Q.timeFormat=Y.timeFormat,Q.pid=Y.pid,Q.hostname=Y.hostname;for(let X of Object.keys(Z)){if(X==="level")continue;if(X==="time")continue;if(X==="timeFormat")continue;if(X==="pid")continue;if(X==="hostname")continue;Q[X]=Z[X]}if(Z.msg!==void 0)Q.msg=Z.msg;else if(Q.msg===void 0)Q.msg="";return`${QQ(Q)}
|
|
4
4
|
`}if(Y.msg===void 0)Y.msg="";return`${QQ(Y)}
|
|
5
|
-
`}function QQ($){try{return JSON.stringify($)}catch{try{return JSON.stringify({level:$.level,time:$.time,pid:$.pid,hostname:$.hostname,msg:"[Unserializable log record]"})}catch{return'{"msg":"[Unserializable log record]"}'}}}function XQ($){let{fileSink:Z,consoleSink:J}=$,Y=(Q,X)=>{if(Q==="debug"&&n0.debug!==1)return;let G=n(X)?X:{value:X},U=SJ(G,DJ),V=m1(Q,U);if(Z.enqueue(V),J)J.enqueue(V)};return{info(Q){Y("info",Q)},warn(Q){Y("warn",Q)},error(Q){Y("error",Q)},debug(Q){Y("debug",Q)}}}function d1(){let $=JQ();if(!$)return null;let Z=Date.now()-$.now,J={requestId:$.requestId,method:$.method,route:$.route,ip:$.ip,now:$.now,durationSinceNowMs:Z};return J.userId=$.userId,J.roleCode=$.roleCode,J.nickname=$.nickname,J.roleType=$.roleType,J}function n1($,Z){let J={};for(let Q of Object.keys($))J[Q]=$[Q];let Y=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let Q of Y)if(J[Q]===void 0)J[Q]=Z[Q];return J}function jZ($){if(n($))return $;if($ instanceof Error)return{err:$,msg:$.message||$.name||"Error"};if($===void 0)return{msg:""};if($===null)return{msg:"null"};if(typeof $==="object")return{value:$};try{return{msg:String($)}}catch{return{msg:"[Unserializable]"}}}function LZ($){let Z=d1();if(!Z)return $;return n1($,Z)}class UQ{maybeSanitizeForMock($){if(!T$)return $;return SJ($,DJ)}info($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);YZ("app").info(J)}warn($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);YZ("app").warn(J)}error($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);if(YZ("app").error(J),T$)return;YZ("error").error(J)}debug($){if(n0.debug!==1)return;let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);YZ("app").debug(J)}async flush(){await b1()}configure($){p1($)}setMock($){u1($)}async shutdown(){await HQ()}}var f1,GQ,DJ,y1,q$=null,I$=null,T$=null,Q$=null,X$=null,G$=null,n0,I;var $0=_$(()=>{$Q();u0();IZ();f1=process.cwd(),GQ=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],DJ={maxStringLen:100,maxArrayItems:100,sanitizeDepth:3,sanitizeNodes:500,sanitizeObjectKeys:100,sensitiveKeyMatcher:EJ({builtinPatterns:GQ,userPatterns:[]})},y1=(()=>{try{return D1()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};I=new UQ});import{isAbsolute as s1}from"path";import{pathToFileURL as o1}from"url";function l1($){return/^[a-zA-Z]:[\\/]/.test($)}function r1($){if(s1($)||l1($))return o1($).href;return $}async function j$($,Z){try{let Q=($.endsWith(".json")?await import(r1($),{with:{type:"json"}}):await import($))?.default;if(Q===null||Q===void 0)return Z;let X=IJ(Z),G=IJ(Q);if(X!==G)return I.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:X,actualType:G}),Z;return Q}catch(J){return I.warn({err:J,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var PZ=_$(()=>{$0();u0()});function GZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(JH,(Z)=>Z.toUpperCase())}function HH(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function fJ($,Z){let J="",Y=0,Q=-1,X=0,G=null;for(let U=0;U<=$.length;++U){if(U<$.length)G=$[U];else if(G==="/")break;else G="/";if(G==="/"){if(Q===U-1||X===1);else if(X===2){if(J.length<2||Y!==2||J[J.length-1]!=="."||J[J.length-2]!=="."){if(J.length>2){let V=J.lastIndexOf("/");if(V===-1)J="",Y=0;else J=J.slice(0,V),Y=J.length-1-J.lastIndexOf("/");Q=U,X=0;continue}else if(J.length>0){J="",Y=0,Q=U,X=0;continue}}if(Z)J+=J.length>0?"/..":"..",Y=2}else{if(J.length>0)J+=`/${$.slice(Q+1,U)}`;else J=$.slice(Q+1,U);Y=U-Q-1}Q=U,X=0}else if(G==="."&&X!==-1)++X;else X=-1}return J}var JH,YH,QH,RQ,KQ,XH,GH,N$=function($){if($.length===0)return".";$=GZ($);let Z=$.match(YH),J=b$($),Y=$[$.length-1]==="/";if($=fJ($,!J),$.length===0){if(J)return"/";return Y?"./":"."}if(Y)$+="/";if(RQ.test($))$+="/";if(Z){if(!J)return`//./${$}`;return`//${$}`}return J&&!b$($)?`/${$}`:$},o=function(...$){let Z="";for(let J of $){if(!J)continue;if(Z.length>0){let Y=Z[Z.length-1]==="/",Q=J[0]==="/";if(Y&&Q)Z+=J.slice(1);else Z+=Y||Q?J:`/${J}`}else Z+=J}return N$(Z)},XZ=function(...$){$=$.map((Y)=>GZ(Y));let Z="",J=!1;for(let Y=$.length-1;Y>=-1&&!J;Y--){let Q=Y>=0?$[Y]:HH();if(!Q||Q.length===0)continue;Z=`${Q}/${Z}`,J=b$(Q)}if(Z=fJ(Z,!J),J&&!b$(Z))return`/${Z}`;return Z.length>0?Z:"."},b$=function($){return QH.test($)},qQ=function($){if($==="..")return"";let Z=XH.exec(GZ($));return Z&&Z[1]||""},yJ=function($,Z){let J=XZ($).replace(KQ,"$1").split("/"),Y=XZ(Z).replace(KQ,"$1").split("/");if(Y[0][1]===":"&&J[0][1]===":"&&J[0]!==Y[0])return Y.join("/");let Q=[...J];for(let X of Q){if(Y[0]!==X)break;J.shift(),Y.shift()}return[...J.map(()=>".."),...Y].join("/")},CZ=function($){let Z=GZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&RQ.test(Z[0]))Z[0]+="/";return Z.join("/")||(b$($)?"/":".")},IQ=function($,Z){let J=GZ($).split("/"),Y="";for(let Q=J.length-1;Q>=0;Q--){let X=J[Q];if(X){Y=X;break}}return Z&&Y.endsWith(Z)?Y.slice(0,-Z.length):Y},HZ=function($){let Z=GH.exec($)?.[0]?.replace(/\\/g,"/")||"",J=IQ($),Y=qQ(J);return{root:Z,dir:CZ($),base:J,ext:Y,name:J.slice(0,J.length-Y.length)}};var jQ=_$(()=>{JH=/^[A-Za-z]:\//;YH=/^[/\\]{2}/,QH=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,RQ=/^[A-Za-z]:$/,KQ=/^\/([A-Za-z]:)?$/,XH=/.(\.[^./]+|\.)$/,GH=/^[/\\]|^[a-zA-Z]:[/\\]/});var L$=_$(()=>{jQ()});import{statSync as WH}from"fs";var EZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return WH(o($,Z.name)).isDirectory()}catch{return!1}};var gJ=_$(()=>{L$()});import{existsSync as c$}from"fs";import{readdir as UH}from"fs/promises";function VH($){if(!$||typeof $!=="object")return null;let Z=$,J=Z.title;if(typeof J!=="string"||!J)return null;let Y=Z.order,Q=typeof Y==="number"&&Number.isFinite(Y)&&Number.isInteger(Y)&&Y>=0?Y:void 0;if(Q===void 0)return{title:J};return{title:J,order:Q}}async function LQ($,Z,J=""){if(!c$($))return[];let Y=[],Q=await UH($,{withFileTypes:!0});for(let X of Q){if(!EZ($,X)||X.name==="components")continue;let G=o($,X.name),U=o(G,"meta.json"),V=o(G,"index.vue"),M=null;if(!c$(U))continue;if(!c$(V)){I.warn({path:G,msg:"\u76EE\u5F55\u5B58\u5728 meta.json \u4F46\u7F3A\u5C11 index.vue\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}let z=await j$(U,{});if(M=VH(z),!M?.title){I.warn({path:U,msg:"meta.json \u7F3A\u5C11\u6709\u6548\u7684 title\uFF08\u4EE5\u53CA\u53EF\u9009 order:number\uFF09\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}if(!M?.title)continue;let _=String(X.name).replace(/_\d+$/,""),L;if(_==="index")L=J;else L=J?`${J}/${_}`:`/${_}`;let C=Z?L?`${Z}${L}`:Z:L||"/",E={name:M.title,path:C,sort:M.order??999999},S=await LQ(G,Z,L);if(S.length>0)E.children=S;Y.push(E)}return Y.sort((X,G)=>(X.sort??999999)-(G.sort??999999)),Y}function BQ($){let Z=$.split("/").filter((J)=>Boolean(J));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function PQ($){let Z=[];for(let Y of $){let Q=o(Y.rootDir,"adminViews"),X=o(Y.rootDir,"views","admin"),G=c$(Q)?Q:c$(X)?X:null;if(!G)continue;try{let U=`/${Y.source}/${Y.name}`,V=await LQ(G,U);if(V.length>0)for(let M of V)Z.push(M)}catch(U){I.warn({err:U,addon:Y.name,addonSource:Y.source,dir:G,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let J=o(process.cwd(),"menus.json");if(c$(J)){let Y=await j$(J,[]);if(Array.isArray(Y)&&Y.length>0)for(let Q of Y)Z.push(Q)}return Z}var hJ=_$(()=>{L$();$0();PZ();gJ()});var s$=i((_7,qX)=>{var RX={invalidType:"FAST_JWT_INVALID_TYPE",invalidOption:"FAST_JWT_INVALID_OPTION",invalidAlgorithm:"FAST_JWT_INVALID_ALGORITHM",invalidClaimType:"FAST_JWT_INVALID_CLAIM_TYPE",invalidClaimValue:"FAST_JWT_INVALID_CLAIM_VALUE",invalidKey:"FAST_JWT_INVALID_KEY",invalidSignature:"FAST_JWT_INVALID_SIGNATURE",invalidPayload:"FAST_JWT_INVALID_PAYLOAD",malformed:"FAST_JWT_MALFORMED",inactive:"FAST_JWT_INACTIVE",expired:"FAST_JWT_EXPIRED",missingKey:"FAST_JWT_MISSING_KEY",keyFetchingError:"FAST_JWT_KEY_FETCHING_ERROR",signError:"FAST_JWT_SIGN_ERROR",verifyError:"FAST_JWT_VERIFY_ERROR",missingRequiredClaim:"FAST_JWT_MISSING_REQUIRED_CLAIM",missingSignature:"FAST_JWT_MISSING_SIGNATURE"};class n$ extends Error{constructor($,Z,J){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,J)for(let Y in J)this[Y]=J[Y]}}n$.codes=RX;n$.wrap=function($,Z,J){if($ instanceof n$)return $;return new n$(Z,J,{originalError:$})};qX.exports={TokenError:n$,TOKEN_ERROR_CODES:RX}});var eJ=i((M7,IX)=>{var{TokenError:U$}=s$();function SW({complete:$,checkTyp:Z},J){if(J instanceof Buffer)J=J.toString("utf-8");else if(typeof J!=="string")throw new U$(U$.codes.invalidType,"The token must be a string or a buffer.");let Y=J.indexOf("."),Q=J.lastIndexOf(".");if(Y===-1||Y>=Q)throw new U$(U$.codes.malformed,"The token is malformed.");let X=!1;try{let G=JSON.parse(Buffer.from(J.slice(0,Y),"base64").toString("utf-8"));if(Z&&G.typ!==Z)throw new U$(U$.codes.invalidType,`The type must be "${Z}".`,{header:G});X=!0;let U=Buffer.from(J.slice(Y+1,Q),"base64").toString("utf-8");if(U=JSON.parse(U),!U||typeof U!=="object")throw new U$(U$.codes.invalidPayload,"The payload must be an object",{payload:U});return $?{header:G,payload:U,signature:J.slice(Q+1),input:J.slice(0,Q)}:U}catch(G){throw U$.wrap(G,U$.codes.malformed,`The token ${X?"payload":"header"} is not a valid base64url serialized JSON.`)}}IX.exports=function(Z={}){let J=Z.complete||!1,Y=Z.checkTyp;return SW.bind(null,{complete:J,checkTyp:Y})}});var LX=i((A7,jX)=>{function V$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")V$.prototype[Symbol.iterator]=function(){return this};V$.of=function(){var $=arguments,Z=$.length,J=0;return new V$(function(){if(J>=Z)return{done:!0};return{done:!1,value:$[J++]}})};V$.empty=function(){var $=new V$(function(){return{done:!0}});return $};V$.fromSequence=function($){var Z=0,J=$.length;return new V$(function(){if(Z>=J)return{done:!0};return{done:!1,value:$[Z++]}})};V$.is=function($){if($ instanceof V$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};jX.exports=V$});var BX=i((TW)=>{TW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";TW.SYMBOL_SUPPORT=typeof Symbol<"u"});var $Y=i((F7,CX)=>{var PX=BX(),kW=PX.ARRAY_BUFFER_SUPPORT,vW=PX.SYMBOL_SUPPORT;CX.exports=function(Z,J){var Y,Q,X,G,U;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof J!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||kW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(X=0,G=Z.length;X<G;X++)J(Z[X],X);return}if(typeof Z.forEach==="function"){Z.forEach(J);return}if(vW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){Y=Z,X=0;while(U=Y.next(),U.done!==!0)J(U.value,X),X++;return}for(Q in Z)if(Z.hasOwnProperty(Q))J(Z[Q],Q);return}});var ZY=i((pW)=>{var xW=Math.pow(2,8)-1,fW=Math.pow(2,16)-1,yW=Math.pow(2,32)-1,gW=Math.pow(2,7)-1,hW=Math.pow(2,15)-1,bW=Math.pow(2,31)-1;pW.getPointerArray=function($){var Z=$-1;if(Z<=xW)return Uint8Array;if(Z<=fW)return Uint16Array;if(Z<=yW)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};pW.getSignedPointerArray=function($){var Z=$-1;if(Z<=gW)return Int8Array;if(Z<=hW)return Int16Array;if(Z<=bW)return Int32Array;return Float64Array};pW.getNumberType=function($){if($===($|0))if(Math.sign($)===-1){if($<=127&&$>=-128)return Int8Array;if($<=32767&&$>=-32768)return Int16Array;return Int32Array}else{if($<=255)return Uint8Array;if($<=65535)return Uint16Array;return Uint32Array}return Float64Array};var cW={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};pW.getMinimalRepresentation=function($,Z){var J=null,Y=0,Q,X,G,U,V;for(U=0,V=$.length;U<V;U++)if(G=Z?Z($[U]):$[U],X=pW.getNumberType(G),Q=cW[X.name],Q>Y)Y=Q,J=X;return J};pW.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};pW.concat=function(){var $=0,Z,J,Y;for(Z=0,Y=arguments.length;Z<Y;Z++)$+=arguments[Z].length;var Q=new arguments[0].constructor($);for(Z=0,J=0;Z<Y;Z++)Q.set(arguments[Z],J),J+=arguments[Z].length;return Q};pW.indices=function($){var Z=pW.getPointerArray($),J=new Z($);for(var Y=0;Y<$;Y++)J[Y]=Y;return J}});var NX=i((iW)=>{var SX=$Y(),TX=ZY();function oW($){return Array.isArray($)||TX.isTypedArray($)}function JY($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function lW($){var Z=JY($),J=typeof Z==="number"?Array(Z):[],Y=0;return SX($,function(Q){J[Y++]=Q}),J}function rW($){var Z=JY($),J=typeof Z==="number"?TX.getPointerArray(Z):Array,Y=typeof Z==="number"?Array(Z):[],Q=typeof Z==="number"?new J(Z):[],X=0;return SX($,function(G){Y[X]=G,Q[X]=X++}),[Y,Q]}iW.isArrayLike=oW;iW.guessLength=JY;iW.toArray=lW;iW.toArrayWithIndices=rW});var QY=i((q7,DX)=>{var YY=LX(),Z9=$Y(),J9=ZY(),Y9=NX();function d0($,Z,J){if(arguments.length<2)J=$,$=null,Z=null;if(this.capacity=J,typeof this.capacity!=="number"||this.capacity<=0)throw Error("mnemonist/lru-cache: capacity should be positive number.");else if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var Y=J9.getPointerArray(J);this.forward=new Y(J),this.backward=new Y(J),this.K=typeof $==="function"?new $(J):Array(J),this.V=typeof Z==="function"?new Z(J):Array(J),this.size=0,this.head=0,this.tail=0,this.items={}}d0.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};d0.prototype.splayOnTop=function($){var Z=this.head;if(this.head===$)return this;var J=this.backward[$],Y=this.forward[$];if(this.tail===$)this.tail=J;else this.backward[Y]=J;return this.forward[J]=Y,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var J=this.items[$];if(typeof J<"u"){this.splayOnTop(J),this.V[J]=Z;return}if(this.size<this.capacity)J=this.size++;else J=this.tail,this.tail=this.backward[J],delete this.items[this.K[J]];this.items[$]=J,this.K[J]=$,this.V[J]=Z,this.forward[J]=this.head,this.backward[this.head]=J,this.head=J};d0.prototype.setpop=function($,Z){var J=null,Y=null,Q=this.items[$];if(typeof Q<"u")return this.splayOnTop(Q),J=this.V[Q],this.V[Q]=Z,{evicted:!1,key:$,value:J};if(this.size<this.capacity)Q=this.size++;else Q=this.tail,this.tail=this.backward[Q],J=this.V[Q],Y=this.K[Q],delete this.items[Y];if(this.items[$]=Q,this.K[Q]=$,this.V[Q]=Z,this.forward[Q]=this.head,this.backward[this.head]=Q,this.head=Q,Y)return{evicted:!0,key:Y,value:J};else return null};d0.prototype.has=function($){return $ in this.items};d0.prototype.get=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.splayOnTop(Z),this.V[Z]};d0.prototype.peek=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.V[Z]};d0.prototype.forEach=function($,Z){Z=arguments.length>1?Z:this;var J=0,Y=this.size,Q=this.head,X=this.K,G=this.V,U=this.forward;while(J<Y)$.call(Z,G[Q],X[Q],this),Q=U[Q],J++};d0.prototype.keys=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.forward;return new YY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.values=function(){var $=0,Z=this.size,J=this.head,Y=this.V,Q=this.forward;return new YY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.entries=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.V,X=this.forward;return new YY(function(){if($>=Z)return{done:!0};var G=Y[J],U=Q[J];if($++,$<Z)J=X[J];return{done:!1,value:[G,U]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),J;while(J=Z.next(),!J.done)$.set(J.value[0],J.value[1]);return Object.defineProperty($,"constructor",{value:d0,enumerable:!1}),$};if(typeof Symbol<"u")d0.prototype[Symbol.for("nodejs.util.inspect.custom")]=d0.prototype.inspect;d0.from=function($,Z,J,Y){if(arguments.length<2){if(Y=Y9.guessLength($),typeof Y!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)Y=Z,Z=null,J=null;var Q=new d0(Z,J,Y);return Z9($,function(X,G){Q.set(G,X)}),Q};DX.exports=d0});var GY=i((kX,XY)=>{(function($,Z){function J(j,H){if(!j)throw Error(H||"Assertion failed")}function Y(j,H){j.super_=H;var O=function(){};O.prototype=H.prototype,j.prototype=new O,j.prototype.constructor=j}function Q(j,H,O){if(Q.isBN(j))return j;if(this.negative=0,this.words=null,this.length=0,this.red=null,j!==null){if(H==="le"||H==="be")O=H,H=10;this._init(j||0,H||10,O||"be")}}if(typeof $==="object")$.exports=Q;else Z.BN=Q;Q.BN=Q,Q.wordSize=26;var X;try{if(typeof window<"u"&&typeof window.Buffer<"u")X=window.Buffer;else X=K$("buffer").Buffer}catch(j){}Q.isBN=function(H){if(H instanceof Q)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===Q.wordSize&&Array.isArray(H.words)},Q.max=function(H,O){if(H.cmp(O)>0)return H;return O},Q.min=function(H,O){if(H.cmp(O)<0)return H;return O},Q.prototype._init=function(H,O,A){if(typeof H==="number")return this._initNumber(H,O,A);if(typeof H==="object")return this._initArray(H,O,A);if(O==="hex")O=16;J(O===(O|0)&&O>=2&&O<=36),H=H.toString().replace(/\s+/g,"");var F=0;if(H[0]==="-")F++,this.negative=1;if(F<H.length){if(O===16)this._parseHex(H,F,A);else if(this._parseBase(H,O,F),A==="le")this._initArray(this.toArray(),O,A)}},Q.prototype._initNumber=function(H,O,A){if(H<0)this.negative=1,H=-H;if(H<67108864)this.words=[H&67108863],this.length=1;else if(H<4503599627370496)this.words=[H&67108863,H/67108864&67108863],this.length=2;else J(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(A!=="le")return;this._initArray(this.toArray(),O,A)},Q.prototype._initArray=function(H,O,A){if(J(typeof H.length==="number"),H.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(H.length/3),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q,B,P=0;if(A==="be"){for(F=H.length-1,q=0;F>=0;F-=3)if(B=H[F]|H[F-1]<<8|H[F-2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}else if(A==="le"){for(F=0,q=0;F<H.length;F+=3)if(B=H[F]|H[F+1]<<8|H[F+2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}return this.strip()};function G(j,H){var O=j.charCodeAt(H);if(O>=65&&O<=70)return O-55;else if(O>=97&&O<=102)return O-87;else return O-48&15}function U(j,H,O){var A=G(j,O);if(O-1>=H)A|=G(j,O-1)<<4;return A}Q.prototype._parseHex=function(H,O,A){this.length=Math.ceil((H.length-O)/6),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q=0,B=0,P;if(A==="be")for(F=H.length-1;F>=O;F-=2)if(P=U(H,O,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8;else{var K=H.length-O;for(F=K%2===0?O+1:O;F<H.length;F+=2)if(P=U(H,O,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8}this.strip()};function V(j,H,O,A){var F=0,q=Math.min(j.length,O);for(var B=H;B<q;B++){var P=j.charCodeAt(B)-48;if(F*=A,P>=49)F+=P-49+10;else if(P>=17)F+=P-17+10;else F+=P}return F}Q.prototype._parseBase=function(H,O,A){this.words=[0],this.length=1;for(var F=0,q=1;q<=67108863;q*=O)F++;F--,q=q/O|0;var B=H.length-A,P=B%F,K=Math.min(B,B-P)+A,W=0;for(var R=A;R<K;R+=F)if(W=V(H,R,R+F,O),this.imuln(q),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W);if(P!==0){var v=1;W=V(H,R,H.length,O);for(R=0;R<P;R++)v*=O;if(this.imuln(v),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W)}this.strip()},Q.prototype.copy=function(H){H.words=Array(this.length);for(var O=0;O<this.length;O++)H.words[O]=this.words[O];H.length=this.length,H.negative=this.negative,H.red=this.red},Q.prototype.clone=function(){var H=new Q(null);return this.copy(H),H},Q.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},Q.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},Q.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},Q.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],z=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],_=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(Q.prototype.toString=function(H,O){H=H||10,O=O|0||1;var A;if(H===16||H==="hex"){A="";var F=0,q=0;for(var B=0;B<this.length;B++){var P=this.words[B],K=((P<<F|q)&16777215).toString(16);if(q=P>>>24-F&16777215,F+=2,F>=26)F-=26,B--;if(q!==0||B!==this.length-1)A=M[6-K.length]+K+A;else A=K+A}if(q!==0)A=q.toString(16)+A;while(A.length%O!==0)A="0"+A;if(this.negative!==0)A="-"+A;return A}if(H===(H|0)&&H>=2&&H<=36){var W=z[H],R=_[H];A="";var v=this.clone();v.negative=0;while(!v.isZero()){var f=v.modn(R).toString(H);if(v=v.idivn(R),!v.isZero())A=M[W-f.length]+f+A;else A=f+A}if(this.isZero())A="0"+A;while(A.length%O!==0)A="0"+A;if(this.negative!==0)A="-"+A;return A}J(!1,"Base should be between 2 and 36")},Q.prototype.toNumber=function(){var H=this.words[0];if(this.length===2)H+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)H+=4503599627370496+this.words[1]*67108864;else if(this.length>2)J(!1,"Number can only safely store up to 53 bits");return this.negative!==0?-H:H},Q.prototype.toJSON=function(){return this.toString(16)},Q.prototype.toBuffer=function(H,O){return J(typeof X<"u"),this.toArrayLike(X,H,O)},Q.prototype.toArray=function(H,O){return this.toArrayLike(Array,H,O)},Q.prototype.toArrayLike=function(H,O,A){var F=this.byteLength(),q=A||Math.max(1,F);J(F<=q,"byte array longer than desired length"),J(q>0,"Requested array length <= 0"),this.strip();var B=O==="le",P=new H(q),K,W,R=this.clone();if(!B){for(W=0;W<q-F;W++)P[W]=0;for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[q-W-1]=K}else{for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[W]=K;for(;W<q;W++)P[W]=0}return P},Math.clz32)Q.prototype._countBits=function(H){return 32-Math.clz32(H)};else Q.prototype._countBits=function(H){var O=H,A=0;if(O>=4096)A+=13,O>>>=13;if(O>=64)A+=7,O>>>=7;if(O>=8)A+=4,O>>>=4;if(O>=2)A+=2,O>>>=2;return A+O};Q.prototype._zeroBits=function(H){if(H===0)return 26;var O=H,A=0;if((O&8191)===0)A+=13,O>>>=13;if((O&127)===0)A+=7,O>>>=7;if((O&15)===0)A+=4,O>>>=4;if((O&3)===0)A+=2,O>>>=2;if((O&1)===0)A++;return A},Q.prototype.bitLength=function(){var H=this.words[this.length-1],O=this._countBits(H);return(this.length-1)*26+O};function L(j){var H=Array(j.bitLength());for(var O=0;O<H.length;O++){var A=O/26|0,F=O%26;H[O]=(j.words[A]&1<<F)>>>F}return H}Q.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var O=0;O<this.length;O++){var A=this._zeroBits(this.words[O]);if(H+=A,A!==26)break}return H},Q.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},Q.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},Q.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},Q.prototype.isNeg=function(){return this.negative!==0},Q.prototype.neg=function(){return this.clone().ineg()},Q.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},Q.prototype.iuor=function(H){while(this.length<H.length)this.words[this.length++]=0;for(var O=0;O<H.length;O++)this.words[O]=this.words[O]|H.words[O];return this.strip()},Q.prototype.ior=function(H){return J((this.negative|H.negative)===0),this.iuor(H)},Q.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},Q.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},Q.prototype.iuand=function(H){var O;if(this.length>H.length)O=H;else O=this;for(var A=0;A<O.length;A++)this.words[A]=this.words[A]&H.words[A];return this.length=O.length,this.strip()},Q.prototype.iand=function(H){return J((this.negative|H.negative)===0),this.iuand(H)},Q.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},Q.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},Q.prototype.iuxor=function(H){var O,A;if(this.length>H.length)O=this,A=H;else O=H,A=this;for(var F=0;F<A.length;F++)this.words[F]=O.words[F]^A.words[F];if(this!==O)for(;F<O.length;F++)this.words[F]=O.words[F];return this.length=O.length,this.strip()},Q.prototype.ixor=function(H){return J((this.negative|H.negative)===0),this.iuxor(H)},Q.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},Q.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},Q.prototype.inotn=function(H){J(typeof H==="number"&&H>=0);var O=Math.ceil(H/26)|0,A=H%26;if(this._expand(O),A>0)O--;for(var F=0;F<O;F++)this.words[F]=~this.words[F]&67108863;if(A>0)this.words[F]=~this.words[F]&67108863>>26-A;return this.strip()},Q.prototype.notn=function(H){return this.clone().inotn(H)},Q.prototype.setn=function(H,O){J(typeof H==="number"&&H>=0);var A=H/26|0,F=H%26;if(this._expand(A+1),O)this.words[A]=this.words[A]|1<<F;else this.words[A]=this.words[A]&~(1<<F);return this.strip()},Q.prototype.iadd=function(H){var O;if(this.negative!==0&&H.negative===0)return this.negative=0,O=this.isub(H),this.negative^=1,this._normSign();else if(this.negative===0&&H.negative!==0)return H.negative=0,O=this.isub(H),H.negative=1,O._normSign();var A,F;if(this.length>H.length)A=this,F=H;else A=H,F=this;var q=0;for(var B=0;B<F.length;B++)O=(A.words[B]|0)+(F.words[B]|0)+q,this.words[B]=O&67108863,q=O>>>26;for(;q!==0&&B<A.length;B++)O=(A.words[B]|0)+q,this.words[B]=O&67108863,q=O>>>26;if(this.length=A.length,q!==0)this.words[this.length]=q,this.length++;else if(A!==this)for(;B<A.length;B++)this.words[B]=A.words[B];return this},Q.prototype.add=function(H){var O;if(H.negative!==0&&this.negative===0)return H.negative=0,O=this.sub(H),H.negative^=1,O;else if(H.negative===0&&this.negative!==0)return this.negative=0,O=H.sub(this),this.negative=1,O;if(this.length>H.length)return this.clone().iadd(H);return H.clone().iadd(this)},Q.prototype.isub=function(H){if(H.negative!==0){H.negative=0;var O=this.iadd(H);return H.negative=1,O._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(H),this.negative=1,this._normSign();var A=this.cmp(H);if(A===0)return this.negative=0,this.length=1,this.words[0]=0,this;var F,q;if(A>0)F=this,q=H;else F=H,q=this;var B=0;for(var P=0;P<q.length;P++)O=(F.words[P]|0)-(q.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;for(;B!==0&&P<F.length;P++)O=(F.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;if(B===0&&P<F.length&&F!==this)for(;P<F.length;P++)this.words[P]=F.words[P];if(this.length=Math.max(this.length,P),F!==this)this.negative=1;return this.strip()},Q.prototype.sub=function(H){return this.clone().isub(H)};function C(j,H,O){O.negative=H.negative^j.negative;var A=j.length+H.length|0;O.length=A,A=A-1|0;var F=j.words[0]|0,q=H.words[0]|0,B=F*q,P=B&67108863,K=B/67108864|0;O.words[0]=P;for(var W=1;W<A;W++){var R=K>>>26,v=K&67108863,f=Math.min(W,H.length-1);for(var y=Math.max(0,W-j.length+1);y<=f;y++){var d=W-y|0;F=j.words[d]|0,q=H.words[y]|0,B=F*q+v,R+=B/67108864|0,v=B&67108863}O.words[W]=v|0,K=R|0}if(K!==0)O.words[W]=K|0;else O.length--;return O.strip()}var E=function(H,O,A){var F=H.words,q=O.words,B=A.words,P=0,K,W,R,v=F[0]|0,f=v&8191,y=v>>>13,d=F[1]|0,t=d&8191,J0=d>>>13,F$=F[2]|0,Y0=F$&8191,G0=F$>>>13,DY=F[3]|0,W0=DY&8191,U0=DY>>>13,kY=F[4]|0,V0=kY&8191,O0=kY>>>13,vY=F[5]|0,_0=vY&8191,M0=vY>>>13,xY=F[6]|0,A0=xY&8191,z0=xY>>>13,fY=F[7]|0,F0=fY&8191,K0=fY>>>13,yY=F[8]|0,R0=yY&8191,q0=yY>>>13,gY=F[9]|0,I0=gY&8191,j0=gY>>>13,hY=q[0]|0,L0=hY&8191,B0=hY>>>13,bY=q[1]|0,P0=bY&8191,C0=bY>>>13,cY=q[2]|0,E0=cY&8191,w0=cY>>>13,pY=q[3]|0,S0=pY&8191,T0=pY>>>13,uY=q[4]|0,N0=uY&8191,D0=uY>>>13,mY=q[5]|0,k0=mY&8191,v0=mY>>>13,dY=q[6]|0,x0=dY&8191,f0=dY>>>13,nY=q[7]|0,y0=nY&8191,g0=nY>>>13,sY=q[8]|0,h0=sY&8191,b0=sY>>>13,oY=q[9]|0,c0=oY&8191,p0=oY>>>13;A.negative=H.negative^O.negative,A.length=19,K=Math.imul(f,L0),W=Math.imul(f,B0),W=W+Math.imul(y,L0)|0,R=Math.imul(y,B0);var eZ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(eZ>>>26)|0,eZ&=67108863,K=Math.imul(t,L0),W=Math.imul(t,B0),W=W+Math.imul(J0,L0)|0,R=Math.imul(J0,B0),K=K+Math.imul(f,P0)|0,W=W+Math.imul(f,C0)|0,W=W+Math.imul(y,P0)|0,R=R+Math.imul(y,C0)|0;var $J=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+($J>>>26)|0,$J&=67108863,K=Math.imul(Y0,L0),W=Math.imul(Y0,B0),W=W+Math.imul(G0,L0)|0,R=Math.imul(G0,B0),K=K+Math.imul(t,P0)|0,W=W+Math.imul(t,C0)|0,W=W+Math.imul(J0,P0)|0,R=R+Math.imul(J0,C0)|0,K=K+Math.imul(f,E0)|0,W=W+Math.imul(f,w0)|0,W=W+Math.imul(y,E0)|0,R=R+Math.imul(y,w0)|0;var ZJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(ZJ>>>26)|0,ZJ&=67108863,K=Math.imul(W0,L0),W=Math.imul(W0,B0),W=W+Math.imul(U0,L0)|0,R=Math.imul(U0,B0),K=K+Math.imul(Y0,P0)|0,W=W+Math.imul(Y0,C0)|0,W=W+Math.imul(G0,P0)|0,R=R+Math.imul(G0,C0)|0,K=K+Math.imul(t,E0)|0,W=W+Math.imul(t,w0)|0,W=W+Math.imul(J0,E0)|0,R=R+Math.imul(J0,w0)|0,K=K+Math.imul(f,S0)|0,W=W+Math.imul(f,T0)|0,W=W+Math.imul(y,S0)|0,R=R+Math.imul(y,T0)|0;var JJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(JJ>>>26)|0,JJ&=67108863,K=Math.imul(V0,L0),W=Math.imul(V0,B0),W=W+Math.imul(O0,L0)|0,R=Math.imul(O0,B0),K=K+Math.imul(W0,P0)|0,W=W+Math.imul(W0,C0)|0,W=W+Math.imul(U0,P0)|0,R=R+Math.imul(U0,C0)|0,K=K+Math.imul(Y0,E0)|0,W=W+Math.imul(Y0,w0)|0,W=W+Math.imul(G0,E0)|0,R=R+Math.imul(G0,w0)|0,K=K+Math.imul(t,S0)|0,W=W+Math.imul(t,T0)|0,W=W+Math.imul(J0,S0)|0,R=R+Math.imul(J0,T0)|0,K=K+Math.imul(f,N0)|0,W=W+Math.imul(f,D0)|0,W=W+Math.imul(y,N0)|0,R=R+Math.imul(y,D0)|0;var YJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(YJ>>>26)|0,YJ&=67108863,K=Math.imul(_0,L0),W=Math.imul(_0,B0),W=W+Math.imul(M0,L0)|0,R=Math.imul(M0,B0),K=K+Math.imul(V0,P0)|0,W=W+Math.imul(V0,C0)|0,W=W+Math.imul(O0,P0)|0,R=R+Math.imul(O0,C0)|0,K=K+Math.imul(W0,E0)|0,W=W+Math.imul(W0,w0)|0,W=W+Math.imul(U0,E0)|0,R=R+Math.imul(U0,w0)|0,K=K+Math.imul(Y0,S0)|0,W=W+Math.imul(Y0,T0)|0,W=W+Math.imul(G0,S0)|0,R=R+Math.imul(G0,T0)|0,K=K+Math.imul(t,N0)|0,W=W+Math.imul(t,D0)|0,W=W+Math.imul(J0,N0)|0,R=R+Math.imul(J0,D0)|0,K=K+Math.imul(f,k0)|0,W=W+Math.imul(f,v0)|0,W=W+Math.imul(y,k0)|0,R=R+Math.imul(y,v0)|0;var QJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(QJ>>>26)|0,QJ&=67108863,K=Math.imul(A0,L0),W=Math.imul(A0,B0),W=W+Math.imul(z0,L0)|0,R=Math.imul(z0,B0),K=K+Math.imul(_0,P0)|0,W=W+Math.imul(_0,C0)|0,W=W+Math.imul(M0,P0)|0,R=R+Math.imul(M0,C0)|0,K=K+Math.imul(V0,E0)|0,W=W+Math.imul(V0,w0)|0,W=W+Math.imul(O0,E0)|0,R=R+Math.imul(O0,w0)|0,K=K+Math.imul(W0,S0)|0,W=W+Math.imul(W0,T0)|0,W=W+Math.imul(U0,S0)|0,R=R+Math.imul(U0,T0)|0,K=K+Math.imul(Y0,N0)|0,W=W+Math.imul(Y0,D0)|0,W=W+Math.imul(G0,N0)|0,R=R+Math.imul(G0,D0)|0,K=K+Math.imul(t,k0)|0,W=W+Math.imul(t,v0)|0,W=W+Math.imul(J0,k0)|0,R=R+Math.imul(J0,v0)|0,K=K+Math.imul(f,x0)|0,W=W+Math.imul(f,f0)|0,W=W+Math.imul(y,x0)|0,R=R+Math.imul(y,f0)|0;var XJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(XJ>>>26)|0,XJ&=67108863,K=Math.imul(F0,L0),W=Math.imul(F0,B0),W=W+Math.imul(K0,L0)|0,R=Math.imul(K0,B0),K=K+Math.imul(A0,P0)|0,W=W+Math.imul(A0,C0)|0,W=W+Math.imul(z0,P0)|0,R=R+Math.imul(z0,C0)|0,K=K+Math.imul(_0,E0)|0,W=W+Math.imul(_0,w0)|0,W=W+Math.imul(M0,E0)|0,R=R+Math.imul(M0,w0)|0,K=K+Math.imul(V0,S0)|0,W=W+Math.imul(V0,T0)|0,W=W+Math.imul(O0,S0)|0,R=R+Math.imul(O0,T0)|0,K=K+Math.imul(W0,N0)|0,W=W+Math.imul(W0,D0)|0,W=W+Math.imul(U0,N0)|0,R=R+Math.imul(U0,D0)|0,K=K+Math.imul(Y0,k0)|0,W=W+Math.imul(Y0,v0)|0,W=W+Math.imul(G0,k0)|0,R=R+Math.imul(G0,v0)|0,K=K+Math.imul(t,x0)|0,W=W+Math.imul(t,f0)|0,W=W+Math.imul(J0,x0)|0,R=R+Math.imul(J0,f0)|0,K=K+Math.imul(f,y0)|0,W=W+Math.imul(f,g0)|0,W=W+Math.imul(y,y0)|0,R=R+Math.imul(y,g0)|0;var GJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(GJ>>>26)|0,GJ&=67108863,K=Math.imul(R0,L0),W=Math.imul(R0,B0),W=W+Math.imul(q0,L0)|0,R=Math.imul(q0,B0),K=K+Math.imul(F0,P0)|0,W=W+Math.imul(F0,C0)|0,W=W+Math.imul(K0,P0)|0,R=R+Math.imul(K0,C0)|0,K=K+Math.imul(A0,E0)|0,W=W+Math.imul(A0,w0)|0,W=W+Math.imul(z0,E0)|0,R=R+Math.imul(z0,w0)|0,K=K+Math.imul(_0,S0)|0,W=W+Math.imul(_0,T0)|0,W=W+Math.imul(M0,S0)|0,R=R+Math.imul(M0,T0)|0,K=K+Math.imul(V0,N0)|0,W=W+Math.imul(V0,D0)|0,W=W+Math.imul(O0,N0)|0,R=R+Math.imul(O0,D0)|0,K=K+Math.imul(W0,k0)|0,W=W+Math.imul(W0,v0)|0,W=W+Math.imul(U0,k0)|0,R=R+Math.imul(U0,v0)|0,K=K+Math.imul(Y0,x0)|0,W=W+Math.imul(Y0,f0)|0,W=W+Math.imul(G0,x0)|0,R=R+Math.imul(G0,f0)|0,K=K+Math.imul(t,y0)|0,W=W+Math.imul(t,g0)|0,W=W+Math.imul(J0,y0)|0,R=R+Math.imul(J0,g0)|0,K=K+Math.imul(f,h0)|0,W=W+Math.imul(f,b0)|0,W=W+Math.imul(y,h0)|0,R=R+Math.imul(y,b0)|0;var HJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(HJ>>>26)|0,HJ&=67108863,K=Math.imul(I0,L0),W=Math.imul(I0,B0),W=W+Math.imul(j0,L0)|0,R=Math.imul(j0,B0),K=K+Math.imul(R0,P0)|0,W=W+Math.imul(R0,C0)|0,W=W+Math.imul(q0,P0)|0,R=R+Math.imul(q0,C0)|0,K=K+Math.imul(F0,E0)|0,W=W+Math.imul(F0,w0)|0,W=W+Math.imul(K0,E0)|0,R=R+Math.imul(K0,w0)|0,K=K+Math.imul(A0,S0)|0,W=W+Math.imul(A0,T0)|0,W=W+Math.imul(z0,S0)|0,R=R+Math.imul(z0,T0)|0,K=K+Math.imul(_0,N0)|0,W=W+Math.imul(_0,D0)|0,W=W+Math.imul(M0,N0)|0,R=R+Math.imul(M0,D0)|0,K=K+Math.imul(V0,k0)|0,W=W+Math.imul(V0,v0)|0,W=W+Math.imul(O0,k0)|0,R=R+Math.imul(O0,v0)|0,K=K+Math.imul(W0,x0)|0,W=W+Math.imul(W0,f0)|0,W=W+Math.imul(U0,x0)|0,R=R+Math.imul(U0,f0)|0,K=K+Math.imul(Y0,y0)|0,W=W+Math.imul(Y0,g0)|0,W=W+Math.imul(G0,y0)|0,R=R+Math.imul(G0,g0)|0,K=K+Math.imul(t,h0)|0,W=W+Math.imul(t,b0)|0,W=W+Math.imul(J0,h0)|0,R=R+Math.imul(J0,b0)|0,K=K+Math.imul(f,c0)|0,W=W+Math.imul(f,p0)|0,W=W+Math.imul(y,c0)|0,R=R+Math.imul(y,p0)|0;var WJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(WJ>>>26)|0,WJ&=67108863,K=Math.imul(I0,P0),W=Math.imul(I0,C0),W=W+Math.imul(j0,P0)|0,R=Math.imul(j0,C0),K=K+Math.imul(R0,E0)|0,W=W+Math.imul(R0,w0)|0,W=W+Math.imul(q0,E0)|0,R=R+Math.imul(q0,w0)|0,K=K+Math.imul(F0,S0)|0,W=W+Math.imul(F0,T0)|0,W=W+Math.imul(K0,S0)|0,R=R+Math.imul(K0,T0)|0,K=K+Math.imul(A0,N0)|0,W=W+Math.imul(A0,D0)|0,W=W+Math.imul(z0,N0)|0,R=R+Math.imul(z0,D0)|0,K=K+Math.imul(_0,k0)|0,W=W+Math.imul(_0,v0)|0,W=W+Math.imul(M0,k0)|0,R=R+Math.imul(M0,v0)|0,K=K+Math.imul(V0,x0)|0,W=W+Math.imul(V0,f0)|0,W=W+Math.imul(O0,x0)|0,R=R+Math.imul(O0,f0)|0,K=K+Math.imul(W0,y0)|0,W=W+Math.imul(W0,g0)|0,W=W+Math.imul(U0,y0)|0,R=R+Math.imul(U0,g0)|0,K=K+Math.imul(Y0,h0)|0,W=W+Math.imul(Y0,b0)|0,W=W+Math.imul(G0,h0)|0,R=R+Math.imul(G0,b0)|0,K=K+Math.imul(t,c0)|0,W=W+Math.imul(t,p0)|0,W=W+Math.imul(J0,c0)|0,R=R+Math.imul(J0,p0)|0;var UJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(UJ>>>26)|0,UJ&=67108863,K=Math.imul(I0,E0),W=Math.imul(I0,w0),W=W+Math.imul(j0,E0)|0,R=Math.imul(j0,w0),K=K+Math.imul(R0,S0)|0,W=W+Math.imul(R0,T0)|0,W=W+Math.imul(q0,S0)|0,R=R+Math.imul(q0,T0)|0,K=K+Math.imul(F0,N0)|0,W=W+Math.imul(F0,D0)|0,W=W+Math.imul(K0,N0)|0,R=R+Math.imul(K0,D0)|0,K=K+Math.imul(A0,k0)|0,W=W+Math.imul(A0,v0)|0,W=W+Math.imul(z0,k0)|0,R=R+Math.imul(z0,v0)|0,K=K+Math.imul(_0,x0)|0,W=W+Math.imul(_0,f0)|0,W=W+Math.imul(M0,x0)|0,R=R+Math.imul(M0,f0)|0,K=K+Math.imul(V0,y0)|0,W=W+Math.imul(V0,g0)|0,W=W+Math.imul(O0,y0)|0,R=R+Math.imul(O0,g0)|0,K=K+Math.imul(W0,h0)|0,W=W+Math.imul(W0,b0)|0,W=W+Math.imul(U0,h0)|0,R=R+Math.imul(U0,b0)|0,K=K+Math.imul(Y0,c0)|0,W=W+Math.imul(Y0,p0)|0,W=W+Math.imul(G0,c0)|0,R=R+Math.imul(G0,p0)|0;var VJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(VJ>>>26)|0,VJ&=67108863,K=Math.imul(I0,S0),W=Math.imul(I0,T0),W=W+Math.imul(j0,S0)|0,R=Math.imul(j0,T0),K=K+Math.imul(R0,N0)|0,W=W+Math.imul(R0,D0)|0,W=W+Math.imul(q0,N0)|0,R=R+Math.imul(q0,D0)|0,K=K+Math.imul(F0,k0)|0,W=W+Math.imul(F0,v0)|0,W=W+Math.imul(K0,k0)|0,R=R+Math.imul(K0,v0)|0,K=K+Math.imul(A0,x0)|0,W=W+Math.imul(A0,f0)|0,W=W+Math.imul(z0,x0)|0,R=R+Math.imul(z0,f0)|0,K=K+Math.imul(_0,y0)|0,W=W+Math.imul(_0,g0)|0,W=W+Math.imul(M0,y0)|0,R=R+Math.imul(M0,g0)|0,K=K+Math.imul(V0,h0)|0,W=W+Math.imul(V0,b0)|0,W=W+Math.imul(O0,h0)|0,R=R+Math.imul(O0,b0)|0,K=K+Math.imul(W0,c0)|0,W=W+Math.imul(W0,p0)|0,W=W+Math.imul(U0,c0)|0,R=R+Math.imul(U0,p0)|0;var OJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(OJ>>>26)|0,OJ&=67108863,K=Math.imul(I0,N0),W=Math.imul(I0,D0),W=W+Math.imul(j0,N0)|0,R=Math.imul(j0,D0),K=K+Math.imul(R0,k0)|0,W=W+Math.imul(R0,v0)|0,W=W+Math.imul(q0,k0)|0,R=R+Math.imul(q0,v0)|0,K=K+Math.imul(F0,x0)|0,W=W+Math.imul(F0,f0)|0,W=W+Math.imul(K0,x0)|0,R=R+Math.imul(K0,f0)|0,K=K+Math.imul(A0,y0)|0,W=W+Math.imul(A0,g0)|0,W=W+Math.imul(z0,y0)|0,R=R+Math.imul(z0,g0)|0,K=K+Math.imul(_0,h0)|0,W=W+Math.imul(_0,b0)|0,W=W+Math.imul(M0,h0)|0,R=R+Math.imul(M0,b0)|0,K=K+Math.imul(V0,c0)|0,W=W+Math.imul(V0,p0)|0,W=W+Math.imul(O0,c0)|0,R=R+Math.imul(O0,p0)|0;var _J=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(_J>>>26)|0,_J&=67108863,K=Math.imul(I0,k0),W=Math.imul(I0,v0),W=W+Math.imul(j0,k0)|0,R=Math.imul(j0,v0),K=K+Math.imul(R0,x0)|0,W=W+Math.imul(R0,f0)|0,W=W+Math.imul(q0,x0)|0,R=R+Math.imul(q0,f0)|0,K=K+Math.imul(F0,y0)|0,W=W+Math.imul(F0,g0)|0,W=W+Math.imul(K0,y0)|0,R=R+Math.imul(K0,g0)|0,K=K+Math.imul(A0,h0)|0,W=W+Math.imul(A0,b0)|0,W=W+Math.imul(z0,h0)|0,R=R+Math.imul(z0,b0)|0,K=K+Math.imul(_0,c0)|0,W=W+Math.imul(_0,p0)|0,W=W+Math.imul(M0,c0)|0,R=R+Math.imul(M0,p0)|0;var MJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(MJ>>>26)|0,MJ&=67108863,K=Math.imul(I0,x0),W=Math.imul(I0,f0),W=W+Math.imul(j0,x0)|0,R=Math.imul(j0,f0),K=K+Math.imul(R0,y0)|0,W=W+Math.imul(R0,g0)|0,W=W+Math.imul(q0,y0)|0,R=R+Math.imul(q0,g0)|0,K=K+Math.imul(F0,h0)|0,W=W+Math.imul(F0,b0)|0,W=W+Math.imul(K0,h0)|0,R=R+Math.imul(K0,b0)|0,K=K+Math.imul(A0,c0)|0,W=W+Math.imul(A0,p0)|0,W=W+Math.imul(z0,c0)|0,R=R+Math.imul(z0,p0)|0;var AJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(AJ>>>26)|0,AJ&=67108863,K=Math.imul(I0,y0),W=Math.imul(I0,g0),W=W+Math.imul(j0,y0)|0,R=Math.imul(j0,g0),K=K+Math.imul(R0,h0)|0,W=W+Math.imul(R0,b0)|0,W=W+Math.imul(q0,h0)|0,R=R+Math.imul(q0,b0)|0,K=K+Math.imul(F0,c0)|0,W=W+Math.imul(F0,p0)|0,W=W+Math.imul(K0,c0)|0,R=R+Math.imul(K0,p0)|0;var zJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(zJ>>>26)|0,zJ&=67108863,K=Math.imul(I0,h0),W=Math.imul(I0,b0),W=W+Math.imul(j0,h0)|0,R=Math.imul(j0,b0),K=K+Math.imul(R0,c0)|0,W=W+Math.imul(R0,p0)|0,W=W+Math.imul(q0,c0)|0,R=R+Math.imul(q0,p0)|0;var FJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(FJ>>>26)|0,FJ&=67108863,K=Math.imul(I0,c0),W=Math.imul(I0,p0),W=W+Math.imul(j0,c0)|0,R=Math.imul(j0,p0);var KJ=(P+K|0)+((W&8191)<<13)|0;if(P=(R+(W>>>13)|0)+(KJ>>>26)|0,KJ&=67108863,B[0]=eZ,B[1]=$J,B[2]=ZJ,B[3]=JJ,B[4]=YJ,B[5]=QJ,B[6]=XJ,B[7]=GJ,B[8]=HJ,B[9]=WJ,B[10]=UJ,B[11]=VJ,B[12]=OJ,B[13]=_J,B[14]=MJ,B[15]=AJ,B[16]=zJ,B[17]=FJ,B[18]=KJ,P!==0)B[19]=P,A.length++;return A};if(!Math.imul)E=C;function S(j,H,O){O.negative=H.negative^j.negative,O.length=j.length+H.length;var A=0,F=0;for(var q=0;q<O.length-1;q++){var B=F;F=0;var P=A&67108863,K=Math.min(q,H.length-1);for(var W=Math.max(0,q-j.length+1);W<=K;W++){var R=q-W,v=j.words[R]|0,f=H.words[W]|0,y=v*f,d=y&67108863;B=B+(y/67108864|0)|0,d=d+P|0,P=d&67108863,B=B+(d>>>26)|0,F+=B>>>26,B&=67108863}O.words[q]=P,A=B,B=F}if(A!==0)O.words[q]=A;else O.length--;return O.strip()}function D(j,H,O){var A=new N;return A.mulp(j,H,O)}Q.prototype.mulTo=function(H,O){var A,F=this.length+H.length;if(this.length===10&&H.length===10)A=E(this,H,O);else if(F<63)A=C(this,H,O);else if(F<1024)A=S(this,H,O);else A=D(this,H,O);return A};function N(j,H){this.x=j,this.y=H}N.prototype.makeRBT=function(H){var O=Array(H),A=Q.prototype._countBits(H)-1;for(var F=0;F<H;F++)O[F]=this.revBin(F,A,H);return O},N.prototype.revBin=function(H,O,A){if(H===0||H===A-1)return H;var F=0;for(var q=0;q<O;q++)F|=(H&1)<<O-q-1,H>>=1;return F},N.prototype.permute=function(H,O,A,F,q,B){for(var P=0;P<B;P++)F[P]=O[H[P]],q[P]=A[H[P]]},N.prototype.transform=function(H,O,A,F,q,B){this.permute(B,H,O,A,F,q);for(var P=1;P<q;P<<=1){var K=P<<1,W=Math.cos(2*Math.PI/K),R=Math.sin(2*Math.PI/K);for(var v=0;v<q;v+=K){var f=W,y=R;for(var d=0;d<P;d++){var t=A[v+d],J0=F[v+d],F$=A[v+d+P],Y0=F[v+d+P],G0=f*F$-y*Y0;if(Y0=f*Y0+y*F$,F$=G0,A[v+d]=t+F$,F[v+d]=J0+Y0,A[v+d+P]=t-F$,F[v+d+P]=J0-Y0,d!==K)G0=W*f-R*y,y=W*y+R*f,f=G0}}}},N.prototype.guessLen13b=function(H,O){var A=Math.max(O,H)|1,F=A&1,q=0;for(A=A/2|0;A;A=A>>>1)q++;return 1<<q+1+F},N.prototype.conjugate=function(H,O,A){if(A<=1)return;for(var F=0;F<A/2;F++){var q=H[F];H[F]=H[A-F-1],H[A-F-1]=q,q=O[F],O[F]=-O[A-F-1],O[A-F-1]=-q}},N.prototype.normalize13b=function(H,O){var A=0;for(var F=0;F<O/2;F++){var q=Math.round(H[2*F+1]/O)*8192+Math.round(H[2*F]/O)+A;if(H[F]=q&67108863,q<67108864)A=0;else A=q/67108864|0}return H},N.prototype.convert13b=function(H,O,A,F){var q=0;for(var B=0;B<O;B++)q=q+(H[B]|0),A[2*B]=q&8191,q=q>>>13,A[2*B+1]=q&8191,q=q>>>13;for(B=2*O;B<F;++B)A[B]=0;J(q===0),J((q&-8192)===0)},N.prototype.stub=function(H){var O=Array(H);for(var A=0;A<H;A++)O[A]=0;return O},N.prototype.mulp=function(H,O,A){var F=2*this.guessLen13b(H.length,O.length),q=this.makeRBT(F),B=this.stub(F),P=Array(F),K=Array(F),W=Array(F),R=Array(F),v=Array(F),f=Array(F),y=A.words;y.length=F,this.convert13b(H.words,H.length,P,F),this.convert13b(O.words,O.length,R,F),this.transform(P,B,K,W,F,q),this.transform(R,B,v,f,F,q);for(var d=0;d<F;d++){var t=K[d]*v[d]-W[d]*f[d];W[d]=K[d]*f[d]+W[d]*v[d],K[d]=t}return this.conjugate(K,W,F),this.transform(K,W,y,B,F,q),this.conjugate(y,B,F),this.normalize13b(y,F),A.negative=H.negative^O.negative,A.length=H.length+O.length,A.strip()},Q.prototype.mul=function(H){var O=new Q(null);return O.words=Array(this.length+H.length),this.mulTo(H,O)},Q.prototype.mulf=function(H){var O=new Q(null);return O.words=Array(this.length+H.length),D(this,H,O)},Q.prototype.imul=function(H){return this.clone().mulTo(H,this)},Q.prototype.imuln=function(H){J(typeof H==="number"),J(H<67108864);var O=0;for(var A=0;A<this.length;A++){var F=(this.words[A]|0)*H,q=(F&67108863)+(O&67108863);O>>=26,O+=F/67108864|0,O+=q>>>26,this.words[A]=q&67108863}if(O!==0)this.words[A]=O,this.length++;return this.length=H===0?1:this.length,this},Q.prototype.muln=function(H){return this.clone().imuln(H)},Q.prototype.sqr=function(){return this.mul(this)},Q.prototype.isqr=function(){return this.imul(this.clone())},Q.prototype.pow=function(H){var O=L(H);if(O.length===0)return new Q(1);var A=this;for(var F=0;F<O.length;F++,A=A.sqr())if(O[F]!==0)break;if(++F<O.length)for(var q=A.sqr();F<O.length;F++,q=q.sqr()){if(O[F]===0)continue;A=A.mul(q)}return A},Q.prototype.iushln=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26,F=67108863>>>26-O<<26-O,q;if(O!==0){var B=0;for(q=0;q<this.length;q++){var P=this.words[q]&F,K=(this.words[q]|0)-P<<O;this.words[q]=K|B,B=P>>>26-O}if(B)this.words[q]=B,this.length++}if(A!==0){for(q=this.length-1;q>=0;q--)this.words[q+A]=this.words[q];for(q=0;q<A;q++)this.words[q]=0;this.length+=A}return this.strip()},Q.prototype.ishln=function(H){return J(this.negative===0),this.iushln(H)},Q.prototype.iushrn=function(H,O,A){J(typeof H==="number"&&H>=0);var F;if(O)F=(O-O%26)/26;else F=0;var q=H%26,B=Math.min((H-q)/26,this.length),P=67108863^67108863>>>q<<q,K=A;if(F-=B,F=Math.max(0,F),K){for(var W=0;W<B;W++)K.words[W]=this.words[W];K.length=B}if(B===0);else if(this.length>B){this.length-=B;for(W=0;W<this.length;W++)this.words[W]=this.words[W+B]}else this.words[0]=0,this.length=1;var R=0;for(W=this.length-1;W>=0&&(R!==0||W>=F);W--){var v=this.words[W]|0;this.words[W]=R<<26-q|v>>>q,R=v&P}if(K&&R!==0)K.words[K.length++]=R;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},Q.prototype.ishrn=function(H,O,A){return J(this.negative===0),this.iushrn(H,O,A)},Q.prototype.shln=function(H){return this.clone().ishln(H)},Q.prototype.ushln=function(H){return this.clone().iushln(H)},Q.prototype.shrn=function(H){return this.clone().ishrn(H)},Q.prototype.ushrn=function(H){return this.clone().iushrn(H)},Q.prototype.testn=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26,F=1<<O;if(this.length<=A)return!1;var q=this.words[A];return!!(q&F)},Q.prototype.imaskn=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26;if(J(this.negative===0,"imaskn works only with positive numbers"),this.length<=A)return this;if(O!==0)A++;if(this.length=Math.min(A,this.length),O!==0){var F=67108863^67108863>>>O<<O;this.words[this.length-1]&=F}return this.strip()},Q.prototype.maskn=function(H){return this.clone().imaskn(H)},Q.prototype.iaddn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.isubn(-H);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<H)return this.words[0]=H-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(H),this.negative=1,this}return this._iaddn(H)},Q.prototype._iaddn=function(H){this.words[0]+=H;for(var O=0;O<this.length&&this.words[O]>=67108864;O++)if(this.words[O]-=67108864,O===this.length-1)this.words[O+1]=1;else this.words[O+1]++;return this.length=Math.max(this.length,O+1),this},Q.prototype.isubn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.iaddn(-H);if(this.negative!==0)return this.negative=0,this.iaddn(H),this.negative=1,this;if(this.words[0]-=H,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var O=0;O<this.length&&this.words[O]<0;O++)this.words[O]+=67108864,this.words[O+1]-=1;return this.strip()},Q.prototype.addn=function(H){return this.clone().iaddn(H)},Q.prototype.subn=function(H){return this.clone().isubn(H)},Q.prototype.iabs=function(){return this.negative=0,this},Q.prototype.abs=function(){return this.clone().iabs()},Q.prototype._ishlnsubmul=function(H,O,A){var F=H.length+A,q;this._expand(F);var B,P=0;for(q=0;q<H.length;q++){B=(this.words[q+A]|0)+P;var K=(H.words[q]|0)*O;B-=K&67108863,P=(B>>26)-(K/67108864|0),this.words[q+A]=B&67108863}for(;q<this.length-A;q++)B=(this.words[q+A]|0)+P,P=B>>26,this.words[q+A]=B&67108863;if(P===0)return this.strip();J(P===-1),P=0;for(q=0;q<this.length;q++)B=-(this.words[q]|0)+P,P=B>>26,this.words[q]=B&67108863;return this.negative=1,this.strip()},Q.prototype._wordDiv=function(H,O){var A=this.length-H.length,F=this.clone(),q=H,B=q.words[q.length-1]|0,P=this._countBits(B);if(A=26-P,A!==0)q=q.ushln(A),F.iushln(A),B=q.words[q.length-1]|0;var K=F.length-q.length,W;if(O!=="mod"){W=new Q(null),W.length=K+1,W.words=Array(W.length);for(var R=0;R<W.length;R++)W.words[R]=0}var v=F.clone()._ishlnsubmul(q,1,K);if(v.negative===0){if(F=v,W)W.words[K]=1}for(var f=K-1;f>=0;f--){var y=(F.words[q.length+f]|0)*67108864+(F.words[q.length+f-1]|0);y=Math.min(y/B|0,67108863),F._ishlnsubmul(q,y,f);while(F.negative!==0)if(y--,F.negative=0,F._ishlnsubmul(q,1,f),!F.isZero())F.negative^=1;if(W)W.words[f]=y}if(W)W.strip();if(F.strip(),O!=="div"&&A!==0)F.iushrn(A);return{div:W||null,mod:F}},Q.prototype.divmod=function(H,O,A){if(J(!H.isZero()),this.isZero())return{div:new Q(0),mod:new Q(0)};var F,q,B;if(this.negative!==0&&H.negative===0){if(B=this.neg().divmod(H,O),O!=="mod")F=B.div.neg();if(O!=="div"){if(q=B.mod.neg(),A&&q.negative!==0)q.iadd(H)}return{div:F,mod:q}}if(this.negative===0&&H.negative!==0){if(B=this.divmod(H.neg(),O),O!=="mod")F=B.div.neg();return{div:F,mod:B.mod}}if((this.negative&H.negative)!==0){if(B=this.neg().divmod(H.neg(),O),O!=="div"){if(q=B.mod.neg(),A&&q.negative!==0)q.isub(H)}return{div:B.div,mod:q}}if(H.length>this.length||this.cmp(H)<0)return{div:new Q(0),mod:this};if(H.length===1){if(O==="div")return{div:this.divn(H.words[0]),mod:null};if(O==="mod")return{div:null,mod:new Q(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new Q(this.modn(H.words[0]))}}return this._wordDiv(H,O)},Q.prototype.div=function(H){return this.divmod(H,"div",!1).div},Q.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},Q.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},Q.prototype.divRound=function(H){var O=this.divmod(H);if(O.mod.isZero())return O.div;var A=O.div.negative!==0?O.mod.isub(H):O.mod,F=H.ushrn(1),q=H.andln(1),B=A.cmp(F);if(B<0||q===1&&B===0)return O.div;return O.div.negative!==0?O.div.isubn(1):O.div.iaddn(1)},Q.prototype.modn=function(H){J(H<=67108863);var O=67108864%H,A=0;for(var F=this.length-1;F>=0;F--)A=(O*A+(this.words[F]|0))%H;return A},Q.prototype.idivn=function(H){J(H<=67108863);var O=0;for(var A=this.length-1;A>=0;A--){var F=(this.words[A]|0)+O*67108864;this.words[A]=F/H|0,O=F%H}return this.strip()},Q.prototype.divn=function(H){return this.clone().idivn(H)},Q.prototype.egcd=function(H){J(H.negative===0),J(!H.isZero());var O=this,A=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var F=new Q(1),q=new Q(0),B=new Q(0),P=new Q(1),K=0;while(O.isEven()&&A.isEven())O.iushrn(1),A.iushrn(1),++K;var W=A.clone(),R=O.clone();while(!O.isZero()){for(var v=0,f=1;(O.words[0]&f)===0&&v<26;++v,f<<=1);if(v>0){O.iushrn(v);while(v-- >0){if(F.isOdd()||q.isOdd())F.iadd(W),q.isub(R);F.iushrn(1),q.iushrn(1)}}for(var y=0,d=1;(A.words[0]&d)===0&&y<26;++y,d<<=1);if(y>0){A.iushrn(y);while(y-- >0){if(B.isOdd()||P.isOdd())B.iadd(W),P.isub(R);B.iushrn(1),P.iushrn(1)}}if(O.cmp(A)>=0)O.isub(A),F.isub(B),q.isub(P);else A.isub(O),B.isub(F),P.isub(q)}return{a:B,b:P,gcd:A.iushln(K)}},Q.prototype._invmp=function(H){J(H.negative===0),J(!H.isZero());var O=this,A=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var F=new Q(1),q=new Q(0),B=A.clone();while(O.cmpn(1)>0&&A.cmpn(1)>0){for(var P=0,K=1;(O.words[0]&K)===0&&P<26;++P,K<<=1);if(P>0){O.iushrn(P);while(P-- >0){if(F.isOdd())F.iadd(B);F.iushrn(1)}}for(var W=0,R=1;(A.words[0]&R)===0&&W<26;++W,R<<=1);if(W>0){A.iushrn(W);while(W-- >0){if(q.isOdd())q.iadd(B);q.iushrn(1)}}if(O.cmp(A)>=0)O.isub(A),F.isub(q);else A.isub(O),q.isub(F)}var v;if(O.cmpn(1)===0)v=F;else v=q;if(v.cmpn(0)<0)v.iadd(H);return v},Q.prototype.gcd=function(H){if(this.isZero())return H.abs();if(H.isZero())return this.abs();var O=this.clone(),A=H.clone();O.negative=0,A.negative=0;for(var F=0;O.isEven()&&A.isEven();F++)O.iushrn(1),A.iushrn(1);do{while(O.isEven())O.iushrn(1);while(A.isEven())A.iushrn(1);var q=O.cmp(A);if(q<0){var B=O;O=A,A=B}else if(q===0||A.cmpn(1)===0)break;O.isub(A)}while(!0);return A.iushln(F)},Q.prototype.invm=function(H){return this.egcd(H).a.umod(H)},Q.prototype.isEven=function(){return(this.words[0]&1)===0},Q.prototype.isOdd=function(){return(this.words[0]&1)===1},Q.prototype.andln=function(H){return this.words[0]&H},Q.prototype.bincn=function(H){J(typeof H==="number");var O=H%26,A=(H-O)/26,F=1<<O;if(this.length<=A)return this._expand(A+1),this.words[A]|=F,this;var q=F;for(var B=A;q!==0&&B<this.length;B++){var P=this.words[B]|0;P+=q,q=P>>>26,P&=67108863,this.words[B]=P}if(q!==0)this.words[B]=q,this.length++;return this},Q.prototype.isZero=function(){return this.length===1&&this.words[0]===0},Q.prototype.cmpn=function(H){var O=H<0;if(this.negative!==0&&!O)return-1;if(this.negative===0&&O)return 1;this.strip();var A;if(this.length>1)A=1;else{if(O)H=-H;J(H<=67108863,"Number is too big");var F=this.words[0]|0;A=F===H?0:F<H?-1:1}if(this.negative!==0)return-A|0;return A},Q.prototype.cmp=function(H){if(this.negative!==0&&H.negative===0)return-1;if(this.negative===0&&H.negative!==0)return 1;var O=this.ucmp(H);if(this.negative!==0)return-O|0;return O},Q.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var O=0;for(var A=this.length-1;A>=0;A--){var F=this.words[A]|0,q=H.words[A]|0;if(F===q)continue;if(F<q)O=-1;else if(F>q)O=1;break}return O},Q.prototype.gtn=function(H){return this.cmpn(H)===1},Q.prototype.gt=function(H){return this.cmp(H)===1},Q.prototype.gten=function(H){return this.cmpn(H)>=0},Q.prototype.gte=function(H){return this.cmp(H)>=0},Q.prototype.ltn=function(H){return this.cmpn(H)===-1},Q.prototype.lt=function(H){return this.cmp(H)===-1},Q.prototype.lten=function(H){return this.cmpn(H)<=0},Q.prototype.lte=function(H){return this.cmp(H)<=0},Q.prototype.eqn=function(H){return this.cmpn(H)===0},Q.prototype.eq=function(H){return this.cmp(H)===0},Q.red=function(H){return new r(H)},Q.prototype.toRed=function(H){return J(!this.red,"Already a number in reduction context"),J(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},Q.prototype.fromRed=function(){return J(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},Q.prototype._forceRed=function(H){return this.red=H,this},Q.prototype.forceRed=function(H){return J(!this.red,"Already a number in reduction context"),this._forceRed(H)},Q.prototype.redAdd=function(H){return J(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},Q.prototype.redIAdd=function(H){return J(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},Q.prototype.redSub=function(H){return J(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},Q.prototype.redISub=function(H){return J(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},Q.prototype.redShl=function(H){return J(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},Q.prototype.redMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},Q.prototype.redIMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},Q.prototype.redSqr=function(){return J(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},Q.prototype.redISqr=function(){return J(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},Q.prototype.redSqrt=function(){return J(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},Q.prototype.redInvm=function(){return J(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},Q.prototype.redNeg=function(){return J(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},Q.prototype.redPow=function(H){return J(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var w={k256:null,p224:null,p192:null,p25519:null};function k(j,H){this.name=j,this.p=new Q(H,16),this.n=this.p.bitLength(),this.k=new Q(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}k.prototype._tmp=function(){var H=new Q(null);return H.words=Array(Math.ceil(this.n/13)),H},k.prototype.ireduce=function(H){var O=H,A;do this.split(O,this.tmp),O=this.imulK(O),O=O.iadd(this.tmp),A=O.bitLength();while(A>this.n);var F=A<this.n?-1:O.ucmp(this.p);if(F===0)O.words[0]=0,O.length=1;else if(F>0)O.isub(this.p);else if(O.strip!==void 0)O.strip();else O._strip();return O},k.prototype.split=function(H,O){H.iushrn(this.n,0,O)},k.prototype.imulK=function(H){return H.imul(this.k)};function h(){k.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}Y(h,k),h.prototype.split=function(H,O){var A=4194303,F=Math.min(H.length,9);for(var q=0;q<F;q++)O.words[q]=H.words[q];if(O.length=F,H.length<=9){H.words[0]=0,H.length=1;return}var B=H.words[9];O.words[O.length++]=B&A;for(q=10;q<H.length;q++){var P=H.words[q]|0;H.words[q-10]=(P&A)<<4|B>>>22,B=P}if(B>>>=22,H.words[q-10]=B,B===0&&H.length>10)H.length-=10;else H.length-=9},h.prototype.imulK=function(H){H.words[H.length]=0,H.words[H.length+1]=0,H.length+=2;var O=0;for(var A=0;A<H.length;A++){var F=H.words[A]|0;O+=F*977,H.words[A]=O&67108863,O=F*64+(O/67108864|0)}if(H.words[H.length-1]===0){if(H.length--,H.words[H.length-1]===0)H.length--}return H};function x(){k.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}Y(x,k);function m(){k.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}Y(m,k);function a(){k.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}Y(a,k),a.prototype.imulK=function(H){var O=0;for(var A=0;A<H.length;A++){var F=(H.words[A]|0)*19+O,q=F&67108863;F>>>=26,H.words[A]=q,O=F}if(O!==0)H.words[H.length++]=O;return H},Q._prime=function(H){if(w[H])return w[H];var O;if(H==="k256")O=new h;else if(H==="p224")O=new x;else if(H==="p192")O=new m;else if(H==="p25519")O=new a;else throw Error("Unknown prime "+H);return w[H]=O,O};function r(j){if(typeof j==="string"){var H=Q._prime(j);this.m=H.p,this.prime=H}else J(j.gtn(1),"modulus must be greater than 1"),this.m=j,this.prime=null}r.prototype._verify1=function(H){J(H.negative===0,"red works only with positives"),J(H.red,"red works only with red numbers")},r.prototype._verify2=function(H,O){J((H.negative|O.negative)===0,"red works only with positives"),J(H.red&&H.red===O.red,"red works only with red numbers")},r.prototype.imod=function(H){if(this.prime)return this.prime.ireduce(H)._forceRed(this);return H.umod(this.m)._forceRed(this)},r.prototype.neg=function(H){if(H.isZero())return H.clone();return this.m.sub(H)._forceRed(this)},r.prototype.add=function(H,O){this._verify2(H,O);var A=H.add(O);if(A.cmp(this.m)>=0)A.isub(this.m);return A._forceRed(this)},r.prototype.iadd=function(H,O){this._verify2(H,O);var A=H.iadd(O);if(A.cmp(this.m)>=0)A.isub(this.m);return A},r.prototype.sub=function(H,O){this._verify2(H,O);var A=H.sub(O);if(A.cmpn(0)<0)A.iadd(this.m);return A._forceRed(this)},r.prototype.isub=function(H,O){this._verify2(H,O);var A=H.isub(O);if(A.cmpn(0)<0)A.iadd(this.m);return A},r.prototype.shl=function(H,O){return this._verify1(H),this.imod(H.ushln(O))},r.prototype.imul=function(H,O){return this._verify2(H,O),this.imod(H.imul(O))},r.prototype.mul=function(H,O){return this._verify2(H,O),this.imod(H.mul(O))},r.prototype.isqr=function(H){return this.imul(H,H.clone())},r.prototype.sqr=function(H){return this.mul(H,H)},r.prototype.sqrt=function(H){if(H.isZero())return H.clone();var O=this.m.andln(3);if(J(O%2===1),O===3){var A=this.m.add(new Q(1)).iushrn(2);return this.pow(H,A)}var F=this.m.subn(1),q=0;while(!F.isZero()&&F.andln(1)===0)q++,F.iushrn(1);J(!F.isZero());var B=new Q(1).toRed(this),P=B.redNeg(),K=this.m.subn(1).iushrn(1),W=this.m.bitLength();W=new Q(2*W*W).toRed(this);while(this.pow(W,K).cmp(P)!==0)W.redIAdd(P);var R=this.pow(W,F),v=this.pow(H,F.addn(1).iushrn(1)),f=this.pow(H,F),y=q;while(f.cmp(B)!==0){var d=f;for(var t=0;d.cmp(B)!==0;t++)d=d.redSqr();J(t<y);var J0=this.pow(R,new Q(1).iushln(y-t-1));v=v.redMul(J0),R=J0.redSqr(),f=f.redMul(R),y=t}return v},r.prototype.invm=function(H){var O=H._invmp(this.m);if(O.negative!==0)return O.negative=0,this.imod(O).redNeg();else return this.imod(O)},r.prototype.pow=function(H,O){if(O.isZero())return new Q(1).toRed(this);if(O.cmpn(1)===0)return H.clone();var A=4,F=Array(1<<A);F[0]=new Q(1).toRed(this),F[1]=H;for(var q=2;q<F.length;q++)F[q]=this.mul(F[q-1],H);var B=F[0],P=0,K=0,W=O.bitLength()%26;if(W===0)W=26;for(q=O.length-1;q>=0;q--){var R=O.words[q];for(var v=W-1;v>=0;v--){var f=R>>v&1;if(B!==F[0])B=this.sqr(B);if(f===0&&P===0){K=0;continue}if(P<<=1,P|=f,K++,K!==A&&(q!==0||v!==0))continue;B=this.mul(B,F[P]),K=0,P=0}W=26}return B},r.prototype.convertTo=function(H){var O=H.umod(this.m);return O===H?O.clone():O},r.prototype.convertFrom=function(H){var O=H.clone();return O.red=null,O},Q.mont=function(H){return new Z0(H)};function Z0(j){if(r.call(this,j),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new Q(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}Y(Z0,r),Z0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},Z0.prototype.convertFrom=function(H){var O=this.imod(H.mul(this.rinv));return O.red=null,O},Z0.prototype.imul=function(H,O){if(H.isZero()||O.isZero())return H.words[0]=0,H.length=1,H;var A=H.imul(O),F=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=A.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.mul=function(H,O){if(H.isZero()||O.isZero())return new Q(0)._forceRed(this);var A=H.mul(O),F=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=A.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.invm=function(H){var O=this.imod(H._invmp(this.m).mul(this.r2));return O._forceRed(this)}})(typeof XY>"u"||XY,kX)});var vX=i((I7,HY)=>{if(typeof Object.create==="function")HY.exports=function(Z,J){if(J)Z.super_=J,Z.prototype=Object.create(J.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else HY.exports=function(Z,J){if(J){Z.super_=J;var Y=function(){};Y.prototype=J.prototype,Z.prototype=new Y,Z.prototype.constructor=Z}}});var w$=i((j7,WY)=>{try{if(gZ=K$("util"),typeof gZ.inherits!=="function")throw"";WY.exports=gZ.inherits}catch($){WY.exports=vX()}var gZ});var bZ=i((L7,xX)=>{var hZ=K$("buffer"),o$=hZ.Buffer,a0={},e0;for(e0 in hZ){if(!hZ.hasOwnProperty(e0))continue;if(e0==="SlowBuffer"||e0==="Buffer")continue;a0[e0]=hZ[e0]}var l$=a0.Buffer={};for(e0 in o$){if(!o$.hasOwnProperty(e0))continue;if(e0==="allocUnsafe"||e0==="allocUnsafeSlow")continue;l$[e0]=o$[e0]}a0.Buffer.prototype=o$.prototype;if(!l$.from||l$.from===Uint8Array.from)l$.from=function($,Z,J){if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type '+typeof $);if($&&typeof $.length>"u")throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);return o$($,Z,J)};if(!l$.alloc)l$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError('The "size" argument must be of type number. Received type '+typeof $);if($<0||$>=2147483648)throw RangeError('The value "'+$+'" is invalid for option "size"');var Y=o$($);if(!Z||Z.length===0)Y.fill(0);else if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);return Y};if(!a0.kStringMaxLength)try{a0.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch($){}if(!a0.constants){if(a0.constants={MAX_LENGTH:a0.kMaxLength},a0.kStringMaxLength)a0.constants.MAX_STRING_LENGTH=a0.kStringMaxLength}xX.exports=a0});var cZ=i((X9)=>{var Q9=w$();function $$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}X9.Reporter=$$;$$.prototype.isError=function(Z){return Z instanceof r$};$$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};$$.prototype.restore=function(Z){let J=this._reporterState;J.obj=Z.obj,J.path=J.path.slice(0,Z.pathLen)};$$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};$$.prototype.exitKey=function(Z){let J=this._reporterState;J.path=J.path.slice(0,Z-1)};$$.prototype.leaveKey=function(Z,J,Y){let Q=this._reporterState;if(this.exitKey(Z),Q.obj!==null)Q.obj[J]=Y};$$.prototype.path=function(){return this._reporterState.path.join("/")};$$.prototype.enterObject=function(){let Z=this._reporterState,J=Z.obj;return Z.obj={},J};$$.prototype.leaveObject=function(Z){let J=this._reporterState,Y=J.obj;return J.obj=Z,Y};$$.prototype.error=function(Z){let J,Y=this._reporterState,Q=Z instanceof r$;if(Q)J=Z;else J=new r$(Y.path.map(function(X){return"["+JSON.stringify(X)+"]"}).join(""),Z.message||Z,Z.stack);if(!Y.options.partial)throw J;if(!Q)Y.errors.push(J);return J};$$.prototype.wrapResult=function(Z){let J=this._reporterState;if(!J.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:J.errors}};function r$($,Z){this.path=$,this.rethrow(Z)}Q9(r$,Error);r$.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,r$);if(!this.stack)try{throw Error(this.message)}catch(J){this.stack=J.stack}return this}});var a$=i((W9)=>{var H9=w$(),pZ=cZ().Reporter,i$=bZ().Buffer;function Z$($,Z){if(pZ.call(this,Z),!i$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}H9(Z$,pZ);W9.DecoderBuffer=Z$;Z$.isDecoderBuffer=function(Z){if(Z instanceof Z$)return!0;return typeof Z==="object"&&i$.isBuffer(Z.base)&&Z.constructor.name==="DecoderBuffer"&&typeof Z.offset==="number"&&typeof Z.length==="number"&&typeof Z.save==="function"&&typeof Z.restore==="function"&&typeof Z.isEmpty==="function"&&typeof Z.readUInt8==="function"&&typeof Z.skip==="function"&&typeof Z.raw==="function"};Z$.prototype.save=function(){return{offset:this.offset,reporter:pZ.prototype.save.call(this)}};Z$.prototype.restore=function(Z){let J=new Z$(this.base);return J.offset=Z.offset,J.length=this.offset,this.offset=Z.offset,pZ.prototype.restore.call(this,Z.reporter),J};Z$.prototype.isEmpty=function(){return this.offset===this.length};Z$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};Z$.prototype.skip=function(Z,J){if(!(this.offset+Z<=this.length))return this.error(J||"DecoderBuffer overrun");let Y=new Z$(this.base);return Y._reporterState=this._reporterState,Y.offset=this.offset,Y.length=this.offset+Z,this.offset+=Z,Y};Z$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function t$($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(J){if(!t$.isEncoderBuffer(J))J=new t$(J,Z);return this.length+=J.length,J},this);else if(typeof $==="number"){if(!(0<=$&&$<=255))return Z.error("non-byte EncoderBuffer value");this.value=$,this.length=1}else if(typeof $==="string")this.value=$,this.length=i$.byteLength($);else if(i$.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}W9.EncoderBuffer=t$;t$.isEncoderBuffer=function(Z){if(Z instanceof t$)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};t$.prototype.join=function(Z,J){if(!Z)Z=i$.alloc(this.length);if(!J)J=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(Y){Y.join(Z,J),J+=Y.length});else{if(typeof this.value==="number")Z[J]=this.value;else if(typeof this.value==="string")Z.write(this.value,J);else if(i$.isBuffer(this.value))this.value.copy(Z,J);J+=this.length}return Z}});var gX=i((C7,yX)=>{yX.exports=fX;function fX($,Z){if(!$)throw Error(Z||"Assertion failed")}fX.equal=function(Z,J,Y){if(Z!=J)throw Error(Y||"Assertion failed: "+Z+" != "+J)}});var uZ=i((E7,bX)=>{var O9=cZ().Reporter,_9=a$().EncoderBuffer,M9=a$().DecoderBuffer,l0=gX(),hX=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],A9=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(hX),z9=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function e($,Z,J){let Y={};if(this._baseState=Y,Y.name=J,Y.enc=$,Y.parent=Z||null,Y.children=null,Y.tag=null,Y.args=null,Y.reverseArgs=null,Y.choice=null,Y.optional=!1,Y.any=!1,Y.obj=!1,Y.use=null,Y.useDecoder=null,Y.key=null,Y.default=null,Y.explicit=null,Y.implicit=null,Y.contains=null,!Y.parent)Y.children=[],this._wrap()}bX.exports=e;var F9=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];e.prototype.clone=function(){let Z=this._baseState,J={};F9.forEach(function(Q){J[Q]=Z[Q]});let Y=new this.constructor(J.parent);return Y._baseState=J,Y};e.prototype._wrap=function(){let Z=this._baseState;A9.forEach(function(J){this[J]=function(){let Q=new this.constructor(this);return Z.children.push(Q),Q[J].apply(Q,arguments)}},this)};e.prototype._init=function(Z){let J=this._baseState;l0(J.parent===null),Z.call(this),J.children=J.children.filter(function(Y){return Y._baseState.parent===this},this),l0.equal(J.children.length,1,"Root node can have only one child")};e.prototype._useArgs=function(Z){let J=this._baseState,Y=Z.filter(function(Q){return Q instanceof this.constructor},this);if(Z=Z.filter(function(Q){return!(Q instanceof this.constructor)},this),Y.length!==0)l0(J.children===null),J.children=Y,Y.forEach(function(Q){Q._baseState.parent=this},this);if(Z.length!==0)l0(J.args===null),J.args=Z,J.reverseArgs=Z.map(function(Q){if(typeof Q!=="object"||Q.constructor!==Object)return Q;let X={};return Object.keys(Q).forEach(function(G){if(G==(G|0))G|=0;let U=Q[G];X[U]=G}),X})};z9.forEach(function($){e.prototype[$]=function(){let J=this._baseState;throw Error($+" not implemented for encoding: "+J.enc)}});hX.forEach(function($){e.prototype[$]=function(){let J=this._baseState,Y=Array.prototype.slice.call(arguments);return l0(J.tag===null),J.tag=$,this._useArgs(Y),this}});e.prototype.use=function(Z){l0(Z);let J=this._baseState;return l0(J.use===null),J.use=Z,this};e.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};e.prototype.def=function(Z){let J=this._baseState;return l0(J.default===null),J.default=Z,J.optional=!0,this};e.prototype.explicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.explicit=Z,this};e.prototype.implicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.implicit=Z,this};e.prototype.obj=function(){let Z=this._baseState,J=Array.prototype.slice.call(arguments);if(Z.obj=!0,J.length!==0)this._useArgs(J);return this};e.prototype.key=function(Z){let J=this._baseState;return l0(J.key===null),J.key=Z,this};e.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};e.prototype.choice=function(Z){let J=this._baseState;return l0(J.choice===null),J.choice=Z,this._useArgs(Object.keys(Z).map(function(Y){return Z[Y]})),this};e.prototype.contains=function(Z){let J=this._baseState;return l0(J.use===null),J.contains=Z,this};e.prototype._decode=function(Z,J){let Y=this._baseState;if(Y.parent===null)return Z.wrapResult(Y.children[0]._decode(Z,J));let Q=Y.default,X=!0,G=null;if(Y.key!==null)G=Z.enterKey(Y.key);if(Y.optional){let V=null;if(Y.explicit!==null)V=Y.explicit;else if(Y.implicit!==null)V=Y.implicit;else if(Y.tag!==null)V=Y.tag;if(V===null&&!Y.any){let M=Z.save();try{if(Y.choice===null)this._decodeGeneric(Y.tag,Z,J);else this._decodeChoice(Z,J);X=!0}catch(z){X=!1}Z.restore(M)}else if(X=this._peekTag(Z,V,Y.any),Z.isError(X))return X}let U;if(Y.obj&&X)U=Z.enterObject();if(X){if(Y.explicit!==null){let M=this._decodeTag(Z,Y.explicit);if(Z.isError(M))return M;Z=M}let V=Z.offset;if(Y.use===null&&Y.choice===null){let M;if(Y.any)M=Z.save();let z=this._decodeTag(Z,Y.implicit!==null?Y.implicit:Y.tag,Y.any);if(Z.isError(z))return z;if(Y.any)Q=Z.raw(M);else Z=z}if(J&&J.track&&Y.tag!==null)J.track(Z.path(),V,Z.length,"tagged");if(J&&J.track&&Y.tag!==null)J.track(Z.path(),Z.offset,Z.length,"content");if(Y.any);else if(Y.choice===null)Q=this._decodeGeneric(Y.tag,Z,J);else Q=this._decodeChoice(Z,J);if(Z.isError(Q))return Q;if(!Y.any&&Y.choice===null&&Y.children!==null)Y.children.forEach(function(z){z._decode(Z,J)});if(Y.contains&&(Y.tag==="octstr"||Y.tag==="bitstr")){let M=new M9(Q);Q=this._getUse(Y.contains,Z._reporterState.obj)._decode(M,J)}}if(Y.obj&&X)Q=Z.leaveObject(U);if(Y.key!==null&&(Q!==null||X===!0))Z.leaveKey(G,Y.key,Q);else if(G!==null)Z.exitKey(G);return Q};e.prototype._decodeGeneric=function(Z,J,Y){let Q=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(J,Z,Q.args[0],Y);else if(/str$/.test(Z))return this._decodeStr(J,Z,Y);else if(Z==="objid"&&Q.args)return this._decodeObjid(J,Q.args[0],Q.args[1],Y);else if(Z==="objid")return this._decodeObjid(J,null,null,Y);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(J,Z,Y);else if(Z==="null_")return this._decodeNull(J,Y);else if(Z==="bool")return this._decodeBool(J,Y);else if(Z==="objDesc")return this._decodeStr(J,Z,Y);else if(Z==="int"||Z==="enum")return this._decodeInt(J,Q.args&&Q.args[0],Y);if(Q.use!==null)return this._getUse(Q.use,J._reporterState.obj)._decode(J,Y);else return J.error("unknown tag: "+Z)};e.prototype._getUse=function(Z,J){let Y=this._baseState;if(Y.useDecoder=this._use(Z,J),l0(Y.useDecoder._baseState.parent===null),Y.useDecoder=Y.useDecoder._baseState.children[0],Y.implicit!==Y.useDecoder._baseState.implicit)Y.useDecoder=Y.useDecoder.clone(),Y.useDecoder._baseState.implicit=Y.implicit;return Y.useDecoder};e.prototype._decodeChoice=function(Z,J){let Y=this._baseState,Q=null,X=!1;if(Object.keys(Y.choice).some(function(G){let U=Z.save(),V=Y.choice[G];try{let M=V._decode(Z,J);if(Z.isError(M))return!1;Q={type:G,value:M},X=!0}catch(M){return Z.restore(U),!1}return!0},this),!X)return Z.error("Choice not matched");return Q};e.prototype._createEncoderBuffer=function(Z){return new _9(Z,this.reporter)};e.prototype._encode=function(Z,J,Y){let Q=this._baseState;if(Q.default!==null&&Q.default===Z)return;let X=this._encodeValue(Z,J,Y);if(X===void 0)return;if(this._skipDefault(X,J,Y))return;return X};e.prototype._encodeValue=function(Z,J,Y){let Q=this._baseState;if(Q.parent===null)return Q.children[0]._encode(Z,J||new O9);let X=null;if(this.reporter=J,Q.optional&&Z===void 0)if(Q.default!==null)Z=Q.default;else return;let G=null,U=!1;if(Q.any)X=this._createEncoderBuffer(Z);else if(Q.choice)X=this._encodeChoice(Z,J);else if(Q.contains)G=this._getUse(Q.contains,Y)._encode(Z,J),U=!0;else if(Q.children)G=Q.children.map(function(V){if(V._baseState.tag==="null_")return V._encode(null,J,Z);if(V._baseState.key===null)return J.error("Child should have a key");let M=J.enterKey(V._baseState.key);if(typeof Z!=="object")return J.error("Child expected, but input is not object");let z=V._encode(Z[V._baseState.key],J,Z);return J.leaveKey(M),z},this).filter(function(V){return V}),G=this._createEncoderBuffer(G);else if(Q.tag==="seqof"||Q.tag==="setof"){if(!(Q.args&&Q.args.length===1))return J.error("Too many args for : "+Q.tag);if(!Array.isArray(Z))return J.error("seqof/setof, but data is not Array");let V=this.clone();V._baseState.implicit=null,G=this._createEncoderBuffer(Z.map(function(M){let z=this._baseState;return this._getUse(z.args[0],Z)._encode(M,J)},V))}else if(Q.use!==null)X=this._getUse(Q.use,Y)._encode(Z,J);else G=this._encodePrimitive(Q.tag,Z),U=!0;if(!Q.any&&Q.choice===null){let V=Q.implicit!==null?Q.implicit:Q.tag,M=Q.implicit===null?"universal":"context";if(V===null){if(Q.use===null)J.error("Tag could be omitted only for .use()")}else if(Q.use===null)X=this._encodeComposite(V,U,M,G)}if(Q.explicit!==null)X=this._encodeComposite(Q.explicit,!1,"context",X);return X};e.prototype._encodeChoice=function(Z,J){let Y=this._baseState,Q=Y.choice[Z.type];if(!Q)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(Y.choice)));return Q._encode(Z.value,J)};e.prototype._encodePrimitive=function(Z,J){let Y=this._baseState;if(/str$/.test(Z))return this._encodeStr(J,Z);else if(Z==="objid"&&Y.args)return this._encodeObjid(J,Y.reverseArgs[0],Y.args[1]);else if(Z==="objid")return this._encodeObjid(J,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(J,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(J,Y.args&&Y.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(J);else if(Z==="objDesc")return this._encodeStr(J,Z);else throw Error("Unsupported tag: "+Z)};e.prototype._isNumstr=function(Z){return/^[0-9 ]*$/.test(Z)};e.prototype._isPrintstr=function(Z){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(Z)}});var mZ=i((K9)=>{function cX($){let Z={};return Object.keys($).forEach(function(J){if((J|0)==J)J=J|0;let Y=$[J];Z[Y]=J}),Z}K9.tagClass={0:"universal",1:"application",2:"context",3:"private"};K9.tagClassByName=cX(K9.tagClass);K9.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};K9.tagByName=cX(K9.tag)});var VY=i((S7,nX)=>{var I9=w$(),A$=bZ().Buffer,mX=uZ(),UY=mZ();function dX($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}nX.exports=dX;dX.prototype.encode=function(Z,J){return this.tree._encode(Z,J).join()};function Y$($){mX.call(this,"der",$)}I9(Y$,mX);Y$.prototype._encodeComposite=function(Z,J,Y,Q){let X=j9(Z,J,Y,this.reporter);if(Q.length<128){let V=A$.alloc(2);return V[0]=X,V[1]=Q.length,this._createEncoderBuffer([V,Q])}let G=1;for(let V=Q.length;V>=256;V>>=8)G++;let U=A$.alloc(2+G);U[0]=X,U[1]=128|G;for(let V=1+G,M=Q.length;M>0;V--,M>>=8)U[V]=M&255;return this._createEncoderBuffer([U,Q])};Y$.prototype._encodeStr=function(Z,J){if(J==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(J==="bmpstr"){let Y=A$.alloc(Z.length*2);for(let Q=0;Q<Z.length;Q++)Y.writeUInt16BE(Z.charCodeAt(Q),Q*2);return this._createEncoderBuffer(Y)}else if(J==="numstr"){if(!this._isNumstr(Z))return this.reporter.error("Encoding of string type: numstr supports only digits and space");return this._createEncoderBuffer(Z)}else if(J==="printstr"){if(!this._isPrintstr(Z))return this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark");return this._createEncoderBuffer(Z)}else if(/str$/.test(J))return this._createEncoderBuffer(Z);else if(J==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+J+" unsupported")};Y$.prototype._encodeObjid=function(Z,J,Y){if(typeof Z==="string"){if(!J)return this.reporter.error("string objid given, but no values map found");if(!J.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=J[Z].split(/[\s.]+/g);for(let U=0;U<Z.length;U++)Z[U]|=0}else if(Array.isArray(Z)){Z=Z.slice();for(let U=0;U<Z.length;U++)Z[U]|=0}if(!Array.isArray(Z))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(Z));if(!Y){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let Q=0;for(let U=0;U<Z.length;U++){let V=Z[U];for(Q++;V>=128;V>>=7)Q++}let X=A$.alloc(Q),G=X.length-1;for(let U=Z.length-1;U>=0;U--){let V=Z[U];X[G--]=V&127;while((V>>=7)>0)X[G--]=128|V&127}return this._createEncoderBuffer(X)};function J$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,J){let Y,Q=new Date(Z);if(J==="gentime")Y=[J$(Q.getUTCFullYear()),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else if(J==="utctime")Y=[J$(Q.getUTCFullYear()%100),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+J+" time is not supported yet");return this._encodeStr(Y,"octstr")};Y$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Y$.prototype._encodeInt=function(Z,J){if(typeof Z==="string"){if(!J)return this.reporter.error("String int or enum given, but no values map");if(!J.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=J[Z]}if(typeof Z!=="number"&&!A$.isBuffer(Z)){let X=Z.toArray();if(!Z.sign&&X[0]&128)X.unshift(0);Z=A$.from(X)}if(A$.isBuffer(Z)){let X=Z.length;if(Z.length===0)X++;let G=A$.alloc(X);if(Z.copy(G),Z.length===0)G[0]=0;return this._createEncoderBuffer(G)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let Y=1;for(let X=Z;X>=256;X>>=8)Y++;let Q=Array(Y);for(let X=Q.length-1;X>=0;X--)Q[X]=Z&255,Z>>=8;if(Q[0]&128)Q.unshift(0);return this._createEncoderBuffer(A$.from(Q))};Y$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Y$.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getEncoder("der").tree};Y$.prototype._skipDefault=function(Z,J,Y){let Q=this._baseState,X;if(Q.default===null)return!1;let G=Z.join();if(Q.defaultBuffer===void 0)Q.defaultBuffer=this._encodeValue(Q.default,J,Y).join();if(G.length!==Q.defaultBuffer.length)return!1;for(X=0;X<G.length;X++)if(G[X]!==Q.defaultBuffer[X])return!1;return!0};function j9($,Z,J,Y){let Q;if($==="seqof")$="seq";else if($==="setof")$="set";if(UY.tagByName.hasOwnProperty($))Q=UY.tagByName[$];else if(typeof $==="number"&&($|0)===$)Q=$;else return Y.error("Unknown tag: "+$);if(Q>=31)return Y.error("Multi-octet tag encoding unsupported");if(!Z)Q|=32;return Q|=UY.tagClassByName[J||"universal"]<<6,Q}});var oX=i((T7,sX)=>{var L9=w$(),OY=VY();function _Y($){OY.call(this,$),this.enc="pem"}L9(_Y,OY);sX.exports=_Y;_Y.prototype.encode=function(Z,J){let Q=OY.prototype.encode.call(this,Z).toString("base64"),X=["-----BEGIN "+J.label+"-----"];for(let G=0;G<Q.length;G+=64)X.push(Q.slice(G,G+64));return X.push("-----END "+J.label+"-----"),X.join(`
|
|
6
|
-
`)}});var MY=i((rX)=>{var lX=rX;lX.der=VY();lX.pem=oX()});var zY=i((D7,ZG)=>{var B9=w$(),P9=GY(),iX=a$().DecoderBuffer,aX=uZ(),tX=mZ();function eX($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}ZG.exports=eX;eX.prototype.decode=function(Z,J){if(!iX.isDecoderBuffer(Z))Z=new iX(Z,J);return this.tree._decode(Z,J)};function i0($){aX.call(this,"der",$)}B9(i0,aX);i0.prototype._peekTag=function(Z,J,Y){if(Z.isEmpty())return!1;let Q=Z.save(),X=AY(Z,'Failed to peek tag: "'+J+'"');if(Z.isError(X))return X;return Z.restore(Q),X.tag===J||X.tagStr===J||X.tagStr+"of"===J||Y};i0.prototype._decodeTag=function(Z,J,Y){let Q=AY(Z,'Failed to decode tag of "'+J+'"');if(Z.isError(Q))return Q;let X=$G(Z,Q.primitive,'Failed to get length of "'+J+'"');if(Z.isError(X))return X;if(!Y&&Q.tag!==J&&Q.tagStr!==J&&Q.tagStr+"of"!==J)return Z.error('Failed to match tag: "'+J+'"');if(Q.primitive||X!==null)return Z.skip(X,'Failed to match body of: "'+J+'"');let G=Z.save(),U=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(U))return U;return X=Z.offset-G.offset,Z.restore(G),Z.skip(X,'Failed to match body of: "'+J+'"')};i0.prototype._skipUntilEnd=function(Z,J){for(;;){let Y=AY(Z,J);if(Z.isError(Y))return Y;let Q=$G(Z,Y.primitive,J);if(Z.isError(Q))return Q;let X;if(Y.primitive||Q!==null)X=Z.skip(Q);else X=this._skipUntilEnd(Z,J);if(Z.isError(X))return X;if(Y.tagStr==="end")break}};i0.prototype._decodeList=function(Z,J,Y,Q){let X=[];while(!Z.isEmpty()){let G=this._peekTag(Z,"end");if(Z.isError(G))return G;let U=Y.decode(Z,"der",Q);if(Z.isError(U)&&G)break;X.push(U)}return X};i0.prototype._decodeStr=function(Z,J){if(J==="bitstr"){let Y=Z.readUInt8();if(Z.isError(Y))return Y;return{unused:Y,data:Z.raw()}}else if(J==="bmpstr"){let Y=Z.raw();if(Y.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let Q="";for(let X=0;X<Y.length/2;X++)Q+=String.fromCharCode(Y.readUInt16BE(X*2));return Q}else if(J==="numstr"){let Y=Z.raw().toString("ascii");if(!this._isNumstr(Y))return Z.error("Decoding of string type: numstr unsupported characters");return Y}else if(J==="octstr")return Z.raw();else if(J==="objDesc")return Z.raw();else if(J==="printstr"){let Y=Z.raw().toString("ascii");if(!this._isPrintstr(Y))return Z.error("Decoding of string type: printstr unsupported characters");return Y}else if(/str$/.test(J))return Z.raw().toString();else return Z.error("Decoding of string type: "+J+" unsupported")};i0.prototype._decodeObjid=function(Z,J,Y){let Q,X=[],G=0,U=0;while(!Z.isEmpty())if(U=Z.readUInt8(),G<<=7,G|=U&127,(U&128)===0)X.push(G),G=0;if(U&128)X.push(G);let V=X[0]/40|0,M=X[0]%40;if(Y)Q=X;else Q=[V,M].concat(X.slice(1));if(J){let z=J[Q.join(" ")];if(z===void 0)z=J[Q.join(".")];if(z!==void 0)Q=z}return Q};i0.prototype._decodeTime=function(Z,J){let Y=Z.raw().toString(),Q,X,G,U,V,M;if(J==="gentime")Q=Y.slice(0,4)|0,X=Y.slice(4,6)|0,G=Y.slice(6,8)|0,U=Y.slice(8,10)|0,V=Y.slice(10,12)|0,M=Y.slice(12,14)|0;else if(J==="utctime")if(Q=Y.slice(0,2)|0,X=Y.slice(2,4)|0,G=Y.slice(4,6)|0,U=Y.slice(6,8)|0,V=Y.slice(8,10)|0,M=Y.slice(10,12)|0,Q<70)Q=2000+Q;else Q=1900+Q;else return Z.error("Decoding "+J+" time is not supported yet");return Date.UTC(Q,X-1,G,U,V,M,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let J=Z.readUInt8();if(Z.isError(J))return J;else return J!==0};i0.prototype._decodeInt=function(Z,J){let Y=Z.raw(),Q=new P9(Y);if(J)Q=J[Q.toString(10)]||Q;return Q};i0.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getDecoder("der").tree};function AY($,Z){let J=$.readUInt8(Z);if($.isError(J))return J;let Y=tX.tagClass[J>>6],Q=(J&32)===0;if((J&31)===31){let G=J;J=0;while((G&128)===128){if(G=$.readUInt8(Z),$.isError(G))return G;J<<=7,J|=G&127}}else J&=31;let X=tX.tag[J];return{cls:Y,primitive:Q,tag:J,tagStr:X}}function $G($,Z,J){let Y=$.readUInt8(J);if($.isError(Y))return Y;if(!Z&&Y===128)return null;if((Y&128)===0)return Y;let Q=Y&127;if(Q>4)return $.error("length octect is too long");Y=0;for(let X=0;X<Q;X++){Y<<=8;let G=$.readUInt8(J);if($.isError(G))return G;Y|=G}return Y}});var YG=i((k7,JG)=>{var C9=w$(),E9=bZ().Buffer,FY=zY();function KY($){FY.call(this,$),this.enc="pem"}C9(KY,FY);JG.exports=KY;KY.prototype.decode=function(Z,J){let Y=Z.toString().split(/[\r\n]+/g),Q=J.label.toUpperCase(),X=/^-----(BEGIN|END) ([^-]+)-----$/,G=-1,U=-1;for(let z=0;z<Y.length;z++){let _=Y[z].match(X);if(_===null)continue;if(_[2]!==Q)continue;if(G===-1){if(_[1]!=="BEGIN")break;G=z}else{if(_[1]!=="END")break;U=z;break}}if(G===-1||U===-1)throw Error("PEM section not found for: "+Q);let V=Y.slice(G+1,U).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let M=E9.from(V,"base64");return FY.prototype.decode.call(this,M,J)}});var RY=i((XG)=>{var QG=XG;QG.der=zY();QG.pem=YG()});var HG=i((GG)=>{var w9=MY(),S9=RY(),T9=w$(),N9=GG;N9.define=function(Z,J){return new e$(Z,J)};function e$($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}e$.prototype._createNamed=function(Z){let J=this.name;function Y(Q){this._initNamed(Q,J)}return T9(Y,Z),Y.prototype._initNamed=function(X,G){Z.call(this,X,G)},new Y(this)};e$.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(S9[Z]);return this.decoders[Z]};e$.prototype.decode=function(Z,J,Y){return this._getDecoder(J).decode(Z,Y)};e$.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(w9[Z]);return this.encoders[Z]};e$.prototype.encode=function(Z,J,Y){return this._getEncoder(J).encode(Z,Y)}});var UG=i((WG)=>{var dZ=WG;dZ.Reporter=cZ().Reporter;dZ.DecoderBuffer=a$().DecoderBuffer;dZ.EncoderBuffer=a$().EncoderBuffer;dZ.Node=uZ()});var _G=i((OG)=>{var VG=OG;VG._reverse=function(Z){let J={};return Object.keys(Z).forEach(function(Y){if((Y|0)==Y)Y=Y|0;let Q=Z[Y];J[Q]=Y}),J};VG.der=mZ()});var AG=i((MG)=>{var $Z=MG;$Z.bignum=GY();$Z.define=HG().define;$Z.base=UG();$Z.constants=_G();$Z.decoders=RY();$Z.encoders=MY()});var KG=i((qY,FG)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var nZ=K$("buffer"),O$=nZ.Buffer;function zG($,Z){for(var J in $)Z[J]=$[J]}if(O$.from&&O$.alloc&&O$.allocUnsafe&&O$.allocUnsafeSlow)FG.exports=nZ;else zG(nZ,qY),qY.Buffer=v$;function v$($,Z,J){return O$($,Z,J)}v$.prototype=Object.create(O$.prototype);zG(O$,v$);v$.from=function($,Z,J){if(typeof $==="number")throw TypeError("Argument must not be a number");return O$($,Z,J)};v$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError("Argument must be a number");var Y=O$($);if(Z!==void 0)if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);else Y.fill(0);return Y};v$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return O$($)};v$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return nZ.SlowBuffer($)}});var qG=i((h7,RG)=>{function IY($){var Z=($/8|0)+($%8===0?0:1);return Z}var D9={ES256:IY(256),ES384:IY(384),ES512:IY(521)};function k9($){var Z=D9[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}RG.exports=k9});var EG=i((b7,CG)=>{var sZ=KG().Buffer,jG=qG(),oZ=128,LG=0,v9=32,x9=16,f9=2,BG=x9|v9|LG<<6,lZ=f9|LG<<6;function y9($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function PG($){if(sZ.isBuffer($))return $;else if(typeof $==="string")return sZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function g9($,Z){$=PG($);var J=jG(Z),Y=J+1,Q=$.length,X=0;if($[X++]!==BG)throw Error('Could not find expected "seq"');var G=$[X++];if(G===(oZ|1))G=$[X++];if(Q-X<G)throw Error('"seq" specified length of "'+G+'", only "'+(Q-X)+'" remaining');if($[X++]!==lZ)throw Error('Could not find expected "int" for "r"');var U=$[X++];if(Q-X-2<U)throw Error('"r" specified length of "'+U+'", only "'+(Q-X-2)+'" available');if(Y<U)throw Error('"r" specified length of "'+U+'", max of "'+Y+'" is acceptable');var V=X;if(X+=U,$[X++]!==lZ)throw Error('Could not find expected "int" for "s"');var M=$[X++];if(Q-X!==M)throw Error('"s" specified length of "'+M+'", expected "'+(Q-X)+'"');if(Y<M)throw Error('"s" specified length of "'+M+'", max of "'+Y+'" is acceptable');var z=X;if(X+=M,X!==Q)throw Error('Expected to consume entire buffer, but "'+(Q-X)+'" bytes remain');var _=J-U,L=J-M,C=sZ.allocUnsafe(_+U+L+M);for(X=0;X<_;++X)C[X]=0;$.copy(C,X,V+Math.max(-_,0),V+U),X=J;for(var E=X;X<E+L;++X)C[X]=0;return $.copy(C,X,z+Math.max(-L,0),z+M),C=C.toString("base64"),C=y9(C),C}function IG($,Z,J){var Y=0;while(Z+Y<J&&$[Z+Y]===0)++Y;var Q=$[Z+Y]>=oZ;if(Q)--Y;return Y}function h9($,Z){$=PG($);var J=jG(Z),Y=$.length;if(Y!==J*2)throw TypeError('"'+Z+'" signatures must be "'+J*2+'" bytes, saw "'+Y+'"');var Q=IG($,0,J),X=IG($,J,$.length),G=J-Q,U=J-X,V=2+G+1+1+U,M=V<oZ,z=sZ.allocUnsafe((M?2:3)+V),_=0;if(z[_++]=BG,M)z[_++]=V;else z[_++]=oZ|1,z[_++]=V&255;if(z[_++]=lZ,z[_++]=G,Q<0)z[_++]=0,_+=$.copy(z,_,0,J);else _+=$.copy(z,_,Q,J);if(z[_++]=lZ,z[_++]=U,X<0)z[_++]=0,$.copy(z,_,J);else $.copy(z,_,J+X);return z}CG.exports={derToJose:g9,joseToDer:h9}});var PY=i((c7,cG)=>{var BY=AG(),{createHmac:TG,createVerify:b9,createSign:c9,timingSafeEqual:p9,createPublicKey:u9,constants:{RSA_PKCS1_PSS_PADDING:NG,RSA_PSS_SALTLEN_DIGEST:DG,RSA_PKCS1_PADDING:kG,RSA_PSS_SALTLEN_MAX_SIGN:m9,RSA_PSS_SALTLEN_AUTO:d9},sign:wG,verify:SG}=K$("crypto"),{joseToDer:n9,derToJose:s9}=EG(),vG=QY(),{TokenError:X0}=s$(),xG=/[=+/]/g,o9={"=":"","+":"-","/":"_"},fG=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,yG=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,rZ=new vG(1000),jY=new vG(1000),gG=["HS256","HS384","HS512"],l9=["ES256","ES384","ES512"],LY=["RS256","RS384","RS512","PS256","PS384","PS512"],r9=["EdDSA"],hG={"1.2.840.10045.3.1.7":{bits:"256",names:["P-256","prime256v1"]},"1.3.132.0.10":{bits:"256",names:["secp256k1"]},"1.3.132.0.34":{bits:"384",names:["P-384","secp384r1"]},"1.3.132.0.35":{bits:"512",names:["P-521","secp521r1"]}},i9=BY.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),t9=BY.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),a9=BY.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").explicit(0).optional().choice({namedCurve:this.objid()}))});function bG($){return o9[$]}function OZ($,Z,J,Y){return $.set(Z,[J,Y]),J||Y}function e9($){if($.match(yG)||$.includes("-----BEGIN CERTIFICATE-----"))throw new X0(X0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(fG);if(!Z)return"HS256";let J,Y,Q;switch(Z[1]){case"RSA":return"RS256";case"EC":J=a9.decode($,"pem",{label:"EC PRIVATE KEY"}),Q=J.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(J=i9.decode($,"pem",{label:"PRIVATE KEY"}),Y=J.algorithm.algorithm.join("."),Y){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${Y}.`)}}let X=hG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC private key with curve ${Q}.`);return`ES${X.bits}`}function $8($){let Z=$.match(yG);if($.match(fG))throw new X0(X0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return LY;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return gG;if($.includes("-----BEGIN CERTIFICATE-----"))$=u9($).export({type:"spki",format:"pem"});let J=t9.decode($,"pem",{label:"PUBLIC KEY"}),Y=J.algorithm.algorithm.join("."),Q;switch(Y){case"1.2.840.113549.1.1.1":return LY;case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${Y}.`)}let X=hG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC public key with curve ${Q}.`);return[`ES${X.bits}`]}function Z8($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The private key must be a string or a buffer.");let[J,Y]=rZ.get($)||[];if(J)return J;else if(Y)throw Y;try{let Q=e9($);if(Q==="ENCRYPTED")return OZ(rZ,$,Z);return OZ(rZ,$,Q)}catch(Q){throw OZ(rZ,$,null,X0.wrap(Q,X0.codes.invalidKey,"Unsupported PEM private key."))}}function J8($){if(!$)return"none";let[Z,J]=jY.get($)||[];if(Z)return Z;else if(J)throw J;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The public key must be a string or a buffer.");return OZ(jY,$,$8($))}catch(Y){throw OZ(jY,$,null,X0.wrap(Y,X0.codes.invalidKey,"Unsupported PEM public key."))}}function Y8($,Z,J){try{let Y=$.slice(0,2),Q=`sha${$.slice(2)}`,X,G;switch(Y){case"HS":X=TG(Q,Z).update(J).digest("base64");break;case"ES":X=s9(wG(Q,Buffer.from(J,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(G={key:Z,padding:kG,saltLength:m9},Y==="PS")G.padding=NG,G.saltLength=DG;X=c9(Q).update(J).sign(G).toString("base64");break;case"Ed":X=wG(void 0,Buffer.from(J,"utf-8"),Z).toString("base64")}return X.replace(xG,bG)}catch(Y){throw new X0(X0.codes.signError,"Cannot create the signature.",{originalError:Y})}}function Q8($,Z,J,Y){try{let Q=$.slice(0,2),X=`SHA${$.slice(2)}`;if(Y=Buffer.from(Y,"base64"),Q==="HS")try{return p9(TG(X,Z).update(J).digest(),Y)}catch{return!1}else if(Q==="Ed")if(typeof SG==="function")return SG(void 0,Buffer.from(J,"utf-8"),Z,Y);else throw new X0(X0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let G={key:Z,padding:kG,saltLength:d9};if(Q==="PS")G.padding=NG,G.saltLength=DG;else if(Q==="ES")Y=n9(Y,$);return b9("RSA-"+X).update(J).verify(G,Y)}catch(Q){throw new X0(X0.codes.verifyError,"Cannot verify the signature.",{originalError:Q})}}cG.exports={base64UrlMatcher:xG,base64UrlReplacer:bG,hsAlgorithms:gG,rsaAlgorithms:LY,esAlgorithms:l9,edAlgorithms:r9,detectPrivateKeyAlgorithm:Z8,detectPublicKeyAlgorithms:J8,createSignature:Y8,verifySignature:Q8}});var CY=i((p7,uG)=>{var{createHash:pG}=K$("crypto"),X8=/"alg"\s*:\s*"[HERP]S(256|384)"/m,G8=/"alg"\s*:\s*"EdDSA"/m,H8=/"crv"\s*:\s*"Ed448"/m;function W8($,Z,J){let Y=$(Z,J);if(Y&&typeof Y.then==="function")Y.then((Q)=>{process.nextTick(()=>J(null,Q))}).catch(J)}function U8($){if(typeof $==="function")return[$];let Z,J,Y=new Promise((Q,X)=>{Z=Q,J=X});return[function(Q,X){if(Q)return J(Q);return Z(X)},Y]}function V8($){let Z=$.split(".",1)[0],J=Buffer.from(Z,"base64").toString("utf-8"),Y=null;if(J.match(G8)&&J.match(H8))Y=pG("shake256",{outputLength:114});else{let Q=J.match(X8);Y=pG(`sha${Q?Q[1]:"512"}`)}return Y.update($).digest("hex")}uG.exports={getAsyncKey:W8,ensurePromiseCallback:U8,hashToken:V8}});var rG=i((u7,lG)=>{var{createPublicKey:O8,createSecretKey:_8}=K$("crypto"),M8=QY(),{hsAlgorithms:dG,verifySignature:A8,detectPublicKeyAlgorithms:nG}=PY(),z8=eJ(),{TokenError:s}=s$(),{getAsyncKey:F8,ensurePromiseCallback:K8,hashToken:R8}=CY();function q8($,Z){return $===Z}function sG($,Z){for(let J of $)if(Z.includes(J))return;throw new s(s.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function oG($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?_8($):O8($)}function _Z($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:q8.bind(null,Z)}})}function I8($){let Z=parseInt($===!0?1000:$,10);return Z>0?new M8(Z):null}function ZZ({cache:$,token:Z,cacheTTL:J,payload:Y,ignoreExpiration:Q,ignoreNotBefore:X,maxAge:G,clockTimestamp:U=Date.now(),clockTolerance:V,errorCacheTTL:M,cacheKeyBuilder:z},_){if(!$)return _;let L=[_,0,0];if(_ instanceof s){let S=typeof M==="function"?M(_):M;return L[2]=U+V+S,$.set(z(Z),L),_}if(Y&&typeof Y.iat==="number"){if(L[1]=!X&&typeof Y.nbf==="number"?Y.nbf*1000-V:0,!Q){if(typeof Y.exp==="number")L[2]=Y.exp*1000+V;else if(G)L[2]=Y.iat*1000+G+V}}let E=U+V+J;return L[2]=L[2]===0?E:Math.min(L[2],E),$.set(z(Z),L),_}function j8($,Z,J){if($ instanceof s){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return J}function L8($,Z,J,Y,Q){if(!Q.includes(Z.alg))throw new s(s.codes.invalidAlgorithm,"The token algorithm is invalid.");if(J&&!A8(Z.alg,Y,$,J))throw new s(s.codes.invalidSignature,"The token signature is invalid.")}function B8($,Z,J,Y,Q){let X=J?`The ${Z} claim must be a ${Q} or an array of ${Q}s.`:`The ${Z} claim must be a ${Q}.`;if(Y&&!J)throw new s(s.codes.invalidClaimValue,X);if($.map((G)=>typeof G).some((G)=>G!==Q))throw new s(s.codes.invalidClaimType,X)}function P8($,Z,J,Y){let Q=Y?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((X)=>J.some((G)=>G.test(X))))throw new s(s.codes.invalidClaimValue,Q)}function C8($,Z,J,Y,Q,X){let G=$*1000+(Z||0);if(!(Y?J>=G:J<=G))throw new s(s.codes[Q],`The token ${X} at ${new Date(G).toISOString()}.`)}function mG($,{input:Z,header:J,payload:Y,signature:Q},{validators:X,allowedAlgorithms:G,checkTyp:U,clockTimestamp:V,requiredClaims:M}){let z=$ instanceof Buffer?$.length:!!$;if(z&&!Q)throw new s(s.codes.missingSignature,"The token signature is missing.");else if(!z&&Q)throw new s(s.codes.missingKey,"The key option is missing.");if(L8(Z,J,Q,$,G),U&&(typeof J.typ!=="string"||U!==J.typ.toLowerCase().replace(/^application\//,"")))throw new s(s.codes.invalidType,"Invalid typ.");if(M){for(let L of M)if(!(L in Y))throw new s(s.codes.missingRequiredClaim,`The ${L} claim is required.`)}let _=V||Date.now();for(let{type:L,claim:C,allowed:E,array:S,modifier:D,greater:N,errorCode:w,errorVerb:k}of X){let h=Y[C],x=Array.isArray(h),m=x?h:[h];if(!(C in Y))continue;if(B8(m,C,S,x,L==="date"?"number":"string"),L==="date")C8(h,D,_,N,w,k);else P8(m,C,E,x)}}function E8({key:$,allowedAlgorithms:Z,complete:J,cacheTTL:Y,checkTyp:Q,clockTimestamp:X,clockTolerance:G,ignoreExpiration:U,ignoreNotBefore:V,maxAge:M,isAsync:z,validators:_,decode:L,cache:C,requiredClaims:E,errorCacheTTL:S,cacheKeyBuilder:D},N,w){let[k,h]=z?K8(w):[];if(C){let[O,A,F]=C.get(D(N))||[void 0,0,0],q=X||Date.now();if(typeof O<"u"&&(A===0||q<A&&O.code==="FAST_JWT_INACTIVE"||q>=A&&O.code!=="FAST_JWT_INACTIVE")&&(F===0||q<=F))return j8(O,k,h)}let x;try{x=L(N)}catch(O){if(k)return k(O),h;throw O}let{header:m,payload:a,signature:r,input:Z0}=x,j={cache:C,token:N,cacheTTL:Y,errorCacheTTL:S,ignoreExpiration:U,ignoreNotBefore:V,maxAge:M,clockTimestamp:X,clockTolerance:G,payload:a,cacheKeyBuilder:D},H={validators:_,allowedAlgorithms:Z,checkTyp:Q,clockTimestamp:X,clockTolerance:G,requiredClaims:E};if(!k)try{return mG($,x,H),ZZ(j,J?{header:m,payload:a,signature:r,input:Z0}:a)}catch(O){throw ZZ(j,O)}return F8($,{header:m,payload:a,signature:r},(O,A)=>{if(O)return k(ZZ(j,s.wrap(O,s.codes.keyFetchingError,"Cannot fetch key.")));if(typeof A==="string")A=Buffer.from(A,"utf-8");else if(!(A instanceof Buffer))return k(ZZ(j,new s(s.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a public key.")));try{let F=nG(A);if(H.allowedAlgorithms.length)sG(Z,F);else H.allowedAlgorithms=F;A=oG(A,F[0]===dG[0]),mG(A,x,H)}catch(F){return k(ZZ(j,F))}k(null,ZZ(j,J?{header:m,payload:a,signature:r,input:N}:a))}),h}lG.exports=function(Z){let{key:J,algorithms:Y,complete:Q,cache:X,cacheTTL:G,errorCacheTTL:U,checkTyp:V,clockTimestamp:M,clockTolerance:z,ignoreExpiration:_,ignoreNotBefore:L,maxAge:C,allowedJti:E,allowedAud:S,allowedIss:D,allowedSub:N,allowedNonce:w,requiredClaims:k,cacheKeyBuilder:h}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:R8,...Z};if(!Array.isArray(Y))Y=[];let x=typeof J;if(x!=="string"&&x!=="object"&&x!=="function")throw new s(s.codes.INVALID_OPTION,"The key option must be a string, a buffer or a function returning the algorithm secret or public key.");if(J&&x!=="function"){let j=nG(J);if(Y.length)sG(Y,j);else Y=j;J=oG(J,j[0]===dG[0])}if(M&&(typeof M!=="number"||M<0))throw new s(s.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(z&&(typeof z!=="number"||z<0))throw new s(s.codes.invalidOption,"The clockTolerance option must be a positive number.");if(G&&(typeof G!=="number"||G<0))throw new s(s.codes.invalidOption,"The cacheTTL option must be a positive number.");if(U&&typeof U!=="function"&&typeof U!=="number"||U<-1)throw new s(s.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(k&&!Array.isArray(k))throw new s(s.codes.invalidOption,"The requiredClaims option must be an array.");let m=[];if(!L)m.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-z});if(!_)m.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+z});if(typeof C==="number")m.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:C});if(E)m.push({type:"string",claim:"jti",allowed:_Z(E)});if(S)m.push({type:"string",claim:"aud",allowed:_Z(S),array:!0});if(D)m.push({type:"string",claim:"iss",allowed:_Z(D)});if(N)m.push({type:"string",claim:"sub",allowed:_Z(N)});if(w)m.push({type:"string",claim:"nonce",allowed:_Z(w)});let a=V?V.toLowerCase().replace(/^application\//,""):null,r={key:J,allowedAlgorithms:Y,complete:Q,cacheTTL:G,errorCacheTTL:U,checkTyp:a,clockTimestamp:M,clockTolerance:z,ignoreExpiration:_,ignoreNotBefore:L,maxAge:C,isAsync:x==="function",validators:m,decode:z8({complete:!0}),cache:I8(X),requiredClaims:k,cacheKeyBuilder:h},Z0=E8.bind(null,r);return Z0.cache=r.cache,Z0}});var iG=i((N8)=>{var w8=/^(-?(?:\d+)?\.?\d+) *(m(?:illiseconds?|s(?:ecs?)?))?(s(?:ec(?:onds?|s)?)?)?(m(?:in(?:utes?|s)?)?)?(h(?:ours?|rs?)?)?(d(?:ays?)?)?(w(?:eeks?|ks?)?)?(y(?:ears?|rs?)?)?$/,iZ=1000,tZ=iZ*60,aZ=tZ*60,AZ=aZ*24,EY=AZ*365.25;function S8($){var Z,J=$.toLowerCase().match(w8);if(J!=null&&(Z=parseFloat(J[1]))){if(J[3]!=null)return Z*iZ;if(J[4]!=null)return Z*tZ;if(J[5]!=null)return Z*aZ;if(J[6]!=null)return Z*AZ;if(J[7]!=null)return Z*AZ*7;if(J[8]!=null)return Z*EY;return Z}}function MZ($,Z,J,Y){var Q=($|0)===$?$:~~($+0.5);return Z+Q+(Y?" "+J+(Q!=1?"s":""):J[0])}function T8($,Z){var J=$<0?"-":"",Y=$<0?-$:$;if(Y<iZ)return $+(Z?" ms":"ms");if(Y<tZ)return MZ(Y/iZ,J,"second",Z);if(Y<aZ)return MZ(Y/tZ,J,"minute",Z);if(Y<AZ)return MZ(Y/aZ,J,"hour",Z);if(Y<EY)return MZ(Y/AZ,J,"day",Z);return MZ(Y/EY,J,"year",Z)}N8.format=T8;N8.parse=S8});var Q1=i((d7,Y1)=>{var{base64UrlMatcher:wY,base64UrlReplacer:SY,hsAlgorithms:v8,esAlgorithms:x8,rsaAlgorithms:f8,edAlgorithms:y8,detectPrivateKeyAlgorithm:eG,createSignature:tG}=PY(),{TokenError:l}=s$(),{getAsyncKey:g8,ensurePromiseCallback:h8}=CY(),{createPrivateKey:b8,createSecretKey:c8}=K$("crypto"),{parse:aG}=iG(),$1=new Set([...v8,...x8,...f8,...y8,"none"]),p8=Array.from($1).join(", ");function Z1($,Z){let J=$.slice(0,2),Y=Z.slice(0,2),Q=!0;if(J==="RS"||J==="PS")Q=Y==="RS"||J==="RS"&&Z==="ENCRYPTED";else if(J==="ES"||J==="Ed")Q=J===Y||J==="ES"&&Z==="ENCRYPTED";if(!Q)throw new l(l.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function J1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?c8($):b8($)}function u8({key:$,algorithm:Z,noTimestamp:J,mutatePayload:Y,clockTimestamp:Q,expiresIn:X,notBefore:G,kid:U,typ:V,isAsync:M,additionalHeader:z,fixedPayload:_},L,C){let[E,S]=M?h8(C):[];if(typeof L!=="object")throw new l(l.codes.invalidType,"The payload must be an object.");if(L.exp&&(!Number.isInteger(L.exp)||L.exp<0))throw new l(l.codes.invalidClaimValue,"The exp claim must be a positive integer.");let D={alg:Z,typ:V||"JWT",kid:U,...z},N="",w=L.iat*1000||Q||Date.now(),k={...L,..._,iat:J?void 0:Math.floor(w/1000),exp:L.exp?L.exp:X?Math.floor((w+X)/1000):void 0,nbf:L.nbf?L.nbf:G?Math.floor((w+G)/1000):void 0};if(Y)Object.assign(L,k);if(N=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(wY,SY),!E){let x=Buffer.from(JSON.stringify(D),"utf-8").toString("base64").replace(wY,SY)+"."+N,m=Z==="none"?"":tG(Z,$,x);return x+"."+m}return g8($,{header:D,payload:L},(h,x)=>{if(h){let a=l.wrap(h,l.codes.keyFetchingError,"Cannot fetch key.");return E(a)}if(typeof x==="string")x=Buffer.from(x,"utf-8");else if(!(x instanceof Buffer))return E(new l(l.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a private key."));let m;try{let a=eG(x,Z);if(Z)Z1(Z,a);else D.alg=Z=a;x=J1(x,Z);let Z0=Buffer.from(JSON.stringify(D),"utf-8").toString("base64").replace(wY,SY)+"."+N;m=Z0+"."+tG(Z,x,Z0)}catch(a){return E(a)}E(null,m)}),S}Y1.exports=function(Z){let{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,jti:M,aud:z,iss:_,sub:L,nonce:C,kid:E,typ:S,header:D}={clockTimestamp:0,...Z};if(Y&&!$1.has(Y))throw new l(l.codes.invalidOption,`The algorithm option must be one of the following values: ${p8}.`);let N=typeof J,w=N==="object"&&J&&J.key&&J.passphrase;if(Y==="none"){if(J)throw new l(l.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!J||N!=="string"&&!(J instanceof Buffer)&&N!=="function"&&!w)throw new l(l.codes.invalidOption,"The key option must be a string, a buffer, an object containing key/passphrase properties or a function returning the algorithm secret or private key.");else if(w&&!Y)throw new l(l.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(J&&N!=="function"){let x=eG(w?J.key:J,Y);if(Y)Z1(Y,x);else Y=x;J=J1(J,Y)}if(U){if(typeof U==="string")U=aG(U);if(typeof U!=="number")throw new l(l.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(V){if(typeof V==="string")V=aG(V);if(typeof V!=="number"||V<0)throw new l(l.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(G&&(typeof G!=="number"||G<0))throw new l(l.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(M&&typeof M!=="string")throw new l(l.codes.invalidOption,"The jti option must be a string.");if(z&&typeof z!=="string"&&!Array.isArray(z))throw new l(l.codes.invalidOption,"The aud option must be a string or an array of strings.");if(_&&typeof _!=="string")throw new l(l.codes.invalidOption,"The iss option must be a string.");if(L&&typeof L!=="string")throw new l(l.codes.invalidOption,"The sub option must be a string.");if(C&&typeof C!=="string")throw new l(l.codes.invalidOption,"The nonce option must be a string.");if(E&&typeof E!=="string")throw new l(l.codes.invalidOption,"The kid option must be a string.");if(D&&typeof D!=="object")throw new l(l.codes.invalidOption,"The header option must be a object.");let h=Object.entries({jti:M,aud:z,iss:_,sub:L,nonce:C}).reduce((x,[m,a])=>{if(a!==void 0)x[m]=a;return x},{});return u8.bind(null,{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,kid:E,typ:S,isAsync:N==="function",additionalHeader:D,fixedPayload:h})}});var G1=i((n7,X1)=>{var{TokenError:m8,TOKEN_ERROR_CODES:d8}=s$(),n8=eJ(),s8=rG(),o8=Q1();X1.exports={TokenError:m8,TOKEN_ERROR_CODES:d8,createDecoder:n8,createVerifier:s8,createSigner:o8}});PZ();import{join as vJ}from"path";u0();function H$($){if(Array.isArray($)){let Z=[];for(let J of $)Z.push(H$(J));return Z}if(n($)){let Z={},J=$;for(let Y of Object.keys(J))Z[Y]=H$(J[Y]);return Z}return $}function VQ($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let J=[];for(let Y of $)J.push(H$(Y));for(let Y of Z)J.push(H$(Y));return J}if(n($)&&n(Z)){let J=$,Y=Z,Q={};for(let X of Object.keys(J))Q[X]=H$(J[X]);for(let X of Object.keys(Y)){let G=Y[X];if(G===void 0)continue;let U=Q[X];if(Array.isArray(U)&&Array.isArray(G)){let V=[];for(let M of U)V.push(H$(M));for(let M of G)V.push(H$(M));Q[X]=V;continue}if(n(U)&&n(G)){Q[X]=VQ(H$(U),G);continue}Q[X]=H$(G)}return Q}return H$(Z)}function OQ(...$){let Z={};for(let J of $){if(J===void 0)continue;Z=VQ(Z,J)}return Z}var i1={nodeEnv:"development",appName:"\u91CE\u8702\u98DE\u821E",appPort:3000,appHost:"127.0.0.1",devEmail:"dev@qq.com",devPassword:"beflydev123456",bodyLimit:1048576,tz:"Asia/Shanghai",strict:!0,logger:{debug:1,excludeFields:["password","token","secret"],dir:"./logs",console:1,maxSize:20,maxStringLen:100,maxArrayItems:100},db:{idMode:"timeId",host:"127.0.0.1",port:3306,username:"root",password:"root",database:"befly_demo",poolMax:10},redis:{host:"127.0.0.1",port:6379,username:"",password:"",db:0,prefix:"befly_demo"},auth:{secret:"befly-secret",expiresIn:"7d",algorithm:"HS256"},cors:{origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",allowedHeaders:"Content-Type,Authorization",exposedHeaders:"",maxAge:86400,credentials:"true"},rateLimit:{enable:1,defaultLimit:1000,defaultWindow:60,key:"ip",skipRoutes:[],rules:[]},disableMenus:["**/404","**/403","**/500","/addon/admin/login"],addons:{}};async function _Q($){if($!=="development"&&$!=="production")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1ANODE_ENV \u53EA\u80FD\u662F 'development' \u6216 'production'\uFF0C\u5F53\u524D\u503C=${String($)}`);let Z=vJ(process.cwd(),"configs"),J=await j$(vJ(Z,"befly.common.json"),{}),Y=await j$(vJ(Z,`befly.${$}.json`),{}),Q=OQ(i1,J,Y);Q.nodeEnv=$;let X=Q.redis?.prefix;if(typeof X==="string"){if(X.trim().includes(":"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u4E0D\u5141\u8BB8\u5305\u542B ':'\uFF08RedisHelper \u4F1A\u81EA\u52A8\u62FC\u63A5\u5206\u9694\u7B26 ':'\uFF09\uFF0C\u8BF7\u6539\u4E3A\u4E0D\u5E26\u5192\u53F7\u7684\u524D\u7F00\uFF0C\u4F8B\u5982 'befly_demo'\uFF0C\u5F53\u524D\u503C=${X}`)}let G=Q.db?.idMode;if(G!==void 0&&G!=="timeId"&&G!=="autoId")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(G)}`);let U=Q.strict;if(U!==void 0&&typeof U!=="boolean")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(U)}`);return Q}$0();class c extends Error{kind;code;meta;noLog;logged;cause;constructor($){super($.message);this.name="CoreError",this.kind=$.kind,this.code=typeof $.code==="string"&&$.code.length>0?$.code:null,this.meta=$.meta?$.meta:null,this.noLog=$.noLog===!0,this.logged=$.logged===!0,this.cause=$.cause}}function QZ($){if(typeof $!=="object"||$===null)return!1;let Z=$;if(Z.name!=="CoreError")return!1;if(typeof Z.kind!=="string")return!1;return!0}u0();async function MQ($){let Z=!1,J=new Set;for(let Y of $)try{if(!n(Y)){I.warn({item:Y,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let Q=Y,X=Q.name;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let U=Q.path;if(typeof U!=="string"||U.trim()==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{let E=U.trim();if(J.has(E))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else J.add(E);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(E))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09"})),Z=!0;if(!E.startsWith("/api/"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(E.includes(" "))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(E.includes("/api//"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=Q.routePrefix,M=typeof V==="string"?V.trim():"";if(M==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{if(!(M==="/app"||M.startsWith("/addon/")))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5FC5\u987B\u662F /app \u6216 /addon/<name>\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;if(typeof U==="string"&&U.trim()!==""){let E=U.trim(),S=`/api${M}/`;if(!E.startsWith(S))I.warn(Object.assign({},u(Q,["handler"]),{expectedPrefix:S,msg:"\u63A5\u53E3\u7684 path \u4E0E routePrefix \u4E0D\u4E00\u81F4\uFF1A\u5E94\u4EE5 /api${routePrefix}/ \u5F00\u5934\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0}}let z=Q.method;if(z!==void 0&&!["GET","POST","GET,POST"].includes(String(z).toUpperCase()))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let _=Q.auth;if(_!==void 0&&typeof _!=="boolean")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let L=Q.fields;if(L!==void 0&&L!==null&&!n(L))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let C=Q.required;if(C!==void 0&&!Array.isArray(C))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(C)){if(C.some((E)=>typeof E!=="string"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(Q){I.error({err:Q,item:Y,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new c({kind:"policy",message:"\u63A5\u53E3\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkApi"}})}function h$($){return typeof $==="string"&&$.trim().length>0}function xJ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function t1($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function a1($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function e1($){if(!h$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function $H($){if(!$)throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09");if(!h$($.host))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.host \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`);if(!xJ($.port))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`);if(!h$($.username))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.username \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.username)}`);if($.password!==void 0&&typeof $.password!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.password \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.password)}`);if(!h$($.database))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.database \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.database)}`);if($.poolMax!==void 0){if(typeof $.poolMax!=="number"||!Number.isFinite($.poolMax)||$.poolMax<=0)throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.poolMax \u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u5F53\u524D\u503C=${String($.poolMax)}`)}}function ZH($){if(!$)throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 redis \u914D\u7F6E\uFF08config.redis\uFF09");if($.host!==void 0&&typeof $.host!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.host \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`);if($.port!==void 0&&!xJ($.port))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`);if($.db!==void 0&&!t1($.db))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.db \u5FC5\u987B\u4E3A\u975E\u8D1F\u6574\u6570\uFF0C\u5F53\u524D\u503C=${String($.db)}`);let Z=$.prefix;if(Z!==void 0){if(typeof Z!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String(Z)}`);if(Z.includes(":"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u4E0D\u5141\u8BB8\u5305\u542B ':'\uFF08RedisHelper \u4F1A\u81EA\u52A8\u62FC\u63A5\u5206\u9694\u7B26 ':'\uFF09\uFF0C\u5F53\u524D\u503C=${String(Z)}`)}}async function AQ($){if(!$||typeof $!=="object")throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1Aconfig \u5FC5\u987B\u4E3A\u5BF9\u8C61");if($.nodeEnv!=="development"&&$.nodeEnv!=="production")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AnodeEnv \u53EA\u80FD\u662F development/production\uFF0C\u5F53\u524D\u503C=${String($.nodeEnv)}`);if($.appName!==void 0){if(!h$($.appName))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appName)}`)}if($.appPort!==void 0){if(!xJ($.appPort))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappPort \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.appPort)}`)}if($.appHost!==void 0){if(!h$($.appHost))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappHost \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appHost)}`)}if($.devEmail!==void 0){if(typeof $.devEmail!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevEmail \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devEmail)}`);let Z=$.devEmail.trim();if(Z.length>0&&!Z.includes("@"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevEmail \u683C\u5F0F\u9519\u8BEF\uFF08\u5FC5\u987B\u5305\u542B '@'\uFF0C\u6216\u7F6E\u4E3A\u7A7A\u5B57\u7B26\u4E32\u4EE5\u7981\u7528 syncDev\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devEmail)}`)}if($.devPassword!==void 0){if(typeof $.devPassword!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevPassword \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devPassword)}`)}if($.bodyLimit!==void 0){if(!a1($.bodyLimit))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AbodyLimit \u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF08\u5B57\u8282\uFF09\uFF0C\u5F53\u524D\u503C=${String($.bodyLimit)}`)}if($.tz!==void 0){if(!e1($.tz))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Atz \u5FC5\u987B\u4E3A\u6709\u6548\u7684 IANA \u65F6\u533A\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982 'Asia/Shanghai'\uFF09\uFF0C\u5F53\u524D\u503C=${String($.tz)}`)}if(typeof $.strict!=="boolean")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A true \u6216 false\uFF0C\u5F53\u524D\u503C=${String($.strict)}`);$H($.db),ZH($.redis)}$0();u0();var zQ=["name","enable","deps","handler"];async function FQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!n(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!zQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${zQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),M=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u94A9\u5B50\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 auth / rate_limit\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=Q.filePath;if(typeof _!=="string"||!_.startsWith(`core:hook:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:hook:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(M){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new c({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}$0();hJ();function OH($){if(!$)return{ok:!1,reason:"path \u4E0D\u80FD\u4E3A\u7A7A"};if(!$.startsWith("/"))return{ok:!1,reason:"path \u5FC5\u987B\u4EE5 / \u5F00\u5934"};if($.length>1&&$.endsWith("/"))return{ok:!1,reason:"path \u672B\u5C3E\u4E0D\u80FD\u662F /\uFF08\u6839\u8DEF\u5F84 / \u9664\u5916\uFF09"};if($.includes("//"))return{ok:!1,reason:"path \u4E0D\u80FD\u5305\u542B //"};if($.includes(".."))return{ok:!1,reason:"path \u4E0D\u80FD\u5305\u542B .."};return{ok:!0,reason:""}}var CQ=async($)=>{let Z=!1,J=await PQ($),Y=[];for(let X of J)Y.push({menu:X,depth:1});let Q=new Set;while(Y.length>0){let X=Y.pop(),G=X?.menu,U=typeof X?.depth==="number"?X.depth:0;if(G===null||typeof G!=="object"){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(U>3){Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let V=G.children;if(typeof V<"u"&&!Array.isArray(V)){Z=!0,I.warn({path:G?.path,childrenType:typeof V,msg:"\u83DC\u5355 children \u5FC5\u987B\u662F\u6570\u7EC4"});continue}if(Array.isArray(V)&&V.length>0)if(U>=3)Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let C of V)Y.push({menu:C,depth:U+1});let M=typeof G.path==="string"?G.path.trim():"",z=typeof G.name==="string"?G.name.trim():"",_=typeof G.sort==="number"?G.sort:999999;if(typeof G.path==="string")G.path=M;if(typeof G.name==="string")G.name=z;if(typeof G.sort>"u")G.sort=_;if(!M){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let L=OH(M);if(!L.ok)Z=!0,I.warn({path:M,reason:L.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!z)Z=!0,I.warn({path:M,menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof G.sort<"u"&&typeof G.sort!=="number")Z=!0,I.warn({path:M,sort:G.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof G.sort==="number"&&(!Number.isFinite(G.sort)||G.sort<1))Z=!0,I.warn({path:M,sort:G.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(Q.has(M)){Z=!0,I.warn({path:M,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}Q.add(M)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return J};$0();u0();var EQ=["name","enable","deps","handler"];async function wQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!n(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!EQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${EQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),M=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u63D2\u4EF6\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 logger / redis_cache\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=Q.filePath;if(typeof _!=="string"||!_.startsWith(`core:plugin:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:plugin:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(M){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new c({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}$0();u0();var kQ=["id","created_at","updated_at","deleted_at","state"],SQ=new Set(kQ),vQ=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","tinytext","text","mediumtext","longtext","datetime","json"],_H=new Set(vQ),xQ=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],MH=new Set(xQ);function AH($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function zH($,Z){let J=String($||"").trim(),Y=String(Z||"").trim();return{type:J,input:Y||AH(J)}}var fQ=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],FH=new Set(fQ),KH=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,RH=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,TQ=16383,NQ=500,DQ=180;async function yQ($,Z){let J=!1;for(let Y of $){if(Y.type!=="table")continue;let Q=typeof Y.sourceName==="string"?Y.sourceName:"",X=Q?`${Q}\u8868 `:"\u8868 ";try{let G=Y.fileName;if(Y.source==="addon"&&String(Y.addonName).trim()===""){I.warn(`${X}${G} addon \u8868\u7F3A\u5C11 addonName`),J=!0;continue}let U=Y.content;if(typeof U!=="object"||U===null||Array.isArray(U)){I.warn(`${X}${G} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}if(!KH.test(G)){I.warn(`${X}${G} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),J=!0;continue}for(let[V,M]of Object.entries(U)){if(typeof M!=="object"||M===null||Array.isArray(M)){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}let z=b(V);if(SQ.has(V)||SQ.has(z))I.warn(`${X}${G} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${V}\uFF08\u6620\u5C04\u5217\u540D: ${z}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${kQ.join(", ")}`),J=!0;let _=M,C=Object.keys(_).filter((Z0)=>!FH.has(Z0));if(C.length>0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${C.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${fQ.join(", ")}`),J=!0;if(!_.name||typeof _.name!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(!_.type||typeof _.type!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(_.input!==void 0&&typeof _.input!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(_.min!==void 0&&!(_.min===null||typeof _.min==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.max!==void 0&&!(_.max===null||typeof _.max==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.detail!==void 0&&typeof _.detail!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(_.precision!==void 0&&!(_.precision===null||typeof _.precision==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.scale!==void 0&&!(_.scale===null||typeof _.scale==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.index!==void 0&&typeof _.index!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.unique!==void 0&&typeof _.unique!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.nullable!==void 0&&typeof _.nullable!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.unsigned!==void 0&&typeof _.unsigned!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;let E=zH(_.type,_.input||""),S=E.type,D=E.input;if(_.default!==void 0&&_.default!==null&&!zZ(_.default))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 default \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u53EF JSON \u5E8F\u5217\u5316\u7684\u503C\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0;if(Z.strict){if(!RH.test(_.name))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u540D\u79F0 "${_.name}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+"\u5FC5\u987B\u4E3A\u4E2D\u6587\u3001\u6570\u5B57\u3001\u5B57\u6BCD\u3001\u4E0B\u5212\u7EBF\u3001\u77ED\u6A2A\u7EBF\u3001\u7A7A\u683C"),J=!0}if(!_H.has(S))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${S}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${vQ.join("\u3001")}\u4E4B\u4E00`),J=!0;let N=D.trim();if(N==="")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),J=!0;else if(!MH.has(N)&&!f$(N)&&!y$(N)&&!jJ(N))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${N}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${xQ.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),J=!0;let w=["char","varchar","tinytext","text","mediumtext","longtext"].includes(S),k=["tinytext","text","mediumtext","longtext"].includes(S),h=["tinyint","smallint","mediumint","int","bigint"].includes(S),x=S==="decimal",m=S==="float"||S==="double",a=S==="json",r=h||x||m;if(f$(N)||y$(N)||jJ(N)){if(!w)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u4F7F\u7528\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D\uFF0C\u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="number"||N==="integer"){if(N==="integer"&&!h)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),J=!0;if(N==="number"&&!r)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),J=!0}if(N==="array"||N==="array_number"||N==="array_integer"){if(!w)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="json"||N==="json_number"||N==="json_integer"){if(!(a||k))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),J=!0}if(!r&&_.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${S}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),J=!0;if(_.unique===!0&&_.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u540C\u65F6\u8BBE\u7F6E\u4E86 unique=true \u548C index=true\uFF0C`+"unique \u548C index \u4E0D\u80FD\u540C\u65F6\u8BBE\u7F6E\uFF0C\u8BF7\u5220\u9664\u5176\u4E00\uFF08\u5426\u5219\u4F1A\u521B\u5EFA\u91CD\u590D\u7D22\u5F15\uFF09"),J=!0;if(_.min!==void 0&&_.max!==void 0&&_.min!==null&&_.max!==null){if(_.min>_.max)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5C0F\u503C "${_.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${_.max}"`),J=!0}if(k||a){if(_.min!==void 0&&_.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${S} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),J=!0;if(_.max!==void 0&&_.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${S} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;if(_.default!==void 0&&_.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.default}"`),J=!0;if(_.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),J=!0;if(_.unique===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),J=!0}else if(S==="datetime"){if(_.min!==void 0&&_.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),J=!0;if(_.max!==void 0&&_.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;if(_.default!==void 0&&_.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF08\u5982\u9700\u5F53\u524D\u65F6\u95F4\uFF0C\u8BF7\u5728\u4E1A\u52A1\u5199\u5165\u65F6\u8D4B\u503C\uFF09\u3002\u5F53\u524D\u4E3A ${S$(_.default)}`),J=!0;if(_.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),J=!0}else if(x){let{precision:Z0,scale:j}=_;if(typeof Z0!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),J=!0;else if(Z0<1||Z0>65)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${Z0}`),J=!0;if(typeof j!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),J=!0;else if(j<0||j>30)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${j}`),J=!0;if(typeof Z0==="number"&&typeof j==="number"&&j>Z0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${Z0}, scale=${j}\uFF09`),J=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(S==="char"||S==="varchar"){if(_.max===void 0||_.max===null||typeof _.max!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;else if(_.max>TQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${_.max} \u8D8A\u754C\uFF0C`+`${S} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${TQ} \u8303\u56F4\u5185`),J=!0;else{if(_.index===!0&&_.max>NQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${NQ}\uFF09`),J=!0;if(_.unique===!0&&_.max>DQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${DQ}\uFF09`),J=!0}if(N==="char"&&typeof _.max==="number"&&_.max>1)I.warn(`${X}${G} \u6587\u4EF6 ${V} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${_.max}`),J=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(h){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(m){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}}}catch(G){I.error({msg:`${X}${Y.fileName} \u89E3\u6790\u5931\u8D25`,err:G}),J=!0}}if(J)throw new c({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:qH,RedisClient:IH}=globalThis.Bun;$0();class M${static sqlClient=null;static redisClient=null;static sqlConnectedAt=null;static redisConnectedAt=null;static sqlPoolMax=1;static mysqlVersionText=null;static mysqlVersionMajor=null;static async connectSql($){let Z=$||{},J=typeof Z.host==="string"?Z.host.trim():"",Y=typeof Z.port==="number"?Z.port:NaN,Q=typeof Z.username==="string"?Z.username.trim():"",X=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",G=typeof Z.database==="string"?Z.database.trim():"";if(!J)throw new c({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(Y)||Y<1||Y>65535)throw new c({message:`\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.port \u975E\u6CD5\uFF08\u5F53\u524D\u503C\uFF1A${String(Z.port)}\uFF09`,kind:"validation"});if(!Q)throw new c({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!G)throw new c({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let U=encodeURIComponent(Q),V=encodeURIComponent(X),M=encodeURIComponent(G),z=`mysql://${U}:${V}@${J}:${Y}/${M}`,_=new qH({url:z,max:Z.poolMax??1,bigint:!1});try{let C=(async()=>{let S=await _`SELECT VERSION() AS version`,D=typeof S?.[0]?.version==="string"?S?.[0]?.version:String(S?.[0]?.version||""),N=D.split(".")[0],w=Number(N);if(!Number.isFinite(w))throw new c({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${D}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(w<8)throw new c({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${D}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=D,this.mysqlVersionMajor=w,D})(),E=new Promise((S,D)=>{setTimeout(()=>{D(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([C,E]),this.sqlClient=_,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,_}catch(L){I.error({err:L,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await _?.close()}catch{}if(QZ(L))throw L.logged=!0,L;let C=`SQL \u8FDE\u63A5\u5931\u8D25: ${L&&typeof L.message==="string"?L.message:String(L)}`;throw new c({message:C,kind:"runtime",logged:!0,cause:L,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED SQL \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.sqlClient=null,this.sqlConnectedAt=null}}static getSql(){if(!this.sqlClient)throw Error("SQL \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectSql()");return this.sqlClient}static async connectRedis($){let Z=$||{};try{let J=Z.host||"127.0.0.1",Y=Z.port||6379,Q=Z.username||"",X=Z.password||"",G=Z.db||0,U="",V=Q?encodeURIComponent(Q):"",M=X?encodeURIComponent(X):"";if(V&&M)U=`${V}:${M}@`;else if(M)U=`:${M}@`;let z=`redis://${U}${J}:${Y}/${G}`,_=new IH(z,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await _.ping(),this.redisClient=_,this.redisConnectedAt=Date.now(),_}catch(J){I.error({err:J,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let Y=`Redis \u8FDE\u63A5\u5931\u8D25: ${J&&typeof J.message==="string"?J.message:String(J)}`;throw new c({message:Y,kind:"runtime",logged:!0,cause:J,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED Redis \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.redisClient=null}}static getRedis(){if(!this.redisClient)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");return this.redisClient}static async connect($){try{await this.connectSql($.db||{}),await this.connectRedis($.redis||{})}catch(Z){let J=typeof process?.env?.NODE_ENV==="string"?"development":"";if(I.error({env:J,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),QZ(Z))throw Z.logged=!0,Z;let Y=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new c({message:Y,kind:"runtime",logged:!0,cause:Z,meta:{subsystem:"connect",operation:"connect"}})}}static async disconnect(){await this.disconnectSql(),await this.disconnectRedis()}static isConnected(){return{sql:this.sqlClient!==null,redis:this.redisClient!==null}}static getStatus(){let $=Date.now();return{sql:{connected:this.sqlClient!==null,connectedAt:this.sqlConnectedAt,uptime:this.sqlConnectedAt?$-this.sqlConnectedAt:null,poolMax:this.sqlPoolMax,mysqlVersionText:this.mysqlVersionText,mysqlVersionMajor:this.mysqlVersionMajor},redis:{connected:this.redisClient!==null,connectedAt:this.redisConnectedAt,uptime:this.redisConnectedAt?$-this.redisConnectedAt:null}}}static __setMockSql($){this.sqlClient=$}static __setMockRedis($){this.redisClient=$}static __reset(){this.sqlClient=null,this.redisClient=null,this.sqlConnectedAt=null,this.redisConnectedAt=null,this.sqlPoolMax=1,this.mysqlVersionText=null,this.mysqlVersionMajor=null}}$0();$0();async function gQ($){let Z=new Map;for(let J of $)try{if(J.type!=="api")continue;let Y=J,Q=Y.path,X={name:Y.name,handler:Y.handler,route:Q},G=Y.method;if(typeof G==="string"){let _=G.toUpperCase(),L=_==="POST,GET"?"GET,POST":_;X.method=["GET","POST","GET,POST"].includes(L)?L:"POST"}else X.method="POST";let U=Y.auth;if(U!==void 0)X.auth=U;let V=Y.fields;if(V!==void 0)X.fields=V;let M=Y.required;if(M!==void 0)X.required=M;let z=Y.rawBody;if(z!==void 0)X.rawBody=z;Z.set(Q,X)}catch(Y){throw I.error({err:Y,api:J.relativePath,file:J.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new c({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"api",operation:"load",relativePath:J.relativePath,filePath:J.filePath}})}return Z}$0();u0();function wZ($,Z={}){let J=Z.moduleLabel||"\u6A21\u5757",Y=Z.getName||((_)=>{let L=_.moduleName;if(typeof L==="string"&&L.trim()!=="")return L;return R$(_.fileName)}),Q=Z.getDeps||((_)=>{let L=_.deps;if(!Array.isArray(L))return[];return L.filter((C)=>typeof C==="string")}),X=[],G=new Set,U=new Set,V={},M=!0;for(let _ of $){let L=Y(_);if(typeof L!=="string"||L.trim()===""){I.error({item:_,msg:`${J} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),M=!1;continue}if(V[L]){I.error({name:L,first:V[L],second:_,msg:`${J} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),M=!1;continue}V[L]=_}if(!M)return!1;for(let _ of $){let L=Y(_),C=Q(_);if(!Array.isArray(C)){I.error({module:L,item:_,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),M=!1;continue}for(let E of C){if(typeof E!=="string"){I.error({module:L,dependency:E,item:_,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),M=!1;continue}if(!V[E])I.error({module:L,dependency:E,msg:`${J} \u4F9D\u8D56\u672A\u627E\u5230`}),M=!1}}if(!M)return!1;let z=(_)=>{if(G.has(_))return;if(U.has(_)){I.error({module:_,msg:`${J} \u5FAA\u73AF\u4F9D\u8D56`}),M=!1;return}let L=V[_];if(!L)return;let C=Q(L);U.add(_);for(let E of C)z(E);U.delete(_),G.add(_),X.push(L)};for(let _ of $){let L=Y(_);z(L)}return M?X:!1}async function hQ($){let Z=[],J=$.filter((Q)=>{let X=Q.moduleName;if(typeof X!=="string"||X.trim()==="")return!1;if((Object.hasOwn(Q,"enable")?Q.enable:void 0)===!1)return!1;return!0}),Y=wZ(J,{moduleLabel:"\u94A9\u5B50"});if(Y===!1)throw new c({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Q of Y){let X=Q.moduleName,G=Object.hasOwn(Q,"deps")?Q.deps:void 0,U=Array.isArray(G)?G.filter((z)=>typeof z==="string"):[],V=Object.hasOwn(Q,"handler")?Q.handler:void 0;if(typeof V!=="function")throw Error(`Hook '${X}' handler \u5FC5\u987B\u662F\u51FD\u6570`);let M=V;Z.push({name:X,enable:!0,deps:U,handler:M})}return Z}$0();async function bQ($,Z){let J=[],Y=$.filter((X)=>{let G=X.moduleName;if(typeof G!=="string"||G.trim()==="")return!1;if((Object.hasOwn(X,"enable")?X.enable:void 0)===!1)return!1;return!0}),Q=wZ(Y,{moduleLabel:"\u63D2\u4EF6"});if(Q===!1)throw new c({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let X of Q){let G=X.moduleName,U=Object.hasOwn(X,"deps")?X.deps:void 0,V=Array.isArray(U)?U.filter((_)=>typeof _==="string"):[],M=Object.hasOwn(X,"handler")?X.handler:void 0;if(typeof M!=="function")throw Error(`\u63D2\u4EF6 '${G}' handler \u5FC5\u987B\u662F\u51FD\u6570`);let z=M;try{let _=await z(Z);Z[G]=_,J.push({name:G,enable:!0,deps:V,handler:z})}catch(_){throw I.error({err:_,plugin:G,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new c({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${G}`,logged:!0,cause:_,meta:{subsystem:"plugin",operation:"init",plugin:G}})}}return J}IZ();$0();function cQ($,Z){let J=$.headers.get("x-forwarded-for");if(typeof J==="string"&&J.trim()){let U=J.split(",")[0];if(typeof U==="string"&&U.trim())return U.trim()}let Y=$.headers.get("x-real-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();let Q=$.headers.get("cf-connecting-ip");if(typeof Q==="string"&&Q.trim())return Q.trim();let X=$.headers.get("x-client-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("true-client-ip");if(typeof G==="string"&&G.trim())return G.trim();if(Z&&typeof Z.requestIP==="function"){let U=Z.requestIP($);if(U&&typeof U.address==="string"&&U.address.trim())return U.address.trim()}return"unknown"}$0();function B$($,Z,J=1,Y=null,Q=null,X=null){if($.requestId)I.info({event:"request_blocked",reason:Z,reasonCode:X,code:J,detail:Q,msg:"request blocked"});return Response.json({code:J,msg:Z,data:Y,detail:Q},{headers:$.corsHeaders})}function bJ($){if($.api&&$.requestId)I.info({event:"request_done",msg:"request done"});if($.response)return $.response;if($.result!==void 0){let Z=$.result;if(typeof Z==="string")Z={code:0,msg:Z};else if(Z&&typeof Z==="object"){if(!("code"in Z))Z={code:0,...Z}}if(Z&&typeof Z==="object"){let J=JSON.stringify(Z,(Y,Q)=>typeof Q==="bigint"?Q.toString():Q);return new Response(J,{headers:{...$.corsHeaders,"Content-Type":"application/json"}})}else return Response.json(Z,{headers:$.corsHeaders})}return Response.json({code:1,msg:"\u672A\u751F\u6210\u54CD\u5E94"},{headers:$.corsHeaders})}u0();function pQ($,Z,J){return async(Y,Q)=>{let X=aY(),U=new URL(Y.url).pathname||"/",V=cQ(Y,Q),M=Date.now(),z={method:Y.method,body:{},user:{},req:Y,now:M,ip:V,headers:Y.headers,route:U,requestId:X,corsHeaders:{"X-Request-ID":X}},_=$.get(U);if(_)z.api=_;return ZQ({requestId:X,method:Y.method,route:U,ip:V,now:M},async()=>{try{for(let L of Z)if(await L.handler(J,z),z.response)return z.response;if(z.api&&Y.method!=="OPTIONS"){let L={event:"request",apiName:z.api.name};if(z.body&&Object.keys(z.body).length>0)L.body=z.body;L.msg="request",I.info(L)}if(!z.api){if(Y.method!=="OPTIONS")z.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:z.corsHeaders})}else if(z.api.handler){let L=await z.api.handler(J,z);if(L instanceof Response)z.response=L;else z.result=L}return bJ(z)}catch(L){let C=z.api?U:Y.url;return I.error({err:L,path:C,msg:"\u8BF7\u6C42\u9519\u8BEF"}),z.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},bJ(z)}})}}L$();$0();L$();import{fileURLToPath as jH}from"url";var LH=jH(import.meta.url),P$=CZ(LH);var d4=N$(P$).endsWith("/dist")?P$:o(P$,"dist"),n4=o(P$,"checks"),s4=o(P$,"plugins"),o4=o(P$,"hooks"),l4=o(P$,"apis"),r4=o(P$,"tables"),s0=process.cwd(),i4=o(s0,"checks"),t4=o(s0,"plugins"),a4=o(s0,"hooks"),e4=o(s0,"apis"),$5=o(s0,"tables"),Z5=o(s0,"addons");function SZ($,Z={}){let J=Z.origin||"*";return{"Access-Control-Allow-Origin":J==="*"?$.headers.get("origin")||"*":J,"Access-Control-Allow-Methods":Z.methods||"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":Z.allowedHeaders||"Content-Type, Authorization, authorization, token","Access-Control-Expose-Headers":Z.exposedHeaders||"Content-Range, X-Content-Range, Authorization, authorization, token","Access-Control-Max-Age":String(Z.maxAge||86400),"Access-Control-Allow-Credentials":Z.credentials||"true"}}function uQ($=void 0){return async(Z)=>{let J=SZ(Z,$),Y=new URL(Z.url),Q=o(s0,"public",Y.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:J});let X=Bun.file(Q);if(await X.exists())return new Response(X,{headers:{"Content-Type":X.type||"application/octet-stream",...J}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:J})}catch(X){return I.error({err:X,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:J})}}}$0();u0();var BH=($)=>{let Z=$.split("/").map((X)=>X.trim()).filter((X)=>X.length>0),Y=(Z[1]||"")==="addon"?4:3,Q=Z.slice(0,Math.min(Y,Z.length));if(Q.length===0)return"";return`/${Q.join("/")}`};async function mQ($,Z){if(!$.db)throw new c({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new c({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){I.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let Q=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],X=tY(Q,(z)=>z.path),G=[],U=[],V=[],M=new Set;for(let z of Z){if(z.type!=="api")continue;let _=z,L=_.path,C=_.name,E=_.addonName;if(typeof L!=="string"||L.trim()==="")continue;if(typeof C!=="string"||C.trim()==="")continue;let S=typeof E==="string"?E:"",D=_.auth,N=D===!1||D===0?0:1,w=BH(L);M.add(L);let k=X[L];if(k){if(C!==k.name||L!==k.path||S!==k.addonName||w!==k.parentPath||N!==k.auth)U.push({id:k.id,name:C,path:L,parentPath:w,addonName:S,auth:N})}else G.push({name:C,path:L,parentPath:w,addonName:S,auth:N})}for(let z of Q)if(!M.has(z.path))V.push(z.id);if(U.length>0)try{await $.db.updBatch("addon_admin_api",U.map((z)=>{return{id:z.id,data:{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(G.length>0)try{await $.db.insBatch("addon_admin_api",G.map((z)=>{return{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(V.length>0)try{await $.db.delForceBatch("addon_admin_api",V)}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function dQ($){if(!$.cache)throw new c({message:"\u540C\u6B65\u7F13\u5B58\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});await $.cache.cacheApis(),await $.cache.cacheMenus(),await $.cache.rebuildRoleApiPermissions()}import{createSign as PH}from"crypto";class p${static md5($,Z="hex"){let J=new Bun.CryptoHasher("md5");return J.update($),J.digest(Z)}static hmacMd5($,Z,J="hex"){let Y=new Bun.CryptoHasher("md5",$);return Y.update(Z),Y.digest(J)}static sha1($,Z="hex"){let J=new Bun.CryptoHasher("sha1");return J.update($),J.digest(Z)}static hmacSha1($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha1",$);return Y.update(Z),Y.digest(J)}static sha256($,Z="hex"){let J=new Bun.CryptoHasher("sha256");return J.update($),J.digest(Z)}static rsaSha256($,Z,J="hex"){let Y=PH("RSA-SHA256");return Y.update($),Y.sign(Z,J)}static hmacSha256($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha256",$);return Y.update(Z),Y.digest(J)}static sha512($,Z="hex"){let J=new Bun.CryptoHasher("sha512");return J.update($),J.digest(Z)}static hmacSha512($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha512",$);return Y.update(Z),Y.digest(J)}static hash($,Z,J="hex"){let Y=new Bun.CryptoHasher($);return Y.update(Z),Y.digest(J)}static hmac($,Z,J,Y="hex"){let Q=new Bun.CryptoHasher($,Z);return Q.update(J),Q.digest(Y)}static async hashFile($,Z="sha256",J="hex"){let Y=Bun.file($),Q=new Bun.CryptoHasher(Z),G=Y.stream().getReader();try{while(!0){let{done:U,value:V}=await G.read();if(U)break;Q.update(V)}return Q.digest(J)}finally{G.releaseLock()}}static async hashPassword($,Z={}){let J=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,J)}static async verifyPassword($,Z){return await Bun.password.verify($,Z)}static base64Encode($){return Buffer.from($,"utf8").toString("base64")}static base64Decode($){return Buffer.from($,"base64").toString("utf8")}static randomString($){let Z=Math.ceil($/2),J=crypto.getRandomValues(new Uint8Array(Z)),Y="";for(let Q=0;Q<J.length;Q++)Y+=J[Q].toString(16).padStart(2,"0");return Y.slice(0,$)}static fastHash($,Z=0){let J=Bun.hash($,Z);return typeof J==="bigint"?Number(J):J}}$0();async function nQ($,Z={}){if(!Z.devPassword)return;if(!$.db)throw Error("\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316");if(!$.cache)throw Error("\u540C\u6B65\u5F00\u53D1\uFF1Actx.cache \u672A\u521D\u59CB\u5316");if(!(await $.db.tableExists("addon_admin_admin")).data){I.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){I.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){I.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let J=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Y=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Q=await $.db.getOne({table:"addon_admin_role",where:{code:"dev"}}),X={code:"dev",name:"\u5F00\u53D1\u8005\u89D2\u8272",description:"\u62E5\u6709\u6240\u6709\u83DC\u5355\u548C\u63A5\u53E3\u6743\u9650\u7684\u5F00\u53D1\u8005\u89D2\u8272",menus:J.data.lists.map((M)=>M.path).filter((M)=>typeof M==="string"&&M.length>0),apis:Y.data.lists.map((M)=>M.path).filter((M)=>typeof M==="string"&&M.length>0),sort:0};if(typeof Q.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:X.name,description:X.description,menus:X.menus,apis:X.apis,sort:X.sort}});else await $.db.insData({table:"addon_admin_role",data:X});let G={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await p$.hashPassword(p$.sha256(Z.devPassword+"befly")),roleCode:"dev",roleType:"admin"};if(typeof(await $.db.getOne({table:"addon_admin_admin",where:{username:"dev"}})).data.id==="number")await $.db.updData({table:"addon_admin_admin",where:{username:"dev"},data:{nickname:G.nickname,email:G.email,username:G.username,password:G.password,roleCode:G.roleCode,roleType:G.roleType}});else await $.db.insData({table:"addon_admin_admin",data:G});let V=[{code:"user",name:"\u7528\u6237\u89D2\u8272",description:"\u666E\u901A\u7528\u6237\u89D2\u8272",sort:1},{code:"admin",name:"\u7BA1\u7406\u5458\u89D2\u8272",description:"\u7BA1\u7406\u5458\u89D2\u8272",sort:2},{code:"guest",name:"\u8BBF\u5BA2\u89D2\u8272",description:"\u8BBF\u5BA2\u89D2\u8272",sort:3}];for(let M of V)if((await $.db.getOne({table:"addon_admin_role",where:{code:M.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:M.code},data:{name:M.name,description:M.description,sort:M.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:M.code,name:M.name,description:M.description,menus:[],apis:[],sort:M.sort}})}$0();hJ();function CH($){let Z=$.config?.disableMenus,J=Array.isArray(Z)?Z:[],Y=[];for(let X of J){if(typeof X!=="string")continue;let G=X.trim();if(!G)continue;Y.push(G)}if(Y.length===0)return()=>!1;let Q=Y.map((X)=>new Bun.Glob(X));return(X)=>{if(typeof X!=="string")return!1;let G=X.trim();if(!G)return!1;let U=[];if(U.push(G),G.startsWith("/"))U.push(G.slice(1));else U.push(`/${G}`);for(let V of Q){let M=typeof V==="object"&&V!==null&&"match"in V?V.match:void 0;if(typeof M!=="function")throw Error("\u540C\u6B65\u83DC\u5355\uFF1A\u5F53\u524D Bun \u7248\u672C\u4E0D\u652F\u6301 Bun.Glob.match\uFF0C\u65E0\u6CD5\u6309 disableMenus \u505A glob \u5339\u914D");let z=M;for(let _ of U)if(z.call(V,_))return!0}return!1}}function sQ($,Z){let J=[];for(let Y of $){if(Y===null||typeof Y!=="object")continue;let Q=typeof Y.path==="string"?String(Y.path).trim():"";if(Q&&Z(Q))continue;let X=Y.children,G=Array.isArray(X)&&X.length>0?sQ(X,Z):[],U={};if(typeof Y.name==="string")U.name=Y.name;if(typeof Y.path==="string")U.path=Y.path;if(typeof Y.sort==="number")U.sort=Y.sort;if(typeof Y.parentPath==="string")U.parentPath=Y.parentPath;if(G.length>0)U.children=G;J.push(U)}return J}function EH($){let Z=new Map,J=[];for(let Y of $)J.push({menu:Y,parentPathFromTree:""});while(J.length>0){let Y=J.pop(),Q=Y?Y.menu:null;if(!Q)continue;let X=typeof Q.path==="string"?Q.path:"",G=Q.children;if(G&&Array.isArray(G)&&G.length>0){let _=typeof X==="string"?X:"";for(let L of G)J.push({menu:L,parentPathFromTree:_})}if(!X)continue;let U=typeof Q.name==="string"?Q.name:"";if(!U)continue;let V=typeof Q.sort==="number"?Q.sort:999999,z=typeof Q.parentPath==="string"?Q.parentPath:typeof Y?.parentPathFromTree==="string"?Y.parentPathFromTree:BQ(X);Z.set(X,{path:X,name:U,sort:V,parentPath:z})}return Z}async function oQ($,Z){if(!$.db)throw new c({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new c({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new c({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let J=CH($),Y=sQ(Z,J),Q=EH(Y),X=new Set;for(let U of Q.keys())X.add(U);let G="addon_admin_menu";await $.db.trans(async(U)=>{let M=(await U.getAll({table:G,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],z=M.filter((w)=>typeof w?.state==="number"&&w.state>=0),_=new Map,L=new Set,C=new Map;for(let w of z){if(typeof w?.path!=="string"||!w.path)continue;if(typeof w?.id!=="number")continue;if(J(w.path))continue;let k=_.get(w.path);if(!k){_.set(w.path,w);continue}let h=typeof k?.id==="number"?k.id:0,x=w.id;if(x>h){if(_.set(w.path,w),h>0)L.add(h);let m=C.get(w.path)||{keptId:x,removedIds:[]};if(m.keptId=x,h>0)m.removedIds.push(h);C.set(w.path,m)}else{if(x>0)L.add(x);let m=C.get(w.path)||{keptId:h,removedIds:[]};if(m.keptId=h,x>0)m.removedIds.push(x);C.set(w.path,m)}}if(C.size>0){let w=[];for(let k of C.entries()){let h=k[0],x=k[1];if(w.push({path:h,keptId:x.keptId,removedIds:x.removedIds}),w.length>=10)break}I.warn({table:G,duplicatePaths:C.size,duplicateIds:L.size,examples:w,msg:"addon_admin_menu \u68C0\u6D4B\u5230\u91CD\u590D path \u8BB0\u5F55\uFF1A\u5DF2\u4FDD\u7559 id \u6700\u5927\u7684\u4E00\u6761\u5E76\u5220\u9664\u5176\u4F59\u8BB0\u5F55"})}let E=[],S=[];for(let w of Q.values()){let k=_.get(w.path);if(k){let h=typeof k.parentPath==="string"?k.parentPath:"";if(k.name!==w.name||k.sort!==w.sort||h!==w.parentPath)E.push({id:k.id,data:{name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort}})}else S.push({name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort})}if(E.length>0)await U.updBatch(G,E);if(S.length>0)await U.insBatch(G,S);let D=new Set;for(let w of z){if(typeof w?.path!=="string"||!w.path)continue;if(!X.has(w.path)){if(typeof w?.id==="number")D.add(w.id)}}for(let w of L)if(typeof w==="number"&&w>0)D.add(w);for(let w of M){if(typeof w?.path!=="string"||!w.path)continue;if(!J(w.path))continue;if(typeof w?.id==="number"&&w.id>0)D.add(w.id)}let N=Array.from(D);if(N.length>0)await U.delForceBatch(G,N)})}$0();function wH($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function SH($){let Z=String($.type??"").trim(),Y=(typeof $.input==="string"?$.input.trim():"")||wH(Z);return{type:Z,input:Y}}function W$($){let Z=SH($),J=$.default??null;if(J===null){if(Z.input==="array"||Z.input==="array_number"||Z.input==="array_integer")J="[]"}return{name:$.name,type:Z.type,input:Z.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:J,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function pJ($){return String($).replace(/"/g,"\\\"")}function uJ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let J of $)Z.push(uJ(J));return Z}return String($)}function TH($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function NH($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function cJ($){if(TH($))return $;if(Array.isArray($)){let Z=[];for(let J of $){let Y=cJ(J);if(Y===null)return null;Z.push(Y)}return Z}if(NH($)){let Z={};for(let[J,Y]of Object.entries($)){if(Y===void 0)continue;let Q=cJ(Y);if(Q===null)return null;Z[J]=Q}return Z}return null}function lQ($){if(!Array.isArray($))return[];let Z=[];for(let J of $){if(J===null){Z.push(null);continue}if(typeof J==="string"||typeof J==="number"||typeof J==="boolean"){Z.push(J);continue}if(typeof J==="bigint"){Z.push(String(J));continue}if(J instanceof Date){Z.push(J);continue}let Y=cJ(J);if(Y!==null){Z.push(Y);continue}Z.push(String(J))}return Z}function C$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}u0();class T{static DB_VERSION_REQUIREMENTS={MYSQL_MIN_MAJOR:8};static MYSQL_TABLE_CONFIG={ENGINE:"InnoDB",CHARSET:"utf8mb4",COLLATE:"utf8mb4_0900_ai_ci"};static SYSTEM_FIELDS=[{name:"id",comment:"\u4E3B\u952EID",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT"},{name:"created_at",comment:"\u521B\u5EFA\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"updated_at",comment:"\u66F4\u65B0\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"deleted_at",comment:"\u5220\u9664\u65F6\u95F4",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"state",comment:"\u72B6\u6001\u5B57\u6BB5",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 1"}];static SYSTEM_INDEX_FIELDS=["created_at","updated_at","state"];static TYPE_MAPPING={tinyint:"TINYINT",smallint:"SMALLINT",mediumint:"MEDIUMINT",int:"INT",bigint:"BIGINT",decimal:"DECIMAL",float:"FLOAT",double:"DOUBLE",char:"CHAR",varchar:"VARCHAR",datetime:"DATETIME",tinytext:"TINYTEXT",text:"MEDIUMTEXT",mediumtext:"MEDIUMTEXT",longtext:"LONGTEXT",json:"JSON"};static TEXT_FAMILY=new Set(["tinytext","text","mediumtext","longtext"]);static INT_TYPES=new Set(["tinyint","smallint","mediumint","int","bigint"]);static DECIMAL_TYPES=new Set(["decimal"]);static FLOAT_TYPES=new Set(["float","double"]);db;dbName;constructor($){if(!$?.db)throw Error("\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316");if(!$.config)throw Error("\u540C\u6B65\u8868\uFF1Actx.config \u672A\u521D\u59CB\u5316");this.dbName=String($.config.db?.database||""),this.db=$.db}async run($){try{if(!Array.isArray($))throw Error("\u540C\u6B65\u8868\uFF1A\u8BF7\u4F20\u5165\u591A\u4E2A\u8868\u5B9A\u4E49\u7EC4\u6210\u7684\u6570\u7EC4");await T.ensureDbVersion(this.db);let Z=[],J=[];for(let Y of $){if(!Y||Y.type!=="table")continue;let Q=Y.source==="addon"?`addon_${b(Y.addonName)}_${b(Y.fileName)}`:b(Y.fileName),X=Y.content;for(let V of Object.values(X))T.normalizeFieldDefinitionInPlace(V);let G=await T.tableExists(this.db,this.dbName,Q),U={item:Y,tableName:Q,tableFields:X,existsTable:G,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(G){let V=await T.getTableColumns(this.db,this.dbName,Q),M=await T.getTableIndexes(this.db,this.dbName,Q),z=T.collectIncompatibleTypeChanges(Q,V,X);for(let _ of z)J.push(_);U.existingColumns=V,U.existingIndexes=M}Z.push(U)}if(J.length>0){let Y=[];for(let G of J)Y.push(`- ${G.tableName}.${G.dbFieldName}: ${G.currentType} -> ${G.expectedType}`);let Q=[];Q.push("\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4\uFF08\u68C0\u6D4B\u5230\u4E0D\u517C\u5BB9/\u6536\u7F29\u53D8\u66F4\uFF09:");for(let G of Y)Q.push(G);Q.push("\u8BF4\u660E: \u4EC5\u5141\u8BB8\u540C\u7C7B\u578B\u7684\u5BBD\u5316\u53D8\u66F4\uFF08\u5982 TINYINT->SMALLINT->INT->BIGINT\uFF09\uFF0C\u4EE5\u53CA\u90E8\u5206\u517C\u5BB9\u53D8\u66F4\uFF08\u5982 VARCHAR->TEXT\u3001CHAR/VARCHAR \u4E92\u8F6C\u3001float->double\uFF09\u3002"),Q.push("\u63D0\u793A: \u82E5\u786E\u9700\u6536\u7F29\uFF0C\u8BF7\u5148\u624B\u5DE5\u8FC1\u79FB/\u6E05\u6D17\u6570\u636E\u540E\u518D\u6267\u884C\u540C\u6B65\u3002");let X=Error(Q.join(`
|
|
7
|
-
`));throw X.__syncTableNoLog=!0,X}for(let Y of Z){if(!Y.existsTable)continue;if(!Y.existingColumns||!Y.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${Y.tableName}\uFF09`);let Q=T.buildTablePlan({tableName:Y.tableName,fields:Y.tableFields,existingColumns:Y.existingColumns,existingIndexes:Y.existingIndexes});Y.plan=Q.plan,Y.planSummary=Q.summary,Y.planDetails=Q.details}for(let Y of Z){let{item:Q,tableName:X,tableFields:G,existsTable:U}=Y;try{if(U){let{plan:V,planSummary:M,planDetails:z}=Y;if(V&&V.changed&&M&&z){let _=`[\u8868 ${X}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${M.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${M.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${M.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${M.indexChanges}`,L=z.fieldChanges.flatMap((S)=>S.changes.map((D)=>{let N=String(D.current??""),w=String(D.expected??"");return`- ${S.dbFieldName}.${D.type}: ${N} -> ${w}`})),C=z.indexChanges.map((S)=>{let D=`idx_${S.fieldName}`===S.indexName?S.indexName:S.indexName;if(S.action==="create")return`- index.${D}: \u65E0 -> ${S.indexName}(${S.fieldName})`;return`- index.${D}: ${S.indexName}(${S.fieldName}) -> \u65E0`}),E=[];for(let S of L)E.push(S);for(let S of C)E.push(S);I.debug(_);for(let S of E)I.debug(`[\u8868 ${X}] \u53D8\u66F4\u660E\u7EC6 ${S}`);await T.applyTablePlan(this.db,X,V)}}else await T.createTable(this.db,X,G)}catch(V){let M=String(V?.message||V),z=V?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:X,operation:U?"modifyTable":"createTable",source:Q.source,sourceName:Q.sourceName,addonName:Q.addonName,fileName:Q.fileName,filePath:Q.filePath,errorMessage:M,sqlInfo:z?{sql:z.sql,params:z.params,duration:z.duration}:null,err:V}),V.__syncTableLogged=!0,V}}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let J=String(Z?.message||Z),Y=Z?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:J,sqlInfo:Y?{sql:Y.sql,params:Y.params,duration:Y.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,J){let Y=String(J?.message||J),Q=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${Y}`);if(J?.sqlInfo)Q.sqlInfo=J.sqlInfo;return Q}static normalizeFieldDefinitionInPlace($){let Z=W$($);$.detail=Z.detail,$.min=Z.min,$.max=Z.max,$.precision=Z.precision,$.scale=Z.scale,$.default=Z.default,$.index=Z.index,$.unique=Z.unique,$.nullable=Z.nullable,$.unsigned=Z.unsigned,$.input=Z.input}static isStringOrArrayType($){return $==="char"||$==="varchar"}static quoteIdentifier($){if(typeof $!=="string")throw Error(`quoteIdentifier \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`);let Z=$.trim();if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684 SQL \u6807\u8BC6\u7B26: ${Z}`);return`\`${Z}\``}static getSqlType($,Z,J=!1,Y=null,Q=null){let X=String($||"").toLowerCase(),G=T.TYPE_MAPPING;if(T.isStringOrArrayType(X)){if(typeof Z!=="number")throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A${X} \u7C7B\u578B\u7F3A\u5931 max\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09`);return`${G[X]}(${Z})`}if(T.DECIMAL_TYPES.has(X)){if(typeof Y!=="number"||typeof Q!=="number")throw Error("\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1Adecimal \u7C7B\u578B\u7F3A\u5931 precision/scale\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09");let V=`${G[X]}(${Y},${Q})`;return J?`${V} UNSIGNED`:V}let U=G[X]||"TEXT";if((T.INT_TYPES.has(X)||T.FLOAT_TYPES.has(X))&&J)return`${U} UNSIGNED`;return U}static resolveDefaultValue($,Z){let J=String(Z||"").toLowerCase();if($!==null&&$!=="null")return $;switch(J){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":case"decimal":case"float":case"double":return 0;case"char":case"varchar":return"";case"datetime":return"null";case"tinytext":case"text":case"mediumtext":case"longtext":case"json":return"null";default:return $}}static generateDefaultSql($,Z){let J=String(Z||"").toLowerCase();if(T.TEXT_FAMILY.has(J)||J==="json"||$==="null")return"";if(T.INT_TYPES.has(J)||T.DECIMAL_TYPES.has(J)||T.FLOAT_TYPES.has(J)||T.isStringOrArrayType(J))if(typeof $==="number"&&!Number.isNaN($))return` DEFAULT ${$}`;else return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(J==="datetime"){if(typeof $==="string"){let Y=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(Y))return` DEFAULT ${Y.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${Y.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let J=String(Z||"").toLowerCase(),Y=String($).trim();if(T.INT_TYPES.has(J)||T.DECIMAL_TYPES.has(J)||T.FLOAT_TYPES.has(J)){if(/^[+-]?\d+(?:\.\d+)?$/.test(Y)){let Q="",X=Y;if(X.startsWith("+")||X.startsWith("-"))Q=X.startsWith("-")?"-":"",X=X.slice(1);let G=X.split("."),U=G[0]||"0",V=G[1]||"",M=U.replace(/^0+(\d)/,"$1"),z=V.replace(/0+$/g,""),_=M===""?"0":M,L=z.length>0?`${_}.${z}`:_;return Q==="-"&&L!=="0"?`-${L}`:L}}return Y}static buildIndexClause($,Z,J){let Y=T.quoteIdentifier($);if(J==="create"){let Q=T.quoteIdentifier(Z);return`ADD INDEX ${Y} (${Q})`}return`DROP INDEX ${Y}`}static getSystemColumnDef($){let Z=null;for(let Y of T.SYSTEM_FIELDS)if(Y.name===$){Z=Y;break}if(!Z)return null;return`${T.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${pJ(Z.comment)}"`}static buildSystemColumnDefs(){let $=[];for(let Z of T.SYSTEM_FIELDS){let J=T.getSystemColumnDef(Z.name);if(J)$.push(J)}return $}static getSystemFieldNames(){return T.SYSTEM_FIELDS.filter(($)=>$.name!=="id").map(($)=>$.name)}static async runIndexBatch($,Z,J,Y){if(J.length===0)return;let X=`ALTER TABLE ${T.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.join(", ")}`;try{await T.executeDDLSafely($,X)}catch(G){throw I.error({err:G,table:Z,msg:Y}),G}}static buildBusinessColumnDefs($){let Z=[];for(let[J,Y]of Object.entries($))Z.push(T.buildColumnSql(J,Y));return Z}static buildColumnSql($,Z){let J=W$(Z),Y=
|
|
8
|
-
`))}static collectIncompatibleTypeChanges($,Z,J){let Y=[];for(let[Q,X]of Object.entries(J)){let G=
|
|
5
|
+
`}function QQ($){try{return JSON.stringify($)}catch{try{return JSON.stringify({level:$.level,time:$.time,pid:$.pid,hostname:$.hostname,msg:"[Unserializable log record]"})}catch{return'{"msg":"[Unserializable log record]"}'}}}function XQ($){let{fileSink:Z,consoleSink:J}=$,Y=(Q,X)=>{if(Q==="debug"&&n0.debug!==1)return;let G=n(X)?X:{value:X},U=SJ(G,DJ),V=m1(Q,U);if(Z.enqueue(V),J)J.enqueue(V)};return{info(Q){Y("info",Q)},warn(Q){Y("warn",Q)},error(Q){Y("error",Q)},debug(Q){Y("debug",Q)}}}function d1(){let $=JQ();if(!$)return null;let Z=Date.now()-$.now,J={requestId:$.requestId,method:$.method,route:$.route,ip:$.ip,now:$.now,durationSinceNowMs:Z};return J.userId=$.userId,J.roleCode=$.roleCode,J.nickname=$.nickname,J.roleType=$.roleType,J}function n1($,Z){let J={};for(let Q of Object.keys($))J[Q]=$[Q];let Y=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let Q of Y)if(J[Q]===void 0)J[Q]=Z[Q];return J}function jZ($){if(n($))return $;if($ instanceof Error)return{err:$,msg:$.message||$.name||"Error"};if($===void 0)return{msg:""};if($===null)return{msg:"null"};if(typeof $==="object")return{value:$};try{return{msg:String($)}}catch{return{msg:"[Unserializable]"}}}function LZ($){let Z=d1();if(!Z)return $;return n1($,Z)}class UQ{maybeSanitizeForMock($){if(!T$)return $;return SJ($,DJ)}info($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);QZ("app").info(J)}warn($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);QZ("app").warn(J)}error($){let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);if(QZ("app").error(J),T$)return;QZ("error").error(J)}debug($){if(n0.debug!==1)return;let Z=LZ(jZ($)),J=this.maybeSanitizeForMock(Z);QZ("app").debug(J)}async flush(){await b1()}configure($){p1($)}setMock($){u1($)}async shutdown(){await HQ()}}var f1,GQ,DJ,y1,q$=null,I$=null,T$=null,Q$=null,X$=null,G$=null,n0,I;var $0=_$(()=>{$Q();u0();IZ();f1=process.cwd(),GQ=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],DJ={maxStringLen:100,maxArrayItems:100,sanitizeDepth:3,sanitizeNodes:500,sanitizeObjectKeys:100,sensitiveKeyMatcher:EJ({builtinPatterns:GQ,userPatterns:[]})},y1=(()=>{try{return D1()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};I=new UQ});import{isAbsolute as s1}from"path";import{pathToFileURL as o1}from"url";function l1($){return/^[a-zA-Z]:[\\/]/.test($)}function r1($){if(s1($)||l1($))return o1($).href;return $}async function j$($,Z){try{let Q=($.endsWith(".json")?await import(r1($),{with:{type:"json"}}):await import($))?.default;if(Q===null||Q===void 0)return Z;let X=IJ(Z),G=IJ(Q);if(X!==G)return I.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:X,actualType:G}),Z;return Q}catch(J){return I.warn({err:J,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var PZ=_$(()=>{$0();u0()});function GZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(JH,(Z)=>Z.toUpperCase())}function HH(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function fJ($,Z){let J="",Y=0,Q=-1,X=0,G=null;for(let U=0;U<=$.length;++U){if(U<$.length)G=$[U];else if(G==="/")break;else G="/";if(G==="/"){if(Q===U-1||X===1);else if(X===2){if(J.length<2||Y!==2||J[J.length-1]!=="."||J[J.length-2]!=="."){if(J.length>2){let V=J.lastIndexOf("/");if(V===-1)J="",Y=0;else J=J.slice(0,V),Y=J.length-1-J.lastIndexOf("/");Q=U,X=0;continue}else if(J.length>0){J="",Y=0,Q=U,X=0;continue}}if(Z)J+=J.length>0?"/..":"..",Y=2}else{if(J.length>0)J+=`/${$.slice(Q+1,U)}`;else J=$.slice(Q+1,U);Y=U-Q-1}Q=U,X=0}else if(G==="."&&X!==-1)++X;else X=-1}return J}var JH,YH,QH,RQ,KQ,XH,GH,N$=function($){if($.length===0)return".";$=GZ($);let Z=$.match(YH),J=c$($),Y=$[$.length-1]==="/";if($=fJ($,!J),$.length===0){if(J)return"/";return Y?"./":"."}if(Y)$+="/";if(RQ.test($))$+="/";if(Z){if(!J)return`//./${$}`;return`//${$}`}return J&&!c$($)?`/${$}`:$},o=function(...$){let Z="";for(let J of $){if(!J)continue;if(Z.length>0){let Y=Z[Z.length-1]==="/",Q=J[0]==="/";if(Y&&Q)Z+=J.slice(1);else Z+=Y||Q?J:`/${J}`}else Z+=J}return N$(Z)},XZ=function(...$){$=$.map((Y)=>GZ(Y));let Z="",J=!1;for(let Y=$.length-1;Y>=-1&&!J;Y--){let Q=Y>=0?$[Y]:HH();if(!Q||Q.length===0)continue;Z=`${Q}/${Z}`,J=c$(Q)}if(Z=fJ(Z,!J),J&&!c$(Z))return`/${Z}`;return Z.length>0?Z:"."},c$=function($){return QH.test($)},qQ=function($){if($==="..")return"";let Z=XH.exec(GZ($));return Z&&Z[1]||""},yJ=function($,Z){let J=XZ($).replace(KQ,"$1").split("/"),Y=XZ(Z).replace(KQ,"$1").split("/");if(Y[0][1]===":"&&J[0][1]===":"&&J[0]!==Y[0])return Y.join("/");let Q=[...J];for(let X of Q){if(Y[0]!==X)break;J.shift(),Y.shift()}return[...J.map(()=>".."),...Y].join("/")},CZ=function($){let Z=GZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&RQ.test(Z[0]))Z[0]+="/";return Z.join("/")||(c$($)?"/":".")},IQ=function($,Z){let J=GZ($).split("/"),Y="";for(let Q=J.length-1;Q>=0;Q--){let X=J[Q];if(X){Y=X;break}}return Z&&Y.endsWith(Z)?Y.slice(0,-Z.length):Y},HZ=function($){let Z=GH.exec($)?.[0]?.replace(/\\/g,"/")||"",J=IQ($),Y=qQ(J);return{root:Z,dir:CZ($),base:J,ext:Y,name:J.slice(0,J.length-Y.length)}};var jQ=_$(()=>{JH=/^[A-Za-z]:\//;YH=/^[/\\]{2}/,QH=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,RQ=/^[A-Za-z]:$/,KQ=/^\/([A-Za-z]:)?$/,XH=/.(\.[^./]+|\.)$/,GH=/^[/\\]|^[a-zA-Z]:[/\\]/});var L$=_$(()=>{jQ()});import{statSync as WH}from"fs";var EZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return WH(o($,Z.name)).isDirectory()}catch{return!1}};var gJ=_$(()=>{L$()});import{existsSync as p$}from"fs";import{readdir as UH}from"fs/promises";function VH($){if(!$||typeof $!=="object")return null;let Z=$,J=Z.title;if(typeof J!=="string"||!J)return null;let Y=Z.order,Q=typeof Y==="number"&&Number.isFinite(Y)&&Number.isInteger(Y)&&Y>=0?Y:void 0;if(Q===void 0)return{title:J};return{title:J,order:Q}}async function LQ($,Z,J=""){if(!p$($))return[];let Y=[],Q=await UH($,{withFileTypes:!0});for(let X of Q){if(!EZ($,X)||X.name==="components")continue;let G=o($,X.name),U=o(G,"meta.json"),V=o(G,"index.vue"),M=null;if(!p$(U))continue;if(!p$(V)){I.warn({path:G,msg:"\u76EE\u5F55\u5B58\u5728 meta.json \u4F46\u7F3A\u5C11 index.vue\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}let z=await j$(U,{});if(M=VH(z),!M?.title){I.warn({path:U,msg:"meta.json \u7F3A\u5C11\u6709\u6548\u7684 title\uFF08\u4EE5\u53CA\u53EF\u9009 order:number\uFF09\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}if(!M?.title)continue;let _=String(X.name).replace(/_\d+$/,""),L;if(_==="index")L=J;else L=J?`${J}/${_}`:`/${_}`;let C=Z?L?`${Z}${L}`:Z:L||"/",E={name:M.title,path:C,sort:M.order??999999},S=await LQ(G,Z,L);if(S.length>0)E.children=S;Y.push(E)}return Y.sort((X,G)=>(X.sort??999999)-(G.sort??999999)),Y}function BQ($){let Z=$.split("/").filter((J)=>Boolean(J));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function PQ($){let Z=[];for(let Y of $){let Q=o(Y.rootDir,"adminViews"),X=o(Y.rootDir,"views","admin"),G=p$(Q)?Q:p$(X)?X:null;if(!G)continue;try{let U=`/${Y.source}/${Y.name}`,V=await LQ(G,U);if(V.length>0)for(let M of V)Z.push(M)}catch(U){I.warn({err:U,addon:Y.name,addonSource:Y.source,dir:G,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let J=o(process.cwd(),"menus.json");if(p$(J)){let Y=await j$(J,[]);if(Array.isArray(Y)&&Y.length>0)for(let Q of Y)Z.push(Q)}return Z}var hJ=_$(()=>{L$();$0();PZ();gJ()});var o$=i((_7,qX)=>{var RX={invalidType:"FAST_JWT_INVALID_TYPE",invalidOption:"FAST_JWT_INVALID_OPTION",invalidAlgorithm:"FAST_JWT_INVALID_ALGORITHM",invalidClaimType:"FAST_JWT_INVALID_CLAIM_TYPE",invalidClaimValue:"FAST_JWT_INVALID_CLAIM_VALUE",invalidKey:"FAST_JWT_INVALID_KEY",invalidSignature:"FAST_JWT_INVALID_SIGNATURE",invalidPayload:"FAST_JWT_INVALID_PAYLOAD",malformed:"FAST_JWT_MALFORMED",inactive:"FAST_JWT_INACTIVE",expired:"FAST_JWT_EXPIRED",missingKey:"FAST_JWT_MISSING_KEY",keyFetchingError:"FAST_JWT_KEY_FETCHING_ERROR",signError:"FAST_JWT_SIGN_ERROR",verifyError:"FAST_JWT_VERIFY_ERROR",missingRequiredClaim:"FAST_JWT_MISSING_REQUIRED_CLAIM",missingSignature:"FAST_JWT_MISSING_SIGNATURE"};class s$ extends Error{constructor($,Z,J){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,J)for(let Y in J)this[Y]=J[Y]}}s$.codes=RX;s$.wrap=function($,Z,J){if($ instanceof s$)return $;return new s$(Z,J,{originalError:$})};qX.exports={TokenError:s$,TOKEN_ERROR_CODES:RX}});var eJ=i((M7,IX)=>{var{TokenError:U$}=o$();function SW({complete:$,checkTyp:Z},J){if(J instanceof Buffer)J=J.toString("utf-8");else if(typeof J!=="string")throw new U$(U$.codes.invalidType,"The token must be a string or a buffer.");let Y=J.indexOf("."),Q=J.lastIndexOf(".");if(Y===-1||Y>=Q)throw new U$(U$.codes.malformed,"The token is malformed.");let X=!1;try{let G=JSON.parse(Buffer.from(J.slice(0,Y),"base64").toString("utf-8"));if(Z&&G.typ!==Z)throw new U$(U$.codes.invalidType,`The type must be "${Z}".`,{header:G});X=!0;let U=Buffer.from(J.slice(Y+1,Q),"base64").toString("utf-8");if(U=JSON.parse(U),!U||typeof U!=="object")throw new U$(U$.codes.invalidPayload,"The payload must be an object",{payload:U});return $?{header:G,payload:U,signature:J.slice(Q+1),input:J.slice(0,Q)}:U}catch(G){throw U$.wrap(G,U$.codes.malformed,`The token ${X?"payload":"header"} is not a valid base64url serialized JSON.`)}}IX.exports=function(Z={}){let J=Z.complete||!1,Y=Z.checkTyp;return SW.bind(null,{complete:J,checkTyp:Y})}});var LX=i((A7,jX)=>{function V$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")V$.prototype[Symbol.iterator]=function(){return this};V$.of=function(){var $=arguments,Z=$.length,J=0;return new V$(function(){if(J>=Z)return{done:!0};return{done:!1,value:$[J++]}})};V$.empty=function(){var $=new V$(function(){return{done:!0}});return $};V$.fromSequence=function($){var Z=0,J=$.length;return new V$(function(){if(Z>=J)return{done:!0};return{done:!1,value:$[Z++]}})};V$.is=function($){if($ instanceof V$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};jX.exports=V$});var BX=i((TW)=>{TW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";TW.SYMBOL_SUPPORT=typeof Symbol<"u"});var $Y=i((F7,CX)=>{var PX=BX(),kW=PX.ARRAY_BUFFER_SUPPORT,vW=PX.SYMBOL_SUPPORT;CX.exports=function(Z,J){var Y,Q,X,G,U;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof J!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||kW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(X=0,G=Z.length;X<G;X++)J(Z[X],X);return}if(typeof Z.forEach==="function"){Z.forEach(J);return}if(vW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){Y=Z,X=0;while(U=Y.next(),U.done!==!0)J(U.value,X),X++;return}for(Q in Z)if(Z.hasOwnProperty(Q))J(Z[Q],Q);return}});var ZY=i((pW)=>{var xW=Math.pow(2,8)-1,fW=Math.pow(2,16)-1,yW=Math.pow(2,32)-1,gW=Math.pow(2,7)-1,hW=Math.pow(2,15)-1,bW=Math.pow(2,31)-1;pW.getPointerArray=function($){var Z=$-1;if(Z<=xW)return Uint8Array;if(Z<=fW)return Uint16Array;if(Z<=yW)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};pW.getSignedPointerArray=function($){var Z=$-1;if(Z<=gW)return Int8Array;if(Z<=hW)return Int16Array;if(Z<=bW)return Int32Array;return Float64Array};pW.getNumberType=function($){if($===($|0))if(Math.sign($)===-1){if($<=127&&$>=-128)return Int8Array;if($<=32767&&$>=-32768)return Int16Array;return Int32Array}else{if($<=255)return Uint8Array;if($<=65535)return Uint16Array;return Uint32Array}return Float64Array};var cW={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};pW.getMinimalRepresentation=function($,Z){var J=null,Y=0,Q,X,G,U,V;for(U=0,V=$.length;U<V;U++)if(G=Z?Z($[U]):$[U],X=pW.getNumberType(G),Q=cW[X.name],Q>Y)Y=Q,J=X;return J};pW.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};pW.concat=function(){var $=0,Z,J,Y;for(Z=0,Y=arguments.length;Z<Y;Z++)$+=arguments[Z].length;var Q=new arguments[0].constructor($);for(Z=0,J=0;Z<Y;Z++)Q.set(arguments[Z],J),J+=arguments[Z].length;return Q};pW.indices=function($){var Z=pW.getPointerArray($),J=new Z($);for(var Y=0;Y<$;Y++)J[Y]=Y;return J}});var NX=i((iW)=>{var SX=$Y(),TX=ZY();function oW($){return Array.isArray($)||TX.isTypedArray($)}function JY($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function lW($){var Z=JY($),J=typeof Z==="number"?Array(Z):[],Y=0;return SX($,function(Q){J[Y++]=Q}),J}function rW($){var Z=JY($),J=typeof Z==="number"?TX.getPointerArray(Z):Array,Y=typeof Z==="number"?Array(Z):[],Q=typeof Z==="number"?new J(Z):[],X=0;return SX($,function(G){Y[X]=G,Q[X]=X++}),[Y,Q]}iW.isArrayLike=oW;iW.guessLength=JY;iW.toArray=lW;iW.toArrayWithIndices=rW});var QY=i((q7,DX)=>{var YY=LX(),Z9=$Y(),J9=ZY(),Y9=NX();function d0($,Z,J){if(arguments.length<2)J=$,$=null,Z=null;if(this.capacity=J,typeof this.capacity!=="number"||this.capacity<=0)throw Error("mnemonist/lru-cache: capacity should be positive number.");else if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var Y=J9.getPointerArray(J);this.forward=new Y(J),this.backward=new Y(J),this.K=typeof $==="function"?new $(J):Array(J),this.V=typeof Z==="function"?new Z(J):Array(J),this.size=0,this.head=0,this.tail=0,this.items={}}d0.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};d0.prototype.splayOnTop=function($){var Z=this.head;if(this.head===$)return this;var J=this.backward[$],Y=this.forward[$];if(this.tail===$)this.tail=J;else this.backward[Y]=J;return this.forward[J]=Y,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var J=this.items[$];if(typeof J<"u"){this.splayOnTop(J),this.V[J]=Z;return}if(this.size<this.capacity)J=this.size++;else J=this.tail,this.tail=this.backward[J],delete this.items[this.K[J]];this.items[$]=J,this.K[J]=$,this.V[J]=Z,this.forward[J]=this.head,this.backward[this.head]=J,this.head=J};d0.prototype.setpop=function($,Z){var J=null,Y=null,Q=this.items[$];if(typeof Q<"u")return this.splayOnTop(Q),J=this.V[Q],this.V[Q]=Z,{evicted:!1,key:$,value:J};if(this.size<this.capacity)Q=this.size++;else Q=this.tail,this.tail=this.backward[Q],J=this.V[Q],Y=this.K[Q],delete this.items[Y];if(this.items[$]=Q,this.K[Q]=$,this.V[Q]=Z,this.forward[Q]=this.head,this.backward[this.head]=Q,this.head=Q,Y)return{evicted:!0,key:Y,value:J};else return null};d0.prototype.has=function($){return $ in this.items};d0.prototype.get=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.splayOnTop(Z),this.V[Z]};d0.prototype.peek=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.V[Z]};d0.prototype.forEach=function($,Z){Z=arguments.length>1?Z:this;var J=0,Y=this.size,Q=this.head,X=this.K,G=this.V,U=this.forward;while(J<Y)$.call(Z,G[Q],X[Q],this),Q=U[Q],J++};d0.prototype.keys=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.forward;return new YY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.values=function(){var $=0,Z=this.size,J=this.head,Y=this.V,Q=this.forward;return new YY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.entries=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.V,X=this.forward;return new YY(function(){if($>=Z)return{done:!0};var G=Y[J],U=Q[J];if($++,$<Z)J=X[J];return{done:!1,value:[G,U]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),J;while(J=Z.next(),!J.done)$.set(J.value[0],J.value[1]);return Object.defineProperty($,"constructor",{value:d0,enumerable:!1}),$};if(typeof Symbol<"u")d0.prototype[Symbol.for("nodejs.util.inspect.custom")]=d0.prototype.inspect;d0.from=function($,Z,J,Y){if(arguments.length<2){if(Y=Y9.guessLength($),typeof Y!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)Y=Z,Z=null,J=null;var Q=new d0(Z,J,Y);return Z9($,function(X,G){Q.set(G,X)}),Q};DX.exports=d0});var GY=i((kX,XY)=>{(function($,Z){function J(j,H){if(!j)throw Error(H||"Assertion failed")}function Y(j,H){j.super_=H;var O=function(){};O.prototype=H.prototype,j.prototype=new O,j.prototype.constructor=j}function Q(j,H,O){if(Q.isBN(j))return j;if(this.negative=0,this.words=null,this.length=0,this.red=null,j!==null){if(H==="le"||H==="be")O=H,H=10;this._init(j||0,H||10,O||"be")}}if(typeof $==="object")$.exports=Q;else Z.BN=Q;Q.BN=Q,Q.wordSize=26;var X;try{if(typeof window<"u"&&typeof window.Buffer<"u")X=window.Buffer;else X=K$("buffer").Buffer}catch(j){}Q.isBN=function(H){if(H instanceof Q)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===Q.wordSize&&Array.isArray(H.words)},Q.max=function(H,O){if(H.cmp(O)>0)return H;return O},Q.min=function(H,O){if(H.cmp(O)<0)return H;return O},Q.prototype._init=function(H,O,A){if(typeof H==="number")return this._initNumber(H,O,A);if(typeof H==="object")return this._initArray(H,O,A);if(O==="hex")O=16;J(O===(O|0)&&O>=2&&O<=36),H=H.toString().replace(/\s+/g,"");var F=0;if(H[0]==="-")F++,this.negative=1;if(F<H.length){if(O===16)this._parseHex(H,F,A);else if(this._parseBase(H,O,F),A==="le")this._initArray(this.toArray(),O,A)}},Q.prototype._initNumber=function(H,O,A){if(H<0)this.negative=1,H=-H;if(H<67108864)this.words=[H&67108863],this.length=1;else if(H<4503599627370496)this.words=[H&67108863,H/67108864&67108863],this.length=2;else J(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(A!=="le")return;this._initArray(this.toArray(),O,A)},Q.prototype._initArray=function(H,O,A){if(J(typeof H.length==="number"),H.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(H.length/3),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q,B,P=0;if(A==="be"){for(F=H.length-1,q=0;F>=0;F-=3)if(B=H[F]|H[F-1]<<8|H[F-2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}else if(A==="le"){for(F=0,q=0;F<H.length;F+=3)if(B=H[F]|H[F+1]<<8|H[F+2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}return this.strip()};function G(j,H){var O=j.charCodeAt(H);if(O>=65&&O<=70)return O-55;else if(O>=97&&O<=102)return O-87;else return O-48&15}function U(j,H,O){var A=G(j,O);if(O-1>=H)A|=G(j,O-1)<<4;return A}Q.prototype._parseHex=function(H,O,A){this.length=Math.ceil((H.length-O)/6),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q=0,B=0,P;if(A==="be")for(F=H.length-1;F>=O;F-=2)if(P=U(H,O,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8;else{var K=H.length-O;for(F=K%2===0?O+1:O;F<H.length;F+=2)if(P=U(H,O,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8}this.strip()};function V(j,H,O,A){var F=0,q=Math.min(j.length,O);for(var B=H;B<q;B++){var P=j.charCodeAt(B)-48;if(F*=A,P>=49)F+=P-49+10;else if(P>=17)F+=P-17+10;else F+=P}return F}Q.prototype._parseBase=function(H,O,A){this.words=[0],this.length=1;for(var F=0,q=1;q<=67108863;q*=O)F++;F--,q=q/O|0;var B=H.length-A,P=B%F,K=Math.min(B,B-P)+A,W=0;for(var R=A;R<K;R+=F)if(W=V(H,R,R+F,O),this.imuln(q),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W);if(P!==0){var v=1;W=V(H,R,H.length,O);for(R=0;R<P;R++)v*=O;if(this.imuln(v),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W)}this.strip()},Q.prototype.copy=function(H){H.words=Array(this.length);for(var O=0;O<this.length;O++)H.words[O]=this.words[O];H.length=this.length,H.negative=this.negative,H.red=this.red},Q.prototype.clone=function(){var H=new Q(null);return this.copy(H),H},Q.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},Q.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},Q.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},Q.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var M=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],z=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],_=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(Q.prototype.toString=function(H,O){H=H||10,O=O|0||1;var A;if(H===16||H==="hex"){A="";var F=0,q=0;for(var B=0;B<this.length;B++){var P=this.words[B],K=((P<<F|q)&16777215).toString(16);if(q=P>>>24-F&16777215,F+=2,F>=26)F-=26,B--;if(q!==0||B!==this.length-1)A=M[6-K.length]+K+A;else A=K+A}if(q!==0)A=q.toString(16)+A;while(A.length%O!==0)A="0"+A;if(this.negative!==0)A="-"+A;return A}if(H===(H|0)&&H>=2&&H<=36){var W=z[H],R=_[H];A="";var v=this.clone();v.negative=0;while(!v.isZero()){var f=v.modn(R).toString(H);if(v=v.idivn(R),!v.isZero())A=M[W-f.length]+f+A;else A=f+A}if(this.isZero())A="0"+A;while(A.length%O!==0)A="0"+A;if(this.negative!==0)A="-"+A;return A}J(!1,"Base should be between 2 and 36")},Q.prototype.toNumber=function(){var H=this.words[0];if(this.length===2)H+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)H+=4503599627370496+this.words[1]*67108864;else if(this.length>2)J(!1,"Number can only safely store up to 53 bits");return this.negative!==0?-H:H},Q.prototype.toJSON=function(){return this.toString(16)},Q.prototype.toBuffer=function(H,O){return J(typeof X<"u"),this.toArrayLike(X,H,O)},Q.prototype.toArray=function(H,O){return this.toArrayLike(Array,H,O)},Q.prototype.toArrayLike=function(H,O,A){var F=this.byteLength(),q=A||Math.max(1,F);J(F<=q,"byte array longer than desired length"),J(q>0,"Requested array length <= 0"),this.strip();var B=O==="le",P=new H(q),K,W,R=this.clone();if(!B){for(W=0;W<q-F;W++)P[W]=0;for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[q-W-1]=K}else{for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[W]=K;for(;W<q;W++)P[W]=0}return P},Math.clz32)Q.prototype._countBits=function(H){return 32-Math.clz32(H)};else Q.prototype._countBits=function(H){var O=H,A=0;if(O>=4096)A+=13,O>>>=13;if(O>=64)A+=7,O>>>=7;if(O>=8)A+=4,O>>>=4;if(O>=2)A+=2,O>>>=2;return A+O};Q.prototype._zeroBits=function(H){if(H===0)return 26;var O=H,A=0;if((O&8191)===0)A+=13,O>>>=13;if((O&127)===0)A+=7,O>>>=7;if((O&15)===0)A+=4,O>>>=4;if((O&3)===0)A+=2,O>>>=2;if((O&1)===0)A++;return A},Q.prototype.bitLength=function(){var H=this.words[this.length-1],O=this._countBits(H);return(this.length-1)*26+O};function L(j){var H=Array(j.bitLength());for(var O=0;O<H.length;O++){var A=O/26|0,F=O%26;H[O]=(j.words[A]&1<<F)>>>F}return H}Q.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var O=0;O<this.length;O++){var A=this._zeroBits(this.words[O]);if(H+=A,A!==26)break}return H},Q.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},Q.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},Q.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},Q.prototype.isNeg=function(){return this.negative!==0},Q.prototype.neg=function(){return this.clone().ineg()},Q.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},Q.prototype.iuor=function(H){while(this.length<H.length)this.words[this.length++]=0;for(var O=0;O<H.length;O++)this.words[O]=this.words[O]|H.words[O];return this.strip()},Q.prototype.ior=function(H){return J((this.negative|H.negative)===0),this.iuor(H)},Q.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},Q.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},Q.prototype.iuand=function(H){var O;if(this.length>H.length)O=H;else O=this;for(var A=0;A<O.length;A++)this.words[A]=this.words[A]&H.words[A];return this.length=O.length,this.strip()},Q.prototype.iand=function(H){return J((this.negative|H.negative)===0),this.iuand(H)},Q.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},Q.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},Q.prototype.iuxor=function(H){var O,A;if(this.length>H.length)O=this,A=H;else O=H,A=this;for(var F=0;F<A.length;F++)this.words[F]=O.words[F]^A.words[F];if(this!==O)for(;F<O.length;F++)this.words[F]=O.words[F];return this.length=O.length,this.strip()},Q.prototype.ixor=function(H){return J((this.negative|H.negative)===0),this.iuxor(H)},Q.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},Q.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},Q.prototype.inotn=function(H){J(typeof H==="number"&&H>=0);var O=Math.ceil(H/26)|0,A=H%26;if(this._expand(O),A>0)O--;for(var F=0;F<O;F++)this.words[F]=~this.words[F]&67108863;if(A>0)this.words[F]=~this.words[F]&67108863>>26-A;return this.strip()},Q.prototype.notn=function(H){return this.clone().inotn(H)},Q.prototype.setn=function(H,O){J(typeof H==="number"&&H>=0);var A=H/26|0,F=H%26;if(this._expand(A+1),O)this.words[A]=this.words[A]|1<<F;else this.words[A]=this.words[A]&~(1<<F);return this.strip()},Q.prototype.iadd=function(H){var O;if(this.negative!==0&&H.negative===0)return this.negative=0,O=this.isub(H),this.negative^=1,this._normSign();else if(this.negative===0&&H.negative!==0)return H.negative=0,O=this.isub(H),H.negative=1,O._normSign();var A,F;if(this.length>H.length)A=this,F=H;else A=H,F=this;var q=0;for(var B=0;B<F.length;B++)O=(A.words[B]|0)+(F.words[B]|0)+q,this.words[B]=O&67108863,q=O>>>26;for(;q!==0&&B<A.length;B++)O=(A.words[B]|0)+q,this.words[B]=O&67108863,q=O>>>26;if(this.length=A.length,q!==0)this.words[this.length]=q,this.length++;else if(A!==this)for(;B<A.length;B++)this.words[B]=A.words[B];return this},Q.prototype.add=function(H){var O;if(H.negative!==0&&this.negative===0)return H.negative=0,O=this.sub(H),H.negative^=1,O;else if(H.negative===0&&this.negative!==0)return this.negative=0,O=H.sub(this),this.negative=1,O;if(this.length>H.length)return this.clone().iadd(H);return H.clone().iadd(this)},Q.prototype.isub=function(H){if(H.negative!==0){H.negative=0;var O=this.iadd(H);return H.negative=1,O._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(H),this.negative=1,this._normSign();var A=this.cmp(H);if(A===0)return this.negative=0,this.length=1,this.words[0]=0,this;var F,q;if(A>0)F=this,q=H;else F=H,q=this;var B=0;for(var P=0;P<q.length;P++)O=(F.words[P]|0)-(q.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;for(;B!==0&&P<F.length;P++)O=(F.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;if(B===0&&P<F.length&&F!==this)for(;P<F.length;P++)this.words[P]=F.words[P];if(this.length=Math.max(this.length,P),F!==this)this.negative=1;return this.strip()},Q.prototype.sub=function(H){return this.clone().isub(H)};function C(j,H,O){O.negative=H.negative^j.negative;var A=j.length+H.length|0;O.length=A,A=A-1|0;var F=j.words[0]|0,q=H.words[0]|0,B=F*q,P=B&67108863,K=B/67108864|0;O.words[0]=P;for(var W=1;W<A;W++){var R=K>>>26,v=K&67108863,f=Math.min(W,H.length-1);for(var y=Math.max(0,W-j.length+1);y<=f;y++){var d=W-y|0;F=j.words[d]|0,q=H.words[y]|0,B=F*q+v,R+=B/67108864|0,v=B&67108863}O.words[W]=v|0,K=R|0}if(K!==0)O.words[W]=K|0;else O.length--;return O.strip()}var E=function(H,O,A){var F=H.words,q=O.words,B=A.words,P=0,K,W,R,v=F[0]|0,f=v&8191,y=v>>>13,d=F[1]|0,t=d&8191,J0=d>>>13,F$=F[2]|0,Y0=F$&8191,G0=F$>>>13,DY=F[3]|0,W0=DY&8191,U0=DY>>>13,kY=F[4]|0,V0=kY&8191,O0=kY>>>13,vY=F[5]|0,_0=vY&8191,M0=vY>>>13,xY=F[6]|0,A0=xY&8191,z0=xY>>>13,fY=F[7]|0,F0=fY&8191,K0=fY>>>13,yY=F[8]|0,R0=yY&8191,q0=yY>>>13,gY=F[9]|0,I0=gY&8191,j0=gY>>>13,hY=q[0]|0,L0=hY&8191,B0=hY>>>13,bY=q[1]|0,P0=bY&8191,C0=bY>>>13,cY=q[2]|0,E0=cY&8191,w0=cY>>>13,pY=q[3]|0,S0=pY&8191,T0=pY>>>13,uY=q[4]|0,N0=uY&8191,D0=uY>>>13,mY=q[5]|0,k0=mY&8191,v0=mY>>>13,dY=q[6]|0,x0=dY&8191,f0=dY>>>13,nY=q[7]|0,y0=nY&8191,g0=nY>>>13,sY=q[8]|0,h0=sY&8191,b0=sY>>>13,oY=q[9]|0,c0=oY&8191,p0=oY>>>13;A.negative=H.negative^O.negative,A.length=19,K=Math.imul(f,L0),W=Math.imul(f,B0),W=W+Math.imul(y,L0)|0,R=Math.imul(y,B0);var eZ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(eZ>>>26)|0,eZ&=67108863,K=Math.imul(t,L0),W=Math.imul(t,B0),W=W+Math.imul(J0,L0)|0,R=Math.imul(J0,B0),K=K+Math.imul(f,P0)|0,W=W+Math.imul(f,C0)|0,W=W+Math.imul(y,P0)|0,R=R+Math.imul(y,C0)|0;var $J=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+($J>>>26)|0,$J&=67108863,K=Math.imul(Y0,L0),W=Math.imul(Y0,B0),W=W+Math.imul(G0,L0)|0,R=Math.imul(G0,B0),K=K+Math.imul(t,P0)|0,W=W+Math.imul(t,C0)|0,W=W+Math.imul(J0,P0)|0,R=R+Math.imul(J0,C0)|0,K=K+Math.imul(f,E0)|0,W=W+Math.imul(f,w0)|0,W=W+Math.imul(y,E0)|0,R=R+Math.imul(y,w0)|0;var ZJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(ZJ>>>26)|0,ZJ&=67108863,K=Math.imul(W0,L0),W=Math.imul(W0,B0),W=W+Math.imul(U0,L0)|0,R=Math.imul(U0,B0),K=K+Math.imul(Y0,P0)|0,W=W+Math.imul(Y0,C0)|0,W=W+Math.imul(G0,P0)|0,R=R+Math.imul(G0,C0)|0,K=K+Math.imul(t,E0)|0,W=W+Math.imul(t,w0)|0,W=W+Math.imul(J0,E0)|0,R=R+Math.imul(J0,w0)|0,K=K+Math.imul(f,S0)|0,W=W+Math.imul(f,T0)|0,W=W+Math.imul(y,S0)|0,R=R+Math.imul(y,T0)|0;var JJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(JJ>>>26)|0,JJ&=67108863,K=Math.imul(V0,L0),W=Math.imul(V0,B0),W=W+Math.imul(O0,L0)|0,R=Math.imul(O0,B0),K=K+Math.imul(W0,P0)|0,W=W+Math.imul(W0,C0)|0,W=W+Math.imul(U0,P0)|0,R=R+Math.imul(U0,C0)|0,K=K+Math.imul(Y0,E0)|0,W=W+Math.imul(Y0,w0)|0,W=W+Math.imul(G0,E0)|0,R=R+Math.imul(G0,w0)|0,K=K+Math.imul(t,S0)|0,W=W+Math.imul(t,T0)|0,W=W+Math.imul(J0,S0)|0,R=R+Math.imul(J0,T0)|0,K=K+Math.imul(f,N0)|0,W=W+Math.imul(f,D0)|0,W=W+Math.imul(y,N0)|0,R=R+Math.imul(y,D0)|0;var YJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(YJ>>>26)|0,YJ&=67108863,K=Math.imul(_0,L0),W=Math.imul(_0,B0),W=W+Math.imul(M0,L0)|0,R=Math.imul(M0,B0),K=K+Math.imul(V0,P0)|0,W=W+Math.imul(V0,C0)|0,W=W+Math.imul(O0,P0)|0,R=R+Math.imul(O0,C0)|0,K=K+Math.imul(W0,E0)|0,W=W+Math.imul(W0,w0)|0,W=W+Math.imul(U0,E0)|0,R=R+Math.imul(U0,w0)|0,K=K+Math.imul(Y0,S0)|0,W=W+Math.imul(Y0,T0)|0,W=W+Math.imul(G0,S0)|0,R=R+Math.imul(G0,T0)|0,K=K+Math.imul(t,N0)|0,W=W+Math.imul(t,D0)|0,W=W+Math.imul(J0,N0)|0,R=R+Math.imul(J0,D0)|0,K=K+Math.imul(f,k0)|0,W=W+Math.imul(f,v0)|0,W=W+Math.imul(y,k0)|0,R=R+Math.imul(y,v0)|0;var QJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(QJ>>>26)|0,QJ&=67108863,K=Math.imul(A0,L0),W=Math.imul(A0,B0),W=W+Math.imul(z0,L0)|0,R=Math.imul(z0,B0),K=K+Math.imul(_0,P0)|0,W=W+Math.imul(_0,C0)|0,W=W+Math.imul(M0,P0)|0,R=R+Math.imul(M0,C0)|0,K=K+Math.imul(V0,E0)|0,W=W+Math.imul(V0,w0)|0,W=W+Math.imul(O0,E0)|0,R=R+Math.imul(O0,w0)|0,K=K+Math.imul(W0,S0)|0,W=W+Math.imul(W0,T0)|0,W=W+Math.imul(U0,S0)|0,R=R+Math.imul(U0,T0)|0,K=K+Math.imul(Y0,N0)|0,W=W+Math.imul(Y0,D0)|0,W=W+Math.imul(G0,N0)|0,R=R+Math.imul(G0,D0)|0,K=K+Math.imul(t,k0)|0,W=W+Math.imul(t,v0)|0,W=W+Math.imul(J0,k0)|0,R=R+Math.imul(J0,v0)|0,K=K+Math.imul(f,x0)|0,W=W+Math.imul(f,f0)|0,W=W+Math.imul(y,x0)|0,R=R+Math.imul(y,f0)|0;var XJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(XJ>>>26)|0,XJ&=67108863,K=Math.imul(F0,L0),W=Math.imul(F0,B0),W=W+Math.imul(K0,L0)|0,R=Math.imul(K0,B0),K=K+Math.imul(A0,P0)|0,W=W+Math.imul(A0,C0)|0,W=W+Math.imul(z0,P0)|0,R=R+Math.imul(z0,C0)|0,K=K+Math.imul(_0,E0)|0,W=W+Math.imul(_0,w0)|0,W=W+Math.imul(M0,E0)|0,R=R+Math.imul(M0,w0)|0,K=K+Math.imul(V0,S0)|0,W=W+Math.imul(V0,T0)|0,W=W+Math.imul(O0,S0)|0,R=R+Math.imul(O0,T0)|0,K=K+Math.imul(W0,N0)|0,W=W+Math.imul(W0,D0)|0,W=W+Math.imul(U0,N0)|0,R=R+Math.imul(U0,D0)|0,K=K+Math.imul(Y0,k0)|0,W=W+Math.imul(Y0,v0)|0,W=W+Math.imul(G0,k0)|0,R=R+Math.imul(G0,v0)|0,K=K+Math.imul(t,x0)|0,W=W+Math.imul(t,f0)|0,W=W+Math.imul(J0,x0)|0,R=R+Math.imul(J0,f0)|0,K=K+Math.imul(f,y0)|0,W=W+Math.imul(f,g0)|0,W=W+Math.imul(y,y0)|0,R=R+Math.imul(y,g0)|0;var GJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(GJ>>>26)|0,GJ&=67108863,K=Math.imul(R0,L0),W=Math.imul(R0,B0),W=W+Math.imul(q0,L0)|0,R=Math.imul(q0,B0),K=K+Math.imul(F0,P0)|0,W=W+Math.imul(F0,C0)|0,W=W+Math.imul(K0,P0)|0,R=R+Math.imul(K0,C0)|0,K=K+Math.imul(A0,E0)|0,W=W+Math.imul(A0,w0)|0,W=W+Math.imul(z0,E0)|0,R=R+Math.imul(z0,w0)|0,K=K+Math.imul(_0,S0)|0,W=W+Math.imul(_0,T0)|0,W=W+Math.imul(M0,S0)|0,R=R+Math.imul(M0,T0)|0,K=K+Math.imul(V0,N0)|0,W=W+Math.imul(V0,D0)|0,W=W+Math.imul(O0,N0)|0,R=R+Math.imul(O0,D0)|0,K=K+Math.imul(W0,k0)|0,W=W+Math.imul(W0,v0)|0,W=W+Math.imul(U0,k0)|0,R=R+Math.imul(U0,v0)|0,K=K+Math.imul(Y0,x0)|0,W=W+Math.imul(Y0,f0)|0,W=W+Math.imul(G0,x0)|0,R=R+Math.imul(G0,f0)|0,K=K+Math.imul(t,y0)|0,W=W+Math.imul(t,g0)|0,W=W+Math.imul(J0,y0)|0,R=R+Math.imul(J0,g0)|0,K=K+Math.imul(f,h0)|0,W=W+Math.imul(f,b0)|0,W=W+Math.imul(y,h0)|0,R=R+Math.imul(y,b0)|0;var HJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(HJ>>>26)|0,HJ&=67108863,K=Math.imul(I0,L0),W=Math.imul(I0,B0),W=W+Math.imul(j0,L0)|0,R=Math.imul(j0,B0),K=K+Math.imul(R0,P0)|0,W=W+Math.imul(R0,C0)|0,W=W+Math.imul(q0,P0)|0,R=R+Math.imul(q0,C0)|0,K=K+Math.imul(F0,E0)|0,W=W+Math.imul(F0,w0)|0,W=W+Math.imul(K0,E0)|0,R=R+Math.imul(K0,w0)|0,K=K+Math.imul(A0,S0)|0,W=W+Math.imul(A0,T0)|0,W=W+Math.imul(z0,S0)|0,R=R+Math.imul(z0,T0)|0,K=K+Math.imul(_0,N0)|0,W=W+Math.imul(_0,D0)|0,W=W+Math.imul(M0,N0)|0,R=R+Math.imul(M0,D0)|0,K=K+Math.imul(V0,k0)|0,W=W+Math.imul(V0,v0)|0,W=W+Math.imul(O0,k0)|0,R=R+Math.imul(O0,v0)|0,K=K+Math.imul(W0,x0)|0,W=W+Math.imul(W0,f0)|0,W=W+Math.imul(U0,x0)|0,R=R+Math.imul(U0,f0)|0,K=K+Math.imul(Y0,y0)|0,W=W+Math.imul(Y0,g0)|0,W=W+Math.imul(G0,y0)|0,R=R+Math.imul(G0,g0)|0,K=K+Math.imul(t,h0)|0,W=W+Math.imul(t,b0)|0,W=W+Math.imul(J0,h0)|0,R=R+Math.imul(J0,b0)|0,K=K+Math.imul(f,c0)|0,W=W+Math.imul(f,p0)|0,W=W+Math.imul(y,c0)|0,R=R+Math.imul(y,p0)|0;var WJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(WJ>>>26)|0,WJ&=67108863,K=Math.imul(I0,P0),W=Math.imul(I0,C0),W=W+Math.imul(j0,P0)|0,R=Math.imul(j0,C0),K=K+Math.imul(R0,E0)|0,W=W+Math.imul(R0,w0)|0,W=W+Math.imul(q0,E0)|0,R=R+Math.imul(q0,w0)|0,K=K+Math.imul(F0,S0)|0,W=W+Math.imul(F0,T0)|0,W=W+Math.imul(K0,S0)|0,R=R+Math.imul(K0,T0)|0,K=K+Math.imul(A0,N0)|0,W=W+Math.imul(A0,D0)|0,W=W+Math.imul(z0,N0)|0,R=R+Math.imul(z0,D0)|0,K=K+Math.imul(_0,k0)|0,W=W+Math.imul(_0,v0)|0,W=W+Math.imul(M0,k0)|0,R=R+Math.imul(M0,v0)|0,K=K+Math.imul(V0,x0)|0,W=W+Math.imul(V0,f0)|0,W=W+Math.imul(O0,x0)|0,R=R+Math.imul(O0,f0)|0,K=K+Math.imul(W0,y0)|0,W=W+Math.imul(W0,g0)|0,W=W+Math.imul(U0,y0)|0,R=R+Math.imul(U0,g0)|0,K=K+Math.imul(Y0,h0)|0,W=W+Math.imul(Y0,b0)|0,W=W+Math.imul(G0,h0)|0,R=R+Math.imul(G0,b0)|0,K=K+Math.imul(t,c0)|0,W=W+Math.imul(t,p0)|0,W=W+Math.imul(J0,c0)|0,R=R+Math.imul(J0,p0)|0;var UJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(UJ>>>26)|0,UJ&=67108863,K=Math.imul(I0,E0),W=Math.imul(I0,w0),W=W+Math.imul(j0,E0)|0,R=Math.imul(j0,w0),K=K+Math.imul(R0,S0)|0,W=W+Math.imul(R0,T0)|0,W=W+Math.imul(q0,S0)|0,R=R+Math.imul(q0,T0)|0,K=K+Math.imul(F0,N0)|0,W=W+Math.imul(F0,D0)|0,W=W+Math.imul(K0,N0)|0,R=R+Math.imul(K0,D0)|0,K=K+Math.imul(A0,k0)|0,W=W+Math.imul(A0,v0)|0,W=W+Math.imul(z0,k0)|0,R=R+Math.imul(z0,v0)|0,K=K+Math.imul(_0,x0)|0,W=W+Math.imul(_0,f0)|0,W=W+Math.imul(M0,x0)|0,R=R+Math.imul(M0,f0)|0,K=K+Math.imul(V0,y0)|0,W=W+Math.imul(V0,g0)|0,W=W+Math.imul(O0,y0)|0,R=R+Math.imul(O0,g0)|0,K=K+Math.imul(W0,h0)|0,W=W+Math.imul(W0,b0)|0,W=W+Math.imul(U0,h0)|0,R=R+Math.imul(U0,b0)|0,K=K+Math.imul(Y0,c0)|0,W=W+Math.imul(Y0,p0)|0,W=W+Math.imul(G0,c0)|0,R=R+Math.imul(G0,p0)|0;var VJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(VJ>>>26)|0,VJ&=67108863,K=Math.imul(I0,S0),W=Math.imul(I0,T0),W=W+Math.imul(j0,S0)|0,R=Math.imul(j0,T0),K=K+Math.imul(R0,N0)|0,W=W+Math.imul(R0,D0)|0,W=W+Math.imul(q0,N0)|0,R=R+Math.imul(q0,D0)|0,K=K+Math.imul(F0,k0)|0,W=W+Math.imul(F0,v0)|0,W=W+Math.imul(K0,k0)|0,R=R+Math.imul(K0,v0)|0,K=K+Math.imul(A0,x0)|0,W=W+Math.imul(A0,f0)|0,W=W+Math.imul(z0,x0)|0,R=R+Math.imul(z0,f0)|0,K=K+Math.imul(_0,y0)|0,W=W+Math.imul(_0,g0)|0,W=W+Math.imul(M0,y0)|0,R=R+Math.imul(M0,g0)|0,K=K+Math.imul(V0,h0)|0,W=W+Math.imul(V0,b0)|0,W=W+Math.imul(O0,h0)|0,R=R+Math.imul(O0,b0)|0,K=K+Math.imul(W0,c0)|0,W=W+Math.imul(W0,p0)|0,W=W+Math.imul(U0,c0)|0,R=R+Math.imul(U0,p0)|0;var OJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(OJ>>>26)|0,OJ&=67108863,K=Math.imul(I0,N0),W=Math.imul(I0,D0),W=W+Math.imul(j0,N0)|0,R=Math.imul(j0,D0),K=K+Math.imul(R0,k0)|0,W=W+Math.imul(R0,v0)|0,W=W+Math.imul(q0,k0)|0,R=R+Math.imul(q0,v0)|0,K=K+Math.imul(F0,x0)|0,W=W+Math.imul(F0,f0)|0,W=W+Math.imul(K0,x0)|0,R=R+Math.imul(K0,f0)|0,K=K+Math.imul(A0,y0)|0,W=W+Math.imul(A0,g0)|0,W=W+Math.imul(z0,y0)|0,R=R+Math.imul(z0,g0)|0,K=K+Math.imul(_0,h0)|0,W=W+Math.imul(_0,b0)|0,W=W+Math.imul(M0,h0)|0,R=R+Math.imul(M0,b0)|0,K=K+Math.imul(V0,c0)|0,W=W+Math.imul(V0,p0)|0,W=W+Math.imul(O0,c0)|0,R=R+Math.imul(O0,p0)|0;var _J=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(_J>>>26)|0,_J&=67108863,K=Math.imul(I0,k0),W=Math.imul(I0,v0),W=W+Math.imul(j0,k0)|0,R=Math.imul(j0,v0),K=K+Math.imul(R0,x0)|0,W=W+Math.imul(R0,f0)|0,W=W+Math.imul(q0,x0)|0,R=R+Math.imul(q0,f0)|0,K=K+Math.imul(F0,y0)|0,W=W+Math.imul(F0,g0)|0,W=W+Math.imul(K0,y0)|0,R=R+Math.imul(K0,g0)|0,K=K+Math.imul(A0,h0)|0,W=W+Math.imul(A0,b0)|0,W=W+Math.imul(z0,h0)|0,R=R+Math.imul(z0,b0)|0,K=K+Math.imul(_0,c0)|0,W=W+Math.imul(_0,p0)|0,W=W+Math.imul(M0,c0)|0,R=R+Math.imul(M0,p0)|0;var MJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(MJ>>>26)|0,MJ&=67108863,K=Math.imul(I0,x0),W=Math.imul(I0,f0),W=W+Math.imul(j0,x0)|0,R=Math.imul(j0,f0),K=K+Math.imul(R0,y0)|0,W=W+Math.imul(R0,g0)|0,W=W+Math.imul(q0,y0)|0,R=R+Math.imul(q0,g0)|0,K=K+Math.imul(F0,h0)|0,W=W+Math.imul(F0,b0)|0,W=W+Math.imul(K0,h0)|0,R=R+Math.imul(K0,b0)|0,K=K+Math.imul(A0,c0)|0,W=W+Math.imul(A0,p0)|0,W=W+Math.imul(z0,c0)|0,R=R+Math.imul(z0,p0)|0;var AJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(AJ>>>26)|0,AJ&=67108863,K=Math.imul(I0,y0),W=Math.imul(I0,g0),W=W+Math.imul(j0,y0)|0,R=Math.imul(j0,g0),K=K+Math.imul(R0,h0)|0,W=W+Math.imul(R0,b0)|0,W=W+Math.imul(q0,h0)|0,R=R+Math.imul(q0,b0)|0,K=K+Math.imul(F0,c0)|0,W=W+Math.imul(F0,p0)|0,W=W+Math.imul(K0,c0)|0,R=R+Math.imul(K0,p0)|0;var zJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(zJ>>>26)|0,zJ&=67108863,K=Math.imul(I0,h0),W=Math.imul(I0,b0),W=W+Math.imul(j0,h0)|0,R=Math.imul(j0,b0),K=K+Math.imul(R0,c0)|0,W=W+Math.imul(R0,p0)|0,W=W+Math.imul(q0,c0)|0,R=R+Math.imul(q0,p0)|0;var FJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(FJ>>>26)|0,FJ&=67108863,K=Math.imul(I0,c0),W=Math.imul(I0,p0),W=W+Math.imul(j0,c0)|0,R=Math.imul(j0,p0);var KJ=(P+K|0)+((W&8191)<<13)|0;if(P=(R+(W>>>13)|0)+(KJ>>>26)|0,KJ&=67108863,B[0]=eZ,B[1]=$J,B[2]=ZJ,B[3]=JJ,B[4]=YJ,B[5]=QJ,B[6]=XJ,B[7]=GJ,B[8]=HJ,B[9]=WJ,B[10]=UJ,B[11]=VJ,B[12]=OJ,B[13]=_J,B[14]=MJ,B[15]=AJ,B[16]=zJ,B[17]=FJ,B[18]=KJ,P!==0)B[19]=P,A.length++;return A};if(!Math.imul)E=C;function S(j,H,O){O.negative=H.negative^j.negative,O.length=j.length+H.length;var A=0,F=0;for(var q=0;q<O.length-1;q++){var B=F;F=0;var P=A&67108863,K=Math.min(q,H.length-1);for(var W=Math.max(0,q-j.length+1);W<=K;W++){var R=q-W,v=j.words[R]|0,f=H.words[W]|0,y=v*f,d=y&67108863;B=B+(y/67108864|0)|0,d=d+P|0,P=d&67108863,B=B+(d>>>26)|0,F+=B>>>26,B&=67108863}O.words[q]=P,A=B,B=F}if(A!==0)O.words[q]=A;else O.length--;return O.strip()}function D(j,H,O){var A=new N;return A.mulp(j,H,O)}Q.prototype.mulTo=function(H,O){var A,F=this.length+H.length;if(this.length===10&&H.length===10)A=E(this,H,O);else if(F<63)A=C(this,H,O);else if(F<1024)A=S(this,H,O);else A=D(this,H,O);return A};function N(j,H){this.x=j,this.y=H}N.prototype.makeRBT=function(H){var O=Array(H),A=Q.prototype._countBits(H)-1;for(var F=0;F<H;F++)O[F]=this.revBin(F,A,H);return O},N.prototype.revBin=function(H,O,A){if(H===0||H===A-1)return H;var F=0;for(var q=0;q<O;q++)F|=(H&1)<<O-q-1,H>>=1;return F},N.prototype.permute=function(H,O,A,F,q,B){for(var P=0;P<B;P++)F[P]=O[H[P]],q[P]=A[H[P]]},N.prototype.transform=function(H,O,A,F,q,B){this.permute(B,H,O,A,F,q);for(var P=1;P<q;P<<=1){var K=P<<1,W=Math.cos(2*Math.PI/K),R=Math.sin(2*Math.PI/K);for(var v=0;v<q;v+=K){var f=W,y=R;for(var d=0;d<P;d++){var t=A[v+d],J0=F[v+d],F$=A[v+d+P],Y0=F[v+d+P],G0=f*F$-y*Y0;if(Y0=f*Y0+y*F$,F$=G0,A[v+d]=t+F$,F[v+d]=J0+Y0,A[v+d+P]=t-F$,F[v+d+P]=J0-Y0,d!==K)G0=W*f-R*y,y=W*y+R*f,f=G0}}}},N.prototype.guessLen13b=function(H,O){var A=Math.max(O,H)|1,F=A&1,q=0;for(A=A/2|0;A;A=A>>>1)q++;return 1<<q+1+F},N.prototype.conjugate=function(H,O,A){if(A<=1)return;for(var F=0;F<A/2;F++){var q=H[F];H[F]=H[A-F-1],H[A-F-1]=q,q=O[F],O[F]=-O[A-F-1],O[A-F-1]=-q}},N.prototype.normalize13b=function(H,O){var A=0;for(var F=0;F<O/2;F++){var q=Math.round(H[2*F+1]/O)*8192+Math.round(H[2*F]/O)+A;if(H[F]=q&67108863,q<67108864)A=0;else A=q/67108864|0}return H},N.prototype.convert13b=function(H,O,A,F){var q=0;for(var B=0;B<O;B++)q=q+(H[B]|0),A[2*B]=q&8191,q=q>>>13,A[2*B+1]=q&8191,q=q>>>13;for(B=2*O;B<F;++B)A[B]=0;J(q===0),J((q&-8192)===0)},N.prototype.stub=function(H){var O=Array(H);for(var A=0;A<H;A++)O[A]=0;return O},N.prototype.mulp=function(H,O,A){var F=2*this.guessLen13b(H.length,O.length),q=this.makeRBT(F),B=this.stub(F),P=Array(F),K=Array(F),W=Array(F),R=Array(F),v=Array(F),f=Array(F),y=A.words;y.length=F,this.convert13b(H.words,H.length,P,F),this.convert13b(O.words,O.length,R,F),this.transform(P,B,K,W,F,q),this.transform(R,B,v,f,F,q);for(var d=0;d<F;d++){var t=K[d]*v[d]-W[d]*f[d];W[d]=K[d]*f[d]+W[d]*v[d],K[d]=t}return this.conjugate(K,W,F),this.transform(K,W,y,B,F,q),this.conjugate(y,B,F),this.normalize13b(y,F),A.negative=H.negative^O.negative,A.length=H.length+O.length,A.strip()},Q.prototype.mul=function(H){var O=new Q(null);return O.words=Array(this.length+H.length),this.mulTo(H,O)},Q.prototype.mulf=function(H){var O=new Q(null);return O.words=Array(this.length+H.length),D(this,H,O)},Q.prototype.imul=function(H){return this.clone().mulTo(H,this)},Q.prototype.imuln=function(H){J(typeof H==="number"),J(H<67108864);var O=0;for(var A=0;A<this.length;A++){var F=(this.words[A]|0)*H,q=(F&67108863)+(O&67108863);O>>=26,O+=F/67108864|0,O+=q>>>26,this.words[A]=q&67108863}if(O!==0)this.words[A]=O,this.length++;return this.length=H===0?1:this.length,this},Q.prototype.muln=function(H){return this.clone().imuln(H)},Q.prototype.sqr=function(){return this.mul(this)},Q.prototype.isqr=function(){return this.imul(this.clone())},Q.prototype.pow=function(H){var O=L(H);if(O.length===0)return new Q(1);var A=this;for(var F=0;F<O.length;F++,A=A.sqr())if(O[F]!==0)break;if(++F<O.length)for(var q=A.sqr();F<O.length;F++,q=q.sqr()){if(O[F]===0)continue;A=A.mul(q)}return A},Q.prototype.iushln=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26,F=67108863>>>26-O<<26-O,q;if(O!==0){var B=0;for(q=0;q<this.length;q++){var P=this.words[q]&F,K=(this.words[q]|0)-P<<O;this.words[q]=K|B,B=P>>>26-O}if(B)this.words[q]=B,this.length++}if(A!==0){for(q=this.length-1;q>=0;q--)this.words[q+A]=this.words[q];for(q=0;q<A;q++)this.words[q]=0;this.length+=A}return this.strip()},Q.prototype.ishln=function(H){return J(this.negative===0),this.iushln(H)},Q.prototype.iushrn=function(H,O,A){J(typeof H==="number"&&H>=0);var F;if(O)F=(O-O%26)/26;else F=0;var q=H%26,B=Math.min((H-q)/26,this.length),P=67108863^67108863>>>q<<q,K=A;if(F-=B,F=Math.max(0,F),K){for(var W=0;W<B;W++)K.words[W]=this.words[W];K.length=B}if(B===0);else if(this.length>B){this.length-=B;for(W=0;W<this.length;W++)this.words[W]=this.words[W+B]}else this.words[0]=0,this.length=1;var R=0;for(W=this.length-1;W>=0&&(R!==0||W>=F);W--){var v=this.words[W]|0;this.words[W]=R<<26-q|v>>>q,R=v&P}if(K&&R!==0)K.words[K.length++]=R;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},Q.prototype.ishrn=function(H,O,A){return J(this.negative===0),this.iushrn(H,O,A)},Q.prototype.shln=function(H){return this.clone().ishln(H)},Q.prototype.ushln=function(H){return this.clone().iushln(H)},Q.prototype.shrn=function(H){return this.clone().ishrn(H)},Q.prototype.ushrn=function(H){return this.clone().iushrn(H)},Q.prototype.testn=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26,F=1<<O;if(this.length<=A)return!1;var q=this.words[A];return!!(q&F)},Q.prototype.imaskn=function(H){J(typeof H==="number"&&H>=0);var O=H%26,A=(H-O)/26;if(J(this.negative===0,"imaskn works only with positive numbers"),this.length<=A)return this;if(O!==0)A++;if(this.length=Math.min(A,this.length),O!==0){var F=67108863^67108863>>>O<<O;this.words[this.length-1]&=F}return this.strip()},Q.prototype.maskn=function(H){return this.clone().imaskn(H)},Q.prototype.iaddn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.isubn(-H);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<H)return this.words[0]=H-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(H),this.negative=1,this}return this._iaddn(H)},Q.prototype._iaddn=function(H){this.words[0]+=H;for(var O=0;O<this.length&&this.words[O]>=67108864;O++)if(this.words[O]-=67108864,O===this.length-1)this.words[O+1]=1;else this.words[O+1]++;return this.length=Math.max(this.length,O+1),this},Q.prototype.isubn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.iaddn(-H);if(this.negative!==0)return this.negative=0,this.iaddn(H),this.negative=1,this;if(this.words[0]-=H,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var O=0;O<this.length&&this.words[O]<0;O++)this.words[O]+=67108864,this.words[O+1]-=1;return this.strip()},Q.prototype.addn=function(H){return this.clone().iaddn(H)},Q.prototype.subn=function(H){return this.clone().isubn(H)},Q.prototype.iabs=function(){return this.negative=0,this},Q.prototype.abs=function(){return this.clone().iabs()},Q.prototype._ishlnsubmul=function(H,O,A){var F=H.length+A,q;this._expand(F);var B,P=0;for(q=0;q<H.length;q++){B=(this.words[q+A]|0)+P;var K=(H.words[q]|0)*O;B-=K&67108863,P=(B>>26)-(K/67108864|0),this.words[q+A]=B&67108863}for(;q<this.length-A;q++)B=(this.words[q+A]|0)+P,P=B>>26,this.words[q+A]=B&67108863;if(P===0)return this.strip();J(P===-1),P=0;for(q=0;q<this.length;q++)B=-(this.words[q]|0)+P,P=B>>26,this.words[q]=B&67108863;return this.negative=1,this.strip()},Q.prototype._wordDiv=function(H,O){var A=this.length-H.length,F=this.clone(),q=H,B=q.words[q.length-1]|0,P=this._countBits(B);if(A=26-P,A!==0)q=q.ushln(A),F.iushln(A),B=q.words[q.length-1]|0;var K=F.length-q.length,W;if(O!=="mod"){W=new Q(null),W.length=K+1,W.words=Array(W.length);for(var R=0;R<W.length;R++)W.words[R]=0}var v=F.clone()._ishlnsubmul(q,1,K);if(v.negative===0){if(F=v,W)W.words[K]=1}for(var f=K-1;f>=0;f--){var y=(F.words[q.length+f]|0)*67108864+(F.words[q.length+f-1]|0);y=Math.min(y/B|0,67108863),F._ishlnsubmul(q,y,f);while(F.negative!==0)if(y--,F.negative=0,F._ishlnsubmul(q,1,f),!F.isZero())F.negative^=1;if(W)W.words[f]=y}if(W)W.strip();if(F.strip(),O!=="div"&&A!==0)F.iushrn(A);return{div:W||null,mod:F}},Q.prototype.divmod=function(H,O,A){if(J(!H.isZero()),this.isZero())return{div:new Q(0),mod:new Q(0)};var F,q,B;if(this.negative!==0&&H.negative===0){if(B=this.neg().divmod(H,O),O!=="mod")F=B.div.neg();if(O!=="div"){if(q=B.mod.neg(),A&&q.negative!==0)q.iadd(H)}return{div:F,mod:q}}if(this.negative===0&&H.negative!==0){if(B=this.divmod(H.neg(),O),O!=="mod")F=B.div.neg();return{div:F,mod:B.mod}}if((this.negative&H.negative)!==0){if(B=this.neg().divmod(H.neg(),O),O!=="div"){if(q=B.mod.neg(),A&&q.negative!==0)q.isub(H)}return{div:B.div,mod:q}}if(H.length>this.length||this.cmp(H)<0)return{div:new Q(0),mod:this};if(H.length===1){if(O==="div")return{div:this.divn(H.words[0]),mod:null};if(O==="mod")return{div:null,mod:new Q(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new Q(this.modn(H.words[0]))}}return this._wordDiv(H,O)},Q.prototype.div=function(H){return this.divmod(H,"div",!1).div},Q.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},Q.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},Q.prototype.divRound=function(H){var O=this.divmod(H);if(O.mod.isZero())return O.div;var A=O.div.negative!==0?O.mod.isub(H):O.mod,F=H.ushrn(1),q=H.andln(1),B=A.cmp(F);if(B<0||q===1&&B===0)return O.div;return O.div.negative!==0?O.div.isubn(1):O.div.iaddn(1)},Q.prototype.modn=function(H){J(H<=67108863);var O=67108864%H,A=0;for(var F=this.length-1;F>=0;F--)A=(O*A+(this.words[F]|0))%H;return A},Q.prototype.idivn=function(H){J(H<=67108863);var O=0;for(var A=this.length-1;A>=0;A--){var F=(this.words[A]|0)+O*67108864;this.words[A]=F/H|0,O=F%H}return this.strip()},Q.prototype.divn=function(H){return this.clone().idivn(H)},Q.prototype.egcd=function(H){J(H.negative===0),J(!H.isZero());var O=this,A=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var F=new Q(1),q=new Q(0),B=new Q(0),P=new Q(1),K=0;while(O.isEven()&&A.isEven())O.iushrn(1),A.iushrn(1),++K;var W=A.clone(),R=O.clone();while(!O.isZero()){for(var v=0,f=1;(O.words[0]&f)===0&&v<26;++v,f<<=1);if(v>0){O.iushrn(v);while(v-- >0){if(F.isOdd()||q.isOdd())F.iadd(W),q.isub(R);F.iushrn(1),q.iushrn(1)}}for(var y=0,d=1;(A.words[0]&d)===0&&y<26;++y,d<<=1);if(y>0){A.iushrn(y);while(y-- >0){if(B.isOdd()||P.isOdd())B.iadd(W),P.isub(R);B.iushrn(1),P.iushrn(1)}}if(O.cmp(A)>=0)O.isub(A),F.isub(B),q.isub(P);else A.isub(O),B.isub(F),P.isub(q)}return{a:B,b:P,gcd:A.iushln(K)}},Q.prototype._invmp=function(H){J(H.negative===0),J(!H.isZero());var O=this,A=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var F=new Q(1),q=new Q(0),B=A.clone();while(O.cmpn(1)>0&&A.cmpn(1)>0){for(var P=0,K=1;(O.words[0]&K)===0&&P<26;++P,K<<=1);if(P>0){O.iushrn(P);while(P-- >0){if(F.isOdd())F.iadd(B);F.iushrn(1)}}for(var W=0,R=1;(A.words[0]&R)===0&&W<26;++W,R<<=1);if(W>0){A.iushrn(W);while(W-- >0){if(q.isOdd())q.iadd(B);q.iushrn(1)}}if(O.cmp(A)>=0)O.isub(A),F.isub(q);else A.isub(O),q.isub(F)}var v;if(O.cmpn(1)===0)v=F;else v=q;if(v.cmpn(0)<0)v.iadd(H);return v},Q.prototype.gcd=function(H){if(this.isZero())return H.abs();if(H.isZero())return this.abs();var O=this.clone(),A=H.clone();O.negative=0,A.negative=0;for(var F=0;O.isEven()&&A.isEven();F++)O.iushrn(1),A.iushrn(1);do{while(O.isEven())O.iushrn(1);while(A.isEven())A.iushrn(1);var q=O.cmp(A);if(q<0){var B=O;O=A,A=B}else if(q===0||A.cmpn(1)===0)break;O.isub(A)}while(!0);return A.iushln(F)},Q.prototype.invm=function(H){return this.egcd(H).a.umod(H)},Q.prototype.isEven=function(){return(this.words[0]&1)===0},Q.prototype.isOdd=function(){return(this.words[0]&1)===1},Q.prototype.andln=function(H){return this.words[0]&H},Q.prototype.bincn=function(H){J(typeof H==="number");var O=H%26,A=(H-O)/26,F=1<<O;if(this.length<=A)return this._expand(A+1),this.words[A]|=F,this;var q=F;for(var B=A;q!==0&&B<this.length;B++){var P=this.words[B]|0;P+=q,q=P>>>26,P&=67108863,this.words[B]=P}if(q!==0)this.words[B]=q,this.length++;return this},Q.prototype.isZero=function(){return this.length===1&&this.words[0]===0},Q.prototype.cmpn=function(H){var O=H<0;if(this.negative!==0&&!O)return-1;if(this.negative===0&&O)return 1;this.strip();var A;if(this.length>1)A=1;else{if(O)H=-H;J(H<=67108863,"Number is too big");var F=this.words[0]|0;A=F===H?0:F<H?-1:1}if(this.negative!==0)return-A|0;return A},Q.prototype.cmp=function(H){if(this.negative!==0&&H.negative===0)return-1;if(this.negative===0&&H.negative!==0)return 1;var O=this.ucmp(H);if(this.negative!==0)return-O|0;return O},Q.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var O=0;for(var A=this.length-1;A>=0;A--){var F=this.words[A]|0,q=H.words[A]|0;if(F===q)continue;if(F<q)O=-1;else if(F>q)O=1;break}return O},Q.prototype.gtn=function(H){return this.cmpn(H)===1},Q.prototype.gt=function(H){return this.cmp(H)===1},Q.prototype.gten=function(H){return this.cmpn(H)>=0},Q.prototype.gte=function(H){return this.cmp(H)>=0},Q.prototype.ltn=function(H){return this.cmpn(H)===-1},Q.prototype.lt=function(H){return this.cmp(H)===-1},Q.prototype.lten=function(H){return this.cmpn(H)<=0},Q.prototype.lte=function(H){return this.cmp(H)<=0},Q.prototype.eqn=function(H){return this.cmpn(H)===0},Q.prototype.eq=function(H){return this.cmp(H)===0},Q.red=function(H){return new r(H)},Q.prototype.toRed=function(H){return J(!this.red,"Already a number in reduction context"),J(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},Q.prototype.fromRed=function(){return J(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},Q.prototype._forceRed=function(H){return this.red=H,this},Q.prototype.forceRed=function(H){return J(!this.red,"Already a number in reduction context"),this._forceRed(H)},Q.prototype.redAdd=function(H){return J(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},Q.prototype.redIAdd=function(H){return J(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},Q.prototype.redSub=function(H){return J(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},Q.prototype.redISub=function(H){return J(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},Q.prototype.redShl=function(H){return J(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},Q.prototype.redMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},Q.prototype.redIMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},Q.prototype.redSqr=function(){return J(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},Q.prototype.redISqr=function(){return J(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},Q.prototype.redSqrt=function(){return J(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},Q.prototype.redInvm=function(){return J(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},Q.prototype.redNeg=function(){return J(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},Q.prototype.redPow=function(H){return J(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var w={k256:null,p224:null,p192:null,p25519:null};function k(j,H){this.name=j,this.p=new Q(H,16),this.n=this.p.bitLength(),this.k=new Q(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}k.prototype._tmp=function(){var H=new Q(null);return H.words=Array(Math.ceil(this.n/13)),H},k.prototype.ireduce=function(H){var O=H,A;do this.split(O,this.tmp),O=this.imulK(O),O=O.iadd(this.tmp),A=O.bitLength();while(A>this.n);var F=A<this.n?-1:O.ucmp(this.p);if(F===0)O.words[0]=0,O.length=1;else if(F>0)O.isub(this.p);else if(O.strip!==void 0)O.strip();else O._strip();return O},k.prototype.split=function(H,O){H.iushrn(this.n,0,O)},k.prototype.imulK=function(H){return H.imul(this.k)};function b(){k.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}Y(b,k),b.prototype.split=function(H,O){var A=4194303,F=Math.min(H.length,9);for(var q=0;q<F;q++)O.words[q]=H.words[q];if(O.length=F,H.length<=9){H.words[0]=0,H.length=1;return}var B=H.words[9];O.words[O.length++]=B&A;for(q=10;q<H.length;q++){var P=H.words[q]|0;H.words[q-10]=(P&A)<<4|B>>>22,B=P}if(B>>>=22,H.words[q-10]=B,B===0&&H.length>10)H.length-=10;else H.length-=9},b.prototype.imulK=function(H){H.words[H.length]=0,H.words[H.length+1]=0,H.length+=2;var O=0;for(var A=0;A<H.length;A++){var F=H.words[A]|0;O+=F*977,H.words[A]=O&67108863,O=F*64+(O/67108864|0)}if(H.words[H.length-1]===0){if(H.length--,H.words[H.length-1]===0)H.length--}return H};function x(){k.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}Y(x,k);function m(){k.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}Y(m,k);function a(){k.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}Y(a,k),a.prototype.imulK=function(H){var O=0;for(var A=0;A<H.length;A++){var F=(H.words[A]|0)*19+O,q=F&67108863;F>>>=26,H.words[A]=q,O=F}if(O!==0)H.words[H.length++]=O;return H},Q._prime=function(H){if(w[H])return w[H];var O;if(H==="k256")O=new b;else if(H==="p224")O=new x;else if(H==="p192")O=new m;else if(H==="p25519")O=new a;else throw Error("Unknown prime "+H);return w[H]=O,O};function r(j){if(typeof j==="string"){var H=Q._prime(j);this.m=H.p,this.prime=H}else J(j.gtn(1),"modulus must be greater than 1"),this.m=j,this.prime=null}r.prototype._verify1=function(H){J(H.negative===0,"red works only with positives"),J(H.red,"red works only with red numbers")},r.prototype._verify2=function(H,O){J((H.negative|O.negative)===0,"red works only with positives"),J(H.red&&H.red===O.red,"red works only with red numbers")},r.prototype.imod=function(H){if(this.prime)return this.prime.ireduce(H)._forceRed(this);return H.umod(this.m)._forceRed(this)},r.prototype.neg=function(H){if(H.isZero())return H.clone();return this.m.sub(H)._forceRed(this)},r.prototype.add=function(H,O){this._verify2(H,O);var A=H.add(O);if(A.cmp(this.m)>=0)A.isub(this.m);return A._forceRed(this)},r.prototype.iadd=function(H,O){this._verify2(H,O);var A=H.iadd(O);if(A.cmp(this.m)>=0)A.isub(this.m);return A},r.prototype.sub=function(H,O){this._verify2(H,O);var A=H.sub(O);if(A.cmpn(0)<0)A.iadd(this.m);return A._forceRed(this)},r.prototype.isub=function(H,O){this._verify2(H,O);var A=H.isub(O);if(A.cmpn(0)<0)A.iadd(this.m);return A},r.prototype.shl=function(H,O){return this._verify1(H),this.imod(H.ushln(O))},r.prototype.imul=function(H,O){return this._verify2(H,O),this.imod(H.imul(O))},r.prototype.mul=function(H,O){return this._verify2(H,O),this.imod(H.mul(O))},r.prototype.isqr=function(H){return this.imul(H,H.clone())},r.prototype.sqr=function(H){return this.mul(H,H)},r.prototype.sqrt=function(H){if(H.isZero())return H.clone();var O=this.m.andln(3);if(J(O%2===1),O===3){var A=this.m.add(new Q(1)).iushrn(2);return this.pow(H,A)}var F=this.m.subn(1),q=0;while(!F.isZero()&&F.andln(1)===0)q++,F.iushrn(1);J(!F.isZero());var B=new Q(1).toRed(this),P=B.redNeg(),K=this.m.subn(1).iushrn(1),W=this.m.bitLength();W=new Q(2*W*W).toRed(this);while(this.pow(W,K).cmp(P)!==0)W.redIAdd(P);var R=this.pow(W,F),v=this.pow(H,F.addn(1).iushrn(1)),f=this.pow(H,F),y=q;while(f.cmp(B)!==0){var d=f;for(var t=0;d.cmp(B)!==0;t++)d=d.redSqr();J(t<y);var J0=this.pow(R,new Q(1).iushln(y-t-1));v=v.redMul(J0),R=J0.redSqr(),f=f.redMul(R),y=t}return v},r.prototype.invm=function(H){var O=H._invmp(this.m);if(O.negative!==0)return O.negative=0,this.imod(O).redNeg();else return this.imod(O)},r.prototype.pow=function(H,O){if(O.isZero())return new Q(1).toRed(this);if(O.cmpn(1)===0)return H.clone();var A=4,F=Array(1<<A);F[0]=new Q(1).toRed(this),F[1]=H;for(var q=2;q<F.length;q++)F[q]=this.mul(F[q-1],H);var B=F[0],P=0,K=0,W=O.bitLength()%26;if(W===0)W=26;for(q=O.length-1;q>=0;q--){var R=O.words[q];for(var v=W-1;v>=0;v--){var f=R>>v&1;if(B!==F[0])B=this.sqr(B);if(f===0&&P===0){K=0;continue}if(P<<=1,P|=f,K++,K!==A&&(q!==0||v!==0))continue;B=this.mul(B,F[P]),K=0,P=0}W=26}return B},r.prototype.convertTo=function(H){var O=H.umod(this.m);return O===H?O.clone():O},r.prototype.convertFrom=function(H){var O=H.clone();return O.red=null,O},Q.mont=function(H){return new Z0(H)};function Z0(j){if(r.call(this,j),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new Q(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}Y(Z0,r),Z0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},Z0.prototype.convertFrom=function(H){var O=this.imod(H.mul(this.rinv));return O.red=null,O},Z0.prototype.imul=function(H,O){if(H.isZero()||O.isZero())return H.words[0]=0,H.length=1,H;var A=H.imul(O),F=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=A.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.mul=function(H,O){if(H.isZero()||O.isZero())return new Q(0)._forceRed(this);var A=H.mul(O),F=A.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=A.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.invm=function(H){var O=this.imod(H._invmp(this.m).mul(this.r2));return O._forceRed(this)}})(typeof XY>"u"||XY,kX)});var vX=i((I7,HY)=>{if(typeof Object.create==="function")HY.exports=function(Z,J){if(J)Z.super_=J,Z.prototype=Object.create(J.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else HY.exports=function(Z,J){if(J){Z.super_=J;var Y=function(){};Y.prototype=J.prototype,Z.prototype=new Y,Z.prototype.constructor=Z}}});var w$=i((j7,WY)=>{try{if(gZ=K$("util"),typeof gZ.inherits!=="function")throw"";WY.exports=gZ.inherits}catch($){WY.exports=vX()}var gZ});var bZ=i((L7,xX)=>{var hZ=K$("buffer"),l$=hZ.Buffer,a0={},e0;for(e0 in hZ){if(!hZ.hasOwnProperty(e0))continue;if(e0==="SlowBuffer"||e0==="Buffer")continue;a0[e0]=hZ[e0]}var r$=a0.Buffer={};for(e0 in l$){if(!l$.hasOwnProperty(e0))continue;if(e0==="allocUnsafe"||e0==="allocUnsafeSlow")continue;r$[e0]=l$[e0]}a0.Buffer.prototype=l$.prototype;if(!r$.from||r$.from===Uint8Array.from)r$.from=function($,Z,J){if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type '+typeof $);if($&&typeof $.length>"u")throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);return l$($,Z,J)};if(!r$.alloc)r$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError('The "size" argument must be of type number. Received type '+typeof $);if($<0||$>=2147483648)throw RangeError('The value "'+$+'" is invalid for option "size"');var Y=l$($);if(!Z||Z.length===0)Y.fill(0);else if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);return Y};if(!a0.kStringMaxLength)try{a0.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch($){}if(!a0.constants){if(a0.constants={MAX_LENGTH:a0.kMaxLength},a0.kStringMaxLength)a0.constants.MAX_STRING_LENGTH=a0.kStringMaxLength}xX.exports=a0});var cZ=i((X9)=>{var Q9=w$();function $$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}X9.Reporter=$$;$$.prototype.isError=function(Z){return Z instanceof i$};$$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};$$.prototype.restore=function(Z){let J=this._reporterState;J.obj=Z.obj,J.path=J.path.slice(0,Z.pathLen)};$$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};$$.prototype.exitKey=function(Z){let J=this._reporterState;J.path=J.path.slice(0,Z-1)};$$.prototype.leaveKey=function(Z,J,Y){let Q=this._reporterState;if(this.exitKey(Z),Q.obj!==null)Q.obj[J]=Y};$$.prototype.path=function(){return this._reporterState.path.join("/")};$$.prototype.enterObject=function(){let Z=this._reporterState,J=Z.obj;return Z.obj={},J};$$.prototype.leaveObject=function(Z){let J=this._reporterState,Y=J.obj;return J.obj=Z,Y};$$.prototype.error=function(Z){let J,Y=this._reporterState,Q=Z instanceof i$;if(Q)J=Z;else J=new i$(Y.path.map(function(X){return"["+JSON.stringify(X)+"]"}).join(""),Z.message||Z,Z.stack);if(!Y.options.partial)throw J;if(!Q)Y.errors.push(J);return J};$$.prototype.wrapResult=function(Z){let J=this._reporterState;if(!J.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:J.errors}};function i$($,Z){this.path=$,this.rethrow(Z)}Q9(i$,Error);i$.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,i$);if(!this.stack)try{throw Error(this.message)}catch(J){this.stack=J.stack}return this}});var e$=i((W9)=>{var H9=w$(),pZ=cZ().Reporter,t$=bZ().Buffer;function Z$($,Z){if(pZ.call(this,Z),!t$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}H9(Z$,pZ);W9.DecoderBuffer=Z$;Z$.isDecoderBuffer=function(Z){if(Z instanceof Z$)return!0;return typeof Z==="object"&&t$.isBuffer(Z.base)&&Z.constructor.name==="DecoderBuffer"&&typeof Z.offset==="number"&&typeof Z.length==="number"&&typeof Z.save==="function"&&typeof Z.restore==="function"&&typeof Z.isEmpty==="function"&&typeof Z.readUInt8==="function"&&typeof Z.skip==="function"&&typeof Z.raw==="function"};Z$.prototype.save=function(){return{offset:this.offset,reporter:pZ.prototype.save.call(this)}};Z$.prototype.restore=function(Z){let J=new Z$(this.base);return J.offset=Z.offset,J.length=this.offset,this.offset=Z.offset,pZ.prototype.restore.call(this,Z.reporter),J};Z$.prototype.isEmpty=function(){return this.offset===this.length};Z$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};Z$.prototype.skip=function(Z,J){if(!(this.offset+Z<=this.length))return this.error(J||"DecoderBuffer overrun");let Y=new Z$(this.base);return Y._reporterState=this._reporterState,Y.offset=this.offset,Y.length=this.offset+Z,this.offset+=Z,Y};Z$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function a$($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(J){if(!a$.isEncoderBuffer(J))J=new a$(J,Z);return this.length+=J.length,J},this);else if(typeof $==="number"){if(!(0<=$&&$<=255))return Z.error("non-byte EncoderBuffer value");this.value=$,this.length=1}else if(typeof $==="string")this.value=$,this.length=t$.byteLength($);else if(t$.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}W9.EncoderBuffer=a$;a$.isEncoderBuffer=function(Z){if(Z instanceof a$)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};a$.prototype.join=function(Z,J){if(!Z)Z=t$.alloc(this.length);if(!J)J=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(Y){Y.join(Z,J),J+=Y.length});else{if(typeof this.value==="number")Z[J]=this.value;else if(typeof this.value==="string")Z.write(this.value,J);else if(t$.isBuffer(this.value))this.value.copy(Z,J);J+=this.length}return Z}});var gX=i((C7,yX)=>{yX.exports=fX;function fX($,Z){if(!$)throw Error(Z||"Assertion failed")}fX.equal=function(Z,J,Y){if(Z!=J)throw Error(Y||"Assertion failed: "+Z+" != "+J)}});var uZ=i((E7,bX)=>{var O9=cZ().Reporter,_9=e$().EncoderBuffer,M9=e$().DecoderBuffer,l0=gX(),hX=["seq","seqof","set","setof","objid","bool","gentime","utctime","null_","enum","int","objDesc","bitstr","bmpstr","charstr","genstr","graphstr","ia5str","iso646str","numstr","octstr","printstr","t61str","unistr","utf8str","videostr"],A9=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(hX),z9=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function e($,Z,J){let Y={};if(this._baseState=Y,Y.name=J,Y.enc=$,Y.parent=Z||null,Y.children=null,Y.tag=null,Y.args=null,Y.reverseArgs=null,Y.choice=null,Y.optional=!1,Y.any=!1,Y.obj=!1,Y.use=null,Y.useDecoder=null,Y.key=null,Y.default=null,Y.explicit=null,Y.implicit=null,Y.contains=null,!Y.parent)Y.children=[],this._wrap()}bX.exports=e;var F9=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];e.prototype.clone=function(){let Z=this._baseState,J={};F9.forEach(function(Q){J[Q]=Z[Q]});let Y=new this.constructor(J.parent);return Y._baseState=J,Y};e.prototype._wrap=function(){let Z=this._baseState;A9.forEach(function(J){this[J]=function(){let Q=new this.constructor(this);return Z.children.push(Q),Q[J].apply(Q,arguments)}},this)};e.prototype._init=function(Z){let J=this._baseState;l0(J.parent===null),Z.call(this),J.children=J.children.filter(function(Y){return Y._baseState.parent===this},this),l0.equal(J.children.length,1,"Root node can have only one child")};e.prototype._useArgs=function(Z){let J=this._baseState,Y=Z.filter(function(Q){return Q instanceof this.constructor},this);if(Z=Z.filter(function(Q){return!(Q instanceof this.constructor)},this),Y.length!==0)l0(J.children===null),J.children=Y,Y.forEach(function(Q){Q._baseState.parent=this},this);if(Z.length!==0)l0(J.args===null),J.args=Z,J.reverseArgs=Z.map(function(Q){if(typeof Q!=="object"||Q.constructor!==Object)return Q;let X={};return Object.keys(Q).forEach(function(G){if(G==(G|0))G|=0;let U=Q[G];X[U]=G}),X})};z9.forEach(function($){e.prototype[$]=function(){let J=this._baseState;throw Error($+" not implemented for encoding: "+J.enc)}});hX.forEach(function($){e.prototype[$]=function(){let J=this._baseState,Y=Array.prototype.slice.call(arguments);return l0(J.tag===null),J.tag=$,this._useArgs(Y),this}});e.prototype.use=function(Z){l0(Z);let J=this._baseState;return l0(J.use===null),J.use=Z,this};e.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};e.prototype.def=function(Z){let J=this._baseState;return l0(J.default===null),J.default=Z,J.optional=!0,this};e.prototype.explicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.explicit=Z,this};e.prototype.implicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.implicit=Z,this};e.prototype.obj=function(){let Z=this._baseState,J=Array.prototype.slice.call(arguments);if(Z.obj=!0,J.length!==0)this._useArgs(J);return this};e.prototype.key=function(Z){let J=this._baseState;return l0(J.key===null),J.key=Z,this};e.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};e.prototype.choice=function(Z){let J=this._baseState;return l0(J.choice===null),J.choice=Z,this._useArgs(Object.keys(Z).map(function(Y){return Z[Y]})),this};e.prototype.contains=function(Z){let J=this._baseState;return l0(J.use===null),J.contains=Z,this};e.prototype._decode=function(Z,J){let Y=this._baseState;if(Y.parent===null)return Z.wrapResult(Y.children[0]._decode(Z,J));let Q=Y.default,X=!0,G=null;if(Y.key!==null)G=Z.enterKey(Y.key);if(Y.optional){let V=null;if(Y.explicit!==null)V=Y.explicit;else if(Y.implicit!==null)V=Y.implicit;else if(Y.tag!==null)V=Y.tag;if(V===null&&!Y.any){let M=Z.save();try{if(Y.choice===null)this._decodeGeneric(Y.tag,Z,J);else this._decodeChoice(Z,J);X=!0}catch(z){X=!1}Z.restore(M)}else if(X=this._peekTag(Z,V,Y.any),Z.isError(X))return X}let U;if(Y.obj&&X)U=Z.enterObject();if(X){if(Y.explicit!==null){let M=this._decodeTag(Z,Y.explicit);if(Z.isError(M))return M;Z=M}let V=Z.offset;if(Y.use===null&&Y.choice===null){let M;if(Y.any)M=Z.save();let z=this._decodeTag(Z,Y.implicit!==null?Y.implicit:Y.tag,Y.any);if(Z.isError(z))return z;if(Y.any)Q=Z.raw(M);else Z=z}if(J&&J.track&&Y.tag!==null)J.track(Z.path(),V,Z.length,"tagged");if(J&&J.track&&Y.tag!==null)J.track(Z.path(),Z.offset,Z.length,"content");if(Y.any);else if(Y.choice===null)Q=this._decodeGeneric(Y.tag,Z,J);else Q=this._decodeChoice(Z,J);if(Z.isError(Q))return Q;if(!Y.any&&Y.choice===null&&Y.children!==null)Y.children.forEach(function(z){z._decode(Z,J)});if(Y.contains&&(Y.tag==="octstr"||Y.tag==="bitstr")){let M=new M9(Q);Q=this._getUse(Y.contains,Z._reporterState.obj)._decode(M,J)}}if(Y.obj&&X)Q=Z.leaveObject(U);if(Y.key!==null&&(Q!==null||X===!0))Z.leaveKey(G,Y.key,Q);else if(G!==null)Z.exitKey(G);return Q};e.prototype._decodeGeneric=function(Z,J,Y){let Q=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(J,Z,Q.args[0],Y);else if(/str$/.test(Z))return this._decodeStr(J,Z,Y);else if(Z==="objid"&&Q.args)return this._decodeObjid(J,Q.args[0],Q.args[1],Y);else if(Z==="objid")return this._decodeObjid(J,null,null,Y);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(J,Z,Y);else if(Z==="null_")return this._decodeNull(J,Y);else if(Z==="bool")return this._decodeBool(J,Y);else if(Z==="objDesc")return this._decodeStr(J,Z,Y);else if(Z==="int"||Z==="enum")return this._decodeInt(J,Q.args&&Q.args[0],Y);if(Q.use!==null)return this._getUse(Q.use,J._reporterState.obj)._decode(J,Y);else return J.error("unknown tag: "+Z)};e.prototype._getUse=function(Z,J){let Y=this._baseState;if(Y.useDecoder=this._use(Z,J),l0(Y.useDecoder._baseState.parent===null),Y.useDecoder=Y.useDecoder._baseState.children[0],Y.implicit!==Y.useDecoder._baseState.implicit)Y.useDecoder=Y.useDecoder.clone(),Y.useDecoder._baseState.implicit=Y.implicit;return Y.useDecoder};e.prototype._decodeChoice=function(Z,J){let Y=this._baseState,Q=null,X=!1;if(Object.keys(Y.choice).some(function(G){let U=Z.save(),V=Y.choice[G];try{let M=V._decode(Z,J);if(Z.isError(M))return!1;Q={type:G,value:M},X=!0}catch(M){return Z.restore(U),!1}return!0},this),!X)return Z.error("Choice not matched");return Q};e.prototype._createEncoderBuffer=function(Z){return new _9(Z,this.reporter)};e.prototype._encode=function(Z,J,Y){let Q=this._baseState;if(Q.default!==null&&Q.default===Z)return;let X=this._encodeValue(Z,J,Y);if(X===void 0)return;if(this._skipDefault(X,J,Y))return;return X};e.prototype._encodeValue=function(Z,J,Y){let Q=this._baseState;if(Q.parent===null)return Q.children[0]._encode(Z,J||new O9);let X=null;if(this.reporter=J,Q.optional&&Z===void 0)if(Q.default!==null)Z=Q.default;else return;let G=null,U=!1;if(Q.any)X=this._createEncoderBuffer(Z);else if(Q.choice)X=this._encodeChoice(Z,J);else if(Q.contains)G=this._getUse(Q.contains,Y)._encode(Z,J),U=!0;else if(Q.children)G=Q.children.map(function(V){if(V._baseState.tag==="null_")return V._encode(null,J,Z);if(V._baseState.key===null)return J.error("Child should have a key");let M=J.enterKey(V._baseState.key);if(typeof Z!=="object")return J.error("Child expected, but input is not object");let z=V._encode(Z[V._baseState.key],J,Z);return J.leaveKey(M),z},this).filter(function(V){return V}),G=this._createEncoderBuffer(G);else if(Q.tag==="seqof"||Q.tag==="setof"){if(!(Q.args&&Q.args.length===1))return J.error("Too many args for : "+Q.tag);if(!Array.isArray(Z))return J.error("seqof/setof, but data is not Array");let V=this.clone();V._baseState.implicit=null,G=this._createEncoderBuffer(Z.map(function(M){let z=this._baseState;return this._getUse(z.args[0],Z)._encode(M,J)},V))}else if(Q.use!==null)X=this._getUse(Q.use,Y)._encode(Z,J);else G=this._encodePrimitive(Q.tag,Z),U=!0;if(!Q.any&&Q.choice===null){let V=Q.implicit!==null?Q.implicit:Q.tag,M=Q.implicit===null?"universal":"context";if(V===null){if(Q.use===null)J.error("Tag could be omitted only for .use()")}else if(Q.use===null)X=this._encodeComposite(V,U,M,G)}if(Q.explicit!==null)X=this._encodeComposite(Q.explicit,!1,"context",X);return X};e.prototype._encodeChoice=function(Z,J){let Y=this._baseState,Q=Y.choice[Z.type];if(!Q)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(Y.choice)));return Q._encode(Z.value,J)};e.prototype._encodePrimitive=function(Z,J){let Y=this._baseState;if(/str$/.test(Z))return this._encodeStr(J,Z);else if(Z==="objid"&&Y.args)return this._encodeObjid(J,Y.reverseArgs[0],Y.args[1]);else if(Z==="objid")return this._encodeObjid(J,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(J,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(J,Y.args&&Y.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(J);else if(Z==="objDesc")return this._encodeStr(J,Z);else throw Error("Unsupported tag: "+Z)};e.prototype._isNumstr=function(Z){return/^[0-9 ]*$/.test(Z)};e.prototype._isPrintstr=function(Z){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(Z)}});var mZ=i((K9)=>{function cX($){let Z={};return Object.keys($).forEach(function(J){if((J|0)==J)J=J|0;let Y=$[J];Z[Y]=J}),Z}K9.tagClass={0:"universal",1:"application",2:"context",3:"private"};K9.tagClassByName=cX(K9.tagClass);K9.tag={0:"end",1:"bool",2:"int",3:"bitstr",4:"octstr",5:"null_",6:"objid",7:"objDesc",8:"external",9:"real",10:"enum",11:"embed",12:"utf8str",13:"relativeOid",16:"seq",17:"set",18:"numstr",19:"printstr",20:"t61str",21:"videostr",22:"ia5str",23:"utctime",24:"gentime",25:"graphstr",26:"iso646str",27:"genstr",28:"unistr",29:"charstr",30:"bmpstr"};K9.tagByName=cX(K9.tag)});var VY=i((S7,nX)=>{var I9=w$(),A$=bZ().Buffer,mX=uZ(),UY=mZ();function dX($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}nX.exports=dX;dX.prototype.encode=function(Z,J){return this.tree._encode(Z,J).join()};function Y$($){mX.call(this,"der",$)}I9(Y$,mX);Y$.prototype._encodeComposite=function(Z,J,Y,Q){let X=j9(Z,J,Y,this.reporter);if(Q.length<128){let V=A$.alloc(2);return V[0]=X,V[1]=Q.length,this._createEncoderBuffer([V,Q])}let G=1;for(let V=Q.length;V>=256;V>>=8)G++;let U=A$.alloc(2+G);U[0]=X,U[1]=128|G;for(let V=1+G,M=Q.length;M>0;V--,M>>=8)U[V]=M&255;return this._createEncoderBuffer([U,Q])};Y$.prototype._encodeStr=function(Z,J){if(J==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(J==="bmpstr"){let Y=A$.alloc(Z.length*2);for(let Q=0;Q<Z.length;Q++)Y.writeUInt16BE(Z.charCodeAt(Q),Q*2);return this._createEncoderBuffer(Y)}else if(J==="numstr"){if(!this._isNumstr(Z))return this.reporter.error("Encoding of string type: numstr supports only digits and space");return this._createEncoderBuffer(Z)}else if(J==="printstr"){if(!this._isPrintstr(Z))return this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark");return this._createEncoderBuffer(Z)}else if(/str$/.test(J))return this._createEncoderBuffer(Z);else if(J==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+J+" unsupported")};Y$.prototype._encodeObjid=function(Z,J,Y){if(typeof Z==="string"){if(!J)return this.reporter.error("string objid given, but no values map found");if(!J.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=J[Z].split(/[\s.]+/g);for(let U=0;U<Z.length;U++)Z[U]|=0}else if(Array.isArray(Z)){Z=Z.slice();for(let U=0;U<Z.length;U++)Z[U]|=0}if(!Array.isArray(Z))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(Z));if(!Y){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let Q=0;for(let U=0;U<Z.length;U++){let V=Z[U];for(Q++;V>=128;V>>=7)Q++}let X=A$.alloc(Q),G=X.length-1;for(let U=Z.length-1;U>=0;U--){let V=Z[U];X[G--]=V&127;while((V>>=7)>0)X[G--]=128|V&127}return this._createEncoderBuffer(X)};function J$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,J){let Y,Q=new Date(Z);if(J==="gentime")Y=[J$(Q.getUTCFullYear()),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else if(J==="utctime")Y=[J$(Q.getUTCFullYear()%100),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+J+" time is not supported yet");return this._encodeStr(Y,"octstr")};Y$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Y$.prototype._encodeInt=function(Z,J){if(typeof Z==="string"){if(!J)return this.reporter.error("String int or enum given, but no values map");if(!J.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=J[Z]}if(typeof Z!=="number"&&!A$.isBuffer(Z)){let X=Z.toArray();if(!Z.sign&&X[0]&128)X.unshift(0);Z=A$.from(X)}if(A$.isBuffer(Z)){let X=Z.length;if(Z.length===0)X++;let G=A$.alloc(X);if(Z.copy(G),Z.length===0)G[0]=0;return this._createEncoderBuffer(G)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let Y=1;for(let X=Z;X>=256;X>>=8)Y++;let Q=Array(Y);for(let X=Q.length-1;X>=0;X--)Q[X]=Z&255,Z>>=8;if(Q[0]&128)Q.unshift(0);return this._createEncoderBuffer(A$.from(Q))};Y$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Y$.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getEncoder("der").tree};Y$.prototype._skipDefault=function(Z,J,Y){let Q=this._baseState,X;if(Q.default===null)return!1;let G=Z.join();if(Q.defaultBuffer===void 0)Q.defaultBuffer=this._encodeValue(Q.default,J,Y).join();if(G.length!==Q.defaultBuffer.length)return!1;for(X=0;X<G.length;X++)if(G[X]!==Q.defaultBuffer[X])return!1;return!0};function j9($,Z,J,Y){let Q;if($==="seqof")$="seq";else if($==="setof")$="set";if(UY.tagByName.hasOwnProperty($))Q=UY.tagByName[$];else if(typeof $==="number"&&($|0)===$)Q=$;else return Y.error("Unknown tag: "+$);if(Q>=31)return Y.error("Multi-octet tag encoding unsupported");if(!Z)Q|=32;return Q|=UY.tagClassByName[J||"universal"]<<6,Q}});var oX=i((T7,sX)=>{var L9=w$(),OY=VY();function _Y($){OY.call(this,$),this.enc="pem"}L9(_Y,OY);sX.exports=_Y;_Y.prototype.encode=function(Z,J){let Q=OY.prototype.encode.call(this,Z).toString("base64"),X=["-----BEGIN "+J.label+"-----"];for(let G=0;G<Q.length;G+=64)X.push(Q.slice(G,G+64));return X.push("-----END "+J.label+"-----"),X.join(`
|
|
6
|
+
`)}});var MY=i((rX)=>{var lX=rX;lX.der=VY();lX.pem=oX()});var zY=i((D7,ZG)=>{var B9=w$(),P9=GY(),iX=e$().DecoderBuffer,aX=uZ(),tX=mZ();function eX($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}ZG.exports=eX;eX.prototype.decode=function(Z,J){if(!iX.isDecoderBuffer(Z))Z=new iX(Z,J);return this.tree._decode(Z,J)};function i0($){aX.call(this,"der",$)}B9(i0,aX);i0.prototype._peekTag=function(Z,J,Y){if(Z.isEmpty())return!1;let Q=Z.save(),X=AY(Z,'Failed to peek tag: "'+J+'"');if(Z.isError(X))return X;return Z.restore(Q),X.tag===J||X.tagStr===J||X.tagStr+"of"===J||Y};i0.prototype._decodeTag=function(Z,J,Y){let Q=AY(Z,'Failed to decode tag of "'+J+'"');if(Z.isError(Q))return Q;let X=$G(Z,Q.primitive,'Failed to get length of "'+J+'"');if(Z.isError(X))return X;if(!Y&&Q.tag!==J&&Q.tagStr!==J&&Q.tagStr+"of"!==J)return Z.error('Failed to match tag: "'+J+'"');if(Q.primitive||X!==null)return Z.skip(X,'Failed to match body of: "'+J+'"');let G=Z.save(),U=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(U))return U;return X=Z.offset-G.offset,Z.restore(G),Z.skip(X,'Failed to match body of: "'+J+'"')};i0.prototype._skipUntilEnd=function(Z,J){for(;;){let Y=AY(Z,J);if(Z.isError(Y))return Y;let Q=$G(Z,Y.primitive,J);if(Z.isError(Q))return Q;let X;if(Y.primitive||Q!==null)X=Z.skip(Q);else X=this._skipUntilEnd(Z,J);if(Z.isError(X))return X;if(Y.tagStr==="end")break}};i0.prototype._decodeList=function(Z,J,Y,Q){let X=[];while(!Z.isEmpty()){let G=this._peekTag(Z,"end");if(Z.isError(G))return G;let U=Y.decode(Z,"der",Q);if(Z.isError(U)&&G)break;X.push(U)}return X};i0.prototype._decodeStr=function(Z,J){if(J==="bitstr"){let Y=Z.readUInt8();if(Z.isError(Y))return Y;return{unused:Y,data:Z.raw()}}else if(J==="bmpstr"){let Y=Z.raw();if(Y.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let Q="";for(let X=0;X<Y.length/2;X++)Q+=String.fromCharCode(Y.readUInt16BE(X*2));return Q}else if(J==="numstr"){let Y=Z.raw().toString("ascii");if(!this._isNumstr(Y))return Z.error("Decoding of string type: numstr unsupported characters");return Y}else if(J==="octstr")return Z.raw();else if(J==="objDesc")return Z.raw();else if(J==="printstr"){let Y=Z.raw().toString("ascii");if(!this._isPrintstr(Y))return Z.error("Decoding of string type: printstr unsupported characters");return Y}else if(/str$/.test(J))return Z.raw().toString();else return Z.error("Decoding of string type: "+J+" unsupported")};i0.prototype._decodeObjid=function(Z,J,Y){let Q,X=[],G=0,U=0;while(!Z.isEmpty())if(U=Z.readUInt8(),G<<=7,G|=U&127,(U&128)===0)X.push(G),G=0;if(U&128)X.push(G);let V=X[0]/40|0,M=X[0]%40;if(Y)Q=X;else Q=[V,M].concat(X.slice(1));if(J){let z=J[Q.join(" ")];if(z===void 0)z=J[Q.join(".")];if(z!==void 0)Q=z}return Q};i0.prototype._decodeTime=function(Z,J){let Y=Z.raw().toString(),Q,X,G,U,V,M;if(J==="gentime")Q=Y.slice(0,4)|0,X=Y.slice(4,6)|0,G=Y.slice(6,8)|0,U=Y.slice(8,10)|0,V=Y.slice(10,12)|0,M=Y.slice(12,14)|0;else if(J==="utctime")if(Q=Y.slice(0,2)|0,X=Y.slice(2,4)|0,G=Y.slice(4,6)|0,U=Y.slice(6,8)|0,V=Y.slice(8,10)|0,M=Y.slice(10,12)|0,Q<70)Q=2000+Q;else Q=1900+Q;else return Z.error("Decoding "+J+" time is not supported yet");return Date.UTC(Q,X-1,G,U,V,M,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let J=Z.readUInt8();if(Z.isError(J))return J;else return J!==0};i0.prototype._decodeInt=function(Z,J){let Y=Z.raw(),Q=new P9(Y);if(J)Q=J[Q.toString(10)]||Q;return Q};i0.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getDecoder("der").tree};function AY($,Z){let J=$.readUInt8(Z);if($.isError(J))return J;let Y=tX.tagClass[J>>6],Q=(J&32)===0;if((J&31)===31){let G=J;J=0;while((G&128)===128){if(G=$.readUInt8(Z),$.isError(G))return G;J<<=7,J|=G&127}}else J&=31;let X=tX.tag[J];return{cls:Y,primitive:Q,tag:J,tagStr:X}}function $G($,Z,J){let Y=$.readUInt8(J);if($.isError(Y))return Y;if(!Z&&Y===128)return null;if((Y&128)===0)return Y;let Q=Y&127;if(Q>4)return $.error("length octect is too long");Y=0;for(let X=0;X<Q;X++){Y<<=8;let G=$.readUInt8(J);if($.isError(G))return G;Y|=G}return Y}});var YG=i((k7,JG)=>{var C9=w$(),E9=bZ().Buffer,FY=zY();function KY($){FY.call(this,$),this.enc="pem"}C9(KY,FY);JG.exports=KY;KY.prototype.decode=function(Z,J){let Y=Z.toString().split(/[\r\n]+/g),Q=J.label.toUpperCase(),X=/^-----(BEGIN|END) ([^-]+)-----$/,G=-1,U=-1;for(let z=0;z<Y.length;z++){let _=Y[z].match(X);if(_===null)continue;if(_[2]!==Q)continue;if(G===-1){if(_[1]!=="BEGIN")break;G=z}else{if(_[1]!=="END")break;U=z;break}}if(G===-1||U===-1)throw Error("PEM section not found for: "+Q);let V=Y.slice(G+1,U).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let M=E9.from(V,"base64");return FY.prototype.decode.call(this,M,J)}});var RY=i((XG)=>{var QG=XG;QG.der=zY();QG.pem=YG()});var HG=i((GG)=>{var w9=MY(),S9=RY(),T9=w$(),N9=GG;N9.define=function(Z,J){return new $Z(Z,J)};function $Z($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}$Z.prototype._createNamed=function(Z){let J=this.name;function Y(Q){this._initNamed(Q,J)}return T9(Y,Z),Y.prototype._initNamed=function(X,G){Z.call(this,X,G)},new Y(this)};$Z.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(S9[Z]);return this.decoders[Z]};$Z.prototype.decode=function(Z,J,Y){return this._getDecoder(J).decode(Z,Y)};$Z.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(w9[Z]);return this.encoders[Z]};$Z.prototype.encode=function(Z,J,Y){return this._getEncoder(J).encode(Z,Y)}});var UG=i((WG)=>{var dZ=WG;dZ.Reporter=cZ().Reporter;dZ.DecoderBuffer=e$().DecoderBuffer;dZ.EncoderBuffer=e$().EncoderBuffer;dZ.Node=uZ()});var _G=i((OG)=>{var VG=OG;VG._reverse=function(Z){let J={};return Object.keys(Z).forEach(function(Y){if((Y|0)==Y)Y=Y|0;let Q=Z[Y];J[Q]=Y}),J};VG.der=mZ()});var AG=i((MG)=>{var ZZ=MG;ZZ.bignum=GY();ZZ.define=HG().define;ZZ.base=UG();ZZ.constants=_G();ZZ.decoders=RY();ZZ.encoders=MY()});var KG=i((qY,FG)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var nZ=K$("buffer"),O$=nZ.Buffer;function zG($,Z){for(var J in $)Z[J]=$[J]}if(O$.from&&O$.alloc&&O$.allocUnsafe&&O$.allocUnsafeSlow)FG.exports=nZ;else zG(nZ,qY),qY.Buffer=v$;function v$($,Z,J){return O$($,Z,J)}v$.prototype=Object.create(O$.prototype);zG(O$,v$);v$.from=function($,Z,J){if(typeof $==="number")throw TypeError("Argument must not be a number");return O$($,Z,J)};v$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError("Argument must be a number");var Y=O$($);if(Z!==void 0)if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);else Y.fill(0);return Y};v$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return O$($)};v$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return nZ.SlowBuffer($)}});var qG=i((h7,RG)=>{function IY($){var Z=($/8|0)+($%8===0?0:1);return Z}var D9={ES256:IY(256),ES384:IY(384),ES512:IY(521)};function k9($){var Z=D9[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}RG.exports=k9});var EG=i((b7,CG)=>{var sZ=KG().Buffer,jG=qG(),oZ=128,LG=0,v9=32,x9=16,f9=2,BG=x9|v9|LG<<6,lZ=f9|LG<<6;function y9($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function PG($){if(sZ.isBuffer($))return $;else if(typeof $==="string")return sZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function g9($,Z){$=PG($);var J=jG(Z),Y=J+1,Q=$.length,X=0;if($[X++]!==BG)throw Error('Could not find expected "seq"');var G=$[X++];if(G===(oZ|1))G=$[X++];if(Q-X<G)throw Error('"seq" specified length of "'+G+'", only "'+(Q-X)+'" remaining');if($[X++]!==lZ)throw Error('Could not find expected "int" for "r"');var U=$[X++];if(Q-X-2<U)throw Error('"r" specified length of "'+U+'", only "'+(Q-X-2)+'" available');if(Y<U)throw Error('"r" specified length of "'+U+'", max of "'+Y+'" is acceptable');var V=X;if(X+=U,$[X++]!==lZ)throw Error('Could not find expected "int" for "s"');var M=$[X++];if(Q-X!==M)throw Error('"s" specified length of "'+M+'", expected "'+(Q-X)+'"');if(Y<M)throw Error('"s" specified length of "'+M+'", max of "'+Y+'" is acceptable');var z=X;if(X+=M,X!==Q)throw Error('Expected to consume entire buffer, but "'+(Q-X)+'" bytes remain');var _=J-U,L=J-M,C=sZ.allocUnsafe(_+U+L+M);for(X=0;X<_;++X)C[X]=0;$.copy(C,X,V+Math.max(-_,0),V+U),X=J;for(var E=X;X<E+L;++X)C[X]=0;return $.copy(C,X,z+Math.max(-L,0),z+M),C=C.toString("base64"),C=y9(C),C}function IG($,Z,J){var Y=0;while(Z+Y<J&&$[Z+Y]===0)++Y;var Q=$[Z+Y]>=oZ;if(Q)--Y;return Y}function h9($,Z){$=PG($);var J=jG(Z),Y=$.length;if(Y!==J*2)throw TypeError('"'+Z+'" signatures must be "'+J*2+'" bytes, saw "'+Y+'"');var Q=IG($,0,J),X=IG($,J,$.length),G=J-Q,U=J-X,V=2+G+1+1+U,M=V<oZ,z=sZ.allocUnsafe((M?2:3)+V),_=0;if(z[_++]=BG,M)z[_++]=V;else z[_++]=oZ|1,z[_++]=V&255;if(z[_++]=lZ,z[_++]=G,Q<0)z[_++]=0,_+=$.copy(z,_,0,J);else _+=$.copy(z,_,Q,J);if(z[_++]=lZ,z[_++]=U,X<0)z[_++]=0,$.copy(z,_,J);else $.copy(z,_,J+X);return z}CG.exports={derToJose:g9,joseToDer:h9}});var PY=i((c7,cG)=>{var BY=AG(),{createHmac:TG,createVerify:b9,createSign:c9,timingSafeEqual:p9,createPublicKey:u9,constants:{RSA_PKCS1_PSS_PADDING:NG,RSA_PSS_SALTLEN_DIGEST:DG,RSA_PKCS1_PADDING:kG,RSA_PSS_SALTLEN_MAX_SIGN:m9,RSA_PSS_SALTLEN_AUTO:d9},sign:wG,verify:SG}=K$("crypto"),{joseToDer:n9,derToJose:s9}=EG(),vG=QY(),{TokenError:X0}=o$(),xG=/[=+/]/g,o9={"=":"","+":"-","/":"_"},fG=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,yG=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,rZ=new vG(1000),jY=new vG(1000),gG=["HS256","HS384","HS512"],l9=["ES256","ES384","ES512"],LY=["RS256","RS384","RS512","PS256","PS384","PS512"],r9=["EdDSA"],hG={"1.2.840.10045.3.1.7":{bits:"256",names:["P-256","prime256v1"]},"1.3.132.0.10":{bits:"256",names:["secp256k1"]},"1.3.132.0.34":{bits:"384",names:["P-384","secp384r1"]},"1.3.132.0.35":{bits:"512",names:["P-521","secp521r1"]}},i9=BY.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),t9=BY.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),a9=BY.define("ECPrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("privateKey").octstr(),this.key("parameters").explicit(0).optional().choice({namedCurve:this.objid()}))});function bG($){return o9[$]}function OZ($,Z,J,Y){return $.set(Z,[J,Y]),J||Y}function e9($){if($.match(yG)||$.includes("-----BEGIN CERTIFICATE-----"))throw new X0(X0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(fG);if(!Z)return"HS256";let J,Y,Q;switch(Z[1]){case"RSA":return"RS256";case"EC":J=a9.decode($,"pem",{label:"EC PRIVATE KEY"}),Q=J.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(J=i9.decode($,"pem",{label:"PRIVATE KEY"}),Y=J.algorithm.algorithm.join("."),Y){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${Y}.`)}}let X=hG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC private key with curve ${Q}.`);return`ES${X.bits}`}function $8($){let Z=$.match(yG);if($.match(fG))throw new X0(X0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return LY;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return gG;if($.includes("-----BEGIN CERTIFICATE-----"))$=u9($).export({type:"spki",format:"pem"});let J=t9.decode($,"pem",{label:"PUBLIC KEY"}),Y=J.algorithm.algorithm.join("."),Q;switch(Y){case"1.2.840.113549.1.1.1":return LY;case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${Y}.`)}let X=hG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC public key with curve ${Q}.`);return[`ES${X.bits}`]}function Z8($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The private key must be a string or a buffer.");let[J,Y]=rZ.get($)||[];if(J)return J;else if(Y)throw Y;try{let Q=e9($);if(Q==="ENCRYPTED")return OZ(rZ,$,Z);return OZ(rZ,$,Q)}catch(Q){throw OZ(rZ,$,null,X0.wrap(Q,X0.codes.invalidKey,"Unsupported PEM private key."))}}function J8($){if(!$)return"none";let[Z,J]=jY.get($)||[];if(Z)return Z;else if(J)throw J;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The public key must be a string or a buffer.");return OZ(jY,$,$8($))}catch(Y){throw OZ(jY,$,null,X0.wrap(Y,X0.codes.invalidKey,"Unsupported PEM public key."))}}function Y8($,Z,J){try{let Y=$.slice(0,2),Q=`sha${$.slice(2)}`,X,G;switch(Y){case"HS":X=TG(Q,Z).update(J).digest("base64");break;case"ES":X=s9(wG(Q,Buffer.from(J,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(G={key:Z,padding:kG,saltLength:m9},Y==="PS")G.padding=NG,G.saltLength=DG;X=c9(Q).update(J).sign(G).toString("base64");break;case"Ed":X=wG(void 0,Buffer.from(J,"utf-8"),Z).toString("base64")}return X.replace(xG,bG)}catch(Y){throw new X0(X0.codes.signError,"Cannot create the signature.",{originalError:Y})}}function Q8($,Z,J,Y){try{let Q=$.slice(0,2),X=`SHA${$.slice(2)}`;if(Y=Buffer.from(Y,"base64"),Q==="HS")try{return p9(TG(X,Z).update(J).digest(),Y)}catch{return!1}else if(Q==="Ed")if(typeof SG==="function")return SG(void 0,Buffer.from(J,"utf-8"),Z,Y);else throw new X0(X0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let G={key:Z,padding:kG,saltLength:d9};if(Q==="PS")G.padding=NG,G.saltLength=DG;else if(Q==="ES")Y=n9(Y,$);return b9("RSA-"+X).update(J).verify(G,Y)}catch(Q){throw new X0(X0.codes.verifyError,"Cannot verify the signature.",{originalError:Q})}}cG.exports={base64UrlMatcher:xG,base64UrlReplacer:bG,hsAlgorithms:gG,rsaAlgorithms:LY,esAlgorithms:l9,edAlgorithms:r9,detectPrivateKeyAlgorithm:Z8,detectPublicKeyAlgorithms:J8,createSignature:Y8,verifySignature:Q8}});var CY=i((p7,uG)=>{var{createHash:pG}=K$("crypto"),X8=/"alg"\s*:\s*"[HERP]S(256|384)"/m,G8=/"alg"\s*:\s*"EdDSA"/m,H8=/"crv"\s*:\s*"Ed448"/m;function W8($,Z,J){let Y=$(Z,J);if(Y&&typeof Y.then==="function")Y.then((Q)=>{process.nextTick(()=>J(null,Q))}).catch(J)}function U8($){if(typeof $==="function")return[$];let Z,J,Y=new Promise((Q,X)=>{Z=Q,J=X});return[function(Q,X){if(Q)return J(Q);return Z(X)},Y]}function V8($){let Z=$.split(".",1)[0],J=Buffer.from(Z,"base64").toString("utf-8"),Y=null;if(J.match(G8)&&J.match(H8))Y=pG("shake256",{outputLength:114});else{let Q=J.match(X8);Y=pG(`sha${Q?Q[1]:"512"}`)}return Y.update($).digest("hex")}uG.exports={getAsyncKey:W8,ensurePromiseCallback:U8,hashToken:V8}});var rG=i((u7,lG)=>{var{createPublicKey:O8,createSecretKey:_8}=K$("crypto"),M8=QY(),{hsAlgorithms:dG,verifySignature:A8,detectPublicKeyAlgorithms:nG}=PY(),z8=eJ(),{TokenError:s}=o$(),{getAsyncKey:F8,ensurePromiseCallback:K8,hashToken:R8}=CY();function q8($,Z){return $===Z}function sG($,Z){for(let J of $)if(Z.includes(J))return;throw new s(s.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function oG($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?_8($):O8($)}function _Z($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:q8.bind(null,Z)}})}function I8($){let Z=parseInt($===!0?1000:$,10);return Z>0?new M8(Z):null}function JZ({cache:$,token:Z,cacheTTL:J,payload:Y,ignoreExpiration:Q,ignoreNotBefore:X,maxAge:G,clockTimestamp:U=Date.now(),clockTolerance:V,errorCacheTTL:M,cacheKeyBuilder:z},_){if(!$)return _;let L=[_,0,0];if(_ instanceof s){let S=typeof M==="function"?M(_):M;return L[2]=U+V+S,$.set(z(Z),L),_}if(Y&&typeof Y.iat==="number"){if(L[1]=!X&&typeof Y.nbf==="number"?Y.nbf*1000-V:0,!Q){if(typeof Y.exp==="number")L[2]=Y.exp*1000+V;else if(G)L[2]=Y.iat*1000+G+V}}let E=U+V+J;return L[2]=L[2]===0?E:Math.min(L[2],E),$.set(z(Z),L),_}function j8($,Z,J){if($ instanceof s){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return J}function L8($,Z,J,Y,Q){if(!Q.includes(Z.alg))throw new s(s.codes.invalidAlgorithm,"The token algorithm is invalid.");if(J&&!A8(Z.alg,Y,$,J))throw new s(s.codes.invalidSignature,"The token signature is invalid.")}function B8($,Z,J,Y,Q){let X=J?`The ${Z} claim must be a ${Q} or an array of ${Q}s.`:`The ${Z} claim must be a ${Q}.`;if(Y&&!J)throw new s(s.codes.invalidClaimValue,X);if($.map((G)=>typeof G).some((G)=>G!==Q))throw new s(s.codes.invalidClaimType,X)}function P8($,Z,J,Y){let Q=Y?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((X)=>J.some((G)=>G.test(X))))throw new s(s.codes.invalidClaimValue,Q)}function C8($,Z,J,Y,Q,X){let G=$*1000+(Z||0);if(!(Y?J>=G:J<=G))throw new s(s.codes[Q],`The token ${X} at ${new Date(G).toISOString()}.`)}function mG($,{input:Z,header:J,payload:Y,signature:Q},{validators:X,allowedAlgorithms:G,checkTyp:U,clockTimestamp:V,requiredClaims:M}){let z=$ instanceof Buffer?$.length:!!$;if(z&&!Q)throw new s(s.codes.missingSignature,"The token signature is missing.");else if(!z&&Q)throw new s(s.codes.missingKey,"The key option is missing.");if(L8(Z,J,Q,$,G),U&&(typeof J.typ!=="string"||U!==J.typ.toLowerCase().replace(/^application\//,"")))throw new s(s.codes.invalidType,"Invalid typ.");if(M){for(let L of M)if(!(L in Y))throw new s(s.codes.missingRequiredClaim,`The ${L} claim is required.`)}let _=V||Date.now();for(let{type:L,claim:C,allowed:E,array:S,modifier:D,greater:N,errorCode:w,errorVerb:k}of X){let b=Y[C],x=Array.isArray(b),m=x?b:[b];if(!(C in Y))continue;if(B8(m,C,S,x,L==="date"?"number":"string"),L==="date")C8(b,D,_,N,w,k);else P8(m,C,E,x)}}function E8({key:$,allowedAlgorithms:Z,complete:J,cacheTTL:Y,checkTyp:Q,clockTimestamp:X,clockTolerance:G,ignoreExpiration:U,ignoreNotBefore:V,maxAge:M,isAsync:z,validators:_,decode:L,cache:C,requiredClaims:E,errorCacheTTL:S,cacheKeyBuilder:D},N,w){let[k,b]=z?K8(w):[];if(C){let[O,A,F]=C.get(D(N))||[void 0,0,0],q=X||Date.now();if(typeof O<"u"&&(A===0||q<A&&O.code==="FAST_JWT_INACTIVE"||q>=A&&O.code!=="FAST_JWT_INACTIVE")&&(F===0||q<=F))return j8(O,k,b)}let x;try{x=L(N)}catch(O){if(k)return k(O),b;throw O}let{header:m,payload:a,signature:r,input:Z0}=x,j={cache:C,token:N,cacheTTL:Y,errorCacheTTL:S,ignoreExpiration:U,ignoreNotBefore:V,maxAge:M,clockTimestamp:X,clockTolerance:G,payload:a,cacheKeyBuilder:D},H={validators:_,allowedAlgorithms:Z,checkTyp:Q,clockTimestamp:X,clockTolerance:G,requiredClaims:E};if(!k)try{return mG($,x,H),JZ(j,J?{header:m,payload:a,signature:r,input:Z0}:a)}catch(O){throw JZ(j,O)}return F8($,{header:m,payload:a,signature:r},(O,A)=>{if(O)return k(JZ(j,s.wrap(O,s.codes.keyFetchingError,"Cannot fetch key.")));if(typeof A==="string")A=Buffer.from(A,"utf-8");else if(!(A instanceof Buffer))return k(JZ(j,new s(s.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a public key.")));try{let F=nG(A);if(H.allowedAlgorithms.length)sG(Z,F);else H.allowedAlgorithms=F;A=oG(A,F[0]===dG[0]),mG(A,x,H)}catch(F){return k(JZ(j,F))}k(null,JZ(j,J?{header:m,payload:a,signature:r,input:N}:a))}),b}lG.exports=function(Z){let{key:J,algorithms:Y,complete:Q,cache:X,cacheTTL:G,errorCacheTTL:U,checkTyp:V,clockTimestamp:M,clockTolerance:z,ignoreExpiration:_,ignoreNotBefore:L,maxAge:C,allowedJti:E,allowedAud:S,allowedIss:D,allowedSub:N,allowedNonce:w,requiredClaims:k,cacheKeyBuilder:b}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:R8,...Z};if(!Array.isArray(Y))Y=[];let x=typeof J;if(x!=="string"&&x!=="object"&&x!=="function")throw new s(s.codes.INVALID_OPTION,"The key option must be a string, a buffer or a function returning the algorithm secret or public key.");if(J&&x!=="function"){let j=nG(J);if(Y.length)sG(Y,j);else Y=j;J=oG(J,j[0]===dG[0])}if(M&&(typeof M!=="number"||M<0))throw new s(s.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(z&&(typeof z!=="number"||z<0))throw new s(s.codes.invalidOption,"The clockTolerance option must be a positive number.");if(G&&(typeof G!=="number"||G<0))throw new s(s.codes.invalidOption,"The cacheTTL option must be a positive number.");if(U&&typeof U!=="function"&&typeof U!=="number"||U<-1)throw new s(s.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(k&&!Array.isArray(k))throw new s(s.codes.invalidOption,"The requiredClaims option must be an array.");let m=[];if(!L)m.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-z});if(!_)m.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+z});if(typeof C==="number")m.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:C});if(E)m.push({type:"string",claim:"jti",allowed:_Z(E)});if(S)m.push({type:"string",claim:"aud",allowed:_Z(S),array:!0});if(D)m.push({type:"string",claim:"iss",allowed:_Z(D)});if(N)m.push({type:"string",claim:"sub",allowed:_Z(N)});if(w)m.push({type:"string",claim:"nonce",allowed:_Z(w)});let a=V?V.toLowerCase().replace(/^application\//,""):null,r={key:J,allowedAlgorithms:Y,complete:Q,cacheTTL:G,errorCacheTTL:U,checkTyp:a,clockTimestamp:M,clockTolerance:z,ignoreExpiration:_,ignoreNotBefore:L,maxAge:C,isAsync:x==="function",validators:m,decode:z8({complete:!0}),cache:I8(X),requiredClaims:k,cacheKeyBuilder:b},Z0=E8.bind(null,r);return Z0.cache=r.cache,Z0}});var iG=i((N8)=>{var w8=/^(-?(?:\d+)?\.?\d+) *(m(?:illiseconds?|s(?:ecs?)?))?(s(?:ec(?:onds?|s)?)?)?(m(?:in(?:utes?|s)?)?)?(h(?:ours?|rs?)?)?(d(?:ays?)?)?(w(?:eeks?|ks?)?)?(y(?:ears?|rs?)?)?$/,iZ=1000,tZ=iZ*60,aZ=tZ*60,AZ=aZ*24,EY=AZ*365.25;function S8($){var Z,J=$.toLowerCase().match(w8);if(J!=null&&(Z=parseFloat(J[1]))){if(J[3]!=null)return Z*iZ;if(J[4]!=null)return Z*tZ;if(J[5]!=null)return Z*aZ;if(J[6]!=null)return Z*AZ;if(J[7]!=null)return Z*AZ*7;if(J[8]!=null)return Z*EY;return Z}}function MZ($,Z,J,Y){var Q=($|0)===$?$:~~($+0.5);return Z+Q+(Y?" "+J+(Q!=1?"s":""):J[0])}function T8($,Z){var J=$<0?"-":"",Y=$<0?-$:$;if(Y<iZ)return $+(Z?" ms":"ms");if(Y<tZ)return MZ(Y/iZ,J,"second",Z);if(Y<aZ)return MZ(Y/tZ,J,"minute",Z);if(Y<AZ)return MZ(Y/aZ,J,"hour",Z);if(Y<EY)return MZ(Y/AZ,J,"day",Z);return MZ(Y/EY,J,"year",Z)}N8.format=T8;N8.parse=S8});var Q1=i((d7,Y1)=>{var{base64UrlMatcher:wY,base64UrlReplacer:SY,hsAlgorithms:v8,esAlgorithms:x8,rsaAlgorithms:f8,edAlgorithms:y8,detectPrivateKeyAlgorithm:eG,createSignature:tG}=PY(),{TokenError:l}=o$(),{getAsyncKey:g8,ensurePromiseCallback:h8}=CY(),{createPrivateKey:b8,createSecretKey:c8}=K$("crypto"),{parse:aG}=iG(),$1=new Set([...v8,...x8,...f8,...y8,"none"]),p8=Array.from($1).join(", ");function Z1($,Z){let J=$.slice(0,2),Y=Z.slice(0,2),Q=!0;if(J==="RS"||J==="PS")Q=Y==="RS"||J==="RS"&&Z==="ENCRYPTED";else if(J==="ES"||J==="Ed")Q=J===Y||J==="ES"&&Z==="ENCRYPTED";if(!Q)throw new l(l.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function J1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?c8($):b8($)}function u8({key:$,algorithm:Z,noTimestamp:J,mutatePayload:Y,clockTimestamp:Q,expiresIn:X,notBefore:G,kid:U,typ:V,isAsync:M,additionalHeader:z,fixedPayload:_},L,C){let[E,S]=M?h8(C):[];if(typeof L!=="object")throw new l(l.codes.invalidType,"The payload must be an object.");if(L.exp&&(!Number.isInteger(L.exp)||L.exp<0))throw new l(l.codes.invalidClaimValue,"The exp claim must be a positive integer.");let D={alg:Z,typ:V||"JWT",kid:U,...z},N="",w=L.iat*1000||Q||Date.now(),k={...L,..._,iat:J?void 0:Math.floor(w/1000),exp:L.exp?L.exp:X?Math.floor((w+X)/1000):void 0,nbf:L.nbf?L.nbf:G?Math.floor((w+G)/1000):void 0};if(Y)Object.assign(L,k);if(N=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(wY,SY),!E){let x=Buffer.from(JSON.stringify(D),"utf-8").toString("base64").replace(wY,SY)+"."+N,m=Z==="none"?"":tG(Z,$,x);return x+"."+m}return g8($,{header:D,payload:L},(b,x)=>{if(b){let a=l.wrap(b,l.codes.keyFetchingError,"Cannot fetch key.");return E(a)}if(typeof x==="string")x=Buffer.from(x,"utf-8");else if(!(x instanceof Buffer))return E(new l(l.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a private key."));let m;try{let a=eG(x,Z);if(Z)Z1(Z,a);else D.alg=Z=a;x=J1(x,Z);let Z0=Buffer.from(JSON.stringify(D),"utf-8").toString("base64").replace(wY,SY)+"."+N;m=Z0+"."+tG(Z,x,Z0)}catch(a){return E(a)}E(null,m)}),S}Y1.exports=function(Z){let{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,jti:M,aud:z,iss:_,sub:L,nonce:C,kid:E,typ:S,header:D}={clockTimestamp:0,...Z};if(Y&&!$1.has(Y))throw new l(l.codes.invalidOption,`The algorithm option must be one of the following values: ${p8}.`);let N=typeof J,w=N==="object"&&J&&J.key&&J.passphrase;if(Y==="none"){if(J)throw new l(l.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!J||N!=="string"&&!(J instanceof Buffer)&&N!=="function"&&!w)throw new l(l.codes.invalidOption,"The key option must be a string, a buffer, an object containing key/passphrase properties or a function returning the algorithm secret or private key.");else if(w&&!Y)throw new l(l.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(J&&N!=="function"){let x=eG(w?J.key:J,Y);if(Y)Z1(Y,x);else Y=x;J=J1(J,Y)}if(U){if(typeof U==="string")U=aG(U);if(typeof U!=="number")throw new l(l.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(V){if(typeof V==="string")V=aG(V);if(typeof V!=="number"||V<0)throw new l(l.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(G&&(typeof G!=="number"||G<0))throw new l(l.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(M&&typeof M!=="string")throw new l(l.codes.invalidOption,"The jti option must be a string.");if(z&&typeof z!=="string"&&!Array.isArray(z))throw new l(l.codes.invalidOption,"The aud option must be a string or an array of strings.");if(_&&typeof _!=="string")throw new l(l.codes.invalidOption,"The iss option must be a string.");if(L&&typeof L!=="string")throw new l(l.codes.invalidOption,"The sub option must be a string.");if(C&&typeof C!=="string")throw new l(l.codes.invalidOption,"The nonce option must be a string.");if(E&&typeof E!=="string")throw new l(l.codes.invalidOption,"The kid option must be a string.");if(D&&typeof D!=="object")throw new l(l.codes.invalidOption,"The header option must be a object.");let b=Object.entries({jti:M,aud:z,iss:_,sub:L,nonce:C}).reduce((x,[m,a])=>{if(a!==void 0)x[m]=a;return x},{});return u8.bind(null,{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,kid:E,typ:S,isAsync:N==="function",additionalHeader:D,fixedPayload:b})}});var G1=i((n7,X1)=>{var{TokenError:m8,TOKEN_ERROR_CODES:d8}=o$(),n8=eJ(),s8=rG(),o8=Q1();X1.exports={TokenError:m8,TOKEN_ERROR_CODES:d8,createDecoder:n8,createVerifier:s8,createSigner:o8}});PZ();import{join as vJ}from"path";u0();function H$($){if(Array.isArray($)){let Z=[];for(let J of $)Z.push(H$(J));return Z}if(n($)){let Z={},J=$;for(let Y of Object.keys(J))Z[Y]=H$(J[Y]);return Z}return $}function VQ($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let J=[];for(let Y of $)J.push(H$(Y));for(let Y of Z)J.push(H$(Y));return J}if(n($)&&n(Z)){let J=$,Y=Z,Q={};for(let X of Object.keys(J))Q[X]=H$(J[X]);for(let X of Object.keys(Y)){let G=Y[X];if(G===void 0)continue;let U=Q[X];if(Array.isArray(U)&&Array.isArray(G)){let V=[];for(let M of U)V.push(H$(M));for(let M of G)V.push(H$(M));Q[X]=V;continue}if(n(U)&&n(G)){Q[X]=VQ(H$(U),G);continue}Q[X]=H$(G)}return Q}return H$(Z)}function OQ(...$){let Z={};for(let J of $){if(J===void 0)continue;Z=VQ(Z,J)}return Z}var i1={nodeEnv:"development",appName:"\u91CE\u8702\u98DE\u821E",appPort:3000,appHost:"127.0.0.1",devEmail:"dev@qq.com",devPassword:"beflydev123456",bodyLimit:1048576,tz:"Asia/Shanghai",strict:!0,logger:{debug:1,excludeFields:["password","token","secret"],dir:"./logs",console:1,maxSize:20,maxStringLen:100,maxArrayItems:100},db:{idMode:"timeId",host:"127.0.0.1",port:3306,username:"root",password:"root",database:"befly_demo",poolMax:10},redis:{host:"127.0.0.1",port:6379,username:"",password:"",db:0,prefix:"befly_demo"},auth:{secret:"befly-secret",expiresIn:"7d",algorithm:"HS256"},cors:{origin:"*",methods:"GET,HEAD,PUT,PATCH,POST,DELETE",allowedHeaders:"Content-Type,Authorization",exposedHeaders:"",maxAge:86400,credentials:"true"},rateLimit:{enable:1,defaultLimit:1000,defaultWindow:60,key:"ip",skipRoutes:[],rules:[]},disableMenus:["**/404","**/403","**/500","/addon/admin/login"],addons:{}};async function _Q($){if($!=="development"&&$!=="production")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1ANODE_ENV \u53EA\u80FD\u662F 'development' \u6216 'production'\uFF0C\u5F53\u524D\u503C=${String($)}`);let Z=vJ(process.cwd(),"configs"),J=await j$(vJ(Z,"befly.common.json"),{}),Y=await j$(vJ(Z,`befly.${$}.json`),{}),Q=OQ(i1,J,Y);Q.nodeEnv=$;let X=Q.redis?.prefix;if(typeof X==="string"){if(X.trim().includes(":"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u4E0D\u5141\u8BB8\u5305\u542B ':'\uFF08RedisHelper \u4F1A\u81EA\u52A8\u62FC\u63A5\u5206\u9694\u7B26 ':'\uFF09\uFF0C\u8BF7\u6539\u4E3A\u4E0D\u5E26\u5192\u53F7\u7684\u524D\u7F00\uFF0C\u4F8B\u5982 'befly_demo'\uFF0C\u5F53\u524D\u503C=${X}`)}let G=Q.db?.idMode;if(G!==void 0&&G!=="timeId"&&G!=="autoId")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(G)}`);let U=Q.strict;if(U!==void 0&&typeof U!=="boolean")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(U)}`);return Q}$0();class g extends Error{kind;code;meta;noLog;logged;cause;constructor($){super($.message);this.name="CoreError",this.kind=$.kind,this.code=typeof $.code==="string"&&$.code.length>0?$.code:null,this.meta=$.meta?$.meta:null,this.noLog=$.noLog===!0,this.logged=$.logged===!0,this.cause=$.cause}}function h$($){if(typeof $!=="object"||$===null)return!1;let Z=$;if(Z.name!=="CoreError")return!1;if(typeof Z.kind!=="string")return!1;return!0}u0();async function MQ($){let Z=!1,J=new Set;for(let Y of $)try{if(!n(Y)){I.warn({item:Y,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let Q=Y,X=Q.name;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let U=Q.path;if(typeof U!=="string"||U.trim()==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{let E=U.trim();if(J.has(E))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else J.add(E);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(E))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09"})),Z=!0;if(!E.startsWith("/api/"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(E.includes(" "))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(E.includes("/api//"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=Q.routePrefix,M=typeof V==="string"?V.trim():"";if(M==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{if(!(M==="/app"||M.startsWith("/addon/")))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5FC5\u987B\u662F /app \u6216 /addon/<name>\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;if(typeof U==="string"&&U.trim()!==""){let E=U.trim(),S=`/api${M}/`;if(!E.startsWith(S))I.warn(Object.assign({},u(Q,["handler"]),{expectedPrefix:S,msg:"\u63A5\u53E3\u7684 path \u4E0E routePrefix \u4E0D\u4E00\u81F4\uFF1A\u5E94\u4EE5 /api${routePrefix}/ \u5F00\u5934\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0}}let z=Q.method;if(z!==void 0&&!["GET","POST","GET,POST"].includes(String(z).toUpperCase()))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let _=Q.auth;if(_!==void 0&&typeof _!=="boolean")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let L=Q.fields;if(L!==void 0&&L!==null&&!n(L))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let C=Q.required;if(C!==void 0&&!Array.isArray(C))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(C)){if(C.some((E)=>typeof E!=="string"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(Q){I.error({err:Q,item:Y,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new g({kind:"policy",message:"\u63A5\u53E3\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkApi"}})}function b$($){return typeof $==="string"&&$.trim().length>0}function xJ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function t1($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function a1($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function e1($){if(!b$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function $H($){if(!$)throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09");if(!b$($.host))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.host \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`);if(!xJ($.port))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`);if(!b$($.username))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.username \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.username)}`);if($.password!==void 0&&typeof $.password!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.password \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.password)}`);if(!b$($.database))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.database \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.database)}`);if($.poolMax!==void 0){if(typeof $.poolMax!=="number"||!Number.isFinite($.poolMax)||$.poolMax<=0)throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.poolMax \u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u5F53\u524D\u503C=${String($.poolMax)}`)}}function ZH($){if(!$)throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 redis \u914D\u7F6E\uFF08config.redis\uFF09");if($.host!==void 0&&typeof $.host!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.host \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`);if($.port!==void 0&&!xJ($.port))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`);if($.db!==void 0&&!t1($.db))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.db \u5FC5\u987B\u4E3A\u975E\u8D1F\u6574\u6570\uFF0C\u5F53\u524D\u503C=${String($.db)}`);let Z=$.prefix;if(Z!==void 0){if(typeof Z!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String(Z)}`);if(Z.includes(":"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u4E0D\u5141\u8BB8\u5305\u542B ':'\uFF08RedisHelper \u4F1A\u81EA\u52A8\u62FC\u63A5\u5206\u9694\u7B26 ':'\uFF09\uFF0C\u5F53\u524D\u503C=${String(Z)}`)}}async function AQ($){if(!$||typeof $!=="object")throw Error("\u914D\u7F6E\u9519\u8BEF\uFF1Aconfig \u5FC5\u987B\u4E3A\u5BF9\u8C61");if($.nodeEnv!=="development"&&$.nodeEnv!=="production")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AnodeEnv \u53EA\u80FD\u662F development/production\uFF0C\u5F53\u524D\u503C=${String($.nodeEnv)}`);if($.appName!==void 0){if(!b$($.appName))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appName)}`)}if($.appPort!==void 0){if(!xJ($.appPort))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappPort \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.appPort)}`)}if($.appHost!==void 0){if(!b$($.appHost))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AappHost \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appHost)}`)}if($.devEmail!==void 0){if(typeof $.devEmail!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevEmail \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devEmail)}`);let Z=$.devEmail.trim();if(Z.length>0&&!Z.includes("@"))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevEmail \u683C\u5F0F\u9519\u8BEF\uFF08\u5FC5\u987B\u5305\u542B '@'\uFF0C\u6216\u7F6E\u4E3A\u7A7A\u5B57\u7B26\u4E32\u4EE5\u7981\u7528 syncDev\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devEmail)}`)}if($.devPassword!==void 0){if(typeof $.devPassword!=="string")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AdevPassword \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF08\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32\uFF09\uFF0C\u5F53\u524D\u503C=${String($.devPassword)}`)}if($.bodyLimit!==void 0){if(!a1($.bodyLimit))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1AbodyLimit \u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF08\u5B57\u8282\uFF09\uFF0C\u5F53\u524D\u503C=${String($.bodyLimit)}`)}if($.tz!==void 0){if(!e1($.tz))throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Atz \u5FC5\u987B\u4E3A\u6709\u6548\u7684 IANA \u65F6\u533A\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982 'Asia/Shanghai'\uFF09\uFF0C\u5F53\u524D\u503C=${String($.tz)}`)}if(typeof $.strict!=="boolean")throw Error(`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A true \u6216 false\uFF0C\u5F53\u524D\u503C=${String($.strict)}`);$H($.db),ZH($.redis)}$0();u0();var zQ=["name","enable","deps","handler"];async function FQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!n(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!zQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${zQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),M=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u94A9\u5B50\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 auth / rate_limit\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=Q.filePath;if(typeof _!=="string"||!_.startsWith(`core:hook:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:hook:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(M){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new g({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}$0();hJ();function OH($){if(!$)return{ok:!1,reason:"path \u4E0D\u80FD\u4E3A\u7A7A"};if(!$.startsWith("/"))return{ok:!1,reason:"path \u5FC5\u987B\u4EE5 / \u5F00\u5934"};if($.length>1&&$.endsWith("/"))return{ok:!1,reason:"path \u672B\u5C3E\u4E0D\u80FD\u662F /\uFF08\u6839\u8DEF\u5F84 / \u9664\u5916\uFF09"};if($.includes("//"))return{ok:!1,reason:"path \u4E0D\u80FD\u5305\u542B //"};if($.includes(".."))return{ok:!1,reason:"path \u4E0D\u80FD\u5305\u542B .."};return{ok:!0,reason:""}}var CQ=async($)=>{let Z=!1,J=await PQ($),Y=[];for(let X of J)Y.push({menu:X,depth:1});let Q=new Set;while(Y.length>0){let X=Y.pop(),G=X?.menu,U=typeof X?.depth==="number"?X.depth:0;if(G===null||typeof G!=="object"){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(U>3){Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let V=G.children;if(typeof V<"u"&&!Array.isArray(V)){Z=!0,I.warn({path:G?.path,childrenType:typeof V,msg:"\u83DC\u5355 children \u5FC5\u987B\u662F\u6570\u7EC4"});continue}if(Array.isArray(V)&&V.length>0)if(U>=3)Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let C of V)Y.push({menu:C,depth:U+1});let M=typeof G.path==="string"?G.path.trim():"",z=typeof G.name==="string"?G.name.trim():"",_=typeof G.sort==="number"?G.sort:999999;if(typeof G.path==="string")G.path=M;if(typeof G.name==="string")G.name=z;if(typeof G.sort>"u")G.sort=_;if(!M){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let L=OH(M);if(!L.ok)Z=!0,I.warn({path:M,reason:L.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!z)Z=!0,I.warn({path:M,menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof G.sort<"u"&&typeof G.sort!=="number")Z=!0,I.warn({path:M,sort:G.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof G.sort==="number"&&(!Number.isFinite(G.sort)||G.sort<1))Z=!0,I.warn({path:M,sort:G.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(Q.has(M)){Z=!0,I.warn({path:M,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}Q.add(M)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return J};$0();u0();var EQ=["name","enable","deps","handler"];async function wQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!n(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!EQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${EQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),M=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u63D2\u4EF6\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 logger / redis_cache\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=Q.filePath;if(typeof _!=="string"||!_.startsWith(`core:plugin:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:plugin:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(M){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new g({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}$0();u0();var kQ=["id","created_at","updated_at","deleted_at","state"],SQ=new Set(kQ),vQ=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","tinytext","text","mediumtext","longtext","datetime","json"],_H=new Set(vQ),xQ=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],MH=new Set(xQ);function AH($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function zH($,Z){let J=String($||"").trim(),Y=String(Z||"").trim();return{type:J,input:Y||AH(J)}}var fQ=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],FH=new Set(fQ),KH=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,RH=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,TQ=16383,NQ=500,DQ=180;async function yQ($,Z){let J=!1;for(let Y of $){if(Y.type!=="table")continue;let Q=typeof Y.sourceName==="string"?Y.sourceName:"",X=Q?`${Q}\u8868 `:"\u8868 ";try{let G=Y.fileName;if(Y.source==="addon"&&String(Y.addonName).trim()===""){I.warn(`${X}${G} addon \u8868\u7F3A\u5C11 addonName`),J=!0;continue}let U=Y.content;if(typeof U!=="object"||U===null||Array.isArray(U)){I.warn(`${X}${G} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}if(!KH.test(G)){I.warn(`${X}${G} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),J=!0;continue}for(let[V,M]of Object.entries(U)){if(typeof M!=="object"||M===null||Array.isArray(M)){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}let z=c(V);if(SQ.has(V)||SQ.has(z))I.warn(`${X}${G} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${V}\uFF08\u6620\u5C04\u5217\u540D: ${z}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${kQ.join(", ")}`),J=!0;let _=M,C=Object.keys(_).filter((Z0)=>!FH.has(Z0));if(C.length>0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${C.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${fQ.join(", ")}`),J=!0;if(!_.name||typeof _.name!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(!_.type||typeof _.type!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(_.input!==void 0&&typeof _.input!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(_.min!==void 0&&!(_.min===null||typeof _.min==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.max!==void 0&&!(_.max===null||typeof _.max==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.detail!==void 0&&typeof _.detail!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(_.precision!==void 0&&!(_.precision===null||typeof _.precision==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.scale!==void 0&&!(_.scale===null||typeof _.scale==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(_.index!==void 0&&typeof _.index!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.unique!==void 0&&typeof _.unique!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.nullable!==void 0&&typeof _.nullable!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(_.unsigned!==void 0&&typeof _.unsigned!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;let E=zH(_.type,_.input||""),S=E.type,D=E.input;if(_.default!==void 0&&_.default!==null&&!zZ(_.default))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 default \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u53EF JSON \u5E8F\u5217\u5316\u7684\u503C\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0;if(Z.strict){if(!RH.test(_.name))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u540D\u79F0 "${_.name}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+"\u5FC5\u987B\u4E3A\u4E2D\u6587\u3001\u6570\u5B57\u3001\u5B57\u6BCD\u3001\u4E0B\u5212\u7EBF\u3001\u77ED\u6A2A\u7EBF\u3001\u7A7A\u683C"),J=!0}if(!_H.has(S))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${S}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${vQ.join("\u3001")}\u4E4B\u4E00`),J=!0;let N=D.trim();if(N==="")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),J=!0;else if(!MH.has(N)&&!f$(N)&&!y$(N)&&!jJ(N))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${N}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${xQ.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),J=!0;let w=["char","varchar","tinytext","text","mediumtext","longtext"].includes(S),k=["tinytext","text","mediumtext","longtext"].includes(S),b=["tinyint","smallint","mediumint","int","bigint"].includes(S),x=S==="decimal",m=S==="float"||S==="double",a=S==="json",r=b||x||m;if(f$(N)||y$(N)||jJ(N)){if(!w)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u4F7F\u7528\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D\uFF0C\u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="number"||N==="integer"){if(N==="integer"&&!b)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),J=!0;if(N==="number"&&!r)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),J=!0}if(N==="array"||N==="array_number"||N==="array_integer"){if(!w)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="json"||N==="json_number"||N==="json_integer"){if(!(a||k))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),J=!0}if(!r&&_.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${S}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),J=!0;if(_.unique===!0&&_.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u540C\u65F6\u8BBE\u7F6E\u4E86 unique=true \u548C index=true\uFF0C`+"unique \u548C index \u4E0D\u80FD\u540C\u65F6\u8BBE\u7F6E\uFF0C\u8BF7\u5220\u9664\u5176\u4E00\uFF08\u5426\u5219\u4F1A\u521B\u5EFA\u91CD\u590D\u7D22\u5F15\uFF09"),J=!0;if(_.min!==void 0&&_.max!==void 0&&_.min!==null&&_.max!==null){if(_.min>_.max)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5C0F\u503C "${_.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${_.max}"`),J=!0}if(k||a){if(_.min!==void 0&&_.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${S} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),J=!0;if(_.max!==void 0&&_.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${S} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;if(_.default!==void 0&&_.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.default}"`),J=!0;if(_.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),J=!0;if(_.unique===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),J=!0}else if(S==="datetime"){if(_.min!==void 0&&_.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),J=!0;if(_.max!==void 0&&_.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;if(_.default!==void 0&&_.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF08\u5982\u9700\u5F53\u524D\u65F6\u95F4\uFF0C\u8BF7\u5728\u4E1A\u52A1\u5199\u5165\u65F6\u8D4B\u503C\uFF09\u3002\u5F53\u524D\u4E3A ${S$(_.default)}`),J=!0;if(_.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),J=!0}else if(x){let{precision:Z0,scale:j}=_;if(typeof Z0!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),J=!0;else if(Z0<1||Z0>65)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${Z0}`),J=!0;if(typeof j!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),J=!0;else if(j<0||j>30)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${j}`),J=!0;if(typeof Z0==="number"&&typeof j==="number"&&j>Z0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${Z0}, scale=${j}\uFF09`),J=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(S==="char"||S==="varchar"){if(_.max===void 0||_.max===null||typeof _.max!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),J=!0;else if(_.max>TQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${_.max} \u8D8A\u754C\uFF0C`+`${S} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${TQ} \u8303\u56F4\u5185`),J=!0;else{if(_.index===!0&&_.max>NQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${NQ}\uFF09`),J=!0;if(_.unique===!0&&_.max>DQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${DQ}\uFF09`),J=!0}if(N==="char"&&typeof _.max==="number"&&_.max>1)I.warn(`${X}${G} \u6587\u4EF6 ${V} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${_.max}`),J=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(b){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}else if(m){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${S$(_.default)}\uFF09`),J=!0}}}catch(G){I.error({msg:`${X}${Y.fileName} \u89E3\u6790\u5931\u8D25`,err:G}),J=!0}}if(J)throw new g({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:qH,RedisClient:IH}=globalThis.Bun;$0();class M${static sqlClient=null;static redisClient=null;static sqlConnectedAt=null;static redisConnectedAt=null;static sqlPoolMax=1;static mysqlVersionText=null;static mysqlVersionMajor=null;static async connectSql($){let Z=$||{},J=typeof Z.host==="string"?Z.host.trim():"",Y=typeof Z.port==="number"?Z.port:NaN,Q=typeof Z.username==="string"?Z.username.trim():"",X=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",G=typeof Z.database==="string"?Z.database.trim():"";if(!J)throw new g({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(Y)||Y<1||Y>65535)throw new g({message:`\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.port \u975E\u6CD5\uFF08\u5F53\u524D\u503C\uFF1A${String(Z.port)}\uFF09`,kind:"validation"});if(!Q)throw new g({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!G)throw new g({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let U=encodeURIComponent(Q),V=encodeURIComponent(X),M=encodeURIComponent(G),z=`mysql://${U}:${V}@${J}:${Y}/${M}`,_=new qH({url:z,max:Z.poolMax??1,bigint:!1});try{let C=(async()=>{let S=await _`SELECT VERSION() AS version`,D=typeof S?.[0]?.version==="string"?S?.[0]?.version:String(S?.[0]?.version||""),N=D.split(".")[0],w=Number(N);if(!Number.isFinite(w))throw new g({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${D}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(w<8)throw new g({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${D}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=D,this.mysqlVersionMajor=w,D})(),E=new Promise((S,D)=>{setTimeout(()=>{D(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([C,E]),this.sqlClient=_,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,_}catch(L){I.error({err:L,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await _?.close()}catch{}if(h$(L))throw L.logged=!0,L;let C=`SQL \u8FDE\u63A5\u5931\u8D25: ${L&&typeof L.message==="string"?L.message:String(L)}`;throw new g({message:C,kind:"runtime",logged:!0,cause:L,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED SQL \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.sqlClient=null,this.sqlConnectedAt=null}}static getSql(){if(!this.sqlClient)throw Error("SQL \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectSql()");return this.sqlClient}static async connectRedis($){let Z=$||{};try{let J=Z.host||"127.0.0.1",Y=Z.port||6379,Q=Z.username||"",X=Z.password||"",G=Z.db||0,U="",V=Q?encodeURIComponent(Q):"",M=X?encodeURIComponent(X):"";if(V&&M)U=`${V}:${M}@`;else if(M)U=`:${M}@`;let z=`redis://${U}${J}:${Y}/${G}`,_=new IH(z,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await _.ping(),this.redisClient=_,this.redisConnectedAt=Date.now(),_}catch(J){I.error({err:J,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let Y=`Redis \u8FDE\u63A5\u5931\u8D25: ${J&&typeof J.message==="string"?J.message:String(J)}`;throw new g({message:Y,kind:"runtime",logged:!0,cause:J,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED Redis \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.redisClient=null}}static getRedis(){if(!this.redisClient)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");return this.redisClient}static async connect($){try{await this.connectSql($.db||{}),await this.connectRedis($.redis||{})}catch(Z){let J=typeof process?.env?.NODE_ENV==="string"?"development":"";if(I.error({env:J,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),h$(Z))throw Z.logged=!0,Z;let Y=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new g({message:Y,kind:"runtime",logged:!0,cause:Z,meta:{subsystem:"connect",operation:"connect"}})}}static async disconnect(){await this.disconnectSql(),await this.disconnectRedis()}static isConnected(){return{sql:this.sqlClient!==null,redis:this.redisClient!==null}}static getStatus(){let $=Date.now();return{sql:{connected:this.sqlClient!==null,connectedAt:this.sqlConnectedAt,uptime:this.sqlConnectedAt?$-this.sqlConnectedAt:null,poolMax:this.sqlPoolMax,mysqlVersionText:this.mysqlVersionText,mysqlVersionMajor:this.mysqlVersionMajor},redis:{connected:this.redisClient!==null,connectedAt:this.redisConnectedAt,uptime:this.redisConnectedAt?$-this.redisConnectedAt:null}}}static __setMockSql($){this.sqlClient=$}static __setMockRedis($){this.redisClient=$}static __reset(){this.sqlClient=null,this.redisClient=null,this.sqlConnectedAt=null,this.redisConnectedAt=null,this.sqlPoolMax=1,this.mysqlVersionText=null,this.mysqlVersionMajor=null}}$0();$0();async function gQ($){let Z=new Map;for(let J of $)try{if(J.type!=="api")continue;let Y=J,Q=Y.path,X={name:Y.name,handler:Y.handler,route:Q},G=Y.method;if(typeof G==="string"){let _=G.toUpperCase(),L=_==="POST,GET"?"GET,POST":_;X.method=["GET","POST","GET,POST"].includes(L)?L:"POST"}else X.method="POST";let U=Y.auth;if(U!==void 0)X.auth=U;let V=Y.fields;if(V!==void 0)X.fields=V;let M=Y.required;if(M!==void 0)X.required=M;let z=Y.rawBody;if(z!==void 0)X.rawBody=z;Z.set(Q,X)}catch(Y){throw I.error({err:Y,api:J.relativePath,file:J.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new g({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"api",operation:"load",relativePath:J.relativePath,filePath:J.filePath}})}return Z}$0();u0();function wZ($,Z={}){let J=Z.moduleLabel||"\u6A21\u5757",Y=Z.getName||((_)=>{let L=_.moduleName;if(typeof L==="string"&&L.trim()!=="")return L;return R$(_.fileName)}),Q=Z.getDeps||((_)=>{let L=_.deps;if(!Array.isArray(L))return[];return L.filter((C)=>typeof C==="string")}),X=[],G=new Set,U=new Set,V={},M=!0;for(let _ of $){let L=Y(_);if(typeof L!=="string"||L.trim()===""){I.error({item:_,msg:`${J} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),M=!1;continue}if(V[L]){I.error({name:L,first:V[L],second:_,msg:`${J} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),M=!1;continue}V[L]=_}if(!M)return!1;for(let _ of $){let L=Y(_),C=Q(_);if(!Array.isArray(C)){I.error({module:L,item:_,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),M=!1;continue}for(let E of C){if(typeof E!=="string"){I.error({module:L,dependency:E,item:_,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),M=!1;continue}if(!V[E])I.error({module:L,dependency:E,msg:`${J} \u4F9D\u8D56\u672A\u627E\u5230`}),M=!1}}if(!M)return!1;let z=(_)=>{if(G.has(_))return;if(U.has(_)){I.error({module:_,msg:`${J} \u5FAA\u73AF\u4F9D\u8D56`}),M=!1;return}let L=V[_];if(!L)return;let C=Q(L);U.add(_);for(let E of C)z(E);U.delete(_),G.add(_),X.push(L)};for(let _ of $){let L=Y(_);z(L)}return M?X:!1}async function hQ($){let Z=[],J=$.filter((Q)=>{let X=Q.moduleName;if(typeof X!=="string"||X.trim()==="")return!1;if((Object.hasOwn(Q,"enable")?Q.enable:void 0)===!1)return!1;return!0}),Y=wZ(J,{moduleLabel:"\u94A9\u5B50"});if(Y===!1)throw new g({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Q of Y){let X=Q.moduleName,G=Object.hasOwn(Q,"deps")?Q.deps:void 0,U=Array.isArray(G)?G.filter((z)=>typeof z==="string"):[],V=Object.hasOwn(Q,"handler")?Q.handler:void 0;if(typeof V!=="function")throw Error(`Hook '${X}' handler \u5FC5\u987B\u662F\u51FD\u6570`);let M=V;Z.push({name:X,enable:!0,deps:U,handler:M})}return Z}$0();async function bQ($,Z){let J=[],Y=$.filter((X)=>{let G=X.moduleName;if(typeof G!=="string"||G.trim()==="")return!1;if((Object.hasOwn(X,"enable")?X.enable:void 0)===!1)return!1;return!0}),Q=wZ(Y,{moduleLabel:"\u63D2\u4EF6"});if(Q===!1)throw new g({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let X of Q){let G=X.moduleName,U=Object.hasOwn(X,"deps")?X.deps:void 0,V=Array.isArray(U)?U.filter((_)=>typeof _==="string"):[],M=Object.hasOwn(X,"handler")?X.handler:void 0;if(typeof M!=="function")throw Error(`\u63D2\u4EF6 '${G}' handler \u5FC5\u987B\u662F\u51FD\u6570`);let z=M;try{let _=await z(Z);Z[G]=_,J.push({name:G,enable:!0,deps:V,handler:z})}catch(_){throw I.error({err:_,plugin:G,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new g({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${G}`,logged:!0,cause:_,meta:{subsystem:"plugin",operation:"init",plugin:G}})}}return J}IZ();$0();function cQ($,Z){let J=$.headers.get("x-forwarded-for");if(typeof J==="string"&&J.trim()){let U=J.split(",")[0];if(typeof U==="string"&&U.trim())return U.trim()}let Y=$.headers.get("x-real-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();let Q=$.headers.get("cf-connecting-ip");if(typeof Q==="string"&&Q.trim())return Q.trim();let X=$.headers.get("x-client-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("true-client-ip");if(typeof G==="string"&&G.trim())return G.trim();if(Z&&typeof Z.requestIP==="function"){let U=Z.requestIP($);if(U&&typeof U.address==="string"&&U.address.trim())return U.address.trim()}return"unknown"}$0();function B$($,Z,J=1,Y=null,Q=null,X=null){if($.requestId)I.info({event:"request_blocked",reason:Z,reasonCode:X,code:J,detail:Q,msg:"request blocked"});return Response.json({code:J,msg:Z,data:Y,detail:Q},{headers:$.corsHeaders})}function bJ($){if($.api&&$.requestId)I.info({event:"request_done",msg:"request done"});if($.response)return $.response;if($.result!==void 0){let Z=$.result;if(typeof Z==="string")Z={code:0,msg:Z};else if(Z&&typeof Z==="object"){if(!("code"in Z))Z={code:0,...Z}}if(Z&&typeof Z==="object"){let J=JSON.stringify(Z,(Y,Q)=>typeof Q==="bigint"?Q.toString():Q);return new Response(J,{headers:{...$.corsHeaders,"Content-Type":"application/json"}})}else return Response.json(Z,{headers:$.corsHeaders})}return Response.json({code:1,msg:"\u672A\u751F\u6210\u54CD\u5E94"},{headers:$.corsHeaders})}u0();function pQ($,Z,J){return async(Y,Q)=>{let X=aY(),U=new URL(Y.url).pathname||"/",V=cQ(Y,Q),M=Date.now(),z={method:Y.method,body:{},user:{},req:Y,now:M,ip:V,headers:Y.headers,route:U,requestId:X,corsHeaders:{"X-Request-ID":X}},_=$.get(U);if(_)z.api=_;return ZQ({requestId:X,method:Y.method,route:U,ip:V,now:M},async()=>{try{for(let L of Z)if(await L.handler(J,z),z.response)return z.response;if(z.api&&Y.method!=="OPTIONS"){let L={event:"request",apiName:z.api.name};if(z.body&&Object.keys(z.body).length>0)L.body=z.body;L.msg="request",I.info(L)}if(!z.api){if(Y.method!=="OPTIONS")z.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:z.corsHeaders})}else if(z.api.handler){let L=await z.api.handler(J,z);if(L instanceof Response)z.response=L;else z.result=L}return bJ(z)}catch(L){let C=z.api?U:Y.url;return I.error({err:L,path:C,msg:"\u8BF7\u6C42\u9519\u8BEF"}),z.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},bJ(z)}})}}L$();$0();L$();import{fileURLToPath as jH}from"url";var LH=jH(import.meta.url),P$=CZ(LH);var d4=N$(P$).endsWith("/dist")?P$:o(P$,"dist"),n4=o(P$,"checks"),s4=o(P$,"plugins"),o4=o(P$,"hooks"),l4=o(P$,"apis"),r4=o(P$,"tables"),s0=process.cwd(),i4=o(s0,"checks"),t4=o(s0,"plugins"),a4=o(s0,"hooks"),e4=o(s0,"apis"),$5=o(s0,"tables"),Z5=o(s0,"addons");function SZ($,Z={}){let J=Z.origin||"*";return{"Access-Control-Allow-Origin":J==="*"?$.headers.get("origin")||"*":J,"Access-Control-Allow-Methods":Z.methods||"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":Z.allowedHeaders||"Content-Type, Authorization, authorization, token","Access-Control-Expose-Headers":Z.exposedHeaders||"Content-Range, X-Content-Range, Authorization, authorization, token","Access-Control-Max-Age":String(Z.maxAge||86400),"Access-Control-Allow-Credentials":Z.credentials||"true"}}function uQ($=void 0){return async(Z)=>{let J=SZ(Z,$),Y=new URL(Z.url),Q=o(s0,"public",Y.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:J});let X=Bun.file(Q);if(await X.exists())return new Response(X,{headers:{"Content-Type":X.type||"application/octet-stream",...J}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:J})}catch(X){return I.error({err:X,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:J})}}}$0();u0();var BH=($)=>{let Z=$.split("/").map((X)=>X.trim()).filter((X)=>X.length>0),Y=(Z[1]||"")==="addon"?4:3,Q=Z.slice(0,Math.min(Y,Z.length));if(Q.length===0)return"";return`/${Q.join("/")}`};async function mQ($,Z){if(!$.db)throw new g({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new g({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){I.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let Q=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],X=tY(Q,(z)=>z.path),G=[],U=[],V=[],M=new Set;for(let z of Z){if(z.type!=="api")continue;let _=z,L=_.path,C=_.name,E=_.addonName;if(typeof L!=="string"||L.trim()==="")continue;if(typeof C!=="string"||C.trim()==="")continue;let S=typeof E==="string"?E:"",D=_.auth,N=D===!1||D===0?0:1,w=BH(L);M.add(L);let k=X[L];if(k){if(C!==k.name||L!==k.path||S!==k.addonName||w!==k.parentPath||N!==k.auth)U.push({id:k.id,name:C,path:L,parentPath:w,addonName:S,auth:N})}else G.push({name:C,path:L,parentPath:w,addonName:S,auth:N})}for(let z of Q)if(!M.has(z.path))V.push(z.id);if(U.length>0)try{await $.db.updBatch("addon_admin_api",U.map((z)=>{return{id:z.id,data:{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(G.length>0)try{await $.db.insBatch("addon_admin_api",G.map((z)=>{return{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(V.length>0)try{await $.db.delForceBatch("addon_admin_api",V)}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function dQ($){if(!$.cache)throw new g({message:"\u540C\u6B65\u7F13\u5B58\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});await $.cache.cacheApis(),await $.cache.cacheMenus(),await $.cache.rebuildRoleApiPermissions()}import{createSign as PH}from"crypto";class u${static md5($,Z="hex"){let J=new Bun.CryptoHasher("md5");return J.update($),J.digest(Z)}static hmacMd5($,Z,J="hex"){let Y=new Bun.CryptoHasher("md5",$);return Y.update(Z),Y.digest(J)}static sha1($,Z="hex"){let J=new Bun.CryptoHasher("sha1");return J.update($),J.digest(Z)}static hmacSha1($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha1",$);return Y.update(Z),Y.digest(J)}static sha256($,Z="hex"){let J=new Bun.CryptoHasher("sha256");return J.update($),J.digest(Z)}static rsaSha256($,Z,J="hex"){let Y=PH("RSA-SHA256");return Y.update($),Y.sign(Z,J)}static hmacSha256($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha256",$);return Y.update(Z),Y.digest(J)}static sha512($,Z="hex"){let J=new Bun.CryptoHasher("sha512");return J.update($),J.digest(Z)}static hmacSha512($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha512",$);return Y.update(Z),Y.digest(J)}static hash($,Z,J="hex"){let Y=new Bun.CryptoHasher($);return Y.update(Z),Y.digest(J)}static hmac($,Z,J,Y="hex"){let Q=new Bun.CryptoHasher($,Z);return Q.update(J),Q.digest(Y)}static async hashFile($,Z="sha256",J="hex"){let Y=Bun.file($),Q=new Bun.CryptoHasher(Z),G=Y.stream().getReader();try{while(!0){let{done:U,value:V}=await G.read();if(U)break;Q.update(V)}return Q.digest(J)}finally{G.releaseLock()}}static async hashPassword($,Z={}){let J=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,J)}static async verifyPassword($,Z){return await Bun.password.verify($,Z)}static base64Encode($){return Buffer.from($,"utf8").toString("base64")}static base64Decode($){return Buffer.from($,"base64").toString("utf8")}static randomString($){let Z=Math.ceil($/2),J=crypto.getRandomValues(new Uint8Array(Z)),Y="";for(let Q=0;Q<J.length;Q++)Y+=J[Q].toString(16).padStart(2,"0");return Y.slice(0,$)}static fastHash($,Z=0){let J=Bun.hash($,Z);return typeof J==="bigint"?Number(J):J}}$0();async function nQ($,Z={}){if(!Z.devPassword)return;if(!$.db)throw Error("\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316");if(!$.cache)throw Error("\u540C\u6B65\u5F00\u53D1\uFF1Actx.cache \u672A\u521D\u59CB\u5316");if(!(await $.db.tableExists("addon_admin_admin")).data){I.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){I.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){I.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let J=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Y=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Q=await $.db.getOne({table:"addon_admin_role",where:{code:"dev"}}),X={code:"dev",name:"\u5F00\u53D1\u8005\u89D2\u8272",description:"\u62E5\u6709\u6240\u6709\u83DC\u5355\u548C\u63A5\u53E3\u6743\u9650\u7684\u5F00\u53D1\u8005\u89D2\u8272",menus:J.data.lists.map((M)=>M.path).filter((M)=>typeof M==="string"&&M.length>0),apis:Y.data.lists.map((M)=>M.path).filter((M)=>typeof M==="string"&&M.length>0),sort:0};if(typeof Q.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:X.name,description:X.description,menus:X.menus,apis:X.apis,sort:X.sort}});else await $.db.insData({table:"addon_admin_role",data:X});let G={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await u$.hashPassword(u$.sha256(Z.devPassword+"befly")),roleCode:"dev",roleType:"admin"};if(typeof(await $.db.getOne({table:"addon_admin_admin",where:{username:"dev"}})).data.id==="number")await $.db.updData({table:"addon_admin_admin",where:{username:"dev"},data:{nickname:G.nickname,email:G.email,username:G.username,password:G.password,roleCode:G.roleCode,roleType:G.roleType}});else await $.db.insData({table:"addon_admin_admin",data:G});let V=[{code:"user",name:"\u7528\u6237\u89D2\u8272",description:"\u666E\u901A\u7528\u6237\u89D2\u8272",sort:1},{code:"admin",name:"\u7BA1\u7406\u5458\u89D2\u8272",description:"\u7BA1\u7406\u5458\u89D2\u8272",sort:2},{code:"guest",name:"\u8BBF\u5BA2\u89D2\u8272",description:"\u8BBF\u5BA2\u89D2\u8272",sort:3}];for(let M of V)if((await $.db.getOne({table:"addon_admin_role",where:{code:M.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:M.code},data:{name:M.name,description:M.description,sort:M.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:M.code,name:M.name,description:M.description,menus:[],apis:[],sort:M.sort}})}$0();hJ();function CH($){let Z=$.config?.disableMenus,J=Array.isArray(Z)?Z:[],Y=[];for(let X of J){if(typeof X!=="string")continue;let G=X.trim();if(!G)continue;Y.push(G)}if(Y.length===0)return()=>!1;let Q=Y.map((X)=>new Bun.Glob(X));return(X)=>{if(typeof X!=="string")return!1;let G=X.trim();if(!G)return!1;let U=[];if(U.push(G),G.startsWith("/"))U.push(G.slice(1));else U.push(`/${G}`);for(let V of Q){let M=typeof V==="object"&&V!==null&&"match"in V?V.match:void 0;if(typeof M!=="function")throw Error("\u540C\u6B65\u83DC\u5355\uFF1A\u5F53\u524D Bun \u7248\u672C\u4E0D\u652F\u6301 Bun.Glob.match\uFF0C\u65E0\u6CD5\u6309 disableMenus \u505A glob \u5339\u914D");let z=M;for(let _ of U)if(z.call(V,_))return!0}return!1}}function sQ($,Z){let J=[];for(let Y of $){if(Y===null||typeof Y!=="object")continue;let Q=typeof Y.path==="string"?String(Y.path).trim():"";if(Q&&Z(Q))continue;let X=Y.children,G=Array.isArray(X)&&X.length>0?sQ(X,Z):[],U={};if(typeof Y.name==="string")U.name=Y.name;if(typeof Y.path==="string")U.path=Y.path;if(typeof Y.sort==="number")U.sort=Y.sort;if(typeof Y.parentPath==="string")U.parentPath=Y.parentPath;if(G.length>0)U.children=G;J.push(U)}return J}function EH($){let Z=new Map,J=[];for(let Y of $)J.push({menu:Y,parentPathFromTree:""});while(J.length>0){let Y=J.pop(),Q=Y?Y.menu:null;if(!Q)continue;let X=typeof Q.path==="string"?Q.path:"",G=Q.children;if(G&&Array.isArray(G)&&G.length>0){let _=typeof X==="string"?X:"";for(let L of G)J.push({menu:L,parentPathFromTree:_})}if(!X)continue;let U=typeof Q.name==="string"?Q.name:"";if(!U)continue;let V=typeof Q.sort==="number"?Q.sort:999999,z=typeof Q.parentPath==="string"?Q.parentPath:typeof Y?.parentPathFromTree==="string"?Y.parentPathFromTree:BQ(X);Z.set(X,{path:X,name:U,sort:V,parentPath:z})}return Z}async function oQ($,Z){if(!$.db)throw new g({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new g({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new g({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let J=CH($),Y=sQ(Z,J),Q=EH(Y),X=new Set;for(let U of Q.keys())X.add(U);let G="addon_admin_menu";await $.db.trans(async(U)=>{let M=(await U.getAll({table:G,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],z=M.filter((w)=>typeof w?.state==="number"&&w.state>=0),_=new Map,L=new Set,C=new Map;for(let w of z){if(typeof w?.path!=="string"||!w.path)continue;if(typeof w?.id!=="number")continue;if(J(w.path))continue;let k=_.get(w.path);if(!k){_.set(w.path,w);continue}let b=typeof k?.id==="number"?k.id:0,x=w.id;if(x>b){if(_.set(w.path,w),b>0)L.add(b);let m=C.get(w.path)||{keptId:x,removedIds:[]};if(m.keptId=x,b>0)m.removedIds.push(b);C.set(w.path,m)}else{if(x>0)L.add(x);let m=C.get(w.path)||{keptId:b,removedIds:[]};if(m.keptId=b,x>0)m.removedIds.push(x);C.set(w.path,m)}}if(C.size>0){let w=[];for(let k of C.entries()){let b=k[0],x=k[1];if(w.push({path:b,keptId:x.keptId,removedIds:x.removedIds}),w.length>=10)break}I.warn({table:G,duplicatePaths:C.size,duplicateIds:L.size,examples:w,msg:"addon_admin_menu \u68C0\u6D4B\u5230\u91CD\u590D path \u8BB0\u5F55\uFF1A\u5DF2\u4FDD\u7559 id \u6700\u5927\u7684\u4E00\u6761\u5E76\u5220\u9664\u5176\u4F59\u8BB0\u5F55"})}let E=[],S=[];for(let w of Q.values()){let k=_.get(w.path);if(k){let b=typeof k.parentPath==="string"?k.parentPath:"";if(k.name!==w.name||k.sort!==w.sort||b!==w.parentPath)E.push({id:k.id,data:{name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort}})}else S.push({name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort})}if(E.length>0)await U.updBatch(G,E);if(S.length>0)await U.insBatch(G,S);let D=new Set;for(let w of z){if(typeof w?.path!=="string"||!w.path)continue;if(!X.has(w.path)){if(typeof w?.id==="number")D.add(w.id)}}for(let w of L)if(typeof w==="number"&&w>0)D.add(w);for(let w of M){if(typeof w?.path!=="string"||!w.path)continue;if(!J(w.path))continue;if(typeof w?.id==="number"&&w.id>0)D.add(w.id)}let N=Array.from(D);if(N.length>0)await U.delForceBatch(G,N)})}$0();function wH($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function SH($){let Z=String($.type??"").trim(),Y=(typeof $.input==="string"?$.input.trim():"")||wH(Z);return{type:Z,input:Y}}function W$($){let Z=SH($),J=$.default??null;if(J===null){if(Z.input==="array"||Z.input==="array_number"||Z.input==="array_integer")J="[]"}return{name:$.name,type:Z.type,input:Z.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:J,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function pJ($){return String($).replace(/"/g,"\\\"")}function uJ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let J of $)Z.push(uJ(J));return Z}return String($)}function TH($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function NH($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function cJ($){if(TH($))return $;if(Array.isArray($)){let Z=[];for(let J of $){let Y=cJ(J);if(Y===null)return null;Z.push(Y)}return Z}if(NH($)){let Z={};for(let[J,Y]of Object.entries($)){if(Y===void 0)continue;let Q=cJ(Y);if(Q===null)return null;Z[J]=Q}return Z}return null}function lQ($){if(!Array.isArray($))return[];let Z=[];for(let J of $){if(J===null){Z.push(null);continue}if(typeof J==="string"||typeof J==="number"||typeof J==="boolean"){Z.push(J);continue}if(typeof J==="bigint"){Z.push(String(J));continue}if(J instanceof Date){Z.push(J);continue}let Y=cJ(J);if(Y!==null){Z.push(Y);continue}Z.push(String(J))}return Z}function C$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}u0();class T{static DB_VERSION_REQUIREMENTS={MYSQL_MIN_MAJOR:8};static MYSQL_TABLE_CONFIG={ENGINE:"InnoDB",CHARSET:"utf8mb4",COLLATE:"utf8mb4_0900_ai_ci"};static SYSTEM_FIELDS=[{name:"id",comment:"\u4E3B\u952EID",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT"},{name:"created_at",comment:"\u521B\u5EFA\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"updated_at",comment:"\u66F4\u65B0\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"deleted_at",comment:"\u5220\u9664\u65F6\u95F4",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"state",comment:"\u72B6\u6001\u5B57\u6BB5",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 1"}];static SYSTEM_INDEX_FIELDS=["created_at","updated_at","state"];static TYPE_MAPPING={tinyint:"TINYINT",smallint:"SMALLINT",mediumint:"MEDIUMINT",int:"INT",bigint:"BIGINT",decimal:"DECIMAL",float:"FLOAT",double:"DOUBLE",char:"CHAR",varchar:"VARCHAR",datetime:"DATETIME",tinytext:"TINYTEXT",text:"MEDIUMTEXT",mediumtext:"MEDIUMTEXT",longtext:"LONGTEXT",json:"JSON"};static TEXT_FAMILY=new Set(["tinytext","text","mediumtext","longtext"]);static INT_TYPES=new Set(["tinyint","smallint","mediumint","int","bigint"]);static DECIMAL_TYPES=new Set(["decimal"]);static FLOAT_TYPES=new Set(["float","double"]);db;dbName;constructor($){if(!$?.db)throw Error("\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316");if(!$.config)throw Error("\u540C\u6B65\u8868\uFF1Actx.config \u672A\u521D\u59CB\u5316");this.dbName=String($.config.db?.database||""),this.db=$.db}async run($){try{if(!Array.isArray($))throw Error("\u540C\u6B65\u8868\uFF1A\u8BF7\u4F20\u5165\u591A\u4E2A\u8868\u5B9A\u4E49\u7EC4\u6210\u7684\u6570\u7EC4");await T.ensureDbVersion(this.db);let Z=[],J=[];for(let Y of $){if(!Y||Y.type!=="table")continue;let Q=Y.source==="addon"?`addon_${c(Y.addonName)}_${c(Y.fileName)}`:c(Y.fileName),X=Y.content;for(let V of Object.values(X))T.normalizeFieldDefinitionInPlace(V);let G=await T.tableExists(this.db,this.dbName,Q),U={item:Y,tableName:Q,tableFields:X,existsTable:G,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(G){let V=await T.getTableColumns(this.db,this.dbName,Q),M=await T.getTableIndexes(this.db,this.dbName,Q),z=T.collectIncompatibleTypeChanges(Q,V,X);for(let _ of z)J.push(_);U.existingColumns=V,U.existingIndexes=M}Z.push(U)}if(J.length>0){let Y=[];for(let G of J)Y.push(`- ${G.tableName}.${G.dbFieldName}: ${G.currentType} -> ${G.expectedType}`);let Q=[];Q.push("\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4\uFF08\u68C0\u6D4B\u5230\u4E0D\u517C\u5BB9/\u6536\u7F29\u53D8\u66F4\uFF09:");for(let G of Y)Q.push(G);Q.push("\u8BF4\u660E: \u4EC5\u5141\u8BB8\u540C\u7C7B\u578B\u7684\u5BBD\u5316\u53D8\u66F4\uFF08\u5982 TINYINT->SMALLINT->INT->BIGINT\uFF09\uFF0C\u4EE5\u53CA\u90E8\u5206\u517C\u5BB9\u53D8\u66F4\uFF08\u5982 VARCHAR->TEXT\u3001CHAR/VARCHAR \u4E92\u8F6C\u3001float->double\uFF09\u3002"),Q.push("\u63D0\u793A: \u82E5\u786E\u9700\u6536\u7F29\uFF0C\u8BF7\u5148\u624B\u5DE5\u8FC1\u79FB/\u6E05\u6D17\u6570\u636E\u540E\u518D\u6267\u884C\u540C\u6B65\u3002");let X=Error(Q.join(`
|
|
7
|
+
`));throw X.__syncTableNoLog=!0,X}for(let Y of Z){if(!Y.existsTable)continue;if(!Y.existingColumns||!Y.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${Y.tableName}\uFF09`);let Q=T.buildTablePlan({tableName:Y.tableName,fields:Y.tableFields,existingColumns:Y.existingColumns,existingIndexes:Y.existingIndexes});Y.plan=Q.plan,Y.planSummary=Q.summary,Y.planDetails=Q.details}for(let Y of Z){let{item:Q,tableName:X,tableFields:G,existsTable:U}=Y;try{if(U){let{plan:V,planSummary:M,planDetails:z}=Y;if(V&&V.changed&&M&&z){let _=`[\u8868 ${X}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${M.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${M.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${M.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${M.indexChanges}`,L=z.fieldChanges.flatMap((S)=>S.changes.map((D)=>{let N=String(D.current??""),w=String(D.expected??"");return`- ${S.dbFieldName}.${D.type}: ${N} -> ${w}`})),C=z.indexChanges.map((S)=>{let D=`idx_${S.fieldName}`===S.indexName?S.indexName:S.indexName;if(S.action==="create")return`- index.${D}: \u65E0 -> ${S.indexName}(${S.fieldName})`;return`- index.${D}: ${S.indexName}(${S.fieldName}) -> \u65E0`}),E=[];for(let S of L)E.push(S);for(let S of C)E.push(S);I.debug(_);for(let S of E)I.debug(`[\u8868 ${X}] \u53D8\u66F4\u660E\u7EC6 ${S}`);await T.applyTablePlan(this.db,X,V)}}else await T.createTable(this.db,X,G)}catch(V){let M=String(V?.message||V),z=V?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:X,operation:U?"modifyTable":"createTable",source:Q.source,sourceName:Q.sourceName,addonName:Q.addonName,fileName:Q.fileName,filePath:Q.filePath,errorMessage:M,sqlInfo:z?{sql:z.sql,params:z.params,duration:z.duration}:null,err:V}),V.__syncTableLogged=!0,V}}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let J=String(Z?.message||Z),Y=Z?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:J,sqlInfo:Y?{sql:Y.sql,params:Y.params,duration:Y.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,J){let Y=String(J?.message||J),Q=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${Y}`);if(J?.sqlInfo)Q.sqlInfo=J.sqlInfo;return Q}static normalizeFieldDefinitionInPlace($){let Z=W$($);$.detail=Z.detail,$.min=Z.min,$.max=Z.max,$.precision=Z.precision,$.scale=Z.scale,$.default=Z.default,$.index=Z.index,$.unique=Z.unique,$.nullable=Z.nullable,$.unsigned=Z.unsigned,$.input=Z.input}static isStringOrArrayType($){return $==="char"||$==="varchar"}static quoteIdentifier($){if(typeof $!=="string")throw Error(`quoteIdentifier \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`);let Z=$.trim();if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684 SQL \u6807\u8BC6\u7B26: ${Z}`);return`\`${Z}\``}static getSqlType($,Z,J=!1,Y=null,Q=null){let X=String($||"").toLowerCase(),G=T.TYPE_MAPPING;if(T.isStringOrArrayType(X)){if(typeof Z!=="number")throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A${X} \u7C7B\u578B\u7F3A\u5931 max\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09`);return`${G[X]}(${Z})`}if(T.DECIMAL_TYPES.has(X)){if(typeof Y!=="number"||typeof Q!=="number")throw Error("\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1Adecimal \u7C7B\u578B\u7F3A\u5931 precision/scale\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09");let V=`${G[X]}(${Y},${Q})`;return J?`${V} UNSIGNED`:V}let U=G[X]||"TEXT";if((T.INT_TYPES.has(X)||T.FLOAT_TYPES.has(X))&&J)return`${U} UNSIGNED`;return U}static resolveDefaultValue($,Z){let J=String(Z||"").toLowerCase();if($!==null&&$!=="null")return $;switch(J){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":case"decimal":case"float":case"double":return 0;case"char":case"varchar":return"";case"datetime":return"null";case"tinytext":case"text":case"mediumtext":case"longtext":case"json":return"null";default:return $}}static generateDefaultSql($,Z){let J=String(Z||"").toLowerCase();if(T.TEXT_FAMILY.has(J)||J==="json"||$==="null")return"";if(T.INT_TYPES.has(J)||T.DECIMAL_TYPES.has(J)||T.FLOAT_TYPES.has(J)||T.isStringOrArrayType(J))if(typeof $==="number"&&!Number.isNaN($))return` DEFAULT ${$}`;else return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(J==="datetime"){if(typeof $==="string"){let Y=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(Y))return` DEFAULT ${Y.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${Y.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let J=String(Z||"").toLowerCase(),Y=String($).trim();if(T.INT_TYPES.has(J)||T.DECIMAL_TYPES.has(J)||T.FLOAT_TYPES.has(J)){if(/^[+-]?\d+(?:\.\d+)?$/.test(Y)){let Q="",X=Y;if(X.startsWith("+")||X.startsWith("-"))Q=X.startsWith("-")?"-":"",X=X.slice(1);let G=X.split("."),U=G[0]||"0",V=G[1]||"",M=U.replace(/^0+(\d)/,"$1"),z=V.replace(/0+$/g,""),_=M===""?"0":M,L=z.length>0?`${_}.${z}`:_;return Q==="-"&&L!=="0"?`-${L}`:L}}return Y}static buildIndexClause($,Z,J){let Y=T.quoteIdentifier($);if(J==="create"){let Q=T.quoteIdentifier(Z);return`ADD INDEX ${Y} (${Q})`}return`DROP INDEX ${Y}`}static getSystemColumnDef($){let Z=null;for(let Y of T.SYSTEM_FIELDS)if(Y.name===$){Z=Y;break}if(!Z)return null;return`${T.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${pJ(Z.comment)}"`}static buildSystemColumnDefs(){let $=[];for(let Z of T.SYSTEM_FIELDS){let J=T.getSystemColumnDef(Z.name);if(J)$.push(J)}return $}static getSystemFieldNames(){return T.SYSTEM_FIELDS.filter(($)=>$.name!=="id").map(($)=>$.name)}static async runIndexBatch($,Z,J,Y){if(J.length===0)return;let X=`ALTER TABLE ${T.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.join(", ")}`;try{await T.executeDDLSafely($,X)}catch(G){throw I.error({err:G,table:Z,msg:Y}),G}}static buildBusinessColumnDefs($){let Z=[];for(let[J,Y]of Object.entries($))Z.push(T.buildColumnSql(J,Y));return Z}static buildColumnSql($,Z){let J=W$(Z),Y=c($),Q=T.quoteIdentifier(Y),X=T.getSqlType(J.type,J.max,J.unsigned,J.precision,J.scale),G=T.resolveDefaultValue(J.default,J.type),U=T.generateDefaultSql(G,J.type),V=J.unique?" UNIQUE":"",M=J.nullable?" NULL":" NOT NULL";return`${Q} ${X}${V}${M}${U} COMMENT "${pJ(J.name)}"`}static generateDDLClause($,Z,J=!1){return`${J?"ADD COLUMN":"MODIFY COLUMN"} ${T.buildColumnSql($,Z)}`}static buildTablePlan($){let Z=T.getSystemFieldNames(),J=T.buildFieldPlan({tableName:$.tableName,fields:$.fields,existingColumns:$.existingColumns}),Y=T.buildSystemFieldPlan({systemFieldNames:Z,existingColumns:$.existingColumns}),Q=T.buildIndexPlan({fields:$.fields,existingColumns:$.existingColumns,existingIndexes:$.existingIndexes,systemFieldNames:Z}),X=[...J.alterClauses,...Y.alterClauses],G=Q.indexActions,U=J.addedBusiness,V=J.modified,M=Y.addedSystem;return{plan:{changed:X.length>0||G.length>0,alterClauses:X,indexActions:G},summary:{addedBusiness:U,addedSystem:M,modified:V,indexChanges:G.length},details:{fieldChanges:J.changeDetails,indexChanges:Q.indexActions}}}static buildFieldPlan($){let Z=[],J=0,Y=0,Q=[];for(let[X,G]of Object.entries($.fields)){let U=c(X);if($.existingColumns[U]){let V=T.compareFieldDefinition($.existingColumns[U],G);if(V.length>0)Y=Y+1,Q.push({fieldKey:X,dbFieldName:U,changes:V}),T.assertCompatibleTypeChange($.tableName,U,V,G),Z.push(T.generateDDLClause(X,G,!1))}else J=J+1,Z.push(T.generateDDLClause(X,G,!0))}return{alterClauses:Z,addedBusiness:J,modified:Y,changeDetails:Q}}static buildSystemFieldPlan($){let Z=[],J=0;for(let Y of $.systemFieldNames)if(!$.existingColumns[Y]){let Q=T.getSystemColumnDef(Y);if(Q)J=J+1,Z.push(`ADD COLUMN ${Q}`)}return{alterClauses:Z,addedSystem:J}}static buildIndexPlan($){let Z={};for(let Y of T.SYSTEM_INDEX_FIELDS)if($.existingColumns[Y]||$.systemFieldNames.includes(Y))Z[`idx_${Y}`]=Y;for(let[Y,Q]of Object.entries($.fields)){let X=c(Y);if(Q.index&&!Q.unique)Z[`idx_${X}`]=X}return{indexActions:[...Object.entries(Z).filter(([Y])=>!$.existingIndexes[Y]).map(([Y,Q])=>({action:"create",indexName:Y,fieldName:Q})),...Object.entries($.existingIndexes).filter(([Y,Q])=>!Z[Y]&&Y.startsWith("idx_")&&Array.isArray(Q)&&Q.length===1&&!T.SYSTEM_INDEX_FIELDS.includes(Q[0])).map(([Y,Q])=>({action:"drop",indexName:Y,fieldName:Q[0]}))]}}static assertCompatibleTypeChange($,Z,J,Y){let Q=J.find((M)=>M.type==="datatype");if(!Q)return;let X=String(Q.current||"").toLowerCase(),G=T.getSqlType(Y.type,Y.max??null,Y.unsigned??!1,Y.precision??null,Y.scale??null).toLowerCase(),U=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),V=G.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(U!==V&&!T.isCompatibleTypeChange(X,G))throw Error([`\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4: ${$}.${Z}`,`\u5F53\u524D\u7C7B\u578B: ${Q.current}`,`\u76EE\u6807\u7C7B\u578B: ${Q.expected}`,"\u8BF4\u660E: \u4EC5\u5141\u8BB8\u5BBD\u5316\u578B\u53D8\u66F4\uFF08\u5982 INT->BIGINT, VARCHAR->TEXT\uFF09\uFF0C\u4EE5\u53CA CHAR/VARCHAR \u4E92\u8F6C\uFF1BDATETIME \u4E0E BIGINT \u4E0D\u5141\u8BB8\u4E92\u8F6C\uFF08\u9700\u8981\u624B\u52A8\u8FC1\u79FB\u6570\u636E\uFF09"].join(`
|
|
8
|
+
`))}static collectIncompatibleTypeChanges($,Z,J){let Y=[];for(let[Q,X]of Object.entries(J)){let G=c(Q),U=Z[G];if(!U)continue;let M=T.compareFieldDefinition(U,X).find((E)=>E.type==="datatype");if(!M)continue;let z=String(M.current||"").toLowerCase(),_=String(M.expected||"").toLowerCase(),L=z.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),C=_.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(L!==C&&!T.isCompatibleTypeChange(z,_))Y.push({tableName:$,dbFieldName:G,currentType:String(M.current??""),expectedType:String(M.expected??"")})}return Y}static truncateForLog($,Z){let J=String($);if(Z<=0)return"";if(J.length<=Z)return J;let Y=Math.max(0,Math.floor(Z*0.6)),Q=Math.max(0,Z-Y),X=J.slice(0,Y),G=J.slice(Math.max(0,J.length-Q));return`${X} \u2026(truncated, total=${J.length})\u2026 ${G}`}static stripAlgorithmAndLock($){let Z=String($);return Z=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT|COPY)\b\s*,?\s*/gi,"").replace(/\bLOCK\s*=\s*(NONE|SHARED|EXCLUSIVE)\b\s*,?\s*/gi,""),Z=Z.replace(/^\s*(ALTER\s+TABLE\s+(?:`[^`]+`|[a-zA-Z_][a-zA-Z0-9_]*))\s*,\s*/i,"$1 "),Z=Z.replace(/,\s*,/g,", ").replace(/,\s*$/g,"").replace(/\s{2,}/g," ").trim(),Z}static buildDdlFallbackCandidates($){let Z=String($),J=[];if(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/i.test(Z)){let X=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/gi,"ALGORITHM=COPY");if(J.push({stmt:X,reason:"ALGORITHM \u2192 COPY"}),/\bLOCK\s*=\s*NONE\b/i.test(X))J.push({stmt:X.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=SHARED"),reason:"ALGORITHM \u2192 COPY, LOCK=SHARED"}),J.push({stmt:X.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=EXCLUSIVE"),reason:"ALGORITHM \u2192 COPY, LOCK=EXCLUSIVE"})}let Y=T.stripAlgorithmAndLock(Z);if(Y!==Z)J.push({stmt:Y,reason:"\u79FB\u9664 ALGORITHM/LOCK"});let Q=[];for(let X of J){if(!X.stmt||X.stmt.trim()==="")continue;if(X.stmt===Z)continue;if(Q.some((G)=>G.stmt===X.stmt))continue;Q.push(X)}return Q}static async executeDDLSafely($,Z){try{return await $.unsafe(Z),!0}catch(J){let Y=T.buildDdlFallbackCandidates(Z),Q=[],X=J;for(let z of Y)try{return await $.unsafe(z.stmt),I.debug(`[DDL\u964D\u7EA7] ${z.reason}\uFF08\u5DF2\u6210\u529F\uFF09`),!0}catch(_){X=_;let L=String(_?.message||_);Q.push(`${z.reason}: ${L}`)}let G=String(J?.message||J),U=T.truncateForLog(String(Z),2000),V=Q.length>0?Q.join(" | "):"(\u65E0)",M=Error(`SQL\u6267\u884C\u5931\u8D25: ${G}
|
|
9
9
|
SQL: ${U}
|
|
10
10
|
\u964D\u7EA7: ${V}`);if(J?.sqlInfo)M.sqlInfo=J.sqlInfo;if(!M.sqlInfo&&X?.sqlInfo)M.sqlInfo=X.sqlInfo;throw M}}static isCompatibleTypeChange($,Z){let J=String($||"").toLowerCase(),Y=String(Z||"").toLowerCase();if(J===Y)return!1;let Q=J.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),X=Y.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(T.TEXT_FAMILY.has(Q)&&T.TEXT_FAMILY.has(X))return!0;if(T.INT_TYPES.has(Q)&&T.INT_TYPES.has(X)){let G=["tinyint","smallint","mediumint","int","bigint"],U=G.indexOf(Q);if(G.indexOf(X)>U)return!0}if(Q==="float"&&X==="double")return!0;if(Q==="varchar"&&(X==="text"||X==="mediumtext"||X==="longtext"))return!0;if(Q==="char"&&X==="varchar"||Q==="varchar"&&X==="char")return!0;if(Q==="datetime"&&X==="bigint"||Q==="bigint"&&X==="datetime")return!1;return!1}static compareFieldDefinition($,Z){let J=[],Y=W$(Z),Q=T.getSqlType(Y.type,Y.max,Y.unsigned,Y.precision,Y.scale).toLowerCase().replace(/\s+/g," ").trim(),X=(typeof $.columnType==="string"&&$.columnType.trim()!==""?$.columnType:typeof $.type==="string"&&$.type.trim()!==""?T.isStringOrArrayType(Y.type)&&typeof $.max==="number"?`${$.type.trim()}(${$.max})`:$.type.trim():String($.type??"")).toLowerCase().replace(/\s+/g," ").trim(),G=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),U=T.INT_TYPES.has(G)?X.replace(/\([^)]*\)/g,"").replace(/\s+/g," ").trim():X;if(U!==Q)J.push({type:"datatype",current:U,expected:Q});let V=Y.nullable;if($.nullable!==V)J.push({type:"nullable",current:$.nullable,expected:V});let M=String(Y.type||"").toLowerCase();if(!T.TEXT_FAMILY.has(M)&&M!=="json"){let L=T.resolveDefaultValue(Y.default,Y.type),C=T.normalizeDefaultForCompare($.defaultValue,Y.type),E=T.normalizeDefaultForCompare(L,Y.type);if(C!==E)J.push({type:"default",current:$.defaultValue,expected:L})}let z=String($.comment??""),_=String(Y.name??"");if(z!==_)J.push({type:"comment",current:z,expected:_});return J}static async tableExists($,Z,J){try{return((await $.unsafe("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?",[Z,J])).data?.[0]?.count||0)>0}catch(Y){throw T.buildRuntimeIoError("\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728",J,Y)}}static async getTableColumns($,Z,J){let Y={};try{let Q=await $.unsafe("SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_COMMENT, COLUMN_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? ORDER BY ORDINAL_POSITION",[Z,J]);for(let X of Q.data){let G=uJ(X.COLUMN_DEFAULT);Y[X.COLUMN_NAME]={type:String(X.DATA_TYPE??""),columnType:String(X.COLUMN_TYPE??""),length:X.CHARACTER_MAXIMUM_LENGTH,max:X.CHARACTER_MAXIMUM_LENGTH,nullable:X.IS_NULLABLE==="YES",defaultValue:G,comment:X.COLUMN_COMMENT===null?null:String(X.COLUMN_COMMENT)}}return Y}catch(Q){throw T.buildRuntimeIoError("\u8BFB\u53D6\u5217\u4FE1\u606F",J,Q)}}static async getTableIndexes($,Z,J){let Y={};try{let Q=await $.unsafe("SELECT INDEX_NAME, COLUMN_NAME FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ? AND INDEX_NAME != 'PRIMARY' ORDER BY INDEX_NAME",[Z,J]);for(let X of Q.data){let G=X.INDEX_NAME,U=Y[G];if(Array.isArray(U))U.push(X.COLUMN_NAME);else Y[G]=[X.COLUMN_NAME]}return Y}catch(Q){throw T.buildRuntimeIoError("\u8BFB\u53D6\u7D22\u5F15\u4FE1\u606F",J,Q)}}static async ensureDbVersion($){let Z=await $.unsafe("SELECT VERSION() AS version");if(!Z.data||Z.data.length===0||!Z.data[0]?.version)throw Error("\u540C\u6B65\u8868\uFF1A\u65E0\u6CD5\u83B7\u53D6 MySQL \u7248\u672C\u4FE1\u606F");let J=Z.data[0].version,Y=String(J).split(".")[0]||"0",Q=parseInt(Y,10);if(!Number.isFinite(Q)||Q<T.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR)throw Error(`\u540C\u6B65\u8868\uFF1A\u4EC5\u652F\u6301 MySQL ${T.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR}.0+\uFF08\u5F53\u524D\u7248\u672C\uFF1A${J}\uFF09`)}static async applyTablePlan($,Z,J){if(!J||!J.changed)return;if(await T.applyIndexPlan($,Z,J.indexActions,"drop"),J.alterClauses.length>0){let Q=`ALTER TABLE ${T.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.alterClauses.join(", ")}`;await T.executeDDLSafely($,Q)}await T.applyIndexPlan($,Z,J.indexActions,"create")}static async applyIndexPlan($,Z,J,Y){let Q=J.filter((U)=>U.action===Y);if(Q.length===0)return;let X=Q.map((U)=>T.buildIndexClause(U.indexName,U.fieldName,Y)),G=Y==="drop"?"\u6279\u91CF\u5220\u9664\u7D22\u5F15\u5931\u8D25":"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25";await T.runIndexBatch($,Z,X,G)}static async createTable($,Z,J,Y=T.SYSTEM_INDEX_FIELDS){let X=[...T.buildSystemColumnDefs(),...T.buildBusinessColumnDefs(J)].join(`,
|
|
11
11
|
`),G=T.quoteIdentifier(Z),{ENGINE:U,CHARSET:V,COLLATE:M}=T.MYSQL_TABLE_CONFIG,z=`CREATE TABLE ${G} (
|
|
12
12
|
${X}
|
|
13
|
-
) ENGINE=${U} DEFAULT CHARSET=${V} COLLATE=${M}`;await $.unsafe(z),I.debug(`[\u8868 ${Z}] + \u521B\u5EFA\u8868\uFF08\u7CFB\u7EDF\u5B57\u6BB5 + \u4E1A\u52A1\u5B57\u6BB5\uFF09`);let _=[];for(let L of Y){let C=`idx_${L}`;_.push(T.buildIndexClause(C,L,"create"))}for(let[L,C]of Object.entries(J)){let E=
|
|
13
|
+
) ENGINE=${U} DEFAULT CHARSET=${V} COLLATE=${M}`;await $.unsafe(z),I.debug(`[\u8868 ${Z}] + \u521B\u5EFA\u8868\uFF08\u7CFB\u7EDF\u5B57\u6BB5 + \u4E1A\u52A1\u5B57\u6BB5\uFF09`);let _=[];for(let L of Y){let C=`idx_${L}`;_.push(T.buildIndexClause(C,L,"create"))}for(let[L,C]of Object.entries(J)){let E=c(L);if(C.index===!0&&C.unique!==!0){let S=`idx_${E}`;_.push(T.buildIndexClause(S,E,"create"))}}await T.runIndexBatch($,Z,_,"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25")}static async modifyTable($,Z,J,Y){let Q=await T.getTableColumns($,Z,J),X=await T.getTableIndexes($,Z,J),{plan:G,summary:U,details:V}=T.buildTablePlan({tableName:J,fields:Y,existingColumns:Q,existingIndexes:X});if(G.changed){let M=`[\u8868 ${J}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${U.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${U.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${U.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${U.indexChanges}`,z=V.fieldChanges.flatMap((C)=>C.changes.map((E)=>{let S=String(E.current??""),D=String(E.expected??"");return`- ${C.dbFieldName}.${E.type}: ${S} -> ${D}`})),_=V.indexChanges.map((C)=>{let E=`idx_${C.fieldName}`===C.indexName?C.indexName:C.indexName;if(C.action==="create")return`- index.${E}: \u65E0 -> ${C.indexName}(${C.fieldName})`;return`- index.${E}: ${C.indexName}(${C.fieldName}) -> \u65E0`}),L=[...z,..._];I.debug(M);for(let C of L)I.debug(`[\u8868 ${J}] \u53D8\u66F4\u660E\u7EC6 ${C}`);await T.applyTablePlan($,J,G)}return G}}var rQ=($,Z=Bun.nanoseconds())=>{let J=(Z-$)/1e6;if(J<1000)return`${J.toFixed(2)} \u6BEB\u79D2`;else return`${(J/1000).toFixed(2)} \u79D2`};function iQ($){let Z=$||{},J=Z.BUN_WORKER_ID,Y=Z.PM2_INSTANCE_ID;if(J!==void 0)return{role:J===""?"primary":"worker",instanceId:J||"0",env:"bun-cluster"};if(Y!==void 0)return{role:Y==="0"?"primary":"worker",instanceId:Y,env:"pm2-cluster"};return{role:"primary",instanceId:null,env:"standalone"}}L$();L$();import{existsSync as DH,readdirSync as kH}from"fs";gJ();u0();var tQ=()=>{let $=new Map;return((J,Y,Q)=>{if(!DH(J))return;let X=kH(J,{withFileTypes:!0});for(let G of X){if(G.name.startsWith("_"))continue;if(!EZ(J,G))continue;let U=XZ(J,G.name),V={source:Y,sourceName:Q,name:G.name,camelName:R$(G.name),rootDir:U};$.set(G.name,V)}})(o(s0,"node_modules","@befly-addon"),"addon","\u7EC4\u4EF6"),Array.from($.values())};IZ();var vH={name:"auth",enable:!0,deps:["cors"],handler:async($,Z)=>{let J=Z.req.headers.get("authorization");if(J&&J.startsWith("Bearer ")){let Y=J.substring(7);try{let Q=await $.jwt.verify(Y);Z.user=Q,YQ(Q.id,Q.roleCode,Q.nickname,Q.roleType)}catch{Z.user={}}}else Z.user={}}},aQ=vH;var xH={name:"cors",enable:!0,deps:[],handler:async($,Z)=>{let J=Z.req,Q=Object.assign({},{origin:"*",methods:"GET, POST, OPTIONS",allowedHeaders:"Content-Type, Authorization, authorization, token",exposedHeaders:"Content-Range, X-Content-Range, Authorization, authorization, token",maxAge:86400,credentials:"true"},$.config&&$.config.cors?$.config.cors:{}),X=SZ(J,Q);if(Z.corsHeaders=X,J.method==="OPTIONS"){Z.response=new Response(null,{status:204,headers:X});return}}},eQ=xH;var fH=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",yH="[:A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]["+fH+"]*",gH=new RegExp("^"+yH+"$");function TZ($,Z){let J=[],Y=Z.exec($);while(Y){let Q=[];Q.startIndex=Z.lastIndex-Y[0].length;let X=Y.length;for(let G=0;G<X;G++)Q.push(Y[G]);J.push(Q),Y=Z.exec($)}return J}var m$=function($){let Z=gH.exec($);return!(Z===null||typeof Z>"u")};function $X($){return typeof $<"u"}var hH={allowBooleanAttributes:!1,unpairedTags:[]};function XX($,Z){Z=Object.assign({},hH,Z);let J=[],Y=!1,Q=!1;if($[0]==="\uFEFF")$=$.substr(1);for(let X=0;X<$.length;X++)if($[X]==="<"&&$[X+1]==="?"){if(X+=2,X=JX($,X),X.err)return X}else if($[X]==="<"){let G=X;if(X++,$[X]==="!"){X=YX($,X);continue}else{let U=!1;if($[X]==="/")U=!0,X++;let V="";for(;X<$.length&&$[X]!==">"&&$[X]!==" "&&$[X]!=="\t"&&$[X]!==`
|
|
14
14
|
`&&$[X]!=="\r";X++)V+=$[X];if(V=V.trim(),V[V.length-1]==="/")V=V.substring(0,V.length-1),X--;if(!sH(V)){let _;if(V.trim().length===0)_="Invalid space after '<'.";else _="Tag '"+V+"' is an invalid name.";return H0("InvalidTag",_,o0($,X))}let M=pH($,X);if(M===!1)return H0("InvalidAttr","Attributes for '"+V+"' have open quote.",o0($,X));let z=M.value;if(X=M.index,z[z.length-1]==="/"){let _=X-z.length;z=z.substring(0,z.length-1);let L=QX(z,Z);if(L===!0)Y=!0;else return H0(L.err.code,L.err.msg,o0($,_+L.err.line))}else if(U)if(!M.tagClosed)return H0("InvalidTag","Closing tag '"+V+"' doesn't have proper closing.",o0($,X));else if(z.trim().length>0)return H0("InvalidTag","Closing tag '"+V+"' can't have attributes or invalid starting.",o0($,G));else if(J.length===0)return H0("InvalidTag","Closing tag '"+V+"' has not been opened.",o0($,G));else{let _=J.pop();if(V!==_.tagName){let L=o0($,_.tagStartPos);return H0("InvalidTag","Expected closing tag '"+_.tagName+"' (opened in line "+L.line+", col "+L.col+") instead of closing tag '"+V+"'.",o0($,G))}if(J.length==0)Q=!0}else{let _=QX(z,Z);if(_!==!0)return H0(_.err.code,_.err.msg,o0($,X-z.length+_.err.line));if(Q===!0)return H0("InvalidXml","Multiple possible root nodes found.",o0($,X));else if(Z.unpairedTags.indexOf(V)!==-1);else J.push({tagName:V,tagStartPos:G});Y=!0}for(X++;X<$.length;X++)if($[X]==="<")if($[X+1]==="!"){X++,X=YX($,X);continue}else if($[X+1]==="?"){if(X=JX($,++X),X.err)return X}else break;else if($[X]==="&"){let _=dH($,X);if(_==-1)return H0("InvalidChar","char '&' is not expected.",o0($,X));X=_}else if(Q===!0&&!ZX($[X]))return H0("InvalidXml","Extra text at the end",o0($,X));if($[X]==="<")X--}}else{if(ZX($[X]))continue;return H0("InvalidChar","char '"+$[X]+"' is not expected.",o0($,X))}if(!Y)return H0("InvalidXml","Start tag expected.",1);else if(J.length==1)return H0("InvalidTag","Unclosed tag '"+J[0].tagName+"'.",o0($,J[0].tagStartPos));else if(J.length>0)return H0("InvalidXml","Invalid '"+JSON.stringify(J.map((X)=>X.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1});return!0}function ZX($){return $===" "||$==="\t"||$===`
|
|
15
|
-
`||$==="\r"}function JX($,Z){let J=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let Y=$.substr(J,Z-J);if(Z>5&&Y==="xml")return H0("InvalidXml","XML declaration allowed only at the start of the document.",o0($,Z));else if($[Z]=="?"&&$[Z+1]==">"){Z++;break}else continue}return Z}function YX($,Z){if($.length>Z+5&&$[Z+1]==="-"&&$[Z+2]==="-"){for(Z+=3;Z<$.length;Z++)if($[Z]==="-"&&$[Z+1]==="-"&&$[Z+2]===">"){Z+=2;break}}else if($.length>Z+8&&$[Z+1]==="D"&&$[Z+2]==="O"&&$[Z+3]==="C"&&$[Z+4]==="T"&&$[Z+5]==="Y"&&$[Z+6]==="P"&&$[Z+7]==="E"){let J=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")J++;else if($[Z]===">"){if(J--,J===0)break}}else if($.length>Z+9&&$[Z+1]==="["&&$[Z+2]==="C"&&$[Z+3]==="D"&&$[Z+4]==="A"&&$[Z+5]==="T"&&$[Z+6]==="A"&&$[Z+7]==="["){for(Z+=8;Z<$.length;Z++)if($[Z]==="]"&&$[Z+1]==="]"&&$[Z+2]===">"){Z+=2;break}}return Z}var bH='"',cH="'";function pH($,Z){let J="",Y="",Q=!1;for(;Z<$.length;Z++){if($[Z]===bH||$[Z]===cH)if(Y==="")Y=$[Z];else if(Y!==$[Z]);else Y="";else if($[Z]===">"){if(Y===""){Q=!0;break}}J+=$[Z]}if(Y!=="")return!1;return{value:J,index:Z,tagClosed:Q}}var uH=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function QX($,Z){let J=TZ($,uH),Y={};for(let Q=0;Q<J.length;Q++){if(J[Q][1].length===0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' has no space in starting.",WZ(J[Q]));else if(J[Q][3]!==void 0&&J[Q][4]===void 0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' is without value.",WZ(J[Q]));else if(J[Q][3]===void 0&&!Z.allowBooleanAttributes)return H0("InvalidAttr","boolean attribute '"+J[Q][2]+"' is not allowed.",WZ(J[Q]));let X=J[Q][2];if(!nH(X))return H0("InvalidAttr","Attribute '"+X+"' is an invalid name.",WZ(J[Q]));if(!Y.hasOwnProperty(X))Y[X]=1;else return H0("InvalidAttr","Attribute '"+X+"' is repeated.",WZ(J[Q]))}return!0}function mH($,Z){let J=/\d/;if($[Z]==="x")Z++,J=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(J))break}return-1}function dH($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,mH($,Z);let J=0;for(;Z<$.length;Z++,J++){if($[Z].match(/\w/)&&J<20)continue;if($[Z]===";")break;return-1}return Z}function H0($,Z,J){return{err:{code:$,msg:Z,line:J.line||J,col:J.col}}}function nH($){return u$($)}function sH($){return u$($)}function o0($,Z){let J=$.substring(0,Z).split(/\r?\n/);return{line:J.length,col:J[J.length-1].length+1}}function WZ($){return $.startIndex+$[1].length}var oH={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function($,Z){return Z},attributeValueProcessor:function($,Z){return Z},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function($,Z,J){return $},captureMetaData:!1},GX=function($){return Object.assign({},oH,$)};var NZ;if(typeof Symbol!=="function")NZ="@@xmlMetadata";else NZ=Symbol("XML Node Metadata");class t0{constructor($){this.tagname=$,this.child=[],this[":@"]={}}add($,Z){if($==="__proto__")$="#__proto__";this.child.push({[$]:Z})}addChild($,Z){if($.tagname==="__proto__")$.tagname="#__proto__";if($[":@"]&&Object.keys($[":@"]).length>0)this.child.push({[$.tagname]:$.child,[":@"]:$[":@"]});else this.child.push({[$.tagname]:$.child});if(Z!==void 0)this.child[this.child.length-1][NZ]={startIndex:Z}}static getMetaDataSymbol(){return NZ}}class DZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let J={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let Y=1,Q=!1,X=!1,G="";for(;Z<$.length;Z++)if($[Z]==="<"&&!X){if(Q&&D$($,"!ENTITY",Z)){Z+=7;let U,V;if([U,V,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),V.indexOf("&")===-1)J[U]={regx:RegExp(`&${U};`,"g"),val:V}}else if(Q&&D$($,"!ELEMENT",Z)){Z+=8;let{index:U}=this.readElementExp($,Z+1);Z=U}else if(Q&&D$($,"!ATTLIST",Z))Z+=8;else if(Q&&D$($,"!NOTATION",Z)){Z+=9;let{index:U}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=U}else if(D$($,"!--",Z))X=!0;else throw Error("Invalid DOCTYPE");Y++,G=""}else if($[Z]===">"){if(X){if($[Z-1]==="-"&&$[Z-2]==="-")X=!1,Y--}else Y--;if(Y===0)break}else if($[Z]==="[")Q=!0;else G+=$[Z];if(Y!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:J,i:Z}}readEntityExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")J+=$[Z],Z++;if(UZ(J),Z=r0($,Z),!this.suppressValidationErr){if($.substring(Z,Z+6).toUpperCase()==="SYSTEM")throw Error("External entities are not supported");else if($[Z]==="%")throw Error("Parameter entities are not supported")}let Y="";return[Z,Y]=this.readIdentifierVal($,Z,"entity"),Z--,[J,Y,Z]}readNotationExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;!this.suppressValidationErr&&UZ(J),Z=r0($,Z);let Y=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&Y!=="SYSTEM"&&Y!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${Y}"`);Z+=Y.length,Z=r0($,Z);let Q=null,X=null;if(Y==="PUBLIC"){if([Z,Q]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,X]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(Y==="SYSTEM"){if([Z,X]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!X)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:J,publicIdentifier:Q,systemIdentifier:X,index:--Z}}readIdentifierVal($,Z,J){let Y="",Q=$[Z];if(Q!=='"'&&Q!=="'")throw Error(`Expected quoted string, found "${Q}"`);Z++;while(Z<$.length&&$[Z]!==Q)Y+=$[Z],Z++;if($[Z]!==Q)throw Error(`Unterminated ${J} value`);return Z++,[Z,Y]}readElementExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;if(!this.suppressValidationErr&&!u$(J))throw Error(`Invalid element name: "${J}"`);Z=r0($,Z);let Y="";if($[Z]==="E"&&D$($,"MPTY",Z))Z+=4;else if($[Z]==="A"&&D$($,"NY",Z))Z+=2;else if($[Z]==="("){Z++;while(Z<$.length&&$[Z]!==")")Y+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:J,contentModel:Y.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;UZ(J),Z=r0($,Z);let Y="";while(Z<$.length&&!/\s/.test($[Z]))Y+=$[Z],Z++;if(!UZ(Y))throw Error(`Invalid attribute name: "${Y}"`);Z=r0($,Z);let Q="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(Q="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let G=[];while(Z<$.length&&$[Z]!==")"){let U="";while(Z<$.length&&$[Z]!=="|"&&$[Z]!==")")U+=$[Z],Z++;if(U=U.trim(),!UZ(U))throw Error(`Invalid notation name: "${U}"`);if(G.push(U),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,Q+=" ("+G.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;let G=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!G.includes(Q.toUpperCase()))throw Error(`Invalid attribute type: "${Q}"`)}Z=r0($,Z);let X="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")X="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")X="#IMPLIED",Z+=7;else[Z,X]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:J,attributeName:Y,attributeType:Q,defaultValue:X,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function D$($,Z,J){for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==$[J+Y+1])return!1;return!0}function UZ($){if(u$($))return $;else throw Error(`Invalid entity name ${$}`)}var lH=/^[-+]?0x[a-fA-F0-9]+$/,rH=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,iH={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function mJ($,Z={}){if(Z=Object.assign({},iH,Z),!$||typeof $!=="string")return $;let J=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(J))return $;else if($==="0")return 0;else if(Z.hex&&lH.test(J))return $W(J,16);else if(J.includes("e")||J.includes("E"))return aH($,J,Z);else{let Y=rH.exec(J);if(Y){let Q=Y[1]||"",X=Y[2],G=eH(Y[3]),U=Q?$[X.length+1]===".":$[X.length]===".";if(!Z.leadingZeros&&(X.length>1||X.length===1&&!U))return $;else{let V=Number(J),M=String(V);if(V===0)return V;if(M.search(/[eE]/)!==-1)if(Z.eNotation)return V;else return $;else if(J.indexOf(".")!==-1)if(M==="0")return V;else if(M===G)return V;else if(M===`${Q}${G}`)return V;else return $;let z=X?G:J;if(X)return z===M||Q+z===M?V:$;else return z===M||z===Q+M?V:$}}else return $}}var tH=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function aH($,Z,J){if(!J.eNotation)return $;let Y=Z.match(tH);if(Y){let Q=Y[1]||"",X=Y[3].indexOf("e")===-1?"E":"e",G=Y[2],U=Q?$[G.length+1]===X:$[G.length]===X;if(G.length>1&&U)return $;else if(G.length===1&&(Y[3].startsWith(`.${X}`)||Y[3][0]===X))return Number(Z);else if(J.leadingZeros&&!U)return Z=(Y[1]||"")+Y[3],Number(Z);else return $}else return $}function eH($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function $W($,Z){if(parseInt)return parseInt($,Z);else if(Number.parseInt)return Number.parseInt($,Z);else if(window&&window.parseInt)return window.parseInt($,Z);else throw Error("parseInt, Number.parseInt, window.parseInt are not supported")}function dJ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let J of $){if(typeof J==="string"&&Z===J)return!0;if(J instanceof RegExp&&J.test(Z))return!0}};return()=>!1}class kZ{constructor($){if(this.options=$,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xA2"},pound:{regex:/&(pound|#163);/g,val:"\xA3"},yen:{regex:/&(yen|#165);/g,val:"\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\xA9"},reg:{regex:/&(reg|#174);/g,val:"\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\u20B9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,16))}},this.addExternalEntities=ZW,this.parseXml=GW,this.parseTextData=JW,this.resolveNameSpace=YW,this.buildAttributesMap=XW,this.isItStopNode=VW,this.replaceEntitiesValue=WW,this.readStopNodeData=_W,this.saveTextToParentTag=UW,this.addChild=HW,this.ignoreAttributesFn=dJ(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let Z=0;Z<this.options.stopNodes.length;Z++){let J=this.options.stopNodes[Z];if(typeof J!=="string")continue;if(J.startsWith("*."))this.stopNodesWildcard.add(J.substring(2));else this.stopNodesExact.add(J)}}}}function ZW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];this.lastEntities[Y]={regex:new RegExp("&"+Y+";","g"),val:$[Y]}}}function JW($,Z,J,Y,Q,X,G){if($!==void 0){if(this.options.trimValues&&!Y)$=$.trim();if($.length>0){if(!G)$=this.replaceEntitiesValue($);let U=this.options.tagValueProcessor(Z,$,J,Q,X);if(U===null||U===void 0)return $;else if(typeof U!==typeof $||U!==$)return U;else if(this.options.trimValues)return sJ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return sJ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function YW($){if(this.options.removeNSPrefix){let Z=$.split(":"),J=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=J+Z[1]}return $}var QW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function XW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let J=TZ($,QW),Y=J.length,Q={};for(let X=0;X<Y;X++){let G=this.resolveNameSpace(J[X][1]);if(this.ignoreAttributesFn(G,Z))continue;let U=J[X][4],V=this.options.attributeNamePrefix+G;if(G.length){if(this.options.transformAttributeName)V=this.options.transformAttributeName(V);if(V==="__proto__")V="#__proto__";if(U!==void 0){if(this.options.trimValues)U=U.trim();U=this.replaceEntitiesValue(U);let M=this.options.attributeValueProcessor(G,U,Z);if(M===null||M===void 0)Q[V]=U;else if(typeof M!==typeof U||M!==U)Q[V]=M;else Q[V]=sJ(U,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)Q[V]=!0}}if(!Object.keys(Q).length)return;if(this.options.attributesGroupName){let X={};return X[this.options.attributesGroupName]=Q,X}return Q}}var GW=function($){$=$.replace(/\r\n?/g,`
|
|
16
|
-
`);let Z=new t0("!xml"),J=Z,Y="",Q="",X=new DZ(this.options.processEntities);for(let G=0;G<$.length;G++)if($[G]==="<")if($[G+1]==="/"){let V=k$($,">",G,"Closing Tag is not closed."),M=$.substring(G+2,V).trim();if(this.options.removeNSPrefix){let L=M.indexOf(":");if(L!==-1)M=M.substr(L+1)}if(this.options.transformTagName)M=this.options.transformTagName(M);if(J)Y=this.saveTextToParentTag(Y,J,Q);let z=Q.substring(Q.lastIndexOf(".")+1);if(M&&this.options.unpairedTags.indexOf(M)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${M}>`);let _=0;if(z&&this.options.unpairedTags.indexOf(z)!==-1)_=Q.lastIndexOf(".",Q.lastIndexOf(".")-1),this.tagsNodeStack.pop();else _=Q.lastIndexOf(".");Q=Q.substring(0,_),J=this.tagsNodeStack.pop(),Y="",G=V}else if($[G+1]==="?"){let V=nJ($,G,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(Y=this.saveTextToParentTag(Y,J,Q),this.options.ignoreDeclaration&&V.tagName==="?xml"||this.options.ignorePiTags);else{let M=new t0(V.tagName);if(M.add(this.options.textNodeName,""),V.tagName!==V.tagExp&&V.attrExpPresent)M[":@"]=this.buildAttributesMap(V.tagExp,Q);this.addChild(J,M,Q,G)}G=V.closeIndex+1}else if($.substr(G+1,3)==="!--"){let V=k$($,"-->",G+4,"Comment is not closed.");if(this.options.commentPropName){let M=$.substring(G+4,V-2);Y=this.saveTextToParentTag(Y,J,Q),J.add(this.options.commentPropName,[{[this.options.textNodeName]:M}])}G=V}else if($.substr(G+1,2)==="!D"){let V=X.readDocType($,G);this.docTypeEntities=V.entities,G=V.i}else if($.substr(G+1,2)==="!["){let V=k$($,"]]>",G,"CDATA is not closed.")-2,M=$.substring(G+9,V);Y=this.saveTextToParentTag(Y,J,Q);let z=this.parseTextData(M,J.tagname,Q,!0,!1,!0,!0);if(z==null)z="";if(this.options.cdataPropName)J.add(this.options.cdataPropName,[{[this.options.textNodeName]:M}]);else J.add(this.options.textNodeName,z);G=V+2}else{let V=nJ($,G,this.options.removeNSPrefix),M=V.tagName,z=V.rawTagName,_=V.tagExp,L=V.attrExpPresent,C=V.closeIndex;if(this.options.transformTagName){let D=this.options.transformTagName(M);if(_===M)_=D;M=D}if(J&&Y){if(J.tagname!=="!xml")Y=this.saveTextToParentTag(Y,J,Q,!1)}let E=J;if(E&&this.options.unpairedTags.indexOf(E.tagname)!==-1)J=this.tagsNodeStack.pop(),Q=Q.substring(0,Q.lastIndexOf("."));if(M!==Z.tagname)Q+=Q?"."+M:M;let S=G;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,Q,M)){let D="";if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(M[M.length-1]==="/")M=M.substr(0,M.length-1),Q=Q.substr(0,Q.length-1),_=M;else _=_.substr(0,_.length-1);G=V.closeIndex}else if(this.options.unpairedTags.indexOf(M)!==-1)G=V.closeIndex;else{let w=this.readStopNodeData($,z,C+1);if(!w)throw Error(`Unexpected end of ${z}`);G=w.i,D=w.tagContent}let N=new t0(M);if(M!==_&&L)N[":@"]=this.buildAttributesMap(_,Q);if(D)D=this.parseTextData(D,M,Q,!0,L,!0,!0);Q=Q.substr(0,Q.lastIndexOf(".")),N.add(this.options.textNodeName,D),this.addChild(J,N,Q,S)}else{if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(M[M.length-1]==="/")M=M.substr(0,M.length-1),Q=Q.substr(0,Q.length-1),_=M;else _=_.substr(0,_.length-1);if(this.options.transformTagName){let N=this.options.transformTagName(M);if(_===M)_=N;M=N}let D=new t0(M);if(M!==_&&L)D[":@"]=this.buildAttributesMap(_,Q);this.addChild(J,D,Q,S),Q=Q.substr(0,Q.lastIndexOf("."))}else{let D=new t0(M);if(this.tagsNodeStack.push(J),M!==_&&L)D[":@"]=this.buildAttributesMap(_,Q);this.addChild(J,D,Q,S),J=D}Y="",G=C}}else Y+=$[G];return Z.child};function HW($,Z,J,Y){if(!this.options.captureMetaData)Y=void 0;let Q=this.options.updateTag(Z.tagname,J,Z[":@"]);if(Q===!1);else if(typeof Q==="string")Z.tagname=Q,$.addChild(Z,Y);else $.addChild(Z,Y)}var WW=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let J=this.docTypeEntities[Z];$=$.replace(J.regx,J.val)}for(let Z in this.lastEntities){let J=this.lastEntities[Z];$=$.replace(J.regex,J.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let J=this.htmlEntities[Z];$=$.replace(J.regex,J.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function UW($,Z,J,Y){if($){if(Y===void 0)Y=Z.child.length===0;if($=this.parseTextData($,Z.tagname,J,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,Y),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function VW($,Z,J,Y){if(Z&&Z.has(Y))return!0;if($&&$.has(J))return!0;return!1}function OW($,Z,J=">"){let Y,Q="";for(let X=Z;X<$.length;X++){let G=$[X];if(Y){if(G===Y)Y=""}else if(G==='"'||G==="'")Y=G;else if(G===J[0])if(J[1]){if($[X+1]===J[1])return{data:Q,index:X}}else return{data:Q,index:X};else if(G==="\t")G=" ";Q+=G}}function k$($,Z,J,Y){let Q=$.indexOf(Z,J);if(Q===-1)throw Error(Y);else return Q+Z.length-1}function nJ($,Z,J,Y=">"){let Q=OW($,Z+1,Y);if(!Q)return;let{data:X,index:G}=Q,U=X.search(/\s/),V=X,M=!0;if(U!==-1)V=X.substring(0,U),X=X.substring(U+1).trimStart();let z=V;if(J){let _=V.indexOf(":");if(_!==-1)V=V.substr(_+1),M=V!==Q.data.substr(_+1)}return{tagName:V,tagExp:X,closeIndex:G,attrExpPresent:M,rawTagName:z}}function _W($,Z,J){let Y=J,Q=1;for(;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let X=k$($,">",J,`${Z} is not closed`);if($.substring(J+2,X).trim()===Z){if(Q--,Q===0)return{tagContent:$.substring(Y,J),i:X}}J=X}else if($[J+1]==="?")J=k$($,"?>",J+1,"StopNode is not closed.");else if($.substr(J+1,3)==="!--")J=k$($,"-->",J+3,"StopNode is not closed.");else if($.substr(J+1,2)==="![")J=k$($,"]]>",J,"StopNode is not closed.")-2;else{let X=nJ($,J,">");if(X){if((X&&X.tagName)===Z&&X.tagExp[X.tagExp.length-1]!=="/")Q++;J=X.closeIndex}}}function sJ($,Z,J){if(Z&&typeof $==="string"){let Y=$.trim();if(Y==="true")return!0;else if(Y==="false")return!1;else return mJ($,J)}else if($X($))return $;else return""}var oJ=t0.getMetaDataSymbol();function lJ($,Z){return HX($,Z)}function HX($,Z,J){let Y,Q={};for(let X=0;X<$.length;X++){let G=$[X],U=MW(G),V="";if(J===void 0)V=U;else V=J+"."+U;if(U===Z.textNodeName)if(Y===void 0)Y=G[U];else Y+=""+G[U];else if(U===void 0)continue;else if(G[U]){let M=HX(G[U],Z,V),z=zW(M,Z);if(G[oJ]!==void 0)M[oJ]=G[oJ];if(G[":@"])AW(M,G[":@"],V,Z);else if(Object.keys(M).length===1&&M[Z.textNodeName]!==void 0&&!Z.alwaysCreateTextNode)M=M[Z.textNodeName];else if(Object.keys(M).length===0)if(Z.alwaysCreateTextNode)M[Z.textNodeName]="";else M="";if(Q[U]!==void 0&&Q.hasOwnProperty(U)){if(!Array.isArray(Q[U]))Q[U]=[Q[U]];Q[U].push(M)}else if(Z.isArray(U,V,z))Q[U]=[M];else Q[U]=M}}if(typeof Y==="string"){if(Y.length>0)Q[Z.textNodeName]=Y}else if(Y!==void 0)Q[Z.textNodeName]=Y;return Q}function MW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];if(Y!==":@")return Y}}function AW($,Z,J,Y){if(Z){let Q=Object.keys(Z),X=Q.length;for(let G=0;G<X;G++){let U=Q[G];if(Y.isArray(U,J+"."+U,!0,!0))$[U]=[Z[U]];else $[U]=Z[U]}}}function zW($,Z){let{textNodeName:J}=Z,Y=Object.keys($).length;if(Y===0)return!0;if(Y===1&&($[J]||typeof $[J]==="boolean"||$[J]===0))return!0;return!1}class VZ{constructor($){this.externalEntities={},this.options=GX($)}parse($,Z){if(typeof $!=="string"&&$.toString)$=$.toString();else if(typeof $!=="string")throw Error("XML data is accepted in String or Bytes[] form.");if(Z){if(Z===!0)Z={};let Q=XX($,Z);if(Q!==!0)throw Error(`${Q.err.msg}:${Q.err.line}:${Q.err.col}`)}let J=new kZ(this.options);J.addExternalEntities(this.externalEntities);let Y=J.parseXml($);if(this.options.preserveOrder||Y===void 0)return Y;else return lJ(Y,this.options)}addEntity($,Z){if(Z.indexOf("&")!==-1)throw Error("Entity value can't have '&'");else if($.indexOf("&")!==-1||$.indexOf(";")!==-1)throw Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");else if(Z==="&")throw Error("An entity with value '&' is not permitted");else this.externalEntities[$]=Z}static getMetaDataSymbol(){return t0.getMetaDataSymbol()}}var FW=new VZ,KW={name:"parser",enable:!0,deps:["auth"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.rawBody){Z.body={};return}if(Z.req.method==="GET"){let J=new URL(Z.req.url),Y=Object.fromEntries(J.searchParams);Z.body=Y}else if(Z.req.method==="POST"){let J=Z.req.headers.get("content-type")||"",Y=new URL(Z.req.url),Q=Object.fromEntries(Y.searchParams);try{if(J.includes("application/json")){let X=await Z.req.json(),G={...Q,...X};Z.body=G}else if(J.includes("application/xml")||J.includes("text/xml")){let X=await Z.req.text(),G=FW.parse(X),U=Object.keys(G)[0],V=U&&typeof G[U]==="object"?G[U]:G,M={...Q,...V};Z.body=M}else{Z.response=B$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:J},"parser");return}}catch{Z.response=B$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:J.includes("application/json")?"invalid_json":J.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},WX=KW;class m0{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleApis($){return`role:apis:${$}`}}$0();var RW={name:"permission",enable:!0,deps:["validator"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.auth===!1)return;if(typeof Z.user.id!=="number"){Z.response=B$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let J=Z.route,Y=Z.user.roleCode,Q=!1;if(Y&&$.redis)try{let X=m0.roleApis(Y);Q=await $.redis.sismember(X,J)}catch(X){I.error({event:"hook_permission_redis_error",apiPath:J,roleCode:Y,err:X,msg:"hook permission redis error"}),Q=!1}if(!Q){let X=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,G=typeof J==="string"&&J.length>0?J:null,U=X?X:G?G:"\u672A\u77E5\u63A5\u53E3";Z.response=B$(Z,`\u65E0\u6743\u8BBF\u95EE ${U} \u63A5\u53E3`,1,null,{apiLabel:U},"permission");return}}},UX=RW;var rJ={number:"^\\d+$",integer:"^-?\\d+$",float:"^-?\\d+(\\.\\d+)?$",positive:"^[1-9]\\d*$",negative:"^-\\d+$",zero:"^0$",word:"^[a-zA-Z]+$",alphanumeric:"^[a-zA-Z0-9]+$",alphanumeric_:"^[a-zA-Z0-9_]+$",alphanumericDash_:"^[a-zA-Z0-9_-]+$",lowercase:"^[a-z]+$",uppercase:"^[A-Z]+$",chinese:"^[\\u4e00-\\u9fa5]+$",chineseWord:"^[\\u4e00-\\u9fa5a-zA-Z]+$",email:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",phone:"^1[3-9]\\d{9}$",telephone:"^0\\d{2,3}-?\\d{7,8}$",url:"^https?://",ip:"^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$",ipv6:"^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$",domain:"^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",uuid:"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",hex:"^[0-9a-fA-F]+$",base64:"^[A-Za-z0-9+/=]+$",md5:"^[a-f0-9]{32}$",sha1:"^[a-f0-9]{40}$",sha256:"^[a-f0-9]{64}$",date:"^\\d{4}-\\d{2}-\\d{2}$",time:"^\\d{2}:\\d{2}:\\d{2}$",datetime:"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}",year:"^\\d{4}$",month:"^(0[1-9]|1[0-2])$",day:"^(0[1-9]|[12]\\d|3[01])$",variable:"^[a-zA-Z_][a-zA-Z0-9_]*$",constant:"^[A-Z][A-Z0-9_]*$",package:"^[a-z][a-z0-9-]*$",idCard:"^\\d{17}[\\dXx]$",passport:"^[a-zA-Z0-9]{5,17}$",bankCard:"^\\d{16,19}$",wechat:"^[a-zA-Z][a-zA-Z0-9_-]{5,19}$",qq:"^[1-9]\\d{4,10}$",alipay:"^(1[3-9]\\d{9}|[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})$",username:"^[a-zA-Z][a-zA-Z0-9_]{3,19}$",nickname:"^[\\u4e00-\\u9fa5a-zA-Z0-9]{2,20}$",passwordWeak:"^.{6,}$",passwordMedium:"^(?=.*[a-zA-Z])(?=.*\\d).{8,}$",passwordStrong:"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*]).{8,}$",licensePlate:"^[\u4EAC\u6D25\u6CAA\u6E1D\u5180\u8C6B\u4E91\u8FBD\u9ED1\u6E58\u7696\u9C81\u65B0\u82CF\u6D59\u8D63\u9102\u6842\u7518\u664B\u8499\u9655\u5409\u95FD\u8D35\u7CA4\u9752\u85CF\u5DDD\u5B81\u743C\u4F7F\u9886][A-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9\u6302\u5B66\u8B66\u6E2F\u6FB3]$",postalCode:"^\\d{6}$",semver:"^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?(\\+[a-zA-Z0-9.]+)?$",colorHex:"^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",empty:"^$",notempty:".+"},VX=new Map;function qW($){if($.startsWith("@")){let Z=$.slice(1);return rJ[Z]||$}return $}function IW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let J=Z.lastIndexOf("/");if(J<=0)return null;let Y=Z.slice(J+1);if(Y!==""&&!/^[gimsuy]+$/.test(Y))return null;return{source:Z.slice(1,J),flags:Y}}function OX($,Z){let J=IW($),Y=J?J.source:qW($),Q=J&&J.flags!==""?J.flags:Z||"",X=`${Y}:${Q}`,G=VX.get(X);if(!G)G=new RegExp(Y,Q),VX.set(X,G);return G}u0();var vZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function xZ($,Z){if(qJ($)){if(Z==="number")return KZ($);return RZ($)}if(Array.isArray($)){for(let J of $)if(!xZ(J,Z))return!1;return!0}if(FZ($)){for(let J of Object.values($)){if(J===void 0)continue;if(!xZ(J,Z))return!1}return!0}return!1}class iJ{static validate($,Z,J=[]){let Y={};if(!n($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!n(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let Q=$,X=Z;for(let G of J){let U=Q[G];if(U===void 0||U===null){let V=X[G],M=n(V)&&typeof V.name==="string"?V.name:G;Y[G]=`${M}\u4E3A\u5FC5\u586B\u9879`}}for(let[G,U]of Object.entries(X)){if(Y[G])continue;if(Q[G]===void 0&&!J.includes(G))continue;if(!n(U)){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:V,type:M}=U;if(typeof V!=="string"||typeof M!=="string"){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let z={name:V,type:M},_=U.input;if(typeof _==="string")z.input=_;let L=U.min;if(typeof L==="number"||L===null)z.min=L;let C=U.max;if(typeof C==="number"||C===null)z.max=C;let E=U.default;if(E===null||typeof E==="string"||typeof E==="number"||typeof E==="boolean"||Array.isArray(E)||n(E))z.default=E;let S=U.detail;if(typeof S==="string")z.detail=S;let D=U.index;if(typeof D==="boolean")z.index=D;let N=U.unique;if(typeof N==="boolean")z.unique=N;let w=U.nullable;if(typeof w==="boolean")z.nullable=w;let k=U.unsigned;if(typeof k==="boolean")z.unsigned=k;let h=this.checkField(Q[G],z,G);if(h)Y[G]=h}return this.buildResult(Y)}static single($,Z){let J=W$(Z),Y=J.type,Q=J.input,X=J.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(Y,Q,X),error:null};let G=this.convert($,Q,Y);if(G.error)return{value:null,error:G.error};let U=this.checkRule(G.value,Z);if(U)return{value:null,error:U};return{value:G.value,error:null}}static buildResult($){let Z=Object.values($),J=Object.keys($),Y=Z.length>0;return{code:Y?1:0,failed:Y,firstError:Y?Z[0]??null:null,errors:Z,errorFields:J,fieldErrors:$}}static checkField($,Z,J){let Y=Z.name||J,Q=W$(Z),X=this.convert($,Q.input,Q.type);if(X.error)return`${Y}${X.error}`;let G=this.checkRule(X.value,Z);return G?`${Y}${G}`:null}static convert($,Z,J){let Y=String(Z||"").trim(),Q=Y.toLowerCase();if(!vZ.has(Q)&&f$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!vZ.has(Q)&&y$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(Q){case"number":{if(KZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}return{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}case"integer":{if(RZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)&&Number.isInteger(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}return{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}case"string":{if(typeof $==="string"){if(String(J||"").toLowerCase()==="datetime")return{value:$.trim(),error:null};return{value:$,error:null}}if(String(J||"").toLowerCase()==="datetime")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"}}case"char":if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};return $.length===1?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5355\u5B57\u7B26"};case"array":return Array.isArray($)?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};case"array_number":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!KZ(X))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6570\u5B57"};return{value:$,error:null}}case"array_integer":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!RZ(X))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6574\u6570"};return{value:$,error:null}}case"json":if(!JZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!JZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return xZ($,"number")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6570\u5B57"};case"json_integer":if(!JZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return xZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{if(String(J||"").toLowerCase()==="datetime"){if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:$.trim(),error:null}}return{value:$,error:null}}}}static checkRule($,Z){let J=W$(Z),Y=J.type,Q=J.input,X=J.min,G=J.max,U=String(Q||"").trim(),V=U.toLowerCase(),M=!vZ.has(V)&&f$(U),z=!vZ.has(V)&&y$(U);if(V==="number"||V==="integer"){if(typeof $!=="number")return V==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(X!==null&&$<X)return`\u4E0D\u80FD\u5C0F\u4E8E${X}`;if(G!==null&&G>0&&$>G)return`\u4E0D\u80FD\u5927\u4E8E${G}`}else if(V==="string"||V==="char"||M||z){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(V==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(X!==null&&$.length<X)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${X}\u4E2A\u5B57\u7B26`;if(G!==null&&G>0&&$.length>G)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${G}\u4E2A\u5B57\u7B26`;if(M){let _=this.resolveRegex(U);if(!this.testRegex(_,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(z){if(!U.split("|").map((L)=>L.trim()).filter((L)=>L!=="").includes($))return"\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185"}}else if(V==="array"||V==="array_number"||V==="array_integer"){if(!Array.isArray($))return"\u5FC5\u987B\u662F\u6570\u7EC4";if(X!==null&&$.length<X)return`\u81F3\u5C11\u9700\u8981${X}\u4E2A\u5143\u7D20`;if(G!==null&&G>0&&$.length>G)return`\u6700\u591A\u53EA\u80FD\u6709${G}\u4E2A\u5143\u7D20`}else if(V==="json"||V==="json_number"||V==="json_integer"){if(!JZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}if(String(Y||"").toLowerCase()==="datetime"){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32";if(!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test($))return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[_,L]=$.split(" ");if(typeof _!=="string"||typeof L!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[C,E,S]=_.split("-"),[D,N,w]=L.split(":"),k=Number(C),h=Number(E),x=Number(S),m=Number(D),a=Number(N),r=Number(w);if(!Number.isInteger(k)||k<1000||k>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(h)||h<1||h>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(x)||x<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(m)||m<0||m>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(a)||a<0||a>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(r)||r<0||r>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let H=[31,k%4===0&&k%100!==0||k%400===0?29:28,31,30,31,30,31,31,30,31,30,31][h-1]??0;if(x>H)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return rJ[Z]||$}return $}static testRegex($,Z){try{return OX($).test(Z)}catch{return!1}}static defaultFor($,Z,J){if(J!==null&&J!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof J==="string"){if(J==="[]")return[];try{let X=JSON.parse(J);return Array.isArray(X)?X:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof J==="string"){let X=Number(J);return isNaN(X)?0:X}return J}let Y=String($||"").toLowerCase();if(Y==="datetime"||Y==="json")return null;let Q=String(Z||"").toLowerCase();if(Q==="json"||Q==="json_number"||Q==="json_integer")return null;switch(String(Z||"").toLowerCase()){case"number":case"integer":return 0;case"array":case"array_number":case"array_integer":return[];default:return""}}}u0();var jW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(n(Z.api.fields)){let Y=n(Z.body)?Z.body:{},Q={};for(let[X,G]of Object.entries(Z.api.fields)){let U=W$(G),V=Y[X];if(V===void 0){let M=b(X);if(Y[M]!==void 0)V=Y[M]}if(V===void 0&&U.default!==null)V=U.default;if(V!==void 0)Q[X]=V}Z.body=Q}let J=iJ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(J.code!==0){Z.response=B$(Z,J.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,J.fieldErrors,"validator");return}}},_X=jW;$0();class tJ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let J=$.trim();if(!J)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(J))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!J.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(J.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return J}assertApiPathList($,Z){if($===null||$===void 0)return[];let J=$;if(typeof J==="string"){let Q=J.trim();if(Q===""||Q==="null")return[];if(Q.startsWith("[")&&Q.endsWith("]"))try{J=JSON.parse(Q)}catch{throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis JSON \u89E3\u6790\u5931\u8D25\uFF0CroleCode=${Z}`)}}if(!Array.isArray(J))throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u6216 JSON \u6570\u7EC4\u5B57\u7B26\u4E32\uFF0CroleCode=${Z}\uFF0Ctype=${typeof J}`);let Y=[];for(let Q of J)Y.push(this.assertApiPathname(Q,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return Y}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){I.warn("\u26A0\uFE0F \u63A5\u53E3\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u63A5\u53E3\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_api"});if(await this.redis.setObject(m0.apisAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){I.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){I.warn("\u26A0\uFE0F \u83DC\u5355\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u83DC\u5355\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_menu"});if(await this.redis.setObject(m0.menusAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){I.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){I.warn("\u26A0\uFE0F \u89D2\u8272\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u89D2\u8272\u6743\u9650\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_role",fields:["code","apis"]}),J=new Map;for(let G of Z.data.lists){if(!G?.code)continue;let U=this.assertApiPathList(G.apis,G.code);J.set(G.code,U)}let Y=Array.from(J.keys());if(Y.length===0){I.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let Q=Y.map((G)=>m0.roleApis(G));await this.redis.delBatch(Q);let X=[];for(let G of Y){let U=J.get(G)||[],V=Array.from(new Set(U)).sort();if(V.length>0)X.push({key:m0.roleApis(G),members:V})}if(X.length>0)await this.redis.saddBatch(X)}catch($){throw I.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new c({kind:"runtime",message:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09",logged:!0,cause:$,meta:{subsystem:"cache",operation:"rebuildRoleApiPermissions"}})}}async refreshRoleApiPermissions($,Z){if(!$||typeof $!=="string")throw Error("roleCode \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Array.isArray(Z))throw Error("apiPaths \u5FC5\u987B\u662F\u6570\u7EC4");let J=Z.map((X)=>this.assertApiPathname(X,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),Y=m0.roleApis($);if(J.length===0){await this.redis.del(Y);return}let Q=Array.from(new Set(J));if(await this.redis.del(Y),Q.length>0)await this.redis.sadd(Y,Q)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions()}async getApis(){try{return await this.redis.getObject(m0.apisAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(m0.menusAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(m0.roleApis($))||[]}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let J=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(m0.roleApis($),J)}catch(J){return I.error({err:J,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(m0.roleApis($))>0)return I.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var LW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new c({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new c({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new tJ({db:$.db,redis:$.redis})}},MX=LW;var BW={name:"cipher",enable:!0,deps:[],handler:()=>{return p$}},AX=BW;var PW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},zX=PW;function fZ($,Z=["id","pid","sort"]){if($===null||$===void 0)return $;let J=BigInt(Number.MAX_SAFE_INTEGER),Y=BigInt(Number.MIN_SAFE_INTEGER),Q=(X)=>{let G={};for(let[U,V]of Object.entries(X))G[U]=V;for(let[U,V]of Object.entries(G)){if(V===void 0||V===null)continue;if(!(Z.includes(U)||U.endsWith("Id")||U.endsWith("_id")||U.endsWith("At")||U.endsWith("_at")))continue;let z=null;if(typeof V==="bigint")z=V;else if(typeof V==="string"){if(!/^-?\d+$/.test(V))continue;try{z=BigInt(V)}catch{continue}}else continue;if(z>J||z<Y)throw Error(`BIGINT \u5B57\u6BB5\u8D85\u51FA JS \u5B89\u5168\u6574\u6570\u8303\u56F4\uFF0C\u8BF7\u6539\u7528 bigint/string \u6216\u8C03\u6574\u5B57\u6BB5\u8BBE\u8BA1 (field: ${U}, value: ${String(V)})`);G[U]=Number(z)}return G};if(Array.isArray($))return $.map((X)=>Q(X));if(typeof $==="object")return Q($);return $}function aJ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function CW($){return Array.isArray($)}function E$($,Z={}){let{pickKeys:J,omitKeys:Y,keepValues:Q,excludeValues:X,keepMap:G}=Z,U=(V)=>{let M={},z=Object.keys(V);if(J&&J.length)z=z.filter((_)=>J.includes(_));if(Y&&Y.length)z=z.filter((_)=>!Y.includes(_));for(let _ of z){let L=V[_];if(G&&_ in G){if(Object.is(G[_],L)){M[_]=L;continue}}if(Q&&Q.length&&!Q.includes(L))continue;if(X&&X.length&&X.includes(L))continue;M[_]=L}return M};if(CW($))return $.map((V)=>aJ(V)?U(V):V).filter((V)=>{if(aJ(V))return Object.keys(V).length>0;return!0});if(aJ($))return U($);return $}u0();u0();class Q0{static SAFE_IDENTIFIER_RE=/^[a-zA-Z_][a-zA-Z0-9_]*$/;static assertNonEmptyString($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (value: ${String($)})`);if(!$.trim())throw Error(`${Z} \u4E0D\u80FD\u4E3A\u7A7A`)}static assertNoUndefinedParam($,Z){if($===void 0)throw Error(`${Z} \u4E0D\u80FD\u4E3A undefined`)}static startsWithQuote($){let Z=$.trim();return Z.startsWith("`")||Z.startsWith('"')}static isQuotedIdentPaired($){let Z=$.trim();if(Z.length<2)return!1;let J=Z[0],Y=Z[Z.length-1];if(J==="`"&&Y==="`")return!0;if(J==='"'&&Y==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(Q0.startsWithQuote($)&&!Q0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(Q0.isQuotedIdentPaired($))return;if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u522B\u540D: ${$}`)}static assertNoExprField($){if(typeof $!=="string")return;let Z=$.trim();if(!Z)return;if(Z.includes("(")||Z.includes(")"))throw Error(`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${Z})`)}static assertNoUndefinedInRecord($,Z){for(let[J,Y]of Object.entries($))if(Y===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${J})`)}static assertBatchInsertRowsConsistent($,Z){if(!Array.isArray($))throw Error("\u6279\u91CF\u63D2\u5165 rows \u5FC5\u987B\u662F\u6570\u7EC4");if($.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A (table: ${Z.table})`);let J=$[0];if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let Y=Object.keys(J);if(Y.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let Q=new Set(Y);for(let X=0;X<$.length;X++){let G=$[X];if(!G||typeof G!=="object"||Array.isArray(G))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: ${X})`);let U=Object.keys(G);if(U.length!==Y.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X})`);for(let V of U)if(!Q.has(V))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X}, extraField: ${V})`);for(let V of Y){if(!(V in G))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${X}, field: ${V})`);Q0.assertNoUndefinedParam(G[V],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${X}, field: ${V})`)}}return Y}}class g{static parseTableRef($){if(typeof $!=="string")throw Error(`tableRef \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (tableRef: ${String($)})`);let Z=$.trim();if(!Z)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");let J=Z.split(/\s+/).filter((U)=>U.length>0);if(J.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(J.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528\u6700\u7B80\u5F62\u5F0F\uFF1Atable \u6216 table alias \u6216 schema.table \u6216 schema.table alias (tableRef: ${Z})`);let Y=J[0];if(typeof Y!=="string"||Y.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let Q=null;if(J.length===2){let U=J[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);Q=U}let X=Y.split(".");if(X.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(X.length===2){let U=X[0],V=X[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Aschema \u4E3A\u7A7A (tableRef: ${Z})`);if(typeof V!=="string"||V.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:U,table:V,alias:Q}}let G=X[0];if(typeof G!=="string"||G.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:G,alias:Q}}static normalizeTableRef($){let Z=g.parseTableRef($),J=Z.schema?b(Z.schema):null,Y=b(Z.table),Q=J?`${J}.${Y}`:Y;if(Z.alias)Q=`${Q} ${Z.alias}`;return Q}static getJoinMainQualifier($){let Z=g.parseTableRef($);if(Z.alias)return Z.alias;return b(Z.table)}static async fieldsToSnake($,Z,J){if(!Z||!Array.isArray(Z))return["*"];let Y=g.validateAndClassifyFields(Z);if(Y.type==="all")return["*"];if(Y.type==="include")return Y.fields.map((Q)=>{return g.processJoinField(Q)});if(Y.type==="exclude"){let Q=await J($),X=Y.fields.map((U)=>b(U)),G=Q.filter((U)=>!X.includes(U));if(G.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${X.join(", ")}`);return G}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((Y)=>Y==="*"))throw Error("fields \u4E0D\u652F\u6301 * \u661F\u53F7\uFF0C\u8BF7\u4F7F\u7528\u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\u53C2\u6570\u8868\u793A\u67E5\u8BE2\u6240\u6709\u5B57\u6BB5");if($.some((Y)=>!Y||typeof Y!=="string"||Y.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let Y of $){let Q=Y.startsWith("!")?Y.substring(1):Y;Q0.assertNoExprField(Q)}let Z=$.filter((Y)=>!Y.startsWith("!")),J=$.filter((Y)=>Y.startsWith("!"));if(Z.length>0&&J.length===0)return{type:"include",fields:Z};if(J.length>0&&Z.length===0)return{type:"exclude",fields:J.map((Q)=>Q.substring(1))};throw Error(`fields \u4E0D\u80FD\u540C\u65F6\u5305\u542B\u666E\u901A\u5B57\u6BB5\u548C\u6392\u9664\u5B57\u6BB5\uFF08! \u5F00\u5934\uFF09\u3002\u53EA\u80FD\u4F7F\u7528\u4EE5\u4E0B3\u79CD\u65B9\u5F0F\u4E4B\u4E00\uFF1A
|
|
15
|
+
`||$==="\r"}function JX($,Z){let J=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let Y=$.substr(J,Z-J);if(Z>5&&Y==="xml")return H0("InvalidXml","XML declaration allowed only at the start of the document.",o0($,Z));else if($[Z]=="?"&&$[Z+1]==">"){Z++;break}else continue}return Z}function YX($,Z){if($.length>Z+5&&$[Z+1]==="-"&&$[Z+2]==="-"){for(Z+=3;Z<$.length;Z++)if($[Z]==="-"&&$[Z+1]==="-"&&$[Z+2]===">"){Z+=2;break}}else if($.length>Z+8&&$[Z+1]==="D"&&$[Z+2]==="O"&&$[Z+3]==="C"&&$[Z+4]==="T"&&$[Z+5]==="Y"&&$[Z+6]==="P"&&$[Z+7]==="E"){let J=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")J++;else if($[Z]===">"){if(J--,J===0)break}}else if($.length>Z+9&&$[Z+1]==="["&&$[Z+2]==="C"&&$[Z+3]==="D"&&$[Z+4]==="A"&&$[Z+5]==="T"&&$[Z+6]==="A"&&$[Z+7]==="["){for(Z+=8;Z<$.length;Z++)if($[Z]==="]"&&$[Z+1]==="]"&&$[Z+2]===">"){Z+=2;break}}return Z}var bH='"',cH="'";function pH($,Z){let J="",Y="",Q=!1;for(;Z<$.length;Z++){if($[Z]===bH||$[Z]===cH)if(Y==="")Y=$[Z];else if(Y!==$[Z]);else Y="";else if($[Z]===">"){if(Y===""){Q=!0;break}}J+=$[Z]}if(Y!=="")return!1;return{value:J,index:Z,tagClosed:Q}}var uH=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function QX($,Z){let J=TZ($,uH),Y={};for(let Q=0;Q<J.length;Q++){if(J[Q][1].length===0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' has no space in starting.",WZ(J[Q]));else if(J[Q][3]!==void 0&&J[Q][4]===void 0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' is without value.",WZ(J[Q]));else if(J[Q][3]===void 0&&!Z.allowBooleanAttributes)return H0("InvalidAttr","boolean attribute '"+J[Q][2]+"' is not allowed.",WZ(J[Q]));let X=J[Q][2];if(!nH(X))return H0("InvalidAttr","Attribute '"+X+"' is an invalid name.",WZ(J[Q]));if(!Y.hasOwnProperty(X))Y[X]=1;else return H0("InvalidAttr","Attribute '"+X+"' is repeated.",WZ(J[Q]))}return!0}function mH($,Z){let J=/\d/;if($[Z]==="x")Z++,J=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(J))break}return-1}function dH($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,mH($,Z);let J=0;for(;Z<$.length;Z++,J++){if($[Z].match(/\w/)&&J<20)continue;if($[Z]===";")break;return-1}return Z}function H0($,Z,J){return{err:{code:$,msg:Z,line:J.line||J,col:J.col}}}function nH($){return m$($)}function sH($){return m$($)}function o0($,Z){let J=$.substring(0,Z).split(/\r?\n/);return{line:J.length,col:J[J.length-1].length+1}}function WZ($){return $.startIndex+$[1].length}var oH={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function($,Z){return Z},attributeValueProcessor:function($,Z){return Z},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function($,Z,J){return $},captureMetaData:!1},GX=function($){return Object.assign({},oH,$)};var NZ;if(typeof Symbol!=="function")NZ="@@xmlMetadata";else NZ=Symbol("XML Node Metadata");class t0{constructor($){this.tagname=$,this.child=[],this[":@"]={}}add($,Z){if($==="__proto__")$="#__proto__";this.child.push({[$]:Z})}addChild($,Z){if($.tagname==="__proto__")$.tagname="#__proto__";if($[":@"]&&Object.keys($[":@"]).length>0)this.child.push({[$.tagname]:$.child,[":@"]:$[":@"]});else this.child.push({[$.tagname]:$.child});if(Z!==void 0)this.child[this.child.length-1][NZ]={startIndex:Z}}static getMetaDataSymbol(){return NZ}}class DZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let J={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let Y=1,Q=!1,X=!1,G="";for(;Z<$.length;Z++)if($[Z]==="<"&&!X){if(Q&&D$($,"!ENTITY",Z)){Z+=7;let U,V;if([U,V,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),V.indexOf("&")===-1)J[U]={regx:RegExp(`&${U};`,"g"),val:V}}else if(Q&&D$($,"!ELEMENT",Z)){Z+=8;let{index:U}=this.readElementExp($,Z+1);Z=U}else if(Q&&D$($,"!ATTLIST",Z))Z+=8;else if(Q&&D$($,"!NOTATION",Z)){Z+=9;let{index:U}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=U}else if(D$($,"!--",Z))X=!0;else throw Error("Invalid DOCTYPE");Y++,G=""}else if($[Z]===">"){if(X){if($[Z-1]==="-"&&$[Z-2]==="-")X=!1,Y--}else Y--;if(Y===0)break}else if($[Z]==="[")Q=!0;else G+=$[Z];if(Y!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:J,i:Z}}readEntityExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")J+=$[Z],Z++;if(UZ(J),Z=r0($,Z),!this.suppressValidationErr){if($.substring(Z,Z+6).toUpperCase()==="SYSTEM")throw Error("External entities are not supported");else if($[Z]==="%")throw Error("Parameter entities are not supported")}let Y="";return[Z,Y]=this.readIdentifierVal($,Z,"entity"),Z--,[J,Y,Z]}readNotationExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;!this.suppressValidationErr&&UZ(J),Z=r0($,Z);let Y=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&Y!=="SYSTEM"&&Y!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${Y}"`);Z+=Y.length,Z=r0($,Z);let Q=null,X=null;if(Y==="PUBLIC"){if([Z,Q]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,X]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(Y==="SYSTEM"){if([Z,X]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!X)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:J,publicIdentifier:Q,systemIdentifier:X,index:--Z}}readIdentifierVal($,Z,J){let Y="",Q=$[Z];if(Q!=='"'&&Q!=="'")throw Error(`Expected quoted string, found "${Q}"`);Z++;while(Z<$.length&&$[Z]!==Q)Y+=$[Z],Z++;if($[Z]!==Q)throw Error(`Unterminated ${J} value`);return Z++,[Z,Y]}readElementExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;if(!this.suppressValidationErr&&!m$(J))throw Error(`Invalid element name: "${J}"`);Z=r0($,Z);let Y="";if($[Z]==="E"&&D$($,"MPTY",Z))Z+=4;else if($[Z]==="A"&&D$($,"NY",Z))Z+=2;else if($[Z]==="("){Z++;while(Z<$.length&&$[Z]!==")")Y+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:J,contentModel:Y.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;UZ(J),Z=r0($,Z);let Y="";while(Z<$.length&&!/\s/.test($[Z]))Y+=$[Z],Z++;if(!UZ(Y))throw Error(`Invalid attribute name: "${Y}"`);Z=r0($,Z);let Q="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(Q="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let G=[];while(Z<$.length&&$[Z]!==")"){let U="";while(Z<$.length&&$[Z]!=="|"&&$[Z]!==")")U+=$[Z],Z++;if(U=U.trim(),!UZ(U))throw Error(`Invalid notation name: "${U}"`);if(G.push(U),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,Q+=" ("+G.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;let G=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!G.includes(Q.toUpperCase()))throw Error(`Invalid attribute type: "${Q}"`)}Z=r0($,Z);let X="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")X="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")X="#IMPLIED",Z+=7;else[Z,X]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:J,attributeName:Y,attributeType:Q,defaultValue:X,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function D$($,Z,J){for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==$[J+Y+1])return!1;return!0}function UZ($){if(m$($))return $;else throw Error(`Invalid entity name ${$}`)}var lH=/^[-+]?0x[a-fA-F0-9]+$/,rH=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,iH={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function mJ($,Z={}){if(Z=Object.assign({},iH,Z),!$||typeof $!=="string")return $;let J=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(J))return $;else if($==="0")return 0;else if(Z.hex&&lH.test(J))return $W(J,16);else if(J.includes("e")||J.includes("E"))return aH($,J,Z);else{let Y=rH.exec(J);if(Y){let Q=Y[1]||"",X=Y[2],G=eH(Y[3]),U=Q?$[X.length+1]===".":$[X.length]===".";if(!Z.leadingZeros&&(X.length>1||X.length===1&&!U))return $;else{let V=Number(J),M=String(V);if(V===0)return V;if(M.search(/[eE]/)!==-1)if(Z.eNotation)return V;else return $;else if(J.indexOf(".")!==-1)if(M==="0")return V;else if(M===G)return V;else if(M===`${Q}${G}`)return V;else return $;let z=X?G:J;if(X)return z===M||Q+z===M?V:$;else return z===M||z===Q+M?V:$}}else return $}}var tH=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function aH($,Z,J){if(!J.eNotation)return $;let Y=Z.match(tH);if(Y){let Q=Y[1]||"",X=Y[3].indexOf("e")===-1?"E":"e",G=Y[2],U=Q?$[G.length+1]===X:$[G.length]===X;if(G.length>1&&U)return $;else if(G.length===1&&(Y[3].startsWith(`.${X}`)||Y[3][0]===X))return Number(Z);else if(J.leadingZeros&&!U)return Z=(Y[1]||"")+Y[3],Number(Z);else return $}else return $}function eH($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function $W($,Z){if(parseInt)return parseInt($,Z);else if(Number.parseInt)return Number.parseInt($,Z);else if(window&&window.parseInt)return window.parseInt($,Z);else throw Error("parseInt, Number.parseInt, window.parseInt are not supported")}function dJ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let J of $){if(typeof J==="string"&&Z===J)return!0;if(J instanceof RegExp&&J.test(Z))return!0}};return()=>!1}class kZ{constructor($){if(this.options=$,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xA2"},pound:{regex:/&(pound|#163);/g,val:"\xA3"},yen:{regex:/&(yen|#165);/g,val:"\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\xA9"},reg:{regex:/&(reg|#174);/g,val:"\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\u20B9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,16))}},this.addExternalEntities=ZW,this.parseXml=GW,this.parseTextData=JW,this.resolveNameSpace=YW,this.buildAttributesMap=XW,this.isItStopNode=VW,this.replaceEntitiesValue=WW,this.readStopNodeData=_W,this.saveTextToParentTag=UW,this.addChild=HW,this.ignoreAttributesFn=dJ(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let Z=0;Z<this.options.stopNodes.length;Z++){let J=this.options.stopNodes[Z];if(typeof J!=="string")continue;if(J.startsWith("*."))this.stopNodesWildcard.add(J.substring(2));else this.stopNodesExact.add(J)}}}}function ZW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];this.lastEntities[Y]={regex:new RegExp("&"+Y+";","g"),val:$[Y]}}}function JW($,Z,J,Y,Q,X,G){if($!==void 0){if(this.options.trimValues&&!Y)$=$.trim();if($.length>0){if(!G)$=this.replaceEntitiesValue($);let U=this.options.tagValueProcessor(Z,$,J,Q,X);if(U===null||U===void 0)return $;else if(typeof U!==typeof $||U!==$)return U;else if(this.options.trimValues)return sJ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return sJ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function YW($){if(this.options.removeNSPrefix){let Z=$.split(":"),J=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=J+Z[1]}return $}var QW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function XW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let J=TZ($,QW),Y=J.length,Q={};for(let X=0;X<Y;X++){let G=this.resolveNameSpace(J[X][1]);if(this.ignoreAttributesFn(G,Z))continue;let U=J[X][4],V=this.options.attributeNamePrefix+G;if(G.length){if(this.options.transformAttributeName)V=this.options.transformAttributeName(V);if(V==="__proto__")V="#__proto__";if(U!==void 0){if(this.options.trimValues)U=U.trim();U=this.replaceEntitiesValue(U);let M=this.options.attributeValueProcessor(G,U,Z);if(M===null||M===void 0)Q[V]=U;else if(typeof M!==typeof U||M!==U)Q[V]=M;else Q[V]=sJ(U,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)Q[V]=!0}}if(!Object.keys(Q).length)return;if(this.options.attributesGroupName){let X={};return X[this.options.attributesGroupName]=Q,X}return Q}}var GW=function($){$=$.replace(/\r\n?/g,`
|
|
16
|
+
`);let Z=new t0("!xml"),J=Z,Y="",Q="",X=new DZ(this.options.processEntities);for(let G=0;G<$.length;G++)if($[G]==="<")if($[G+1]==="/"){let V=k$($,">",G,"Closing Tag is not closed."),M=$.substring(G+2,V).trim();if(this.options.removeNSPrefix){let L=M.indexOf(":");if(L!==-1)M=M.substr(L+1)}if(this.options.transformTagName)M=this.options.transformTagName(M);if(J)Y=this.saveTextToParentTag(Y,J,Q);let z=Q.substring(Q.lastIndexOf(".")+1);if(M&&this.options.unpairedTags.indexOf(M)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${M}>`);let _=0;if(z&&this.options.unpairedTags.indexOf(z)!==-1)_=Q.lastIndexOf(".",Q.lastIndexOf(".")-1),this.tagsNodeStack.pop();else _=Q.lastIndexOf(".");Q=Q.substring(0,_),J=this.tagsNodeStack.pop(),Y="",G=V}else if($[G+1]==="?"){let V=nJ($,G,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(Y=this.saveTextToParentTag(Y,J,Q),this.options.ignoreDeclaration&&V.tagName==="?xml"||this.options.ignorePiTags);else{let M=new t0(V.tagName);if(M.add(this.options.textNodeName,""),V.tagName!==V.tagExp&&V.attrExpPresent)M[":@"]=this.buildAttributesMap(V.tagExp,Q);this.addChild(J,M,Q,G)}G=V.closeIndex+1}else if($.substr(G+1,3)==="!--"){let V=k$($,"-->",G+4,"Comment is not closed.");if(this.options.commentPropName){let M=$.substring(G+4,V-2);Y=this.saveTextToParentTag(Y,J,Q),J.add(this.options.commentPropName,[{[this.options.textNodeName]:M}])}G=V}else if($.substr(G+1,2)==="!D"){let V=X.readDocType($,G);this.docTypeEntities=V.entities,G=V.i}else if($.substr(G+1,2)==="!["){let V=k$($,"]]>",G,"CDATA is not closed.")-2,M=$.substring(G+9,V);Y=this.saveTextToParentTag(Y,J,Q);let z=this.parseTextData(M,J.tagname,Q,!0,!1,!0,!0);if(z==null)z="";if(this.options.cdataPropName)J.add(this.options.cdataPropName,[{[this.options.textNodeName]:M}]);else J.add(this.options.textNodeName,z);G=V+2}else{let V=nJ($,G,this.options.removeNSPrefix),M=V.tagName,z=V.rawTagName,_=V.tagExp,L=V.attrExpPresent,C=V.closeIndex;if(this.options.transformTagName){let D=this.options.transformTagName(M);if(_===M)_=D;M=D}if(J&&Y){if(J.tagname!=="!xml")Y=this.saveTextToParentTag(Y,J,Q,!1)}let E=J;if(E&&this.options.unpairedTags.indexOf(E.tagname)!==-1)J=this.tagsNodeStack.pop(),Q=Q.substring(0,Q.lastIndexOf("."));if(M!==Z.tagname)Q+=Q?"."+M:M;let S=G;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,Q,M)){let D="";if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(M[M.length-1]==="/")M=M.substr(0,M.length-1),Q=Q.substr(0,Q.length-1),_=M;else _=_.substr(0,_.length-1);G=V.closeIndex}else if(this.options.unpairedTags.indexOf(M)!==-1)G=V.closeIndex;else{let w=this.readStopNodeData($,z,C+1);if(!w)throw Error(`Unexpected end of ${z}`);G=w.i,D=w.tagContent}let N=new t0(M);if(M!==_&&L)N[":@"]=this.buildAttributesMap(_,Q);if(D)D=this.parseTextData(D,M,Q,!0,L,!0,!0);Q=Q.substr(0,Q.lastIndexOf(".")),N.add(this.options.textNodeName,D),this.addChild(J,N,Q,S)}else{if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(M[M.length-1]==="/")M=M.substr(0,M.length-1),Q=Q.substr(0,Q.length-1),_=M;else _=_.substr(0,_.length-1);if(this.options.transformTagName){let N=this.options.transformTagName(M);if(_===M)_=N;M=N}let D=new t0(M);if(M!==_&&L)D[":@"]=this.buildAttributesMap(_,Q);this.addChild(J,D,Q,S),Q=Q.substr(0,Q.lastIndexOf("."))}else{let D=new t0(M);if(this.tagsNodeStack.push(J),M!==_&&L)D[":@"]=this.buildAttributesMap(_,Q);this.addChild(J,D,Q,S),J=D}Y="",G=C}}else Y+=$[G];return Z.child};function HW($,Z,J,Y){if(!this.options.captureMetaData)Y=void 0;let Q=this.options.updateTag(Z.tagname,J,Z[":@"]);if(Q===!1);else if(typeof Q==="string")Z.tagname=Q,$.addChild(Z,Y);else $.addChild(Z,Y)}var WW=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let J=this.docTypeEntities[Z];$=$.replace(J.regx,J.val)}for(let Z in this.lastEntities){let J=this.lastEntities[Z];$=$.replace(J.regex,J.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let J=this.htmlEntities[Z];$=$.replace(J.regex,J.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function UW($,Z,J,Y){if($){if(Y===void 0)Y=Z.child.length===0;if($=this.parseTextData($,Z.tagname,J,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,Y),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function VW($,Z,J,Y){if(Z&&Z.has(Y))return!0;if($&&$.has(J))return!0;return!1}function OW($,Z,J=">"){let Y,Q="";for(let X=Z;X<$.length;X++){let G=$[X];if(Y){if(G===Y)Y=""}else if(G==='"'||G==="'")Y=G;else if(G===J[0])if(J[1]){if($[X+1]===J[1])return{data:Q,index:X}}else return{data:Q,index:X};else if(G==="\t")G=" ";Q+=G}}function k$($,Z,J,Y){let Q=$.indexOf(Z,J);if(Q===-1)throw Error(Y);else return Q+Z.length-1}function nJ($,Z,J,Y=">"){let Q=OW($,Z+1,Y);if(!Q)return;let{data:X,index:G}=Q,U=X.search(/\s/),V=X,M=!0;if(U!==-1)V=X.substring(0,U),X=X.substring(U+1).trimStart();let z=V;if(J){let _=V.indexOf(":");if(_!==-1)V=V.substr(_+1),M=V!==Q.data.substr(_+1)}return{tagName:V,tagExp:X,closeIndex:G,attrExpPresent:M,rawTagName:z}}function _W($,Z,J){let Y=J,Q=1;for(;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let X=k$($,">",J,`${Z} is not closed`);if($.substring(J+2,X).trim()===Z){if(Q--,Q===0)return{tagContent:$.substring(Y,J),i:X}}J=X}else if($[J+1]==="?")J=k$($,"?>",J+1,"StopNode is not closed.");else if($.substr(J+1,3)==="!--")J=k$($,"-->",J+3,"StopNode is not closed.");else if($.substr(J+1,2)==="![")J=k$($,"]]>",J,"StopNode is not closed.")-2;else{let X=nJ($,J,">");if(X){if((X&&X.tagName)===Z&&X.tagExp[X.tagExp.length-1]!=="/")Q++;J=X.closeIndex}}}function sJ($,Z,J){if(Z&&typeof $==="string"){let Y=$.trim();if(Y==="true")return!0;else if(Y==="false")return!1;else return mJ($,J)}else if($X($))return $;else return""}var oJ=t0.getMetaDataSymbol();function lJ($,Z){return HX($,Z)}function HX($,Z,J){let Y,Q={};for(let X=0;X<$.length;X++){let G=$[X],U=MW(G),V="";if(J===void 0)V=U;else V=J+"."+U;if(U===Z.textNodeName)if(Y===void 0)Y=G[U];else Y+=""+G[U];else if(U===void 0)continue;else if(G[U]){let M=HX(G[U],Z,V),z=zW(M,Z);if(G[oJ]!==void 0)M[oJ]=G[oJ];if(G[":@"])AW(M,G[":@"],V,Z);else if(Object.keys(M).length===1&&M[Z.textNodeName]!==void 0&&!Z.alwaysCreateTextNode)M=M[Z.textNodeName];else if(Object.keys(M).length===0)if(Z.alwaysCreateTextNode)M[Z.textNodeName]="";else M="";if(Q[U]!==void 0&&Q.hasOwnProperty(U)){if(!Array.isArray(Q[U]))Q[U]=[Q[U]];Q[U].push(M)}else if(Z.isArray(U,V,z))Q[U]=[M];else Q[U]=M}}if(typeof Y==="string"){if(Y.length>0)Q[Z.textNodeName]=Y}else if(Y!==void 0)Q[Z.textNodeName]=Y;return Q}function MW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];if(Y!==":@")return Y}}function AW($,Z,J,Y){if(Z){let Q=Object.keys(Z),X=Q.length;for(let G=0;G<X;G++){let U=Q[G];if(Y.isArray(U,J+"."+U,!0,!0))$[U]=[Z[U]];else $[U]=Z[U]}}}function zW($,Z){let{textNodeName:J}=Z,Y=Object.keys($).length;if(Y===0)return!0;if(Y===1&&($[J]||typeof $[J]==="boolean"||$[J]===0))return!0;return!1}class VZ{constructor($){this.externalEntities={},this.options=GX($)}parse($,Z){if(typeof $!=="string"&&$.toString)$=$.toString();else if(typeof $!=="string")throw Error("XML data is accepted in String or Bytes[] form.");if(Z){if(Z===!0)Z={};let Q=XX($,Z);if(Q!==!0)throw Error(`${Q.err.msg}:${Q.err.line}:${Q.err.col}`)}let J=new kZ(this.options);J.addExternalEntities(this.externalEntities);let Y=J.parseXml($);if(this.options.preserveOrder||Y===void 0)return Y;else return lJ(Y,this.options)}addEntity($,Z){if(Z.indexOf("&")!==-1)throw Error("Entity value can't have '&'");else if($.indexOf("&")!==-1||$.indexOf(";")!==-1)throw Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");else if(Z==="&")throw Error("An entity with value '&' is not permitted");else this.externalEntities[$]=Z}static getMetaDataSymbol(){return t0.getMetaDataSymbol()}}var FW=new VZ,KW={name:"parser",enable:!0,deps:["auth"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.rawBody){Z.body={};return}if(Z.req.method==="GET"){let J=new URL(Z.req.url),Y=Object.fromEntries(J.searchParams);Z.body=Y}else if(Z.req.method==="POST"){let J=Z.req.headers.get("content-type")||"",Y=new URL(Z.req.url),Q=Object.fromEntries(Y.searchParams);try{if(J.includes("application/json")){let X=await Z.req.json(),G={...Q,...X};Z.body=G}else if(J.includes("application/xml")||J.includes("text/xml")){let X=await Z.req.text(),G=FW.parse(X),U=Object.keys(G)[0],V=U&&typeof G[U]==="object"?G[U]:G,M={...Q,...V};Z.body=M}else{Z.response=B$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:J},"parser");return}}catch{Z.response=B$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:J.includes("application/json")?"invalid_json":J.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},WX=KW;class m0{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleApis($){return`role:apis:${$}`}}$0();var RW={name:"permission",enable:!0,deps:["validator"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.auth===!1)return;if(typeof Z.user.id!=="number"){Z.response=B$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let J=Z.route,Y=Z.user.roleCode,Q=!1;if(Y&&$.redis)try{let X=m0.roleApis(Y);Q=await $.redis.sismember(X,J)}catch(X){I.error({event:"hook_permission_redis_error",apiPath:J,roleCode:Y,err:X,msg:"hook permission redis error"}),Q=!1}if(!Q){let X=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,G=typeof J==="string"&&J.length>0?J:null,U=X?X:G?G:"\u672A\u77E5\u63A5\u53E3";Z.response=B$(Z,`\u65E0\u6743\u8BBF\u95EE ${U} \u63A5\u53E3`,1,null,{apiLabel:U},"permission");return}}},UX=RW;var rJ={number:"^\\d+$",integer:"^-?\\d+$",float:"^-?\\d+(\\.\\d+)?$",positive:"^[1-9]\\d*$",negative:"^-\\d+$",zero:"^0$",word:"^[a-zA-Z]+$",alphanumeric:"^[a-zA-Z0-9]+$",alphanumeric_:"^[a-zA-Z0-9_]+$",alphanumericDash_:"^[a-zA-Z0-9_-]+$",lowercase:"^[a-z]+$",uppercase:"^[A-Z]+$",chinese:"^[\\u4e00-\\u9fa5]+$",chineseWord:"^[\\u4e00-\\u9fa5a-zA-Z]+$",email:"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",phone:"^1[3-9]\\d{9}$",telephone:"^0\\d{2,3}-?\\d{7,8}$",url:"^https?://",ip:"^((25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$",ipv6:"^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$",domain:"^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$",uuid:"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",hex:"^[0-9a-fA-F]+$",base64:"^[A-Za-z0-9+/=]+$",md5:"^[a-f0-9]{32}$",sha1:"^[a-f0-9]{40}$",sha256:"^[a-f0-9]{64}$",date:"^\\d{4}-\\d{2}-\\d{2}$",time:"^\\d{2}:\\d{2}:\\d{2}$",datetime:"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}",year:"^\\d{4}$",month:"^(0[1-9]|1[0-2])$",day:"^(0[1-9]|[12]\\d|3[01])$",variable:"^[a-zA-Z_][a-zA-Z0-9_]*$",constant:"^[A-Z][A-Z0-9_]*$",package:"^[a-z][a-z0-9-]*$",idCard:"^\\d{17}[\\dXx]$",passport:"^[a-zA-Z0-9]{5,17}$",bankCard:"^\\d{16,19}$",wechat:"^[a-zA-Z][a-zA-Z0-9_-]{5,19}$",qq:"^[1-9]\\d{4,10}$",alipay:"^(1[3-9]\\d{9}|[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})$",username:"^[a-zA-Z][a-zA-Z0-9_]{3,19}$",nickname:"^[\\u4e00-\\u9fa5a-zA-Z0-9]{2,20}$",passwordWeak:"^.{6,}$",passwordMedium:"^(?=.*[a-zA-Z])(?=.*\\d).{8,}$",passwordStrong:"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[!@#$%^&*]).{8,}$",licensePlate:"^[\u4EAC\u6D25\u6CAA\u6E1D\u5180\u8C6B\u4E91\u8FBD\u9ED1\u6E58\u7696\u9C81\u65B0\u82CF\u6D59\u8D63\u9102\u6842\u7518\u664B\u8499\u9655\u5409\u95FD\u8D35\u7CA4\u9752\u85CF\u5DDD\u5B81\u743C\u4F7F\u9886][A-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9\u6302\u5B66\u8B66\u6E2F\u6FB3]$",postalCode:"^\\d{6}$",semver:"^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?(\\+[a-zA-Z0-9.]+)?$",colorHex:"^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$",empty:"^$",notempty:".+"},VX=new Map;function qW($){if($.startsWith("@")){let Z=$.slice(1);return rJ[Z]||$}return $}function IW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let J=Z.lastIndexOf("/");if(J<=0)return null;let Y=Z.slice(J+1);if(Y!==""&&!/^[gimsuy]+$/.test(Y))return null;return{source:Z.slice(1,J),flags:Y}}function OX($,Z){let J=IW($),Y=J?J.source:qW($),Q=J&&J.flags!==""?J.flags:Z||"",X=`${Y}:${Q}`,G=VX.get(X);if(!G)G=new RegExp(Y,Q),VX.set(X,G);return G}u0();var vZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function xZ($,Z){if(qJ($)){if(Z==="number")return KZ($);return RZ($)}if(Array.isArray($)){for(let J of $)if(!xZ(J,Z))return!1;return!0}if(FZ($)){for(let J of Object.values($)){if(J===void 0)continue;if(!xZ(J,Z))return!1}return!0}return!1}class iJ{static validate($,Z,J=[]){let Y={};if(!n($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!n(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let Q=$,X=Z;for(let G of J){let U=Q[G];if(U===void 0||U===null){let V=X[G],M=n(V)&&typeof V.name==="string"?V.name:G;Y[G]=`${M}\u4E3A\u5FC5\u586B\u9879`}}for(let[G,U]of Object.entries(X)){if(Y[G])continue;if(Q[G]===void 0&&!J.includes(G))continue;if(!n(U)){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:V,type:M}=U;if(typeof V!=="string"||typeof M!=="string"){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let z={name:V,type:M},_=U.input;if(typeof _==="string")z.input=_;let L=U.min;if(typeof L==="number"||L===null)z.min=L;let C=U.max;if(typeof C==="number"||C===null)z.max=C;let E=U.default;if(E===null||typeof E==="string"||typeof E==="number"||typeof E==="boolean"||Array.isArray(E)||n(E))z.default=E;let S=U.detail;if(typeof S==="string")z.detail=S;let D=U.index;if(typeof D==="boolean")z.index=D;let N=U.unique;if(typeof N==="boolean")z.unique=N;let w=U.nullable;if(typeof w==="boolean")z.nullable=w;let k=U.unsigned;if(typeof k==="boolean")z.unsigned=k;let b=this.checkField(Q[G],z,G);if(b)Y[G]=b}return this.buildResult(Y)}static single($,Z){let J=W$(Z),Y=J.type,Q=J.input,X=J.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(Y,Q,X),error:null};let G=this.convert($,Q,Y);if(G.error)return{value:null,error:G.error};let U=this.checkRule(G.value,Z);if(U)return{value:null,error:U};return{value:G.value,error:null}}static buildResult($){let Z=Object.values($),J=Object.keys($),Y=Z.length>0;return{code:Y?1:0,failed:Y,firstError:Y?Z[0]??null:null,errors:Z,errorFields:J,fieldErrors:$}}static checkField($,Z,J){let Y=Z.name||J,Q=W$(Z),X=this.convert($,Q.input,Q.type);if(X.error)return`${Y}${X.error}`;let G=this.checkRule(X.value,Z);return G?`${Y}${G}`:null}static convert($,Z,J){let Y=String(Z||"").trim(),Q=Y.toLowerCase();if(!vZ.has(Q)&&f$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!vZ.has(Q)&&y$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(Q){case"number":{if(KZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}return{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}case"integer":{if(RZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)&&Number.isInteger(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}return{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}case"string":{if(typeof $==="string"){if(String(J||"").toLowerCase()==="datetime")return{value:$.trim(),error:null};return{value:$,error:null}}if(String(J||"").toLowerCase()==="datetime")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"}}case"char":if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};return $.length===1?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5355\u5B57\u7B26"};case"array":return Array.isArray($)?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};case"array_number":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!KZ(X))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6570\u5B57"};return{value:$,error:null}}case"array_integer":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!RZ(X))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6574\u6570"};return{value:$,error:null}}case"json":if(!YZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!YZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return xZ($,"number")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6570\u5B57"};case"json_integer":if(!YZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return xZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{if(String(J||"").toLowerCase()==="datetime"){if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:$.trim(),error:null}}return{value:$,error:null}}}}static checkRule($,Z){let J=W$(Z),Y=J.type,Q=J.input,X=J.min,G=J.max,U=String(Q||"").trim(),V=U.toLowerCase(),M=!vZ.has(V)&&f$(U),z=!vZ.has(V)&&y$(U);if(V==="number"||V==="integer"){if(typeof $!=="number")return V==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(X!==null&&$<X)return`\u4E0D\u80FD\u5C0F\u4E8E${X}`;if(G!==null&&G>0&&$>G)return`\u4E0D\u80FD\u5927\u4E8E${G}`}else if(V==="string"||V==="char"||M||z){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(V==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(X!==null&&$.length<X)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${X}\u4E2A\u5B57\u7B26`;if(G!==null&&G>0&&$.length>G)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${G}\u4E2A\u5B57\u7B26`;if(M){let _=this.resolveRegex(U);if(!this.testRegex(_,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(z){if(!U.split("|").map((L)=>L.trim()).filter((L)=>L!=="").includes($))return"\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185"}}else if(V==="array"||V==="array_number"||V==="array_integer"){if(!Array.isArray($))return"\u5FC5\u987B\u662F\u6570\u7EC4";if(X!==null&&$.length<X)return`\u81F3\u5C11\u9700\u8981${X}\u4E2A\u5143\u7D20`;if(G!==null&&G>0&&$.length>G)return`\u6700\u591A\u53EA\u80FD\u6709${G}\u4E2A\u5143\u7D20`}else if(V==="json"||V==="json_number"||V==="json_integer"){if(!YZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}if(String(Y||"").toLowerCase()==="datetime"){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32";if(!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test($))return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[_,L]=$.split(" ");if(typeof _!=="string"||typeof L!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[C,E,S]=_.split("-"),[D,N,w]=L.split(":"),k=Number(C),b=Number(E),x=Number(S),m=Number(D),a=Number(N),r=Number(w);if(!Number.isInteger(k)||k<1000||k>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(b)||b<1||b>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(x)||x<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(m)||m<0||m>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(a)||a<0||a>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(r)||r<0||r>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let H=[31,k%4===0&&k%100!==0||k%400===0?29:28,31,30,31,30,31,31,30,31,30,31][b-1]??0;if(x>H)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return rJ[Z]||$}return $}static testRegex($,Z){try{return OX($).test(Z)}catch{return!1}}static defaultFor($,Z,J){if(J!==null&&J!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof J==="string"){if(J==="[]")return[];try{let X=JSON.parse(J);return Array.isArray(X)?X:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof J==="string"){let X=Number(J);return isNaN(X)?0:X}return J}let Y=String($||"").toLowerCase();if(Y==="datetime"||Y==="json")return null;let Q=String(Z||"").toLowerCase();if(Q==="json"||Q==="json_number"||Q==="json_integer")return null;switch(String(Z||"").toLowerCase()){case"number":case"integer":return 0;case"array":case"array_number":case"array_integer":return[];default:return""}}}u0();var jW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(n(Z.api.fields)){let Y=n(Z.body)?Z.body:{},Q={};for(let[X,G]of Object.entries(Z.api.fields)){let U=W$(G),V=Y[X];if(V===void 0){let M=c(X);if(Y[M]!==void 0)V=Y[M]}if(V===void 0&&U.default!==null)V=U.default;if(V!==void 0)Q[X]=V}Z.body=Q}let J=iJ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(J.code!==0){Z.response=B$(Z,J.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,J.fieldErrors,"validator");return}}},_X=jW;$0();class tJ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let J=$.trim();if(!J)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(J))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!J.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(J.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return J}assertApiPathList($,Z){if($===null||$===void 0)return[];let J=$;if(typeof J==="string"){let Q=J.trim();if(Q===""||Q==="null")return[];if(Q.startsWith("[")&&Q.endsWith("]"))try{J=JSON.parse(Q)}catch{throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis JSON \u89E3\u6790\u5931\u8D25\uFF0CroleCode=${Z}`)}}if(!Array.isArray(J))throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u6216 JSON \u6570\u7EC4\u5B57\u7B26\u4E32\uFF0CroleCode=${Z}\uFF0Ctype=${typeof J}`);let Y=[];for(let Q of J)Y.push(this.assertApiPathname(Q,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return Y}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){I.warn("\u26A0\uFE0F \u63A5\u53E3\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u63A5\u53E3\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_api"});if(await this.redis.setObject(m0.apisAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){I.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){I.warn("\u26A0\uFE0F \u83DC\u5355\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u83DC\u5355\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_menu"});if(await this.redis.setObject(m0.menusAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){I.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){I.warn("\u26A0\uFE0F \u89D2\u8272\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u89D2\u8272\u6743\u9650\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_role",fields:["code","apis"]}),J=new Map;for(let G of Z.data.lists){if(!G?.code)continue;let U=this.assertApiPathList(G.apis,G.code);J.set(G.code,U)}let Y=Array.from(J.keys());if(Y.length===0){I.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let Q=Y.map((G)=>m0.roleApis(G));await this.redis.delBatch(Q);let X=[];for(let G of Y){let U=J.get(G)||[],V=Array.from(new Set(U)).sort();if(V.length>0)X.push({key:m0.roleApis(G),members:V})}if(X.length>0)await this.redis.saddBatch(X)}catch($){throw I.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new g({kind:"runtime",message:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09",logged:!0,cause:$,meta:{subsystem:"cache",operation:"rebuildRoleApiPermissions"}})}}async refreshRoleApiPermissions($,Z){if(!$||typeof $!=="string")throw Error("roleCode \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Array.isArray(Z))throw Error("apiPaths \u5FC5\u987B\u662F\u6570\u7EC4");let J=Z.map((X)=>this.assertApiPathname(X,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),Y=m0.roleApis($);if(J.length===0){await this.redis.del(Y);return}let Q=Array.from(new Set(J));if(await this.redis.del(Y),Q.length>0)await this.redis.sadd(Y,Q)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions()}async getApis(){try{return await this.redis.getObject(m0.apisAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(m0.menusAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(m0.roleApis($))||[]}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let J=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(m0.roleApis($),J)}catch(J){return I.error({err:J,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(m0.roleApis($))>0)return I.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var LW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new g({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new g({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new tJ({db:$.db,redis:$.redis})}},MX=LW;var BW={name:"cipher",enable:!0,deps:[],handler:()=>{return u$}},AX=BW;var PW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},zX=PW;function fZ($,Z=["id","pid","sort"]){if($===null||$===void 0)return $;let J=BigInt(Number.MAX_SAFE_INTEGER),Y=BigInt(Number.MIN_SAFE_INTEGER),Q=(X)=>{let G={};for(let[U,V]of Object.entries(X))G[U]=V;for(let[U,V]of Object.entries(G)){if(V===void 0||V===null)continue;if(!(Z.includes(U)||U.endsWith("Id")||U.endsWith("_id")||U.endsWith("At")||U.endsWith("_at")))continue;let z=null;if(typeof V==="bigint")z=V;else if(typeof V==="string"){if(!/^-?\d+$/.test(V))continue;try{z=BigInt(V)}catch{continue}}else continue;if(z>J||z<Y)throw Error(`BIGINT \u5B57\u6BB5\u8D85\u51FA JS \u5B89\u5168\u6574\u6570\u8303\u56F4\uFF0C\u8BF7\u6539\u7528 bigint/string \u6216\u8C03\u6574\u5B57\u6BB5\u8BBE\u8BA1 (field: ${U}, value: ${String(V)})`);G[U]=Number(z)}return G};if(Array.isArray($))return $.map((X)=>Q(X));if(typeof $==="object")return Q($);return $}function aJ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function CW($){return Array.isArray($)}function E$($,Z={}){let{pickKeys:J,omitKeys:Y,keepValues:Q,excludeValues:X,keepMap:G}=Z,U=(V)=>{let M={},z=Object.keys(V);if(J&&J.length)z=z.filter((_)=>J.includes(_));if(Y&&Y.length)z=z.filter((_)=>!Y.includes(_));for(let _ of z){let L=V[_];if(G&&_ in G){if(Object.is(G[_],L)){M[_]=L;continue}}if(Q&&Q.length&&!Q.includes(L))continue;if(X&&X.length&&X.includes(L))continue;M[_]=L}return M};if(CW($))return $.map((V)=>aJ(V)?U(V):V).filter((V)=>{if(aJ(V))return Object.keys(V).length>0;return!0});if(aJ($))return U($);return $}u0();u0();class Q0{static SAFE_IDENTIFIER_RE=/^[a-zA-Z_][a-zA-Z0-9_]*$/;static assertNonEmptyString($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (value: ${String($)})`);if(!$.trim())throw Error(`${Z} \u4E0D\u80FD\u4E3A\u7A7A`)}static assertNoUndefinedParam($,Z){if($===void 0)throw Error(`${Z} \u4E0D\u80FD\u4E3A undefined`)}static startsWithQuote($){let Z=$.trim();return Z.startsWith("`")||Z.startsWith('"')}static isQuotedIdentPaired($){let Z=$.trim();if(Z.length<2)return!1;let J=Z[0],Y=Z[Z.length-1];if(J==="`"&&Y==="`")return!0;if(J==='"'&&Y==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(Q0.startsWithQuote($)&&!Q0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(Q0.isQuotedIdentPaired($))return;if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u522B\u540D: ${$}`)}static assertNoExprField($){if(typeof $!=="string")return;let Z=$.trim();if(!Z)return;if(Z.includes("(")||Z.includes(")"))throw Error(`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${Z})`)}static assertNoUndefinedInRecord($,Z){for(let[J,Y]of Object.entries($))if(Y===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${J})`)}static assertBatchInsertRowsConsistent($,Z){if(!Array.isArray($))throw Error("\u6279\u91CF\u63D2\u5165 rows \u5FC5\u987B\u662F\u6570\u7EC4");if($.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A (table: ${Z.table})`);let J=$[0];if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let Y=Object.keys(J);if(Y.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let Q=new Set(Y);for(let X=0;X<$.length;X++){let G=$[X];if(!G||typeof G!=="object"||Array.isArray(G))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: ${X})`);let U=Object.keys(G);if(U.length!==Y.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X})`);for(let V of U)if(!Q.has(V))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X}, extraField: ${V})`);for(let V of Y){if(!(V in G))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${X}, field: ${V})`);Q0.assertNoUndefinedParam(G[V],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${X}, field: ${V})`)}}return Y}}class h{static parseTableRef($){if(typeof $!=="string")throw Error(`tableRef \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (tableRef: ${String($)})`);let Z=$.trim();if(!Z)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");let J=Z.split(/\s+/).filter((U)=>U.length>0);if(J.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(J.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528\u6700\u7B80\u5F62\u5F0F\uFF1Atable \u6216 table alias \u6216 schema.table \u6216 schema.table alias (tableRef: ${Z})`);let Y=J[0];if(typeof Y!=="string"||Y.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let Q=null;if(J.length===2){let U=J[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);Q=U}let X=Y.split(".");if(X.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(X.length===2){let U=X[0],V=X[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Aschema \u4E3A\u7A7A (tableRef: ${Z})`);if(typeof V!=="string"||V.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:U,table:V,alias:Q}}let G=X[0];if(typeof G!=="string"||G.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:G,alias:Q}}static normalizeTableRef($){let Z=h.parseTableRef($),J=Z.schema?c(Z.schema):null,Y=c(Z.table),Q=J?`${J}.${Y}`:Y;if(Z.alias)Q=`${Q} ${Z.alias}`;return Q}static getJoinMainQualifier($){let Z=h.parseTableRef($);if(Z.alias)return Z.alias;return c(Z.table)}static async fieldsToSnake($,Z,J){if(!Z||!Array.isArray(Z))return["*"];let Y=h.validateAndClassifyFields(Z);if(Y.type==="all")return["*"];if(Y.type==="include")return Y.fields.map((Q)=>{return h.processJoinField(Q)});if(Y.type==="exclude"){let Q=await J($),X=Y.fields.map((U)=>c(U)),G=Q.filter((U)=>!X.includes(U));if(G.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${X.join(", ")}`);return G}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((Y)=>Y==="*"))throw Error("fields \u4E0D\u652F\u6301 * \u661F\u53F7\uFF0C\u8BF7\u4F7F\u7528\u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\u53C2\u6570\u8868\u793A\u67E5\u8BE2\u6240\u6709\u5B57\u6BB5");if($.some((Y)=>!Y||typeof Y!=="string"||Y.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let Y of $){let Q=Y.startsWith("!")?Y.substring(1):Y;Q0.assertNoExprField(Q)}let Z=$.filter((Y)=>!Y.startsWith("!")),J=$.filter((Y)=>Y.startsWith("!"));if(Z.length>0&&J.length===0)return{type:"include",fields:Z};if(J.length>0&&Z.length===0)return{type:"exclude",fields:J.map((Q)=>Q.substring(1))};throw Error(`fields \u4E0D\u80FD\u540C\u65F6\u5305\u542B\u666E\u901A\u5B57\u6BB5\u548C\u6392\u9664\u5B57\u6BB5\uFF08! \u5F00\u5934\uFF09\u3002\u53EA\u80FD\u4F7F\u7528\u4EE5\u4E0B3\u79CD\u65B9\u5F0F\u4E4B\u4E00\uFF1A
|
|
17
17
|
1. \u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\uFF08\u67E5\u8BE2\u6240\u6709\uFF09
|
|
18
18
|
2. \u5168\u90E8\u6307\u5B9A\u5B57\u6BB5 ["id", "name"]
|
|
19
|
-
3. \u5168\u90E8\u6392\u9664\u5B57\u6BB5 ["!password", "!token"]`)}static orderByToSnake($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${b(Y.trim())}#${Q.trim()}`})}static processJoinField($){if(Q0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")return $;return`${g.processJoinField(J.trim())} AS ${Y.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return b($);if(Z.some((Q)=>Q.trim()===""))return $;let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return b($);return`${Y.trim()}.${b(J)}`}return b($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(Q0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),J=$.substring(0,Z),Y=$.substring(Z);if(J.includes(".")){let Q=J.split(".");if(Q.length<2)return`${b(J)}${Y}`;if(Q.some((U)=>U.trim()===""))return`${b(J)}${Y}`;let X=Q[Q.length-1],G=Q.slice(0,Q.length-1).join(".");if(typeof X!=="string"||typeof G!=="string")return`${b(J)}${Y}`;return`${G.trim()}.${b(X)}${Y}`}return`${b(J)}${Y}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return b($);if(Z.some((Q)=>Q.trim()===""))return b($);let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return b($);return`${Y.trim()}.${b(J)}`}return b($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>g.processJoinWhere(J));let Z={};for(let[J,Y]of Object.entries($)){let Q=g.processJoinWhereKey(J);if(J==="$or"||J==="$and")Z[Q]=Array.isArray(Y)?Y.map((X)=>g.processJoinWhere(X)):[];else if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=g.processJoinWhere(Y);else Z[Q]=Y}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${g.processJoinField(Y.trim())}#${Q.trim()}`})}static addDefaultStateFilter($={},Z,J=!1){if(Object.keys($).some((X)=>X.startsWith("state")||X.includes(".state")))return $;if(J&&Z){let X={};for(let[G,U]of Object.entries($))X[G]=U;return X[`${Z}.state$gt`]=0,X}let Q={};for(let[X,G]of Object.entries($))Q[X]=G;return Q.state$gt=0,Q}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>g.whereKeysToSnake(J));let Z={};for(let[J,Y]of Object.entries($)){if(J==="$or"||J==="$and"){Z[J]=Array.isArray(Y)?Y.map((X)=>g.whereKeysToSnake(X)):[];continue}if(Q0.assertNoExprField(J),J.includes("$")){let X=J.lastIndexOf("$"),G=J.substring(0,X),U=J.substring(X),V=b(G)+U;Z[V]=Y;continue}let Q=b(J);if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=g.whereKeysToSnake(Y);else Z[Q]=Y}return Z}static serializeArrayFields($){let Z={};for(let[J,Y]of Object.entries($)){if(Y===null||Y===void 0){Z[J]=Y;continue}if(Array.isArray(Y)){Z[J]=JSON.stringify(Y);continue}Z[J]=Y}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[J,Y]of Object.entries($))Z[J]=Y;for(let[J,Y]of Object.entries(Z)){if(typeof Y!=="string")continue;if(Y.startsWith("[")&&Y.endsWith("]"))try{let Q=JSON.parse(Y);if(Array.isArray(Q))Z[J]=Q}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let J=E$($,{excludeValues:Z}),Y=iY(J);return g.serializeArrayFields(Y)}static stripSystemFieldsForWrite($,Z){let J={};for(let[Y,Q]of Object.entries($)){if(Y==="id")continue;if(Y==="created_at")continue;if(Y==="updated_at")continue;if(Y==="deleted_at")continue;if(!Z.allowState&&Y==="state")continue;J[Y]=Q}return J}static buildInsertRow($){let Z=g.cleanAndSnakeAndSerializeWriteData($.data),J=g.stripSystemFieldsForWrite(Z,{allowState:!1}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;if($.idMode==="timeId"){if(!Number.isFinite($.id)||$.id<=0)throw Error(`buildInsertRow(timeId) \u5931\u8D25\uFF1Aid \u5FC5\u987B\u4E3A > 0 \u7684\u6709\u9650 number (id: ${String($.id)})`);Y.id=$.id}return Y.created_at=$.now,Y.updated_at=$.now,Y.state=1,Y}static buildUpdateRow($){let Z=g.cleanAndSnakeAndSerializeWriteData($.data),J=g.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;return Y.updated_at=$.now,Y}static buildPartialUpdateData($){let Z=g.cleanAndSnakeAndSerializeWriteData($.data);return g.stripSystemFieldsForWrite(Z,{allowState:$.allowState})}}$0();var p={QUOTE_IDENT_NEED_STRING:($)=>`quoteIdent \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`,IDENT_EMPTY:"SQL \u6807\u8BC6\u7B26\u4E0D\u80FD\u4E3A\u7A7A",FIELD_EXPR_NOT_ALLOWED:($)=>`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FIELD_INVALID:($)=>`\u5B57\u6BB5\u683C\u5F0F\u975E\u6CD5\uFF0C\u8BF7\u4F7F\u7528\u7B80\u5355\u5B57\u6BB5\u540D\u6216\u5B89\u5168\u5F15\u7528\uFF0C\u590D\u6742\u8868\u8FBE\u5F0F\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FROM_EMPTY:"FROM \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A",FROM_NEED_NON_EMPTY:($)=>`FROM \u8868\u540D\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32 (table: ${String($)})`,FROM_REQUIRED:"FROM \u8868\u540D\u662F\u5FC5\u9700\u7684",COUNT_NEED_FROM:"COUNT \u9700\u8981 FROM \u8868\u540D",TABLE_REF_TOO_MANY_PARTS:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw \u663E\u5F0F\u4F20\u5165\u590D\u6742\u8868\u8FBE\u5F0F (table: ${$})`,TABLE_REF_SCHEMA_TOO_DEEP:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw (table: ${$})`,SCHEMA_QUOTE_NOT_PAIRED:($)=>`schema \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (schema: ${$})`,TABLE_QUOTE_NOT_PAIRED:($)=>`table \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (table: ${$})`,SELECT_FIELDS_INVALID:"SELECT \u5B57\u6BB5\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6216\u6570\u7EC4",SELECT_RAW_NEED_NON_EMPTY:($)=>`selectRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (expr: ${String($)})`,FROM_RAW_NEED_NON_EMPTY:($)=>`fromRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (tableExpr: ${String($)})`,WHERE_RAW_NEED_NON_EMPTY:($)=>`whereRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (sql: ${String($)})`,WHERE_VALUE_REQUIRED:"where(field, value) \u4E0D\u5141\u8BB8\u7701\u7565 value\u3002\u82E5\u9700\u4F20\u5165\u539F\u59CB WHERE\uFF0C\u8BF7\u4F7F\u7528 whereRaw",JOIN_NEED_STRING:($,Z)=>`JOIN \u8868\u540D\u548C\u6761\u4EF6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (table: ${String($)}, on: ${String(Z)})`,ORDER_BY_NEED_ARRAY:'orderBy \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\uFF0C\u683C\u5F0F\u4E3A "\u5B57\u6BB5#\u65B9\u5411"',ORDER_BY_ITEM_NEED_HASH:($)=>`orderBy \u5B57\u6BB5\u5FC5\u987B\u662F "\u5B57\u6BB5#\u65B9\u5411" \u683C\u5F0F\u7684\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982\uFF1A"name#ASC", "id#DESC"\uFF09 (item: ${String($)})`,ORDER_BY_FIELD_EMPTY:($)=>`orderBy \u4E2D\u5B57\u6BB5\u540D\u4E0D\u80FD\u4E3A\u7A7A (item: ${$})`,ORDER_BY_DIR_INVALID:($)=>`ORDER BY \u65B9\u5411\u5FC5\u987B\u662F ASC \u6216 DESC (direction: ${$})`,LIMIT_MUST_NON_NEGATIVE:($)=>`LIMIT \u6570\u91CF\u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,OFFSET_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (offset: ${String($)})`,OFFSET_COUNT_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,INSERT_NEED_TABLE:($)=>`INSERT \u9700\u8981\u8868\u540D (table: ${String($)})`,INSERT_NEED_DATA:($,Z)=>`INSERT \u9700\u8981\u6570\u636E (table: ${String($)}, data: ${JSON.stringify(Z)})`,INSERT_NEED_AT_LEAST_ONE_FIELD:($)=>`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${$})`,UPDATE_NEED_TABLE:"UPDATE \u9700\u8981\u8868\u540D",UPDATE_NEED_OBJECT:"UPDATE \u9700\u8981\u6570\u636E\u5BF9\u8C61",UPDATE_NEED_AT_LEAST_ONE_FIELD:"\u66F4\u65B0\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5",UPDATE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CUPDATE \u9700\u8981 WHERE \u6761\u4EF6",DELETE_NEED_TABLE:"DELETE \u9700\u8981\u8868\u540D",DELETE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CDELETE \u9700\u8981 WHERE \u6761\u4EF6",TO_DELETE_IN_NEED_TABLE:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_DELETE_IN_NEED_ID_FIELD:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_DELETE_IN_NEED_IDS:"toDeleteInSql \u9700\u8981 ids \u6570\u7EC4",TO_UPDATE_CASE_NEED_TABLE:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_UPDATE_CASE_NEED_ID_FIELD:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_UPDATE_CASE_NEED_ROWS:"toUpdateCaseByIdSql \u9700\u8981 rows \u6570\u7EC4",TO_UPDATE_CASE_NEED_FIELDS:"toUpdateCaseByIdSql \u9700\u8981 fields \u6570\u7EC4"};class m${_select=[];_from="";_where=[];_joins=[];_orderBy=[];_groupBy=[];_having=[];_limit=null;_offset=null;_params=[];_quoteIdent;constructor($){if($&&$.quoteIdent)this._quoteIdent=$.quoteIdent;else this._quoteIdent=(Z)=>{if(typeof Z!=="string")throw Error(p.QUOTE_IDENT_NEED_STRING(Z));let J=Z.trim();if(!J)throw Error(p.IDENT_EMPTY);return`\`${J.replace(/`/g,"``")}\``}}_isQuotedIdent($){return Q0.isQuotedIdentPaired($)}_startsWithQuote($){return Q0.startsWithQuote($)}reset(){return this._select=[],this._from="",this._where=[],this._joins=[],this._orderBy=[],this._groupBy=[],this._having=[],this._limit=null,this._offset=null,this._params=[],this}_escapeField($){if(typeof $!=="string")return $;if($=$.trim(),Q0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{Q0.assertNoExprField($)}catch{throw Error(p.FIELD_EXPR_NOT_ALLOWED($))}if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i);if(Z.length!==2)throw Error(p.FIELD_INVALID($));let J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")throw Error(p.FIELD_INVALID($));let Q=J.trim(),X=Y.trim();return Q0.assertSafeAlias(X),`${this._escapeField(Q)} AS ${X}`}if($.includes("."))return $.split(".").map((J)=>{if(J=J.trim(),J==="*"||this._isQuotedIdent(J))return J;return Q0.assertPairedQuotedIdentIfStartsWithQuote(J,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(J)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){Q0.assertSafeIdentifierPart($,Z)}_escapeTable($){if(typeof $!=="string")return $;if($=$.trim(),this._startsWithQuote($)&&!this._isQuotedIdent($));if(this._isQuotedIdent($))return $;let Z=$.split(/\s+/).filter((V)=>V.length>0);if(Z.length===0)throw Error(p.FROM_EMPTY);if(Z.length>2)throw Error(p.TABLE_REF_TOO_MANY_PARTS($));let J=Z[0];if(typeof J!=="string"||J.trim()==="")throw Error(p.FROM_EMPTY);let Y=J.trim(),Q=Z.length===2?Z[1]:null,X=typeof Q==="string"?Q.trim():null,G=Y.split(".");if(G.length>2)throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let U="";if(G.length===2){let V=G[0],M=G[1];if(typeof V!=="string"||typeof M!=="string")throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let z=V.trim(),_=M.trim(),L=this._isQuotedIdent(z)?z:(()=>{if(this._startsWithQuote(z)&&!this._isQuotedIdent(z))throw Error(p.SCHEMA_QUOTE_NOT_PAIRED(z));return this._validateIdentifierPart(z,"schema"),this._quoteIdent(z)})(),C=this._isQuotedIdent(_)?_:(()=>{if(this._startsWithQuote(_)&&!this._isQuotedIdent(_))throw Error(p.TABLE_QUOTE_NOT_PAIRED(_));return this._validateIdentifierPart(_,"table"),this._quoteIdent(_)})();U=`${L}.${C}`}else{let V=G[0];if(typeof V!=="string")throw Error(p.FROM_EMPTY);let M=V.trim();if(this._isQuotedIdent(M))U=M;else{if(this._startsWithQuote(M)&&!this._isQuotedIdent(M))throw Error(p.TABLE_QUOTE_NOT_PAIRED(M));this._validateIdentifierPart(M,"table"),U=this._quoteIdent(M)}}if(X)return this._validateIdentifierPart(X,"alias"),`${U} ${X}`;return U}_validateParam($){Q0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,J){let Y=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(J),this._where.push(`${Y} != ?`),this._params.push(J);break;case"$in":if(!Array.isArray(J))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$in \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u6C38\u8FDC\u4E0D\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let Q=J.map(()=>"?").join(",");this._where.push(`${Y} IN (${Q})`),this._params.push(...J);break;case"$nin":case"$notIn":if(!Array.isArray(J))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u5339\u914D\u6240\u6709\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let X=J.map(()=>"?").join(",");this._where.push(`${Y} NOT IN (${X})`),this._params.push(...J);break;case"$like":this._validateParam(J),this._where.push(`${Y} LIKE ?`),this._params.push(J);break;case"$notLike":this._validateParam(J),this._where.push(`${Y} NOT LIKE ?`),this._params.push(J);break;case"$gt":this._validateParam(J),this._where.push(`${Y} > ?`),this._params.push(J);break;case"$gte":this._validateParam(J),this._where.push(`${Y} >= ?`),this._params.push(J);break;case"$lt":this._validateParam(J),this._where.push(`${Y} < ?`),this._params.push(J);break;case"$lte":this._validateParam(J),this._where.push(`${Y} <= ?`),this._params.push(J);break;case"$between":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$notBetween":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} NOT BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$null":if(J===!0)this._where.push(`${Y} IS NULL`);break;case"$notNull":if(J===!0)this._where.push(`${Y} IS NOT NULL`);break;default:this._validateParam(J),this._where.push(`${Y} = ?`),this._params.push(J)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,J])=>{if(J===void 0)return;if(Z==="$and"){if(Array.isArray(J))J.forEach((Y)=>{if(Y&&typeof Y==="object"&&!Array.isArray(Y))this._processWhereConditions(Y)})}else if(Z==="$or"){if(Array.isArray(J)){let Y=[],Q=[];if(J.forEach((X)=>{if(!X||typeof X!=="object"||Array.isArray(X))return;let G=new m$({quoteIdent:this._quoteIdent});if(G._processWhereConditions(X),G._where.length>0)Y.push(`(${G._where.join(" AND ")})`),Q.push(...G._params)}),Y.length>0)this._where.push(`(${Y.join(" OR ")})`),this._params.push(...Q)}}else if(Z.includes("$")){let Y=Z.lastIndexOf("$"),Q=Z.substring(0,Y),X="$"+Z.substring(Y+1);this._applyOperator(Q,X,J)}else if(typeof J==="object"&&J!==null&&!Array.isArray(J))for(let[Y,Q]of Object.entries(J))this._applyOperator(Z,Y,Q);else{this._validateParam(J);let Y=this._escapeField(Z);this._where.push(`${Y} = ?`),this._params.push(J)}})}getWhereConditions(){return{sql:this._where.length>0?this._where.join(" AND "):"",params:[...this._params]}}select($="*"){if(Array.isArray($))this._select=[...this._select,...$.map((Z)=>this._escapeField(Z))];else if(typeof $==="string")this._select.push(this._escapeField($));else throw Error(p.SELECT_FIELDS_INVALID);return this}selectRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.SELECT_RAW_NEED_NON_EMPTY($));return this._select.push($),this}from($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_NEED_NON_EMPTY($));return this._from=this._escapeTable($.trim()),this}fromRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_RAW_NEED_NON_EMPTY($));return this._from=$,this}where($,Z){if(typeof $==="object"&&$!==null)return this._processWhereConditions($),this;if(typeof $==="string"){if(Z===void 0)throw Error(p.WHERE_VALUE_REQUIRED);this._validateParam(Z);let J=this._escapeField($);return this._where.push(`${J} = ?`),this._params.push(Z),this}return this}whereRaw($,Z){if(typeof $!=="string"||!$.trim())throw Error(p.WHERE_RAW_NEED_NON_EMPTY($));if(this._where.push($),Z&&Z.length>0)this._params.push(...Z);return this}leftJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`LEFT JOIN ${J} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${J} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`INNER JOIN ${J} ON ${Z}`),this}orderBy($){if(!Array.isArray($))throw Error(p.ORDER_BY_NEED_ARRAY);return $.forEach((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let J=Z.split("#");if(J.length!==2)throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let X=Y.trim(),G=Q.trim().toUpperCase();if(!X)throw Error(p.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(G))throw Error(p.ORDER_BY_DIR_INVALID(G));let U=this._escapeField(X);this._orderBy.push(`${U} ${G}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((J)=>typeof J==="string").map((J)=>this._escapeField(J));this._groupBy=[...this._groupBy,...Z]}else if(typeof $==="string")this._groupBy.push(this._escapeField($));return this}having($){if(typeof $==="string")this._having.push($);return this}limit($,Z){if(typeof $!=="number"||$<0)throw Error(p.LIMIT_MUST_NON_NEGATIVE($));if(this._limit=Math.floor($),Z!==void 0&&Z!==null){if(typeof Z!=="number"||Z<0)throw Error(p.OFFSET_MUST_NON_NEGATIVE(Z));this._offset=Math.floor(Z)}return this}offset($){if(typeof $!=="number"||$<0)throw Error(p.OFFSET_COUNT_MUST_NON_NEGATIVE($));return this._offset=Math.floor($),this}toSelectSql(){let $="SELECT ";if($+=this._select.length>0?this._select.join(", "):"*",!this._from)throw Error(p.FROM_REQUIRED);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");if(this._groupBy.length>0)$+=" GROUP BY "+this._groupBy.join(", ");if(this._having.length>0)$+=" HAVING "+this._having.join(" AND ");if(this._orderBy.length>0)$+=" ORDER BY "+this._orderBy.join(", ");if(this._limit!==null){if($+=` LIMIT ${this._limit}`,this._offset!==null)$+=` OFFSET ${this._offset}`}return{sql:$,params:[...this._params]}}toInsertSql($,Z){if(!$||typeof $!=="string")throw Error(p.INSERT_NEED_TABLE($));if(!Z||typeof Z!=="object")throw Error(p.INSERT_NEED_DATA($,Z));let J=this._escapeTable($);if(Array.isArray(Z)){let Y=Q0.assertBatchInsertRowsConsistent(Z,{table:$}),Q=Y.map((M)=>this._escapeField(M)),X=Y.map(()=>"?").join(", "),G=Z.map(()=>`(${X})`).join(", "),U=`INSERT INTO ${J} (${Q.join(", ")}) VALUES ${G}`,V=[];for(let M=0;M<Z.length;M++){let z=Z[M];for(let _ of Y){let L=z[_];this._validateParam(L),V.push(L)}}return{sql:U,params:V}}else{let Y=Object.keys(Z);if(Y.length===0)throw Error(p.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of Y){let M=Z;this._validateParam(M[V])}let Q=Y.map((V)=>this._escapeField(V)),X=Y.map(()=>"?").join(", "),G=`INSERT INTO ${J} (${Q.join(", ")}) VALUES (${X})`,U=[];for(let V of Y){let M=Z[V];this._validateParam(M),U.push(M)}return{sql:G,params:U}}}toUpdateSql($,Z){if(!$||typeof $!=="string")throw Error(p.UPDATE_NEED_TABLE);if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(p.UPDATE_NEED_OBJECT);let J=Object.keys(Z);if(J.length===0)throw Error(p.UPDATE_NEED_AT_LEAST_ONE_FIELD);let Y=this._escapeTable($),Q=J.map((U)=>`${this._escapeField(U)} = ?`),X=[...Object.values(Z),...this._params],G=`UPDATE ${Y} SET ${Q.join(", ")}`;if(this._where.length>0)G+=" WHERE "+this._where.join(" AND ");else throw Error(p.UPDATE_NEED_WHERE);return{sql:G,params:X}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(p.DELETE_NEED_TABLE);let J=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(p.DELETE_NEED_WHERE);return{sql:J,params:[...this._params]}}toCountSql(){let $="SELECT COUNT(*) as total";if(!this._from)throw Error(p.COUNT_NEED_FROM);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");return{sql:$,params:[...this._params]}}static toDeleteInSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_DELETE_IN_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_DELETE_IN_NEED_ID_FIELD($.idField));if(!Array.isArray($.ids))throw Error(p.TO_DELETE_IN_NEED_IDS);if($.ids.length===0)return{sql:"",params:[]};let Z=$.ids.map(()=>"?").join(",");return{sql:`DELETE FROM ${$.quoteIdent($.table)} WHERE ${$.quoteIdent($.idField)} IN (${Z})`,params:[...$.ids]}}static toUpdateCaseByIdSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_UPDATE_CASE_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_UPDATE_CASE_NEED_ID_FIELD($.idField));if(!Array.isArray($.rows))throw Error(p.TO_UPDATE_CASE_NEED_ROWS);if($.rows.length===0)return{sql:"",params:[]};if(!Array.isArray($.fields))throw Error(p.TO_UPDATE_CASE_NEED_FIELDS);if($.fields.length===0)return{sql:"",params:[]};let Z=$.rows.map((U)=>U.id),J=Z.map(()=>"?").join(","),Y=[],Q=[],X=$.quoteIdent($.idField);for(let U of $.fields){let V=[];for(let z of $.rows){if(!(U in z.data))continue;V.push("WHEN ? THEN ?"),Q.push(z.id);let _=z.data[U];Q0.assertNoUndefinedParam(_,"SQL \u53C2\u6570\u503C"),Q.push(_)}if(V.length===0)continue;let M=$.quoteIdent(U);Y.push(`${M} = CASE ${X} ${V.join(" ")} ELSE ${M} END`)}Y.push(`${$.quoteIdent($.updatedAtField)} = ?`),Q.push($.updatedAtValue);for(let U of Z)Q.push(U);let G=`UPDATE ${$.quoteIdent($.table)} SET ${Y.join(", ")} WHERE ${X} IN (${J})`;if($.stateGtZero&&$.stateField)G+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:G,params:Q}}}function d$($){if(typeof $!=="string")throw Error(`quoteIdentifier \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`);let Z=$.trim();if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684 SQL \u6807\u8BC6\u7B26: ${Z}`);return`\`${Z}\``}function EW($){return typeof $.begin==="function"}class FX extends Error{originalError;params;duration;sqlInfo;constructor($,Z){super($);this.originalError=Z.originalError,this.params=Z.params,this.duration=Z.duration,this.sqlInfo=Z.sqlInfo}}class yZ{redis;dbName;sql=null;isTransaction=!1;idMode;constructor($){if(this.redis=$.redis,typeof $.dbName!=="string"||$.dbName.trim()==="")throw Error("DbHelper \u521D\u59CB\u5316\u5931\u8D25\uFF1AdbName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32");this.dbName=$.dbName,this.sql=$.sql||null,this.isTransaction=Boolean($.sql),this.idMode=$.idMode==="autoId"?"autoId":"timeId"}createSqlBuilder(){return new m$({quoteIdent:d$})}async getTableColumns($){let Z=d$($),Y=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!Y||Y.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let Q=[];for(let X of Y){let G=X.Field;if(typeof G==="string"&&G.length>0)Q.push(G)}return Q}async prepareQueryOptions($){let Z=E$($.where||{},{excludeValues:[null,void 0]});if($.joins&&$.joins.length>0){let Q=($.fields||[]).map((U)=>g.processJoinField(U)),X=g.normalizeTableRef($.table),G=g.getJoinMainQualifier($.table);return{table:X,tableQualifier:G,fields:Q.length>0?Q:["*"],where:g.processJoinWhere(Z),joins:$.joins,orderBy:g.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let Y=await g.fieldsToSnake(b($.table),$.fields||[],this.getTableColumns.bind(this));return{table:b($.table),tableQualifier:b($.table),fields:Y,where:g.whereKeysToSnake(Z),joins:void 0,orderBy:g.orderByToSnake($.orderBy||[]),page:$.page||1,limit:$.limit||10}}applyJoins($,Z){if(!Z||Z.length===0)return;for(let J of Z){let Y=g.normalizeTableRef(J.table);switch(J.type||"left"){case"inner":$.innerJoin(Y,J.on);break;case"right":$.rightJoin(Y,J.on);break;case"left":default:$.leftJoin(Y,J.on);break}}}async executeSelect($,Z){return await this.executeWithConn($,Z)}async executeRun($,Z){return await this.executeWithConn($,Z)}async executeWithConn($,Z){if(!this.sql)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(typeof $!=="string")throw Error(`executeWithConn \u53EA\u63A5\u53D7\u5B57\u7B26\u4E32\u7C7B\u578B\u7684 SQL\uFF0C\u6536\u5230\u7C7B\u578B: ${typeof $}\uFF0C\u503C: ${JSON.stringify($)}`);let J=Date.now(),Y=lQ(Z);try{let Q;if(Y.length>0)Q=await this.sql.unsafe($,Y);else Q=await this.sql.unsafe($);let X=Date.now()-J;return{data:Q,sql:{sql:$,params:Y,duration:X}}}catch(Q){let X=Date.now()-J,G=Q instanceof Error?Q.message:String(Q);throw new FX(`SQL\u6267\u884C\u5931\u8D25: ${G}`,{originalError:Q,params:Y,duration:X,sqlInfo:{sql:$,params:Y,duration:X}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=b($),J=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(J.data?.[0]?.count||0)>0,sql:J.sql}}async getCount($){let{table:Z,where:J,joins:Y,tableQualifier:Q}=await this.prepareQueryOptions($),X=Array.isArray(Y)&&Y.length>0,G=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(g.addDefaultStateFilter(J,Q,X));this.applyJoins(G,Y);let{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V);return{data:M.data?.[0]?.count||0,sql:M.sql}}async getOne($){let{table:Z,fields:J,where:Y,joins:Q,tableQualifier:X}=await this.prepareQueryOptions($),G=Array.isArray(Q)&&Q.length>0,U=this.createSqlBuilder().select(J).from(Z).where(g.addDefaultStateFilter(Y,X,G));this.applyJoins(U,Q);let{sql:V,params:M}=U.toSelectSql(),z=await this.executeSelect(V,M),L=z.data?.[0]||null;if(!L)return{data:{},sql:z.sql};let C=LJ(L),E=g.deserializeArrayFields(C);if(!E)return{data:{},sql:z.sql};return{data:fZ([E])[0]??E,sql:z.sql}}async getDetail($){return await this.getOne($)}async getList($){let Z=await this.prepareQueryOptions($);if(Z.page<1||Z.page>1e4)throw Error(`\u9875\u7801\u5FC5\u987B\u5728 1 \u5230 10000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);if(Z.limit<1||Z.limit>1000)throw Error(`\u6BCF\u9875\u6570\u91CF\u5FC5\u987B\u5728 1 \u5230 1000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);let J=g.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),Y=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(J);this.applyJoins(Y,Z.joins);let{sql:Q,params:X}=Y.toSelectSql(),G=await this.executeSelect(Q,X),U=G.data?.[0]?.total||0;if(U===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:G.sql}};let V=(Z.page-1)*Z.limit,M=this.createSqlBuilder().select(Z.fields).from(Z.table).where(J).limit(Z.limit).offset(V);if(this.applyJoins(M,Z.joins),Z.orderBy&&Z.orderBy.length>0)M.orderBy(Z.orderBy);let{sql:z,params:_}=M.toSelectSql(),L=await this.executeSelect(z,_),C=L.data||[],S=BJ(C).map((D)=>g.deserializeArrayFields(D)).filter((D)=>D!==null);return{data:{lists:fZ(S),total:U,page:Z.page,limit:Z.limit,pages:Math.ceil(U/Z.limit)},sql:{count:G.sql,data:L.sql}}}async getAll($){let Y={table:$.table,page:1,limit:10};if($.fields!==void 0)Y.fields=$.fields;if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;let Q=await this.prepareQueryOptions(Y),X=g.addDefaultStateFilter(Q.where,Q.tableQualifier,Array.isArray(Q.joins)&&Q.joins.length>0),G=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Q.table).where(X);this.applyJoins(G,Q.joins);let{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V),z=M.data?.[0]?.total||0;if(z===0)return{data:{lists:[],total:0},sql:{count:M.sql}};let _=this.createSqlBuilder().select(Q.fields).from(Q.table).where(X).limit(1e4);if(this.applyJoins(_,Q.joins),Q.orderBy&&Q.orderBy.length>0)_.orderBy(Q.orderBy);let{sql:L,params:C}=_.toSelectSql(),E=await this.executeSelect(L,C),S=E.data||[];if(S.length>=1000)I.warn({table:$.table,count:S.length,total:z,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(S.length>=1e4)I.warn({table:$.table,limit:1e4,total:z,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${z}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let N=BJ(S).map((k)=>g.deserializeArrayFields(k)).filter((k)=>k!==null);return{data:{lists:fZ(N),total:z},sql:{count:M.sql,data:E.sql}}}async insData($){let{table:Z,data:J}=$,Y=b(Z),Q=Date.now(),X;if(this.idMode==="autoId")X=g.buildInsertRow({idMode:"autoId",data:J,now:Q});else{let E;try{E=await this.redis.genTimeID()}catch(S){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:S})}X=g.buildInsertRow({idMode:"timeId",data:J,id:E,now:Q})}Q0.assertNoUndefinedInRecord(X,`insData \u63D2\u5165\u6570\u636E (table: ${Y})`);let G=this.createSqlBuilder(),{sql:U,params:V}=G.toInsertSql(Y,X),M=await this.executeRun(U,V),z=X.id,_=typeof z==="number"?z:0,L=C$(M.data?.lastInsertRowid),C=this.idMode==="autoId"?L||0:_||L||0;if(this.idMode==="autoId"&&C<=0)throw Error(`\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${Z})`);return{data:C,sql:M.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let J=1000;if(Z.length>J)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${J}`);let Y=b($),Q=Date.now(),X=[],G;if(this.idMode==="autoId")G=Z.map((_)=>{return g.buildInsertRow({idMode:"autoId",data:_,now:Q})});else{let _=[];for(let L=0;L<Z.length;L++)_.push(await this.redis.genTimeID());X=_,G=Z.map((L,C)=>{let E=_[C];if(typeof E!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${C}] \u4E0D\u662F number (table: ${Y})`);return g.buildInsertRow({idMode:"timeId",data:L,id:E,now:Q})})}let U=Q0.assertBatchInsertRowsConsistent(G,{table:Y}),V=this.createSqlBuilder(),{sql:M,params:z}=V.toInsertSql(Y,G);try{let _=await this.executeRun(M,z);if(this.idMode==="autoId"){let L=C$(_.data?.lastInsertRowid);if(L<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let C=[];for(let E=0;E<Z.length;E++)C.push(L+E);return{data:C,sql:_.sql}}return{data:X,sql:_.sql}}catch(_){throw I.error({err:_,table:$,snakeTable:Y,count:Z.length,fields:U,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new c({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:_,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:Y,count:Z.length,fields:U}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=b($),Y=m$.toDeleteInSql({table:J,idField:"id",ids:Z,quoteIdent:d$}),Q=await this.executeRun(Y.sql,Y.params);return{data:C$(Q.data?.changes),sql:Q.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=b($),Y=Date.now(),Q=[],X=new Set;for(let z of Z){let _=g.buildPartialUpdateData({data:z.data,allowState:!0});for(let L of Object.keys(_))X.add(L);Q.push({id:z.id,data:_})}let G=Array.from(X).sort();if(G.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let U=m$.toUpdateCaseByIdSql({table:J,idField:"id",rows:Q,fields:G,quoteIdent:d$,updatedAtField:"updated_at",updatedAtValue:Y,stateField:"state",stateGtZero:!0}),V=await this.executeRun(U.sql,U.params);return{data:C$(V.data?.changes),sql:V.sql}}async updData($){let{table:Z,data:J,where:Y}=$,Q=E$(Y,{excludeValues:[null,void 0]}),X=b(Z),G=g.whereKeysToSnake(Q),U=g.buildUpdateRow({data:J,now:Date.now(),allowState:!0}),V=g.addDefaultStateFilter(G,X,!1),M=this.createSqlBuilder().where(V),{sql:z,params:_}=M.toUpdateSql(X,U),L=await this.executeRun(z,_);return{data:C$(L.data?.changes),sql:L.sql}}async delData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:J})}async delForce($){let{table:Z,where:J}=$,Y=b(Z),Q=E$(J,{excludeValues:[null,void 0]}),X=g.whereKeysToSnake(Q),G=this.createSqlBuilder().where(X),{sql:U,params:V}=G.toDeleteSql(Y),M=await this.executeRun(U,V);return{data:C$(M.data?.changes),sql:M.sql}}async disableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:2},where:J})}async enableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:1},where:J})}async trans($){if(this.isTransaction)return await $(this);let Z=this.sql;if(!Z)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(!EW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(J)=>{let Y=new yZ({redis:this.redis,dbName:this.dbName,sql:J,idMode:this.idMode});return await $(Y)})}async query($,Z){return await this.executeWithConn($,Z)}async exists($){if(Array.isArray($.joins)&&$.joins.length>0)throw Error("exists \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528\u663E\u5F0F query \u6216\u62C6\u5206\u67E5\u8BE2\uFF09");let Z=typeof $.table==="string"?$.table.trim():"";if(!Z)throw Error("exists.table \u4E0D\u80FD\u4E3A\u7A7A");if(Z.includes(" "))throw Error(`exists \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${Z}\uFF09`);if(Z.includes("."))throw Error(`exists \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${Z}\uFF09`);let J=b(Z),Y=E$($.where||{},{excludeValues:[null,void 0]}),Q=g.whereKeysToSnake(Y),X=g.addDefaultStateFilter(Q,J,!1),G=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(J).where(X).limit(1),{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V);return{data:(M.data?.[0]?.cnt||0)>0,sql:M.sql}}async getFieldValue($){let Z=$.field;if(Array.isArray($.joins)&&$.joins.length>0)throw Error("getFieldValue \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528 getOne/getList \u5E76\u81EA\u884C\u53D6\u5B57\u6BB5\uFF09");let J=typeof $.table==="string"?$.table.trim():"";if(!J)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(J.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${J}\uFF09`);if(J.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${J}\uFF09`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}\uFF0C\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF`);let Y={table:$.table};if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;if($.page!==void 0)Y.page=$.page;if($.limit!==void 0)Y.limit=$.limit;Y.fields=[Z];let Q=await this.getOne(Y),X=Q.data;if(!n(X))return{data:null,sql:Q.sql};if(Object.hasOwn(X,Z))return{data:X[Z],sql:Q.sql};let G=Z.replace(/_([a-z])/g,(V,M)=>M.toUpperCase());if(G!==Z&&Object.hasOwn(X,G))return{data:X[G],sql:Q.sql};let U=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(U!==Z&&Object.hasOwn(X,U))return{data:X[U],sql:Q.sql};return{data:null,sql:Q.sql}}async increment($,Z,J,Y=1){let Q=b($),X=b(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Q))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${Q}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(X))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof Y!=="number"||isNaN(Y))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${Y})`);let G=E$(J,{excludeValues:[null,void 0]}),U=g.whereKeysToSnake(G),V=g.addDefaultStateFilter(U,Q,!1),M=this.createSqlBuilder().where(V),{sql:z,params:_}=M.getWhereConditions(),L=d$(Q),C=d$(X),E=z?`UPDATE ${L} SET ${C} = ${C} + ? WHERE ${z}`:`UPDATE ${L} SET ${C} = ${C} + ?`,S=await this.executeRun(E,[Y,..._]);return{data:C$(S.data?.changes),sql:S.sql}}async decrement($,Z,J,Y=1){return await this.increment($,Z,J,-Y)}}$0();var wW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,J=String($.config?.db?.database||"");if(!J)throw new c({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new c({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let Y=M$.getSql(),X=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new yZ({redis:$.redis,dbName:J,sql:Y,idMode:X})}catch(Y){throw I.error({env:Z,err:Y,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new c({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"db",operation:"init"}})}}},KX=wW;var x$=q1(G1(),1);class TY{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let J=Z.secret||this.config.secret,Y=Z.algorithm||this.config.algorithm||"HS256",Q={key:J,algorithm:Y,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)Q.iss=Z.issuer;if(Z.audience!==void 0)Q.aud=Z.audience;if(Z.subject!==void 0)Q.sub=Z.subject;if(Z.jwtId!==void 0)Q.jti=Z.jwtId;if(typeof Z.notBefore==="number")Q.notBefore=Z.notBefore;return x$.createSigner(Q)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let J=Z.secret||this.config.secret,Y=this.config.algorithm||"HS256",Q=Z.algorithms?Z.algorithms:[Y],X={key:J,algorithms:Q,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)X.allowedIss=Z.issuer;if(Z.audience!==void 0)X.allowedAud=Z.audience;if(Z.subject!==void 0)X.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")X.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")X.ignoreNotBefore=Z.ignoreNotBefore;return x$.createVerifier(X)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let Q=x$.createDecoder({complete:!0})($);return{header:Q.header,payload:Q.payload,signature:Q.signature}}return x$.createDecoder()($)}}var l8={name:"jwt",enable:!0,deps:[],handler:($)=>{return new TY($.config?$.config.auth:void 0)}},H1=l8;$0();var r8={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)I.configure($.config.logger);return I}},W1=r8;$0();$0();class NY{client;prefix;slowThresholdMs=500;constructor($=""){let Z=M$.getRedis();if(!Z)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");this.client=Z,this.prefix=$?`${$}:`:""}logSlow($,Z,J,Y={}){if(J<=this.slowThresholdMs)return;I.warn({subsystem:"redis",event:"slow",duration:J,cmd:$,key:Z,extra:Y,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,J=null){try{let Y=JSON.stringify(Z),Q=`${this.prefix}${$}`,X=Date.now();if(J){let V=await this.client.setex(Q,J,Y),M=Date.now()-X;return this.logSlow("SETEX",Q,M,{ttl:J}),V}let G=await this.client.set(Q,Y),U=Date.now()-X;return this.logSlow("SET",Q,U),G}catch(Y){return I.error({err:Y,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y?JSON.parse(Y):null}catch(Z){return I.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,J=Date.now();await this.client.del(Z);let Y=Date.now()-J;this.logSlow("DEL",Z,Y)}catch(Z){I.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,J=Date.now(),Y=await this.client.incr(Z);if(Y===1)await this.client.expire(Z,1);let Q=Date.now()-J;this.logSlow("INCR",Z,Q,{expireSeconds:1});let X=100+($%900+Y-1)%900;return Number(`${$}${X}`)}async setString($,Z,J=null){try{let Y=`${this.prefix}${$}`,Q=Date.now();if(J){let U=await this.client.setex(Y,J,Z),V=Date.now()-Q;return this.logSlow("SETEX",Y,V,{ttl:J}),U}let X=await this.client.set(Y,Z),G=Date.now()-Q;return this.logSlow("SET",Y,G),X}catch(Y){return I.error({err:Y,msg:"Redis setString \u9519\u8BEF"}),null}}async getString($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.exists(Z),Q=Date.now()-J;return this.logSlow("EXISTS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.incr(Z),Q=Date.now()-J;return this.logSlow("INCR",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.incr(J);if(Q===1)await this.client.expire(J,Z);let X=Date.now()-Y;return this.logSlow("INCR",J,X,{expireSeconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.expire(J,Z),X=Date.now()-Y;return this.logSlow("EXPIRE",J,X,{seconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.ttl(Z),Q=Date.now()-J;return this.logSlow("TTL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.ttl(J)))}catch(Z){return I.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sadd(J,...Z),X=Date.now()-Y;return this.logSlow("SADD",J,X,{membersCount:Z.length}),Q}catch(J){return I.error({err:J,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sismember(J,Z),X=Date.now()-Y;return this.logSlow("SISMEMBER",J,X),Q}catch(J){return I.error({err:J,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.scard(Z),Q=Date.now()-J;return this.logSlow("SCARD",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.smembers(Z),Q=Date.now()-J;return this.logSlow("SMEMBERS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.sadd(J.key,J.members)))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis saddBatch \u9519\u8BEF"}),0}}async sismemberBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.sismember(Z.key,Z.member)))}catch(Z){return I.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.del(Z),Q=Date.now()-J;return this.logSlow("DEL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>{let Y=`${this.prefix}${J}`;return this.client.del(Y)}))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.setObject(J.key,J.value,J.ttl??null)))).filter((J)=>J!==null).length}catch(Z){return I.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.getObject(J)))}catch(Z){return I.error({err:Z,msg:"Redis getBatch \u9519\u8BEF"}),$.map(()=>null)}}async existsBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.exists(Z)))}catch(Z){return I.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.expire(J.key,J.seconds)))).filter((J)=>J>0).length}catch(Z){return I.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),J=Date.now()-$;return this.logSlow("PING","(no-key)",J),Z}catch($){throw I.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new c({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var i8={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,J=$.config?.redis?.prefix;try{return M$.getRedis(),new NY(J)}catch(Y){throw I.error({env:Z,err:Y,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new c({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"redis",operation:"init"}})}}},U1=i8;function t8($,Z={},J={}){return{code:0,msg:$,data:Z,...J}}function a8($,Z=null,J={}){return{code:1,msg:$,data:Z,...J}}function e8($,Z,J={}){let{status:Y=200,contentType:Q,headers:X={}}=J,G=Q,U;if(typeof Z==="string"){if(U=Z,!G)G=Z.trim().startsWith("<")?"application/xml":"text/plain"}else U=JSON.stringify(Z),G=G||"application/json";let V={...$.corsHeaders,"Content-Type":G,...X};return new Response(U,{status:Y,headers:V})}var $6={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:t8,No:a8,Raw:e8}}},V1=$6;u0();function O1($,Z){let J=n(Z)?Z:{},Y=typeof J.name==="string"?String(J.name):"",Q=n(Z)?Object.keys(Z):[],X=J.deps,G=Array.isArray(X)?X.filter((V)=>typeof V==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${Y}`,relativePath:Y,fileName:Y,moduleName:Y,addonName:"",fileBaseName:Y,fileDir:"(builtin)",name:Y,enable:J.enable,deps:G,handler:J.handler??null,customKeys:Q}}function _1(){let $=[],Z=[W1,U1,KX,MX,V1,AX,H1,zX];for(let J of Z)$.push(O1("plugin",J));return $}function M1(){let $=[],Z=[aQ,eQ,WX,_X,UX];for(let J of Z)$.push(O1("hook",J));return $}L$();PZ();u0();import{existsSync as Z6}from"fs";function J6($){let Z=$.split("/").filter(Boolean),J=Z.indexOf("@befly-addon");if(J<0)return null;let Y=Z[J+1];if(typeof Y!=="string"||Y.trim()==="")return null;return Y}async function z$($,Z,J,Y){if(!Z6($))return[];let Q=N$($),X=new Bun.Glob(Y),G=[];try{let U=await X.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let V of U){if(V.endsWith(".d.ts"))continue;let M=N$(V),z=HZ(M).name,_=yJ(Q,M),L=HZ(_),C=L.dir?o(L.dir,L.name):L.name;if(z.startsWith("_"))continue;if(C.split("/").some((k)=>k.startsWith("_")))continue;let E=await j$(M,{}),S=R$(z),D="",N="";if(Z==="core")D="",N=z;else if(Z==="app")N=`app_${S}`;else{let k=J6(M);if(!k)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${M}`);D=k,N=`addon_${R$(D)}_${S}`}let w={source:Z,type:J,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:M,relativePath:C,fileName:z,moduleName:N,addonName:D,fileBaseName:HZ(M).base,fileDir:$,customKeys:n(E)?Object.keys(E):[]};if(J==="table"){w.content=n(E)?E:{},G.push(w);continue}if(J==="api")w.auth=!0,w.rawBody=!1,w.method="POST",w.fields={},w.required=[];if(J==="plugin"||J==="hook")w.deps=[],w.name="",w.handler=null;if(rY(E,(k,h)=>{w[h]=k}),J==="api")w.routePrefix=Z==="app"?"/app":`/addon/${D}`,w.path=`/api${w.routePrefix}/${C}`;G.push(w)}}catch(U){let V=Error(`scanFiles failed: source=${Z} type=${J} dir=${Q} pattern=${Y}`);throw V.cause=U,V}return G}var A1=async()=>{let $=[],Z=[],J=[],Y=[],Q=await tQ();Y.push(...await z$(o(s0,"tables"),"app","table","*.json"));for(let X of Q)Y.push(...await z$(o(X.rootDir,"tables"),"addon","table","*.json"));Z.push(..._1()),Z.push(...await z$(o(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let X of Q)Z.push(...await z$(o(X.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));J.push(...M1()),J.push(...await z$(o(s0,"hooks"),"app","hook","*.{ts,js}"));for(let X of Q)J.push(...await z$(o(X.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await z$(o(s0,"apis"),"app","api","**/*.{ts,js}"));for(let X of Q)$.push(...await z$(o(X.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:J,plugins:Z,apis:$,tables:Y,addons:Q}};class Y6{apis=new Map;plugins=[];hooks=[];context={};config=null;assertStartContextReady(){let $=[];if(!this.context.redis)$.push("ctx.redis");if(!this.context.db)$.push("ctx.db");if(!this.context.cache)$.push("ctx.cache");if($.length>0)throw Error(`\u542F\u52A8\u5931\u8D25\uFF1A${$.join("\u3001")} \u672A\u521D\u59CB\u5316\u3002\u8BF7\u68C0\u67E5\u63D2\u4EF6\u52A0\u8F7D\u4E0E\u6CE8\u5165\u987A\u5E8F\u3002`)}async start($={}){try{let Z=Bun.nanoseconds();this.config=await _Q($.NODE_ENV||"development"),await AQ(this.config),this.context.config=this.config,this.context.env=$;let{apis:J,tables:Y,plugins:Q,hooks:X,addons:G}=await A1();this.context.addons=G,await MQ(J),await yQ(Y,this.config),await wQ(Q),await FQ(X);let U=await CQ(G);await M$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await bQ(Q,this.context),this.assertStartContextReady(),await new T(this.context).run(Y),await mQ(this.context,J),await oQ(this.context,U);let V=this.config.devEmail,M=this.config.devPassword;if(typeof V==="string"&&V.length>0&&typeof M==="string"&&M.length>0)await nQ(this.context,{devEmail:V,devPassword:M});else I.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await dQ(this.context),this.hooks=await hQ(X),this.apis=await gQ(J);let z=pQ(this.apis,this.hooks,this.context),_=uQ(this.config.cors),L=typeof this.config.appPort==="number"?this.config.appPort:3000,C=typeof this.config.appHost==="string"&&this.config.appHost.length>0?this.config.appHost:"0.0.0.0",E=Bun.serve({port:L,hostname:C,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(k,h)=>{let x=new URL(k.url);if(x.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(x.pathname.startsWith("/api/"))return z(k,h);return _(k)},error:(k)=>{if(I.error({err:k,msg:"\u670D\u52A1\u542F\u52A8\u65F6\u53D1\u751F\u9519\u8BEF"}),this.config.nodeEnv==="development")return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",error:k.message,stack:k.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),S=rQ(Z),D=iQ($),N=D.role==="primary"?"\u4E3B\u8FDB\u7A0B":`\u5DE5\u4F5C\u8FDB\u7A0B #${D.instanceId}`,w=D.env==="standalone"?"":` [${D.env}]`;return I.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${N}${w})`),I.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${S}`),I.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${E.url}`),E}catch(Z){let J=Z instanceof Error?Z.message:String(Z),Y="runtime",Q=!1,X=!1;if(QZ(Z))Y=Z.kind,Q=Z.logged===!0,X=Z.noLog===!0;else{let G=Z;if(G&&G.__syncTableLogged===!0)Q=!0;if(G&&G.__syncTableNoLog===!0)Y="policy";if(G&&G.__coreLogged===!0)Q=!0;if(G&&G.__coreNoLog===!0)X=!0}if(Q)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25\uFF08\u4E0B\u5C42\u5DF2\u8BB0\u5F55\uFF09",errorKind:Y,errorMessage:J});else if(X)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Y,errorMessage:J});else I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Y,errorMessage:J,err:Z});try{await I.flush()}catch{}try{await I.shutdown()}catch{}if(Z instanceof Error)throw Z;throw Error(String(Z))}}}export{Y6 as Befly};
|
|
19
|
+
3. \u5168\u90E8\u6392\u9664\u5B57\u6BB5 ["!password", "!token"]`)}static orderByToSnake($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${c(Y.trim())}#${Q.trim()}`})}static processJoinField($){if(Q0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")return $;return`${h.processJoinField(J.trim())} AS ${Y.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((Q)=>Q.trim()===""))return $;let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return c($);return`${Y.trim()}.${c(J)}`}return c($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(Q0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),J=$.substring(0,Z),Y=$.substring(Z);if(J.includes(".")){let Q=J.split(".");if(Q.length<2)return`${c(J)}${Y}`;if(Q.some((U)=>U.trim()===""))return`${c(J)}${Y}`;let X=Q[Q.length-1],G=Q.slice(0,Q.length-1).join(".");if(typeof X!=="string"||typeof G!=="string")return`${c(J)}${Y}`;return`${G.trim()}.${c(X)}${Y}`}return`${c(J)}${Y}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((Q)=>Q.trim()===""))return c($);let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return c($);return`${Y.trim()}.${c(J)}`}return c($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>h.processJoinWhere(J));let Z={};for(let[J,Y]of Object.entries($)){let Q=h.processJoinWhereKey(J);if(J==="$or"||J==="$and")Z[Q]=Array.isArray(Y)?Y.map((X)=>h.processJoinWhere(X)):[];else if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=h.processJoinWhere(Y);else Z[Q]=Y}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${h.processJoinField(Y.trim())}#${Q.trim()}`})}static addDefaultStateFilter($={},Z,J=!1){if(Object.keys($).some((X)=>X.startsWith("state")||X.includes(".state")))return $;if(J&&Z){let X={};for(let[G,U]of Object.entries($))X[G]=U;return X[`${Z}.state$gt`]=0,X}let Q={};for(let[X,G]of Object.entries($))Q[X]=G;return Q.state$gt=0,Q}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>h.whereKeysToSnake(J));let Z={};for(let[J,Y]of Object.entries($)){if(J==="$or"||J==="$and"){Z[J]=Array.isArray(Y)?Y.map((X)=>h.whereKeysToSnake(X)):[];continue}if(Q0.assertNoExprField(J),J.includes("$")){let X=J.lastIndexOf("$"),G=J.substring(0,X),U=J.substring(X),V=c(G)+U;Z[V]=Y;continue}let Q=c(J);if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=h.whereKeysToSnake(Y);else Z[Q]=Y}return Z}static serializeArrayFields($){let Z={};for(let[J,Y]of Object.entries($)){if(Y===null||Y===void 0){Z[J]=Y;continue}if(Array.isArray(Y)){Z[J]=JSON.stringify(Y);continue}Z[J]=Y}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[J,Y]of Object.entries($))Z[J]=Y;for(let[J,Y]of Object.entries(Z)){if(typeof Y!=="string")continue;if(Y.startsWith("[")&&Y.endsWith("]"))try{let Q=JSON.parse(Y);if(Array.isArray(Q))Z[J]=Q}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let J=E$($,{excludeValues:Z}),Y=iY(J);return h.serializeArrayFields(Y)}static stripSystemFieldsForWrite($,Z){let J={};for(let[Y,Q]of Object.entries($)){if(Y==="id")continue;if(Y==="created_at")continue;if(Y==="updated_at")continue;if(Y==="deleted_at")continue;if(!Z.allowState&&Y==="state")continue;J[Y]=Q}return J}static buildInsertRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),J=h.stripSystemFieldsForWrite(Z,{allowState:!1}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;if($.idMode==="timeId"){if(!Number.isFinite($.id)||$.id<=0)throw Error(`buildInsertRow(timeId) \u5931\u8D25\uFF1Aid \u5FC5\u987B\u4E3A > 0 \u7684\u6709\u9650 number (id: ${String($.id)})`);Y.id=$.id}return Y.created_at=$.now,Y.updated_at=$.now,Y.state=1,Y}static buildUpdateRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),J=h.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;return Y.updated_at=$.now,Y}static buildPartialUpdateData($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data);return h.stripSystemFieldsForWrite(Z,{allowState:$.allowState})}}$0();var p={QUOTE_IDENT_NEED_STRING:($)=>`quoteIdent \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`,IDENT_EMPTY:"SQL \u6807\u8BC6\u7B26\u4E0D\u80FD\u4E3A\u7A7A",FIELD_EXPR_NOT_ALLOWED:($)=>`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FIELD_INVALID:($)=>`\u5B57\u6BB5\u683C\u5F0F\u975E\u6CD5\uFF0C\u8BF7\u4F7F\u7528\u7B80\u5355\u5B57\u6BB5\u540D\u6216\u5B89\u5168\u5F15\u7528\uFF0C\u590D\u6742\u8868\u8FBE\u5F0F\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FROM_EMPTY:"FROM \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A",FROM_NEED_NON_EMPTY:($)=>`FROM \u8868\u540D\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32 (table: ${String($)})`,FROM_REQUIRED:"FROM \u8868\u540D\u662F\u5FC5\u9700\u7684",COUNT_NEED_FROM:"COUNT \u9700\u8981 FROM \u8868\u540D",TABLE_REF_TOO_MANY_PARTS:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw \u663E\u5F0F\u4F20\u5165\u590D\u6742\u8868\u8FBE\u5F0F (table: ${$})`,TABLE_REF_SCHEMA_TOO_DEEP:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw (table: ${$})`,SCHEMA_QUOTE_NOT_PAIRED:($)=>`schema \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (schema: ${$})`,TABLE_QUOTE_NOT_PAIRED:($)=>`table \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (table: ${$})`,SELECT_FIELDS_INVALID:"SELECT \u5B57\u6BB5\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6216\u6570\u7EC4",SELECT_RAW_NEED_NON_EMPTY:($)=>`selectRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (expr: ${String($)})`,FROM_RAW_NEED_NON_EMPTY:($)=>`fromRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (tableExpr: ${String($)})`,WHERE_RAW_NEED_NON_EMPTY:($)=>`whereRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (sql: ${String($)})`,WHERE_VALUE_REQUIRED:"where(field, value) \u4E0D\u5141\u8BB8\u7701\u7565 value\u3002\u82E5\u9700\u4F20\u5165\u539F\u59CB WHERE\uFF0C\u8BF7\u4F7F\u7528 whereRaw",JOIN_NEED_STRING:($,Z)=>`JOIN \u8868\u540D\u548C\u6761\u4EF6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (table: ${String($)}, on: ${String(Z)})`,ORDER_BY_NEED_ARRAY:'orderBy \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\uFF0C\u683C\u5F0F\u4E3A "\u5B57\u6BB5#\u65B9\u5411"',ORDER_BY_ITEM_NEED_HASH:($)=>`orderBy \u5B57\u6BB5\u5FC5\u987B\u662F "\u5B57\u6BB5#\u65B9\u5411" \u683C\u5F0F\u7684\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982\uFF1A"name#ASC", "id#DESC"\uFF09 (item: ${String($)})`,ORDER_BY_FIELD_EMPTY:($)=>`orderBy \u4E2D\u5B57\u6BB5\u540D\u4E0D\u80FD\u4E3A\u7A7A (item: ${$})`,ORDER_BY_DIR_INVALID:($)=>`ORDER BY \u65B9\u5411\u5FC5\u987B\u662F ASC \u6216 DESC (direction: ${$})`,LIMIT_MUST_NON_NEGATIVE:($)=>`LIMIT \u6570\u91CF\u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,OFFSET_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (offset: ${String($)})`,OFFSET_COUNT_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,INSERT_NEED_TABLE:($)=>`INSERT \u9700\u8981\u8868\u540D (table: ${String($)})`,INSERT_NEED_DATA:($,Z)=>`INSERT \u9700\u8981\u6570\u636E (table: ${String($)}, data: ${JSON.stringify(Z)})`,INSERT_NEED_AT_LEAST_ONE_FIELD:($)=>`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${$})`,UPDATE_NEED_TABLE:"UPDATE \u9700\u8981\u8868\u540D",UPDATE_NEED_OBJECT:"UPDATE \u9700\u8981\u6570\u636E\u5BF9\u8C61",UPDATE_NEED_AT_LEAST_ONE_FIELD:"\u66F4\u65B0\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5",UPDATE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CUPDATE \u9700\u8981 WHERE \u6761\u4EF6",DELETE_NEED_TABLE:"DELETE \u9700\u8981\u8868\u540D",DELETE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CDELETE \u9700\u8981 WHERE \u6761\u4EF6",TO_DELETE_IN_NEED_TABLE:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_DELETE_IN_NEED_ID_FIELD:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_DELETE_IN_NEED_IDS:"toDeleteInSql \u9700\u8981 ids \u6570\u7EC4",TO_UPDATE_CASE_NEED_TABLE:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_UPDATE_CASE_NEED_ID_FIELD:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_UPDATE_CASE_NEED_ROWS:"toUpdateCaseByIdSql \u9700\u8981 rows \u6570\u7EC4",TO_UPDATE_CASE_NEED_FIELDS:"toUpdateCaseByIdSql \u9700\u8981 fields \u6570\u7EC4"};class d${_select=[];_from="";_where=[];_joins=[];_orderBy=[];_groupBy=[];_having=[];_limit=null;_offset=null;_params=[];_quoteIdent;constructor($){if($&&$.quoteIdent)this._quoteIdent=$.quoteIdent;else this._quoteIdent=(Z)=>{if(typeof Z!=="string")throw Error(p.QUOTE_IDENT_NEED_STRING(Z));let J=Z.trim();if(!J)throw Error(p.IDENT_EMPTY);return`\`${J.replace(/`/g,"``")}\``}}_isQuotedIdent($){return Q0.isQuotedIdentPaired($)}_startsWithQuote($){return Q0.startsWithQuote($)}reset(){return this._select=[],this._from="",this._where=[],this._joins=[],this._orderBy=[],this._groupBy=[],this._having=[],this._limit=null,this._offset=null,this._params=[],this}_escapeField($){if(typeof $!=="string")return $;if($=$.trim(),Q0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{Q0.assertNoExprField($)}catch{throw Error(p.FIELD_EXPR_NOT_ALLOWED($))}if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i);if(Z.length!==2)throw Error(p.FIELD_INVALID($));let J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")throw Error(p.FIELD_INVALID($));let Q=J.trim(),X=Y.trim();return Q0.assertSafeAlias(X),`${this._escapeField(Q)} AS ${X}`}if($.includes("."))return $.split(".").map((J)=>{if(J=J.trim(),J==="*"||this._isQuotedIdent(J))return J;return Q0.assertPairedQuotedIdentIfStartsWithQuote(J,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(J)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){Q0.assertSafeIdentifierPart($,Z)}_escapeTable($){if(typeof $!=="string")return $;if($=$.trim(),this._startsWithQuote($)&&!this._isQuotedIdent($));if(this._isQuotedIdent($))return $;let Z=$.split(/\s+/).filter((V)=>V.length>0);if(Z.length===0)throw Error(p.FROM_EMPTY);if(Z.length>2)throw Error(p.TABLE_REF_TOO_MANY_PARTS($));let J=Z[0];if(typeof J!=="string"||J.trim()==="")throw Error(p.FROM_EMPTY);let Y=J.trim(),Q=Z.length===2?Z[1]:null,X=typeof Q==="string"?Q.trim():null,G=Y.split(".");if(G.length>2)throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let U="";if(G.length===2){let V=G[0],M=G[1];if(typeof V!=="string"||typeof M!=="string")throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let z=V.trim(),_=M.trim(),L=this._isQuotedIdent(z)?z:(()=>{if(this._startsWithQuote(z)&&!this._isQuotedIdent(z))throw Error(p.SCHEMA_QUOTE_NOT_PAIRED(z));return this._validateIdentifierPart(z,"schema"),this._quoteIdent(z)})(),C=this._isQuotedIdent(_)?_:(()=>{if(this._startsWithQuote(_)&&!this._isQuotedIdent(_))throw Error(p.TABLE_QUOTE_NOT_PAIRED(_));return this._validateIdentifierPart(_,"table"),this._quoteIdent(_)})();U=`${L}.${C}`}else{let V=G[0];if(typeof V!=="string")throw Error(p.FROM_EMPTY);let M=V.trim();if(this._isQuotedIdent(M))U=M;else{if(this._startsWithQuote(M)&&!this._isQuotedIdent(M))throw Error(p.TABLE_QUOTE_NOT_PAIRED(M));this._validateIdentifierPart(M,"table"),U=this._quoteIdent(M)}}if(X)return this._validateIdentifierPart(X,"alias"),`${U} ${X}`;return U}_validateParam($){Q0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,J){let Y=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(J),this._where.push(`${Y} != ?`),this._params.push(J);break;case"$in":if(!Array.isArray(J))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$in \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u6C38\u8FDC\u4E0D\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let Q=J.map(()=>"?").join(",");this._where.push(`${Y} IN (${Q})`),this._params.push(...J);break;case"$nin":case"$notIn":if(!Array.isArray(J))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u5339\u914D\u6240\u6709\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let X=J.map(()=>"?").join(",");this._where.push(`${Y} NOT IN (${X})`),this._params.push(...J);break;case"$like":this._validateParam(J),this._where.push(`${Y} LIKE ?`),this._params.push(J);break;case"$notLike":this._validateParam(J),this._where.push(`${Y} NOT LIKE ?`),this._params.push(J);break;case"$gt":this._validateParam(J),this._where.push(`${Y} > ?`),this._params.push(J);break;case"$gte":this._validateParam(J),this._where.push(`${Y} >= ?`),this._params.push(J);break;case"$lt":this._validateParam(J),this._where.push(`${Y} < ?`),this._params.push(J);break;case"$lte":this._validateParam(J),this._where.push(`${Y} <= ?`),this._params.push(J);break;case"$between":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$notBetween":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} NOT BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$null":if(J===!0)this._where.push(`${Y} IS NULL`);break;case"$notNull":if(J===!0)this._where.push(`${Y} IS NOT NULL`);break;default:this._validateParam(J),this._where.push(`${Y} = ?`),this._params.push(J)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,J])=>{if(J===void 0)return;if(Z==="$and"){if(Array.isArray(J))J.forEach((Y)=>{if(Y&&typeof Y==="object"&&!Array.isArray(Y))this._processWhereConditions(Y)})}else if(Z==="$or"){if(Array.isArray(J)){let Y=[],Q=[];if(J.forEach((X)=>{if(!X||typeof X!=="object"||Array.isArray(X))return;let G=new d$({quoteIdent:this._quoteIdent});if(G._processWhereConditions(X),G._where.length>0)Y.push(`(${G._where.join(" AND ")})`),Q.push(...G._params)}),Y.length>0)this._where.push(`(${Y.join(" OR ")})`),this._params.push(...Q)}}else if(Z.includes("$")){let Y=Z.lastIndexOf("$"),Q=Z.substring(0,Y),X="$"+Z.substring(Y+1);this._applyOperator(Q,X,J)}else if(typeof J==="object"&&J!==null&&!Array.isArray(J))for(let[Y,Q]of Object.entries(J))this._applyOperator(Z,Y,Q);else{this._validateParam(J);let Y=this._escapeField(Z);this._where.push(`${Y} = ?`),this._params.push(J)}})}getWhereConditions(){return{sql:this._where.length>0?this._where.join(" AND "):"",params:[...this._params]}}select($="*"){if(Array.isArray($))this._select=[...this._select,...$.map((Z)=>this._escapeField(Z))];else if(typeof $==="string")this._select.push(this._escapeField($));else throw Error(p.SELECT_FIELDS_INVALID);return this}selectRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.SELECT_RAW_NEED_NON_EMPTY($));return this._select.push($),this}from($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_NEED_NON_EMPTY($));return this._from=this._escapeTable($.trim()),this}fromRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_RAW_NEED_NON_EMPTY($));return this._from=$,this}where($,Z){if(typeof $==="object"&&$!==null)return this._processWhereConditions($),this;if(typeof $==="string"){if(Z===void 0)throw Error(p.WHERE_VALUE_REQUIRED);this._validateParam(Z);let J=this._escapeField($);return this._where.push(`${J} = ?`),this._params.push(Z),this}return this}whereRaw($,Z){if(typeof $!=="string"||!$.trim())throw Error(p.WHERE_RAW_NEED_NON_EMPTY($));if(this._where.push($),Z&&Z.length>0)this._params.push(...Z);return this}leftJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`LEFT JOIN ${J} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${J} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`INNER JOIN ${J} ON ${Z}`),this}orderBy($){if(!Array.isArray($))throw Error(p.ORDER_BY_NEED_ARRAY);return $.forEach((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let J=Z.split("#");if(J.length!==2)throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let X=Y.trim(),G=Q.trim().toUpperCase();if(!X)throw Error(p.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(G))throw Error(p.ORDER_BY_DIR_INVALID(G));let U=this._escapeField(X);this._orderBy.push(`${U} ${G}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((J)=>typeof J==="string").map((J)=>this._escapeField(J));this._groupBy=[...this._groupBy,...Z]}else if(typeof $==="string")this._groupBy.push(this._escapeField($));return this}having($){if(typeof $==="string")this._having.push($);return this}limit($,Z){if(typeof $!=="number"||$<0)throw Error(p.LIMIT_MUST_NON_NEGATIVE($));if(this._limit=Math.floor($),Z!==void 0&&Z!==null){if(typeof Z!=="number"||Z<0)throw Error(p.OFFSET_MUST_NON_NEGATIVE(Z));this._offset=Math.floor(Z)}return this}offset($){if(typeof $!=="number"||$<0)throw Error(p.OFFSET_COUNT_MUST_NON_NEGATIVE($));return this._offset=Math.floor($),this}toSelectSql(){let $="SELECT ";if($+=this._select.length>0?this._select.join(", "):"*",!this._from)throw Error(p.FROM_REQUIRED);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");if(this._groupBy.length>0)$+=" GROUP BY "+this._groupBy.join(", ");if(this._having.length>0)$+=" HAVING "+this._having.join(" AND ");if(this._orderBy.length>0)$+=" ORDER BY "+this._orderBy.join(", ");if(this._limit!==null){if($+=` LIMIT ${this._limit}`,this._offset!==null)$+=` OFFSET ${this._offset}`}return{sql:$,params:[...this._params]}}toInsertSql($,Z){if(!$||typeof $!=="string")throw Error(p.INSERT_NEED_TABLE($));if(!Z||typeof Z!=="object")throw Error(p.INSERT_NEED_DATA($,Z));let J=this._escapeTable($);if(Array.isArray(Z)){let Y=Q0.assertBatchInsertRowsConsistent(Z,{table:$}),Q=Y.map((M)=>this._escapeField(M)),X=Y.map(()=>"?").join(", "),G=Z.map(()=>`(${X})`).join(", "),U=`INSERT INTO ${J} (${Q.join(", ")}) VALUES ${G}`,V=[];for(let M=0;M<Z.length;M++){let z=Z[M];for(let _ of Y){let L=z[_];this._validateParam(L),V.push(L)}}return{sql:U,params:V}}else{let Y=Object.keys(Z);if(Y.length===0)throw Error(p.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of Y){let M=Z;this._validateParam(M[V])}let Q=Y.map((V)=>this._escapeField(V)),X=Y.map(()=>"?").join(", "),G=`INSERT INTO ${J} (${Q.join(", ")}) VALUES (${X})`,U=[];for(let V of Y){let M=Z[V];this._validateParam(M),U.push(M)}return{sql:G,params:U}}}toUpdateSql($,Z){if(!$||typeof $!=="string")throw Error(p.UPDATE_NEED_TABLE);if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(p.UPDATE_NEED_OBJECT);let J=Object.keys(Z);if(J.length===0)throw Error(p.UPDATE_NEED_AT_LEAST_ONE_FIELD);let Y=this._escapeTable($),Q=J.map((U)=>`${this._escapeField(U)} = ?`),X=[...Object.values(Z),...this._params],G=`UPDATE ${Y} SET ${Q.join(", ")}`;if(this._where.length>0)G+=" WHERE "+this._where.join(" AND ");else throw Error(p.UPDATE_NEED_WHERE);return{sql:G,params:X}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(p.DELETE_NEED_TABLE);let J=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(p.DELETE_NEED_WHERE);return{sql:J,params:[...this._params]}}toCountSql(){let $="SELECT COUNT(*) as total";if(!this._from)throw Error(p.COUNT_NEED_FROM);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");return{sql:$,params:[...this._params]}}static toDeleteInSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_DELETE_IN_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_DELETE_IN_NEED_ID_FIELD($.idField));if(!Array.isArray($.ids))throw Error(p.TO_DELETE_IN_NEED_IDS);if($.ids.length===0)return{sql:"",params:[]};let Z=$.ids.map(()=>"?").join(",");return{sql:`DELETE FROM ${$.quoteIdent($.table)} WHERE ${$.quoteIdent($.idField)} IN (${Z})`,params:[...$.ids]}}static toUpdateCaseByIdSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_UPDATE_CASE_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_UPDATE_CASE_NEED_ID_FIELD($.idField));if(!Array.isArray($.rows))throw Error(p.TO_UPDATE_CASE_NEED_ROWS);if($.rows.length===0)return{sql:"",params:[]};if(!Array.isArray($.fields))throw Error(p.TO_UPDATE_CASE_NEED_FIELDS);if($.fields.length===0)return{sql:"",params:[]};let Z=$.rows.map((U)=>U.id),J=Z.map(()=>"?").join(","),Y=[],Q=[],X=$.quoteIdent($.idField);for(let U of $.fields){let V=[];for(let z of $.rows){if(!(U in z.data))continue;V.push("WHEN ? THEN ?"),Q.push(z.id);let _=z.data[U];Q0.assertNoUndefinedParam(_,"SQL \u53C2\u6570\u503C"),Q.push(_)}if(V.length===0)continue;let M=$.quoteIdent(U);Y.push(`${M} = CASE ${X} ${V.join(" ")} ELSE ${M} END`)}Y.push(`${$.quoteIdent($.updatedAtField)} = ?`),Q.push($.updatedAtValue);for(let U of Z)Q.push(U);let G=`UPDATE ${$.quoteIdent($.table)} SET ${Y.join(", ")} WHERE ${X} IN (${J})`;if($.stateGtZero&&$.stateField)G+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:G,params:Q}}}function n$($){if(typeof $!=="string")throw Error(`quoteIdentifier \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`);let Z=$.trim();if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684 SQL \u6807\u8BC6\u7B26: ${Z}`);return`\`${Z}\``}function EW($){return typeof $.begin==="function"}class FX extends Error{originalError;params;duration;sqlInfo;constructor($,Z){super($);this.originalError=Z.originalError,this.params=Z.params,this.duration=Z.duration,this.sqlInfo=Z.sqlInfo}}class yZ{redis;dbName;sql=null;isTransaction=!1;idMode;constructor($){if(this.redis=$.redis,typeof $.dbName!=="string"||$.dbName.trim()==="")throw Error("DbHelper \u521D\u59CB\u5316\u5931\u8D25\uFF1AdbName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32");this.dbName=$.dbName,this.sql=$.sql||null,this.isTransaction=Boolean($.sql),this.idMode=$.idMode==="autoId"?"autoId":"timeId"}createSqlBuilder(){return new d$({quoteIdent:n$})}async getTableColumns($){let Z=n$($),Y=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!Y||Y.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let Q=[];for(let X of Y){let G=X.Field;if(typeof G==="string"&&G.length>0)Q.push(G)}return Q}async prepareQueryOptions($){let Z=E$($.where||{},{excludeValues:[null,void 0]});if($.joins&&$.joins.length>0){let Q=($.fields||[]).map((U)=>h.processJoinField(U)),X=h.normalizeTableRef($.table),G=h.getJoinMainQualifier($.table);return{table:X,tableQualifier:G,fields:Q.length>0?Q:["*"],where:h.processJoinWhere(Z),joins:$.joins,orderBy:h.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let Y=await h.fieldsToSnake(c($.table),$.fields||[],this.getTableColumns.bind(this));return{table:c($.table),tableQualifier:c($.table),fields:Y,where:h.whereKeysToSnake(Z),joins:void 0,orderBy:h.orderByToSnake($.orderBy||[]),page:$.page||1,limit:$.limit||10}}applyJoins($,Z){if(!Z||Z.length===0)return;for(let J of Z){let Y=h.normalizeTableRef(J.table);switch(J.type||"left"){case"inner":$.innerJoin(Y,J.on);break;case"right":$.rightJoin(Y,J.on);break;case"left":default:$.leftJoin(Y,J.on);break}}}async executeSelect($,Z){return await this.executeWithConn($,Z)}async executeRun($,Z){return await this.executeWithConn($,Z)}async executeWithConn($,Z){if(!this.sql)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(typeof $!=="string")throw Error(`executeWithConn \u53EA\u63A5\u53D7\u5B57\u7B26\u4E32\u7C7B\u578B\u7684 SQL\uFF0C\u6536\u5230\u7C7B\u578B: ${typeof $}\uFF0C\u503C: ${JSON.stringify($)}`);let J=Date.now(),Y=lQ(Z);try{let Q;if(Y.length>0)Q=await this.sql.unsafe($,Y);else Q=await this.sql.unsafe($);let X=Date.now()-J;return{data:Q,sql:{sql:$,params:Y,duration:X}}}catch(Q){let X=Date.now()-J,G=Q instanceof Error?Q.message:String(Q);throw new FX(`SQL\u6267\u884C\u5931\u8D25: ${G}`,{originalError:Q,params:Y,duration:X,sqlInfo:{sql:$,params:Y,duration:X}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=c($),J=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(J.data?.[0]?.count||0)>0,sql:J.sql}}async getCount($){let{table:Z,where:J,joins:Y,tableQualifier:Q}=await this.prepareQueryOptions($),X=Array.isArray(Y)&&Y.length>0,G=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(h.addDefaultStateFilter(J,Q,X));this.applyJoins(G,Y);let{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V);return{data:M.data?.[0]?.count||0,sql:M.sql}}async getOne($){let{table:Z,fields:J,where:Y,joins:Q,tableQualifier:X}=await this.prepareQueryOptions($),G=Array.isArray(Q)&&Q.length>0,U=this.createSqlBuilder().select(J).from(Z).where(h.addDefaultStateFilter(Y,X,G));this.applyJoins(U,Q);let{sql:V,params:M}=U.toSelectSql(),z=await this.executeSelect(V,M),L=z.data?.[0]||null;if(!L)return{data:{},sql:z.sql};let C=LJ(L),E=h.deserializeArrayFields(C);if(!E)return{data:{},sql:z.sql};return{data:fZ([E])[0]??E,sql:z.sql}}async getDetail($){return await this.getOne($)}async getList($){let Z=await this.prepareQueryOptions($);if(Z.page<1||Z.page>1e4)throw Error(`\u9875\u7801\u5FC5\u987B\u5728 1 \u5230 10000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);if(Z.limit<1||Z.limit>1000)throw Error(`\u6BCF\u9875\u6570\u91CF\u5FC5\u987B\u5728 1 \u5230 1000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);let J=h.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),Y=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(J);this.applyJoins(Y,Z.joins);let{sql:Q,params:X}=Y.toSelectSql(),G=await this.executeSelect(Q,X),U=G.data?.[0]?.total||0;if(U===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:G.sql}};let V=(Z.page-1)*Z.limit,M=this.createSqlBuilder().select(Z.fields).from(Z.table).where(J).limit(Z.limit).offset(V);if(this.applyJoins(M,Z.joins),Z.orderBy&&Z.orderBy.length>0)M.orderBy(Z.orderBy);let{sql:z,params:_}=M.toSelectSql(),L=await this.executeSelect(z,_),C=L.data||[],S=BJ(C).map((D)=>h.deserializeArrayFields(D)).filter((D)=>D!==null);return{data:{lists:fZ(S),total:U,page:Z.page,limit:Z.limit,pages:Math.ceil(U/Z.limit)},sql:{count:G.sql,data:L.sql}}}async getAll($){let Y={table:$.table,page:1,limit:10};if($.fields!==void 0)Y.fields=$.fields;if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;let Q=await this.prepareQueryOptions(Y),X=h.addDefaultStateFilter(Q.where,Q.tableQualifier,Array.isArray(Q.joins)&&Q.joins.length>0),G=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Q.table).where(X);this.applyJoins(G,Q.joins);let{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V),z=M.data?.[0]?.total||0;if(z===0)return{data:{lists:[],total:0},sql:{count:M.sql}};let _=this.createSqlBuilder().select(Q.fields).from(Q.table).where(X).limit(1e4);if(this.applyJoins(_,Q.joins),Q.orderBy&&Q.orderBy.length>0)_.orderBy(Q.orderBy);let{sql:L,params:C}=_.toSelectSql(),E=await this.executeSelect(L,C),S=E.data||[];if(S.length>=1000)I.warn({table:$.table,count:S.length,total:z,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(S.length>=1e4)I.warn({table:$.table,limit:1e4,total:z,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${z}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let N=BJ(S).map((k)=>h.deserializeArrayFields(k)).filter((k)=>k!==null);return{data:{lists:fZ(N),total:z},sql:{count:M.sql,data:E.sql}}}async insData($){let{table:Z,data:J}=$,Y=c(Z),Q=Date.now(),X;if(this.idMode==="autoId")X=h.buildInsertRow({idMode:"autoId",data:J,now:Q});else{let E;try{E=await this.redis.genTimeID()}catch(S){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:S})}X=h.buildInsertRow({idMode:"timeId",data:J,id:E,now:Q})}Q0.assertNoUndefinedInRecord(X,`insData \u63D2\u5165\u6570\u636E (table: ${Y})`);let G=this.createSqlBuilder(),{sql:U,params:V}=G.toInsertSql(Y,X),M=await this.executeRun(U,V),z=X.id,_=typeof z==="number"?z:0,L=C$(M.data?.lastInsertRowid),C=this.idMode==="autoId"?L||0:_||L||0;if(this.idMode==="autoId"&&C<=0)throw Error(`\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${Z})`);return{data:C,sql:M.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let J=1000;if(Z.length>J)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${J}`);let Y=c($),Q=Date.now(),X=[],G;if(this.idMode==="autoId")G=Z.map((_)=>{return h.buildInsertRow({idMode:"autoId",data:_,now:Q})});else{let _=[];for(let L=0;L<Z.length;L++)_.push(await this.redis.genTimeID());X=_,G=Z.map((L,C)=>{let E=_[C];if(typeof E!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${C}] \u4E0D\u662F number (table: ${Y})`);return h.buildInsertRow({idMode:"timeId",data:L,id:E,now:Q})})}let U=Q0.assertBatchInsertRowsConsistent(G,{table:Y}),V=this.createSqlBuilder(),{sql:M,params:z}=V.toInsertSql(Y,G);try{let _=await this.executeRun(M,z);if(this.idMode==="autoId"){let L=C$(_.data?.lastInsertRowid);if(L<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let C=[];for(let E=0;E<Z.length;E++)C.push(L+E);return{data:C,sql:_.sql}}return{data:X,sql:_.sql}}catch(_){throw I.error({err:_,table:$,snakeTable:Y,count:Z.length,fields:U,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new g({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:_,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:Y,count:Z.length,fields:U}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Y=d$.toDeleteInSql({table:J,idField:"id",ids:Z,quoteIdent:n$}),Q=await this.executeRun(Y.sql,Y.params);return{data:C$(Q.data?.changes),sql:Q.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Y=Date.now(),Q=[],X=new Set;for(let z of Z){let _=h.buildPartialUpdateData({data:z.data,allowState:!0});for(let L of Object.keys(_))X.add(L);Q.push({id:z.id,data:_})}let G=Array.from(X).sort();if(G.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let U=d$.toUpdateCaseByIdSql({table:J,idField:"id",rows:Q,fields:G,quoteIdent:n$,updatedAtField:"updated_at",updatedAtValue:Y,stateField:"state",stateGtZero:!0}),V=await this.executeRun(U.sql,U.params);return{data:C$(V.data?.changes),sql:V.sql}}async updData($){let{table:Z,data:J,where:Y}=$,Q=E$(Y,{excludeValues:[null,void 0]}),X=c(Z),G=h.whereKeysToSnake(Q),U=h.buildUpdateRow({data:J,now:Date.now(),allowState:!0}),V=h.addDefaultStateFilter(G,X,!1),M=this.createSqlBuilder().where(V),{sql:z,params:_}=M.toUpdateSql(X,U),L=await this.executeRun(z,_);return{data:C$(L.data?.changes),sql:L.sql}}async delData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:J})}async delForce($){let{table:Z,where:J}=$,Y=c(Z),Q=E$(J,{excludeValues:[null,void 0]}),X=h.whereKeysToSnake(Q),G=this.createSqlBuilder().where(X),{sql:U,params:V}=G.toDeleteSql(Y),M=await this.executeRun(U,V);return{data:C$(M.data?.changes),sql:M.sql}}async disableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:2},where:J})}async enableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:1},where:J})}async trans($){if(this.isTransaction)return await $(this);let Z=this.sql;if(!Z)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(!EW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(J)=>{let Y=new yZ({redis:this.redis,dbName:this.dbName,sql:J,idMode:this.idMode});return await $(Y)})}async query($,Z){return await this.executeWithConn($,Z)}async exists($){if(Array.isArray($.joins)&&$.joins.length>0)throw Error("exists \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528\u663E\u5F0F query \u6216\u62C6\u5206\u67E5\u8BE2\uFF09");let Z=typeof $.table==="string"?$.table.trim():"";if(!Z)throw Error("exists.table \u4E0D\u80FD\u4E3A\u7A7A");if(Z.includes(" "))throw Error(`exists \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${Z}\uFF09`);if(Z.includes("."))throw Error(`exists \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${Z}\uFF09`);let J=c(Z),Y=E$($.where||{},{excludeValues:[null,void 0]}),Q=h.whereKeysToSnake(Y),X=h.addDefaultStateFilter(Q,J,!1),G=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(J).where(X).limit(1),{sql:U,params:V}=G.toSelectSql(),M=await this.executeSelect(U,V);return{data:(M.data?.[0]?.cnt||0)>0,sql:M.sql}}async getFieldValue($){let Z=$.field;if(Array.isArray($.joins)&&$.joins.length>0)throw Error("getFieldValue \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528 getOne/getList \u5E76\u81EA\u884C\u53D6\u5B57\u6BB5\uFF09");let J=typeof $.table==="string"?$.table.trim():"";if(!J)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(J.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${J}\uFF09`);if(J.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${J}\uFF09`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}\uFF0C\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF`);let Y={table:$.table};if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;if($.page!==void 0)Y.page=$.page;if($.limit!==void 0)Y.limit=$.limit;Y.fields=[Z];let Q=await this.getOne(Y),X=Q.data;if(!n(X))return{data:null,sql:Q.sql};if(Object.hasOwn(X,Z))return{data:X[Z],sql:Q.sql};let G=Z.replace(/_([a-z])/g,(V,M)=>M.toUpperCase());if(G!==Z&&Object.hasOwn(X,G))return{data:X[G],sql:Q.sql};let U=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(U!==Z&&Object.hasOwn(X,U))return{data:X[U],sql:Q.sql};return{data:null,sql:Q.sql}}async increment($,Z,J,Y=1){let Q=c($),X=c(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Q))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${Q}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(X))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof Y!=="number"||isNaN(Y))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${Y})`);let G=E$(J,{excludeValues:[null,void 0]}),U=h.whereKeysToSnake(G),V=h.addDefaultStateFilter(U,Q,!1),M=this.createSqlBuilder().where(V),{sql:z,params:_}=M.getWhereConditions(),L=n$(Q),C=n$(X),E=z?`UPDATE ${L} SET ${C} = ${C} + ? WHERE ${z}`:`UPDATE ${L} SET ${C} = ${C} + ?`,S=await this.executeRun(E,[Y,..._]);return{data:C$(S.data?.changes),sql:S.sql}}async decrement($,Z,J,Y=1){return await this.increment($,Z,J,-Y)}}$0();var wW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,J=String($.config?.db?.database||"");if(!J)throw new g({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new g({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let Y=M$.getSql(),X=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new yZ({redis:$.redis,dbName:J,sql:Y,idMode:X})}catch(Y){throw I.error({env:Z,err:Y,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new g({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"db",operation:"init"}})}}},KX=wW;var x$=q1(G1(),1);class TY{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let J=Z.secret||this.config.secret,Y=Z.algorithm||this.config.algorithm||"HS256",Q={key:J,algorithm:Y,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)Q.iss=Z.issuer;if(Z.audience!==void 0)Q.aud=Z.audience;if(Z.subject!==void 0)Q.sub=Z.subject;if(Z.jwtId!==void 0)Q.jti=Z.jwtId;if(typeof Z.notBefore==="number")Q.notBefore=Z.notBefore;return x$.createSigner(Q)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let J=Z.secret||this.config.secret,Y=this.config.algorithm||"HS256",Q=Z.algorithms?Z.algorithms:[Y],X={key:J,algorithms:Q,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)X.allowedIss=Z.issuer;if(Z.audience!==void 0)X.allowedAud=Z.audience;if(Z.subject!==void 0)X.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")X.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")X.ignoreNotBefore=Z.ignoreNotBefore;return x$.createVerifier(X)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let Q=x$.createDecoder({complete:!0})($);return{header:Q.header,payload:Q.payload,signature:Q.signature}}return x$.createDecoder()($)}}var l8={name:"jwt",enable:!0,deps:[],handler:($)=>{return new TY($.config?$.config.auth:void 0)}},H1=l8;$0();var r8={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)I.configure($.config.logger);return I}},W1=r8;$0();$0();class NY{client;prefix;slowThresholdMs=500;constructor($=""){let Z=M$.getRedis();if(!Z)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");this.client=Z,this.prefix=$?`${$}:`:""}logSlow($,Z,J,Y={}){if(J<=this.slowThresholdMs)return;I.warn({subsystem:"redis",event:"slow",duration:J,cmd:$,key:Z,extra:Y,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,J=null){try{let Y=JSON.stringify(Z),Q=`${this.prefix}${$}`,X=Date.now();if(J){let V=await this.client.setex(Q,J,Y),M=Date.now()-X;return this.logSlow("SETEX",Q,M,{ttl:J}),V}let G=await this.client.set(Q,Y),U=Date.now()-X;return this.logSlow("SET",Q,U),G}catch(Y){return I.error({err:Y,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y?JSON.parse(Y):null}catch(Z){return I.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,J=Date.now();await this.client.del(Z);let Y=Date.now()-J;this.logSlow("DEL",Z,Y)}catch(Z){I.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,J=Date.now(),Y=await this.client.incr(Z);if(Y===1)await this.client.expire(Z,1);let Q=Date.now()-J;this.logSlow("INCR",Z,Q,{expireSeconds:1});let X=100+($%900+Y-1)%900;return Number(`${$}${X}`)}async setString($,Z,J=null){try{let Y=`${this.prefix}${$}`,Q=Date.now();if(J){let U=await this.client.setex(Y,J,Z),V=Date.now()-Q;return this.logSlow("SETEX",Y,V,{ttl:J}),U}let X=await this.client.set(Y,Z),G=Date.now()-Q;return this.logSlow("SET",Y,G),X}catch(Y){return I.error({err:Y,msg:"Redis setString \u9519\u8BEF"}),null}}async getString($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.exists(Z),Q=Date.now()-J;return this.logSlow("EXISTS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.incr(Z),Q=Date.now()-J;return this.logSlow("INCR",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.incr(J);if(Q===1)await this.client.expire(J,Z);let X=Date.now()-Y;return this.logSlow("INCR",J,X,{expireSeconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.expire(J,Z),X=Date.now()-Y;return this.logSlow("EXPIRE",J,X,{seconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.ttl(Z),Q=Date.now()-J;return this.logSlow("TTL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.ttl(J)))}catch(Z){return I.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sadd(J,...Z),X=Date.now()-Y;return this.logSlow("SADD",J,X,{membersCount:Z.length}),Q}catch(J){return I.error({err:J,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sismember(J,Z),X=Date.now()-Y;return this.logSlow("SISMEMBER",J,X),Q}catch(J){return I.error({err:J,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.scard(Z),Q=Date.now()-J;return this.logSlow("SCARD",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.smembers(Z),Q=Date.now()-J;return this.logSlow("SMEMBERS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.sadd(J.key,J.members)))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis saddBatch \u9519\u8BEF"}),0}}async sismemberBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.sismember(Z.key,Z.member)))}catch(Z){return I.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.del(Z),Q=Date.now()-J;return this.logSlow("DEL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>{let Y=`${this.prefix}${J}`;return this.client.del(Y)}))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.setObject(J.key,J.value,J.ttl??null)))).filter((J)=>J!==null).length}catch(Z){return I.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.getObject(J)))}catch(Z){return I.error({err:Z,msg:"Redis getBatch \u9519\u8BEF"}),$.map(()=>null)}}async existsBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.exists(Z)))}catch(Z){return I.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.expire(J.key,J.seconds)))).filter((J)=>J>0).length}catch(Z){return I.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),J=Date.now()-$;return this.logSlow("PING","(no-key)",J),Z}catch($){throw I.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new g({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var i8={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,J=$.config?.redis?.prefix;try{return M$.getRedis(),new NY(J)}catch(Y){throw I.error({env:Z,err:Y,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new g({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"redis",operation:"init"}})}}},U1=i8;function t8($,Z={},J={}){return{code:0,msg:$,data:Z,...J}}function a8($,Z=null,J={}){return{code:1,msg:$,data:Z,...J}}function e8($,Z,J={}){let{status:Y=200,contentType:Q,headers:X={}}=J,G=Q,U;if(typeof Z==="string"){if(U=Z,!G)G=Z.trim().startsWith("<")?"application/xml":"text/plain"}else U=JSON.stringify(Z),G=G||"application/json";let V={...$.corsHeaders,"Content-Type":G,...X};return new Response(U,{status:Y,headers:V})}var $6={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:t8,No:a8,Raw:e8}}},V1=$6;u0();function O1($,Z){let J=n(Z)?Z:{},Y=typeof J.name==="string"?String(J.name):"",Q=n(Z)?Object.keys(Z):[],X=J.deps,G=Array.isArray(X)?X.filter((V)=>typeof V==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${Y}`,relativePath:Y,fileName:Y,moduleName:Y,addonName:"",fileBaseName:Y,fileDir:"(builtin)",name:Y,enable:J.enable,deps:G,handler:J.handler??null,customKeys:Q}}function _1(){let $=[],Z=[W1,U1,KX,MX,V1,AX,H1,zX];for(let J of Z)$.push(O1("plugin",J));return $}function M1(){let $=[],Z=[aQ,eQ,WX,_X,UX];for(let J of Z)$.push(O1("hook",J));return $}L$();PZ();u0();import{existsSync as Z6}from"fs";function J6($){let Z=$.split("/").filter(Boolean),J=Z.indexOf("@befly-addon");if(J<0)return null;let Y=Z[J+1];if(typeof Y!=="string"||Y.trim()==="")return null;return Y}async function z$($,Z,J,Y){if(!Z6($))return[];let Q=N$($),X=new Bun.Glob(Y),G=[];try{let U=await X.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let V of U){if(V.endsWith(".d.ts"))continue;let M=N$(V),z=HZ(M).name,_=yJ(Q,M),L=HZ(_),C=L.dir?o(L.dir,L.name):L.name;if(z.startsWith("_"))continue;if(C.split("/").some((k)=>k.startsWith("_")))continue;let E=await j$(M,{}),S=R$(z),D="",N="";if(Z==="core")D="",N=z;else if(Z==="app")N=`app_${S}`;else{let k=J6(M);if(!k)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${M}`);D=k,N=`addon_${R$(D)}_${S}`}let w={source:Z,type:J,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:M,relativePath:C,fileName:z,moduleName:N,addonName:D,fileBaseName:HZ(M).base,fileDir:$,customKeys:n(E)?Object.keys(E):[]};if(J==="table"){w.content=n(E)?E:{},G.push(w);continue}if(J==="api")w.auth=!0,w.rawBody=!1,w.method="POST",w.fields={},w.required=[];if(J==="plugin"||J==="hook")w.deps=[],w.name="",w.handler=null;if(rY(E,(k,b)=>{w[b]=k}),J==="api")w.routePrefix=Z==="app"?"/app":`/addon/${D}`,w.path=`/api${w.routePrefix}/${C}`;G.push(w)}}catch(U){let V=Error(`scanFiles failed: source=${Z} type=${J} dir=${Q} pattern=${Y}`);throw V.cause=U,V}return G}var A1=async()=>{let $=[],Z=[],J=[],Y=[],Q=await tQ();Y.push(...await z$(o(s0,"tables"),"app","table","*.json"));for(let X of Q)Y.push(...await z$(o(X.rootDir,"tables"),"addon","table","*.json"));Z.push(..._1()),Z.push(...await z$(o(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let X of Q)Z.push(...await z$(o(X.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));J.push(...M1()),J.push(...await z$(o(s0,"hooks"),"app","hook","*.{ts,js}"));for(let X of Q)J.push(...await z$(o(X.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await z$(o(s0,"apis"),"app","api","**/*.{ts,js}"));for(let X of Q)$.push(...await z$(o(X.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:J,plugins:Z,apis:$,tables:Y,addons:Q}};class Y6{apis=new Map;plugins=[];hooks=[];context={};config=null;assertStartContextReady(){let $=[];if(!this.context.redis)$.push("ctx.redis");if(!this.context.db)$.push("ctx.db");if(!this.context.cache)$.push("ctx.cache");if($.length>0)throw Error(`\u542F\u52A8\u5931\u8D25\uFF1A${$.join("\u3001")} \u672A\u521D\u59CB\u5316\u3002\u8BF7\u68C0\u67E5\u63D2\u4EF6\u52A0\u8F7D\u4E0E\u6CE8\u5165\u987A\u5E8F\u3002`)}async start($={}){try{let Z=Bun.nanoseconds();this.config=await _Q($.NODE_ENV||"development"),await AQ(this.config),this.context.config=this.config,this.context.env=$;let{apis:J,tables:Y,plugins:Q,hooks:X,addons:G}=await A1();this.context.addons=G,await MQ(J),await yQ(Y,this.config),await wQ(Q),await FQ(X);let U=await CQ(G);await M$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await bQ(Q,this.context),this.assertStartContextReady(),await new T(this.context).run(Y),await mQ(this.context,J),await oQ(this.context,U);let V=this.config.devEmail,M=this.config.devPassword;if(typeof V==="string"&&V.length>0&&typeof M==="string"&&M.length>0)await nQ(this.context,{devEmail:V,devPassword:M});else I.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await dQ(this.context),this.hooks=await hQ(X),this.apis=await gQ(J);let z=pQ(this.apis,this.hooks,this.context),_=uQ(this.config.cors),L=typeof this.config.appPort==="number"?this.config.appPort:3000,C=typeof this.config.appHost==="string"&&this.config.appHost.length>0?this.config.appHost:"0.0.0.0",E=Bun.serve({port:L,hostname:C,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(k,b)=>{let x=new URL(k.url);if(x.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(x.pathname.startsWith("/api/"))return z(k,b);return _(k)},error:(k)=>{if(I.error({err:k,msg:"\u670D\u52A1\u542F\u52A8\u65F6\u53D1\u751F\u9519\u8BEF"}),this.config.nodeEnv==="development")return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",error:k.message,stack:k.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),S=rQ(Z),D=iQ($),N=D.role==="primary"?"\u4E3B\u8FDB\u7A0B":`\u5DE5\u4F5C\u8FDB\u7A0B #${D.instanceId}`,w=D.env==="standalone"?"":` [${D.env}]`;return I.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${N}${w})`),I.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${S}`),I.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${E.url}`),E}catch(Z){let J=Z instanceof Error?Z.message:String(Z),Y="runtime",Q=!1,X=!1;if(h$(Z))Y=Z.kind,Q=Z.logged===!0,X=Z.noLog===!0;else{let G=Z;if(G&&G.__syncTableLogged===!0)Q=!0;if(G&&G.__syncTableNoLog===!0)Y="policy";if(G&&G.__coreLogged===!0)Q=!0;if(G&&G.__coreNoLog===!0)X=!0}if(Q)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25\uFF08\u4E0B\u5C42\u5DF2\u8BB0\u5F55\uFF09",errorKind:Y,errorMessage:J});else if(X)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Y,errorMessage:J});else I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Y,errorMessage:J,err:Z});try{await I.flush()}catch{}try{await I.shutdown()}catch{}if(h$(Z))throw Z.logged=!0,Z;throw new g({kind:Y,message:J,logged:!0,noLog:X,meta:{subsystem:"start",operation:"start"},cause:Z})}}}export{Y6 as Befly};
|