befly 3.16.5 → 3.16.7
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 +279 -61
- package/dist/befly.min.js +16 -16
- package/dist/index.js +57 -16
- package/dist/lib/cacheHelper.d.ts +33 -0
- package/dist/lib/cacheHelper.js +185 -0
- package/dist/lib/cacheKeys.d.ts +6 -0
- package/dist/lib/cacheKeys.js +8 -0
- package/dist/lib/redisHelper.d.ts +8 -0
- package/dist/lib/redisHelper.js +60 -1
- package/dist/sync/syncCache.js +2 -0
- package/dist/types/cache.d.ts +27 -0
- package/dist/types/redis.d.ts +10 -0
- package/package.json +3 -3
package/dist/befly.min.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)}catch{}}function o1($,Z){let Q=[],X=0;while($.length>0){let G=$[0],Y=Buffer.byteLength(G);if(Q.length>0&&X+Y>Z)break;Q.push(G),X=X+Y,$.shift()}return{chunk:Q.join(""),bytes:X}}class EQ{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=o1(this.pending,this.maxBatchBytes).chunk,Q=Buffer.byteLength(Z);if(this.pendingBytes=this.pendingBytes-Q,!await this.writeChunk(Z,Q)){this.pending=[],this.pendingBytes=0;break}}}finally{if(this.flushing=!1,this.pending.length>0)this.scheduleFlush()}}}function l1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},Q=new EQ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(X)=>{try{let G=Z();if(!G.write(X))await new Promise((J)=>{G.once("drain",()=>J())});return!0}catch(G){return jZ(`[Logger] stream sink error: ${G?.message||G}`),!1}}});return{enqueue(X){Q.enqueue(X)},async flushNow(){await Q.flushNow()},async shutdown(){await Q.shutdown()}}}class wQ{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 EQ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Z,Q)=>{if(this.disabled)return!1;try{if(await this.ensureStreamReady(Q),!this.stream)return!1;if(!this.stream.write(Z))await new Promise((G)=>{let Y=this.stream;if(!Y){G();return}Y.once("drain",()=>G())});return this.streamSizeBytes=this.streamSizeBytes+Q,!0}catch(X){return jZ(`[Logger] file sink flush error (${this.prefix}): ${X?.message||X}`),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=y1($,{flags:"a"}),this.stream.on("error",(Z)=>{jZ(`[Logger] file sink error (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.closeStream()})}catch(Z){jZ(`[Logger] createWriteStream failed (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.stream=null}}getFilePath($,Z){let Q=Z>0?`.${Z}`:"",X=`${this.prefix}.${$}${Q}.log`;return m1(WG(),X)}async ensureStreamReady($){let Z=
|
|
2
|
+
var S1=Object.create;var{getPrototypeOf:C1,defineProperty:oX,getOwnPropertyNames:w1}=Object;var E1=Object.prototype.hasOwnProperty;var T1=($,Z,Q)=>{Q=$!=null?S1(C1($)):{};let X=Z||!$||!$.__esModule?oX(Q,"default",{value:$,enumerable:!0}):Q;for(let G of w1($))if(!E1.call(X,G))oX(X,G,{get:()=>$[G],enumerable:!0});return X};var t=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var A$=($,Z)=>()=>($&&(Z=$($=0)),Z);var I$=import.meta.require;function MQ($,Z="dateTime"){let Q=$.getFullYear(),X=$.getMonth()+1,G=$.getDate(),Y=$.getHours(),J=$.getMinutes(),W=$.getSeconds(),V=X<10?`0${X}`:String(X),A=G<10?`0${G}`:String(G),F=Y<10?`0${Y}`:String(Y),_=J<10?`0${J}`:String(J),I=W<10?`0${W}`:String(W);if(Z==="date")return`${Q}-${V}-${A}`;if(Z==="time")return`${F}:${_}:${I}`;return`${Q}-${V}-${A} ${F}:${_}:${I}`}function o($){if(typeof $!=="object"||$===null)return!1;let Z=Object.getPrototypeOf($);return Z===Object.prototype||Z===null}function zQ($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function zZ($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function GZ($){return Array.isArray($)||zZ($)}function MZ($){if(zQ($))return!0;if(Array.isArray($)){for(let Z of $)if(!MZ(Z))return!1;return!0}if(zZ($)){for(let Z of Object.values($)){if(Z===void 0)continue;if(!MZ(Z))return!1}return!0}return!1}function KZ($){return typeof $==="number"&&Number.isFinite($)}function RZ($){return typeof $==="number"&&Number.isFinite($)&&Number.isInteger($)}function G$($){if($===null)return"null";if($===void 0)return"undefined";if(typeof $==="string"){let Q=$.length>80?`${$.slice(0,80)}...`:$;return JSON.stringify(Q)}if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return String($);if(typeof $==="function")return"[Function]";try{let Q=JSON.stringify($);if(typeof Q==="string")return Q.length>120?`${Q.slice(0,120)}...`:Q}catch{}let Z=String($);return Z.length>120?`${Z.slice(0,120)}...`:Z}function KQ($){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 D1($){let Z=String($||"").trim();if(Z.length<2)return!1;if(!Z.startsWith("/"))return!1;let Q=Z.lastIndexOf("/");if(Q<=0)return!1;let X=Z.slice(Q+1);if(X!==""&&!/^[gimsuy]+$/.test(X))return!1;return!0}function g$($){let Z=String($||"").trim();return D1(Z)||Z.startsWith("@")}function T$($){let Z=String($||"").trim();if(Z.length===0)return!1;return!Z.startsWith("/")&&Z.includes("|")}function RQ($){return String($||"").trim().startsWith("@")}function y$($,Z,Q,X){if(typeof $!=="number")return Z;if(!Number.isFinite($))return Z;let G=Math.floor($);if(G<Q)return Z;if(G>X)return X;return G}function lX($,Z){if(typeof Z!=="function")return;if(!o($))return;let Q=$;for(let X of Object.keys(Q))Z(Q[X],X)}function k1($){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((Q)=>Q.length>0)}function v1($){if($.length===0)return $;return $.charAt(0).toUpperCase()+$.slice(1)}function j$($){let Z=k1($);if(Z.length===0)return"";let Q=Z[0];if(!Q)return"";let X=Q.toLowerCase(),G=Z.slice(1).map((Y)=>v1(Y.toLowerCase()));return[X].concat(G).join("")}function x1($){return String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim()}function p($){let Z=x1($);if(Z.length===0)return"";return Z.split(/\s+/).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase()).join("_")}function m($,Z){if(!o($))return{};let Q=new Set(Array.isArray(Z)?Z:[]),X={};for(let[G,Y]of Object.entries($)){if(Q.has(G))continue;X[G]=Y}return X}function iX($,Z){let Q={};if(!Array.isArray($)||typeof Z!=="function")return Q;for(let X of $){let G=Z(X);if(typeof G!=="string"||G==="")continue;Q[G]=X}return Q}function tX(){let $=Date.now().toString(36),Z="";while(Z.length<10)Z=Z+Math.random().toString(36).slice(2);return $+Z.slice(0,10)}var IQ=($)=>{if(!$||!o($))return $;let Z={};for(let[Q,X]of Object.entries($)){let G=j$(Q);Z[G]=X}return Z},rX=($)=>{if(!$||!o($))return $;let Z={};for(let[Q,X]of Object.entries($)){let G=p(Q);Z[G]=X}return Z},qQ=($)=>{if(!$||!Array.isArray($))return $;return $.map((Z)=>IQ(Z))};var m0=()=>{};function LQ($){let Z=[];for(let G of $.builtinPatterns){let Y=String(G).trim();if(Y.length>0)Z.push(Y.toLowerCase())}if(Array.isArray($.userPatterns))for(let G of $.userPatterns){let Y=String(G).trim();if(Y.length>0)Z.push(Y.toLowerCase())}let Q=new Set,X=[];for(let G of Z){if(!G.includes("*")){Q.add(G);continue}let Y=G.replace(/\*+/g,"").trim();if(!Y)continue;X.push(Y)}return{exactSet:Q,contains:X}}function PQ($,Z){let Q=String($).toLowerCase();if(Z.exactSet.has(Q))return!0;for(let X of Z.contains)if(Q.includes(X))return!0;return!1}function IZ($,Z){if($.length<=Z)return $;return $.slice(0,Z)}function aX($,Z){let Q={name:$.name||"Error",message:IZ($.message||"",Z.maxStringLen)};if(typeof $.stack==="string")Q.stack=IZ($.stack,Z.maxStringLen);return Q}function f1($,Z,Q){if(typeof $==="string")return $;if($ instanceof Error)try{return JSON.stringify(aX($,Z))}catch{return`${$.name||"Error"}: ${$.message||""}`}if($&&typeof $==="object"){if(Q.has($))return"[Circular]"}try{let X=Q;return JSON.stringify($,(Y,J)=>{if(Y&&PQ(Y,Z.sensitiveKeyMatcher))return"[MASKED]";if(J&&typeof J==="object"){if(X.has(J))return"[Circular]";X.add(J)}return J})}catch{try{return String($)}catch{return"[Unserializable]"}}}function jQ($,Z,Q){let X=f1($,Z,Q);return IZ(X,Z.maxStringLen)}function BQ($,Z,Q,X,G){if($===null||$===void 0)return $;if(typeof $==="string")return IZ($,Z.maxStringLen);if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return $;if($ instanceof Error)return aX($,Z);let Y=Array.isArray($),J=o($);if(!Y&&!J)return jQ($,Z,G);if(G.has($))return"[Circular]";if(X>=Z.sanitizeDepth)return jQ($,Z,G);if(Q.nodes>=Z.sanitizeNodes)return jQ($,Z,G);if(G.add($),Q.nodes=Q.nodes+1,Y){let _=$,I=[],P=_.length>Z.maxArrayItems?Z.maxArrayItems:_.length;for(let C=0;C<P;C++)I[C]=BQ(_[C],Z,Q,X+1,G);return I}let W=$,V={},A=Object.entries(W),F=A.length>Z.sanitizeObjectKeys?Z.sanitizeObjectKeys:A.length;for(let _=0;_<F;_++){let I=A[_];if(!I)continue;let P=I[0],C=I[1];if(PQ(P,Z.sensitiveKeyMatcher)){V[P]="[MASKED]";continue}V[P]=BQ(C,Z,Q,X+1,G)}return V}function SQ($,Z){let Q=new WeakSet,X={nodes:0},G={};for(let[Y,J]of Object.entries($)){if(PQ(Y,Z.sensitiveKeyMatcher)){G[Y]="[MASKED]";continue}G[Y]=BQ(J,Z,X,0,Q)}return G}var eX=A$(()=>{m0()});import{AsyncLocalStorage as g1}from"async_hooks";function $G($,Z){return CQ.run($,Z)}function ZG(){let $=CQ.getStore();if(!$)return null;return $}function QG($,Z,Q,X){let G=CQ.getStore();if(!G)return;G.userId=$===void 0?null:$,G.roleCode=Z===void 0?null:Z,G.nickname=Q===void 0?null:Q,G.roleType=X===void 0?null:X}var CQ;var qZ=A$(()=>{CQ=new g1});import{createWriteStream as y1,existsSync as h1,mkdirSync as b1}from"fs";import{stat as c1}from"fs/promises";import{hostname as p1}from"os";import{isAbsolute as u1,join as m1,resolve as d1}from"path";function JG($){if(!$||$.truncate!==!1)return h$;return{maxStringLen:200000,maxArrayItems:5000,sanitizeDepth:h$.sanitizeDepth,sanitizeNodes:h$.sanitizeNodes,sanitizeObjectKeys:h$.sanitizeObjectKeys,sensitiveKeyMatcher:h$.sensitiveKeyMatcher}}function jZ($){try{process.stderr.write(`${$}
|
|
3
|
+
`)}catch{}}function o1($,Z){let Q=[],X=0;while($.length>0){let G=$[0],Y=Buffer.byteLength(G);if(Q.length>0&&X+Y>Z)break;Q.push(G),X=X+Y,$.shift()}return{chunk:Q.join(""),bytes:X}}class EQ{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=o1(this.pending,this.maxBatchBytes).chunk,Q=Buffer.byteLength(Z);if(this.pendingBytes=this.pendingBytes-Q,!await this.writeChunk(Z,Q)){this.pending=[],this.pendingBytes=0;break}}}finally{if(this.flushing=!1,this.pending.length>0)this.scheduleFlush()}}}function l1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},Q=new EQ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(X)=>{try{let G=Z();if(!G.write(X))await new Promise((J)=>{G.once("drain",()=>J())});return!0}catch(G){return jZ(`[Logger] stream sink error: ${G?.message||G}`),!1}}});return{enqueue(X){Q.enqueue(X)},async flushNow(){await Q.flushNow()},async shutdown(){await Q.shutdown()}}}class wQ{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 EQ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Z,Q)=>{if(this.disabled)return!1;try{if(await this.ensureStreamReady(Q),!this.stream)return!1;if(!this.stream.write(Z))await new Promise((G)=>{let Y=this.stream;if(!Y){G();return}Y.once("drain",()=>G())});return this.streamSizeBytes=this.streamSizeBytes+Q,!0}catch(X){return jZ(`[Logger] file sink flush error (${this.prefix}): ${X?.message||X}`),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=y1($,{flags:"a"}),this.stream.on("error",(Z)=>{jZ(`[Logger] file sink error (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.closeStream()})}catch(Z){jZ(`[Logger] createWriteStream failed (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.stream=null}}getFilePath($,Z){let Q=Z>0?`.${Z}`:"",X=`${this.prefix}.${$}${Q}.log`;return m1(WG(),X)}async ensureStreamReady($){let Z=MQ(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 Q=this.getFilePath(Z,0),X=0;try{let G=await c1(Q);X=typeof G.size==="number"?G.size:0}catch{X=0}if(this.streamDate=Z,this.streamIndex=0,this.streamSizeBytes=X,this.openStream(Q),!this.stream)return}if(this.stream&&this.maxFileBytes>0&&this.streamSizeBytes+$>this.maxFileBytes){await this.closeStream(),this.streamIndex=this.streamIndex+1;let Q=this.getFilePath(Z,this.streamIndex);if(this.streamDate=Z,this.streamSizeBytes=0,this.openStream(Q),!this.stream)return}}}async function r1(){if(B$)return;let $=[];if(J$)$.push({flush:()=>J$?J$.flushNow():Promise.resolve()});if(H$)$.push({flush:()=>H$?H$.flushNow():Promise.resolve()});if(W$)$.push({flush:()=>W$?W$.flushNow():Promise.resolve()});for(let Z of $)try{await Z.flush()}catch{}}async function HG(){if(B$)return;let $=J$,Z=H$,Q=W$,X=[];if($)X.push({shutdown:()=>$.shutdown()});if(Z)X.push({shutdown:()=>Z.shutdown()});if(Q)X.push({shutdown:()=>Q.shutdown()});for(let G of X)try{await G.shutdown()}catch{}if(J$===$)J$=null;if(H$===Z)H$=null;if(W$===Q)W$=null}function WG(){let $=n0.dir||"./logs";if(u1($))return $;return d1(n1,$)}function i1(){let $=WG();try{if(!h1($))b1($,{recursive:!0})}catch(Z){throw Error(`\u521B\u5EFA logs \u76EE\u5F55\u5931\u8D25: ${$}. ${Z?.message||Z}`)}}function t1($){HG(),n0=Object.assign({debug:0,dir:"./logs",console:1,maxSize:20},$);{let Z=n0.maxSize,Q=typeof Z==="number"&&Number.isFinite(Z)?Z:20;if(Q<10)Q=10;if(Q>100)Q=100;n0.maxSize=Q}J$=null,H$=null,W$=null,h$={maxStringLen:y$(n0.maxStringLen,200,20,200000),maxArrayItems:y$(n0.maxArrayItems,500,10,5000),sanitizeDepth:y$(n0.sanitizeDepth,5,1,10),sanitizeNodes:y$(n0.sanitizeNodes,5000,50,20000),sanitizeObjectKeys:y$(n0.sanitizeObjectKeys,500,10,5000),sensitiveKeyMatcher:LQ({builtinPatterns:YG,userPatterns:n0.excludeFields})}}function a1($){B$=$}function e1($,Z){return{level:$,time:Z,timeFormat:MQ(new Date(Z)),pid:process.pid,hostname:s1}}function $H($,Z){if(Z&&o(Z)){let Q={};Q.level=$.level,Q.time=$.time,Q.timeFormat=$.timeFormat,Q.pid=$.pid,Q.hostname=$.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`${XG(Q)}
|
|
4
4
|
`}if($.msg===void 0)$.msg="";return`${XG($)}
|
|
5
|
-
`}function XG($){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 ZH($){i1();let Z=typeof n0.maxSize==="number"?n0.maxSize:20,Q=Math.floor(Z*1024*1024);if($==="app"){if(!J$)J$=new wQ({prefix:"app",maxFileBytes:Q});if(n0.console===1&&!W$)W$=l1("stdout");return{fileSink:J$,consoleSink:n0.console===1?W$:null}}if(!H$)H$=new wQ({prefix:"error",maxFileBytes:Q});return{fileSink:H$,consoleSink:null}}function GG($,Z,Q,X){if(Z==="debug"&&n0.debug!==1)return;let G=ZH($),Y=Date.now(),J=e1(Z,Y),
|
|
5
|
+
`}function XG($){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 ZH($){i1();let Z=typeof n0.maxSize==="number"?n0.maxSize:20,Q=Math.floor(Z*1024*1024);if($==="app"){if(!J$)J$=new wQ({prefix:"app",maxFileBytes:Q});if(n0.console===1&&!W$)W$=l1("stdout");return{fileSink:J$,consoleSink:n0.console===1?W$:null}}if(!H$)H$=new wQ({prefix:"error",maxFileBytes:Q});return{fileSink:H$,consoleSink:null}}function GG($,Z,Q,X){if(Z==="debug"&&n0.debug!==1)return;let G=ZH($),Y=Date.now(),J=e1(Z,Y),W=JG(X),V=SQ(Q,W),A=$H(J,V);if(G.fileSink.enqueue(A),G.consoleSink){if(!X||X.console!==!1)G.consoleSink.enqueue(A)}}function QH(){let $=ZG();if(!$)return null;let Z=Date.now()-$.now,Q={requestId:$.requestId,method:$.method,route:$.route,ip:$.ip,now:$.now,durationSinceNowMs:Z};return Q.userId=$.userId,Q.roleCode=$.roleCode,Q.nickname=$.nickname,Q.roleType=$.roleType,Q}function XH($,Z){let Q={};for(let G of Object.keys($))Q[G]=$[G];let X=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let G of X)if(Q[G]===void 0)Q[G]=Z[G];return Q}function GH($){if(o($))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 YH($){let Z=QH();if(!Z)return $;return XH($,Z)}class UG{write($,Z,Q){if($==="debug"&&n0.debug!==1)return;let X=YH(GH(Z));if(B$){let G=JG(Q),Y=SQ(X,G);if($==="info")B$.info(Y);else if($==="warn")B$.warn(Y);else if($==="error")B$.error(Y);else B$.debug(Y);return}if(GG("app",$,X,Q),$==="error")GG("error","error",X,Q)}info($,Z){this.write("info",$,Z)}warn($,Z){this.write("warn",$,Z)}error($,Z){this.write("error",$,Z)}debug($,Z){this.write("debug",$,Z)}printPlainLines($,Z){let X=(Z&&Z.stream==="stderr"?"stderr":"stdout")==="stderr"?process.stderr:process.stdout;try{if(Array.isArray($)){for(let Y of $)X.write(`${String(Y)}
|
|
6
6
|
`);return}let G=String($).split(`
|
|
7
7
|
`);for(let Y=0;Y<G.length;Y=Y+1)X.write(`${G[Y]}
|
|
8
|
-
`)}catch{}}async flush(){await r1()}configure($){t1($)}setMock($){a1($)}async shutdown(){await HG()}}var n1,YG,h$,s1,L$=null,J$=null,H$=null,W$=null,n0,q;var $0=A$(()=>{eX();u0();qZ();n1=process.cwd(),YG=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],h$={maxStringLen:200,maxArrayItems:500,sanitizeDepth:5,sanitizeNodes:5000,sanitizeObjectKeys:500,sensitiveKeyMatcher:BQ({builtinPatterns:YG,userPatterns:[]})};s1=(()=>{try{return p1()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};q=new UG});import{isAbsolute as JH}from"path";import{pathToFileURL as HH}from"url";function WH($){return/^[a-zA-Z]:[\\/]/.test($)}function UH($){if(JH($)||WH($))return HH($).href;return $}async function B$($,Z){try{let G=($.endsWith(".json")?await import(UH($),{with:{type:"json"}}):await import($))?.default;if(G===null||G===void 0)return Z;let Y=zQ(Z),J=zQ(G);if(Y!==J)return q.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:Y,actualType:J}),Z;return G}catch(Q){return q.warn({err:Q,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var LZ=A$(()=>{$0();u0()});function JZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(KH,(Z)=>Z.toUpperCase())}function jH(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function DQ($,Z){let Q="",X=0,G=-1,Y=0,J=null;for(let U=0;U<=$.length;++U){if(U<$.length)J=$[U];else if(J==="/")break;else J="/";if(J==="/"){if(G===U-1||Y===1);else if(Y===2){if(Q.length<2||X!==2||Q[Q.length-1]!=="."||Q[Q.length-2]!=="."){if(Q.length>2){let V=Q.lastIndexOf("/");if(V===-1)Q="",X=0;else Q=Q.slice(0,V),X=Q.length-1-Q.lastIndexOf("/");G=U,Y=0;continue}else if(Q.length>0){Q="",X=0,G=U,Y=0;continue}}if(Z)Q+=Q.length>0?"/..":"..",X=2}else{if(Q.length>0)Q+=`/${$.slice(G+1,U)}`;else Q=$.slice(G+1,U);X=U-G-1}G=U,Y=0}else if(J==="."&&Y!==-1)++Y;else Y=-1}return Q}var KH,zH,RH,RG,zG,IH,qH,N$=function($){if($.length===0)return".";$=JZ($);let Z=$.match(zH),Q=c$($),X=$[$.length-1]==="/";if($=DQ($,!Q),$.length===0){if(Q)return"/";return X?"./":"."}if(X)$+="/";if(RG.test($))$+="/";if(Z){if(!Q)return`//./${$}`;return`//${$}`}return Q&&!c$($)?`/${$}`:$},o=function(...$){let Z="";for(let Q of $){if(!Q)continue;if(Z.length>0){let X=Z[Z.length-1]==="/",G=Q[0]==="/";if(X&&G)Z+=Q.slice(1);else Z+=X||G?Q:`/${Q}`}else Z+=Q}return N$(Z)},YZ=function(...$){$=$.map((X)=>JZ(X));let Z="",Q=!1;for(let X=$.length-1;X>=-1&&!Q;X--){let G=X>=0?$[X]:jH();if(!G||G.length===0)continue;Z=`${G}/${Z}`,Q=c$(G)}if(Z=DQ(Z,!Q),Q&&!c$(Z))return`/${Z}`;return Z.length>0?Z:"."},c$=function($){return RH.test($)},IG=function($){if($==="..")return"";let Z=IH.exec(JZ($));return Z&&Z[1]||""},kQ=function($,Z){let Q=YZ($).replace(zG,"$1").split("/"),X=YZ(Z).replace(zG,"$1").split("/");if(X[0][1]===":"&&Q[0][1]===":"&&Q[0]!==X[0])return X.join("/");let G=[...Q];for(let Y of G){if(X[0]!==Y)break;Q.shift(),X.shift()}return[...Q.map(()=>".."),...X].join("/")},BZ=function($){let Z=JZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&RG.test(Z[0]))Z[0]+="/";return Z.join("/")||(c$($)?"/":".")},qG=function($,Z){let Q=JZ($).split("/"),X="";for(let G=Q.length-1;G>=0;G--){let Y=Q[G];if(Y){X=Y;break}}return Z&&X.endsWith(Z)?X.slice(0,-Z.length):X},HZ=function($){let Z=qH.exec($)?.[0]?.replace(/\\/g,"/")||"",Q=qG($),X=IG(Q);return{root:Z,dir:BZ($),base:Q,ext:X,name:Q.slice(0,Q.length-X.length)}};var jG=A$(()=>{KH=/^[A-Za-z]:\//;zH=/^[/\\]{2}/,RH=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,RG=/^[A-Za-z]:$/,zG=/^\/([A-Za-z]:)?$/,IH=/.(\.[^./]+|\.)$/,qH=/^[/\\]|^[a-zA-Z]:[/\\]/});var P$=A$(()=>{jG()});import{statSync as LH}from"fs";var PZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return LH(o($,Z.name)).isDirectory()}catch{return!1}};var vQ=A$(()=>{P$()});import{existsSync as p$}from"fs";import{readdir as BH}from"fs/promises";function PH($){if(!$||typeof $!=="object")return null;let Z=$,Q=Z.title;if(typeof Q!=="string"||!Q)return null;let X=Z.order,G=typeof X==="number"&&Number.isFinite(X)&&Number.isInteger(X)&&X>=1?X:void 0;if(G===void 0)return{title:Q};return{title:Q,order:G}}async function LG($,Z,Q=""){if(!p$($))return[];let X=[],G=await BH($,{withFileTypes:!0});for(let Y of G){if(!PZ($,Y)||Y.name==="components")continue;let J=o($,Y.name),U=o(J,"meta.json"),V=o(J,"index.vue"),A=null;if(!p$(U))continue;if(!p$(V)){q.warn({path:J,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 M=await B$(U,{});if(A=PH(M),!A?.title){q.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(!A?.title)continue;let _=String(Y.name).replace(/_\d+$/,""),R;if(_==="index")R=Q;else R=Q?`${Q}/${_}`:`/${_}`;let C=Z?R?`${Z}${R}`:Z:R||"/",S={name:A.title,path:C,sort:A.order??999999},w=await LG(J,Z,R);if(w.length>0)S.children=w;X.push(S)}return X.sort((Y,J)=>(Y.sort??999999)-(J.sort??999999)),X}function BG($){let Z=$.split("/").filter((Q)=>Boolean(Q));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function PG($){let Z=[];for(let X of $){let G=o(X.rootDir,"adminViews"),Y=o(X.rootDir,"views","admin"),J=p$(G)?G:p$(Y)?Y:null;if(!J)continue;try{let U=`/${X.source}/${X.name}`,V=await LG(J,U);if(V.length>0)for(let A of V)Z.push(A)}catch(U){q.warn({err:U,addon:X.name,addonSource:X.source,dir:J,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let Q=o(process.cwd(),"menus.json");if(p$(Q)){let X=await B$(Q,[]);if(Array.isArray(X)&&X.length>0)for(let G of X)Z.push(G)}return Z}var xQ=A$(()=>{P$();$0();LZ();vQ()});var l$=i((k7,TY)=>{var EY={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 o$ extends Error{constructor($,Z,Q){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,Q)for(let X in Q)this[X]=Q[X]}}o$.codes=EY;o$.wrap=function($,Z,Q){if($ instanceof o$)return $;return new o$(Z,Q,{originalError:$})};TY.exports={TokenError:o$,TOKEN_ERROR_CODES:EY}});var aQ=i((v7,NY)=>{var{TokenError:V$}=l$();function uW({complete:$,checkTyp:Z},Q){if(Q instanceof Buffer)Q=Q.toString("utf-8");else if(typeof Q!=="string")throw new V$(V$.codes.invalidType,"The token must be a string or a buffer.");let X=Q.indexOf("."),G=Q.lastIndexOf(".");if(X===-1||X>=G)throw new V$(V$.codes.malformed,"The token is malformed.");let Y=!1;try{let J=JSON.parse(Buffer.from(Q.slice(0,X),"base64").toString("utf-8"));if(Z&&J.typ!==Z)throw new V$(V$.codes.invalidType,`The type must be "${Z}".`,{header:J});Y=!0;let U=Buffer.from(Q.slice(X+1,G),"base64").toString("utf-8");if(U=JSON.parse(U),!U||typeof U!=="object")throw new V$(V$.codes.invalidPayload,"The payload must be an object",{payload:U});return $?{header:J,payload:U,signature:Q.slice(G+1),input:Q.slice(0,G)}:U}catch(J){throw V$.wrap(J,V$.codes.malformed,`The token ${Y?"payload":"header"} is not a valid base64url serialized JSON.`)}}NY.exports=function(Z={}){let Q=Z.complete||!1,X=Z.checkTyp;return uW.bind(null,{complete:Q,checkTyp:X})}});var kY=i((x7,DY)=>{function O$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")O$.prototype[Symbol.iterator]=function(){return this};O$.of=function(){var $=arguments,Z=$.length,Q=0;return new O$(function(){if(Q>=Z)return{done:!0};return{done:!1,value:$[Q++]}})};O$.empty=function(){var $=new O$(function(){return{done:!0}});return $};O$.fromSequence=function($){var Z=0,Q=$.length;return new O$(function(){if(Z>=Q)return{done:!0};return{done:!1,value:$[Z++]}})};O$.is=function($){if($ instanceof O$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};DY.exports=O$});var vY=i((mW)=>{mW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";mW.SYMBOL_SUPPORT=typeof Symbol<"u"});var eQ=i((g7,fY)=>{var xY=vY(),sW=xY.ARRAY_BUFFER_SUPPORT,oW=xY.SYMBOL_SUPPORT;fY.exports=function(Z,Q){var X,G,Y,J,U;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof Q!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||sW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(Y=0,J=Z.length;Y<J;Y++)Q(Z[Y],Y);return}if(typeof Z.forEach==="function"){Z.forEach(Q);return}if(oW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){X=Z,Y=0;while(U=X.next(),U.done!==!0)Q(U.value,Y),Y++;return}for(G in Z)if(Z.hasOwnProperty(G))Q(Z[G],G);return}});var $X=i((Z8)=>{var lW=Math.pow(2,8)-1,rW=Math.pow(2,16)-1,iW=Math.pow(2,32)-1,tW=Math.pow(2,7)-1,aW=Math.pow(2,15)-1,eW=Math.pow(2,31)-1;Z8.getPointerArray=function($){var Z=$-1;if(Z<=lW)return Uint8Array;if(Z<=rW)return Uint16Array;if(Z<=iW)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};Z8.getSignedPointerArray=function($){var Z=$-1;if(Z<=tW)return Int8Array;if(Z<=aW)return Int16Array;if(Z<=eW)return Int32Array;return Float64Array};Z8.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 $8={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};Z8.getMinimalRepresentation=function($,Z){var Q=null,X=0,G,Y,J,U,V;for(U=0,V=$.length;U<V;U++)if(J=Z?Z($[U]):$[U],Y=Z8.getNumberType(J),G=$8[Y.name],G>X)X=G,Q=Y;return Q};Z8.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};Z8.concat=function(){var $=0,Z,Q,X;for(Z=0,X=arguments.length;Z<X;Z++)$+=arguments[Z].length;var G=new arguments[0].constructor($);for(Z=0,Q=0;Z<X;Z++)G.set(arguments[Z],Q),Q+=arguments[Z].length;return G};Z8.indices=function($){var Z=Z8.getPointerArray($),Q=new Z($);for(var X=0;X<$;X++)Q[X]=X;return Q}});var cY=i((V8)=>{var hY=eQ(),bY=$X();function H8($){return Array.isArray($)||bY.isTypedArray($)}function ZX($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function W8($){var Z=ZX($),Q=typeof Z==="number"?Array(Z):[],X=0;return hY($,function(G){Q[X++]=G}),Q}function U8($){var Z=ZX($),Q=typeof Z==="number"?bY.getPointerArray(Z):Array,X=typeof Z==="number"?Array(Z):[],G=typeof Z==="number"?new Q(Z):[],Y=0;return hY($,function(J){X[Y]=J,G[Y]=Y++}),[X,G]}V8.isArrayLike=H8;V8.guessLength=ZX;V8.toArray=W8;V8.toArrayWithIndices=U8});var XX=i((b7,pY)=>{var QX=kY(),F8=eQ(),K8=$X(),z8=cY();function d0($,Z,Q){if(arguments.length<2)Q=$,$=null,Z=null;if(this.capacity=Q,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 X=K8.getPointerArray(Q);this.forward=new X(Q),this.backward=new X(Q),this.K=typeof $==="function"?new $(Q):Array(Q),this.V=typeof Z==="function"?new Z(Q):Array(Q),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 Q=this.backward[$],X=this.forward[$];if(this.tail===$)this.tail=Q;else this.backward[X]=Q;return this.forward[Q]=X,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var Q=this.items[$];if(typeof Q<"u"){this.splayOnTop(Q),this.V[Q]=Z;return}if(this.size<this.capacity)Q=this.size++;else Q=this.tail,this.tail=this.backward[Q],delete this.items[this.K[Q]];this.items[$]=Q,this.K[Q]=$,this.V[Q]=Z,this.forward[Q]=this.head,this.backward[this.head]=Q,this.head=Q};d0.prototype.setpop=function($,Z){var Q=null,X=null,G=this.items[$];if(typeof G<"u")return this.splayOnTop(G),Q=this.V[G],this.V[G]=Z,{evicted:!1,key:$,value:Q};if(this.size<this.capacity)G=this.size++;else G=this.tail,this.tail=this.backward[G],Q=this.V[G],X=this.K[G],delete this.items[X];if(this.items[$]=G,this.K[G]=$,this.V[G]=Z,this.forward[G]=this.head,this.backward[this.head]=G,this.head=G,X)return{evicted:!0,key:X,value:Q};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 Q=0,X=this.size,G=this.head,Y=this.K,J=this.V,U=this.forward;while(Q<X)$.call(Z,J[G],Y[G],this),G=U[G],Q++};d0.prototype.keys=function(){var $=0,Z=this.size,Q=this.head,X=this.K,G=this.forward;return new QX(function(){if($>=Z)return{done:!0};var Y=X[Q];if($++,$<Z)Q=G[Q];return{done:!1,value:Y}})};d0.prototype.values=function(){var $=0,Z=this.size,Q=this.head,X=this.V,G=this.forward;return new QX(function(){if($>=Z)return{done:!0};var Y=X[Q];if($++,$<Z)Q=G[Q];return{done:!1,value:Y}})};d0.prototype.entries=function(){var $=0,Z=this.size,Q=this.head,X=this.K,G=this.V,Y=this.forward;return new QX(function(){if($>=Z)return{done:!0};var J=X[Q],U=G[Q];if($++,$<Z)Q=Y[Q];return{done:!1,value:[J,U]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),Q;while(Q=Z.next(),!Q.done)$.set(Q.value[0],Q.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,Q,X){if(arguments.length<2){if(X=z8.guessLength($),typeof X!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)X=Z,Z=null,Q=null;var G=new d0(Z,Q,X);return F8($,function(Y,J){G.set(J,Y)}),G};pY.exports=d0});var YX=i((uY,GX)=>{(function($,Z){function Q(L,H){if(!L)throw Error(H||"Assertion failed")}function X(L,H){L.super_=H;var O=function(){};O.prototype=H.prototype,L.prototype=new O,L.prototype.constructor=L}function G(L,H,O){if(G.isBN(L))return L;if(this.negative=0,this.words=null,this.length=0,this.red=null,L!==null){if(H==="le"||H==="be")O=H,H=10;this._init(L||0,H||10,O||"be")}}if(typeof $==="object")$.exports=G;else Z.BN=G;G.BN=G,G.wordSize=26;var Y;try{if(typeof window<"u"&&typeof window.Buffer<"u")Y=window.Buffer;else Y=I$("buffer").Buffer}catch(L){}G.isBN=function(H){if(H instanceof G)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===G.wordSize&&Array.isArray(H.words)},G.max=function(H,O){if(H.cmp(O)>0)return H;return O},G.min=function(H,O){if(H.cmp(O)<0)return H;return O},G.prototype._init=function(H,O,F){if(typeof H==="number")return this._initNumber(H,O,F);if(typeof H==="object")return this._initArray(H,O,F);if(O==="hex")O=16;Q(O===(O|0)&&O>=2&&O<=36),H=H.toString().replace(/\s+/g,"");var K=0;if(H[0]==="-")K++,this.negative=1;if(K<H.length){if(O===16)this._parseHex(H,K,F);else if(this._parseBase(H,O,K),F==="le")this._initArray(this.toArray(),O,F)}},G.prototype._initNumber=function(H,O,F){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 Q(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(F!=="le")return;this._initArray(this.toArray(),O,F)},G.prototype._initArray=function(H,O,F){if(Q(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 K=0;K<this.length;K++)this.words[K]=0;var j,B,P=0;if(F==="be"){for(K=H.length-1,j=0;K>=0;K-=3)if(B=H[K]|H[K-1]<<8|H[K-2]<<16,this.words[j]|=B<<P&67108863,this.words[j+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,j++}else if(F==="le"){for(K=0,j=0;K<H.length;K+=3)if(B=H[K]|H[K+1]<<8|H[K+2]<<16,this.words[j]|=B<<P&67108863,this.words[j+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,j++}return this.strip()};function J(L,H){var O=L.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(L,H,O){var F=J(L,O);if(O-1>=H)F|=J(L,O-1)<<4;return F}G.prototype._parseHex=function(H,O,F){this.length=Math.ceil((H.length-O)/6),this.words=Array(this.length);for(var K=0;K<this.length;K++)this.words[K]=0;var j=0,B=0,P;if(F==="be")for(K=H.length-1;K>=O;K-=2)if(P=U(H,O,K)<<j,this.words[B]|=P&67108863,j>=18)j-=18,B+=1,this.words[B]|=P>>>26;else j+=8;else{var z=H.length-O;for(K=z%2===0?O+1:O;K<H.length;K+=2)if(P=U(H,O,K)<<j,this.words[B]|=P&67108863,j>=18)j-=18,B+=1,this.words[B]|=P>>>26;else j+=8}this.strip()};function V(L,H,O,F){var K=0,j=Math.min(L.length,O);for(var B=H;B<j;B++){var P=L.charCodeAt(B)-48;if(K*=F,P>=49)K+=P-49+10;else if(P>=17)K+=P-17+10;else K+=P}return K}G.prototype._parseBase=function(H,O,F){this.words=[0],this.length=1;for(var K=0,j=1;j<=67108863;j*=O)K++;K--,j=j/O|0;var B=H.length-F,P=B%K,z=Math.min(B,B-P)+F,W=0;for(var I=F;I<z;I+=K)if(W=V(H,I,I+K,O),this.imuln(j),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W);if(P!==0){var x=1;W=V(H,I,H.length,O);for(I=0;I<P;I++)x*=O;if(this.imuln(x),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W)}this.strip()},G.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},G.prototype.clone=function(){var H=new G(null);return this.copy(H),H},G.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},G.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},G.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},G.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var A=["","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"],M=[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(G.prototype.toString=function(H,O){H=H||10,O=O|0||1;var F;if(H===16||H==="hex"){F="";var K=0,j=0;for(var B=0;B<this.length;B++){var P=this.words[B],z=((P<<K|j)&16777215).toString(16);if(j=P>>>24-K&16777215,K+=2,K>=26)K-=26,B--;if(j!==0||B!==this.length-1)F=A[6-z.length]+z+F;else F=z+F}if(j!==0)F=j.toString(16)+F;while(F.length%O!==0)F="0"+F;if(this.negative!==0)F="-"+F;return F}if(H===(H|0)&&H>=2&&H<=36){var W=M[H],I=_[H];F="";var x=this.clone();x.negative=0;while(!x.isZero()){var g=x.modn(I).toString(H);if(x=x.idivn(I),!x.isZero())F=A[W-g.length]+g+F;else F=g+F}if(this.isZero())F="0"+F;while(F.length%O!==0)F="0"+F;if(this.negative!==0)F="-"+F;return F}Q(!1,"Base should be between 2 and 36")},G.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)Q(!1,"Number can only safely store up to 53 bits");return this.negative!==0?-H:H},G.prototype.toJSON=function(){return this.toString(16)},G.prototype.toBuffer=function(H,O){return Q(typeof Y<"u"),this.toArrayLike(Y,H,O)},G.prototype.toArray=function(H,O){return this.toArrayLike(Array,H,O)},G.prototype.toArrayLike=function(H,O,F){var K=this.byteLength(),j=F||Math.max(1,K);Q(K<=j,"byte array longer than desired length"),Q(j>0,"Requested array length <= 0"),this.strip();var B=O==="le",P=new H(j),z,W,I=this.clone();if(!B){for(W=0;W<j-K;W++)P[W]=0;for(W=0;!I.isZero();W++)z=I.andln(255),I.iushrn(8),P[j-W-1]=z}else{for(W=0;!I.isZero();W++)z=I.andln(255),I.iushrn(8),P[W]=z;for(;W<j;W++)P[W]=0}return P},Math.clz32)G.prototype._countBits=function(H){return 32-Math.clz32(H)};else G.prototype._countBits=function(H){var O=H,F=0;if(O>=4096)F+=13,O>>>=13;if(O>=64)F+=7,O>>>=7;if(O>=8)F+=4,O>>>=4;if(O>=2)F+=2,O>>>=2;return F+O};G.prototype._zeroBits=function(H){if(H===0)return 26;var O=H,F=0;if((O&8191)===0)F+=13,O>>>=13;if((O&127)===0)F+=7,O>>>=7;if((O&15)===0)F+=4,O>>>=4;if((O&3)===0)F+=2,O>>>=2;if((O&1)===0)F++;return F},G.prototype.bitLength=function(){var H=this.words[this.length-1],O=this._countBits(H);return(this.length-1)*26+O};function R(L){var H=Array(L.bitLength());for(var O=0;O<H.length;O++){var F=O/26|0,K=O%26;H[O]=(L.words[F]&1<<K)>>>K}return H}G.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var O=0;O<this.length;O++){var F=this._zeroBits(this.words[O]);if(H+=F,F!==26)break}return H},G.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},G.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},G.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},G.prototype.isNeg=function(){return this.negative!==0},G.prototype.neg=function(){return this.clone().ineg()},G.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},G.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()},G.prototype.ior=function(H){return Q((this.negative|H.negative)===0),this.iuor(H)},G.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},G.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},G.prototype.iuand=function(H){var O;if(this.length>H.length)O=H;else O=this;for(var F=0;F<O.length;F++)this.words[F]=this.words[F]&H.words[F];return this.length=O.length,this.strip()},G.prototype.iand=function(H){return Q((this.negative|H.negative)===0),this.iuand(H)},G.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},G.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},G.prototype.iuxor=function(H){var O,F;if(this.length>H.length)O=this,F=H;else O=H,F=this;for(var K=0;K<F.length;K++)this.words[K]=O.words[K]^F.words[K];if(this!==O)for(;K<O.length;K++)this.words[K]=O.words[K];return this.length=O.length,this.strip()},G.prototype.ixor=function(H){return Q((this.negative|H.negative)===0),this.iuxor(H)},G.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},G.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},G.prototype.inotn=function(H){Q(typeof H==="number"&&H>=0);var O=Math.ceil(H/26)|0,F=H%26;if(this._expand(O),F>0)O--;for(var K=0;K<O;K++)this.words[K]=~this.words[K]&67108863;if(F>0)this.words[K]=~this.words[K]&67108863>>26-F;return this.strip()},G.prototype.notn=function(H){return this.clone().inotn(H)},G.prototype.setn=function(H,O){Q(typeof H==="number"&&H>=0);var F=H/26|0,K=H%26;if(this._expand(F+1),O)this.words[F]=this.words[F]|1<<K;else this.words[F]=this.words[F]&~(1<<K);return this.strip()},G.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 F,K;if(this.length>H.length)F=this,K=H;else F=H,K=this;var j=0;for(var B=0;B<K.length;B++)O=(F.words[B]|0)+(K.words[B]|0)+j,this.words[B]=O&67108863,j=O>>>26;for(;j!==0&&B<F.length;B++)O=(F.words[B]|0)+j,this.words[B]=O&67108863,j=O>>>26;if(this.length=F.length,j!==0)this.words[this.length]=j,this.length++;else if(F!==this)for(;B<F.length;B++)this.words[B]=F.words[B];return this},G.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)},G.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 F=this.cmp(H);if(F===0)return this.negative=0,this.length=1,this.words[0]=0,this;var K,j;if(F>0)K=this,j=H;else K=H,j=this;var B=0;for(var P=0;P<j.length;P++)O=(K.words[P]|0)-(j.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;for(;B!==0&&P<K.length;P++)O=(K.words[P]|0)+B,B=O>>26,this.words[P]=O&67108863;if(B===0&&P<K.length&&K!==this)for(;P<K.length;P++)this.words[P]=K.words[P];if(this.length=Math.max(this.length,P),K!==this)this.negative=1;return this.strip()},G.prototype.sub=function(H){return this.clone().isub(H)};function C(L,H,O){O.negative=H.negative^L.negative;var F=L.length+H.length|0;O.length=F,F=F-1|0;var K=L.words[0]|0,j=H.words[0]|0,B=K*j,P=B&67108863,z=B/67108864|0;O.words[0]=P;for(var W=1;W<F;W++){var I=z>>>26,x=z&67108863,g=Math.min(W,H.length-1);for(var h=Math.max(0,W-L.length+1);h<=g;h++){var d=W-h|0;K=L.words[d]|0,j=H.words[h]|0,B=K*j+x,I+=B/67108864|0,x=B&67108863}O.words[W]=x|0,z=I|0}if(z!==0)O.words[W]=z|0;else O.length--;return O.strip()}var S=function(H,O,F){var K=H.words,j=O.words,B=F.words,P=0,z,W,I,x=K[0]|0,g=x&8191,h=x>>>13,d=K[1]|0,t=d&8191,Z0=d>>>13,R$=K[2]|0,Q0=R$&8191,Y0=R$>>>13,NX=K[3]|0,W0=NX&8191,U0=NX>>>13,DX=K[4]|0,V0=DX&8191,O0=DX>>>13,kX=K[5]|0,_0=kX&8191,A0=kX>>>13,vX=K[6]|0,M0=vX&8191,F0=vX>>>13,xX=K[7]|0,K0=xX&8191,z0=xX>>>13,fX=K[8]|0,R0=fX&8191,I0=fX>>>13,gX=K[9]|0,q0=gX&8191,j0=gX>>>13,yX=j[0]|0,L0=yX&8191,B0=yX>>>13,hX=j[1]|0,P0=hX&8191,C0=hX>>>13,bX=j[2]|0,S0=bX&8191,w0=bX>>>13,cX=j[3]|0,E0=cX&8191,T0=cX>>>13,pX=j[4]|0,N0=pX&8191,D0=pX>>>13,uX=j[5]|0,k0=uX&8191,v0=uX>>>13,mX=j[6]|0,x0=mX&8191,f0=mX>>>13,dX=j[7]|0,g0=dX&8191,y0=dX>>>13,nX=j[8]|0,h0=nX&8191,b0=nX>>>13,sX=j[9]|0,c0=sX&8191,p0=sX>>>13;F.negative=H.negative^O.negative,F.length=19,z=Math.imul(g,L0),W=Math.imul(g,B0),W=W+Math.imul(h,L0)|0,I=Math.imul(h,B0);var iZ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(iZ>>>26)|0,iZ&=67108863,z=Math.imul(t,L0),W=Math.imul(t,B0),W=W+Math.imul(Z0,L0)|0,I=Math.imul(Z0,B0),z=z+Math.imul(g,P0)|0,W=W+Math.imul(g,C0)|0,W=W+Math.imul(h,P0)|0,I=I+Math.imul(h,C0)|0;var tZ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(tZ>>>26)|0,tZ&=67108863,z=Math.imul(Q0,L0),W=Math.imul(Q0,B0),W=W+Math.imul(Y0,L0)|0,I=Math.imul(Y0,B0),z=z+Math.imul(t,P0)|0,W=W+Math.imul(t,C0)|0,W=W+Math.imul(Z0,P0)|0,I=I+Math.imul(Z0,C0)|0,z=z+Math.imul(g,S0)|0,W=W+Math.imul(g,w0)|0,W=W+Math.imul(h,S0)|0,I=I+Math.imul(h,w0)|0;var aZ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(aZ>>>26)|0,aZ&=67108863,z=Math.imul(W0,L0),W=Math.imul(W0,B0),W=W+Math.imul(U0,L0)|0,I=Math.imul(U0,B0),z=z+Math.imul(Q0,P0)|0,W=W+Math.imul(Q0,C0)|0,W=W+Math.imul(Y0,P0)|0,I=I+Math.imul(Y0,C0)|0,z=z+Math.imul(t,S0)|0,W=W+Math.imul(t,w0)|0,W=W+Math.imul(Z0,S0)|0,I=I+Math.imul(Z0,w0)|0,z=z+Math.imul(g,E0)|0,W=W+Math.imul(g,T0)|0,W=W+Math.imul(h,E0)|0,I=I+Math.imul(h,T0)|0;var eZ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(eZ>>>26)|0,eZ&=67108863,z=Math.imul(V0,L0),W=Math.imul(V0,B0),W=W+Math.imul(O0,L0)|0,I=Math.imul(O0,B0),z=z+Math.imul(W0,P0)|0,W=W+Math.imul(W0,C0)|0,W=W+Math.imul(U0,P0)|0,I=I+Math.imul(U0,C0)|0,z=z+Math.imul(Q0,S0)|0,W=W+Math.imul(Q0,w0)|0,W=W+Math.imul(Y0,S0)|0,I=I+Math.imul(Y0,w0)|0,z=z+Math.imul(t,E0)|0,W=W+Math.imul(t,T0)|0,W=W+Math.imul(Z0,E0)|0,I=I+Math.imul(Z0,T0)|0,z=z+Math.imul(g,N0)|0,W=W+Math.imul(g,D0)|0,W=W+Math.imul(h,N0)|0,I=I+Math.imul(h,D0)|0;var $Q=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+($Q>>>26)|0,$Q&=67108863,z=Math.imul(_0,L0),W=Math.imul(_0,B0),W=W+Math.imul(A0,L0)|0,I=Math.imul(A0,B0),z=z+Math.imul(V0,P0)|0,W=W+Math.imul(V0,C0)|0,W=W+Math.imul(O0,P0)|0,I=I+Math.imul(O0,C0)|0,z=z+Math.imul(W0,S0)|0,W=W+Math.imul(W0,w0)|0,W=W+Math.imul(U0,S0)|0,I=I+Math.imul(U0,w0)|0,z=z+Math.imul(Q0,E0)|0,W=W+Math.imul(Q0,T0)|0,W=W+Math.imul(Y0,E0)|0,I=I+Math.imul(Y0,T0)|0,z=z+Math.imul(t,N0)|0,W=W+Math.imul(t,D0)|0,W=W+Math.imul(Z0,N0)|0,I=I+Math.imul(Z0,D0)|0,z=z+Math.imul(g,k0)|0,W=W+Math.imul(g,v0)|0,W=W+Math.imul(h,k0)|0,I=I+Math.imul(h,v0)|0;var ZQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(ZQ>>>26)|0,ZQ&=67108863,z=Math.imul(M0,L0),W=Math.imul(M0,B0),W=W+Math.imul(F0,L0)|0,I=Math.imul(F0,B0),z=z+Math.imul(_0,P0)|0,W=W+Math.imul(_0,C0)|0,W=W+Math.imul(A0,P0)|0,I=I+Math.imul(A0,C0)|0,z=z+Math.imul(V0,S0)|0,W=W+Math.imul(V0,w0)|0,W=W+Math.imul(O0,S0)|0,I=I+Math.imul(O0,w0)|0,z=z+Math.imul(W0,E0)|0,W=W+Math.imul(W0,T0)|0,W=W+Math.imul(U0,E0)|0,I=I+Math.imul(U0,T0)|0,z=z+Math.imul(Q0,N0)|0,W=W+Math.imul(Q0,D0)|0,W=W+Math.imul(Y0,N0)|0,I=I+Math.imul(Y0,D0)|0,z=z+Math.imul(t,k0)|0,W=W+Math.imul(t,v0)|0,W=W+Math.imul(Z0,k0)|0,I=I+Math.imul(Z0,v0)|0,z=z+Math.imul(g,x0)|0,W=W+Math.imul(g,f0)|0,W=W+Math.imul(h,x0)|0,I=I+Math.imul(h,f0)|0;var QQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(QQ>>>26)|0,QQ&=67108863,z=Math.imul(K0,L0),W=Math.imul(K0,B0),W=W+Math.imul(z0,L0)|0,I=Math.imul(z0,B0),z=z+Math.imul(M0,P0)|0,W=W+Math.imul(M0,C0)|0,W=W+Math.imul(F0,P0)|0,I=I+Math.imul(F0,C0)|0,z=z+Math.imul(_0,S0)|0,W=W+Math.imul(_0,w0)|0,W=W+Math.imul(A0,S0)|0,I=I+Math.imul(A0,w0)|0,z=z+Math.imul(V0,E0)|0,W=W+Math.imul(V0,T0)|0,W=W+Math.imul(O0,E0)|0,I=I+Math.imul(O0,T0)|0,z=z+Math.imul(W0,N0)|0,W=W+Math.imul(W0,D0)|0,W=W+Math.imul(U0,N0)|0,I=I+Math.imul(U0,D0)|0,z=z+Math.imul(Q0,k0)|0,W=W+Math.imul(Q0,v0)|0,W=W+Math.imul(Y0,k0)|0,I=I+Math.imul(Y0,v0)|0,z=z+Math.imul(t,x0)|0,W=W+Math.imul(t,f0)|0,W=W+Math.imul(Z0,x0)|0,I=I+Math.imul(Z0,f0)|0,z=z+Math.imul(g,g0)|0,W=W+Math.imul(g,y0)|0,W=W+Math.imul(h,g0)|0,I=I+Math.imul(h,y0)|0;var XQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(XQ>>>26)|0,XQ&=67108863,z=Math.imul(R0,L0),W=Math.imul(R0,B0),W=W+Math.imul(I0,L0)|0,I=Math.imul(I0,B0),z=z+Math.imul(K0,P0)|0,W=W+Math.imul(K0,C0)|0,W=W+Math.imul(z0,P0)|0,I=I+Math.imul(z0,C0)|0,z=z+Math.imul(M0,S0)|0,W=W+Math.imul(M0,w0)|0,W=W+Math.imul(F0,S0)|0,I=I+Math.imul(F0,w0)|0,z=z+Math.imul(_0,E0)|0,W=W+Math.imul(_0,T0)|0,W=W+Math.imul(A0,E0)|0,I=I+Math.imul(A0,T0)|0,z=z+Math.imul(V0,N0)|0,W=W+Math.imul(V0,D0)|0,W=W+Math.imul(O0,N0)|0,I=I+Math.imul(O0,D0)|0,z=z+Math.imul(W0,k0)|0,W=W+Math.imul(W0,v0)|0,W=W+Math.imul(U0,k0)|0,I=I+Math.imul(U0,v0)|0,z=z+Math.imul(Q0,x0)|0,W=W+Math.imul(Q0,f0)|0,W=W+Math.imul(Y0,x0)|0,I=I+Math.imul(Y0,f0)|0,z=z+Math.imul(t,g0)|0,W=W+Math.imul(t,y0)|0,W=W+Math.imul(Z0,g0)|0,I=I+Math.imul(Z0,y0)|0,z=z+Math.imul(g,h0)|0,W=W+Math.imul(g,b0)|0,W=W+Math.imul(h,h0)|0,I=I+Math.imul(h,b0)|0;var GQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(GQ>>>26)|0,GQ&=67108863,z=Math.imul(q0,L0),W=Math.imul(q0,B0),W=W+Math.imul(j0,L0)|0,I=Math.imul(j0,B0),z=z+Math.imul(R0,P0)|0,W=W+Math.imul(R0,C0)|0,W=W+Math.imul(I0,P0)|0,I=I+Math.imul(I0,C0)|0,z=z+Math.imul(K0,S0)|0,W=W+Math.imul(K0,w0)|0,W=W+Math.imul(z0,S0)|0,I=I+Math.imul(z0,w0)|0,z=z+Math.imul(M0,E0)|0,W=W+Math.imul(M0,T0)|0,W=W+Math.imul(F0,E0)|0,I=I+Math.imul(F0,T0)|0,z=z+Math.imul(_0,N0)|0,W=W+Math.imul(_0,D0)|0,W=W+Math.imul(A0,N0)|0,I=I+Math.imul(A0,D0)|0,z=z+Math.imul(V0,k0)|0,W=W+Math.imul(V0,v0)|0,W=W+Math.imul(O0,k0)|0,I=I+Math.imul(O0,v0)|0,z=z+Math.imul(W0,x0)|0,W=W+Math.imul(W0,f0)|0,W=W+Math.imul(U0,x0)|0,I=I+Math.imul(U0,f0)|0,z=z+Math.imul(Q0,g0)|0,W=W+Math.imul(Q0,y0)|0,W=W+Math.imul(Y0,g0)|0,I=I+Math.imul(Y0,y0)|0,z=z+Math.imul(t,h0)|0,W=W+Math.imul(t,b0)|0,W=W+Math.imul(Z0,h0)|0,I=I+Math.imul(Z0,b0)|0,z=z+Math.imul(g,c0)|0,W=W+Math.imul(g,p0)|0,W=W+Math.imul(h,c0)|0,I=I+Math.imul(h,p0)|0;var YQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(YQ>>>26)|0,YQ&=67108863,z=Math.imul(q0,P0),W=Math.imul(q0,C0),W=W+Math.imul(j0,P0)|0,I=Math.imul(j0,C0),z=z+Math.imul(R0,S0)|0,W=W+Math.imul(R0,w0)|0,W=W+Math.imul(I0,S0)|0,I=I+Math.imul(I0,w0)|0,z=z+Math.imul(K0,E0)|0,W=W+Math.imul(K0,T0)|0,W=W+Math.imul(z0,E0)|0,I=I+Math.imul(z0,T0)|0,z=z+Math.imul(M0,N0)|0,W=W+Math.imul(M0,D0)|0,W=W+Math.imul(F0,N0)|0,I=I+Math.imul(F0,D0)|0,z=z+Math.imul(_0,k0)|0,W=W+Math.imul(_0,v0)|0,W=W+Math.imul(A0,k0)|0,I=I+Math.imul(A0,v0)|0,z=z+Math.imul(V0,x0)|0,W=W+Math.imul(V0,f0)|0,W=W+Math.imul(O0,x0)|0,I=I+Math.imul(O0,f0)|0,z=z+Math.imul(W0,g0)|0,W=W+Math.imul(W0,y0)|0,W=W+Math.imul(U0,g0)|0,I=I+Math.imul(U0,y0)|0,z=z+Math.imul(Q0,h0)|0,W=W+Math.imul(Q0,b0)|0,W=W+Math.imul(Y0,h0)|0,I=I+Math.imul(Y0,b0)|0,z=z+Math.imul(t,c0)|0,W=W+Math.imul(t,p0)|0,W=W+Math.imul(Z0,c0)|0,I=I+Math.imul(Z0,p0)|0;var JQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(JQ>>>26)|0,JQ&=67108863,z=Math.imul(q0,S0),W=Math.imul(q0,w0),W=W+Math.imul(j0,S0)|0,I=Math.imul(j0,w0),z=z+Math.imul(R0,E0)|0,W=W+Math.imul(R0,T0)|0,W=W+Math.imul(I0,E0)|0,I=I+Math.imul(I0,T0)|0,z=z+Math.imul(K0,N0)|0,W=W+Math.imul(K0,D0)|0,W=W+Math.imul(z0,N0)|0,I=I+Math.imul(z0,D0)|0,z=z+Math.imul(M0,k0)|0,W=W+Math.imul(M0,v0)|0,W=W+Math.imul(F0,k0)|0,I=I+Math.imul(F0,v0)|0,z=z+Math.imul(_0,x0)|0,W=W+Math.imul(_0,f0)|0,W=W+Math.imul(A0,x0)|0,I=I+Math.imul(A0,f0)|0,z=z+Math.imul(V0,g0)|0,W=W+Math.imul(V0,y0)|0,W=W+Math.imul(O0,g0)|0,I=I+Math.imul(O0,y0)|0,z=z+Math.imul(W0,h0)|0,W=W+Math.imul(W0,b0)|0,W=W+Math.imul(U0,h0)|0,I=I+Math.imul(U0,b0)|0,z=z+Math.imul(Q0,c0)|0,W=W+Math.imul(Q0,p0)|0,W=W+Math.imul(Y0,c0)|0,I=I+Math.imul(Y0,p0)|0;var HQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(HQ>>>26)|0,HQ&=67108863,z=Math.imul(q0,E0),W=Math.imul(q0,T0),W=W+Math.imul(j0,E0)|0,I=Math.imul(j0,T0),z=z+Math.imul(R0,N0)|0,W=W+Math.imul(R0,D0)|0,W=W+Math.imul(I0,N0)|0,I=I+Math.imul(I0,D0)|0,z=z+Math.imul(K0,k0)|0,W=W+Math.imul(K0,v0)|0,W=W+Math.imul(z0,k0)|0,I=I+Math.imul(z0,v0)|0,z=z+Math.imul(M0,x0)|0,W=W+Math.imul(M0,f0)|0,W=W+Math.imul(F0,x0)|0,I=I+Math.imul(F0,f0)|0,z=z+Math.imul(_0,g0)|0,W=W+Math.imul(_0,y0)|0,W=W+Math.imul(A0,g0)|0,I=I+Math.imul(A0,y0)|0,z=z+Math.imul(V0,h0)|0,W=W+Math.imul(V0,b0)|0,W=W+Math.imul(O0,h0)|0,I=I+Math.imul(O0,b0)|0,z=z+Math.imul(W0,c0)|0,W=W+Math.imul(W0,p0)|0,W=W+Math.imul(U0,c0)|0,I=I+Math.imul(U0,p0)|0;var WQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(WQ>>>26)|0,WQ&=67108863,z=Math.imul(q0,N0),W=Math.imul(q0,D0),W=W+Math.imul(j0,N0)|0,I=Math.imul(j0,D0),z=z+Math.imul(R0,k0)|0,W=W+Math.imul(R0,v0)|0,W=W+Math.imul(I0,k0)|0,I=I+Math.imul(I0,v0)|0,z=z+Math.imul(K0,x0)|0,W=W+Math.imul(K0,f0)|0,W=W+Math.imul(z0,x0)|0,I=I+Math.imul(z0,f0)|0,z=z+Math.imul(M0,g0)|0,W=W+Math.imul(M0,y0)|0,W=W+Math.imul(F0,g0)|0,I=I+Math.imul(F0,y0)|0,z=z+Math.imul(_0,h0)|0,W=W+Math.imul(_0,b0)|0,W=W+Math.imul(A0,h0)|0,I=I+Math.imul(A0,b0)|0,z=z+Math.imul(V0,c0)|0,W=W+Math.imul(V0,p0)|0,W=W+Math.imul(O0,c0)|0,I=I+Math.imul(O0,p0)|0;var UQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(UQ>>>26)|0,UQ&=67108863,z=Math.imul(q0,k0),W=Math.imul(q0,v0),W=W+Math.imul(j0,k0)|0,I=Math.imul(j0,v0),z=z+Math.imul(R0,x0)|0,W=W+Math.imul(R0,f0)|0,W=W+Math.imul(I0,x0)|0,I=I+Math.imul(I0,f0)|0,z=z+Math.imul(K0,g0)|0,W=W+Math.imul(K0,y0)|0,W=W+Math.imul(z0,g0)|0,I=I+Math.imul(z0,y0)|0,z=z+Math.imul(M0,h0)|0,W=W+Math.imul(M0,b0)|0,W=W+Math.imul(F0,h0)|0,I=I+Math.imul(F0,b0)|0,z=z+Math.imul(_0,c0)|0,W=W+Math.imul(_0,p0)|0,W=W+Math.imul(A0,c0)|0,I=I+Math.imul(A0,p0)|0;var VQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(VQ>>>26)|0,VQ&=67108863,z=Math.imul(q0,x0),W=Math.imul(q0,f0),W=W+Math.imul(j0,x0)|0,I=Math.imul(j0,f0),z=z+Math.imul(R0,g0)|0,W=W+Math.imul(R0,y0)|0,W=W+Math.imul(I0,g0)|0,I=I+Math.imul(I0,y0)|0,z=z+Math.imul(K0,h0)|0,W=W+Math.imul(K0,b0)|0,W=W+Math.imul(z0,h0)|0,I=I+Math.imul(z0,b0)|0,z=z+Math.imul(M0,c0)|0,W=W+Math.imul(M0,p0)|0,W=W+Math.imul(F0,c0)|0,I=I+Math.imul(F0,p0)|0;var OQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(OQ>>>26)|0,OQ&=67108863,z=Math.imul(q0,g0),W=Math.imul(q0,y0),W=W+Math.imul(j0,g0)|0,I=Math.imul(j0,y0),z=z+Math.imul(R0,h0)|0,W=W+Math.imul(R0,b0)|0,W=W+Math.imul(I0,h0)|0,I=I+Math.imul(I0,b0)|0,z=z+Math.imul(K0,c0)|0,W=W+Math.imul(K0,p0)|0,W=W+Math.imul(z0,c0)|0,I=I+Math.imul(z0,p0)|0;var _Q=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(_Q>>>26)|0,_Q&=67108863,z=Math.imul(q0,h0),W=Math.imul(q0,b0),W=W+Math.imul(j0,h0)|0,I=Math.imul(j0,b0),z=z+Math.imul(R0,c0)|0,W=W+Math.imul(R0,p0)|0,W=W+Math.imul(I0,c0)|0,I=I+Math.imul(I0,p0)|0;var AQ=(P+z|0)+((W&8191)<<13)|0;P=(I+(W>>>13)|0)+(AQ>>>26)|0,AQ&=67108863,z=Math.imul(q0,c0),W=Math.imul(q0,p0),W=W+Math.imul(j0,c0)|0,I=Math.imul(j0,p0);var MQ=(P+z|0)+((W&8191)<<13)|0;if(P=(I+(W>>>13)|0)+(MQ>>>26)|0,MQ&=67108863,B[0]=iZ,B[1]=tZ,B[2]=aZ,B[3]=eZ,B[4]=$Q,B[5]=ZQ,B[6]=QQ,B[7]=XQ,B[8]=GQ,B[9]=YQ,B[10]=JQ,B[11]=HQ,B[12]=WQ,B[13]=UQ,B[14]=VQ,B[15]=OQ,B[16]=_Q,B[17]=AQ,B[18]=MQ,P!==0)B[19]=P,F.length++;return F};if(!Math.imul)S=C;function w(L,H,O){O.negative=H.negative^L.negative,O.length=L.length+H.length;var F=0,K=0;for(var j=0;j<O.length-1;j++){var B=K;K=0;var P=F&67108863,z=Math.min(j,H.length-1);for(var W=Math.max(0,j-L.length+1);W<=z;W++){var I=j-W,x=L.words[I]|0,g=H.words[W]|0,h=x*g,d=h&67108863;B=B+(h/67108864|0)|0,d=d+P|0,P=d&67108863,B=B+(d>>>26)|0,K+=B>>>26,B&=67108863}O.words[j]=P,F=B,B=K}if(F!==0)O.words[j]=F;else O.length--;return O.strip()}function N(L,H,O){var F=new T;return F.mulp(L,H,O)}G.prototype.mulTo=function(H,O){var F,K=this.length+H.length;if(this.length===10&&H.length===10)F=S(this,H,O);else if(K<63)F=C(this,H,O);else if(K<1024)F=w(this,H,O);else F=N(this,H,O);return F};function T(L,H){this.x=L,this.y=H}T.prototype.makeRBT=function(H){var O=Array(H),F=G.prototype._countBits(H)-1;for(var K=0;K<H;K++)O[K]=this.revBin(K,F,H);return O},T.prototype.revBin=function(H,O,F){if(H===0||H===F-1)return H;var K=0;for(var j=0;j<O;j++)K|=(H&1)<<O-j-1,H>>=1;return K},T.prototype.permute=function(H,O,F,K,j,B){for(var P=0;P<B;P++)K[P]=O[H[P]],j[P]=F[H[P]]},T.prototype.transform=function(H,O,F,K,j,B){this.permute(B,H,O,F,K,j);for(var P=1;P<j;P<<=1){var z=P<<1,W=Math.cos(2*Math.PI/z),I=Math.sin(2*Math.PI/z);for(var x=0;x<j;x+=z){var g=W,h=I;for(var d=0;d<P;d++){var t=F[x+d],Z0=K[x+d],R$=F[x+d+P],Q0=K[x+d+P],Y0=g*R$-h*Q0;if(Q0=g*Q0+h*R$,R$=Y0,F[x+d]=t+R$,K[x+d]=Z0+Q0,F[x+d+P]=t-R$,K[x+d+P]=Z0-Q0,d!==z)Y0=W*g-I*h,h=W*h+I*g,g=Y0}}}},T.prototype.guessLen13b=function(H,O){var F=Math.max(O,H)|1,K=F&1,j=0;for(F=F/2|0;F;F=F>>>1)j++;return 1<<j+1+K},T.prototype.conjugate=function(H,O,F){if(F<=1)return;for(var K=0;K<F/2;K++){var j=H[K];H[K]=H[F-K-1],H[F-K-1]=j,j=O[K],O[K]=-O[F-K-1],O[F-K-1]=-j}},T.prototype.normalize13b=function(H,O){var F=0;for(var K=0;K<O/2;K++){var j=Math.round(H[2*K+1]/O)*8192+Math.round(H[2*K]/O)+F;if(H[K]=j&67108863,j<67108864)F=0;else F=j/67108864|0}return H},T.prototype.convert13b=function(H,O,F,K){var j=0;for(var B=0;B<O;B++)j=j+(H[B]|0),F[2*B]=j&8191,j=j>>>13,F[2*B+1]=j&8191,j=j>>>13;for(B=2*O;B<K;++B)F[B]=0;Q(j===0),Q((j&-8192)===0)},T.prototype.stub=function(H){var O=Array(H);for(var F=0;F<H;F++)O[F]=0;return O},T.prototype.mulp=function(H,O,F){var K=2*this.guessLen13b(H.length,O.length),j=this.makeRBT(K),B=this.stub(K),P=Array(K),z=Array(K),W=Array(K),I=Array(K),x=Array(K),g=Array(K),h=F.words;h.length=K,this.convert13b(H.words,H.length,P,K),this.convert13b(O.words,O.length,I,K),this.transform(P,B,z,W,K,j),this.transform(I,B,x,g,K,j);for(var d=0;d<K;d++){var t=z[d]*x[d]-W[d]*g[d];W[d]=z[d]*g[d]+W[d]*x[d],z[d]=t}return this.conjugate(z,W,K),this.transform(z,W,h,B,K,j),this.conjugate(h,B,K),this.normalize13b(h,K),F.negative=H.negative^O.negative,F.length=H.length+O.length,F.strip()},G.prototype.mul=function(H){var O=new G(null);return O.words=Array(this.length+H.length),this.mulTo(H,O)},G.prototype.mulf=function(H){var O=new G(null);return O.words=Array(this.length+H.length),N(this,H,O)},G.prototype.imul=function(H){return this.clone().mulTo(H,this)},G.prototype.imuln=function(H){Q(typeof H==="number"),Q(H<67108864);var O=0;for(var F=0;F<this.length;F++){var K=(this.words[F]|0)*H,j=(K&67108863)+(O&67108863);O>>=26,O+=K/67108864|0,O+=j>>>26,this.words[F]=j&67108863}if(O!==0)this.words[F]=O,this.length++;return this.length=H===0?1:this.length,this},G.prototype.muln=function(H){return this.clone().imuln(H)},G.prototype.sqr=function(){return this.mul(this)},G.prototype.isqr=function(){return this.imul(this.clone())},G.prototype.pow=function(H){var O=R(H);if(O.length===0)return new G(1);var F=this;for(var K=0;K<O.length;K++,F=F.sqr())if(O[K]!==0)break;if(++K<O.length)for(var j=F.sqr();K<O.length;K++,j=j.sqr()){if(O[K]===0)continue;F=F.mul(j)}return F},G.prototype.iushln=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,F=(H-O)/26,K=67108863>>>26-O<<26-O,j;if(O!==0){var B=0;for(j=0;j<this.length;j++){var P=this.words[j]&K,z=(this.words[j]|0)-P<<O;this.words[j]=z|B,B=P>>>26-O}if(B)this.words[j]=B,this.length++}if(F!==0){for(j=this.length-1;j>=0;j--)this.words[j+F]=this.words[j];for(j=0;j<F;j++)this.words[j]=0;this.length+=F}return this.strip()},G.prototype.ishln=function(H){return Q(this.negative===0),this.iushln(H)},G.prototype.iushrn=function(H,O,F){Q(typeof H==="number"&&H>=0);var K;if(O)K=(O-O%26)/26;else K=0;var j=H%26,B=Math.min((H-j)/26,this.length),P=67108863^67108863>>>j<<j,z=F;if(K-=B,K=Math.max(0,K),z){for(var W=0;W<B;W++)z.words[W]=this.words[W];z.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 I=0;for(W=this.length-1;W>=0&&(I!==0||W>=K);W--){var x=this.words[W]|0;this.words[W]=I<<26-j|x>>>j,I=x&P}if(z&&I!==0)z.words[z.length++]=I;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},G.prototype.ishrn=function(H,O,F){return Q(this.negative===0),this.iushrn(H,O,F)},G.prototype.shln=function(H){return this.clone().ishln(H)},G.prototype.ushln=function(H){return this.clone().iushln(H)},G.prototype.shrn=function(H){return this.clone().ishrn(H)},G.prototype.ushrn=function(H){return this.clone().iushrn(H)},G.prototype.testn=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,F=(H-O)/26,K=1<<O;if(this.length<=F)return!1;var j=this.words[F];return!!(j&K)},G.prototype.imaskn=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,F=(H-O)/26;if(Q(this.negative===0,"imaskn works only with positive numbers"),this.length<=F)return this;if(O!==0)F++;if(this.length=Math.min(F,this.length),O!==0){var K=67108863^67108863>>>O<<O;this.words[this.length-1]&=K}return this.strip()},G.prototype.maskn=function(H){return this.clone().imaskn(H)},G.prototype.iaddn=function(H){if(Q(typeof H==="number"),Q(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)},G.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},G.prototype.isubn=function(H){if(Q(typeof H==="number"),Q(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()},G.prototype.addn=function(H){return this.clone().iaddn(H)},G.prototype.subn=function(H){return this.clone().isubn(H)},G.prototype.iabs=function(){return this.negative=0,this},G.prototype.abs=function(){return this.clone().iabs()},G.prototype._ishlnsubmul=function(H,O,F){var K=H.length+F,j;this._expand(K);var B,P=0;for(j=0;j<H.length;j++){B=(this.words[j+F]|0)+P;var z=(H.words[j]|0)*O;B-=z&67108863,P=(B>>26)-(z/67108864|0),this.words[j+F]=B&67108863}for(;j<this.length-F;j++)B=(this.words[j+F]|0)+P,P=B>>26,this.words[j+F]=B&67108863;if(P===0)return this.strip();Q(P===-1),P=0;for(j=0;j<this.length;j++)B=-(this.words[j]|0)+P,P=B>>26,this.words[j]=B&67108863;return this.negative=1,this.strip()},G.prototype._wordDiv=function(H,O){var F=this.length-H.length,K=this.clone(),j=H,B=j.words[j.length-1]|0,P=this._countBits(B);if(F=26-P,F!==0)j=j.ushln(F),K.iushln(F),B=j.words[j.length-1]|0;var z=K.length-j.length,W;if(O!=="mod"){W=new G(null),W.length=z+1,W.words=Array(W.length);for(var I=0;I<W.length;I++)W.words[I]=0}var x=K.clone()._ishlnsubmul(j,1,z);if(x.negative===0){if(K=x,W)W.words[z]=1}for(var g=z-1;g>=0;g--){var h=(K.words[j.length+g]|0)*67108864+(K.words[j.length+g-1]|0);h=Math.min(h/B|0,67108863),K._ishlnsubmul(j,h,g);while(K.negative!==0)if(h--,K.negative=0,K._ishlnsubmul(j,1,g),!K.isZero())K.negative^=1;if(W)W.words[g]=h}if(W)W.strip();if(K.strip(),O!=="div"&&F!==0)K.iushrn(F);return{div:W||null,mod:K}},G.prototype.divmod=function(H,O,F){if(Q(!H.isZero()),this.isZero())return{div:new G(0),mod:new G(0)};var K,j,B;if(this.negative!==0&&H.negative===0){if(B=this.neg().divmod(H,O),O!=="mod")K=B.div.neg();if(O!=="div"){if(j=B.mod.neg(),F&&j.negative!==0)j.iadd(H)}return{div:K,mod:j}}if(this.negative===0&&H.negative!==0){if(B=this.divmod(H.neg(),O),O!=="mod")K=B.div.neg();return{div:K,mod:B.mod}}if((this.negative&H.negative)!==0){if(B=this.neg().divmod(H.neg(),O),O!=="div"){if(j=B.mod.neg(),F&&j.negative!==0)j.isub(H)}return{div:B.div,mod:j}}if(H.length>this.length||this.cmp(H)<0)return{div:new G(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 G(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new G(this.modn(H.words[0]))}}return this._wordDiv(H,O)},G.prototype.div=function(H){return this.divmod(H,"div",!1).div},G.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},G.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},G.prototype.divRound=function(H){var O=this.divmod(H);if(O.mod.isZero())return O.div;var F=O.div.negative!==0?O.mod.isub(H):O.mod,K=H.ushrn(1),j=H.andln(1),B=F.cmp(K);if(B<0||j===1&&B===0)return O.div;return O.div.negative!==0?O.div.isubn(1):O.div.iaddn(1)},G.prototype.modn=function(H){Q(H<=67108863);var O=67108864%H,F=0;for(var K=this.length-1;K>=0;K--)F=(O*F+(this.words[K]|0))%H;return F},G.prototype.idivn=function(H){Q(H<=67108863);var O=0;for(var F=this.length-1;F>=0;F--){var K=(this.words[F]|0)+O*67108864;this.words[F]=K/H|0,O=K%H}return this.strip()},G.prototype.divn=function(H){return this.clone().idivn(H)},G.prototype.egcd=function(H){Q(H.negative===0),Q(!H.isZero());var O=this,F=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var K=new G(1),j=new G(0),B=new G(0),P=new G(1),z=0;while(O.isEven()&&F.isEven())O.iushrn(1),F.iushrn(1),++z;var W=F.clone(),I=O.clone();while(!O.isZero()){for(var x=0,g=1;(O.words[0]&g)===0&&x<26;++x,g<<=1);if(x>0){O.iushrn(x);while(x-- >0){if(K.isOdd()||j.isOdd())K.iadd(W),j.isub(I);K.iushrn(1),j.iushrn(1)}}for(var h=0,d=1;(F.words[0]&d)===0&&h<26;++h,d<<=1);if(h>0){F.iushrn(h);while(h-- >0){if(B.isOdd()||P.isOdd())B.iadd(W),P.isub(I);B.iushrn(1),P.iushrn(1)}}if(O.cmp(F)>=0)O.isub(F),K.isub(B),j.isub(P);else F.isub(O),B.isub(K),P.isub(j)}return{a:B,b:P,gcd:F.iushln(z)}},G.prototype._invmp=function(H){Q(H.negative===0),Q(!H.isZero());var O=this,F=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var K=new G(1),j=new G(0),B=F.clone();while(O.cmpn(1)>0&&F.cmpn(1)>0){for(var P=0,z=1;(O.words[0]&z)===0&&P<26;++P,z<<=1);if(P>0){O.iushrn(P);while(P-- >0){if(K.isOdd())K.iadd(B);K.iushrn(1)}}for(var W=0,I=1;(F.words[0]&I)===0&&W<26;++W,I<<=1);if(W>0){F.iushrn(W);while(W-- >0){if(j.isOdd())j.iadd(B);j.iushrn(1)}}if(O.cmp(F)>=0)O.isub(F),K.isub(j);else F.isub(O),j.isub(K)}var x;if(O.cmpn(1)===0)x=K;else x=j;if(x.cmpn(0)<0)x.iadd(H);return x},G.prototype.gcd=function(H){if(this.isZero())return H.abs();if(H.isZero())return this.abs();var O=this.clone(),F=H.clone();O.negative=0,F.negative=0;for(var K=0;O.isEven()&&F.isEven();K++)O.iushrn(1),F.iushrn(1);do{while(O.isEven())O.iushrn(1);while(F.isEven())F.iushrn(1);var j=O.cmp(F);if(j<0){var B=O;O=F,F=B}else if(j===0||F.cmpn(1)===0)break;O.isub(F)}while(!0);return F.iushln(K)},G.prototype.invm=function(H){return this.egcd(H).a.umod(H)},G.prototype.isEven=function(){return(this.words[0]&1)===0},G.prototype.isOdd=function(){return(this.words[0]&1)===1},G.prototype.andln=function(H){return this.words[0]&H},G.prototype.bincn=function(H){Q(typeof H==="number");var O=H%26,F=(H-O)/26,K=1<<O;if(this.length<=F)return this._expand(F+1),this.words[F]|=K,this;var j=K;for(var B=F;j!==0&&B<this.length;B++){var P=this.words[B]|0;P+=j,j=P>>>26,P&=67108863,this.words[B]=P}if(j!==0)this.words[B]=j,this.length++;return this},G.prototype.isZero=function(){return this.length===1&&this.words[0]===0},G.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 F;if(this.length>1)F=1;else{if(O)H=-H;Q(H<=67108863,"Number is too big");var K=this.words[0]|0;F=K===H?0:K<H?-1:1}if(this.negative!==0)return-F|0;return F},G.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},G.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var O=0;for(var F=this.length-1;F>=0;F--){var K=this.words[F]|0,j=H.words[F]|0;if(K===j)continue;if(K<j)O=-1;else if(K>j)O=1;break}return O},G.prototype.gtn=function(H){return this.cmpn(H)===1},G.prototype.gt=function(H){return this.cmp(H)===1},G.prototype.gten=function(H){return this.cmpn(H)>=0},G.prototype.gte=function(H){return this.cmp(H)>=0},G.prototype.ltn=function(H){return this.cmpn(H)===-1},G.prototype.lt=function(H){return this.cmp(H)===-1},G.prototype.lten=function(H){return this.cmpn(H)<=0},G.prototype.lte=function(H){return this.cmp(H)<=0},G.prototype.eqn=function(H){return this.cmpn(H)===0},G.prototype.eq=function(H){return this.cmp(H)===0},G.red=function(H){return new r(H)},G.prototype.toRed=function(H){return Q(!this.red,"Already a number in reduction context"),Q(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},G.prototype.fromRed=function(){return Q(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},G.prototype._forceRed=function(H){return this.red=H,this},G.prototype.forceRed=function(H){return Q(!this.red,"Already a number in reduction context"),this._forceRed(H)},G.prototype.redAdd=function(H){return Q(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},G.prototype.redIAdd=function(H){return Q(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},G.prototype.redSub=function(H){return Q(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},G.prototype.redISub=function(H){return Q(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},G.prototype.redShl=function(H){return Q(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},G.prototype.redMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},G.prototype.redIMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},G.prototype.redSqr=function(){return Q(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},G.prototype.redISqr=function(){return Q(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},G.prototype.redSqrt=function(){return Q(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},G.prototype.redInvm=function(){return Q(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},G.prototype.redNeg=function(){return Q(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},G.prototype.redPow=function(H){return Q(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var E={k256:null,p224:null,p192:null,p25519:null};function v(L,H){this.name=L,this.p=new G(H,16),this.n=this.p.bitLength(),this.k=new G(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}v.prototype._tmp=function(){var H=new G(null);return H.words=Array(Math.ceil(this.n/13)),H},v.prototype.ireduce=function(H){var O=H,F;do this.split(O,this.tmp),O=this.imulK(O),O=O.iadd(this.tmp),F=O.bitLength();while(F>this.n);var K=F<this.n?-1:O.ucmp(this.p);if(K===0)O.words[0]=0,O.length=1;else if(K>0)O.isub(this.p);else if(O.strip!==void 0)O.strip();else O._strip();return O},v.prototype.split=function(H,O){H.iushrn(this.n,0,O)},v.prototype.imulK=function(H){return H.imul(this.k)};function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}X(b,v),b.prototype.split=function(H,O){var F=4194303,K=Math.min(H.length,9);for(var j=0;j<K;j++)O.words[j]=H.words[j];if(O.length=K,H.length<=9){H.words[0]=0,H.length=1;return}var B=H.words[9];O.words[O.length++]=B&F;for(j=10;j<H.length;j++){var P=H.words[j]|0;H.words[j-10]=(P&F)<<4|B>>>22,B=P}if(B>>>=22,H.words[j-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 F=0;F<H.length;F++){var K=H.words[F]|0;O+=K*977,H.words[F]=O&67108863,O=K*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 f(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}X(f,v);function m(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}X(m,v);function a(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}X(a,v),a.prototype.imulK=function(H){var O=0;for(var F=0;F<H.length;F++){var K=(H.words[F]|0)*19+O,j=K&67108863;K>>>=26,H.words[F]=j,O=K}if(O!==0)H.words[H.length++]=O;return H},G._prime=function(H){if(E[H])return E[H];var O;if(H==="k256")O=new b;else if(H==="p224")O=new f;else if(H==="p192")O=new m;else if(H==="p25519")O=new a;else throw Error("Unknown prime "+H);return E[H]=O,O};function r(L){if(typeof L==="string"){var H=G._prime(L);this.m=H.p,this.prime=H}else Q(L.gtn(1),"modulus must be greater than 1"),this.m=L,this.prime=null}r.prototype._verify1=function(H){Q(H.negative===0,"red works only with positives"),Q(H.red,"red works only with red numbers")},r.prototype._verify2=function(H,O){Q((H.negative|O.negative)===0,"red works only with positives"),Q(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 F=H.add(O);if(F.cmp(this.m)>=0)F.isub(this.m);return F._forceRed(this)},r.prototype.iadd=function(H,O){this._verify2(H,O);var F=H.iadd(O);if(F.cmp(this.m)>=0)F.isub(this.m);return F},r.prototype.sub=function(H,O){this._verify2(H,O);var F=H.sub(O);if(F.cmpn(0)<0)F.iadd(this.m);return F._forceRed(this)},r.prototype.isub=function(H,O){this._verify2(H,O);var F=H.isub(O);if(F.cmpn(0)<0)F.iadd(this.m);return F},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(Q(O%2===1),O===3){var F=this.m.add(new G(1)).iushrn(2);return this.pow(H,F)}var K=this.m.subn(1),j=0;while(!K.isZero()&&K.andln(1)===0)j++,K.iushrn(1);Q(!K.isZero());var B=new G(1).toRed(this),P=B.redNeg(),z=this.m.subn(1).iushrn(1),W=this.m.bitLength();W=new G(2*W*W).toRed(this);while(this.pow(W,z).cmp(P)!==0)W.redIAdd(P);var I=this.pow(W,K),x=this.pow(H,K.addn(1).iushrn(1)),g=this.pow(H,K),h=j;while(g.cmp(B)!==0){var d=g;for(var t=0;d.cmp(B)!==0;t++)d=d.redSqr();Q(t<h);var Z0=this.pow(I,new G(1).iushln(h-t-1));x=x.redMul(Z0),I=Z0.redSqr(),g=g.redMul(I),h=t}return x},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 G(1).toRed(this);if(O.cmpn(1)===0)return H.clone();var F=4,K=Array(1<<F);K[0]=new G(1).toRed(this),K[1]=H;for(var j=2;j<K.length;j++)K[j]=this.mul(K[j-1],H);var B=K[0],P=0,z=0,W=O.bitLength()%26;if(W===0)W=26;for(j=O.length-1;j>=0;j--){var I=O.words[j];for(var x=W-1;x>=0;x--){var g=I>>x&1;if(B!==K[0])B=this.sqr(B);if(g===0&&P===0){z=0;continue}if(P<<=1,P|=g,z++,z!==F&&(j!==0||x!==0))continue;B=this.mul(B,K[P]),z=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},G.mont=function(H){return new J0(H)};function J0(L){if(r.call(this,L),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new G(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)}X(J0,r),J0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},J0.prototype.convertFrom=function(H){var O=this.imod(H.mul(this.rinv));return O.red=null,O},J0.prototype.imul=function(H,O){if(H.isZero()||O.isZero())return H.words[0]=0,H.length=1,H;var F=H.imul(O),K=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=F.isub(K).iushrn(this.shift),B=j;if(j.cmp(this.m)>=0)B=j.isub(this.m);else if(j.cmpn(0)<0)B=j.iadd(this.m);return B._forceRed(this)},J0.prototype.mul=function(H,O){if(H.isZero()||O.isZero())return new G(0)._forceRed(this);var F=H.mul(O),K=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=F.isub(K).iushrn(this.shift),B=j;if(j.cmp(this.m)>=0)B=j.isub(this.m);else if(j.cmpn(0)<0)B=j.iadd(this.m);return B._forceRed(this)},J0.prototype.invm=function(H){var O=this.imod(H._invmp(this.m).mul(this.r2));return O._forceRed(this)}})(typeof GX>"u"||GX,uY)});var mY=i((c7,JX)=>{if(typeof Object.create==="function")JX.exports=function(Z,Q){if(Q)Z.super_=Q,Z.prototype=Object.create(Q.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else JX.exports=function(Z,Q){if(Q){Z.super_=Q;var X=function(){};X.prototype=Q.prototype,Z.prototype=new X,Z.prototype.constructor=Z}}});var E$=i((p7,HX)=>{try{if(xZ=I$("util"),typeof xZ.inherits!=="function")throw"";HX.exports=xZ.inherits}catch($){HX.exports=mY()}var xZ});var gZ=i((u7,dY)=>{var fZ=I$("buffer"),r$=fZ.Buffer,e0={},$$;for($$ in fZ){if(!fZ.hasOwnProperty($$))continue;if($$==="SlowBuffer"||$$==="Buffer")continue;e0[$$]=fZ[$$]}var i$=e0.Buffer={};for($$ in r$){if(!r$.hasOwnProperty($$))continue;if($$==="allocUnsafe"||$$==="allocUnsafeSlow")continue;i$[$$]=r$[$$]}e0.Buffer.prototype=r$.prototype;if(!i$.from||i$.from===Uint8Array.from)i$.from=function($,Z,Q){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 r$($,Z,Q)};if(!i$.alloc)i$.alloc=function($,Z,Q){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 X=r$($);if(!Z||Z.length===0)X.fill(0);else if(typeof Q==="string")X.fill(Z,Q);else X.fill(Z);return X};if(!e0.kStringMaxLength)try{e0.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch($){}if(!e0.constants){if(e0.constants={MAX_LENGTH:e0.kMaxLength},e0.kStringMaxLength)e0.constants.MAX_STRING_LENGTH=e0.kStringMaxLength}dY.exports=e0});var yZ=i((I8)=>{var R8=E$();function Z$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}I8.Reporter=Z$;Z$.prototype.isError=function(Z){return Z instanceof t$};Z$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};Z$.prototype.restore=function(Z){let Q=this._reporterState;Q.obj=Z.obj,Q.path=Q.path.slice(0,Z.pathLen)};Z$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};Z$.prototype.exitKey=function(Z){let Q=this._reporterState;Q.path=Q.path.slice(0,Z-1)};Z$.prototype.leaveKey=function(Z,Q,X){let G=this._reporterState;if(this.exitKey(Z),G.obj!==null)G.obj[Q]=X};Z$.prototype.path=function(){return this._reporterState.path.join("/")};Z$.prototype.enterObject=function(){let Z=this._reporterState,Q=Z.obj;return Z.obj={},Q};Z$.prototype.leaveObject=function(Z){let Q=this._reporterState,X=Q.obj;return Q.obj=Z,X};Z$.prototype.error=function(Z){let Q,X=this._reporterState,G=Z instanceof t$;if(G)Q=Z;else Q=new t$(X.path.map(function(Y){return"["+JSON.stringify(Y)+"]"}).join(""),Z.message||Z,Z.stack);if(!X.options.partial)throw Q;if(!G)X.errors.push(Q);return Q};Z$.prototype.wrapResult=function(Z){let Q=this._reporterState;if(!Q.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:Q.errors}};function t$($,Z){this.path=$,this.rethrow(Z)}R8(t$,Error);t$.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,t$);if(!this.stack)try{throw Error(this.message)}catch(Q){this.stack=Q.stack}return this}});var $Z=i((L8)=>{var j8=E$(),hZ=yZ().Reporter,a$=gZ().Buffer;function Q$($,Z){if(hZ.call(this,Z),!a$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}j8(Q$,hZ);L8.DecoderBuffer=Q$;Q$.isDecoderBuffer=function(Z){if(Z instanceof Q$)return!0;return typeof Z==="object"&&a$.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"};Q$.prototype.save=function(){return{offset:this.offset,reporter:hZ.prototype.save.call(this)}};Q$.prototype.restore=function(Z){let Q=new Q$(this.base);return Q.offset=Z.offset,Q.length=this.offset,this.offset=Z.offset,hZ.prototype.restore.call(this,Z.reporter),Q};Q$.prototype.isEmpty=function(){return this.offset===this.length};Q$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};Q$.prototype.skip=function(Z,Q){if(!(this.offset+Z<=this.length))return this.error(Q||"DecoderBuffer overrun");let X=new Q$(this.base);return X._reporterState=this._reporterState,X.offset=this.offset,X.length=this.offset+Z,this.offset+=Z,X};Q$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function e$($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(Q){if(!e$.isEncoderBuffer(Q))Q=new e$(Q,Z);return this.length+=Q.length,Q},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=a$.byteLength($);else if(a$.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}L8.EncoderBuffer=e$;e$.isEncoderBuffer=function(Z){if(Z instanceof e$)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};e$.prototype.join=function(Z,Q){if(!Z)Z=a$.alloc(this.length);if(!Q)Q=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(X){X.join(Z,Q),Q+=X.length});else{if(typeof this.value==="number")Z[Q]=this.value;else if(typeof this.value==="string")Z.write(this.value,Q);else if(a$.isBuffer(this.value))this.value.copy(Z,Q);Q+=this.length}return Z}});var oY=i((n7,sY)=>{sY.exports=nY;function nY($,Z){if(!$)throw Error(Z||"Assertion failed")}nY.equal=function(Z,Q,X){if(Z!=Q)throw Error(X||"Assertion failed: "+Z+" != "+Q)}});var bZ=i((s7,rY)=>{var C8=yZ().Reporter,S8=$Z().EncoderBuffer,w8=$Z().DecoderBuffer,l0=oY(),lY=["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"],E8=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(lY),T8=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function e($,Z,Q){let X={};if(this._baseState=X,X.name=Q,X.enc=$,X.parent=Z||null,X.children=null,X.tag=null,X.args=null,X.reverseArgs=null,X.choice=null,X.optional=!1,X.any=!1,X.obj=!1,X.use=null,X.useDecoder=null,X.key=null,X.default=null,X.explicit=null,X.implicit=null,X.contains=null,!X.parent)X.children=[],this._wrap()}rY.exports=e;var N8=["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,Q={};N8.forEach(function(G){Q[G]=Z[G]});let X=new this.constructor(Q.parent);return X._baseState=Q,X};e.prototype._wrap=function(){let Z=this._baseState;E8.forEach(function(Q){this[Q]=function(){let G=new this.constructor(this);return Z.children.push(G),G[Q].apply(G,arguments)}},this)};e.prototype._init=function(Z){let Q=this._baseState;l0(Q.parent===null),Z.call(this),Q.children=Q.children.filter(function(X){return X._baseState.parent===this},this),l0.equal(Q.children.length,1,"Root node can have only one child")};e.prototype._useArgs=function(Z){let Q=this._baseState,X=Z.filter(function(G){return G instanceof this.constructor},this);if(Z=Z.filter(function(G){return!(G instanceof this.constructor)},this),X.length!==0)l0(Q.children===null),Q.children=X,X.forEach(function(G){G._baseState.parent=this},this);if(Z.length!==0)l0(Q.args===null),Q.args=Z,Q.reverseArgs=Z.map(function(G){if(typeof G!=="object"||G.constructor!==Object)return G;let Y={};return Object.keys(G).forEach(function(J){if(J==(J|0))J|=0;let U=G[J];Y[U]=J}),Y})};T8.forEach(function($){e.prototype[$]=function(){let Q=this._baseState;throw Error($+" not implemented for encoding: "+Q.enc)}});lY.forEach(function($){e.prototype[$]=function(){let Q=this._baseState,X=Array.prototype.slice.call(arguments);return l0(Q.tag===null),Q.tag=$,this._useArgs(X),this}});e.prototype.use=function(Z){l0(Z);let Q=this._baseState;return l0(Q.use===null),Q.use=Z,this};e.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};e.prototype.def=function(Z){let Q=this._baseState;return l0(Q.default===null),Q.default=Z,Q.optional=!0,this};e.prototype.explicit=function(Z){let Q=this._baseState;return l0(Q.explicit===null&&Q.implicit===null),Q.explicit=Z,this};e.prototype.implicit=function(Z){let Q=this._baseState;return l0(Q.explicit===null&&Q.implicit===null),Q.implicit=Z,this};e.prototype.obj=function(){let Z=this._baseState,Q=Array.prototype.slice.call(arguments);if(Z.obj=!0,Q.length!==0)this._useArgs(Q);return this};e.prototype.key=function(Z){let Q=this._baseState;return l0(Q.key===null),Q.key=Z,this};e.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};e.prototype.choice=function(Z){let Q=this._baseState;return l0(Q.choice===null),Q.choice=Z,this._useArgs(Object.keys(Z).map(function(X){return Z[X]})),this};e.prototype.contains=function(Z){let Q=this._baseState;return l0(Q.use===null),Q.contains=Z,this};e.prototype._decode=function(Z,Q){let X=this._baseState;if(X.parent===null)return Z.wrapResult(X.children[0]._decode(Z,Q));let G=X.default,Y=!0,J=null;if(X.key!==null)J=Z.enterKey(X.key);if(X.optional){let V=null;if(X.explicit!==null)V=X.explicit;else if(X.implicit!==null)V=X.implicit;else if(X.tag!==null)V=X.tag;if(V===null&&!X.any){let A=Z.save();try{if(X.choice===null)this._decodeGeneric(X.tag,Z,Q);else this._decodeChoice(Z,Q);Y=!0}catch(M){Y=!1}Z.restore(A)}else if(Y=this._peekTag(Z,V,X.any),Z.isError(Y))return Y}let U;if(X.obj&&Y)U=Z.enterObject();if(Y){if(X.explicit!==null){let A=this._decodeTag(Z,X.explicit);if(Z.isError(A))return A;Z=A}let V=Z.offset;if(X.use===null&&X.choice===null){let A;if(X.any)A=Z.save();let M=this._decodeTag(Z,X.implicit!==null?X.implicit:X.tag,X.any);if(Z.isError(M))return M;if(X.any)G=Z.raw(A);else Z=M}if(Q&&Q.track&&X.tag!==null)Q.track(Z.path(),V,Z.length,"tagged");if(Q&&Q.track&&X.tag!==null)Q.track(Z.path(),Z.offset,Z.length,"content");if(X.any);else if(X.choice===null)G=this._decodeGeneric(X.tag,Z,Q);else G=this._decodeChoice(Z,Q);if(Z.isError(G))return G;if(!X.any&&X.choice===null&&X.children!==null)X.children.forEach(function(M){M._decode(Z,Q)});if(X.contains&&(X.tag==="octstr"||X.tag==="bitstr")){let A=new w8(G);G=this._getUse(X.contains,Z._reporterState.obj)._decode(A,Q)}}if(X.obj&&Y)G=Z.leaveObject(U);if(X.key!==null&&(G!==null||Y===!0))Z.leaveKey(J,X.key,G);else if(J!==null)Z.exitKey(J);return G};e.prototype._decodeGeneric=function(Z,Q,X){let G=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(Q,Z,G.args[0],X);else if(/str$/.test(Z))return this._decodeStr(Q,Z,X);else if(Z==="objid"&&G.args)return this._decodeObjid(Q,G.args[0],G.args[1],X);else if(Z==="objid")return this._decodeObjid(Q,null,null,X);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(Q,Z,X);else if(Z==="null_")return this._decodeNull(Q,X);else if(Z==="bool")return this._decodeBool(Q,X);else if(Z==="objDesc")return this._decodeStr(Q,Z,X);else if(Z==="int"||Z==="enum")return this._decodeInt(Q,G.args&&G.args[0],X);if(G.use!==null)return this._getUse(G.use,Q._reporterState.obj)._decode(Q,X);else return Q.error("unknown tag: "+Z)};e.prototype._getUse=function(Z,Q){let X=this._baseState;if(X.useDecoder=this._use(Z,Q),l0(X.useDecoder._baseState.parent===null),X.useDecoder=X.useDecoder._baseState.children[0],X.implicit!==X.useDecoder._baseState.implicit)X.useDecoder=X.useDecoder.clone(),X.useDecoder._baseState.implicit=X.implicit;return X.useDecoder};e.prototype._decodeChoice=function(Z,Q){let X=this._baseState,G=null,Y=!1;if(Object.keys(X.choice).some(function(J){let U=Z.save(),V=X.choice[J];try{let A=V._decode(Z,Q);if(Z.isError(A))return!1;G={type:J,value:A},Y=!0}catch(A){return Z.restore(U),!1}return!0},this),!Y)return Z.error("Choice not matched");return G};e.prototype._createEncoderBuffer=function(Z){return new S8(Z,this.reporter)};e.prototype._encode=function(Z,Q,X){let G=this._baseState;if(G.default!==null&&G.default===Z)return;let Y=this._encodeValue(Z,Q,X);if(Y===void 0)return;if(this._skipDefault(Y,Q,X))return;return Y};e.prototype._encodeValue=function(Z,Q,X){let G=this._baseState;if(G.parent===null)return G.children[0]._encode(Z,Q||new C8);let Y=null;if(this.reporter=Q,G.optional&&Z===void 0)if(G.default!==null)Z=G.default;else return;let J=null,U=!1;if(G.any)Y=this._createEncoderBuffer(Z);else if(G.choice)Y=this._encodeChoice(Z,Q);else if(G.contains)J=this._getUse(G.contains,X)._encode(Z,Q),U=!0;else if(G.children)J=G.children.map(function(V){if(V._baseState.tag==="null_")return V._encode(null,Q,Z);if(V._baseState.key===null)return Q.error("Child should have a key");let A=Q.enterKey(V._baseState.key);if(typeof Z!=="object")return Q.error("Child expected, but input is not object");let M=V._encode(Z[V._baseState.key],Q,Z);return Q.leaveKey(A),M},this).filter(function(V){return V}),J=this._createEncoderBuffer(J);else if(G.tag==="seqof"||G.tag==="setof"){if(!(G.args&&G.args.length===1))return Q.error("Too many args for : "+G.tag);if(!Array.isArray(Z))return Q.error("seqof/setof, but data is not Array");let V=this.clone();V._baseState.implicit=null,J=this._createEncoderBuffer(Z.map(function(A){let M=this._baseState;return this._getUse(M.args[0],Z)._encode(A,Q)},V))}else if(G.use!==null)Y=this._getUse(G.use,X)._encode(Z,Q);else J=this._encodePrimitive(G.tag,Z),U=!0;if(!G.any&&G.choice===null){let V=G.implicit!==null?G.implicit:G.tag,A=G.implicit===null?"universal":"context";if(V===null){if(G.use===null)Q.error("Tag could be omitted only for .use()")}else if(G.use===null)Y=this._encodeComposite(V,U,A,J)}if(G.explicit!==null)Y=this._encodeComposite(G.explicit,!1,"context",Y);return Y};e.prototype._encodeChoice=function(Z,Q){let X=this._baseState,G=X.choice[Z.type];if(!G)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(X.choice)));return G._encode(Z.value,Q)};e.prototype._encodePrimitive=function(Z,Q){let X=this._baseState;if(/str$/.test(Z))return this._encodeStr(Q,Z);else if(Z==="objid"&&X.args)return this._encodeObjid(Q,X.reverseArgs[0],X.args[1]);else if(Z==="objid")return this._encodeObjid(Q,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(Q,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(Q,X.args&&X.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(Q);else if(Z==="objDesc")return this._encodeStr(Q,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 cZ=i((D8)=>{function iY($){let Z={};return Object.keys($).forEach(function(Q){if((Q|0)==Q)Q=Q|0;let X=$[Q];Z[X]=Q}),Z}D8.tagClass={0:"universal",1:"application",2:"context",3:"private"};D8.tagClassByName=iY(D8.tagClass);D8.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"};D8.tagByName=iY(D8.tag)});var UX=i((l7,ZJ)=>{var x8=E$(),K$=gZ().Buffer,eY=bZ(),WX=cZ();function $J($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}ZJ.exports=$J;$J.prototype.encode=function(Z,Q){return this.tree._encode(Z,Q).join()};function Y$($){eY.call(this,"der",$)}x8(Y$,eY);Y$.prototype._encodeComposite=function(Z,Q,X,G){let Y=f8(Z,Q,X,this.reporter);if(G.length<128){let V=K$.alloc(2);return V[0]=Y,V[1]=G.length,this._createEncoderBuffer([V,G])}let J=1;for(let V=G.length;V>=256;V>>=8)J++;let U=K$.alloc(2+J);U[0]=Y,U[1]=128|J;for(let V=1+J,A=G.length;A>0;V--,A>>=8)U[V]=A&255;return this._createEncoderBuffer([U,G])};Y$.prototype._encodeStr=function(Z,Q){if(Q==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(Q==="bmpstr"){let X=K$.alloc(Z.length*2);for(let G=0;G<Z.length;G++)X.writeUInt16BE(Z.charCodeAt(G),G*2);return this._createEncoderBuffer(X)}else if(Q==="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(Q==="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(Q))return this._createEncoderBuffer(Z);else if(Q==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+Q+" unsupported")};Y$.prototype._encodeObjid=function(Z,Q,X){if(typeof Z==="string"){if(!Q)return this.reporter.error("string objid given, but no values map found");if(!Q.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=Q[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(!X){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let G=0;for(let U=0;U<Z.length;U++){let V=Z[U];for(G++;V>=128;V>>=7)G++}let Y=K$.alloc(G),J=Y.length-1;for(let U=Z.length-1;U>=0;U--){let V=Z[U];Y[J--]=V&127;while((V>>=7)>0)Y[J--]=128|V&127}return this._createEncoderBuffer(Y)};function X$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,Q){let X,G=new Date(Z);if(Q==="gentime")X=[X$(G.getUTCFullYear()),X$(G.getUTCMonth()+1),X$(G.getUTCDate()),X$(G.getUTCHours()),X$(G.getUTCMinutes()),X$(G.getUTCSeconds()),"Z"].join("");else if(Q==="utctime")X=[X$(G.getUTCFullYear()%100),X$(G.getUTCMonth()+1),X$(G.getUTCDate()),X$(G.getUTCHours()),X$(G.getUTCMinutes()),X$(G.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+Q+" time is not supported yet");return this._encodeStr(X,"octstr")};Y$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Y$.prototype._encodeInt=function(Z,Q){if(typeof Z==="string"){if(!Q)return this.reporter.error("String int or enum given, but no values map");if(!Q.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=Q[Z]}if(typeof Z!=="number"&&!K$.isBuffer(Z)){let Y=Z.toArray();if(!Z.sign&&Y[0]&128)Y.unshift(0);Z=K$.from(Y)}if(K$.isBuffer(Z)){let Y=Z.length;if(Z.length===0)Y++;let J=K$.alloc(Y);if(Z.copy(J),Z.length===0)J[0]=0;return this._createEncoderBuffer(J)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let X=1;for(let Y=Z;Y>=256;Y>>=8)X++;let G=Array(X);for(let Y=G.length-1;Y>=0;Y--)G[Y]=Z&255,Z>>=8;if(G[0]&128)G.unshift(0);return this._createEncoderBuffer(K$.from(G))};Y$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Y$.prototype._use=function(Z,Q){if(typeof Z==="function")Z=Z(Q);return Z._getEncoder("der").tree};Y$.prototype._skipDefault=function(Z,Q,X){let G=this._baseState,Y;if(G.default===null)return!1;let J=Z.join();if(G.defaultBuffer===void 0)G.defaultBuffer=this._encodeValue(G.default,Q,X).join();if(J.length!==G.defaultBuffer.length)return!1;for(Y=0;Y<J.length;Y++)if(J[Y]!==G.defaultBuffer[Y])return!1;return!0};function f8($,Z,Q,X){let G;if($==="seqof")$="seq";else if($==="setof")$="set";if(WX.tagByName.hasOwnProperty($))G=WX.tagByName[$];else if(typeof $==="number"&&($|0)===$)G=$;else return X.error("Unknown tag: "+$);if(G>=31)return X.error("Multi-octet tag encoding unsupported");if(!Z)G|=32;return G|=WX.tagClassByName[Q||"universal"]<<6,G}});var XJ=i((r7,QJ)=>{var g8=E$(),VX=UX();function OX($){VX.call(this,$),this.enc="pem"}g8(OX,VX);QJ.exports=OX;OX.prototype.encode=function(Z,Q){let G=VX.prototype.encode.call(this,Z).toString("base64"),Y=["-----BEGIN "+Q.label+"-----"];for(let J=0;J<G.length;J+=64)Y.push(G.slice(J,J+64));return Y.push("-----END "+Q.label+"-----"),Y.join(`
|
|
9
|
-
`)}});var _X=i((YJ)=>{var GJ=YJ;GJ.der=UX();GJ.pem=XJ()});var MX=i((t7,OJ)=>{var y8=E$(),h8=YX(),JJ=$Z().DecoderBuffer,WJ=bZ(),HJ=cZ();function UJ($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}OJ.exports=UJ;UJ.prototype.decode=function(Z,Q){if(!JJ.isDecoderBuffer(Z))Z=new JJ(Z,Q);return this.tree._decode(Z,Q)};function i0($){WJ.call(this,"der",$)}y8(i0,WJ);i0.prototype._peekTag=function(Z,Q,X){if(Z.isEmpty())return!1;let G=Z.save(),Y=AX(Z,'Failed to peek tag: "'+Q+'"');if(Z.isError(Y))return Y;return Z.restore(G),Y.tag===Q||Y.tagStr===Q||Y.tagStr+"of"===Q||X};i0.prototype._decodeTag=function(Z,Q,X){let G=AX(Z,'Failed to decode tag of "'+Q+'"');if(Z.isError(G))return G;let Y=VJ(Z,G.primitive,'Failed to get length of "'+Q+'"');if(Z.isError(Y))return Y;if(!X&&G.tag!==Q&&G.tagStr!==Q&&G.tagStr+"of"!==Q)return Z.error('Failed to match tag: "'+Q+'"');if(G.primitive||Y!==null)return Z.skip(Y,'Failed to match body of: "'+Q+'"');let J=Z.save(),U=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(U))return U;return Y=Z.offset-J.offset,Z.restore(J),Z.skip(Y,'Failed to match body of: "'+Q+'"')};i0.prototype._skipUntilEnd=function(Z,Q){for(;;){let X=AX(Z,Q);if(Z.isError(X))return X;let G=VJ(Z,X.primitive,Q);if(Z.isError(G))return G;let Y;if(X.primitive||G!==null)Y=Z.skip(G);else Y=this._skipUntilEnd(Z,Q);if(Z.isError(Y))return Y;if(X.tagStr==="end")break}};i0.prototype._decodeList=function(Z,Q,X,G){let Y=[];while(!Z.isEmpty()){let J=this._peekTag(Z,"end");if(Z.isError(J))return J;let U=X.decode(Z,"der",G);if(Z.isError(U)&&J)break;Y.push(U)}return Y};i0.prototype._decodeStr=function(Z,Q){if(Q==="bitstr"){let X=Z.readUInt8();if(Z.isError(X))return X;return{unused:X,data:Z.raw()}}else if(Q==="bmpstr"){let X=Z.raw();if(X.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let G="";for(let Y=0;Y<X.length/2;Y++)G+=String.fromCharCode(X.readUInt16BE(Y*2));return G}else if(Q==="numstr"){let X=Z.raw().toString("ascii");if(!this._isNumstr(X))return Z.error("Decoding of string type: numstr unsupported characters");return X}else if(Q==="octstr")return Z.raw();else if(Q==="objDesc")return Z.raw();else if(Q==="printstr"){let X=Z.raw().toString("ascii");if(!this._isPrintstr(X))return Z.error("Decoding of string type: printstr unsupported characters");return X}else if(/str$/.test(Q))return Z.raw().toString();else return Z.error("Decoding of string type: "+Q+" unsupported")};i0.prototype._decodeObjid=function(Z,Q,X){let G,Y=[],J=0,U=0;while(!Z.isEmpty())if(U=Z.readUInt8(),J<<=7,J|=U&127,(U&128)===0)Y.push(J),J=0;if(U&128)Y.push(J);let V=Y[0]/40|0,A=Y[0]%40;if(X)G=Y;else G=[V,A].concat(Y.slice(1));if(Q){let M=Q[G.join(" ")];if(M===void 0)M=Q[G.join(".")];if(M!==void 0)G=M}return G};i0.prototype._decodeTime=function(Z,Q){let X=Z.raw().toString(),G,Y,J,U,V,A;if(Q==="gentime")G=X.slice(0,4)|0,Y=X.slice(4,6)|0,J=X.slice(6,8)|0,U=X.slice(8,10)|0,V=X.slice(10,12)|0,A=X.slice(12,14)|0;else if(Q==="utctime")if(G=X.slice(0,2)|0,Y=X.slice(2,4)|0,J=X.slice(4,6)|0,U=X.slice(6,8)|0,V=X.slice(8,10)|0,A=X.slice(10,12)|0,G<70)G=2000+G;else G=1900+G;else return Z.error("Decoding "+Q+" time is not supported yet");return Date.UTC(G,Y-1,J,U,V,A,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let Q=Z.readUInt8();if(Z.isError(Q))return Q;else return Q!==0};i0.prototype._decodeInt=function(Z,Q){let X=Z.raw(),G=new h8(X);if(Q)G=Q[G.toString(10)]||G;return G};i0.prototype._use=function(Z,Q){if(typeof Z==="function")Z=Z(Q);return Z._getDecoder("der").tree};function AX($,Z){let Q=$.readUInt8(Z);if($.isError(Q))return Q;let X=HJ.tagClass[Q>>6],G=(Q&32)===0;if((Q&31)===31){let J=Q;Q=0;while((J&128)===128){if(J=$.readUInt8(Z),$.isError(J))return J;Q<<=7,Q|=J&127}}else Q&=31;let Y=HJ.tag[Q];return{cls:X,primitive:G,tag:Q,tagStr:Y}}function VJ($,Z,Q){let X=$.readUInt8(Q);if($.isError(X))return X;if(!Z&&X===128)return null;if((X&128)===0)return X;let G=X&127;if(G>4)return $.error("length octect is too long");X=0;for(let Y=0;Y<G;Y++){X<<=8;let J=$.readUInt8(Q);if($.isError(J))return J;X|=J}return X}});var AJ=i((a7,_J)=>{var b8=E$(),c8=gZ().Buffer,FX=MX();function KX($){FX.call(this,$),this.enc="pem"}b8(KX,FX);_J.exports=KX;KX.prototype.decode=function(Z,Q){let X=Z.toString().split(/[\r\n]+/g),G=Q.label.toUpperCase(),Y=/^-----(BEGIN|END) ([^-]+)-----$/,J=-1,U=-1;for(let M=0;M<X.length;M++){let _=X[M].match(Y);if(_===null)continue;if(_[2]!==G)continue;if(J===-1){if(_[1]!=="BEGIN")break;J=M}else{if(_[1]!=="END")break;U=M;break}}if(J===-1||U===-1)throw Error("PEM section not found for: "+G);let V=X.slice(J+1,U).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let A=c8.from(V,"base64");return FX.prototype.decode.call(this,A,Q)}});var zX=i((FJ)=>{var MJ=FJ;MJ.der=MX();MJ.pem=AJ()});var zJ=i((KJ)=>{var p8=_X(),u8=zX(),m8=E$(),d8=KJ;d8.define=function(Z,Q){return new ZZ(Z,Q)};function ZZ($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}ZZ.prototype._createNamed=function(Z){let Q=this.name;function X(G){this._initNamed(G,Q)}return m8(X,Z),X.prototype._initNamed=function(Y,J){Z.call(this,Y,J)},new X(this)};ZZ.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(u8[Z]);return this.decoders[Z]};ZZ.prototype.decode=function(Z,Q,X){return this._getDecoder(Q).decode(Z,X)};ZZ.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(p8[Z]);return this.encoders[Z]};ZZ.prototype.encode=function(Z,Q,X){return this._getEncoder(Q).encode(Z,X)}});var IJ=i((RJ)=>{var pZ=RJ;pZ.Reporter=yZ().Reporter;pZ.DecoderBuffer=$Z().DecoderBuffer;pZ.EncoderBuffer=$Z().EncoderBuffer;pZ.Node=bZ()});var LJ=i((jJ)=>{var qJ=jJ;qJ._reverse=function(Z){let Q={};return Object.keys(Z).forEach(function(X){if((X|0)==X)X=X|0;let G=Z[X];Q[G]=X}),Q};qJ.der=cZ()});var PJ=i((BJ)=>{var QZ=BJ;QZ.bignum=YX();QZ.define=zJ().define;QZ.base=IJ();QZ.constants=LJ();QZ.decoders=zX();QZ.encoders=_X()});var wJ=i((RX,SJ)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var uZ=I$("buffer"),_$=uZ.Buffer;function CJ($,Z){for(var Q in $)Z[Q]=$[Q]}if(_$.from&&_$.alloc&&_$.allocUnsafe&&_$.allocUnsafeSlow)SJ.exports=uZ;else CJ(uZ,RX),RX.Buffer=x$;function x$($,Z,Q){return _$($,Z,Q)}x$.prototype=Object.create(_$.prototype);CJ(_$,x$);x$.from=function($,Z,Q){if(typeof $==="number")throw TypeError("Argument must not be a number");return _$($,Z,Q)};x$.alloc=function($,Z,Q){if(typeof $!=="number")throw TypeError("Argument must be a number");var X=_$($);if(Z!==void 0)if(typeof Q==="string")X.fill(Z,Q);else X.fill(Z);else X.fill(0);return X};x$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return _$($)};x$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return uZ.SlowBuffer($)}});var TJ=i((G3,EJ)=>{function IX($){var Z=($/8|0)+($%8===0?0:1);return Z}var n8={ES256:IX(256),ES384:IX(384),ES512:IX(521)};function s8($){var Z=n8[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}EJ.exports=s8});var gJ=i((Y3,fJ)=>{var mZ=wJ().Buffer,DJ=TJ(),dZ=128,kJ=0,o8=32,l8=16,r8=2,vJ=l8|o8|kJ<<6,nZ=r8|kJ<<6;function i8($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function xJ($){if(mZ.isBuffer($))return $;else if(typeof $==="string")return mZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function t8($,Z){$=xJ($);var Q=DJ(Z),X=Q+1,G=$.length,Y=0;if($[Y++]!==vJ)throw Error('Could not find expected "seq"');var J=$[Y++];if(J===(dZ|1))J=$[Y++];if(G-Y<J)throw Error('"seq" specified length of "'+J+'", only "'+(G-Y)+'" remaining');if($[Y++]!==nZ)throw Error('Could not find expected "int" for "r"');var U=$[Y++];if(G-Y-2<U)throw Error('"r" specified length of "'+U+'", only "'+(G-Y-2)+'" available');if(X<U)throw Error('"r" specified length of "'+U+'", max of "'+X+'" is acceptable');var V=Y;if(Y+=U,$[Y++]!==nZ)throw Error('Could not find expected "int" for "s"');var A=$[Y++];if(G-Y!==A)throw Error('"s" specified length of "'+A+'", expected "'+(G-Y)+'"');if(X<A)throw Error('"s" specified length of "'+A+'", max of "'+X+'" is acceptable');var M=Y;if(Y+=A,Y!==G)throw Error('Expected to consume entire buffer, but "'+(G-Y)+'" bytes remain');var _=Q-U,R=Q-A,C=mZ.allocUnsafe(_+U+R+A);for(Y=0;Y<_;++Y)C[Y]=0;$.copy(C,Y,V+Math.max(-_,0),V+U),Y=Q;for(var S=Y;Y<S+R;++Y)C[Y]=0;return $.copy(C,Y,M+Math.max(-R,0),M+A),C=C.toString("base64"),C=i8(C),C}function NJ($,Z,Q){var X=0;while(Z+X<Q&&$[Z+X]===0)++X;var G=$[Z+X]>=dZ;if(G)--X;return X}function a8($,Z){$=xJ($);var Q=DJ(Z),X=$.length;if(X!==Q*2)throw TypeError('"'+Z+'" signatures must be "'+Q*2+'" bytes, saw "'+X+'"');var G=NJ($,0,Q),Y=NJ($,Q,$.length),J=Q-G,U=Q-Y,V=2+J+1+1+U,A=V<dZ,M=mZ.allocUnsafe((A?2:3)+V),_=0;if(M[_++]=vJ,A)M[_++]=V;else M[_++]=dZ|1,M[_++]=V&255;if(M[_++]=nZ,M[_++]=J,G<0)M[_++]=0,_+=$.copy(M,_,0,Q);else _+=$.copy(M,_,G,Q);if(M[_++]=nZ,M[_++]=U,Y<0)M[_++]=0,$.copy(M,_,Q);else $.copy(M,_,Q+Y);return M}fJ.exports={derToJose:t8,joseToDer:a8}});var BX=i((J3,iJ)=>{var LX=PJ(),{createHmac:bJ,createVerify:e8,createSign:$6,timingSafeEqual:Z6,createPublicKey:Q6,constants:{RSA_PKCS1_PSS_PADDING:cJ,RSA_PSS_SALTLEN_DIGEST:pJ,RSA_PKCS1_PADDING:uJ,RSA_PSS_SALTLEN_MAX_SIGN:X6,RSA_PSS_SALTLEN_AUTO:G6},sign:yJ,verify:hJ}=I$("crypto"),{joseToDer:Y6,derToJose:J6}=gJ(),mJ=XX(),{TokenError:G0}=l$(),dJ=/[=+/]/g,H6={"=":"","+":"-","/":"_"},nJ=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,sJ=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,sZ=new mJ(1000),qX=new mJ(1000),oJ=["HS256","HS384","HS512"],W6=["ES256","ES384","ES512"],jX=["RS256","RS384","RS512","PS256","PS384","PS512"],U6=["EdDSA"],lJ={"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"]}},V6=LX.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),O6=LX.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),_6=LX.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 rJ($){return H6[$]}function OZ($,Z,Q,X){return $.set(Z,[Q,X]),Q||X}function A6($){if($.match(sJ)||$.includes("-----BEGIN CERTIFICATE-----"))throw new G0(G0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(nJ);if(!Z)return"HS256";let Q,X,G;switch(Z[1]){case"RSA":return"RS256";case"EC":Q=_6.decode($,"pem",{label:"EC PRIVATE KEY"}),G=Q.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(Q=V6.decode($,"pem",{label:"PRIVATE KEY"}),X=Q.algorithm.algorithm.join("."),X){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":G=Q.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new G0(G0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${X}.`)}}let Y=lJ[G];if(!Y)throw new G0(G0.codes.invalidKey,`Unsupported EC private key with curve ${G}.`);return`ES${Y.bits}`}function M6($){let Z=$.match(sJ);if($.match(nJ))throw new G0(G0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return jX;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return oJ;if($.includes("-----BEGIN CERTIFICATE-----"))$=Q6($).export({type:"spki",format:"pem"});let Q=O6.decode($,"pem",{label:"PUBLIC KEY"}),X=Q.algorithm.algorithm.join("."),G;switch(X){case"1.2.840.113549.1.1.1":return jX;case"1.2.840.10045.2.1":G=Q.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new G0(G0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${X}.`)}let Y=lJ[G];if(!Y)throw new G0(G0.codes.invalidKey,`Unsupported EC public key with curve ${G}.`);return[`ES${Y.bits}`]}function F6($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new G0(G0.codes.invalidKey,"The private key must be a string or a buffer.");let[Q,X]=sZ.get($)||[];if(Q)return Q;else if(X)throw X;try{let G=A6($);if(G==="ENCRYPTED")return OZ(sZ,$,Z);return OZ(sZ,$,G)}catch(G){throw OZ(sZ,$,null,G0.wrap(G,G0.codes.invalidKey,"Unsupported PEM private key."))}}function K6($){if(!$)return"none";let[Z,Q]=qX.get($)||[];if(Z)return Z;else if(Q)throw Q;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new G0(G0.codes.invalidKey,"The public key must be a string or a buffer.");return OZ(qX,$,M6($))}catch(X){throw OZ(qX,$,null,G0.wrap(X,G0.codes.invalidKey,"Unsupported PEM public key."))}}function z6($,Z,Q){try{let X=$.slice(0,2),G=`sha${$.slice(2)}`,Y,J;switch(X){case"HS":Y=bJ(G,Z).update(Q).digest("base64");break;case"ES":Y=J6(yJ(G,Buffer.from(Q,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(J={key:Z,padding:uJ,saltLength:X6},X==="PS")J.padding=cJ,J.saltLength=pJ;Y=$6(G).update(Q).sign(J).toString("base64");break;case"Ed":Y=yJ(void 0,Buffer.from(Q,"utf-8"),Z).toString("base64")}return Y.replace(dJ,rJ)}catch(X){throw new G0(G0.codes.signError,"Cannot create the signature.",{originalError:X})}}function R6($,Z,Q,X){try{let G=$.slice(0,2),Y=`SHA${$.slice(2)}`;if(X=Buffer.from(X,"base64"),G==="HS")try{return Z6(bJ(Y,Z).update(Q).digest(),X)}catch{return!1}else if(G==="Ed")if(typeof hJ==="function")return hJ(void 0,Buffer.from(Q,"utf-8"),Z,X);else throw new G0(G0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let J={key:Z,padding:uJ,saltLength:G6};if(G==="PS")J.padding=cJ,J.saltLength=pJ;else if(G==="ES")X=Y6(X,$);return e8("RSA-"+Y).update(Q).verify(J,X)}catch(G){throw new G0(G0.codes.verifyError,"Cannot verify the signature.",{originalError:G})}}iJ.exports={base64UrlMatcher:dJ,base64UrlReplacer:rJ,hsAlgorithms:oJ,rsaAlgorithms:jX,esAlgorithms:W6,edAlgorithms:U6,detectPrivateKeyAlgorithm:F6,detectPublicKeyAlgorithms:K6,createSignature:z6,verifySignature:R6}});var PX=i((H3,aJ)=>{var{createHash:tJ}=I$("crypto"),I6=/"alg"\s*:\s*"[HERP]S(256|384)"/m,q6=/"alg"\s*:\s*"EdDSA"/m,j6=/"crv"\s*:\s*"Ed448"/m;function L6($,Z,Q){let X=$(Z,Q);if(X&&typeof X.then==="function")X.then((G)=>{process.nextTick(()=>Q(null,G))}).catch(Q)}function B6($){if(typeof $==="function")return[$];let Z,Q,X=new Promise((G,Y)=>{Z=G,Q=Y});return[function(G,Y){if(G)return Q(G);return Z(Y)},X]}function P6($){let Z=$.split(".",1)[0],Q=Buffer.from(Z,"base64").toString("utf-8"),X=null;if(Q.match(q6)&&Q.match(j6))X=tJ("shake256",{outputLength:114});else{let G=Q.match(I6);X=tJ(`sha${G?G[1]:"512"}`)}return X.update($).digest("hex")}aJ.exports={getAsyncKey:L6,ensurePromiseCallback:B6,hashToken:P6}});var Y1=i((W3,G1)=>{var{createPublicKey:C6,createSecretKey:S6}=I$("crypto"),w6=XX(),{hsAlgorithms:$1,verifySignature:E6,detectPublicKeyAlgorithms:Z1}=BX(),T6=aQ(),{TokenError:n}=l$(),{getAsyncKey:N6,ensurePromiseCallback:D6,hashToken:k6}=PX();function v6($,Z){return $===Z}function Q1($,Z){for(let Q of $)if(Z.includes(Q))return;throw new n(n.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function X1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?S6($):C6($)}function _Z($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:v6.bind(null,Z)}})}function x6($){let Z=parseInt($===!0?1000:$,10);return Z>0?new w6(Z):null}function XZ({cache:$,token:Z,cacheTTL:Q,payload:X,ignoreExpiration:G,ignoreNotBefore:Y,maxAge:J,clockTimestamp:U=Date.now(),clockTolerance:V,errorCacheTTL:A,cacheKeyBuilder:M},_){if(!$)return _;let R=[_,0,0];if(_ instanceof n){let w=typeof A==="function"?A(_):A;return R[2]=U+V+w,$.set(M(Z),R),_}if(X&&typeof X.iat==="number"){if(R[1]=!Y&&typeof X.nbf==="number"?X.nbf*1000-V:0,!G){if(typeof X.exp==="number")R[2]=X.exp*1000+V;else if(J)R[2]=X.iat*1000+J+V}}let S=U+V+Q;return R[2]=R[2]===0?S:Math.min(R[2],S),$.set(M(Z),R),_}function f6($,Z,Q){if($ instanceof n){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return Q}function g6($,Z,Q,X,G){if(!G.includes(Z.alg))throw new n(n.codes.invalidAlgorithm,"The token algorithm is invalid.");if(Q&&!E6(Z.alg,X,$,Q))throw new n(n.codes.invalidSignature,"The token signature is invalid.")}function y6($,Z,Q,X,G){let Y=Q?`The ${Z} claim must be a ${G} or an array of ${G}s.`:`The ${Z} claim must be a ${G}.`;if(X&&!Q)throw new n(n.codes.invalidClaimValue,Y);if($.map((J)=>typeof J).some((J)=>J!==G))throw new n(n.codes.invalidClaimType,Y)}function h6($,Z,Q,X){let G=X?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((Y)=>Q.some((J)=>J.test(Y))))throw new n(n.codes.invalidClaimValue,G)}function b6($,Z,Q,X,G,Y){let J=$*1000+(Z||0);if(!(X?Q>=J:Q<=J))throw new n(n.codes[G],`The token ${Y} at ${new Date(J).toISOString()}.`)}function eJ($,{input:Z,header:Q,payload:X,signature:G},{validators:Y,allowedAlgorithms:J,checkTyp:U,clockTimestamp:V,requiredClaims:A}){let M=$ instanceof Buffer?$.length:!!$;if(M&&!G)throw new n(n.codes.missingSignature,"The token signature is missing.");else if(!M&&G)throw new n(n.codes.missingKey,"The key option is missing.");if(g6(Z,Q,G,$,J),U&&(typeof Q.typ!=="string"||U!==Q.typ.toLowerCase().replace(/^application\//,"")))throw new n(n.codes.invalidType,"Invalid typ.");if(A){for(let R of A)if(!(R in X))throw new n(n.codes.missingRequiredClaim,`The ${R} claim is required.`)}let _=V||Date.now();for(let{type:R,claim:C,allowed:S,array:w,modifier:N,greater:T,errorCode:E,errorVerb:v}of Y){let b=X[C],f=Array.isArray(b),m=f?b:[b];if(!(C in X))continue;if(y6(m,C,w,f,R==="date"?"number":"string"),R==="date")b6(b,N,_,T,E,v);else h6(m,C,S,f)}}function c6({key:$,allowedAlgorithms:Z,complete:Q,cacheTTL:X,checkTyp:G,clockTimestamp:Y,clockTolerance:J,ignoreExpiration:U,ignoreNotBefore:V,maxAge:A,isAsync:M,validators:_,decode:R,cache:C,requiredClaims:S,errorCacheTTL:w,cacheKeyBuilder:N},T,E){let[v,b]=M?D6(E):[];if(C){let[O,F,K]=C.get(N(T))||[void 0,0,0],j=Y||Date.now();if(typeof O<"u"&&(F===0||j<F&&O.code==="FAST_JWT_INACTIVE"||j>=F&&O.code!=="FAST_JWT_INACTIVE")&&(K===0||j<=K))return f6(O,v,b)}let f;try{f=R(T)}catch(O){if(v)return v(O),b;throw O}let{header:m,payload:a,signature:r,input:J0}=f,L={cache:C,token:T,cacheTTL:X,errorCacheTTL:w,ignoreExpiration:U,ignoreNotBefore:V,maxAge:A,clockTimestamp:Y,clockTolerance:J,payload:a,cacheKeyBuilder:N},H={validators:_,allowedAlgorithms:Z,checkTyp:G,clockTimestamp:Y,clockTolerance:J,requiredClaims:S};if(!v)try{return eJ($,f,H),XZ(L,Q?{header:m,payload:a,signature:r,input:J0}:a)}catch(O){throw XZ(L,O)}return N6($,{header:m,payload:a,signature:r},(O,F)=>{if(O)return v(XZ(L,n.wrap(O,n.codes.keyFetchingError,"Cannot fetch key.")));if(typeof F==="string")F=Buffer.from(F,"utf-8");else if(!(F instanceof Buffer))return v(XZ(L,new n(n.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a public key.")));try{let K=Z1(F);if(H.allowedAlgorithms.length)Q1(Z,K);else H.allowedAlgorithms=K;F=X1(F,K[0]===$1[0]),eJ(F,f,H)}catch(K){return v(XZ(L,K))}v(null,XZ(L,Q?{header:m,payload:a,signature:r,input:T}:a))}),b}G1.exports=function(Z){let{key:Q,algorithms:X,complete:G,cache:Y,cacheTTL:J,errorCacheTTL:U,checkTyp:V,clockTimestamp:A,clockTolerance:M,ignoreExpiration:_,ignoreNotBefore:R,maxAge:C,allowedJti:S,allowedAud:w,allowedIss:N,allowedSub:T,allowedNonce:E,requiredClaims:v,cacheKeyBuilder:b}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:k6,...Z};if(!Array.isArray(X))X=[];let f=typeof Q;if(f!=="string"&&f!=="object"&&f!=="function")throw new n(n.codes.INVALID_OPTION,"The key option must be a string, a buffer or a function returning the algorithm secret or public key.");if(Q&&f!=="function"){let L=Z1(Q);if(X.length)Q1(X,L);else X=L;Q=X1(Q,L[0]===$1[0])}if(A&&(typeof A!=="number"||A<0))throw new n(n.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(M&&(typeof M!=="number"||M<0))throw new n(n.codes.invalidOption,"The clockTolerance option must be a positive number.");if(J&&(typeof J!=="number"||J<0))throw new n(n.codes.invalidOption,"The cacheTTL option must be a positive number.");if(U&&typeof U!=="function"&&typeof U!=="number"||U<-1)throw new n(n.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(v&&!Array.isArray(v))throw new n(n.codes.invalidOption,"The requiredClaims option must be an array.");let m=[];if(!R)m.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-M});if(!_)m.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+M});if(typeof C==="number")m.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:C});if(S)m.push({type:"string",claim:"jti",allowed:_Z(S)});if(w)m.push({type:"string",claim:"aud",allowed:_Z(w),array:!0});if(N)m.push({type:"string",claim:"iss",allowed:_Z(N)});if(T)m.push({type:"string",claim:"sub",allowed:_Z(T)});if(E)m.push({type:"string",claim:"nonce",allowed:_Z(E)});let a=V?V.toLowerCase().replace(/^application\//,""):null,r={key:Q,allowedAlgorithms:X,complete:G,cacheTTL:J,errorCacheTTL:U,checkTyp:a,clockTimestamp:A,clockTolerance:M,ignoreExpiration:_,ignoreNotBefore:R,maxAge:C,isAsync:f==="function",validators:m,decode:T6({complete:!0}),cache:x6(Y),requiredClaims:v,cacheKeyBuilder:b},J0=c6.bind(null,r);return J0.cache=r.cache,J0}});var J1=i((d6)=>{var p6=/^(-?(?:\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?)?)?$/,oZ=1000,lZ=oZ*60,rZ=lZ*60,MZ=rZ*24,CX=MZ*365.25;function u6($){var Z,Q=$.toLowerCase().match(p6);if(Q!=null&&(Z=parseFloat(Q[1]))){if(Q[3]!=null)return Z*oZ;if(Q[4]!=null)return Z*lZ;if(Q[5]!=null)return Z*rZ;if(Q[6]!=null)return Z*MZ;if(Q[7]!=null)return Z*MZ*7;if(Q[8]!=null)return Z*CX;return Z}}function AZ($,Z,Q,X){var G=($|0)===$?$:~~($+0.5);return Z+G+(X?" "+Q+(G!=1?"s":""):Q[0])}function m6($,Z){var Q=$<0?"-":"",X=$<0?-$:$;if(X<oZ)return $+(Z?" ms":"ms");if(X<lZ)return AZ(X/oZ,Q,"second",Z);if(X<rZ)return AZ(X/lZ,Q,"minute",Z);if(X<MZ)return AZ(X/rZ,Q,"hour",Z);if(X<CX)return AZ(X/MZ,Q,"day",Z);return AZ(X/CX,Q,"year",Z)}d6.format=m6;d6.parse=u6});var M1=i((V3,A1)=>{var{base64UrlMatcher:SX,base64UrlReplacer:wX,hsAlgorithms:o6,esAlgorithms:l6,rsaAlgorithms:r6,edAlgorithms:i6,detectPrivateKeyAlgorithm:U1,createSignature:H1}=BX(),{TokenError:l}=l$(),{getAsyncKey:t6,ensurePromiseCallback:a6}=PX(),{createPrivateKey:e6,createSecretKey:$9}=I$("crypto"),{parse:W1}=J1(),V1=new Set([...o6,...l6,...r6,...i6,"none"]),Z9=Array.from(V1).join(", ");function O1($,Z){let Q=$.slice(0,2),X=Z.slice(0,2),G=!0;if(Q==="RS"||Q==="PS")G=X==="RS"||Q==="RS"&&Z==="ENCRYPTED";else if(Q==="ES"||Q==="Ed")G=Q===X||Q==="ES"&&Z==="ENCRYPTED";if(!G)throw new l(l.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function _1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?$9($):e6($)}function Q9({key:$,algorithm:Z,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:Y,notBefore:J,kid:U,typ:V,isAsync:A,additionalHeader:M,fixedPayload:_},R,C){let[S,w]=A?a6(C):[];if(typeof R!=="object")throw new l(l.codes.invalidType,"The payload must be an object.");if(R.exp&&(!Number.isInteger(R.exp)||R.exp<0))throw new l(l.codes.invalidClaimValue,"The exp claim must be a positive integer.");let N={alg:Z,typ:V||"JWT",kid:U,...M},T="",E=R.iat*1000||G||Date.now(),v={...R,..._,iat:Q?void 0:Math.floor(E/1000),exp:R.exp?R.exp:Y?Math.floor((E+Y)/1000):void 0,nbf:R.nbf?R.nbf:J?Math.floor((E+J)/1000):void 0};if(X)Object.assign(R,v);if(T=Buffer.from(JSON.stringify(v),"utf-8").toString("base64").replace(SX,wX),!S){let f=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(SX,wX)+"."+T,m=Z==="none"?"":H1(Z,$,f);return f+"."+m}return t6($,{header:N,payload:R},(b,f)=>{if(b){let a=l.wrap(b,l.codes.keyFetchingError,"Cannot fetch key.");return S(a)}if(typeof f==="string")f=Buffer.from(f,"utf-8");else if(!(f instanceof Buffer))return S(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=U1(f,Z);if(Z)O1(Z,a);else N.alg=Z=a;f=_1(f,Z);let J0=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(SX,wX)+"."+T;m=J0+"."+H1(Z,f,J0)}catch(a){return S(a)}S(null,m)}),w}A1.exports=function(Z){let{key:Q,algorithm:X,noTimestamp:G,mutatePayload:Y,clockTimestamp:J,expiresIn:U,notBefore:V,jti:A,aud:M,iss:_,sub:R,nonce:C,kid:S,typ:w,header:N}={clockTimestamp:0,...Z};if(X&&!V1.has(X))throw new l(l.codes.invalidOption,`The algorithm option must be one of the following values: ${Z9}.`);let T=typeof Q,E=T==="object"&&Q&&Q.key&&Q.passphrase;if(X==="none"){if(Q)throw new l(l.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!Q||T!=="string"&&!(Q instanceof Buffer)&&T!=="function"&&!E)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(E&&!X)throw new l(l.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(Q&&T!=="function"){let f=U1(E?Q.key:Q,X);if(X)O1(X,f);else X=f;Q=_1(Q,X)}if(U){if(typeof U==="string")U=W1(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=W1(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(J&&(typeof J!=="number"||J<0))throw new l(l.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(A&&typeof A!=="string")throw new l(l.codes.invalidOption,"The jti option must be a string.");if(M&&typeof M!=="string"&&!Array.isArray(M))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(R&&typeof R!=="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(S&&typeof S!=="string")throw new l(l.codes.invalidOption,"The kid option must be a string.");if(N&&typeof N!=="object")throw new l(l.codes.invalidOption,"The header option must be a object.");let b=Object.entries({jti:A,aud:M,iss:_,sub:R,nonce:C}).reduce((f,[m,a])=>{if(a!==void 0)f[m]=a;return f},{});return Q9.bind(null,{key:Q,algorithm:X,noTimestamp:G,mutatePayload:Y,clockTimestamp:J,expiresIn:U,notBefore:V,kid:S,typ:w,isAsync:T==="function",additionalHeader:N,fixedPayload:b})}});var K1=i((O3,F1)=>{var{TokenError:X9,TOKEN_ERROR_CODES:G9}=l$(),Y9=aQ(),J9=Y1(),H9=M1();F1.exports={TokenError:X9,TOKEN_ERROR_CODES:G9,createDecoder:Y9,createVerifier:J9,createSigner:H9}});import{join as TQ}from"path";class D extends Error{kind;code;meta;noLog;logged;multiline;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.multiline=$.multiline===!0,this.cause=$.cause}}function q$($){if(typeof $!=="object"||$===null)return!1;let Z=$;if(Z.name!=="CoreError")return!1;if(typeof Z.kind!=="string")return!1;return!0}LZ();u0();function U$($){if(Array.isArray($)){let Z=[];for(let Q of $)Z.push(U$(Q));return Z}if(s($)){let Z={},Q=$;for(let X of Object.keys(Q))Z[X]=U$(Q[X]);return Z}return $}function VG($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let Q=[];for(let X of $)Q.push(U$(X));for(let X of Z)Q.push(U$(X));return Q}if(s($)&&s(Z)){let Q=$,X=Z,G={};for(let Y of Object.keys(Q))G[Y]=U$(Q[Y]);for(let Y of Object.keys(X)){let J=X[Y];if(J===void 0)continue;let U=G[Y];if(Array.isArray(U)&&Array.isArray(J)){let V=[];for(let A of U)V.push(U$(A));for(let A of J)V.push(U$(A));G[Y]=V;continue}if(s(U)&&s(J)){G[Y]=VG(U$(U),J);continue}G[Y]=U$(J)}return G}return U$(Z)}function OG(...$){let Z={};for(let Q of $){if(Q===void 0)continue;Z=VG(Z,Q)}return Z}var VH={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 _G($){if($!=="development"&&$!=="production")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1ANODE_ENV \u53EA\u80FD\u662F 'development' \u6216 'production'\uFF0C\u5F53\u524D\u503C=${String($)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let Z=TQ(process.cwd(),"configs"),Q=await B$(TQ(Z,"befly.common.json"),{}),X=await B$(TQ(Z,`befly.${$}.json`),{}),G=OG(VH,Q,X);G.nodeEnv=$;let Y=G.redis?.prefix;if(typeof Y==="string"){if(Y.trim().includes(":"))throw new D({message:`\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=${Y}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}})}let J=G.db?.idMode;if(J!==void 0&&J!=="timeId"&&J!=="autoId")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(J)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let U=G.strict;if(U!==void 0&&typeof U!=="boolean")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(U)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});return G}$0();u0();async function AG($){let Z=!1,Q=new Set;for(let X of $)try{if(!s(X)){q.warn({item:X,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let G=X,Y=G.name;if(typeof Y!=="string"||Y.trim()===""){q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof G.handler!=="function"){q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let U=G.path;if(typeof U!=="string"||U.trim()==="")q.warn(Object.assign({},u(G,["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 S=U.trim();if(Q.has(S))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else Q.add(S);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(S))q.warn(Object.assign({},u(G,["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(!S.startsWith("/api/"))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(S.includes(" "))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(S.includes("/api//"))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=G.routePrefix,A=typeof V==="string"?V.trim():"";if(A==="")q.warn(Object.assign({},u(G,["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(!(A==="/app"||A.startsWith("/addon/")))q.warn(Object.assign({},u(G,["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 S=U.trim(),w=`/api${A}/`;if(!S.startsWith(w))q.warn(Object.assign({},u(G,["handler"]),{expectedPrefix:w,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 M=G.method;if(M!==void 0&&!["GET","POST","GET,POST"].includes(String(M).toUpperCase()))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let _=G.auth;if(_!==void 0&&typeof _!=="boolean")q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let R=G.fields;if(R!==void 0&&R!==null&&!s(R))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let C=G.required;if(C!==void 0&&!Array.isArray(C))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(C)){if(C.some((S)=>typeof S!=="string"))q.warn(Object.assign({},u(G,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(G){q.error({err:G,item:X,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({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 NQ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function OH($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function _H($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function AH($){if(!b$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function MH($){if(!$)throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.host))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.host \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!NQ($.port))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.username))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.username \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.username)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.password!==void 0&&typeof $.password!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.database))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.database \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.database)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.poolMax!==void 0){if(typeof $.poolMax!=="number"||!Number.isFinite($.poolMax)||$.poolMax<=0)throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.poolMax \u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u5F53\u524D\u503C=${String($.poolMax)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}}function FH($){if(!$)throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 redis \u914D\u7F6E\uFF08config.redis\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.host!==void 0&&typeof $.host!=="string")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.host \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.port!==void 0&&!NQ($.port))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.db!==void 0&&!OH($.db))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.db \u5FC5\u987B\u4E3A\u975E\u8D1F\u6574\u6570\uFF0C\u5F53\u524D\u503C=${String($.db)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});let Z=$.prefix;if(Z!==void 0){if(typeof Z!=="string")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String(Z)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(Z.includes(":"))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}}async function MG($){if(!$||typeof $!=="object")throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1Aconfig \u5FC5\u987B\u4E3A\u5BF9\u8C61",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.nodeEnv!=="development"&&$.nodeEnv!=="production")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AnodeEnv \u53EA\u80FD\u662F development/production\uFF0C\u5F53\u524D\u503C=${String($.nodeEnv)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.appName!==void 0){if(!b$($.appName))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appName)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.appPort!==void 0){if(!NQ($.appPort))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappPort \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.appPort)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.appHost!==void 0){if(!b$($.appHost))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappHost \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appHost)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.devEmail!==void 0){if(typeof $.devEmail!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});let Z=$.devEmail.trim();if(Z.length>0&&!Z.includes("@"))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.devPassword!==void 0){if(typeof $.devPassword!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.bodyLimit!==void 0){if(!_H($.bodyLimit))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AbodyLimit \u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF08\u5B57\u8282\uFF09\uFF0C\u5F53\u524D\u503C=${String($.bodyLimit)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.tz!==void 0){if(!AH($.tz))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if(typeof $.strict!=="boolean")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A true \u6216 false\uFF0C\u5F53\u524D\u503C=${String($.strict)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});MH($.db),FH($.redis)}$0();u0();var FG=["name","enable","deps","handler"];async function KG($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let X of $)try{if(!s(X)){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let G=X,Y=G.moduleName;if(typeof Y!=="string"||Y.trim()===""){q.warn(Object.assign({},u(X,["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 J=G.customKeys;if(!Array.isArray(J)){q.warn(Object.assign({},u(X,["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(J.some((M)=>typeof M!=="string")){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=J.filter((M)=>!FG.includes(M));if(U.length>0){q.warn(Object.assign({},u(X,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${FG.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof G.enable!=="boolean"){q.warn(Object.assign({},u(X,["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 G.enable=!0;if(G.source==="core"){let M=typeof G.name==="string"?G.name:"";if(M===""){q.warn(Object.assign({},u(X,["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(!Q.test(M)){q.warn(Object.assign({},u(X,["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(!Q.test(String(G.moduleName))){q.warn(Object.assign({},u(X,["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(M!==String(G.moduleName)){q.warn(Object.assign({},u(X,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=G.filePath;if(typeof _!=="string"||!_.startsWith(`core:hook:${M}`)){q.warn(Object.assign({},u(X,["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(A){let M=G.deps;if(!Array.isArray(M)){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(M.some((_)=>typeof _!=="string")){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let M=G.deps;if(!Array.isArray(M))G.deps=[]}if(typeof G.handler!=="function"){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(G){q.error({err:G,item:X,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}$0();xQ();function CH($){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 CG=async($)=>{let Z=!1,Q=await PG($),X=[];for(let Y of Q)X.push({menu:Y,depth:1});let G=new Set;while(X.length>0){let Y=X.pop(),J=Y?.menu,U=typeof Y?.depth==="number"?Y.depth:0;if(J===null||typeof J!=="object"){Z=!0,q.warn({menu:J,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(U>3){Z=!0,q.warn({path:J?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let V=J.children;if(typeof V<"u"&&!Array.isArray(V)){Z=!0,q.warn({path:J?.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,q.warn({path:J?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let C of V)X.push({menu:C,depth:U+1});let A=typeof J.path==="string"?J.path.trim():"",M=typeof J.name==="string"?J.name.trim():"",_=typeof J.sort==="number"?J.sort:999999;if(typeof J.path==="string")J.path=A;if(typeof J.name==="string")J.name=M;if(typeof J.sort>"u")J.sort=_;if(!A){Z=!0,q.warn({menu:J,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let R=CH(A);if(!R.ok)Z=!0,q.warn({path:A,reason:R.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!M)Z=!0,q.warn({path:A,menu:J,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof J.sort<"u"&&typeof J.sort!=="number")Z=!0,q.warn({path:A,sort:J.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof J.sort==="number"&&(!Number.isFinite(J.sort)||J.sort<1))Z=!0,q.warn({path:A,sort:J.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(G.has(A)){Z=!0,q.warn({path:A,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}G.add(A)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return Q};$0();u0();var SG=["name","enable","deps","handler"];async function wG($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let X of $)try{if(!s(X)){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let G=X,Y=G.moduleName;if(typeof Y!=="string"||Y.trim()===""){q.warn(Object.assign({},u(X,["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 J=G.customKeys;if(!Array.isArray(J)){q.warn(Object.assign({},u(X,["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(J.some((M)=>typeof M!=="string")){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=J.filter((M)=>!SG.includes(M));if(U.length>0){q.warn(Object.assign({},u(X,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${SG.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof G.enable!=="boolean"){q.warn(Object.assign({},u(X,["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 G.enable=!0;if(G.source==="core"){let M=typeof G.name==="string"?G.name:"";if(M===""){q.warn(Object.assign({},u(X,["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(!Q.test(M)){q.warn(Object.assign({},u(X,["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(!Q.test(String(G.moduleName))){q.warn(Object.assign({},u(X,["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(M!==String(G.moduleName)){q.warn(Object.assign({},u(X,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=G.filePath;if(typeof _!=="string"||!_.startsWith(`core:plugin:${M}`)){q.warn(Object.assign({},u(X,["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(A){let M=G.deps;if(!Array.isArray(M)){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(M.some((_)=>typeof _!=="string")){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let M=G.deps;if(!Array.isArray(M))G.deps=[]}if(typeof G.handler!=="function"){q.warn(Object.assign({},u(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(G){q.error({err:G,item:X,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}$0();var EG=new Set(["char","varchar","enum","tinytext","text","mediumtext","longtext"]),SH=new Set(["tinytext","text","mediumtext","longtext"]),fQ=new Set(["tinyint","smallint","mediumint","int","bigint"]),gQ=new Set(["decimal"]),yQ=new Set(["float","double"]),wH=new Set(["json"]),EH=new Set(["enum"]);function M$($){return String($||"").trim().toLowerCase()}function TG($){return EG.has(M$($))}function NG($){return SH.has(M$($))}function DG($){return fQ.has(M$($))}function kG($){return gQ.has(M$($))}function vG($){return yQ.has(M$($))}function xG($){return wH.has(M$($))}function fG($){return EH.has(M$($))}function gG($){let Z=M$($);return fQ.has(Z)||gQ.has(Z)||yQ.has(Z)}function TH($){let Z=M$($);if(fQ.has(Z))return"integer";if(gQ.has(Z)||yQ.has(Z))return"number";if(EG.has(Z)||Z==="datetime"||Z==="timestamp")return"string";if(Z==="json")return"json";return"string"}function CZ($,Z){let Q=String($||"").trim(),X=String(Z||"").trim();return{type:Q,input:X||TH(Q)}}function u$($){let Z=String($||"").trim();if(Z==="")return[];let Q=Z.split("|").map((G)=>G.trim()).filter((G)=>G!==""),X=[];for(let G of Q)if(!X.includes(G))X.push(G);return X}u0();var pG=["id","created_at","updated_at","deleted_at","state"],yG=new Set(pG),uG=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","enum","tinytext","text","mediumtext","longtext","datetime","timestamp","json"],NH=new Set(uG),mG=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],DH=new Set(mG),dG=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],kH=new Set(dG),vH=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,xH=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,hG=16383,bG=500,cG=180;async function nG($,Z){let Q=!1;for(let X of $){if(X.type!=="table")continue;let G=typeof X.sourceName==="string"?X.sourceName:"",Y=G?`${G}\u8868 `:"\u8868 ";try{let J=X.fileName;if(X.source==="addon"&&String(X.addonName).trim()===""){q.warn(`${Y}${J} addon \u8868\u7F3A\u5C11 addonName`),Q=!0;continue}let U=X.content;if(typeof U!=="object"||U===null||Array.isArray(U)){q.warn(`${Y}${J} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),Q=!0;continue}if(!vH.test(J)){q.warn(`${Y}${J} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),Q=!0;continue}for(let[V,A]of Object.entries(U)){if(typeof A!=="object"||A===null||Array.isArray(A)){q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),Q=!0;continue}let M=c(V);if(yG.has(V)||yG.has(M))q.warn(`${Y}${J} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${V}\uFF08\u6620\u5C04\u5217\u540D: ${M}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${pG.join(", ")}`),Q=!0;let _=A,C=Object.keys(_).filter((L)=>!kH.has(L));if(C.length>0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${C.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${dG.join(", ")}`),Q=!0;if(!_.name||typeof _.name!=="string"){q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),Q=!0;continue}if(!_.type||typeof _.type!=="string"){q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),Q=!0;continue}if(_.input!==void 0&&typeof _.input!=="string")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),Q=!0;if(_.min!==void 0&&!(_.min===null||typeof _.min==="number"))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.max!==void 0&&!(_.max===null||typeof _.max==="number"))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.detail!==void 0&&typeof _.detail!=="string")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),Q=!0;if(_.precision!==void 0&&!(_.precision===null||typeof _.precision==="number"))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.scale!==void 0&&!(_.scale===null||typeof _.scale==="number"))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.index!==void 0&&typeof _.index!=="boolean")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.unique!==void 0&&typeof _.unique!=="boolean")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.nullable!==void 0&&typeof _.nullable!=="boolean")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.unsigned!==void 0&&typeof _.unsigned!=="boolean")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;let S=CZ(_.type,_.input||""),w=S.type,N=S.input;if(_.default!==void 0&&_.default!==null&&!FZ(_.default))q.warn(`${Y}${J} \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=${G$(_.default)}\uFF09`),Q=!0;if(Z.strict){if(!xH.test(_.name))q.warn(`${Y}${J} \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"),Q=!0}if(!NH.has(w))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${w}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${uG.join("\u3001")}\u4E4B\u4E00`),Q=!0;let T=N.trim();if(T==="")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),Q=!0;else if(!DH.has(T)&&!g$(T)&&!T$(T)&&!RQ(T))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${T}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${mG.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),Q=!0;let E=kG(w),v=vG(w),b=xG(w),f=fG(w),m=gG(w),a=TG(w),r=NG(w),J0=DG(w);if(f){if(T.trim()==="")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E input \u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09`),Q=!0;else if(!T$(T))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cinput \u5FC5\u987B\u4E3A\u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09\uFF0C\u5F53\u524D\u4E3A ${G$(T)}`),Q=!0}if(g$(T)||T$(T)||RQ(T)){if(!a)q.warn(`${Y}${J} \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/enum/text\uFF09`),Q=!0}if(T==="number"||T==="integer"){if(T==="integer"&&!J0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),Q=!0;if(T==="number"&&!m)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),Q=!0}if(T==="array"||T==="array_number"||T==="array_integer"){if(!a)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),Q=!0}if(T==="json"||T==="json_number"||T==="json_integer"){if(!(b||r))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),Q=!0}if(!m&&_.unsigned!==void 0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${w}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),Q=!0;if(_.unique===!0&&_.index===!0)q.warn(`${Y}${J} \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"),Q=!0;if(_.min!==void 0&&_.max!==void 0&&_.min!==null&&_.max!==null){if(_.min>_.max)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u6700\u5C0F\u503C "${_.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${_.max}"`),Q=!0}if(r||b){if(_.min!==void 0&&_.min!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.default!==void 0&&_.default!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.default}"`),Q=!0;if(_.index===!0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),Q=!0;if(_.unique===!0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),Q=!0}else if(w==="datetime"||w==="timestamp"){if(_.min!==void 0&&_.min!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.default!==void 0&&_.default!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \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 ${G$(_.default)}`),Q=!0;if(_.unsigned!==void 0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),Q=!0}else if(w==="enum"){if(_.min!==void 0&&_.min!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.precision!==void 0&&_.precision!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E precision`),Q=!0;if(_.scale!==void 0&&_.scale!==null)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E scale`),Q=!0;if(_.unsigned!==void 0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),Q=!0;let L=u$(T);if(_.default===void 0||_.default===null){if(_.nullable!==!0)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cnullable!=true \u65F6\u5FC5\u987B\u8BBE\u7F6E default\uFF08\u4E14 default \u5FC5\u987B\u4E3A\u679A\u4E3E\u503C\u4E4B\u4E00\uFF09`),Q=!0}else if(typeof _.default!=="string")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0;else if(!L.includes(_.default))q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185\uFF08default=${G$(_.default)}\uFF0Cenums=${G$(T)}\uFF09`),Q=!0}else if(E){let{precision:L,scale:H}=_;if(typeof L!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),Q=!0;else if(L<1||L>65)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${L}`),Q=!0;if(typeof H!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),Q=!0;else if(H<0||H>30)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${H}`),Q=!0;if(typeof L==="number"&&typeof H==="number"&&H>L)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${L}, scale=${H}\uFF09`),Q=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(w==="char"||w==="varchar"){if(_.max===void 0||_.max===null||typeof _.max!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;else if(_.max>hG)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${_.max} \u8D8A\u754C\uFF0C`+`${w} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${hG} \u8303\u56F4\u5185`),Q=!0;else{if(_.index===!0&&_.max>bG)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${bG}\uFF09`),Q=!0;if(_.unique===!0&&_.max>cG)q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${cG}\uFF09`),Q=!0}if(T==="char"&&typeof _.max==="number"&&_.max>1)q.warn(`${Y}${J} \u6587\u4EF6 ${V} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${_.max}`),Q=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="string")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(J0){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(v){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")q.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}}}catch(J){q.error({msg:`${Y}${X.fileName} \u89E3\u6790\u5931\u8D25`,err:J}),Q=!0}}if(Q)throw new D({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:fH,RedisClient:gH}=globalThis.Bun;$0();class F${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=$||{},Q=typeof Z.host==="string"?Z.host.trim():"",X=typeof Z.port==="number"?Z.port:NaN,G=typeof Z.username==="string"?Z.username.trim():"",Y=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",J=typeof Z.database==="string"?Z.database.trim():"";if(!Q)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(X)||X<1||X>65535)throw new D({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(!G)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!J)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let U=encodeURIComponent(G),V=encodeURIComponent(Y),A=encodeURIComponent(J),M=`mysql://${U}:${V}@${Q}:${X}/${A}`,_=new fH({url:M,max:Z.poolMax??1,bigint:!1});try{let C=(async()=>{let w=await _`SELECT VERSION() AS version`,N=typeof w?.[0]?.version==="string"?w?.[0]?.version:String(w?.[0]?.version||""),T=N.split(".")[0],E=Number(T);if(!Number.isFinite(E))throw new D({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${N}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(E<8)throw new D({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${N}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=N,this.mysqlVersionMajor=E,N})(),S=new Promise((w,N)=>{setTimeout(()=>{N(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([C,S]),this.sqlClient=_,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,_}catch(R){q.error({err:R,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await _?.close()}catch{}if(q$(R))throw R.logged=!0,R;let C=`SQL \u8FDE\u63A5\u5931\u8D25: ${R&&typeof R.message==="string"?R.message:String(R)}`;throw new D({message:C,kind:"runtime",logged:!0,cause:R,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){q.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 Q=Z.host||"127.0.0.1",X=Z.port||6379,G=Z.username||"",Y=Z.password||"",J=Z.db||0,U="",V=G?encodeURIComponent(G):"",A=Y?encodeURIComponent(Y):"";if(V&&A)U=`${V}:${A}@`;else if(A)U=`:${A}@`;let M=`redis://${U}${Q}:${X}/${J}`,_=new gH(M,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await _.ping(),this.redisClient=_,this.redisConnectedAt=Date.now(),_}catch(Q){q.error({err:Q,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let X=`Redis \u8FDE\u63A5\u5931\u8D25: ${Q&&typeof Q.message==="string"?Q.message:String(Q)}`;throw new D({message:X,kind:"runtime",logged:!0,cause:Q,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){q.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 Q=typeof process?.env?.NODE_ENV==="string"?"development":"";if(q.error({env:Q,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),q$(Z))throw Z.logged=!0,Z;let X=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new D({message:X,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 sG($){let Z=new Map;for(let Q of $)try{if(Q.type!=="api")continue;let X=Q,G=X.path,Y={name:X.name,handler:X.handler,route:G},J=X.method;if(typeof J==="string"){let _=J.toUpperCase(),R=_==="POST,GET"?"GET,POST":_;Y.method=["GET","POST","GET,POST"].includes(R)?R:"POST"}else Y.method="POST";let U=X.auth;if(U!==void 0)Y.auth=U;let V=X.fields;if(V!==void 0)Y.fields=V;let A=X.required;if(A!==void 0)Y.required=A;let M=X.rawBody;if(M!==void 0)Y.rawBody=M;Z.set(G,Y)}catch(X){throw q.error({err:X,api:Q.relativePath,file:Q.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new D({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"api",operation:"load",relativePath:Q.relativePath,filePath:Q.filePath}})}return Z}$0();u0();function SZ($,Z={}){let Q=Z.moduleLabel||"\u6A21\u5757",X=Z.getName||((_)=>{let R=_.moduleName;if(typeof R==="string"&&R.trim()!=="")return R;return j$(_.fileName)}),G=Z.getDeps||((_)=>{let R=_.deps;if(!Array.isArray(R))return[];return R.filter((C)=>typeof C==="string")}),Y=[],J=new Set,U=new Set,V={},A=!0;for(let _ of $){let R=X(_);if(typeof R!=="string"||R.trim()===""){q.error({item:_,msg:`${Q} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),A=!1;continue}if(V[R]){q.error({name:R,first:V[R],second:_,msg:`${Q} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),A=!1;continue}V[R]=_}if(!A)return!1;for(let _ of $){let R=X(_),C=G(_);if(!Array.isArray(C)){q.error({module:R,item:_,msg:`${Q} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),A=!1;continue}for(let S of C){if(typeof S!=="string"){q.error({module:R,dependency:S,item:_,msg:`${Q} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),A=!1;continue}if(!V[S])q.error({module:R,dependency:S,msg:`${Q} \u4F9D\u8D56\u672A\u627E\u5230`}),A=!1}}if(!A)return!1;let M=(_)=>{if(J.has(_))return;if(U.has(_)){q.error({module:_,msg:`${Q} \u5FAA\u73AF\u4F9D\u8D56`}),A=!1;return}let R=V[_];if(!R)return;let C=G(R);U.add(_);for(let S of C)M(S);U.delete(_),J.add(_),Y.push(R)};for(let _ of $){let R=X(_);M(R)}return A?Y:!1}async function oG($){let Z=[],Q=$.filter((G)=>{let Y=G.moduleName;if(typeof Y!=="string"||Y.trim()==="")return!1;if((Object.hasOwn(G,"enable")?G.enable:void 0)===!1)return!1;return!0}),X=SZ(Q,{moduleLabel:"\u94A9\u5B50"});if(X===!1)throw new D({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let G of X){let Y=G.moduleName,J=Object.hasOwn(G,"deps")?G.deps:void 0,U=Array.isArray(J)?J.filter((M)=>typeof M==="string"):[],V=Object.hasOwn(G,"handler")?G.handler:void 0;if(typeof V!=="function")throw new D({kind:"validation",message:`Hook '${Y}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"hook",operation:"load",hook:Y}});let A=V;Z.push({name:Y,enable:!0,deps:U,handler:A})}return Z}$0();async function lG($,Z){let Q=[],X=$.filter((Y)=>{let J=Y.moduleName;if(typeof J!=="string"||J.trim()==="")return!1;if((Object.hasOwn(Y,"enable")?Y.enable:void 0)===!1)return!1;return!0}),G=SZ(X,{moduleLabel:"\u63D2\u4EF6"});if(G===!1)throw new D({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Y of G){let J=Y.moduleName,U=Object.hasOwn(Y,"deps")?Y.deps:void 0,V=Array.isArray(U)?U.filter((_)=>typeof _==="string"):[],A=Object.hasOwn(Y,"handler")?Y.handler:void 0;if(typeof A!=="function")throw new D({kind:"validation",message:`\u63D2\u4EF6 '${J}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"plugin",operation:"load",plugin:J}});let M=A;try{let _=await M(Z);Z[J]=_,Q.push({name:J,enable:!0,deps:V,handler:M})}catch(_){throw q.error({err:_,plugin:J,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${J}`,logged:!0,cause:_,meta:{subsystem:"plugin",operation:"init",plugin:J}})}}return Q}qZ();$0();function rG($,Z){let Q=$.headers.get("x-forwarded-for");if(typeof Q==="string"&&Q.trim()){let U=Q.split(",")[0];if(typeof U==="string"&&U.trim())return U.trim()}let X=$.headers.get("x-real-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("cf-connecting-ip");if(typeof G==="string"&&G.trim())return G.trim();let Y=$.headers.get("x-client-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();let J=$.headers.get("true-client-ip");if(typeof J==="string"&&J.trim())return J.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 C$($,Z,Q=1,X=null,G=null,Y=null){if($.requestId)q.info({event:"request_blocked",reason:Z,reasonCode:Y,code:Q,detail:G,msg:"request blocked"});return Response.json({code:Q,msg:Z,data:X,detail:G},{headers:$.corsHeaders})}function hQ($){if($.api&&$.requestId)q.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 Q=JSON.stringify(Z,(X,G)=>typeof G==="bigint"?G.toString():G);return new Response(Q,{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 iG($,Z,Q){return async(X,G)=>{let Y=tX(),U=new URL(X.url).pathname||"/",V=rG(X,G),A=Date.now(),M={method:X.method,body:{},user:{},req:X,now:A,ip:V,headers:X.headers,route:U,requestId:Y,corsHeaders:{"X-Request-ID":Y}},_=$.get(U);if(_)M.api=_;return $G({requestId:Y,method:X.method,route:U,ip:V,now:A},async()=>{try{for(let R of Z)if(await R.handler(Q,M),M.response)return M.response;if(M.api&&X.method!=="OPTIONS"){let R={event:"request",apiName:M.api.name};if(M.body&&Object.keys(M.body).length>0)R.body=M.body;R.msg="request",q.info(R)}if(!M.api){if(X.method!=="OPTIONS")M.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:M.corsHeaders})}else if(M.api.handler){let R=await M.api.handler(Q,M);if(R instanceof Response)M.response=R;else M.result=R}return hQ(M)}catch(R){let C=M.api?U:X.url;return q.error({err:R,path:C,msg:"\u8BF7\u6C42\u9519\u8BEF"}),M.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},hQ(M)}})}}P$();$0();P$();import{fileURLToPath as yH}from"url";var hH=yH(import.meta.url),S$=BZ(hH);var W5=N$(S$).endsWith("/dist")?S$:o(S$,"dist"),U5=o(S$,"checks"),V5=o(S$,"plugins"),O5=o(S$,"hooks"),_5=o(S$,"apis"),A5=o(S$,"tables"),s0=process.cwd(),M5=o(s0,"checks"),F5=o(s0,"plugins"),K5=o(s0,"hooks"),z5=o(s0,"apis"),R5=o(s0,"tables"),I5=o(s0,"addons");function wZ($,Z={}){let Q=Z.origin||"*";return{"Access-Control-Allow-Origin":Q==="*"?$.headers.get("origin")||"*":Q,"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 tG($=void 0){return async(Z)=>{let Q=wZ(Z,$),X=new URL(Z.url),G=o(s0,"public",X.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:Q});let Y=Bun.file(G);if(await Y.exists())return new Response(Y,{headers:{"Content-Type":Y.type||"application/octet-stream",...Q}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:Q})}catch(Y){return q.error({err:Y,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:Q})}}}$0();u0();var bH=($)=>{let Z=$.split("/").map((Y)=>Y.trim()).filter((Y)=>Y.length>0),X=(Z[1]||"")==="addon"?4:3,G=Z.slice(0,Math.min(X,Z.length));if(G.length===0)return"";return`/${G.join("/")}`};async function aG($,Z){if(!$.db)throw new D({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new D({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){q.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let G=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],Y=iX(G,(M)=>M.path),J=[],U=[],V=[],A=new Set;for(let M of Z){if(M.type!=="api")continue;let _=M,R=_.path,C=_.name,S=_.addonName;if(typeof R!=="string"||R.trim()==="")continue;if(typeof C!=="string"||C.trim()==="")continue;let w=typeof S==="string"?S:"",N=_.auth,T=N===!1||N===0?0:1,E=bH(R);A.add(R);let v=Y[R];if(v){if(C!==v.name||R!==v.path||w!==v.addonName||E!==v.parentPath||T!==v.auth)U.push({id:v.id,name:C,path:R,parentPath:E,addonName:w,auth:T})}else J.push({name:C,path:R,parentPath:E,addonName:w,auth:T})}for(let M of G)if(!A.has(M.path))V.push(M.id);if(U.length>0)try{await $.db.updBatch("addon_admin_api",U.map((M)=>{return{id:M.id,data:{name:M.name,path:M.path,parentPath:M.parentPath,addonName:M.addonName,auth:M.auth}}}))}catch(M){q.error({err:M,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(J.length>0)try{await $.db.insBatch("addon_admin_api",J.map((M)=>{return{name:M.name,path:M.path,parentPath:M.parentPath,addonName:M.addonName,auth:M.auth}}))}catch(M){q.error({err:M,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(V.length>0)try{await $.db.delForceBatch("addon_admin_api",V)}catch(M){q.error({err:M,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function eG($){if(!$.cache)throw new D({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 cH}from"crypto";class m${static md5($,Z="hex"){let Q=new Bun.CryptoHasher("md5");return Q.update($),Q.digest(Z)}static hmacMd5($,Z,Q="hex"){let X=new Bun.CryptoHasher("md5",$);return X.update(Z),X.digest(Q)}static sha1($,Z="hex"){let Q=new Bun.CryptoHasher("sha1");return Q.update($),Q.digest(Z)}static hmacSha1($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha1",$);return X.update(Z),X.digest(Q)}static sha256($,Z="hex"){let Q=new Bun.CryptoHasher("sha256");return Q.update($),Q.digest(Z)}static rsaSha256($,Z,Q="hex"){let X=cH("RSA-SHA256");return X.update($),X.sign(Z,Q)}static hmacSha256($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha256",$);return X.update(Z),X.digest(Q)}static sha512($,Z="hex"){let Q=new Bun.CryptoHasher("sha512");return Q.update($),Q.digest(Z)}static hmacSha512($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha512",$);return X.update(Z),X.digest(Q)}static hash($,Z,Q="hex"){let X=new Bun.CryptoHasher($);return X.update(Z),X.digest(Q)}static hmac($,Z,Q,X="hex"){let G=new Bun.CryptoHasher($,Z);return G.update(Q),G.digest(X)}static async hashFile($,Z="sha256",Q="hex"){let X=Bun.file($),G=new Bun.CryptoHasher(Z),J=X.stream().getReader();try{while(!0){let{done:U,value:V}=await J.read();if(U)break;G.update(V)}return G.digest(Q)}finally{J.releaseLock()}}static async hashPassword($,Z={}){let Q=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,Q)}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),Q=crypto.getRandomValues(new Uint8Array(Z)),X="";for(let G=0;G<Q.length;G++)X+=Q[G].toString(16).padStart(2,"0");return X.slice(0,$)}static fastHash($,Z=0){let Q=Bun.hash($,Z);return typeof Q==="bigint"?Number(Q):Q}}$0();async function $Y($,Z={}){if(!Z.devPassword)return;if(!$.db)throw new D({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!$.cache)throw new D({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!(await $.db.tableExists("addon_admin_admin")).data){q.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){q.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){q.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){q.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let Q=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),X=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),G=await $.db.getOne({table:"addon_admin_role",where:{code:"dev"}}),Y={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:Q.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),apis:X.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),sort:0};if(typeof G.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:Y.name,description:Y.description,menus:Y.menus,apis:Y.apis,sort:Y.sort}});else await $.db.insData({table:"addon_admin_role",data:Y});let J={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await m$.hashPassword(m$.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:J.nickname,email:J.email,username:J.username,password:J.password,roleCode:J.roleCode,roleType:J.roleType}});else await $.db.insData({table:"addon_admin_admin",data:J});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 A of V)if((await $.db.getOne({table:"addon_admin_role",where:{code:A.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:A.code},data:{name:A.name,description:A.description,sort:A.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:A.code,name:A.name,description:A.description,menus:[],apis:[],sort:A.sort}})}$0();xQ();function pH($){let Z=$.config?.disableMenus,Q=Array.isArray(Z)?Z:[],X=[];for(let Y of Q){if(typeof Y!=="string")continue;let J=Y.trim();if(!J)continue;X.push(J)}if(X.length===0)return()=>!1;let G=X.map((Y)=>new Bun.Glob(Y));return(Y)=>{if(typeof Y!=="string")return!1;let J=Y.trim();if(!J)return!1;let U=[];if(U.push(J),J.startsWith("/"))U.push(J.slice(1));else U.push(`/${J}`);for(let V of G){let A=typeof V==="object"&&V!==null&&"match"in V?V.match:void 0;if(typeof A!=="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 M=A;for(let _ of U)if(M.call(V,_))return!0}return!1}}function ZY($,Z){let Q=[];for(let X of $){if(X===null||typeof X!=="object")continue;let G=typeof X.path==="string"?String(X.path).trim():"";if(G&&Z(G))continue;let Y=X.children,J=Array.isArray(Y)&&Y.length>0?ZY(Y,Z):[],U={};if(typeof X.name==="string")U.name=X.name;if(typeof X.path==="string")U.path=X.path;if(typeof X.sort==="number")U.sort=X.sort;if(typeof X.parentPath==="string")U.parentPath=X.parentPath;if(J.length>0)U.children=J;Q.push(U)}return Q}function uH($){let Z=new Map,Q=[];for(let X of $)Q.push({menu:X,parentPathFromTree:""});while(Q.length>0){let X=Q.pop(),G=X?X.menu:null;if(!G)continue;let Y=typeof G.path==="string"?G.path:"",J=G.children;if(J&&Array.isArray(J)&&J.length>0){let _=typeof Y==="string"?Y:"";for(let R of J)Q.push({menu:R,parentPathFromTree:_})}if(!Y)continue;let U=typeof G.name==="string"?G.name:"";if(!U)continue;let V=typeof G.sort==="number"?G.sort:999999,M=typeof G.parentPath==="string"?G.parentPath:typeof X?.parentPathFromTree==="string"?X.parentPathFromTree:BG(Y);Z.set(Y,{path:Y,name:U,sort:V,parentPath:M})}return Z}async function QY($,Z){if(!$.db)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){q.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let Q=pH($),X=ZY(Z,Q),G=uH(X),Y=new Set;for(let U of G.keys())Y.add(U);let J="addon_admin_menu";await $.db.trans(async(U)=>{let A=(await U.getAll({table:J,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],M=A.filter((E)=>typeof E?.state==="number"&&E.state>=0),_=new Map,R=new Set,C=new Map;for(let E of M){if(typeof E?.path!=="string"||!E.path)continue;if(typeof E?.id!=="number")continue;if(Q(E.path))continue;let v=_.get(E.path);if(!v){_.set(E.path,E);continue}let b=typeof v?.id==="number"?v.id:0,f=E.id;if(f>b){if(_.set(E.path,E),b>0)R.add(b);let m=C.get(E.path)||{keptId:f,removedIds:[]};if(m.keptId=f,b>0)m.removedIds.push(b);C.set(E.path,m)}else{if(f>0)R.add(f);let m=C.get(E.path)||{keptId:b,removedIds:[]};if(m.keptId=b,f>0)m.removedIds.push(f);C.set(E.path,m)}}if(C.size>0){let E=[];for(let v of C.entries()){let b=v[0],f=v[1];if(E.push({path:b,keptId:f.keptId,removedIds:f.removedIds}),E.length>=10)break}q.warn({table:J,duplicatePaths:C.size,duplicateIds:R.size,examples:E,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 S=[],w=[];for(let E of G.values()){let v=_.get(E.path);if(v){let b=typeof v.parentPath==="string"?v.parentPath:"";if(v.name!==E.name||v.sort!==E.sort||b!==E.parentPath)S.push({id:v.id,data:{name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort}})}else w.push({name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort})}if(S.length>0)await U.updBatch(J,S);if(w.length>0)await U.insBatch(J,w);let N=new Set;for(let E of M){if(typeof E?.path!=="string"||!E.path)continue;if(!Y.has(E.path)){if(typeof E?.id==="number")N.add(E.id)}}for(let E of R)if(typeof E==="number"&&E>0)N.add(E);for(let E of A){if(typeof E?.path!=="string"||!E.path)continue;if(!Q(E.path))continue;if(typeof E?.id==="number"&&E.id>0)N.add(E.id)}let T=Array.from(N);if(T.length>0)await U.delForceBatch(J,T)})}$0();function t0($){let Z=String($.type??"").trim(),Q=typeof $.input==="string"?$.input.trim():"",X=CZ(Z,Q),G=$.default??null;if(G===null){if(X.input==="array"||X.input==="array_number"||X.input==="array_integer")G="[]"}return{name:$.name,type:X.type,input:X.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:G,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function cQ($){return String($).replace(/"/g,"\\\"")}function pQ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let Q of $)Z.push(pQ(Q));return Z}return String($)}function mH($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function dH($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function bQ($){if(mH($))return $;if(Array.isArray($)){let Z=[];for(let Q of $){let X=bQ(Q);if(X===null)return null;Z.push(X)}return Z}if(dH($)){let Z={};for(let[Q,X]of Object.entries($)){if(X===void 0)continue;let G=bQ(X);if(G===null)return null;Z[Q]=G}return Z}return null}function XY($){if(!Array.isArray($))return[];let Z=[];for(let Q of $){if(Q===null){Z.push(null);continue}if(typeof Q==="string"||typeof Q==="number"||typeof Q==="boolean"){Z.push(Q);continue}if(typeof Q==="bigint"){Z.push(String(Q));continue}if(Q instanceof Date){Z.push(Q);continue}let X=bQ(Q);if(X!==null){Z.push(X);continue}Z.push(String(Q))}return Z}function w$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}u0();class k{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",enum:"ENUM",datetime:"DATETIME",timestamp:"TIMESTAMP",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 new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});if(!$.config)throw new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.config \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});this.dbName=String($.config.db?.database||""),this.db=$.db}async run($){try{if(!Array.isArray($))throw new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1A\u8BF7\u4F20\u5165\u591A\u4E2A\u8868\u5B9A\u4E49\u7EC4\u6210\u7684\u6570\u7EC4",noLog:!0,meta:{subsystem:"syncTable",operation:"run"}});await k.ensureDbVersion(this.db);let Z=[],Q=[];for(let G of $){if(!G||G.type!=="table")continue;let Y=G.source==="addon"?`addon_${c(G.addonName)}_${c(G.fileName)}`:c(G.fileName),J=G.content;for(let A of Object.values(J))k.normalizeFieldDefinitionInPlace(A);let U=await k.tableExists(this.db,this.dbName,Y),V={item:G,tableName:Y,tableFields:J,existsTable:U,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(U){let A=await k.getTableColumns(this.db,this.dbName,Y),M=await k.getTableIndexes(this.db,this.dbName,Y),_=k.collectIncompatibleTypeChanges(Y,A,J);for(let R of _)Q.push(R);V.existingColumns=A,V.existingIndexes=M}Z.push(V)}k.throwIfIncompatibleTypeChanges(Q);for(let G of Z){if(!G.existsTable)continue;if(!G.existingColumns||!G.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${G.tableName}\uFF09`);let Y=k.buildTablePlan({tableName:G.tableName,fields:G.tableFields,existingColumns:G.existingColumns,existingIndexes:G.existingIndexes});G.plan=Y.plan,G.planSummary=Y.summary,G.planDetails=Y.details;for(let J of Y.incompatibleTypeChanges)Q.push(J)}k.throwIfIncompatibleTypeChanges(Q);let X=[];for(let G of Z){let{item:Y,tableName:J,tableFields:U,existsTable:V}=G;try{if(V){let{plan:A,planSummary:M,planDetails:_}=G;if(A&&A.changed&&M&&_){let R=`[\u8868 ${J}] \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}`,C=_.fieldChanges.flatMap((N)=>N.changes.map((T)=>{let E=String(T.current??""),v=String(T.expected??"");return`- ${N.dbFieldName}.${T.type}: ${E} -> ${v}`})),S=_.indexChanges.map((N)=>{let T=`idx_${N.fieldName}`===N.indexName?N.indexName:N.indexName;if(N.action==="create")return`- index.${T}: \u65E0 -> ${N.indexName}(${N.fieldName})`;return`- index.${T}: ${N.indexName}(${N.fieldName}) -> \u65E0`}),w=[];for(let N of C)w.push(N);for(let N of S)w.push(N);q.debug(R);for(let N of w)q.debug(`[\u8868 ${J}] \u53D8\u66F4\u660E\u7EC6 ${N}`);await k.applyTablePlan(this.db,J,A)}}else await k.createTable(this.db,J,U),X.push(J)}catch(A){let M=String(A?.message||A),_=A?.sqlInfo;throw q.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:J,operation:V?"modifyTable":"createTable",source:Y.source,sourceName:Y.sourceName,addonName:Y.addonName,fileName:Y.fileName,filePath:Y.filePath,errorMessage:M,sqlInfo:_?{sql:_.sql,params:_.params,duration:_.duration}:null,err:A}),A.__syncTableLogged=!0,A}}if(X.length>0){let G=[];G.push(`\u521B\u5EFA\u8868\u5217\u8868\uFF08\u5171${X.length}\u5F20\uFF09:`);for(let J of X)G.push(`- ${J}`);let Y=G.join(`
|
|
10
|
-
`);
|
|
11
|
-
`),noLog:!0,multiline:!0,meta:{subsystem:"syncTable",operation:"precheck"}})}static truncateForLog($,Z){let Q=String($);if(Z<=0)return"";if(Q.length<=Z)return Q;let X=Math.max(0,Math.floor(Z*0.6)),G=Math.max(0,Z-X),Y=Q.slice(0,X),J=Q.slice(Math.max(0,Q.length-G));return`${Y} \u2026(truncated, total=${Q.length})\u2026 ${J}`}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($),Q=[];if(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/i.test(Z)){let Y=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/gi,"ALGORITHM=COPY");if(Q.push({stmt:Y,reason:"ALGORITHM \u2192 COPY"}),/\bLOCK\s*=\s*NONE\b/i.test(Y))Q.push({stmt:Y.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=SHARED"),reason:"ALGORITHM \u2192 COPY, LOCK=SHARED"}),Q.push({stmt:Y.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=EXCLUSIVE"),reason:"ALGORITHM \u2192 COPY, LOCK=EXCLUSIVE"})}let X=k.stripAlgorithmAndLock(Z);if(X!==Z)Q.push({stmt:X,reason:"\u79FB\u9664 ALGORITHM/LOCK"});let G=[];for(let Y of Q){if(!Y.stmt||Y.stmt.trim()==="")continue;if(Y.stmt===Z)continue;if(G.some((J)=>J.stmt===Y.stmt))continue;G.push(Y)}return G}static async executeDDLSafely($,Z){try{return await $.unsafe(Z),!0}catch(Q){let X=k.buildDdlFallbackCandidates(Z),G=[],Y=Q;for(let
|
|
12
|
-
SQL: ${
|
|
13
|
-
\u964D\u7EA7: ${V}`);if(Q?.sqlInfo)A.sqlInfo=Q.sqlInfo;if(!A.sqlInfo&&Y?.sqlInfo)A.sqlInfo=Y.sqlInfo;throw A}}static isCompatibleTypeChange($,Z){let Q=String($||"").toLowerCase(),X=String(Z||"").toLowerCase();if(Q===X)return!1;let G=Q.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),Y=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(k.TEXT_FAMILY.has(G)&&k.TEXT_FAMILY.has(Y))return!0;if(k.INT_TYPES.has(G)&&k.INT_TYPES.has(Y)){let J=["tinyint","smallint","mediumint","int","bigint"],
|
|
14
|
-
`),J=k.quoteIdentifier(Z),{ENGINE:
|
|
8
|
+
`)}catch{}}async flush(){await r1()}configure($){t1($)}setMock($){a1($)}async shutdown(){await HG()}}var n1,YG,h$,s1,B$=null,J$=null,H$=null,W$=null,n0,K;var Z0=A$(()=>{eX();m0();qZ();n1=process.cwd(),YG=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],h$={maxStringLen:200,maxArrayItems:500,sanitizeDepth:5,sanitizeNodes:5000,sanitizeObjectKeys:500,sensitiveKeyMatcher:LQ({builtinPatterns:YG,userPatterns:[]})};s1=(()=>{try{return p1()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};K=new UG});import{isAbsolute as JH}from"path";import{pathToFileURL as HH}from"url";function WH($){return/^[a-zA-Z]:[\\/]/.test($)}function UH($){if(JH($)||WH($))return HH($).href;return $}async function L$($,Z){try{let G=($.endsWith(".json")?await import(UH($),{with:{type:"json"}}):await import($))?.default;if(G===null||G===void 0)return Z;let Y=KQ(Z),J=KQ(G);if(Y!==J)return K.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:Y,actualType:J}),Z;return G}catch(Q){return K.warn({err:Q,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var BZ=A$(()=>{Z0();m0()});function JZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(zH,(Z)=>Z.toUpperCase())}function jH(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function DQ($,Z){let Q="",X=0,G=-1,Y=0,J=null;for(let W=0;W<=$.length;++W){if(W<$.length)J=$[W];else if(J==="/")break;else J="/";if(J==="/"){if(G===W-1||Y===1);else if(Y===2){if(Q.length<2||X!==2||Q[Q.length-1]!=="."||Q[Q.length-2]!=="."){if(Q.length>2){let V=Q.lastIndexOf("/");if(V===-1)Q="",X=0;else Q=Q.slice(0,V),X=Q.length-1-Q.lastIndexOf("/");G=W,Y=0;continue}else if(Q.length>0){Q="",X=0,G=W,Y=0;continue}}if(Z)Q+=Q.length>0?"/..":"..",X=2}else{if(Q.length>0)Q+=`/${$.slice(G+1,W)}`;else Q=$.slice(G+1,W);X=W-G-1}G=W,Y=0}else if(J==="."&&Y!==-1)++Y;else Y=-1}return Q}var zH,KH,RH,RG,KG,IH,qH,N$=function($){if($.length===0)return".";$=JZ($);let Z=$.match(KH),Q=c$($),X=$[$.length-1]==="/";if($=DQ($,!Q),$.length===0){if(Q)return"/";return X?"./":"."}if(X)$+="/";if(RG.test($))$+="/";if(Z){if(!Q)return`//./${$}`;return`//${$}`}return Q&&!c$($)?`/${$}`:$},r=function(...$){let Z="";for(let Q of $){if(!Q)continue;if(Z.length>0){let X=Z[Z.length-1]==="/",G=Q[0]==="/";if(X&&G)Z+=Q.slice(1);else Z+=X||G?Q:`/${Q}`}else Z+=Q}return N$(Z)},YZ=function(...$){$=$.map((X)=>JZ(X));let Z="",Q=!1;for(let X=$.length-1;X>=-1&&!Q;X--){let G=X>=0?$[X]:jH();if(!G||G.length===0)continue;Z=`${G}/${Z}`,Q=c$(G)}if(Z=DQ(Z,!Q),Q&&!c$(Z))return`/${Z}`;return Z.length>0?Z:"."},c$=function($){return RH.test($)},IG=function($){if($==="..")return"";let Z=IH.exec(JZ($));return Z&&Z[1]||""},kQ=function($,Z){let Q=YZ($).replace(KG,"$1").split("/"),X=YZ(Z).replace(KG,"$1").split("/");if(X[0][1]===":"&&Q[0][1]===":"&&Q[0]!==X[0])return X.join("/");let G=[...Q];for(let Y of G){if(X[0]!==Y)break;Q.shift(),X.shift()}return[...Q.map(()=>".."),...X].join("/")},LZ=function($){let Z=JZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&RG.test(Z[0]))Z[0]+="/";return Z.join("/")||(c$($)?"/":".")},qG=function($,Z){let Q=JZ($).split("/"),X="";for(let G=Q.length-1;G>=0;G--){let Y=Q[G];if(Y){X=Y;break}}return Z&&X.endsWith(Z)?X.slice(0,-Z.length):X},HZ=function($){let Z=qH.exec($)?.[0]?.replace(/\\/g,"/")||"",Q=qG($),X=IG(Q);return{root:Z,dir:LZ($),base:Q,ext:X,name:Q.slice(0,Q.length-X.length)}};var jG=A$(()=>{zH=/^[A-Za-z]:\//;KH=/^[/\\]{2}/,RH=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,RG=/^[A-Za-z]:$/,KG=/^\/([A-Za-z]:)?$/,IH=/.(\.[^./]+|\.)$/,qH=/^[/\\]|^[a-zA-Z]:[/\\]/});var P$=A$(()=>{jG()});import{statSync as BH}from"fs";var PZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return BH(r($,Z.name)).isDirectory()}catch{return!1}};var vQ=A$(()=>{P$()});import{existsSync as p$}from"fs";import{readdir as LH}from"fs/promises";function PH($){if(!$||typeof $!=="object")return null;let Z=$,Q=Z.title;if(typeof Q!=="string"||!Q)return null;let X=Z.order,G=typeof X==="number"&&Number.isFinite(X)&&Number.isInteger(X)&&X>=1?X:void 0;if(G===void 0)return{title:Q};return{title:Q,order:G}}async function BG($,Z,Q=""){if(!p$($))return[];let X=[],G=await LH($,{withFileTypes:!0});for(let Y of G){if(!PZ($,Y)||Y.name==="components")continue;let J=r($,Y.name),W=r(J,"meta.json"),V=r(J,"index.vue"),A=null;if(!p$(W))continue;if(!p$(V)){K.warn({path:J,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 F=await L$(W,{});if(A=PH(F),!A?.title){K.warn({path:W,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(!A?.title)continue;let _=String(Y.name).replace(/_\d+$/,""),I;if(_==="index")I=Q;else I=Q?`${Q}/${_}`:`/${_}`;let P=Z?I?`${Z}${I}`:Z:I||"/",C={name:A.title,path:P,sort:A.order??999999},w=await BG(J,Z,I);if(w.length>0)C.children=w;X.push(C)}return X.sort((Y,J)=>(Y.sort??999999)-(J.sort??999999)),X}function LG($){let Z=$.split("/").filter((Q)=>Boolean(Q));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function PG($){let Z=[];for(let X of $){let G=r(X.rootDir,"adminViews"),Y=r(X.rootDir,"views","admin"),J=p$(G)?G:p$(Y)?Y:null;if(!J)continue;try{let W=`/${X.source}/${X.name}`,V=await BG(J,W);if(V.length>0)for(let A of V)Z.push(A)}catch(W){K.warn({err:W,addon:X.name,addonSource:X.source,dir:J,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let Q=r(process.cwd(),"menus.json");if(p$(Q)){let X=await L$(Q,[]);if(Array.isArray(X)&&X.length>0)for(let G of X)Z.push(G)}return Z}var xQ=A$(()=>{P$();Z0();BZ();vQ()});var l$=t((D7,TY)=>{var EY={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 o$ extends Error{constructor($,Z,Q){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,Q)for(let X in Q)this[X]=Q[X]}}o$.codes=EY;o$.wrap=function($,Z,Q){if($ instanceof o$)return $;return new o$(Z,Q,{originalError:$})};TY.exports={TokenError:o$,TOKEN_ERROR_CODES:EY}});var aQ=t((k7,NY)=>{var{TokenError:V$}=l$();function uW({complete:$,checkTyp:Z},Q){if(Q instanceof Buffer)Q=Q.toString("utf-8");else if(typeof Q!=="string")throw new V$(V$.codes.invalidType,"The token must be a string or a buffer.");let X=Q.indexOf("."),G=Q.lastIndexOf(".");if(X===-1||X>=G)throw new V$(V$.codes.malformed,"The token is malformed.");let Y=!1;try{let J=JSON.parse(Buffer.from(Q.slice(0,X),"base64").toString("utf-8"));if(Z&&J.typ!==Z)throw new V$(V$.codes.invalidType,`The type must be "${Z}".`,{header:J});Y=!0;let W=Buffer.from(Q.slice(X+1,G),"base64").toString("utf-8");if(W=JSON.parse(W),!W||typeof W!=="object")throw new V$(V$.codes.invalidPayload,"The payload must be an object",{payload:W});return $?{header:J,payload:W,signature:Q.slice(G+1),input:Q.slice(0,G)}:W}catch(J){throw V$.wrap(J,V$.codes.malformed,`The token ${Y?"payload":"header"} is not a valid base64url serialized JSON.`)}}NY.exports=function(Z={}){let Q=Z.complete||!1,X=Z.checkTyp;return uW.bind(null,{complete:Q,checkTyp:X})}});var kY=t((v7,DY)=>{function O$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")O$.prototype[Symbol.iterator]=function(){return this};O$.of=function(){var $=arguments,Z=$.length,Q=0;return new O$(function(){if(Q>=Z)return{done:!0};return{done:!1,value:$[Q++]}})};O$.empty=function(){var $=new O$(function(){return{done:!0}});return $};O$.fromSequence=function($){var Z=0,Q=$.length;return new O$(function(){if(Z>=Q)return{done:!0};return{done:!1,value:$[Z++]}})};O$.is=function($){if($ instanceof O$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};DY.exports=O$});var vY=t((mW)=>{mW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";mW.SYMBOL_SUPPORT=typeof Symbol<"u"});var eQ=t((f7,fY)=>{var xY=vY(),sW=xY.ARRAY_BUFFER_SUPPORT,oW=xY.SYMBOL_SUPPORT;fY.exports=function(Z,Q){var X,G,Y,J,W;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof Q!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||sW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(Y=0,J=Z.length;Y<J;Y++)Q(Z[Y],Y);return}if(typeof Z.forEach==="function"){Z.forEach(Q);return}if(oW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){X=Z,Y=0;while(W=X.next(),W.done!==!0)Q(W.value,Y),Y++;return}for(G in Z)if(Z.hasOwnProperty(G))Q(Z[G],G);return}});var $X=t((Z8)=>{var lW=Math.pow(2,8)-1,rW=Math.pow(2,16)-1,iW=Math.pow(2,32)-1,tW=Math.pow(2,7)-1,aW=Math.pow(2,15)-1,eW=Math.pow(2,31)-1;Z8.getPointerArray=function($){var Z=$-1;if(Z<=lW)return Uint8Array;if(Z<=rW)return Uint16Array;if(Z<=iW)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};Z8.getSignedPointerArray=function($){var Z=$-1;if(Z<=tW)return Int8Array;if(Z<=aW)return Int16Array;if(Z<=eW)return Int32Array;return Float64Array};Z8.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 $8={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};Z8.getMinimalRepresentation=function($,Z){var Q=null,X=0,G,Y,J,W,V;for(W=0,V=$.length;W<V;W++)if(J=Z?Z($[W]):$[W],Y=Z8.getNumberType(J),G=$8[Y.name],G>X)X=G,Q=Y;return Q};Z8.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};Z8.concat=function(){var $=0,Z,Q,X;for(Z=0,X=arguments.length;Z<X;Z++)$+=arguments[Z].length;var G=new arguments[0].constructor($);for(Z=0,Q=0;Z<X;Z++)G.set(arguments[Z],Q),Q+=arguments[Z].length;return G};Z8.indices=function($){var Z=Z8.getPointerArray($),Q=new Z($);for(var X=0;X<$;X++)Q[X]=X;return Q}});var cY=t((V8)=>{var hY=eQ(),bY=$X();function H8($){return Array.isArray($)||bY.isTypedArray($)}function ZX($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function W8($){var Z=ZX($),Q=typeof Z==="number"?Array(Z):[],X=0;return hY($,function(G){Q[X++]=G}),Q}function U8($){var Z=ZX($),Q=typeof Z==="number"?bY.getPointerArray(Z):Array,X=typeof Z==="number"?Array(Z):[],G=typeof Z==="number"?new Q(Z):[],Y=0;return hY($,function(J){X[Y]=J,G[Y]=Y++}),[X,G]}V8.isArrayLike=H8;V8.guessLength=ZX;V8.toArray=W8;V8.toArrayWithIndices=U8});var XX=t((h7,pY)=>{var QX=kY(),M8=eQ(),z8=$X(),K8=cY();function d0($,Z,Q){if(arguments.length<2)Q=$,$=null,Z=null;if(this.capacity=Q,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 X=z8.getPointerArray(Q);this.forward=new X(Q),this.backward=new X(Q),this.K=typeof $==="function"?new $(Q):Array(Q),this.V=typeof Z==="function"?new Z(Q):Array(Q),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 Q=this.backward[$],X=this.forward[$];if(this.tail===$)this.tail=Q;else this.backward[X]=Q;return this.forward[Q]=X,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var Q=this.items[$];if(typeof Q<"u"){this.splayOnTop(Q),this.V[Q]=Z;return}if(this.size<this.capacity)Q=this.size++;else Q=this.tail,this.tail=this.backward[Q],delete this.items[this.K[Q]];this.items[$]=Q,this.K[Q]=$,this.V[Q]=Z,this.forward[Q]=this.head,this.backward[this.head]=Q,this.head=Q};d0.prototype.setpop=function($,Z){var Q=null,X=null,G=this.items[$];if(typeof G<"u")return this.splayOnTop(G),Q=this.V[G],this.V[G]=Z,{evicted:!1,key:$,value:Q};if(this.size<this.capacity)G=this.size++;else G=this.tail,this.tail=this.backward[G],Q=this.V[G],X=this.K[G],delete this.items[X];if(this.items[$]=G,this.K[G]=$,this.V[G]=Z,this.forward[G]=this.head,this.backward[this.head]=G,this.head=G,X)return{evicted:!0,key:X,value:Q};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 Q=0,X=this.size,G=this.head,Y=this.K,J=this.V,W=this.forward;while(Q<X)$.call(Z,J[G],Y[G],this),G=W[G],Q++};d0.prototype.keys=function(){var $=0,Z=this.size,Q=this.head,X=this.K,G=this.forward;return new QX(function(){if($>=Z)return{done:!0};var Y=X[Q];if($++,$<Z)Q=G[Q];return{done:!1,value:Y}})};d0.prototype.values=function(){var $=0,Z=this.size,Q=this.head,X=this.V,G=this.forward;return new QX(function(){if($>=Z)return{done:!0};var Y=X[Q];if($++,$<Z)Q=G[Q];return{done:!1,value:Y}})};d0.prototype.entries=function(){var $=0,Z=this.size,Q=this.head,X=this.K,G=this.V,Y=this.forward;return new QX(function(){if($>=Z)return{done:!0};var J=X[Q],W=G[Q];if($++,$<Z)Q=Y[Q];return{done:!1,value:[J,W]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),Q;while(Q=Z.next(),!Q.done)$.set(Q.value[0],Q.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,Q,X){if(arguments.length<2){if(X=K8.guessLength($),typeof X!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)X=Z,Z=null,Q=null;var G=new d0(Z,Q,X);return M8($,function(Y,J){G.set(J,Y)}),G};pY.exports=d0});var YX=t((uY,GX)=>{(function($,Z){function Q(B,H){if(!B)throw Error(H||"Assertion failed")}function X(B,H){B.super_=H;var O=function(){};O.prototype=H.prototype,B.prototype=new O,B.prototype.constructor=B}function G(B,H,O){if(G.isBN(B))return B;if(this.negative=0,this.words=null,this.length=0,this.red=null,B!==null){if(H==="le"||H==="be")O=H,H=10;this._init(B||0,H||10,O||"be")}}if(typeof $==="object")$.exports=G;else Z.BN=G;G.BN=G,G.wordSize=26;var Y;try{if(typeof window<"u"&&typeof window.Buffer<"u")Y=window.Buffer;else Y=I$("buffer").Buffer}catch(B){}G.isBN=function(H){if(H instanceof G)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===G.wordSize&&Array.isArray(H.words)},G.max=function(H,O){if(H.cmp(O)>0)return H;return O},G.min=function(H,O){if(H.cmp(O)<0)return H;return O},G.prototype._init=function(H,O,M){if(typeof H==="number")return this._initNumber(H,O,M);if(typeof H==="object")return this._initArray(H,O,M);if(O==="hex")O=16;Q(O===(O|0)&&O>=2&&O<=36),H=H.toString().replace(/\s+/g,"");var z=0;if(H[0]==="-")z++,this.negative=1;if(z<H.length){if(O===16)this._parseHex(H,z,M);else if(this._parseBase(H,O,z),M==="le")this._initArray(this.toArray(),O,M)}},G.prototype._initNumber=function(H,O,M){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 Q(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(M!=="le")return;this._initArray(this.toArray(),O,M)},G.prototype._initArray=function(H,O,M){if(Q(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 z=0;z<this.length;z++)this.words[z]=0;var j,L,S=0;if(M==="be"){for(z=H.length-1,j=0;z>=0;z-=3)if(L=H[z]|H[z-1]<<8|H[z-2]<<16,this.words[j]|=L<<S&67108863,this.words[j+1]=L>>>26-S&67108863,S+=24,S>=26)S-=26,j++}else if(M==="le"){for(z=0,j=0;z<H.length;z+=3)if(L=H[z]|H[z+1]<<8|H[z+2]<<16,this.words[j]|=L<<S&67108863,this.words[j+1]=L>>>26-S&67108863,S+=24,S>=26)S-=26,j++}return this.strip()};function J(B,H){var O=B.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 W(B,H,O){var M=J(B,O);if(O-1>=H)M|=J(B,O-1)<<4;return M}G.prototype._parseHex=function(H,O,M){this.length=Math.ceil((H.length-O)/6),this.words=Array(this.length);for(var z=0;z<this.length;z++)this.words[z]=0;var j=0,L=0,S;if(M==="be")for(z=H.length-1;z>=O;z-=2)if(S=W(H,O,z)<<j,this.words[L]|=S&67108863,j>=18)j-=18,L+=1,this.words[L]|=S>>>26;else j+=8;else{var R=H.length-O;for(z=R%2===0?O+1:O;z<H.length;z+=2)if(S=W(H,O,z)<<j,this.words[L]|=S&67108863,j>=18)j-=18,L+=1,this.words[L]|=S>>>26;else j+=8}this.strip()};function V(B,H,O,M){var z=0,j=Math.min(B.length,O);for(var L=H;L<j;L++){var S=B.charCodeAt(L)-48;if(z*=M,S>=49)z+=S-49+10;else if(S>=17)z+=S-17+10;else z+=S}return z}G.prototype._parseBase=function(H,O,M){this.words=[0],this.length=1;for(var z=0,j=1;j<=67108863;j*=O)z++;z--,j=j/O|0;var L=H.length-M,S=L%z,R=Math.min(L,L-S)+M,U=0;for(var q=M;q<R;q+=z)if(U=V(H,q,q+z,O),this.imuln(j),this.words[0]+U<67108864)this.words[0]+=U;else this._iaddn(U);if(S!==0){var x=1;U=V(H,q,H.length,O);for(q=0;q<S;q++)x*=O;if(this.imuln(x),this.words[0]+U<67108864)this.words[0]+=U;else this._iaddn(U)}this.strip()},G.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},G.prototype.clone=function(){var H=new G(null);return this.copy(H),H},G.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},G.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},G.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},G.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var A=["","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"],F=[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(G.prototype.toString=function(H,O){H=H||10,O=O|0||1;var M;if(H===16||H==="hex"){M="";var z=0,j=0;for(var L=0;L<this.length;L++){var S=this.words[L],R=((S<<z|j)&16777215).toString(16);if(j=S>>>24-z&16777215,z+=2,z>=26)z-=26,L--;if(j!==0||L!==this.length-1)M=A[6-R.length]+R+M;else M=R+M}if(j!==0)M=j.toString(16)+M;while(M.length%O!==0)M="0"+M;if(this.negative!==0)M="-"+M;return M}if(H===(H|0)&&H>=2&&H<=36){var U=F[H],q=_[H];M="";var x=this.clone();x.negative=0;while(!x.isZero()){var f=x.modn(q).toString(H);if(x=x.idivn(q),!x.isZero())M=A[U-f.length]+f+M;else M=f+M}if(this.isZero())M="0"+M;while(M.length%O!==0)M="0"+M;if(this.negative!==0)M="-"+M;return M}Q(!1,"Base should be between 2 and 36")},G.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)Q(!1,"Number can only safely store up to 53 bits");return this.negative!==0?-H:H},G.prototype.toJSON=function(){return this.toString(16)},G.prototype.toBuffer=function(H,O){return Q(typeof Y<"u"),this.toArrayLike(Y,H,O)},G.prototype.toArray=function(H,O){return this.toArrayLike(Array,H,O)},G.prototype.toArrayLike=function(H,O,M){var z=this.byteLength(),j=M||Math.max(1,z);Q(z<=j,"byte array longer than desired length"),Q(j>0,"Requested array length <= 0"),this.strip();var L=O==="le",S=new H(j),R,U,q=this.clone();if(!L){for(U=0;U<j-z;U++)S[U]=0;for(U=0;!q.isZero();U++)R=q.andln(255),q.iushrn(8),S[j-U-1]=R}else{for(U=0;!q.isZero();U++)R=q.andln(255),q.iushrn(8),S[U]=R;for(;U<j;U++)S[U]=0}return S},Math.clz32)G.prototype._countBits=function(H){return 32-Math.clz32(H)};else G.prototype._countBits=function(H){var O=H,M=0;if(O>=4096)M+=13,O>>>=13;if(O>=64)M+=7,O>>>=7;if(O>=8)M+=4,O>>>=4;if(O>=2)M+=2,O>>>=2;return M+O};G.prototype._zeroBits=function(H){if(H===0)return 26;var O=H,M=0;if((O&8191)===0)M+=13,O>>>=13;if((O&127)===0)M+=7,O>>>=7;if((O&15)===0)M+=4,O>>>=4;if((O&3)===0)M+=2,O>>>=2;if((O&1)===0)M++;return M},G.prototype.bitLength=function(){var H=this.words[this.length-1],O=this._countBits(H);return(this.length-1)*26+O};function I(B){var H=Array(B.bitLength());for(var O=0;O<H.length;O++){var M=O/26|0,z=O%26;H[O]=(B.words[M]&1<<z)>>>z}return H}G.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var O=0;O<this.length;O++){var M=this._zeroBits(this.words[O]);if(H+=M,M!==26)break}return H},G.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},G.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},G.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},G.prototype.isNeg=function(){return this.negative!==0},G.prototype.neg=function(){return this.clone().ineg()},G.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},G.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()},G.prototype.ior=function(H){return Q((this.negative|H.negative)===0),this.iuor(H)},G.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},G.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},G.prototype.iuand=function(H){var O;if(this.length>H.length)O=H;else O=this;for(var M=0;M<O.length;M++)this.words[M]=this.words[M]&H.words[M];return this.length=O.length,this.strip()},G.prototype.iand=function(H){return Q((this.negative|H.negative)===0),this.iuand(H)},G.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},G.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},G.prototype.iuxor=function(H){var O,M;if(this.length>H.length)O=this,M=H;else O=H,M=this;for(var z=0;z<M.length;z++)this.words[z]=O.words[z]^M.words[z];if(this!==O)for(;z<O.length;z++)this.words[z]=O.words[z];return this.length=O.length,this.strip()},G.prototype.ixor=function(H){return Q((this.negative|H.negative)===0),this.iuxor(H)},G.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},G.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},G.prototype.inotn=function(H){Q(typeof H==="number"&&H>=0);var O=Math.ceil(H/26)|0,M=H%26;if(this._expand(O),M>0)O--;for(var z=0;z<O;z++)this.words[z]=~this.words[z]&67108863;if(M>0)this.words[z]=~this.words[z]&67108863>>26-M;return this.strip()},G.prototype.notn=function(H){return this.clone().inotn(H)},G.prototype.setn=function(H,O){Q(typeof H==="number"&&H>=0);var M=H/26|0,z=H%26;if(this._expand(M+1),O)this.words[M]=this.words[M]|1<<z;else this.words[M]=this.words[M]&~(1<<z);return this.strip()},G.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 M,z;if(this.length>H.length)M=this,z=H;else M=H,z=this;var j=0;for(var L=0;L<z.length;L++)O=(M.words[L]|0)+(z.words[L]|0)+j,this.words[L]=O&67108863,j=O>>>26;for(;j!==0&&L<M.length;L++)O=(M.words[L]|0)+j,this.words[L]=O&67108863,j=O>>>26;if(this.length=M.length,j!==0)this.words[this.length]=j,this.length++;else if(M!==this)for(;L<M.length;L++)this.words[L]=M.words[L];return this},G.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)},G.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 M=this.cmp(H);if(M===0)return this.negative=0,this.length=1,this.words[0]=0,this;var z,j;if(M>0)z=this,j=H;else z=H,j=this;var L=0;for(var S=0;S<j.length;S++)O=(z.words[S]|0)-(j.words[S]|0)+L,L=O>>26,this.words[S]=O&67108863;for(;L!==0&&S<z.length;S++)O=(z.words[S]|0)+L,L=O>>26,this.words[S]=O&67108863;if(L===0&&S<z.length&&z!==this)for(;S<z.length;S++)this.words[S]=z.words[S];if(this.length=Math.max(this.length,S),z!==this)this.negative=1;return this.strip()},G.prototype.sub=function(H){return this.clone().isub(H)};function P(B,H,O){O.negative=H.negative^B.negative;var M=B.length+H.length|0;O.length=M,M=M-1|0;var z=B.words[0]|0,j=H.words[0]|0,L=z*j,S=L&67108863,R=L/67108864|0;O.words[0]=S;for(var U=1;U<M;U++){var q=R>>>26,x=R&67108863,f=Math.min(U,H.length-1);for(var b=Math.max(0,U-B.length+1);b<=f;b++){var d=U-b|0;z=B.words[d]|0,j=H.words[b]|0,L=z*j+x,q+=L/67108864|0,x=L&67108863}O.words[U]=x|0,R=q|0}if(R!==0)O.words[U]=R|0;else O.length--;return O.strip()}var C=function(H,O,M){var z=H.words,j=O.words,L=M.words,S=0,R,U,q,x=z[0]|0,f=x&8191,b=x>>>13,d=z[1]|0,a=d&8191,Q0=d>>>13,R$=z[2]|0,X0=R$&8191,J0=R$>>>13,NX=z[3]|0,U0=NX&8191,V0=NX>>>13,DX=z[4]|0,O0=DX&8191,_0=DX>>>13,kX=z[5]|0,A0=kX&8191,F0=kX>>>13,vX=z[6]|0,M0=vX&8191,z0=vX>>>13,xX=z[7]|0,K0=xX&8191,R0=xX>>>13,fX=z[8]|0,I0=fX&8191,q0=fX>>>13,gX=z[9]|0,j0=gX&8191,B0=gX>>>13,yX=j[0]|0,L0=yX&8191,P0=yX>>>13,hX=j[1]|0,S0=hX&8191,C0=hX>>>13,bX=j[2]|0,w0=bX&8191,E0=bX>>>13,cX=j[3]|0,T0=cX&8191,N0=cX>>>13,pX=j[4]|0,D0=pX&8191,k0=pX>>>13,uX=j[5]|0,v0=uX&8191,x0=uX>>>13,mX=j[6]|0,f0=mX&8191,g0=mX>>>13,dX=j[7]|0,y0=dX&8191,h0=dX>>>13,nX=j[8]|0,b0=nX&8191,c0=nX>>>13,sX=j[9]|0,p0=sX&8191,u0=sX>>>13;M.negative=H.negative^O.negative,M.length=19,R=Math.imul(f,L0),U=Math.imul(f,P0),U=U+Math.imul(b,L0)|0,q=Math.imul(b,P0);var iZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(iZ>>>26)|0,iZ&=67108863,R=Math.imul(a,L0),U=Math.imul(a,P0),U=U+Math.imul(Q0,L0)|0,q=Math.imul(Q0,P0),R=R+Math.imul(f,S0)|0,U=U+Math.imul(f,C0)|0,U=U+Math.imul(b,S0)|0,q=q+Math.imul(b,C0)|0;var tZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(tZ>>>26)|0,tZ&=67108863,R=Math.imul(X0,L0),U=Math.imul(X0,P0),U=U+Math.imul(J0,L0)|0,q=Math.imul(J0,P0),R=R+Math.imul(a,S0)|0,U=U+Math.imul(a,C0)|0,U=U+Math.imul(Q0,S0)|0,q=q+Math.imul(Q0,C0)|0,R=R+Math.imul(f,w0)|0,U=U+Math.imul(f,E0)|0,U=U+Math.imul(b,w0)|0,q=q+Math.imul(b,E0)|0;var aZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(aZ>>>26)|0,aZ&=67108863,R=Math.imul(U0,L0),U=Math.imul(U0,P0),U=U+Math.imul(V0,L0)|0,q=Math.imul(V0,P0),R=R+Math.imul(X0,S0)|0,U=U+Math.imul(X0,C0)|0,U=U+Math.imul(J0,S0)|0,q=q+Math.imul(J0,C0)|0,R=R+Math.imul(a,w0)|0,U=U+Math.imul(a,E0)|0,U=U+Math.imul(Q0,w0)|0,q=q+Math.imul(Q0,E0)|0,R=R+Math.imul(f,T0)|0,U=U+Math.imul(f,N0)|0,U=U+Math.imul(b,T0)|0,q=q+Math.imul(b,N0)|0;var eZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(eZ>>>26)|0,eZ&=67108863,R=Math.imul(O0,L0),U=Math.imul(O0,P0),U=U+Math.imul(_0,L0)|0,q=Math.imul(_0,P0),R=R+Math.imul(U0,S0)|0,U=U+Math.imul(U0,C0)|0,U=U+Math.imul(V0,S0)|0,q=q+Math.imul(V0,C0)|0,R=R+Math.imul(X0,w0)|0,U=U+Math.imul(X0,E0)|0,U=U+Math.imul(J0,w0)|0,q=q+Math.imul(J0,E0)|0,R=R+Math.imul(a,T0)|0,U=U+Math.imul(a,N0)|0,U=U+Math.imul(Q0,T0)|0,q=q+Math.imul(Q0,N0)|0,R=R+Math.imul(f,D0)|0,U=U+Math.imul(f,k0)|0,U=U+Math.imul(b,D0)|0,q=q+Math.imul(b,k0)|0;var $Q=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+($Q>>>26)|0,$Q&=67108863,R=Math.imul(A0,L0),U=Math.imul(A0,P0),U=U+Math.imul(F0,L0)|0,q=Math.imul(F0,P0),R=R+Math.imul(O0,S0)|0,U=U+Math.imul(O0,C0)|0,U=U+Math.imul(_0,S0)|0,q=q+Math.imul(_0,C0)|0,R=R+Math.imul(U0,w0)|0,U=U+Math.imul(U0,E0)|0,U=U+Math.imul(V0,w0)|0,q=q+Math.imul(V0,E0)|0,R=R+Math.imul(X0,T0)|0,U=U+Math.imul(X0,N0)|0,U=U+Math.imul(J0,T0)|0,q=q+Math.imul(J0,N0)|0,R=R+Math.imul(a,D0)|0,U=U+Math.imul(a,k0)|0,U=U+Math.imul(Q0,D0)|0,q=q+Math.imul(Q0,k0)|0,R=R+Math.imul(f,v0)|0,U=U+Math.imul(f,x0)|0,U=U+Math.imul(b,v0)|0,q=q+Math.imul(b,x0)|0;var ZQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(ZQ>>>26)|0,ZQ&=67108863,R=Math.imul(M0,L0),U=Math.imul(M0,P0),U=U+Math.imul(z0,L0)|0,q=Math.imul(z0,P0),R=R+Math.imul(A0,S0)|0,U=U+Math.imul(A0,C0)|0,U=U+Math.imul(F0,S0)|0,q=q+Math.imul(F0,C0)|0,R=R+Math.imul(O0,w0)|0,U=U+Math.imul(O0,E0)|0,U=U+Math.imul(_0,w0)|0,q=q+Math.imul(_0,E0)|0,R=R+Math.imul(U0,T0)|0,U=U+Math.imul(U0,N0)|0,U=U+Math.imul(V0,T0)|0,q=q+Math.imul(V0,N0)|0,R=R+Math.imul(X0,D0)|0,U=U+Math.imul(X0,k0)|0,U=U+Math.imul(J0,D0)|0,q=q+Math.imul(J0,k0)|0,R=R+Math.imul(a,v0)|0,U=U+Math.imul(a,x0)|0,U=U+Math.imul(Q0,v0)|0,q=q+Math.imul(Q0,x0)|0,R=R+Math.imul(f,f0)|0,U=U+Math.imul(f,g0)|0,U=U+Math.imul(b,f0)|0,q=q+Math.imul(b,g0)|0;var QQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(QQ>>>26)|0,QQ&=67108863,R=Math.imul(K0,L0),U=Math.imul(K0,P0),U=U+Math.imul(R0,L0)|0,q=Math.imul(R0,P0),R=R+Math.imul(M0,S0)|0,U=U+Math.imul(M0,C0)|0,U=U+Math.imul(z0,S0)|0,q=q+Math.imul(z0,C0)|0,R=R+Math.imul(A0,w0)|0,U=U+Math.imul(A0,E0)|0,U=U+Math.imul(F0,w0)|0,q=q+Math.imul(F0,E0)|0,R=R+Math.imul(O0,T0)|0,U=U+Math.imul(O0,N0)|0,U=U+Math.imul(_0,T0)|0,q=q+Math.imul(_0,N0)|0,R=R+Math.imul(U0,D0)|0,U=U+Math.imul(U0,k0)|0,U=U+Math.imul(V0,D0)|0,q=q+Math.imul(V0,k0)|0,R=R+Math.imul(X0,v0)|0,U=U+Math.imul(X0,x0)|0,U=U+Math.imul(J0,v0)|0,q=q+Math.imul(J0,x0)|0,R=R+Math.imul(a,f0)|0,U=U+Math.imul(a,g0)|0,U=U+Math.imul(Q0,f0)|0,q=q+Math.imul(Q0,g0)|0,R=R+Math.imul(f,y0)|0,U=U+Math.imul(f,h0)|0,U=U+Math.imul(b,y0)|0,q=q+Math.imul(b,h0)|0;var XQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(XQ>>>26)|0,XQ&=67108863,R=Math.imul(I0,L0),U=Math.imul(I0,P0),U=U+Math.imul(q0,L0)|0,q=Math.imul(q0,P0),R=R+Math.imul(K0,S0)|0,U=U+Math.imul(K0,C0)|0,U=U+Math.imul(R0,S0)|0,q=q+Math.imul(R0,C0)|0,R=R+Math.imul(M0,w0)|0,U=U+Math.imul(M0,E0)|0,U=U+Math.imul(z0,w0)|0,q=q+Math.imul(z0,E0)|0,R=R+Math.imul(A0,T0)|0,U=U+Math.imul(A0,N0)|0,U=U+Math.imul(F0,T0)|0,q=q+Math.imul(F0,N0)|0,R=R+Math.imul(O0,D0)|0,U=U+Math.imul(O0,k0)|0,U=U+Math.imul(_0,D0)|0,q=q+Math.imul(_0,k0)|0,R=R+Math.imul(U0,v0)|0,U=U+Math.imul(U0,x0)|0,U=U+Math.imul(V0,v0)|0,q=q+Math.imul(V0,x0)|0,R=R+Math.imul(X0,f0)|0,U=U+Math.imul(X0,g0)|0,U=U+Math.imul(J0,f0)|0,q=q+Math.imul(J0,g0)|0,R=R+Math.imul(a,y0)|0,U=U+Math.imul(a,h0)|0,U=U+Math.imul(Q0,y0)|0,q=q+Math.imul(Q0,h0)|0,R=R+Math.imul(f,b0)|0,U=U+Math.imul(f,c0)|0,U=U+Math.imul(b,b0)|0,q=q+Math.imul(b,c0)|0;var GQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(GQ>>>26)|0,GQ&=67108863,R=Math.imul(j0,L0),U=Math.imul(j0,P0),U=U+Math.imul(B0,L0)|0,q=Math.imul(B0,P0),R=R+Math.imul(I0,S0)|0,U=U+Math.imul(I0,C0)|0,U=U+Math.imul(q0,S0)|0,q=q+Math.imul(q0,C0)|0,R=R+Math.imul(K0,w0)|0,U=U+Math.imul(K0,E0)|0,U=U+Math.imul(R0,w0)|0,q=q+Math.imul(R0,E0)|0,R=R+Math.imul(M0,T0)|0,U=U+Math.imul(M0,N0)|0,U=U+Math.imul(z0,T0)|0,q=q+Math.imul(z0,N0)|0,R=R+Math.imul(A0,D0)|0,U=U+Math.imul(A0,k0)|0,U=U+Math.imul(F0,D0)|0,q=q+Math.imul(F0,k0)|0,R=R+Math.imul(O0,v0)|0,U=U+Math.imul(O0,x0)|0,U=U+Math.imul(_0,v0)|0,q=q+Math.imul(_0,x0)|0,R=R+Math.imul(U0,f0)|0,U=U+Math.imul(U0,g0)|0,U=U+Math.imul(V0,f0)|0,q=q+Math.imul(V0,g0)|0,R=R+Math.imul(X0,y0)|0,U=U+Math.imul(X0,h0)|0,U=U+Math.imul(J0,y0)|0,q=q+Math.imul(J0,h0)|0,R=R+Math.imul(a,b0)|0,U=U+Math.imul(a,c0)|0,U=U+Math.imul(Q0,b0)|0,q=q+Math.imul(Q0,c0)|0,R=R+Math.imul(f,p0)|0,U=U+Math.imul(f,u0)|0,U=U+Math.imul(b,p0)|0,q=q+Math.imul(b,u0)|0;var YQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(YQ>>>26)|0,YQ&=67108863,R=Math.imul(j0,S0),U=Math.imul(j0,C0),U=U+Math.imul(B0,S0)|0,q=Math.imul(B0,C0),R=R+Math.imul(I0,w0)|0,U=U+Math.imul(I0,E0)|0,U=U+Math.imul(q0,w0)|0,q=q+Math.imul(q0,E0)|0,R=R+Math.imul(K0,T0)|0,U=U+Math.imul(K0,N0)|0,U=U+Math.imul(R0,T0)|0,q=q+Math.imul(R0,N0)|0,R=R+Math.imul(M0,D0)|0,U=U+Math.imul(M0,k0)|0,U=U+Math.imul(z0,D0)|0,q=q+Math.imul(z0,k0)|0,R=R+Math.imul(A0,v0)|0,U=U+Math.imul(A0,x0)|0,U=U+Math.imul(F0,v0)|0,q=q+Math.imul(F0,x0)|0,R=R+Math.imul(O0,f0)|0,U=U+Math.imul(O0,g0)|0,U=U+Math.imul(_0,f0)|0,q=q+Math.imul(_0,g0)|0,R=R+Math.imul(U0,y0)|0,U=U+Math.imul(U0,h0)|0,U=U+Math.imul(V0,y0)|0,q=q+Math.imul(V0,h0)|0,R=R+Math.imul(X0,b0)|0,U=U+Math.imul(X0,c0)|0,U=U+Math.imul(J0,b0)|0,q=q+Math.imul(J0,c0)|0,R=R+Math.imul(a,p0)|0,U=U+Math.imul(a,u0)|0,U=U+Math.imul(Q0,p0)|0,q=q+Math.imul(Q0,u0)|0;var JQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(JQ>>>26)|0,JQ&=67108863,R=Math.imul(j0,w0),U=Math.imul(j0,E0),U=U+Math.imul(B0,w0)|0,q=Math.imul(B0,E0),R=R+Math.imul(I0,T0)|0,U=U+Math.imul(I0,N0)|0,U=U+Math.imul(q0,T0)|0,q=q+Math.imul(q0,N0)|0,R=R+Math.imul(K0,D0)|0,U=U+Math.imul(K0,k0)|0,U=U+Math.imul(R0,D0)|0,q=q+Math.imul(R0,k0)|0,R=R+Math.imul(M0,v0)|0,U=U+Math.imul(M0,x0)|0,U=U+Math.imul(z0,v0)|0,q=q+Math.imul(z0,x0)|0,R=R+Math.imul(A0,f0)|0,U=U+Math.imul(A0,g0)|0,U=U+Math.imul(F0,f0)|0,q=q+Math.imul(F0,g0)|0,R=R+Math.imul(O0,y0)|0,U=U+Math.imul(O0,h0)|0,U=U+Math.imul(_0,y0)|0,q=q+Math.imul(_0,h0)|0,R=R+Math.imul(U0,b0)|0,U=U+Math.imul(U0,c0)|0,U=U+Math.imul(V0,b0)|0,q=q+Math.imul(V0,c0)|0,R=R+Math.imul(X0,p0)|0,U=U+Math.imul(X0,u0)|0,U=U+Math.imul(J0,p0)|0,q=q+Math.imul(J0,u0)|0;var HQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(HQ>>>26)|0,HQ&=67108863,R=Math.imul(j0,T0),U=Math.imul(j0,N0),U=U+Math.imul(B0,T0)|0,q=Math.imul(B0,N0),R=R+Math.imul(I0,D0)|0,U=U+Math.imul(I0,k0)|0,U=U+Math.imul(q0,D0)|0,q=q+Math.imul(q0,k0)|0,R=R+Math.imul(K0,v0)|0,U=U+Math.imul(K0,x0)|0,U=U+Math.imul(R0,v0)|0,q=q+Math.imul(R0,x0)|0,R=R+Math.imul(M0,f0)|0,U=U+Math.imul(M0,g0)|0,U=U+Math.imul(z0,f0)|0,q=q+Math.imul(z0,g0)|0,R=R+Math.imul(A0,y0)|0,U=U+Math.imul(A0,h0)|0,U=U+Math.imul(F0,y0)|0,q=q+Math.imul(F0,h0)|0,R=R+Math.imul(O0,b0)|0,U=U+Math.imul(O0,c0)|0,U=U+Math.imul(_0,b0)|0,q=q+Math.imul(_0,c0)|0,R=R+Math.imul(U0,p0)|0,U=U+Math.imul(U0,u0)|0,U=U+Math.imul(V0,p0)|0,q=q+Math.imul(V0,u0)|0;var WQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(WQ>>>26)|0,WQ&=67108863,R=Math.imul(j0,D0),U=Math.imul(j0,k0),U=U+Math.imul(B0,D0)|0,q=Math.imul(B0,k0),R=R+Math.imul(I0,v0)|0,U=U+Math.imul(I0,x0)|0,U=U+Math.imul(q0,v0)|0,q=q+Math.imul(q0,x0)|0,R=R+Math.imul(K0,f0)|0,U=U+Math.imul(K0,g0)|0,U=U+Math.imul(R0,f0)|0,q=q+Math.imul(R0,g0)|0,R=R+Math.imul(M0,y0)|0,U=U+Math.imul(M0,h0)|0,U=U+Math.imul(z0,y0)|0,q=q+Math.imul(z0,h0)|0,R=R+Math.imul(A0,b0)|0,U=U+Math.imul(A0,c0)|0,U=U+Math.imul(F0,b0)|0,q=q+Math.imul(F0,c0)|0,R=R+Math.imul(O0,p0)|0,U=U+Math.imul(O0,u0)|0,U=U+Math.imul(_0,p0)|0,q=q+Math.imul(_0,u0)|0;var UQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(UQ>>>26)|0,UQ&=67108863,R=Math.imul(j0,v0),U=Math.imul(j0,x0),U=U+Math.imul(B0,v0)|0,q=Math.imul(B0,x0),R=R+Math.imul(I0,f0)|0,U=U+Math.imul(I0,g0)|0,U=U+Math.imul(q0,f0)|0,q=q+Math.imul(q0,g0)|0,R=R+Math.imul(K0,y0)|0,U=U+Math.imul(K0,h0)|0,U=U+Math.imul(R0,y0)|0,q=q+Math.imul(R0,h0)|0,R=R+Math.imul(M0,b0)|0,U=U+Math.imul(M0,c0)|0,U=U+Math.imul(z0,b0)|0,q=q+Math.imul(z0,c0)|0,R=R+Math.imul(A0,p0)|0,U=U+Math.imul(A0,u0)|0,U=U+Math.imul(F0,p0)|0,q=q+Math.imul(F0,u0)|0;var VQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(VQ>>>26)|0,VQ&=67108863,R=Math.imul(j0,f0),U=Math.imul(j0,g0),U=U+Math.imul(B0,f0)|0,q=Math.imul(B0,g0),R=R+Math.imul(I0,y0)|0,U=U+Math.imul(I0,h0)|0,U=U+Math.imul(q0,y0)|0,q=q+Math.imul(q0,h0)|0,R=R+Math.imul(K0,b0)|0,U=U+Math.imul(K0,c0)|0,U=U+Math.imul(R0,b0)|0,q=q+Math.imul(R0,c0)|0,R=R+Math.imul(M0,p0)|0,U=U+Math.imul(M0,u0)|0,U=U+Math.imul(z0,p0)|0,q=q+Math.imul(z0,u0)|0;var OQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(OQ>>>26)|0,OQ&=67108863,R=Math.imul(j0,y0),U=Math.imul(j0,h0),U=U+Math.imul(B0,y0)|0,q=Math.imul(B0,h0),R=R+Math.imul(I0,b0)|0,U=U+Math.imul(I0,c0)|0,U=U+Math.imul(q0,b0)|0,q=q+Math.imul(q0,c0)|0,R=R+Math.imul(K0,p0)|0,U=U+Math.imul(K0,u0)|0,U=U+Math.imul(R0,p0)|0,q=q+Math.imul(R0,u0)|0;var _Q=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(_Q>>>26)|0,_Q&=67108863,R=Math.imul(j0,b0),U=Math.imul(j0,c0),U=U+Math.imul(B0,b0)|0,q=Math.imul(B0,c0),R=R+Math.imul(I0,p0)|0,U=U+Math.imul(I0,u0)|0,U=U+Math.imul(q0,p0)|0,q=q+Math.imul(q0,u0)|0;var AQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(AQ>>>26)|0,AQ&=67108863,R=Math.imul(j0,p0),U=Math.imul(j0,u0),U=U+Math.imul(B0,p0)|0,q=Math.imul(B0,u0);var FQ=(S+R|0)+((U&8191)<<13)|0;if(S=(q+(U>>>13)|0)+(FQ>>>26)|0,FQ&=67108863,L[0]=iZ,L[1]=tZ,L[2]=aZ,L[3]=eZ,L[4]=$Q,L[5]=ZQ,L[6]=QQ,L[7]=XQ,L[8]=GQ,L[9]=YQ,L[10]=JQ,L[11]=HQ,L[12]=WQ,L[13]=UQ,L[14]=VQ,L[15]=OQ,L[16]=_Q,L[17]=AQ,L[18]=FQ,S!==0)L[19]=S,M.length++;return M};if(!Math.imul)C=P;function w(B,H,O){O.negative=H.negative^B.negative,O.length=B.length+H.length;var M=0,z=0;for(var j=0;j<O.length-1;j++){var L=z;z=0;var S=M&67108863,R=Math.min(j,H.length-1);for(var U=Math.max(0,j-B.length+1);U<=R;U++){var q=j-U,x=B.words[q]|0,f=H.words[U]|0,b=x*f,d=b&67108863;L=L+(b/67108864|0)|0,d=d+S|0,S=d&67108863,L=L+(d>>>26)|0,z+=L>>>26,L&=67108863}O.words[j]=S,M=L,L=z}if(M!==0)O.words[j]=M;else O.length--;return O.strip()}function N(B,H,O){var M=new T;return M.mulp(B,H,O)}G.prototype.mulTo=function(H,O){var M,z=this.length+H.length;if(this.length===10&&H.length===10)M=C(this,H,O);else if(z<63)M=P(this,H,O);else if(z<1024)M=w(this,H,O);else M=N(this,H,O);return M};function T(B,H){this.x=B,this.y=H}T.prototype.makeRBT=function(H){var O=Array(H),M=G.prototype._countBits(H)-1;for(var z=0;z<H;z++)O[z]=this.revBin(z,M,H);return O},T.prototype.revBin=function(H,O,M){if(H===0||H===M-1)return H;var z=0;for(var j=0;j<O;j++)z|=(H&1)<<O-j-1,H>>=1;return z},T.prototype.permute=function(H,O,M,z,j,L){for(var S=0;S<L;S++)z[S]=O[H[S]],j[S]=M[H[S]]},T.prototype.transform=function(H,O,M,z,j,L){this.permute(L,H,O,M,z,j);for(var S=1;S<j;S<<=1){var R=S<<1,U=Math.cos(2*Math.PI/R),q=Math.sin(2*Math.PI/R);for(var x=0;x<j;x+=R){var f=U,b=q;for(var d=0;d<S;d++){var a=M[x+d],Q0=z[x+d],R$=M[x+d+S],X0=z[x+d+S],J0=f*R$-b*X0;if(X0=f*X0+b*R$,R$=J0,M[x+d]=a+R$,z[x+d]=Q0+X0,M[x+d+S]=a-R$,z[x+d+S]=Q0-X0,d!==R)J0=U*f-q*b,b=U*b+q*f,f=J0}}}},T.prototype.guessLen13b=function(H,O){var M=Math.max(O,H)|1,z=M&1,j=0;for(M=M/2|0;M;M=M>>>1)j++;return 1<<j+1+z},T.prototype.conjugate=function(H,O,M){if(M<=1)return;for(var z=0;z<M/2;z++){var j=H[z];H[z]=H[M-z-1],H[M-z-1]=j,j=O[z],O[z]=-O[M-z-1],O[M-z-1]=-j}},T.prototype.normalize13b=function(H,O){var M=0;for(var z=0;z<O/2;z++){var j=Math.round(H[2*z+1]/O)*8192+Math.round(H[2*z]/O)+M;if(H[z]=j&67108863,j<67108864)M=0;else M=j/67108864|0}return H},T.prototype.convert13b=function(H,O,M,z){var j=0;for(var L=0;L<O;L++)j=j+(H[L]|0),M[2*L]=j&8191,j=j>>>13,M[2*L+1]=j&8191,j=j>>>13;for(L=2*O;L<z;++L)M[L]=0;Q(j===0),Q((j&-8192)===0)},T.prototype.stub=function(H){var O=Array(H);for(var M=0;M<H;M++)O[M]=0;return O},T.prototype.mulp=function(H,O,M){var z=2*this.guessLen13b(H.length,O.length),j=this.makeRBT(z),L=this.stub(z),S=Array(z),R=Array(z),U=Array(z),q=Array(z),x=Array(z),f=Array(z),b=M.words;b.length=z,this.convert13b(H.words,H.length,S,z),this.convert13b(O.words,O.length,q,z),this.transform(S,L,R,U,z,j),this.transform(q,L,x,f,z,j);for(var d=0;d<z;d++){var a=R[d]*x[d]-U[d]*f[d];U[d]=R[d]*f[d]+U[d]*x[d],R[d]=a}return this.conjugate(R,U,z),this.transform(R,U,b,L,z,j),this.conjugate(b,L,z),this.normalize13b(b,z),M.negative=H.negative^O.negative,M.length=H.length+O.length,M.strip()},G.prototype.mul=function(H){var O=new G(null);return O.words=Array(this.length+H.length),this.mulTo(H,O)},G.prototype.mulf=function(H){var O=new G(null);return O.words=Array(this.length+H.length),N(this,H,O)},G.prototype.imul=function(H){return this.clone().mulTo(H,this)},G.prototype.imuln=function(H){Q(typeof H==="number"),Q(H<67108864);var O=0;for(var M=0;M<this.length;M++){var z=(this.words[M]|0)*H,j=(z&67108863)+(O&67108863);O>>=26,O+=z/67108864|0,O+=j>>>26,this.words[M]=j&67108863}if(O!==0)this.words[M]=O,this.length++;return this.length=H===0?1:this.length,this},G.prototype.muln=function(H){return this.clone().imuln(H)},G.prototype.sqr=function(){return this.mul(this)},G.prototype.isqr=function(){return this.imul(this.clone())},G.prototype.pow=function(H){var O=I(H);if(O.length===0)return new G(1);var M=this;for(var z=0;z<O.length;z++,M=M.sqr())if(O[z]!==0)break;if(++z<O.length)for(var j=M.sqr();z<O.length;z++,j=j.sqr()){if(O[z]===0)continue;M=M.mul(j)}return M},G.prototype.iushln=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,M=(H-O)/26,z=67108863>>>26-O<<26-O,j;if(O!==0){var L=0;for(j=0;j<this.length;j++){var S=this.words[j]&z,R=(this.words[j]|0)-S<<O;this.words[j]=R|L,L=S>>>26-O}if(L)this.words[j]=L,this.length++}if(M!==0){for(j=this.length-1;j>=0;j--)this.words[j+M]=this.words[j];for(j=0;j<M;j++)this.words[j]=0;this.length+=M}return this.strip()},G.prototype.ishln=function(H){return Q(this.negative===0),this.iushln(H)},G.prototype.iushrn=function(H,O,M){Q(typeof H==="number"&&H>=0);var z;if(O)z=(O-O%26)/26;else z=0;var j=H%26,L=Math.min((H-j)/26,this.length),S=67108863^67108863>>>j<<j,R=M;if(z-=L,z=Math.max(0,z),R){for(var U=0;U<L;U++)R.words[U]=this.words[U];R.length=L}if(L===0);else if(this.length>L){this.length-=L;for(U=0;U<this.length;U++)this.words[U]=this.words[U+L]}else this.words[0]=0,this.length=1;var q=0;for(U=this.length-1;U>=0&&(q!==0||U>=z);U--){var x=this.words[U]|0;this.words[U]=q<<26-j|x>>>j,q=x&S}if(R&&q!==0)R.words[R.length++]=q;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},G.prototype.ishrn=function(H,O,M){return Q(this.negative===0),this.iushrn(H,O,M)},G.prototype.shln=function(H){return this.clone().ishln(H)},G.prototype.ushln=function(H){return this.clone().iushln(H)},G.prototype.shrn=function(H){return this.clone().ishrn(H)},G.prototype.ushrn=function(H){return this.clone().iushrn(H)},G.prototype.testn=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,M=(H-O)/26,z=1<<O;if(this.length<=M)return!1;var j=this.words[M];return!!(j&z)},G.prototype.imaskn=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,M=(H-O)/26;if(Q(this.negative===0,"imaskn works only with positive numbers"),this.length<=M)return this;if(O!==0)M++;if(this.length=Math.min(M,this.length),O!==0){var z=67108863^67108863>>>O<<O;this.words[this.length-1]&=z}return this.strip()},G.prototype.maskn=function(H){return this.clone().imaskn(H)},G.prototype.iaddn=function(H){if(Q(typeof H==="number"),Q(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)},G.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},G.prototype.isubn=function(H){if(Q(typeof H==="number"),Q(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()},G.prototype.addn=function(H){return this.clone().iaddn(H)},G.prototype.subn=function(H){return this.clone().isubn(H)},G.prototype.iabs=function(){return this.negative=0,this},G.prototype.abs=function(){return this.clone().iabs()},G.prototype._ishlnsubmul=function(H,O,M){var z=H.length+M,j;this._expand(z);var L,S=0;for(j=0;j<H.length;j++){L=(this.words[j+M]|0)+S;var R=(H.words[j]|0)*O;L-=R&67108863,S=(L>>26)-(R/67108864|0),this.words[j+M]=L&67108863}for(;j<this.length-M;j++)L=(this.words[j+M]|0)+S,S=L>>26,this.words[j+M]=L&67108863;if(S===0)return this.strip();Q(S===-1),S=0;for(j=0;j<this.length;j++)L=-(this.words[j]|0)+S,S=L>>26,this.words[j]=L&67108863;return this.negative=1,this.strip()},G.prototype._wordDiv=function(H,O){var M=this.length-H.length,z=this.clone(),j=H,L=j.words[j.length-1]|0,S=this._countBits(L);if(M=26-S,M!==0)j=j.ushln(M),z.iushln(M),L=j.words[j.length-1]|0;var R=z.length-j.length,U;if(O!=="mod"){U=new G(null),U.length=R+1,U.words=Array(U.length);for(var q=0;q<U.length;q++)U.words[q]=0}var x=z.clone()._ishlnsubmul(j,1,R);if(x.negative===0){if(z=x,U)U.words[R]=1}for(var f=R-1;f>=0;f--){var b=(z.words[j.length+f]|0)*67108864+(z.words[j.length+f-1]|0);b=Math.min(b/L|0,67108863),z._ishlnsubmul(j,b,f);while(z.negative!==0)if(b--,z.negative=0,z._ishlnsubmul(j,1,f),!z.isZero())z.negative^=1;if(U)U.words[f]=b}if(U)U.strip();if(z.strip(),O!=="div"&&M!==0)z.iushrn(M);return{div:U||null,mod:z}},G.prototype.divmod=function(H,O,M){if(Q(!H.isZero()),this.isZero())return{div:new G(0),mod:new G(0)};var z,j,L;if(this.negative!==0&&H.negative===0){if(L=this.neg().divmod(H,O),O!=="mod")z=L.div.neg();if(O!=="div"){if(j=L.mod.neg(),M&&j.negative!==0)j.iadd(H)}return{div:z,mod:j}}if(this.negative===0&&H.negative!==0){if(L=this.divmod(H.neg(),O),O!=="mod")z=L.div.neg();return{div:z,mod:L.mod}}if((this.negative&H.negative)!==0){if(L=this.neg().divmod(H.neg(),O),O!=="div"){if(j=L.mod.neg(),M&&j.negative!==0)j.isub(H)}return{div:L.div,mod:j}}if(H.length>this.length||this.cmp(H)<0)return{div:new G(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 G(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new G(this.modn(H.words[0]))}}return this._wordDiv(H,O)},G.prototype.div=function(H){return this.divmod(H,"div",!1).div},G.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},G.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},G.prototype.divRound=function(H){var O=this.divmod(H);if(O.mod.isZero())return O.div;var M=O.div.negative!==0?O.mod.isub(H):O.mod,z=H.ushrn(1),j=H.andln(1),L=M.cmp(z);if(L<0||j===1&&L===0)return O.div;return O.div.negative!==0?O.div.isubn(1):O.div.iaddn(1)},G.prototype.modn=function(H){Q(H<=67108863);var O=67108864%H,M=0;for(var z=this.length-1;z>=0;z--)M=(O*M+(this.words[z]|0))%H;return M},G.prototype.idivn=function(H){Q(H<=67108863);var O=0;for(var M=this.length-1;M>=0;M--){var z=(this.words[M]|0)+O*67108864;this.words[M]=z/H|0,O=z%H}return this.strip()},G.prototype.divn=function(H){return this.clone().idivn(H)},G.prototype.egcd=function(H){Q(H.negative===0),Q(!H.isZero());var O=this,M=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var z=new G(1),j=new G(0),L=new G(0),S=new G(1),R=0;while(O.isEven()&&M.isEven())O.iushrn(1),M.iushrn(1),++R;var U=M.clone(),q=O.clone();while(!O.isZero()){for(var x=0,f=1;(O.words[0]&f)===0&&x<26;++x,f<<=1);if(x>0){O.iushrn(x);while(x-- >0){if(z.isOdd()||j.isOdd())z.iadd(U),j.isub(q);z.iushrn(1),j.iushrn(1)}}for(var b=0,d=1;(M.words[0]&d)===0&&b<26;++b,d<<=1);if(b>0){M.iushrn(b);while(b-- >0){if(L.isOdd()||S.isOdd())L.iadd(U),S.isub(q);L.iushrn(1),S.iushrn(1)}}if(O.cmp(M)>=0)O.isub(M),z.isub(L),j.isub(S);else M.isub(O),L.isub(z),S.isub(j)}return{a:L,b:S,gcd:M.iushln(R)}},G.prototype._invmp=function(H){Q(H.negative===0),Q(!H.isZero());var O=this,M=H.clone();if(O.negative!==0)O=O.umod(H);else O=O.clone();var z=new G(1),j=new G(0),L=M.clone();while(O.cmpn(1)>0&&M.cmpn(1)>0){for(var S=0,R=1;(O.words[0]&R)===0&&S<26;++S,R<<=1);if(S>0){O.iushrn(S);while(S-- >0){if(z.isOdd())z.iadd(L);z.iushrn(1)}}for(var U=0,q=1;(M.words[0]&q)===0&&U<26;++U,q<<=1);if(U>0){M.iushrn(U);while(U-- >0){if(j.isOdd())j.iadd(L);j.iushrn(1)}}if(O.cmp(M)>=0)O.isub(M),z.isub(j);else M.isub(O),j.isub(z)}var x;if(O.cmpn(1)===0)x=z;else x=j;if(x.cmpn(0)<0)x.iadd(H);return x},G.prototype.gcd=function(H){if(this.isZero())return H.abs();if(H.isZero())return this.abs();var O=this.clone(),M=H.clone();O.negative=0,M.negative=0;for(var z=0;O.isEven()&&M.isEven();z++)O.iushrn(1),M.iushrn(1);do{while(O.isEven())O.iushrn(1);while(M.isEven())M.iushrn(1);var j=O.cmp(M);if(j<0){var L=O;O=M,M=L}else if(j===0||M.cmpn(1)===0)break;O.isub(M)}while(!0);return M.iushln(z)},G.prototype.invm=function(H){return this.egcd(H).a.umod(H)},G.prototype.isEven=function(){return(this.words[0]&1)===0},G.prototype.isOdd=function(){return(this.words[0]&1)===1},G.prototype.andln=function(H){return this.words[0]&H},G.prototype.bincn=function(H){Q(typeof H==="number");var O=H%26,M=(H-O)/26,z=1<<O;if(this.length<=M)return this._expand(M+1),this.words[M]|=z,this;var j=z;for(var L=M;j!==0&&L<this.length;L++){var S=this.words[L]|0;S+=j,j=S>>>26,S&=67108863,this.words[L]=S}if(j!==0)this.words[L]=j,this.length++;return this},G.prototype.isZero=function(){return this.length===1&&this.words[0]===0},G.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 M;if(this.length>1)M=1;else{if(O)H=-H;Q(H<=67108863,"Number is too big");var z=this.words[0]|0;M=z===H?0:z<H?-1:1}if(this.negative!==0)return-M|0;return M},G.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},G.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var O=0;for(var M=this.length-1;M>=0;M--){var z=this.words[M]|0,j=H.words[M]|0;if(z===j)continue;if(z<j)O=-1;else if(z>j)O=1;break}return O},G.prototype.gtn=function(H){return this.cmpn(H)===1},G.prototype.gt=function(H){return this.cmp(H)===1},G.prototype.gten=function(H){return this.cmpn(H)>=0},G.prototype.gte=function(H){return this.cmp(H)>=0},G.prototype.ltn=function(H){return this.cmpn(H)===-1},G.prototype.lt=function(H){return this.cmp(H)===-1},G.prototype.lten=function(H){return this.cmpn(H)<=0},G.prototype.lte=function(H){return this.cmp(H)<=0},G.prototype.eqn=function(H){return this.cmpn(H)===0},G.prototype.eq=function(H){return this.cmp(H)===0},G.red=function(H){return new n(H)},G.prototype.toRed=function(H){return Q(!this.red,"Already a number in reduction context"),Q(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},G.prototype.fromRed=function(){return Q(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},G.prototype._forceRed=function(H){return this.red=H,this},G.prototype.forceRed=function(H){return Q(!this.red,"Already a number in reduction context"),this._forceRed(H)},G.prototype.redAdd=function(H){return Q(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},G.prototype.redIAdd=function(H){return Q(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},G.prototype.redSub=function(H){return Q(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},G.prototype.redISub=function(H){return Q(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},G.prototype.redShl=function(H){return Q(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},G.prototype.redMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},G.prototype.redIMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},G.prototype.redSqr=function(){return Q(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},G.prototype.redISqr=function(){return Q(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},G.prototype.redSqrt=function(){return Q(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},G.prototype.redInvm=function(){return Q(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},G.prototype.redNeg=function(){return Q(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},G.prototype.redPow=function(H){return Q(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var E={k256:null,p224:null,p192:null,p25519:null};function v(B,H){this.name=B,this.p=new G(H,16),this.n=this.p.bitLength(),this.k=new G(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}v.prototype._tmp=function(){var H=new G(null);return H.words=Array(Math.ceil(this.n/13)),H},v.prototype.ireduce=function(H){var O=H,M;do this.split(O,this.tmp),O=this.imulK(O),O=O.iadd(this.tmp),M=O.bitLength();while(M>this.n);var z=M<this.n?-1:O.ucmp(this.p);if(z===0)O.words[0]=0,O.length=1;else if(z>0)O.isub(this.p);else if(O.strip!==void 0)O.strip();else O._strip();return O},v.prototype.split=function(H,O){H.iushrn(this.n,0,O)},v.prototype.imulK=function(H){return H.imul(this.k)};function c(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}X(c,v),c.prototype.split=function(H,O){var M=4194303,z=Math.min(H.length,9);for(var j=0;j<z;j++)O.words[j]=H.words[j];if(O.length=z,H.length<=9){H.words[0]=0,H.length=1;return}var L=H.words[9];O.words[O.length++]=L&M;for(j=10;j<H.length;j++){var S=H.words[j]|0;H.words[j-10]=(S&M)<<4|L>>>22,L=S}if(L>>>=22,H.words[j-10]=L,L===0&&H.length>10)H.length-=10;else H.length-=9},c.prototype.imulK=function(H){H.words[H.length]=0,H.words[H.length+1]=0,H.length+=2;var O=0;for(var M=0;M<H.length;M++){var z=H.words[M]|0;O+=z*977,H.words[M]=O&67108863,O=z*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 g(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}X(g,v);function y(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}X(y,v);function l(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}X(l,v),l.prototype.imulK=function(H){var O=0;for(var M=0;M<H.length;M++){var z=(H.words[M]|0)*19+O,j=z&67108863;z>>>=26,H.words[M]=j,O=z}if(O!==0)H.words[H.length++]=O;return H},G._prime=function(H){if(E[H])return E[H];var O;if(H==="k256")O=new c;else if(H==="p224")O=new g;else if(H==="p192")O=new y;else if(H==="p25519")O=new l;else throw Error("Unknown prime "+H);return E[H]=O,O};function n(B){if(typeof B==="string"){var H=G._prime(B);this.m=H.p,this.prime=H}else Q(B.gtn(1),"modulus must be greater than 1"),this.m=B,this.prime=null}n.prototype._verify1=function(H){Q(H.negative===0,"red works only with positives"),Q(H.red,"red works only with red numbers")},n.prototype._verify2=function(H,O){Q((H.negative|O.negative)===0,"red works only with positives"),Q(H.red&&H.red===O.red,"red works only with red numbers")},n.prototype.imod=function(H){if(this.prime)return this.prime.ireduce(H)._forceRed(this);return H.umod(this.m)._forceRed(this)},n.prototype.neg=function(H){if(H.isZero())return H.clone();return this.m.sub(H)._forceRed(this)},n.prototype.add=function(H,O){this._verify2(H,O);var M=H.add(O);if(M.cmp(this.m)>=0)M.isub(this.m);return M._forceRed(this)},n.prototype.iadd=function(H,O){this._verify2(H,O);var M=H.iadd(O);if(M.cmp(this.m)>=0)M.isub(this.m);return M},n.prototype.sub=function(H,O){this._verify2(H,O);var M=H.sub(O);if(M.cmpn(0)<0)M.iadd(this.m);return M._forceRed(this)},n.prototype.isub=function(H,O){this._verify2(H,O);var M=H.isub(O);if(M.cmpn(0)<0)M.iadd(this.m);return M},n.prototype.shl=function(H,O){return this._verify1(H),this.imod(H.ushln(O))},n.prototype.imul=function(H,O){return this._verify2(H,O),this.imod(H.imul(O))},n.prototype.mul=function(H,O){return this._verify2(H,O),this.imod(H.mul(O))},n.prototype.isqr=function(H){return this.imul(H,H.clone())},n.prototype.sqr=function(H){return this.mul(H,H)},n.prototype.sqrt=function(H){if(H.isZero())return H.clone();var O=this.m.andln(3);if(Q(O%2===1),O===3){var M=this.m.add(new G(1)).iushrn(2);return this.pow(H,M)}var z=this.m.subn(1),j=0;while(!z.isZero()&&z.andln(1)===0)j++,z.iushrn(1);Q(!z.isZero());var L=new G(1).toRed(this),S=L.redNeg(),R=this.m.subn(1).iushrn(1),U=this.m.bitLength();U=new G(2*U*U).toRed(this);while(this.pow(U,R).cmp(S)!==0)U.redIAdd(S);var q=this.pow(U,z),x=this.pow(H,z.addn(1).iushrn(1)),f=this.pow(H,z),b=j;while(f.cmp(L)!==0){var d=f;for(var a=0;d.cmp(L)!==0;a++)d=d.redSqr();Q(a<b);var Q0=this.pow(q,new G(1).iushln(b-a-1));x=x.redMul(Q0),q=Q0.redSqr(),f=f.redMul(q),b=a}return x},n.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)},n.prototype.pow=function(H,O){if(O.isZero())return new G(1).toRed(this);if(O.cmpn(1)===0)return H.clone();var M=4,z=Array(1<<M);z[0]=new G(1).toRed(this),z[1]=H;for(var j=2;j<z.length;j++)z[j]=this.mul(z[j-1],H);var L=z[0],S=0,R=0,U=O.bitLength()%26;if(U===0)U=26;for(j=O.length-1;j>=0;j--){var q=O.words[j];for(var x=U-1;x>=0;x--){var f=q>>x&1;if(L!==z[0])L=this.sqr(L);if(f===0&&S===0){R=0;continue}if(S<<=1,S|=f,R++,R!==M&&(j!==0||x!==0))continue;L=this.mul(L,z[S]),R=0,S=0}U=26}return L},n.prototype.convertTo=function(H){var O=H.umod(this.m);return O===H?O.clone():O},n.prototype.convertFrom=function(H){var O=H.clone();return O.red=null,O},G.mont=function(H){return new H0(H)};function H0(B){if(n.call(this,B),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new G(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)}X(H0,n),H0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},H0.prototype.convertFrom=function(H){var O=this.imod(H.mul(this.rinv));return O.red=null,O},H0.prototype.imul=function(H,O){if(H.isZero()||O.isZero())return H.words[0]=0,H.length=1,H;var M=H.imul(O),z=M.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=M.isub(z).iushrn(this.shift),L=j;if(j.cmp(this.m)>=0)L=j.isub(this.m);else if(j.cmpn(0)<0)L=j.iadd(this.m);return L._forceRed(this)},H0.prototype.mul=function(H,O){if(H.isZero()||O.isZero())return new G(0)._forceRed(this);var M=H.mul(O),z=M.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=M.isub(z).iushrn(this.shift),L=j;if(j.cmp(this.m)>=0)L=j.isub(this.m);else if(j.cmpn(0)<0)L=j.iadd(this.m);return L._forceRed(this)},H0.prototype.invm=function(H){var O=this.imod(H._invmp(this.m).mul(this.r2));return O._forceRed(this)}})(typeof GX>"u"||GX,uY)});var mY=t((b7,JX)=>{if(typeof Object.create==="function")JX.exports=function(Z,Q){if(Q)Z.super_=Q,Z.prototype=Object.create(Q.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else JX.exports=function(Z,Q){if(Q){Z.super_=Q;var X=function(){};X.prototype=Q.prototype,Z.prototype=new X,Z.prototype.constructor=Z}}});var E$=t((c7,HX)=>{try{if(xZ=I$("util"),typeof xZ.inherits!=="function")throw"";HX.exports=xZ.inherits}catch($){HX.exports=mY()}var xZ});var gZ=t((p7,dY)=>{var fZ=I$("buffer"),r$=fZ.Buffer,e0={},$$;for($$ in fZ){if(!fZ.hasOwnProperty($$))continue;if($$==="SlowBuffer"||$$==="Buffer")continue;e0[$$]=fZ[$$]}var i$=e0.Buffer={};for($$ in r$){if(!r$.hasOwnProperty($$))continue;if($$==="allocUnsafe"||$$==="allocUnsafeSlow")continue;i$[$$]=r$[$$]}e0.Buffer.prototype=r$.prototype;if(!i$.from||i$.from===Uint8Array.from)i$.from=function($,Z,Q){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 r$($,Z,Q)};if(!i$.alloc)i$.alloc=function($,Z,Q){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 X=r$($);if(!Z||Z.length===0)X.fill(0);else if(typeof Q==="string")X.fill(Z,Q);else X.fill(Z);return X};if(!e0.kStringMaxLength)try{e0.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch($){}if(!e0.constants){if(e0.constants={MAX_LENGTH:e0.kMaxLength},e0.kStringMaxLength)e0.constants.MAX_STRING_LENGTH=e0.kStringMaxLength}dY.exports=e0});var yZ=t((I8)=>{var R8=E$();function Z$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}I8.Reporter=Z$;Z$.prototype.isError=function(Z){return Z instanceof t$};Z$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};Z$.prototype.restore=function(Z){let Q=this._reporterState;Q.obj=Z.obj,Q.path=Q.path.slice(0,Z.pathLen)};Z$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};Z$.prototype.exitKey=function(Z){let Q=this._reporterState;Q.path=Q.path.slice(0,Z-1)};Z$.prototype.leaveKey=function(Z,Q,X){let G=this._reporterState;if(this.exitKey(Z),G.obj!==null)G.obj[Q]=X};Z$.prototype.path=function(){return this._reporterState.path.join("/")};Z$.prototype.enterObject=function(){let Z=this._reporterState,Q=Z.obj;return Z.obj={},Q};Z$.prototype.leaveObject=function(Z){let Q=this._reporterState,X=Q.obj;return Q.obj=Z,X};Z$.prototype.error=function(Z){let Q,X=this._reporterState,G=Z instanceof t$;if(G)Q=Z;else Q=new t$(X.path.map(function(Y){return"["+JSON.stringify(Y)+"]"}).join(""),Z.message||Z,Z.stack);if(!X.options.partial)throw Q;if(!G)X.errors.push(Q);return Q};Z$.prototype.wrapResult=function(Z){let Q=this._reporterState;if(!Q.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:Q.errors}};function t$($,Z){this.path=$,this.rethrow(Z)}R8(t$,Error);t$.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,t$);if(!this.stack)try{throw Error(this.message)}catch(Q){this.stack=Q.stack}return this}});var $Z=t((B8)=>{var j8=E$(),hZ=yZ().Reporter,a$=gZ().Buffer;function Q$($,Z){if(hZ.call(this,Z),!a$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}j8(Q$,hZ);B8.DecoderBuffer=Q$;Q$.isDecoderBuffer=function(Z){if(Z instanceof Q$)return!0;return typeof Z==="object"&&a$.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"};Q$.prototype.save=function(){return{offset:this.offset,reporter:hZ.prototype.save.call(this)}};Q$.prototype.restore=function(Z){let Q=new Q$(this.base);return Q.offset=Z.offset,Q.length=this.offset,this.offset=Z.offset,hZ.prototype.restore.call(this,Z.reporter),Q};Q$.prototype.isEmpty=function(){return this.offset===this.length};Q$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};Q$.prototype.skip=function(Z,Q){if(!(this.offset+Z<=this.length))return this.error(Q||"DecoderBuffer overrun");let X=new Q$(this.base);return X._reporterState=this._reporterState,X.offset=this.offset,X.length=this.offset+Z,this.offset+=Z,X};Q$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function e$($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(Q){if(!e$.isEncoderBuffer(Q))Q=new e$(Q,Z);return this.length+=Q.length,Q},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=a$.byteLength($);else if(a$.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}B8.EncoderBuffer=e$;e$.isEncoderBuffer=function(Z){if(Z instanceof e$)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};e$.prototype.join=function(Z,Q){if(!Z)Z=a$.alloc(this.length);if(!Q)Q=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(X){X.join(Z,Q),Q+=X.length});else{if(typeof this.value==="number")Z[Q]=this.value;else if(typeof this.value==="string")Z.write(this.value,Q);else if(a$.isBuffer(this.value))this.value.copy(Z,Q);Q+=this.length}return Z}});var oY=t((d7,sY)=>{sY.exports=nY;function nY($,Z){if(!$)throw Error(Z||"Assertion failed")}nY.equal=function(Z,Q,X){if(Z!=Q)throw Error(X||"Assertion failed: "+Z+" != "+Q)}});var bZ=t((n7,rY)=>{var S8=yZ().Reporter,C8=$Z().EncoderBuffer,w8=$Z().DecoderBuffer,l0=oY(),lY=["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"],E8=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(lY),T8=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function $0($,Z,Q){let X={};if(this._baseState=X,X.name=Q,X.enc=$,X.parent=Z||null,X.children=null,X.tag=null,X.args=null,X.reverseArgs=null,X.choice=null,X.optional=!1,X.any=!1,X.obj=!1,X.use=null,X.useDecoder=null,X.key=null,X.default=null,X.explicit=null,X.implicit=null,X.contains=null,!X.parent)X.children=[],this._wrap()}rY.exports=$0;var N8=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];$0.prototype.clone=function(){let Z=this._baseState,Q={};N8.forEach(function(G){Q[G]=Z[G]});let X=new this.constructor(Q.parent);return X._baseState=Q,X};$0.prototype._wrap=function(){let Z=this._baseState;E8.forEach(function(Q){this[Q]=function(){let G=new this.constructor(this);return Z.children.push(G),G[Q].apply(G,arguments)}},this)};$0.prototype._init=function(Z){let Q=this._baseState;l0(Q.parent===null),Z.call(this),Q.children=Q.children.filter(function(X){return X._baseState.parent===this},this),l0.equal(Q.children.length,1,"Root node can have only one child")};$0.prototype._useArgs=function(Z){let Q=this._baseState,X=Z.filter(function(G){return G instanceof this.constructor},this);if(Z=Z.filter(function(G){return!(G instanceof this.constructor)},this),X.length!==0)l0(Q.children===null),Q.children=X,X.forEach(function(G){G._baseState.parent=this},this);if(Z.length!==0)l0(Q.args===null),Q.args=Z,Q.reverseArgs=Z.map(function(G){if(typeof G!=="object"||G.constructor!==Object)return G;let Y={};return Object.keys(G).forEach(function(J){if(J==(J|0))J|=0;let W=G[J];Y[W]=J}),Y})};T8.forEach(function($){$0.prototype[$]=function(){let Q=this._baseState;throw Error($+" not implemented for encoding: "+Q.enc)}});lY.forEach(function($){$0.prototype[$]=function(){let Q=this._baseState,X=Array.prototype.slice.call(arguments);return l0(Q.tag===null),Q.tag=$,this._useArgs(X),this}});$0.prototype.use=function(Z){l0(Z);let Q=this._baseState;return l0(Q.use===null),Q.use=Z,this};$0.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};$0.prototype.def=function(Z){let Q=this._baseState;return l0(Q.default===null),Q.default=Z,Q.optional=!0,this};$0.prototype.explicit=function(Z){let Q=this._baseState;return l0(Q.explicit===null&&Q.implicit===null),Q.explicit=Z,this};$0.prototype.implicit=function(Z){let Q=this._baseState;return l0(Q.explicit===null&&Q.implicit===null),Q.implicit=Z,this};$0.prototype.obj=function(){let Z=this._baseState,Q=Array.prototype.slice.call(arguments);if(Z.obj=!0,Q.length!==0)this._useArgs(Q);return this};$0.prototype.key=function(Z){let Q=this._baseState;return l0(Q.key===null),Q.key=Z,this};$0.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};$0.prototype.choice=function(Z){let Q=this._baseState;return l0(Q.choice===null),Q.choice=Z,this._useArgs(Object.keys(Z).map(function(X){return Z[X]})),this};$0.prototype.contains=function(Z){let Q=this._baseState;return l0(Q.use===null),Q.contains=Z,this};$0.prototype._decode=function(Z,Q){let X=this._baseState;if(X.parent===null)return Z.wrapResult(X.children[0]._decode(Z,Q));let G=X.default,Y=!0,J=null;if(X.key!==null)J=Z.enterKey(X.key);if(X.optional){let V=null;if(X.explicit!==null)V=X.explicit;else if(X.implicit!==null)V=X.implicit;else if(X.tag!==null)V=X.tag;if(V===null&&!X.any){let A=Z.save();try{if(X.choice===null)this._decodeGeneric(X.tag,Z,Q);else this._decodeChoice(Z,Q);Y=!0}catch(F){Y=!1}Z.restore(A)}else if(Y=this._peekTag(Z,V,X.any),Z.isError(Y))return Y}let W;if(X.obj&&Y)W=Z.enterObject();if(Y){if(X.explicit!==null){let A=this._decodeTag(Z,X.explicit);if(Z.isError(A))return A;Z=A}let V=Z.offset;if(X.use===null&&X.choice===null){let A;if(X.any)A=Z.save();let F=this._decodeTag(Z,X.implicit!==null?X.implicit:X.tag,X.any);if(Z.isError(F))return F;if(X.any)G=Z.raw(A);else Z=F}if(Q&&Q.track&&X.tag!==null)Q.track(Z.path(),V,Z.length,"tagged");if(Q&&Q.track&&X.tag!==null)Q.track(Z.path(),Z.offset,Z.length,"content");if(X.any);else if(X.choice===null)G=this._decodeGeneric(X.tag,Z,Q);else G=this._decodeChoice(Z,Q);if(Z.isError(G))return G;if(!X.any&&X.choice===null&&X.children!==null)X.children.forEach(function(F){F._decode(Z,Q)});if(X.contains&&(X.tag==="octstr"||X.tag==="bitstr")){let A=new w8(G);G=this._getUse(X.contains,Z._reporterState.obj)._decode(A,Q)}}if(X.obj&&Y)G=Z.leaveObject(W);if(X.key!==null&&(G!==null||Y===!0))Z.leaveKey(J,X.key,G);else if(J!==null)Z.exitKey(J);return G};$0.prototype._decodeGeneric=function(Z,Q,X){let G=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(Q,Z,G.args[0],X);else if(/str$/.test(Z))return this._decodeStr(Q,Z,X);else if(Z==="objid"&&G.args)return this._decodeObjid(Q,G.args[0],G.args[1],X);else if(Z==="objid")return this._decodeObjid(Q,null,null,X);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(Q,Z,X);else if(Z==="null_")return this._decodeNull(Q,X);else if(Z==="bool")return this._decodeBool(Q,X);else if(Z==="objDesc")return this._decodeStr(Q,Z,X);else if(Z==="int"||Z==="enum")return this._decodeInt(Q,G.args&&G.args[0],X);if(G.use!==null)return this._getUse(G.use,Q._reporterState.obj)._decode(Q,X);else return Q.error("unknown tag: "+Z)};$0.prototype._getUse=function(Z,Q){let X=this._baseState;if(X.useDecoder=this._use(Z,Q),l0(X.useDecoder._baseState.parent===null),X.useDecoder=X.useDecoder._baseState.children[0],X.implicit!==X.useDecoder._baseState.implicit)X.useDecoder=X.useDecoder.clone(),X.useDecoder._baseState.implicit=X.implicit;return X.useDecoder};$0.prototype._decodeChoice=function(Z,Q){let X=this._baseState,G=null,Y=!1;if(Object.keys(X.choice).some(function(J){let W=Z.save(),V=X.choice[J];try{let A=V._decode(Z,Q);if(Z.isError(A))return!1;G={type:J,value:A},Y=!0}catch(A){return Z.restore(W),!1}return!0},this),!Y)return Z.error("Choice not matched");return G};$0.prototype._createEncoderBuffer=function(Z){return new C8(Z,this.reporter)};$0.prototype._encode=function(Z,Q,X){let G=this._baseState;if(G.default!==null&&G.default===Z)return;let Y=this._encodeValue(Z,Q,X);if(Y===void 0)return;if(this._skipDefault(Y,Q,X))return;return Y};$0.prototype._encodeValue=function(Z,Q,X){let G=this._baseState;if(G.parent===null)return G.children[0]._encode(Z,Q||new S8);let Y=null;if(this.reporter=Q,G.optional&&Z===void 0)if(G.default!==null)Z=G.default;else return;let J=null,W=!1;if(G.any)Y=this._createEncoderBuffer(Z);else if(G.choice)Y=this._encodeChoice(Z,Q);else if(G.contains)J=this._getUse(G.contains,X)._encode(Z,Q),W=!0;else if(G.children)J=G.children.map(function(V){if(V._baseState.tag==="null_")return V._encode(null,Q,Z);if(V._baseState.key===null)return Q.error("Child should have a key");let A=Q.enterKey(V._baseState.key);if(typeof Z!=="object")return Q.error("Child expected, but input is not object");let F=V._encode(Z[V._baseState.key],Q,Z);return Q.leaveKey(A),F},this).filter(function(V){return V}),J=this._createEncoderBuffer(J);else if(G.tag==="seqof"||G.tag==="setof"){if(!(G.args&&G.args.length===1))return Q.error("Too many args for : "+G.tag);if(!Array.isArray(Z))return Q.error("seqof/setof, but data is not Array");let V=this.clone();V._baseState.implicit=null,J=this._createEncoderBuffer(Z.map(function(A){let F=this._baseState;return this._getUse(F.args[0],Z)._encode(A,Q)},V))}else if(G.use!==null)Y=this._getUse(G.use,X)._encode(Z,Q);else J=this._encodePrimitive(G.tag,Z),W=!0;if(!G.any&&G.choice===null){let V=G.implicit!==null?G.implicit:G.tag,A=G.implicit===null?"universal":"context";if(V===null){if(G.use===null)Q.error("Tag could be omitted only for .use()")}else if(G.use===null)Y=this._encodeComposite(V,W,A,J)}if(G.explicit!==null)Y=this._encodeComposite(G.explicit,!1,"context",Y);return Y};$0.prototype._encodeChoice=function(Z,Q){let X=this._baseState,G=X.choice[Z.type];if(!G)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(X.choice)));return G._encode(Z.value,Q)};$0.prototype._encodePrimitive=function(Z,Q){let X=this._baseState;if(/str$/.test(Z))return this._encodeStr(Q,Z);else if(Z==="objid"&&X.args)return this._encodeObjid(Q,X.reverseArgs[0],X.args[1]);else if(Z==="objid")return this._encodeObjid(Q,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(Q,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(Q,X.args&&X.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(Q);else if(Z==="objDesc")return this._encodeStr(Q,Z);else throw Error("Unsupported tag: "+Z)};$0.prototype._isNumstr=function(Z){return/^[0-9 ]*$/.test(Z)};$0.prototype._isPrintstr=function(Z){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(Z)}});var cZ=t((D8)=>{function iY($){let Z={};return Object.keys($).forEach(function(Q){if((Q|0)==Q)Q=Q|0;let X=$[Q];Z[X]=Q}),Z}D8.tagClass={0:"universal",1:"application",2:"context",3:"private"};D8.tagClassByName=iY(D8.tagClass);D8.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"};D8.tagByName=iY(D8.tag)});var UX=t((o7,ZJ)=>{var x8=E$(),z$=gZ().Buffer,eY=bZ(),WX=cZ();function $J($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}ZJ.exports=$J;$J.prototype.encode=function(Z,Q){return this.tree._encode(Z,Q).join()};function Y$($){eY.call(this,"der",$)}x8(Y$,eY);Y$.prototype._encodeComposite=function(Z,Q,X,G){let Y=f8(Z,Q,X,this.reporter);if(G.length<128){let V=z$.alloc(2);return V[0]=Y,V[1]=G.length,this._createEncoderBuffer([V,G])}let J=1;for(let V=G.length;V>=256;V>>=8)J++;let W=z$.alloc(2+J);W[0]=Y,W[1]=128|J;for(let V=1+J,A=G.length;A>0;V--,A>>=8)W[V]=A&255;return this._createEncoderBuffer([W,G])};Y$.prototype._encodeStr=function(Z,Q){if(Q==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(Q==="bmpstr"){let X=z$.alloc(Z.length*2);for(let G=0;G<Z.length;G++)X.writeUInt16BE(Z.charCodeAt(G),G*2);return this._createEncoderBuffer(X)}else if(Q==="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(Q==="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(Q))return this._createEncoderBuffer(Z);else if(Q==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+Q+" unsupported")};Y$.prototype._encodeObjid=function(Z,Q,X){if(typeof Z==="string"){if(!Q)return this.reporter.error("string objid given, but no values map found");if(!Q.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=Q[Z].split(/[\s.]+/g);for(let W=0;W<Z.length;W++)Z[W]|=0}else if(Array.isArray(Z)){Z=Z.slice();for(let W=0;W<Z.length;W++)Z[W]|=0}if(!Array.isArray(Z))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(Z));if(!X){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let G=0;for(let W=0;W<Z.length;W++){let V=Z[W];for(G++;V>=128;V>>=7)G++}let Y=z$.alloc(G),J=Y.length-1;for(let W=Z.length-1;W>=0;W--){let V=Z[W];Y[J--]=V&127;while((V>>=7)>0)Y[J--]=128|V&127}return this._createEncoderBuffer(Y)};function X$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,Q){let X,G=new Date(Z);if(Q==="gentime")X=[X$(G.getUTCFullYear()),X$(G.getUTCMonth()+1),X$(G.getUTCDate()),X$(G.getUTCHours()),X$(G.getUTCMinutes()),X$(G.getUTCSeconds()),"Z"].join("");else if(Q==="utctime")X=[X$(G.getUTCFullYear()%100),X$(G.getUTCMonth()+1),X$(G.getUTCDate()),X$(G.getUTCHours()),X$(G.getUTCMinutes()),X$(G.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+Q+" time is not supported yet");return this._encodeStr(X,"octstr")};Y$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Y$.prototype._encodeInt=function(Z,Q){if(typeof Z==="string"){if(!Q)return this.reporter.error("String int or enum given, but no values map");if(!Q.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=Q[Z]}if(typeof Z!=="number"&&!z$.isBuffer(Z)){let Y=Z.toArray();if(!Z.sign&&Y[0]&128)Y.unshift(0);Z=z$.from(Y)}if(z$.isBuffer(Z)){let Y=Z.length;if(Z.length===0)Y++;let J=z$.alloc(Y);if(Z.copy(J),Z.length===0)J[0]=0;return this._createEncoderBuffer(J)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let X=1;for(let Y=Z;Y>=256;Y>>=8)X++;let G=Array(X);for(let Y=G.length-1;Y>=0;Y--)G[Y]=Z&255,Z>>=8;if(G[0]&128)G.unshift(0);return this._createEncoderBuffer(z$.from(G))};Y$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Y$.prototype._use=function(Z,Q){if(typeof Z==="function")Z=Z(Q);return Z._getEncoder("der").tree};Y$.prototype._skipDefault=function(Z,Q,X){let G=this._baseState,Y;if(G.default===null)return!1;let J=Z.join();if(G.defaultBuffer===void 0)G.defaultBuffer=this._encodeValue(G.default,Q,X).join();if(J.length!==G.defaultBuffer.length)return!1;for(Y=0;Y<J.length;Y++)if(J[Y]!==G.defaultBuffer[Y])return!1;return!0};function f8($,Z,Q,X){let G;if($==="seqof")$="seq";else if($==="setof")$="set";if(WX.tagByName.hasOwnProperty($))G=WX.tagByName[$];else if(typeof $==="number"&&($|0)===$)G=$;else return X.error("Unknown tag: "+$);if(G>=31)return X.error("Multi-octet tag encoding unsupported");if(!Z)G|=32;return G|=WX.tagClassByName[Q||"universal"]<<6,G}});var XJ=t((l7,QJ)=>{var g8=E$(),VX=UX();function OX($){VX.call(this,$),this.enc="pem"}g8(OX,VX);QJ.exports=OX;OX.prototype.encode=function(Z,Q){let G=VX.prototype.encode.call(this,Z).toString("base64"),Y=["-----BEGIN "+Q.label+"-----"];for(let J=0;J<G.length;J+=64)Y.push(G.slice(J,J+64));return Y.push("-----END "+Q.label+"-----"),Y.join(`
|
|
9
|
+
`)}});var _X=t((YJ)=>{var GJ=YJ;GJ.der=UX();GJ.pem=XJ()});var FX=t((i7,OJ)=>{var y8=E$(),h8=YX(),JJ=$Z().DecoderBuffer,WJ=bZ(),HJ=cZ();function UJ($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}OJ.exports=UJ;UJ.prototype.decode=function(Z,Q){if(!JJ.isDecoderBuffer(Z))Z=new JJ(Z,Q);return this.tree._decode(Z,Q)};function i0($){WJ.call(this,"der",$)}y8(i0,WJ);i0.prototype._peekTag=function(Z,Q,X){if(Z.isEmpty())return!1;let G=Z.save(),Y=AX(Z,'Failed to peek tag: "'+Q+'"');if(Z.isError(Y))return Y;return Z.restore(G),Y.tag===Q||Y.tagStr===Q||Y.tagStr+"of"===Q||X};i0.prototype._decodeTag=function(Z,Q,X){let G=AX(Z,'Failed to decode tag of "'+Q+'"');if(Z.isError(G))return G;let Y=VJ(Z,G.primitive,'Failed to get length of "'+Q+'"');if(Z.isError(Y))return Y;if(!X&&G.tag!==Q&&G.tagStr!==Q&&G.tagStr+"of"!==Q)return Z.error('Failed to match tag: "'+Q+'"');if(G.primitive||Y!==null)return Z.skip(Y,'Failed to match body of: "'+Q+'"');let J=Z.save(),W=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(W))return W;return Y=Z.offset-J.offset,Z.restore(J),Z.skip(Y,'Failed to match body of: "'+Q+'"')};i0.prototype._skipUntilEnd=function(Z,Q){for(;;){let X=AX(Z,Q);if(Z.isError(X))return X;let G=VJ(Z,X.primitive,Q);if(Z.isError(G))return G;let Y;if(X.primitive||G!==null)Y=Z.skip(G);else Y=this._skipUntilEnd(Z,Q);if(Z.isError(Y))return Y;if(X.tagStr==="end")break}};i0.prototype._decodeList=function(Z,Q,X,G){let Y=[];while(!Z.isEmpty()){let J=this._peekTag(Z,"end");if(Z.isError(J))return J;let W=X.decode(Z,"der",G);if(Z.isError(W)&&J)break;Y.push(W)}return Y};i0.prototype._decodeStr=function(Z,Q){if(Q==="bitstr"){let X=Z.readUInt8();if(Z.isError(X))return X;return{unused:X,data:Z.raw()}}else if(Q==="bmpstr"){let X=Z.raw();if(X.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let G="";for(let Y=0;Y<X.length/2;Y++)G+=String.fromCharCode(X.readUInt16BE(Y*2));return G}else if(Q==="numstr"){let X=Z.raw().toString("ascii");if(!this._isNumstr(X))return Z.error("Decoding of string type: numstr unsupported characters");return X}else if(Q==="octstr")return Z.raw();else if(Q==="objDesc")return Z.raw();else if(Q==="printstr"){let X=Z.raw().toString("ascii");if(!this._isPrintstr(X))return Z.error("Decoding of string type: printstr unsupported characters");return X}else if(/str$/.test(Q))return Z.raw().toString();else return Z.error("Decoding of string type: "+Q+" unsupported")};i0.prototype._decodeObjid=function(Z,Q,X){let G,Y=[],J=0,W=0;while(!Z.isEmpty())if(W=Z.readUInt8(),J<<=7,J|=W&127,(W&128)===0)Y.push(J),J=0;if(W&128)Y.push(J);let V=Y[0]/40|0,A=Y[0]%40;if(X)G=Y;else G=[V,A].concat(Y.slice(1));if(Q){let F=Q[G.join(" ")];if(F===void 0)F=Q[G.join(".")];if(F!==void 0)G=F}return G};i0.prototype._decodeTime=function(Z,Q){let X=Z.raw().toString(),G,Y,J,W,V,A;if(Q==="gentime")G=X.slice(0,4)|0,Y=X.slice(4,6)|0,J=X.slice(6,8)|0,W=X.slice(8,10)|0,V=X.slice(10,12)|0,A=X.slice(12,14)|0;else if(Q==="utctime")if(G=X.slice(0,2)|0,Y=X.slice(2,4)|0,J=X.slice(4,6)|0,W=X.slice(6,8)|0,V=X.slice(8,10)|0,A=X.slice(10,12)|0,G<70)G=2000+G;else G=1900+G;else return Z.error("Decoding "+Q+" time is not supported yet");return Date.UTC(G,Y-1,J,W,V,A,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let Q=Z.readUInt8();if(Z.isError(Q))return Q;else return Q!==0};i0.prototype._decodeInt=function(Z,Q){let X=Z.raw(),G=new h8(X);if(Q)G=Q[G.toString(10)]||G;return G};i0.prototype._use=function(Z,Q){if(typeof Z==="function")Z=Z(Q);return Z._getDecoder("der").tree};function AX($,Z){let Q=$.readUInt8(Z);if($.isError(Q))return Q;let X=HJ.tagClass[Q>>6],G=(Q&32)===0;if((Q&31)===31){let J=Q;Q=0;while((J&128)===128){if(J=$.readUInt8(Z),$.isError(J))return J;Q<<=7,Q|=J&127}}else Q&=31;let Y=HJ.tag[Q];return{cls:X,primitive:G,tag:Q,tagStr:Y}}function VJ($,Z,Q){let X=$.readUInt8(Q);if($.isError(X))return X;if(!Z&&X===128)return null;if((X&128)===0)return X;let G=X&127;if(G>4)return $.error("length octect is too long");X=0;for(let Y=0;Y<G;Y++){X<<=8;let J=$.readUInt8(Q);if($.isError(J))return J;X|=J}return X}});var AJ=t((t7,_J)=>{var b8=E$(),c8=gZ().Buffer,MX=FX();function zX($){MX.call(this,$),this.enc="pem"}b8(zX,MX);_J.exports=zX;zX.prototype.decode=function(Z,Q){let X=Z.toString().split(/[\r\n]+/g),G=Q.label.toUpperCase(),Y=/^-----(BEGIN|END) ([^-]+)-----$/,J=-1,W=-1;for(let F=0;F<X.length;F++){let _=X[F].match(Y);if(_===null)continue;if(_[2]!==G)continue;if(J===-1){if(_[1]!=="BEGIN")break;J=F}else{if(_[1]!=="END")break;W=F;break}}if(J===-1||W===-1)throw Error("PEM section not found for: "+G);let V=X.slice(J+1,W).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let A=c8.from(V,"base64");return MX.prototype.decode.call(this,A,Q)}});var KX=t((MJ)=>{var FJ=MJ;FJ.der=FX();FJ.pem=AJ()});var KJ=t((zJ)=>{var p8=_X(),u8=KX(),m8=E$(),d8=zJ;d8.define=function(Z,Q){return new ZZ(Z,Q)};function ZZ($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}ZZ.prototype._createNamed=function(Z){let Q=this.name;function X(G){this._initNamed(G,Q)}return m8(X,Z),X.prototype._initNamed=function(Y,J){Z.call(this,Y,J)},new X(this)};ZZ.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(u8[Z]);return this.decoders[Z]};ZZ.prototype.decode=function(Z,Q,X){return this._getDecoder(Q).decode(Z,X)};ZZ.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(p8[Z]);return this.encoders[Z]};ZZ.prototype.encode=function(Z,Q,X){return this._getEncoder(Q).encode(Z,X)}});var IJ=t((RJ)=>{var pZ=RJ;pZ.Reporter=yZ().Reporter;pZ.DecoderBuffer=$Z().DecoderBuffer;pZ.EncoderBuffer=$Z().EncoderBuffer;pZ.Node=bZ()});var BJ=t((jJ)=>{var qJ=jJ;qJ._reverse=function(Z){let Q={};return Object.keys(Z).forEach(function(X){if((X|0)==X)X=X|0;let G=Z[X];Q[G]=X}),Q};qJ.der=cZ()});var PJ=t((LJ)=>{var QZ=LJ;QZ.bignum=YX();QZ.define=KJ().define;QZ.base=IJ();QZ.constants=BJ();QZ.decoders=KX();QZ.encoders=_X()});var wJ=t((RX,CJ)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var uZ=I$("buffer"),_$=uZ.Buffer;function SJ($,Z){for(var Q in $)Z[Q]=$[Q]}if(_$.from&&_$.alloc&&_$.allocUnsafe&&_$.allocUnsafeSlow)CJ.exports=uZ;else SJ(uZ,RX),RX.Buffer=x$;function x$($,Z,Q){return _$($,Z,Q)}x$.prototype=Object.create(_$.prototype);SJ(_$,x$);x$.from=function($,Z,Q){if(typeof $==="number")throw TypeError("Argument must not be a number");return _$($,Z,Q)};x$.alloc=function($,Z,Q){if(typeof $!=="number")throw TypeError("Argument must be a number");var X=_$($);if(Z!==void 0)if(typeof Q==="string")X.fill(Z,Q);else X.fill(Z);else X.fill(0);return X};x$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return _$($)};x$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return uZ.SlowBuffer($)}});var TJ=t((X3,EJ)=>{function IX($){var Z=($/8|0)+($%8===0?0:1);return Z}var n8={ES256:IX(256),ES384:IX(384),ES512:IX(521)};function s8($){var Z=n8[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}EJ.exports=s8});var gJ=t((G3,fJ)=>{var mZ=wJ().Buffer,DJ=TJ(),dZ=128,kJ=0,o8=32,l8=16,r8=2,vJ=l8|o8|kJ<<6,nZ=r8|kJ<<6;function i8($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function xJ($){if(mZ.isBuffer($))return $;else if(typeof $==="string")return mZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function t8($,Z){$=xJ($);var Q=DJ(Z),X=Q+1,G=$.length,Y=0;if($[Y++]!==vJ)throw Error('Could not find expected "seq"');var J=$[Y++];if(J===(dZ|1))J=$[Y++];if(G-Y<J)throw Error('"seq" specified length of "'+J+'", only "'+(G-Y)+'" remaining');if($[Y++]!==nZ)throw Error('Could not find expected "int" for "r"');var W=$[Y++];if(G-Y-2<W)throw Error('"r" specified length of "'+W+'", only "'+(G-Y-2)+'" available');if(X<W)throw Error('"r" specified length of "'+W+'", max of "'+X+'" is acceptable');var V=Y;if(Y+=W,$[Y++]!==nZ)throw Error('Could not find expected "int" for "s"');var A=$[Y++];if(G-Y!==A)throw Error('"s" specified length of "'+A+'", expected "'+(G-Y)+'"');if(X<A)throw Error('"s" specified length of "'+A+'", max of "'+X+'" is acceptable');var F=Y;if(Y+=A,Y!==G)throw Error('Expected to consume entire buffer, but "'+(G-Y)+'" bytes remain');var _=Q-W,I=Q-A,P=mZ.allocUnsafe(_+W+I+A);for(Y=0;Y<_;++Y)P[Y]=0;$.copy(P,Y,V+Math.max(-_,0),V+W),Y=Q;for(var C=Y;Y<C+I;++Y)P[Y]=0;return $.copy(P,Y,F+Math.max(-I,0),F+A),P=P.toString("base64"),P=i8(P),P}function NJ($,Z,Q){var X=0;while(Z+X<Q&&$[Z+X]===0)++X;var G=$[Z+X]>=dZ;if(G)--X;return X}function a8($,Z){$=xJ($);var Q=DJ(Z),X=$.length;if(X!==Q*2)throw TypeError('"'+Z+'" signatures must be "'+Q*2+'" bytes, saw "'+X+'"');var G=NJ($,0,Q),Y=NJ($,Q,$.length),J=Q-G,W=Q-Y,V=2+J+1+1+W,A=V<dZ,F=mZ.allocUnsafe((A?2:3)+V),_=0;if(F[_++]=vJ,A)F[_++]=V;else F[_++]=dZ|1,F[_++]=V&255;if(F[_++]=nZ,F[_++]=J,G<0)F[_++]=0,_+=$.copy(F,_,0,Q);else _+=$.copy(F,_,G,Q);if(F[_++]=nZ,F[_++]=W,Y<0)F[_++]=0,$.copy(F,_,Q);else $.copy(F,_,Q+Y);return F}fJ.exports={derToJose:t8,joseToDer:a8}});var LX=t((Y3,iJ)=>{var BX=PJ(),{createHmac:bJ,createVerify:e8,createSign:$6,timingSafeEqual:Z6,createPublicKey:Q6,constants:{RSA_PKCS1_PSS_PADDING:cJ,RSA_PSS_SALTLEN_DIGEST:pJ,RSA_PKCS1_PADDING:uJ,RSA_PSS_SALTLEN_MAX_SIGN:X6,RSA_PSS_SALTLEN_AUTO:G6},sign:yJ,verify:hJ}=I$("crypto"),{joseToDer:Y6,derToJose:J6}=gJ(),mJ=XX(),{TokenError:Y0}=l$(),dJ=/[=+/]/g,H6={"=":"","+":"-","/":"_"},nJ=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,sJ=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,sZ=new mJ(1000),qX=new mJ(1000),oJ=["HS256","HS384","HS512"],W6=["ES256","ES384","ES512"],jX=["RS256","RS384","RS512","PS256","PS384","PS512"],U6=["EdDSA"],lJ={"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"]}},V6=BX.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),O6=BX.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),_6=BX.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 rJ($){return H6[$]}function OZ($,Z,Q,X){return $.set(Z,[Q,X]),Q||X}function A6($){if($.match(sJ)||$.includes("-----BEGIN CERTIFICATE-----"))throw new Y0(Y0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(nJ);if(!Z)return"HS256";let Q,X,G;switch(Z[1]){case"RSA":return"RS256";case"EC":Q=_6.decode($,"pem",{label:"EC PRIVATE KEY"}),G=Q.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(Q=V6.decode($,"pem",{label:"PRIVATE KEY"}),X=Q.algorithm.algorithm.join("."),X){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":G=Q.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new Y0(Y0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${X}.`)}}let Y=lJ[G];if(!Y)throw new Y0(Y0.codes.invalidKey,`Unsupported EC private key with curve ${G}.`);return`ES${Y.bits}`}function F6($){let Z=$.match(sJ);if($.match(nJ))throw new Y0(Y0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return jX;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return oJ;if($.includes("-----BEGIN CERTIFICATE-----"))$=Q6($).export({type:"spki",format:"pem"});let Q=O6.decode($,"pem",{label:"PUBLIC KEY"}),X=Q.algorithm.algorithm.join("."),G;switch(X){case"1.2.840.113549.1.1.1":return jX;case"1.2.840.10045.2.1":G=Q.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new Y0(Y0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${X}.`)}let Y=lJ[G];if(!Y)throw new Y0(Y0.codes.invalidKey,`Unsupported EC public key with curve ${G}.`);return[`ES${Y.bits}`]}function M6($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new Y0(Y0.codes.invalidKey,"The private key must be a string or a buffer.");let[Q,X]=sZ.get($)||[];if(Q)return Q;else if(X)throw X;try{let G=A6($);if(G==="ENCRYPTED")return OZ(sZ,$,Z);return OZ(sZ,$,G)}catch(G){throw OZ(sZ,$,null,Y0.wrap(G,Y0.codes.invalidKey,"Unsupported PEM private key."))}}function z6($){if(!$)return"none";let[Z,Q]=qX.get($)||[];if(Z)return Z;else if(Q)throw Q;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new Y0(Y0.codes.invalidKey,"The public key must be a string or a buffer.");return OZ(qX,$,F6($))}catch(X){throw OZ(qX,$,null,Y0.wrap(X,Y0.codes.invalidKey,"Unsupported PEM public key."))}}function K6($,Z,Q){try{let X=$.slice(0,2),G=`sha${$.slice(2)}`,Y,J;switch(X){case"HS":Y=bJ(G,Z).update(Q).digest("base64");break;case"ES":Y=J6(yJ(G,Buffer.from(Q,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(J={key:Z,padding:uJ,saltLength:X6},X==="PS")J.padding=cJ,J.saltLength=pJ;Y=$6(G).update(Q).sign(J).toString("base64");break;case"Ed":Y=yJ(void 0,Buffer.from(Q,"utf-8"),Z).toString("base64")}return Y.replace(dJ,rJ)}catch(X){throw new Y0(Y0.codes.signError,"Cannot create the signature.",{originalError:X})}}function R6($,Z,Q,X){try{let G=$.slice(0,2),Y=`SHA${$.slice(2)}`;if(X=Buffer.from(X,"base64"),G==="HS")try{return Z6(bJ(Y,Z).update(Q).digest(),X)}catch{return!1}else if(G==="Ed")if(typeof hJ==="function")return hJ(void 0,Buffer.from(Q,"utf-8"),Z,X);else throw new Y0(Y0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let J={key:Z,padding:uJ,saltLength:G6};if(G==="PS")J.padding=cJ,J.saltLength=pJ;else if(G==="ES")X=Y6(X,$);return e8("RSA-"+Y).update(Q).verify(J,X)}catch(G){throw new Y0(Y0.codes.verifyError,"Cannot verify the signature.",{originalError:G})}}iJ.exports={base64UrlMatcher:dJ,base64UrlReplacer:rJ,hsAlgorithms:oJ,rsaAlgorithms:jX,esAlgorithms:W6,edAlgorithms:U6,detectPrivateKeyAlgorithm:M6,detectPublicKeyAlgorithms:z6,createSignature:K6,verifySignature:R6}});var PX=t((J3,aJ)=>{var{createHash:tJ}=I$("crypto"),I6=/"alg"\s*:\s*"[HERP]S(256|384)"/m,q6=/"alg"\s*:\s*"EdDSA"/m,j6=/"crv"\s*:\s*"Ed448"/m;function B6($,Z,Q){let X=$(Z,Q);if(X&&typeof X.then==="function")X.then((G)=>{process.nextTick(()=>Q(null,G))}).catch(Q)}function L6($){if(typeof $==="function")return[$];let Z,Q,X=new Promise((G,Y)=>{Z=G,Q=Y});return[function(G,Y){if(G)return Q(G);return Z(Y)},X]}function P6($){let Z=$.split(".",1)[0],Q=Buffer.from(Z,"base64").toString("utf-8"),X=null;if(Q.match(q6)&&Q.match(j6))X=tJ("shake256",{outputLength:114});else{let G=Q.match(I6);X=tJ(`sha${G?G[1]:"512"}`)}return X.update($).digest("hex")}aJ.exports={getAsyncKey:B6,ensurePromiseCallback:L6,hashToken:P6}});var Y1=t((H3,G1)=>{var{createPublicKey:S6,createSecretKey:C6}=I$("crypto"),w6=XX(),{hsAlgorithms:$1,verifySignature:E6,detectPublicKeyAlgorithms:Z1}=LX(),T6=aQ(),{TokenError:s}=l$(),{getAsyncKey:N6,ensurePromiseCallback:D6,hashToken:k6}=PX();function v6($,Z){return $===Z}function Q1($,Z){for(let Q of $)if(Z.includes(Q))return;throw new s(s.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function X1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?C6($):S6($)}function _Z($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:v6.bind(null,Z)}})}function x6($){let Z=parseInt($===!0?1000:$,10);return Z>0?new w6(Z):null}function XZ({cache:$,token:Z,cacheTTL:Q,payload:X,ignoreExpiration:G,ignoreNotBefore:Y,maxAge:J,clockTimestamp:W=Date.now(),clockTolerance:V,errorCacheTTL:A,cacheKeyBuilder:F},_){if(!$)return _;let I=[_,0,0];if(_ instanceof s){let w=typeof A==="function"?A(_):A;return I[2]=W+V+w,$.set(F(Z),I),_}if(X&&typeof X.iat==="number"){if(I[1]=!Y&&typeof X.nbf==="number"?X.nbf*1000-V:0,!G){if(typeof X.exp==="number")I[2]=X.exp*1000+V;else if(J)I[2]=X.iat*1000+J+V}}let C=W+V+Q;return I[2]=I[2]===0?C:Math.min(I[2],C),$.set(F(Z),I),_}function f6($,Z,Q){if($ instanceof s){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return Q}function g6($,Z,Q,X,G){if(!G.includes(Z.alg))throw new s(s.codes.invalidAlgorithm,"The token algorithm is invalid.");if(Q&&!E6(Z.alg,X,$,Q))throw new s(s.codes.invalidSignature,"The token signature is invalid.")}function y6($,Z,Q,X,G){let Y=Q?`The ${Z} claim must be a ${G} or an array of ${G}s.`:`The ${Z} claim must be a ${G}.`;if(X&&!Q)throw new s(s.codes.invalidClaimValue,Y);if($.map((J)=>typeof J).some((J)=>J!==G))throw new s(s.codes.invalidClaimType,Y)}function h6($,Z,Q,X){let G=X?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((Y)=>Q.some((J)=>J.test(Y))))throw new s(s.codes.invalidClaimValue,G)}function b6($,Z,Q,X,G,Y){let J=$*1000+(Z||0);if(!(X?Q>=J:Q<=J))throw new s(s.codes[G],`The token ${Y} at ${new Date(J).toISOString()}.`)}function eJ($,{input:Z,header:Q,payload:X,signature:G},{validators:Y,allowedAlgorithms:J,checkTyp:W,clockTimestamp:V,requiredClaims:A}){let F=$ instanceof Buffer?$.length:!!$;if(F&&!G)throw new s(s.codes.missingSignature,"The token signature is missing.");else if(!F&&G)throw new s(s.codes.missingKey,"The key option is missing.");if(g6(Z,Q,G,$,J),W&&(typeof Q.typ!=="string"||W!==Q.typ.toLowerCase().replace(/^application\//,"")))throw new s(s.codes.invalidType,"Invalid typ.");if(A){for(let I of A)if(!(I in X))throw new s(s.codes.missingRequiredClaim,`The ${I} claim is required.`)}let _=V||Date.now();for(let{type:I,claim:P,allowed:C,array:w,modifier:N,greater:T,errorCode:E,errorVerb:v}of Y){let c=X[P],g=Array.isArray(c),y=g?c:[c];if(!(P in X))continue;if(y6(y,P,w,g,I==="date"?"number":"string"),I==="date")b6(c,N,_,T,E,v);else h6(y,P,C,g)}}function c6({key:$,allowedAlgorithms:Z,complete:Q,cacheTTL:X,checkTyp:G,clockTimestamp:Y,clockTolerance:J,ignoreExpiration:W,ignoreNotBefore:V,maxAge:A,isAsync:F,validators:_,decode:I,cache:P,requiredClaims:C,errorCacheTTL:w,cacheKeyBuilder:N},T,E){let[v,c]=F?D6(E):[];if(P){let[O,M,z]=P.get(N(T))||[void 0,0,0],j=Y||Date.now();if(typeof O<"u"&&(M===0||j<M&&O.code==="FAST_JWT_INACTIVE"||j>=M&&O.code!=="FAST_JWT_INACTIVE")&&(z===0||j<=z))return f6(O,v,c)}let g;try{g=I(T)}catch(O){if(v)return v(O),c;throw O}let{header:y,payload:l,signature:n,input:H0}=g,B={cache:P,token:T,cacheTTL:X,errorCacheTTL:w,ignoreExpiration:W,ignoreNotBefore:V,maxAge:A,clockTimestamp:Y,clockTolerance:J,payload:l,cacheKeyBuilder:N},H={validators:_,allowedAlgorithms:Z,checkTyp:G,clockTimestamp:Y,clockTolerance:J,requiredClaims:C};if(!v)try{return eJ($,g,H),XZ(B,Q?{header:y,payload:l,signature:n,input:H0}:l)}catch(O){throw XZ(B,O)}return N6($,{header:y,payload:l,signature:n},(O,M)=>{if(O)return v(XZ(B,s.wrap(O,s.codes.keyFetchingError,"Cannot fetch key.")));if(typeof M==="string")M=Buffer.from(M,"utf-8");else if(!(M instanceof Buffer))return v(XZ(B,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 z=Z1(M);if(H.allowedAlgorithms.length)Q1(Z,z);else H.allowedAlgorithms=z;M=X1(M,z[0]===$1[0]),eJ(M,g,H)}catch(z){return v(XZ(B,z))}v(null,XZ(B,Q?{header:y,payload:l,signature:n,input:T}:l))}),c}G1.exports=function(Z){let{key:Q,algorithms:X,complete:G,cache:Y,cacheTTL:J,errorCacheTTL:W,checkTyp:V,clockTimestamp:A,clockTolerance:F,ignoreExpiration:_,ignoreNotBefore:I,maxAge:P,allowedJti:C,allowedAud:w,allowedIss:N,allowedSub:T,allowedNonce:E,requiredClaims:v,cacheKeyBuilder:c}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:k6,...Z};if(!Array.isArray(X))X=[];let g=typeof Q;if(g!=="string"&&g!=="object"&&g!=="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(Q&&g!=="function"){let B=Z1(Q);if(X.length)Q1(X,B);else X=B;Q=X1(Q,B[0]===$1[0])}if(A&&(typeof A!=="number"||A<0))throw new s(s.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(F&&(typeof F!=="number"||F<0))throw new s(s.codes.invalidOption,"The clockTolerance option must be a positive number.");if(J&&(typeof J!=="number"||J<0))throw new s(s.codes.invalidOption,"The cacheTTL option must be a positive number.");if(W&&typeof W!=="function"&&typeof W!=="number"||W<-1)throw new s(s.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(v&&!Array.isArray(v))throw new s(s.codes.invalidOption,"The requiredClaims option must be an array.");let y=[];if(!I)y.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-F});if(!_)y.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+F});if(typeof P==="number")y.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:P});if(C)y.push({type:"string",claim:"jti",allowed:_Z(C)});if(w)y.push({type:"string",claim:"aud",allowed:_Z(w),array:!0});if(N)y.push({type:"string",claim:"iss",allowed:_Z(N)});if(T)y.push({type:"string",claim:"sub",allowed:_Z(T)});if(E)y.push({type:"string",claim:"nonce",allowed:_Z(E)});let l=V?V.toLowerCase().replace(/^application\//,""):null,n={key:Q,allowedAlgorithms:X,complete:G,cacheTTL:J,errorCacheTTL:W,checkTyp:l,clockTimestamp:A,clockTolerance:F,ignoreExpiration:_,ignoreNotBefore:I,maxAge:P,isAsync:g==="function",validators:y,decode:T6({complete:!0}),cache:x6(Y),requiredClaims:v,cacheKeyBuilder:c},H0=c6.bind(null,n);return H0.cache=n.cache,H0}});var J1=t((d6)=>{var p6=/^(-?(?:\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?)?)?$/,oZ=1000,lZ=oZ*60,rZ=lZ*60,FZ=rZ*24,SX=FZ*365.25;function u6($){var Z,Q=$.toLowerCase().match(p6);if(Q!=null&&(Z=parseFloat(Q[1]))){if(Q[3]!=null)return Z*oZ;if(Q[4]!=null)return Z*lZ;if(Q[5]!=null)return Z*rZ;if(Q[6]!=null)return Z*FZ;if(Q[7]!=null)return Z*FZ*7;if(Q[8]!=null)return Z*SX;return Z}}function AZ($,Z,Q,X){var G=($|0)===$?$:~~($+0.5);return Z+G+(X?" "+Q+(G!=1?"s":""):Q[0])}function m6($,Z){var Q=$<0?"-":"",X=$<0?-$:$;if(X<oZ)return $+(Z?" ms":"ms");if(X<lZ)return AZ(X/oZ,Q,"second",Z);if(X<rZ)return AZ(X/lZ,Q,"minute",Z);if(X<FZ)return AZ(X/rZ,Q,"hour",Z);if(X<SX)return AZ(X/FZ,Q,"day",Z);return AZ(X/SX,Q,"year",Z)}d6.format=m6;d6.parse=u6});var F1=t((U3,A1)=>{var{base64UrlMatcher:CX,base64UrlReplacer:wX,hsAlgorithms:o6,esAlgorithms:l6,rsaAlgorithms:r6,edAlgorithms:i6,detectPrivateKeyAlgorithm:U1,createSignature:H1}=LX(),{TokenError:i}=l$(),{getAsyncKey:t6,ensurePromiseCallback:a6}=PX(),{createPrivateKey:e6,createSecretKey:$9}=I$("crypto"),{parse:W1}=J1(),V1=new Set([...o6,...l6,...r6,...i6,"none"]),Z9=Array.from(V1).join(", ");function O1($,Z){let Q=$.slice(0,2),X=Z.slice(0,2),G=!0;if(Q==="RS"||Q==="PS")G=X==="RS"||Q==="RS"&&Z==="ENCRYPTED";else if(Q==="ES"||Q==="Ed")G=Q===X||Q==="ES"&&Z==="ENCRYPTED";if(!G)throw new i(i.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function _1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?$9($):e6($)}function Q9({key:$,algorithm:Z,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:Y,notBefore:J,kid:W,typ:V,isAsync:A,additionalHeader:F,fixedPayload:_},I,P){let[C,w]=A?a6(P):[];if(typeof I!=="object")throw new i(i.codes.invalidType,"The payload must be an object.");if(I.exp&&(!Number.isInteger(I.exp)||I.exp<0))throw new i(i.codes.invalidClaimValue,"The exp claim must be a positive integer.");let N={alg:Z,typ:V||"JWT",kid:W,...F},T="",E=I.iat*1000||G||Date.now(),v={...I,..._,iat:Q?void 0:Math.floor(E/1000),exp:I.exp?I.exp:Y?Math.floor((E+Y)/1000):void 0,nbf:I.nbf?I.nbf:J?Math.floor((E+J)/1000):void 0};if(X)Object.assign(I,v);if(T=Buffer.from(JSON.stringify(v),"utf-8").toString("base64").replace(CX,wX),!C){let g=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(CX,wX)+"."+T,y=Z==="none"?"":H1(Z,$,g);return g+"."+y}return t6($,{header:N,payload:I},(c,g)=>{if(c){let l=i.wrap(c,i.codes.keyFetchingError,"Cannot fetch key.");return C(l)}if(typeof g==="string")g=Buffer.from(g,"utf-8");else if(!(g instanceof Buffer))return C(new i(i.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a private key."));let y;try{let l=U1(g,Z);if(Z)O1(Z,l);else N.alg=Z=l;g=_1(g,Z);let H0=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(CX,wX)+"."+T;y=H0+"."+H1(Z,g,H0)}catch(l){return C(l)}C(null,y)}),w}A1.exports=function(Z){let{key:Q,algorithm:X,noTimestamp:G,mutatePayload:Y,clockTimestamp:J,expiresIn:W,notBefore:V,jti:A,aud:F,iss:_,sub:I,nonce:P,kid:C,typ:w,header:N}={clockTimestamp:0,...Z};if(X&&!V1.has(X))throw new i(i.codes.invalidOption,`The algorithm option must be one of the following values: ${Z9}.`);let T=typeof Q,E=T==="object"&&Q&&Q.key&&Q.passphrase;if(X==="none"){if(Q)throw new i(i.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!Q||T!=="string"&&!(Q instanceof Buffer)&&T!=="function"&&!E)throw new i(i.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(E&&!X)throw new i(i.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(Q&&T!=="function"){let g=U1(E?Q.key:Q,X);if(X)O1(X,g);else X=g;Q=_1(Q,X)}if(W){if(typeof W==="string")W=W1(W);if(typeof W!=="number")throw new i(i.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(V){if(typeof V==="string")V=W1(V);if(typeof V!=="number"||V<0)throw new i(i.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(J&&(typeof J!=="number"||J<0))throw new i(i.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(A&&typeof A!=="string")throw new i(i.codes.invalidOption,"The jti option must be a string.");if(F&&typeof F!=="string"&&!Array.isArray(F))throw new i(i.codes.invalidOption,"The aud option must be a string or an array of strings.");if(_&&typeof _!=="string")throw new i(i.codes.invalidOption,"The iss option must be a string.");if(I&&typeof I!=="string")throw new i(i.codes.invalidOption,"The sub option must be a string.");if(P&&typeof P!=="string")throw new i(i.codes.invalidOption,"The nonce option must be a string.");if(C&&typeof C!=="string")throw new i(i.codes.invalidOption,"The kid option must be a string.");if(N&&typeof N!=="object")throw new i(i.codes.invalidOption,"The header option must be a object.");let c=Object.entries({jti:A,aud:F,iss:_,sub:I,nonce:P}).reduce((g,[y,l])=>{if(l!==void 0)g[y]=l;return g},{});return Q9.bind(null,{key:Q,algorithm:X,noTimestamp:G,mutatePayload:Y,clockTimestamp:J,expiresIn:W,notBefore:V,kid:C,typ:w,isAsync:T==="function",additionalHeader:N,fixedPayload:c})}});var z1=t((V3,M1)=>{var{TokenError:X9,TOKEN_ERROR_CODES:G9}=l$(),Y9=aQ(),J9=Y1(),H9=F1();M1.exports={TokenError:X9,TOKEN_ERROR_CODES:G9,createDecoder:Y9,createVerifier:J9,createSigner:H9}});import{join as TQ}from"path";class D extends Error{kind;code;meta;noLog;logged;multiline;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.multiline=$.multiline===!0,this.cause=$.cause}}function q$($){if(typeof $!=="object"||$===null)return!1;let Z=$;if(Z.name!=="CoreError")return!1;if(typeof Z.kind!=="string")return!1;return!0}BZ();m0();function U$($){if(Array.isArray($)){let Z=[];for(let Q of $)Z.push(U$(Q));return Z}if(o($)){let Z={},Q=$;for(let X of Object.keys(Q))Z[X]=U$(Q[X]);return Z}return $}function VG($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let Q=[];for(let X of $)Q.push(U$(X));for(let X of Z)Q.push(U$(X));return Q}if(o($)&&o(Z)){let Q=$,X=Z,G={};for(let Y of Object.keys(Q))G[Y]=U$(Q[Y]);for(let Y of Object.keys(X)){let J=X[Y];if(J===void 0)continue;let W=G[Y];if(Array.isArray(W)&&Array.isArray(J)){let V=[];for(let A of W)V.push(U$(A));for(let A of J)V.push(U$(A));G[Y]=V;continue}if(o(W)&&o(J)){G[Y]=VG(U$(W),J);continue}G[Y]=U$(J)}return G}return U$(Z)}function OG(...$){let Z={};for(let Q of $){if(Q===void 0)continue;Z=VG(Z,Q)}return Z}var VH={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 _G($){if($!=="development"&&$!=="production")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1ANODE_ENV \u53EA\u80FD\u662F 'development' \u6216 'production'\uFF0C\u5F53\u524D\u503C=${String($)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let Z=TQ(process.cwd(),"configs"),Q=await L$(TQ(Z,"befly.common.json"),{}),X=await L$(TQ(Z,`befly.${$}.json`),{}),G=OG(VH,Q,X);G.nodeEnv=$;let Y=G.redis?.prefix;if(typeof Y==="string"){if(Y.trim().includes(":"))throw new D({message:`\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=${Y}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}})}let J=G.db?.idMode;if(J!==void 0&&J!=="timeId"&&J!=="autoId")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(J)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let W=G.strict;if(W!==void 0&&typeof W!=="boolean")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(W)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});return G}Z0();m0();async function AG($){let Z=!1,Q=new Set;for(let X of $)try{if(!o(X)){K.warn({item:X,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let G=X,Y=G.name;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof G.handler!=="function"){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let W=G.path;if(typeof W!=="string"||W.trim()==="")K.warn(Object.assign({},m(G,["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 C=W.trim();if(Q.has(C))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else Q.add(C);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(C))K.warn(Object.assign({},m(G,["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(!C.startsWith("/api/"))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(C.includes(" "))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(C.includes("/api//"))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=G.routePrefix,A=typeof V==="string"?V.trim():"";if(A==="")K.warn(Object.assign({},m(G,["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(!(A==="/app"||A.startsWith("/addon/")))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5FC5\u987B\u662F /app \u6216 /addon/<name>\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;if(typeof W==="string"&&W.trim()!==""){let C=W.trim(),w=`/api${A}/`;if(!C.startsWith(w))K.warn(Object.assign({},m(G,["handler"]),{expectedPrefix:w,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 F=G.method;if(F!==void 0&&!["GET","POST","GET,POST"].includes(String(F).toUpperCase()))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let _=G.auth;if(_!==void 0&&typeof _!=="boolean")K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let I=G.fields;if(I!==void 0&&I!==null&&!o(I))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let P=G.required;if(P!==void 0&&!Array.isArray(P))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(P)){if(P.some((C)=>typeof C!=="string"))K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(G){K.error({err:G,item:X,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({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 NQ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function OH($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function _H($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function AH($){if(!b$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function FH($){if(!$)throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.host))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.host \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!NQ($.port))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.username))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.username \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.username)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.password!==void 0&&typeof $.password!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!b$($.database))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.database \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.database)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.poolMax!==void 0){if(typeof $.poolMax!=="number"||!Number.isFinite($.poolMax)||$.poolMax<=0)throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.poolMax \u5FC5\u987B\u4E3A\u6B63\u6570\uFF0C\u5F53\u524D\u503C=${String($.poolMax)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}}function MH($){if(!$)throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 redis \u914D\u7F6E\uFF08config.redis\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.host!==void 0&&typeof $.host!=="string")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.host \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.host)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.port!==void 0&&!NQ($.port))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.port \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.port)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.db!==void 0&&!OH($.db))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.db \u5FC5\u987B\u4E3A\u975E\u8D1F\u6574\u6570\uFF0C\u5F53\u524D\u503C=${String($.db)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});let Z=$.prefix;if(Z!==void 0){if(typeof Z!=="string")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Aredis.prefix \u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String(Z)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(Z.includes(":"))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}}async function FG($){if(!$||typeof $!=="object")throw new D({message:"\u914D\u7F6E\u9519\u8BEF\uFF1Aconfig \u5FC5\u987B\u4E3A\u5BF9\u8C61",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.nodeEnv!=="development"&&$.nodeEnv!=="production")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AnodeEnv \u53EA\u80FD\u662F development/production\uFF0C\u5F53\u524D\u503C=${String($.nodeEnv)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if($.appName!==void 0){if(!b$($.appName))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appName)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.appPort!==void 0){if(!NQ($.appPort))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappPort \u5FC5\u987B\u4E3A 1..65535 \u7684\u6570\u5B57\uFF0C\u5F53\u524D\u503C=${String($.appPort)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.appHost!==void 0){if(!b$($.appHost))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AappHost \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\uFF0C\u5F53\u524D\u503C=${String($.appHost)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.devEmail!==void 0){if(typeof $.devEmail!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});let Z=$.devEmail.trim();if(Z.length>0&&!Z.includes("@"))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.devPassword!==void 0){if(typeof $.devPassword!=="string")throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.bodyLimit!==void 0){if(!_H($.bodyLimit))throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1AbodyLimit \u5FC5\u987B\u4E3A\u6B63\u6574\u6570\uFF08\u5B57\u8282\uFF09\uFF0C\u5F53\u524D\u503C=${String($.bodyLimit)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if($.tz!==void 0){if(!AH($.tz))throw new D({message:`\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)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}})}if(typeof $.strict!=="boolean")throw new D({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A true \u6216 false\uFF0C\u5F53\u524D\u503C=${String($.strict)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});FH($.db),MH($.redis)}Z0();m0();var MG=["name","enable","deps","handler"];async function zG($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let X of $)try{if(!o(X)){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let G=X,Y=G.moduleName;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(X,["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 J=G.customKeys;if(!Array.isArray(J)){K.warn(Object.assign({},m(X,["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(J.some((F)=>typeof F!=="string")){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let W=J.filter((F)=>!MG.includes(F));if(W.length>0){K.warn(Object.assign({},m(X,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${W.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${MG.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof G.enable!=="boolean"){K.warn(Object.assign({},m(X,["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 G.enable=!0;if(G.source==="core"){let F=typeof G.name==="string"?G.name:"";if(F===""){K.warn(Object.assign({},m(X,["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(!Q.test(F)){K.warn(Object.assign({},m(X,["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(!Q.test(String(G.moduleName))){K.warn(Object.assign({},m(X,["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(F!==String(G.moduleName)){K.warn(Object.assign({},m(X,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=G.filePath;if(typeof _!=="string"||!_.startsWith(`core:hook:${F}`)){K.warn(Object.assign({},m(X,["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(A){let F=G.deps;if(!Array.isArray(F)){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(F.some((_)=>typeof _!=="string")){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let F=G.deps;if(!Array.isArray(F))G.deps=[]}if(typeof G.handler!=="function"){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(G){K.error({err:G,item:X,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}Z0();xQ();function SH($){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 SG=async($)=>{let Z=!1,Q=await PG($),X=[];for(let Y of Q)X.push({menu:Y,depth:1});let G=new Set;while(X.length>0){let Y=X.pop(),J=Y?.menu,W=typeof Y?.depth==="number"?Y.depth:0;if(J===null||typeof J!=="object"){Z=!0,K.warn({menu:J,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(W>3){Z=!0,K.warn({path:J?.path,depth:W,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let V=J.children;if(typeof V<"u"&&!Array.isArray(V)){Z=!0,K.warn({path:J?.path,childrenType:typeof V,msg:"\u83DC\u5355 children \u5FC5\u987B\u662F\u6570\u7EC4"});continue}if(Array.isArray(V)&&V.length>0)if(W>=3)Z=!0,K.warn({path:J?.path,depth:W,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let P of V)X.push({menu:P,depth:W+1});let A=typeof J.path==="string"?J.path.trim():"",F=typeof J.name==="string"?J.name.trim():"",_=typeof J.sort==="number"?J.sort:999999;if(typeof J.path==="string")J.path=A;if(typeof J.name==="string")J.name=F;if(typeof J.sort>"u")J.sort=_;if(!A){Z=!0,K.warn({menu:J,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let I=SH(A);if(!I.ok)Z=!0,K.warn({path:A,reason:I.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!F)Z=!0,K.warn({path:A,menu:J,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof J.sort<"u"&&typeof J.sort!=="number")Z=!0,K.warn({path:A,sort:J.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof J.sort==="number"&&(!Number.isFinite(J.sort)||J.sort<1))Z=!0,K.warn({path:A,sort:J.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(G.has(A)){Z=!0,K.warn({path:A,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}G.add(A)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return Q};Z0();m0();var CG=["name","enable","deps","handler"];async function wG($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let X of $)try{if(!o(X)){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let G=X,Y=G.moduleName;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(X,["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 J=G.customKeys;if(!Array.isArray(J)){K.warn(Object.assign({},m(X,["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(J.some((F)=>typeof F!=="string")){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let W=J.filter((F)=>!CG.includes(F));if(W.length>0){K.warn(Object.assign({},m(X,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${W.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${CG.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof G.enable!=="boolean"){K.warn(Object.assign({},m(X,["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 G.enable=!0;if(G.source==="core"){let F=typeof G.name==="string"?G.name:"";if(F===""){K.warn(Object.assign({},m(X,["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(!Q.test(F)){K.warn(Object.assign({},m(X,["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(!Q.test(String(G.moduleName))){K.warn(Object.assign({},m(X,["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(F!==String(G.moduleName)){K.warn(Object.assign({},m(X,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=G.filePath;if(typeof _!=="string"||!_.startsWith(`core:plugin:${F}`)){K.warn(Object.assign({},m(X,["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(A){let F=G.deps;if(!Array.isArray(F)){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(F.some((_)=>typeof _!=="string")){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let F=G.deps;if(!Array.isArray(F))G.deps=[]}if(typeof G.handler!=="function"){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(G){K.error({err:G,item:X,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new D({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}Z0();var EG=new Set(["char","varchar","enum","tinytext","text","mediumtext","longtext"]),CH=new Set(["tinytext","text","mediumtext","longtext"]),fQ=new Set(["tinyint","smallint","mediumint","int","bigint"]),gQ=new Set(["decimal"]),yQ=new Set(["float","double"]),wH=new Set(["json"]),EH=new Set(["enum"]);function F$($){return String($||"").trim().toLowerCase()}function TG($){return EG.has(F$($))}function NG($){return CH.has(F$($))}function DG($){return fQ.has(F$($))}function kG($){return gQ.has(F$($))}function vG($){return yQ.has(F$($))}function xG($){return wH.has(F$($))}function fG($){return EH.has(F$($))}function gG($){let Z=F$($);return fQ.has(Z)||gQ.has(Z)||yQ.has(Z)}function TH($){let Z=F$($);if(fQ.has(Z))return"integer";if(gQ.has(Z)||yQ.has(Z))return"number";if(EG.has(Z)||Z==="datetime"||Z==="timestamp")return"string";if(Z==="json")return"json";return"string"}function SZ($,Z){let Q=String($||"").trim(),X=String(Z||"").trim();return{type:Q,input:X||TH(Q)}}function u$($){let Z=String($||"").trim();if(Z==="")return[];let Q=Z.split("|").map((G)=>G.trim()).filter((G)=>G!==""),X=[];for(let G of Q)if(!X.includes(G))X.push(G);return X}m0();var pG=["id","created_at","updated_at","deleted_at","state"],yG=new Set(pG),uG=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","enum","tinytext","text","mediumtext","longtext","datetime","timestamp","json"],NH=new Set(uG),mG=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],DH=new Set(mG),dG=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],kH=new Set(dG),vH=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,xH=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,hG=16383,bG=500,cG=180;async function nG($,Z){let Q=!1;for(let X of $){if(X.type!=="table")continue;let G=typeof X.sourceName==="string"?X.sourceName:"",Y=G?`${G}\u8868 `:"\u8868 ";try{let J=X.fileName;if(X.source==="addon"&&String(X.addonName).trim()===""){K.warn(`${Y}${J} addon \u8868\u7F3A\u5C11 addonName`),Q=!0;continue}let W=X.content;if(typeof W!=="object"||W===null||Array.isArray(W)){K.warn(`${Y}${J} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),Q=!0;continue}if(!vH.test(J)){K.warn(`${Y}${J} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),Q=!0;continue}for(let[V,A]of Object.entries(W)){if(typeof A!=="object"||A===null||Array.isArray(A)){K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),Q=!0;continue}let F=p(V);if(yG.has(V)||yG.has(F))K.warn(`${Y}${J} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${V}\uFF08\u6620\u5C04\u5217\u540D: ${F}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${pG.join(", ")}`),Q=!0;let _=A,P=Object.keys(_).filter((B)=>!kH.has(B));if(P.length>0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${P.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${dG.join(", ")}`),Q=!0;if(!_.name||typeof _.name!=="string"){K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),Q=!0;continue}if(!_.type||typeof _.type!=="string"){K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),Q=!0;continue}if(_.input!==void 0&&typeof _.input!=="string")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),Q=!0;if(_.min!==void 0&&!(_.min===null||typeof _.min==="number"))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.max!==void 0&&!(_.max===null||typeof _.max==="number"))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.detail!==void 0&&typeof _.detail!=="string")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),Q=!0;if(_.precision!==void 0&&!(_.precision===null||typeof _.precision==="number"))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.scale!==void 0&&!(_.scale===null||typeof _.scale==="number"))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),Q=!0;if(_.index!==void 0&&typeof _.index!=="boolean")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.unique!==void 0&&typeof _.unique!=="boolean")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.nullable!==void 0&&typeof _.nullable!=="boolean")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;if(_.unsigned!==void 0&&typeof _.unsigned!=="boolean")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),Q=!0;let C=SZ(_.type,_.input||""),w=C.type,N=C.input;if(_.default!==void 0&&_.default!==null&&!MZ(_.default))K.warn(`${Y}${J} \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=${G$(_.default)}\uFF09`),Q=!0;if(Z.strict){if(!xH.test(_.name))K.warn(`${Y}${J} \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"),Q=!0}if(!NH.has(w))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${w}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${uG.join("\u3001")}\u4E4B\u4E00`),Q=!0;let T=N.trim();if(T==="")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),Q=!0;else if(!DH.has(T)&&!g$(T)&&!T$(T)&&!RQ(T))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${T}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${mG.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),Q=!0;let E=kG(w),v=vG(w),c=xG(w),g=fG(w),y=gG(w),l=TG(w),n=NG(w),H0=DG(w);if(g){if(T.trim()==="")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E input \u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09`),Q=!0;else if(!T$(T))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cinput \u5FC5\u987B\u4E3A\u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09\uFF0C\u5F53\u524D\u4E3A ${G$(T)}`),Q=!0}if(g$(T)||T$(T)||RQ(T)){if(!l)K.warn(`${Y}${J} \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/enum/text\uFF09`),Q=!0}if(T==="number"||T==="integer"){if(T==="integer"&&!H0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),Q=!0;if(T==="number"&&!y)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),Q=!0}if(T==="array"||T==="array_number"||T==="array_integer"){if(!l)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),Q=!0}if(T==="json"||T==="json_number"||T==="json_integer"){if(!(c||n))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${T} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),Q=!0}if(!y&&_.unsigned!==void 0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${w}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),Q=!0;if(_.unique===!0&&_.index===!0)K.warn(`${Y}${J} \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"),Q=!0;if(_.min!==void 0&&_.max!==void 0&&_.min!==null&&_.max!==null){if(_.min>_.max)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u6700\u5C0F\u503C "${_.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${_.max}"`),Q=!0}if(n||c){if(_.min!==void 0&&_.min!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.default!==void 0&&_.default!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.default}"`),Q=!0;if(_.index===!0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),Q=!0;if(_.unique===!0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),Q=!0}else if(w==="datetime"||w==="timestamp"){if(_.min!==void 0&&_.min!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.default!==void 0&&_.default!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \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 ${G$(_.default)}`),Q=!0;if(_.unsigned!==void 0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),Q=!0}else if(w==="enum"){if(_.min!==void 0&&_.min!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.min}"`),Q=!0;if(_.max!==void 0&&_.max!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;if(_.precision!==void 0&&_.precision!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E precision`),Q=!0;if(_.scale!==void 0&&_.scale!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E scale`),Q=!0;if(_.unsigned!==void 0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),Q=!0;let B=u$(T);if(_.default===void 0||_.default===null){if(_.nullable!==!0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0Cnullable!=true \u65F6\u5FC5\u987B\u8BBE\u7F6E default\uFF08\u4E14 default \u5FC5\u987B\u4E3A\u679A\u4E3E\u503C\u4E4B\u4E00\uFF09`),Q=!0}else if(typeof _.default!=="string")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0;else if(!B.includes(_.default))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185\uFF08default=${G$(_.default)}\uFF0Cenums=${G$(T)}\uFF09`),Q=!0}else if(E){let{precision:B,scale:H}=_;if(typeof B!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),Q=!0;else if(B<1||B>65)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${B}`),Q=!0;if(typeof H!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),Q=!0;else if(H<0||H>30)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${H}`),Q=!0;if(typeof B==="number"&&typeof H==="number"&&H>B)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${B}, scale=${H}\uFF09`),Q=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(w==="char"||w==="varchar"){if(_.max===void 0||_.max===null||typeof _.max!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;else if(_.max>hG)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${_.max} \u8D8A\u754C\uFF0C`+`${w} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${hG} \u8303\u56F4\u5185`),Q=!0;else{if(_.index===!0&&_.max>bG)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${bG}\uFF09`),Q=!0;if(_.unique===!0&&_.max>cG)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${_.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${cG}\uFF09`),Q=!0}if(T==="char"&&typeof _.max==="number"&&_.max>1)K.warn(`${Y}${J} \u6587\u4EF6 ${V} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${_.max}`),Q=!0;if(_.default!==void 0&&_.default!==null&&typeof _.default!=="string")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(H0){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}else if(v){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${G$(_.default)}\uFF09`),Q=!0}}}catch(J){K.error({msg:`${Y}${X.fileName} \u89E3\u6790\u5931\u8D25`,err:J}),Q=!0}}if(Q)throw new D({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:fH,RedisClient:gH}=globalThis.Bun;Z0();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=$||{},Q=typeof Z.host==="string"?Z.host.trim():"",X=typeof Z.port==="number"?Z.port:NaN,G=typeof Z.username==="string"?Z.username.trim():"",Y=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",J=typeof Z.database==="string"?Z.database.trim():"";if(!Q)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(X)||X<1||X>65535)throw new D({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(!G)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!J)throw new D({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let W=encodeURIComponent(G),V=encodeURIComponent(Y),A=encodeURIComponent(J),F=`mysql://${W}:${V}@${Q}:${X}/${A}`,_=new fH({url:F,max:Z.poolMax??1,bigint:!1});try{let P=(async()=>{let w=await _`SELECT VERSION() AS version`,N=typeof w?.[0]?.version==="string"?w?.[0]?.version:String(w?.[0]?.version||""),T=N.split(".")[0],E=Number(T);if(!Number.isFinite(E))throw new D({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${N}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(E<8)throw new D({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${N}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=N,this.mysqlVersionMajor=E,N})(),C=new Promise((w,N)=>{setTimeout(()=>{N(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([P,C]),this.sqlClient=_,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,_}catch(I){K.error({err:I,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await _?.close()}catch{}if(q$(I))throw I.logged=!0,I;let P=`SQL \u8FDE\u63A5\u5931\u8D25: ${I&&typeof I.message==="string"?I.message:String(I)}`;throw new D({message:P,kind:"runtime",logged:!0,cause:I,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){K.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 Q=Z.host||"127.0.0.1",X=Z.port||6379,G=Z.username||"",Y=Z.password||"",J=Z.db||0,W="",V=G?encodeURIComponent(G):"",A=Y?encodeURIComponent(Y):"";if(V&&A)W=`${V}:${A}@`;else if(A)W=`:${A}@`;let F=`redis://${W}${Q}:${X}/${J}`,_=new gH(F,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await _.ping(),this.redisClient=_,this.redisConnectedAt=Date.now(),_}catch(Q){K.error({err:Q,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let X=`Redis \u8FDE\u63A5\u5931\u8D25: ${Q&&typeof Q.message==="string"?Q.message:String(Q)}`;throw new D({message:X,kind:"runtime",logged:!0,cause:Q,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){K.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 Q=typeof process?.env?.NODE_ENV==="string"?"development":"";if(K.error({env:Q,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),q$(Z))throw Z.logged=!0,Z;let X=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new D({message:X,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}}Z0();Z0();async function sG($){let Z=new Map;for(let Q of $)try{if(Q.type!=="api")continue;let X=Q,G=X.path,Y={name:X.name,handler:X.handler,route:G},J=X.method;if(typeof J==="string"){let _=J.toUpperCase(),I=_==="POST,GET"?"GET,POST":_;Y.method=["GET","POST","GET,POST"].includes(I)?I:"POST"}else Y.method="POST";let W=X.auth;if(W!==void 0)Y.auth=W;let V=X.fields;if(V!==void 0)Y.fields=V;let A=X.required;if(A!==void 0)Y.required=A;let F=X.rawBody;if(F!==void 0)Y.rawBody=F;Z.set(G,Y)}catch(X){throw K.error({err:X,api:Q.relativePath,file:Q.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new D({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"api",operation:"load",relativePath:Q.relativePath,filePath:Q.filePath}})}return Z}Z0();m0();function CZ($,Z={}){let Q=Z.moduleLabel||"\u6A21\u5757",X=Z.getName||((_)=>{let I=_.moduleName;if(typeof I==="string"&&I.trim()!=="")return I;return j$(_.fileName)}),G=Z.getDeps||((_)=>{let I=_.deps;if(!Array.isArray(I))return[];return I.filter((P)=>typeof P==="string")}),Y=[],J=new Set,W=new Set,V={},A=!0;for(let _ of $){let I=X(_);if(typeof I!=="string"||I.trim()===""){K.error({item:_,msg:`${Q} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),A=!1;continue}if(V[I]){K.error({name:I,first:V[I],second:_,msg:`${Q} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),A=!1;continue}V[I]=_}if(!A)return!1;for(let _ of $){let I=X(_),P=G(_);if(!Array.isArray(P)){K.error({module:I,item:_,msg:`${Q} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),A=!1;continue}for(let C of P){if(typeof C!=="string"){K.error({module:I,dependency:C,item:_,msg:`${Q} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),A=!1;continue}if(!V[C])K.error({module:I,dependency:C,msg:`${Q} \u4F9D\u8D56\u672A\u627E\u5230`}),A=!1}}if(!A)return!1;let F=(_)=>{if(J.has(_))return;if(W.has(_)){K.error({module:_,msg:`${Q} \u5FAA\u73AF\u4F9D\u8D56`}),A=!1;return}let I=V[_];if(!I)return;let P=G(I);W.add(_);for(let C of P)F(C);W.delete(_),J.add(_),Y.push(I)};for(let _ of $){let I=X(_);F(I)}return A?Y:!1}async function oG($){let Z=[],Q=$.filter((G)=>{let Y=G.moduleName;if(typeof Y!=="string"||Y.trim()==="")return!1;if((Object.hasOwn(G,"enable")?G.enable:void 0)===!1)return!1;return!0}),X=CZ(Q,{moduleLabel:"\u94A9\u5B50"});if(X===!1)throw new D({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let G of X){let Y=G.moduleName,J=Object.hasOwn(G,"deps")?G.deps:void 0,W=Array.isArray(J)?J.filter((F)=>typeof F==="string"):[],V=Object.hasOwn(G,"handler")?G.handler:void 0;if(typeof V!=="function")throw new D({kind:"validation",message:`Hook '${Y}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"hook",operation:"load",hook:Y}});let A=V;Z.push({name:Y,enable:!0,deps:W,handler:A})}return Z}Z0();async function lG($,Z){let Q=[],X=$.filter((Y)=>{let J=Y.moduleName;if(typeof J!=="string"||J.trim()==="")return!1;if((Object.hasOwn(Y,"enable")?Y.enable:void 0)===!1)return!1;return!0}),G=CZ(X,{moduleLabel:"\u63D2\u4EF6"});if(G===!1)throw new D({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Y of G){let J=Y.moduleName,W=Object.hasOwn(Y,"deps")?Y.deps:void 0,V=Array.isArray(W)?W.filter((_)=>typeof _==="string"):[],A=Object.hasOwn(Y,"handler")?Y.handler:void 0;if(typeof A!=="function")throw new D({kind:"validation",message:`\u63D2\u4EF6 '${J}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"plugin",operation:"load",plugin:J}});let F=A;try{let _=await F(Z);Z[J]=_,Q.push({name:J,enable:!0,deps:V,handler:F})}catch(_){throw K.error({err:_,plugin:J,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${J}`,logged:!0,cause:_,meta:{subsystem:"plugin",operation:"init",plugin:J}})}}return Q}qZ();Z0();function rG($,Z){let Q=$.headers.get("x-forwarded-for");if(typeof Q==="string"&&Q.trim()){let W=Q.split(",")[0];if(typeof W==="string"&&W.trim())return W.trim()}let X=$.headers.get("x-real-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("cf-connecting-ip");if(typeof G==="string"&&G.trim())return G.trim();let Y=$.headers.get("x-client-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();let J=$.headers.get("true-client-ip");if(typeof J==="string"&&J.trim())return J.trim();if(Z&&typeof Z.requestIP==="function"){let W=Z.requestIP($);if(W&&typeof W.address==="string"&&W.address.trim())return W.address.trim()}return"unknown"}Z0();function S$($,Z,Q=1,X=null,G=null,Y=null){if($.requestId)K.info({event:"request_blocked",reason:Z,reasonCode:Y,code:Q,detail:G,msg:"request blocked"});return Response.json({code:Q,msg:Z,data:X,detail:G},{headers:$.corsHeaders})}function hQ($){if($.api&&$.requestId)K.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 Q=JSON.stringify(Z,(X,G)=>typeof G==="bigint"?G.toString():G);return new Response(Q,{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})}m0();function iG($,Z,Q){return async(X,G)=>{let Y=tX(),W=new URL(X.url).pathname||"/",V=rG(X,G),A=Date.now(),F={method:X.method,body:{},user:{},req:X,now:A,ip:V,headers:X.headers,route:W,requestId:Y,corsHeaders:{"X-Request-ID":Y}},_=$.get(W);if(_)F.api=_;return $G({requestId:Y,method:X.method,route:W,ip:V,now:A},async()=>{try{for(let I of Z)if(await I.handler(Q,F),F.response)return F.response;if(F.api&&X.method!=="OPTIONS"){let I={event:"request",apiName:F.api.name};if(F.body&&Object.keys(F.body).length>0)I.body=F.body;I.msg="request",K.info(I)}if(!F.api){if(X.method!=="OPTIONS")F.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:F.corsHeaders})}else if(F.api.handler){let I=await F.api.handler(Q,F);if(I instanceof Response)F.response=I;else F.result=I}return hQ(F)}catch(I){let P=F.api?W:X.url;return K.error({err:I,path:P,msg:"\u8BF7\u6C42\u9519\u8BEF"}),F.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},hQ(F)}})}}P$();Z0();P$();import{fileURLToPath as yH}from"url";var hH=yH(import.meta.url),C$=LZ(hH);var W5=N$(C$).endsWith("/dist")?C$:r(C$,"dist"),U5=r(C$,"checks"),V5=r(C$,"plugins"),O5=r(C$,"hooks"),_5=r(C$,"apis"),A5=r(C$,"tables"),s0=process.cwd(),F5=r(s0,"checks"),M5=r(s0,"plugins"),z5=r(s0,"hooks"),K5=r(s0,"apis"),R5=r(s0,"tables"),I5=r(s0,"addons");function wZ($,Z={}){let Q=Z.origin||"*";return{"Access-Control-Allow-Origin":Q==="*"?$.headers.get("origin")||"*":Q,"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 tG($=void 0){return async(Z)=>{let Q=wZ(Z,$),X=new URL(Z.url),G=r(s0,"public",X.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:Q});let Y=Bun.file(G);if(await Y.exists())return new Response(Y,{headers:{"Content-Type":Y.type||"application/octet-stream",...Q}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:Q})}catch(Y){return K.error({err:Y,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:Q})}}}Z0();m0();var bH=($)=>{let Z=$.split("/").map((Y)=>Y.trim()).filter((Y)=>Y.length>0),X=(Z[1]||"")==="addon"?4:3,G=Z.slice(0,Math.min(X,Z.length));if(G.length===0)return"";return`/${G.join("/")}`};async function aG($,Z){if(!$.db)throw new D({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new D({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){K.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let G=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],Y=iX(G,(F)=>F.path),J=[],W=[],V=[],A=new Set;for(let F of Z){if(F.type!=="api")continue;let _=F,I=_.path,P=_.name,C=_.addonName;if(typeof I!=="string"||I.trim()==="")continue;if(typeof P!=="string"||P.trim()==="")continue;let w=typeof C==="string"?C:"",N=_.auth,T=N===!1||N===0?0:1,E=bH(I);A.add(I);let v=Y[I];if(v){if(P!==v.name||I!==v.path||w!==v.addonName||E!==v.parentPath||T!==v.auth)W.push({id:v.id,name:P,path:I,parentPath:E,addonName:w,auth:T})}else J.push({name:P,path:I,parentPath:E,addonName:w,auth:T})}for(let F of G)if(!A.has(F.path))V.push(F.id);if(W.length>0)try{await $.db.updBatch("addon_admin_api",W.map((F)=>{return{id:F.id,data:{name:F.name,path:F.path,parentPath:F.parentPath,addonName:F.addonName,auth:F.auth}}}))}catch(F){K.error({err:F,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(J.length>0)try{await $.db.insBatch("addon_admin_api",J.map((F)=>{return{name:F.name,path:F.path,parentPath:F.parentPath,addonName:F.addonName,auth:F.auth}}))}catch(F){K.error({err:F,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(V.length>0)try{await $.db.delForceBatch("addon_admin_api",V)}catch(F){K.error({err:F,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function eG($){if(!$.cache)throw new D({message:"\u540C\u6B65\u7F13\u5B58\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});await $.cache.cacheApis(),await $.cache.cacheMenus(),await $.cache.rebuildRoleApiPermissions(),await $.cache.rebuildRoleMenuPermissions()}import{createSign as cH}from"crypto";class m${static md5($,Z="hex"){let Q=new Bun.CryptoHasher("md5");return Q.update($),Q.digest(Z)}static hmacMd5($,Z,Q="hex"){let X=new Bun.CryptoHasher("md5",$);return X.update(Z),X.digest(Q)}static sha1($,Z="hex"){let Q=new Bun.CryptoHasher("sha1");return Q.update($),Q.digest(Z)}static hmacSha1($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha1",$);return X.update(Z),X.digest(Q)}static sha256($,Z="hex"){let Q=new Bun.CryptoHasher("sha256");return Q.update($),Q.digest(Z)}static rsaSha256($,Z,Q="hex"){let X=cH("RSA-SHA256");return X.update($),X.sign(Z,Q)}static hmacSha256($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha256",$);return X.update(Z),X.digest(Q)}static sha512($,Z="hex"){let Q=new Bun.CryptoHasher("sha512");return Q.update($),Q.digest(Z)}static hmacSha512($,Z,Q="hex"){let X=new Bun.CryptoHasher("sha512",$);return X.update(Z),X.digest(Q)}static hash($,Z,Q="hex"){let X=new Bun.CryptoHasher($);return X.update(Z),X.digest(Q)}static hmac($,Z,Q,X="hex"){let G=new Bun.CryptoHasher($,Z);return G.update(Q),G.digest(X)}static async hashFile($,Z="sha256",Q="hex"){let X=Bun.file($),G=new Bun.CryptoHasher(Z),J=X.stream().getReader();try{while(!0){let{done:W,value:V}=await J.read();if(W)break;G.update(V)}return G.digest(Q)}finally{J.releaseLock()}}static async hashPassword($,Z={}){let Q=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,Q)}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),Q=crypto.getRandomValues(new Uint8Array(Z)),X="";for(let G=0;G<Q.length;G++)X+=Q[G].toString(16).padStart(2,"0");return X.slice(0,$)}static fastHash($,Z=0){let Q=Bun.hash($,Z);return typeof Q==="bigint"?Number(Q):Q}}Z0();async function $Y($,Z={}){if(!Z.devPassword)return;if(!$.db)throw new D({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!$.cache)throw new D({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!(await $.db.tableExists("addon_admin_admin")).data){K.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){K.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){K.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){K.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let Q=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),X=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),G=await $.db.getOne({table:"addon_admin_role",where:{code:"dev"}}),Y={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:Q.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),apis:X.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),sort:0};if(typeof G.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:Y.name,description:Y.description,menus:Y.menus,apis:Y.apis,sort:Y.sort}});else await $.db.insData({table:"addon_admin_role",data:Y});let J={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await m$.hashPassword(m$.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:J.nickname,email:J.email,username:J.username,password:J.password,roleCode:J.roleCode,roleType:J.roleType}});else await $.db.insData({table:"addon_admin_admin",data:J});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 A of V)if((await $.db.getOne({table:"addon_admin_role",where:{code:A.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:A.code},data:{name:A.name,description:A.description,sort:A.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:A.code,name:A.name,description:A.description,menus:[],apis:[],sort:A.sort}})}Z0();xQ();function pH($){let Z=$.config?.disableMenus,Q=Array.isArray(Z)?Z:[],X=[];for(let Y of Q){if(typeof Y!=="string")continue;let J=Y.trim();if(!J)continue;X.push(J)}if(X.length===0)return()=>!1;let G=X.map((Y)=>new Bun.Glob(Y));return(Y)=>{if(typeof Y!=="string")return!1;let J=Y.trim();if(!J)return!1;let W=[];if(W.push(J),J.startsWith("/"))W.push(J.slice(1));else W.push(`/${J}`);for(let V of G){let A=typeof V==="object"&&V!==null&&"match"in V?V.match:void 0;if(typeof A!=="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 F=A;for(let _ of W)if(F.call(V,_))return!0}return!1}}function ZY($,Z){let Q=[];for(let X of $){if(X===null||typeof X!=="object")continue;let G=typeof X.path==="string"?String(X.path).trim():"";if(G&&Z(G))continue;let Y=X.children,J=Array.isArray(Y)&&Y.length>0?ZY(Y,Z):[],W={};if(typeof X.name==="string")W.name=X.name;if(typeof X.path==="string")W.path=X.path;if(typeof X.sort==="number")W.sort=X.sort;if(typeof X.parentPath==="string")W.parentPath=X.parentPath;if(J.length>0)W.children=J;Q.push(W)}return Q}function uH($){let Z=new Map,Q=[];for(let X of $)Q.push({menu:X,parentPathFromTree:""});while(Q.length>0){let X=Q.pop(),G=X?X.menu:null;if(!G)continue;let Y=typeof G.path==="string"?G.path:"",J=G.children;if(J&&Array.isArray(J)&&J.length>0){let _=typeof Y==="string"?Y:"";for(let I of J)Q.push({menu:I,parentPathFromTree:_})}if(!Y)continue;let W=typeof G.name==="string"?G.name:"";if(!W)continue;let V=typeof G.sort==="number"?G.sort:999999,F=typeof G.parentPath==="string"?G.parentPath:typeof X?.parentPathFromTree==="string"?X.parentPathFromTree:LG(Y);Z.set(Y,{path:Y,name:W,sort:V,parentPath:F})}return Z}async function QY($,Z){if(!$.db)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new D({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){K.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let Q=pH($),X=ZY(Z,Q),G=uH(X),Y=new Set;for(let W of G.keys())Y.add(W);let J="addon_admin_menu";await $.db.trans(async(W)=>{let A=(await W.getAll({table:J,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],F=A.filter((E)=>typeof E?.state==="number"&&E.state>=0),_=new Map,I=new Set,P=new Map;for(let E of F){if(typeof E?.path!=="string"||!E.path)continue;if(typeof E?.id!=="number")continue;if(Q(E.path))continue;let v=_.get(E.path);if(!v){_.set(E.path,E);continue}let c=typeof v?.id==="number"?v.id:0,g=E.id;if(g>c){if(_.set(E.path,E),c>0)I.add(c);let y=P.get(E.path)||{keptId:g,removedIds:[]};if(y.keptId=g,c>0)y.removedIds.push(c);P.set(E.path,y)}else{if(g>0)I.add(g);let y=P.get(E.path)||{keptId:c,removedIds:[]};if(y.keptId=c,g>0)y.removedIds.push(g);P.set(E.path,y)}}if(P.size>0){let E=[];for(let v of P.entries()){let c=v[0],g=v[1];if(E.push({path:c,keptId:g.keptId,removedIds:g.removedIds}),E.length>=10)break}K.warn({table:J,duplicatePaths:P.size,duplicateIds:I.size,examples:E,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 C=[],w=[];for(let E of G.values()){let v=_.get(E.path);if(v){let c=typeof v.parentPath==="string"?v.parentPath:"";if(v.name!==E.name||v.sort!==E.sort||c!==E.parentPath)C.push({id:v.id,data:{name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort}})}else w.push({name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort})}if(C.length>0)await W.updBatch(J,C);if(w.length>0)await W.insBatch(J,w);let N=new Set;for(let E of F){if(typeof E?.path!=="string"||!E.path)continue;if(!Y.has(E.path)){if(typeof E?.id==="number")N.add(E.id)}}for(let E of I)if(typeof E==="number"&&E>0)N.add(E);for(let E of A){if(typeof E?.path!=="string"||!E.path)continue;if(!Q(E.path))continue;if(typeof E?.id==="number"&&E.id>0)N.add(E.id)}let T=Array.from(N);if(T.length>0)await W.delForceBatch(J,T)})}Z0();function t0($){let Z=String($.type??"").trim(),Q=typeof $.input==="string"?$.input.trim():"",X=SZ(Z,Q),G=$.default??null;if(G===null){if(X.input==="array"||X.input==="array_number"||X.input==="array_integer")G="[]"}return{name:$.name,type:X.type,input:X.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:G,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function cQ($){return String($).replace(/"/g,"\\\"")}function pQ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let Q of $)Z.push(pQ(Q));return Z}return String($)}function mH($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function dH($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function bQ($){if(mH($))return $;if(Array.isArray($)){let Z=[];for(let Q of $){let X=bQ(Q);if(X===null)return null;Z.push(X)}return Z}if(dH($)){let Z={};for(let[Q,X]of Object.entries($)){if(X===void 0)continue;let G=bQ(X);if(G===null)return null;Z[Q]=G}return Z}return null}function XY($){if(!Array.isArray($))return[];let Z=[];for(let Q of $){if(Q===null){Z.push(null);continue}if(typeof Q==="string"||typeof Q==="number"||typeof Q==="boolean"){Z.push(Q);continue}if(typeof Q==="bigint"){Z.push(String(Q));continue}if(Q instanceof Date){Z.push(Q);continue}let X=bQ(Q);if(X!==null){Z.push(X);continue}Z.push(String(Q))}return Z}function w$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}m0();class k{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",enum:"ENUM",datetime:"DATETIME",timestamp:"TIMESTAMP",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 new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});if(!$.config)throw new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.config \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});this.dbName=String($.config.db?.database||""),this.db=$.db}async run($){try{if(!Array.isArray($))throw new D({kind:"validation",message:"\u540C\u6B65\u8868\uFF1A\u8BF7\u4F20\u5165\u591A\u4E2A\u8868\u5B9A\u4E49\u7EC4\u6210\u7684\u6570\u7EC4",noLog:!0,meta:{subsystem:"syncTable",operation:"run"}});await k.ensureDbVersion(this.db);let Z=[],Q=[];for(let G of $){if(!G||G.type!=="table")continue;let Y=G.source==="addon"?`addon_${p(G.addonName)}_${p(G.fileName)}`:p(G.fileName),J=G.content;for(let A of Object.values(J))k.normalizeFieldDefinitionInPlace(A);let W=await k.tableExists(this.db,this.dbName,Y),V={item:G,tableName:Y,tableFields:J,existsTable:W,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(W){let A=await k.getTableColumns(this.db,this.dbName,Y),F=await k.getTableIndexes(this.db,this.dbName,Y),_=k.collectIncompatibleTypeChanges(Y,A,J);for(let I of _)Q.push(I);V.existingColumns=A,V.existingIndexes=F}Z.push(V)}k.throwIfIncompatibleTypeChanges(Q);for(let G of Z){if(!G.existsTable)continue;if(!G.existingColumns||!G.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${G.tableName}\uFF09`);let Y=k.buildTablePlan({tableName:G.tableName,fields:G.tableFields,existingColumns:G.existingColumns,existingIndexes:G.existingIndexes});G.plan=Y.plan,G.planSummary=Y.summary,G.planDetails=Y.details;for(let J of Y.incompatibleTypeChanges)Q.push(J)}k.throwIfIncompatibleTypeChanges(Q);let X=[];for(let G of Z){let{item:Y,tableName:J,tableFields:W,existsTable:V}=G;try{if(V){let{plan:A,planSummary:F,planDetails:_}=G;if(A&&A.changed&&F&&_){let I=`[\u8868 ${J}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${F.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${F.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${F.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${F.indexChanges}`,P=_.fieldChanges.flatMap((N)=>N.changes.map((T)=>{let E=String(T.current??""),v=String(T.expected??"");return`- ${N.dbFieldName}.${T.type}: ${E} -> ${v}`})),C=_.indexChanges.map((N)=>{let T=`idx_${N.fieldName}`===N.indexName?N.indexName:N.indexName;if(N.action==="create")return`- index.${T}: \u65E0 -> ${N.indexName}(${N.fieldName})`;return`- index.${T}: ${N.indexName}(${N.fieldName}) -> \u65E0`}),w=[];for(let N of P)w.push(N);for(let N of C)w.push(N);K.debug(I);for(let N of w)K.debug(`[\u8868 ${J}] \u53D8\u66F4\u660E\u7EC6 ${N}`);await k.applyTablePlan(this.db,J,A)}}else await k.createTable(this.db,J,W),X.push(J)}catch(A){let F=String(A?.message||A),_=A?.sqlInfo;throw K.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:J,operation:V?"modifyTable":"createTable",source:Y.source,sourceName:Y.sourceName,addonName:Y.addonName,fileName:Y.fileName,filePath:Y.filePath,errorMessage:F,sqlInfo:_?{sql:_.sql,params:_.params,duration:_.duration}:null,err:A}),A.__syncTableLogged=!0,A}}if(X.length>0){let G=[];G.push(`\u521B\u5EFA\u8868\u5217\u8868\uFF08\u5171${X.length}\u5F20\uFF09:`);for(let J of X)G.push(`- ${J}`);let Y=G.join(`
|
|
10
|
+
`);K.debug(Y,{truncate:!1,console:!1}),K.printPlainLines(Y,{stream:"stdout"})}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(q$(Z)&&Z.noLog===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let Q=String(Z?.message||Z),X=Z?.sqlInfo;throw K.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:Q,sqlInfo:X?{sql:X.sql,params:X.params,duration:X.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,Q){let X=String(Q?.message||Q),G=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${X}`);if(Q?.sqlInfo)G.sqlInfo=Q.sqlInfo;return G}static normalizeFieldDefinitionInPlace($){let Z=t0($);$.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,Q=!1,X=null,G=null,Y=null){let J=String($||"").toLowerCase(),W=k.TYPE_MAPPING;if(J==="enum"){let A=u$(String(Y||""));if(A.length===0)throw Error("\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1Aenum \u7C7B\u578B\u7F3A\u5931 input \u679A\u4E3E\u503C\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09");let F=[];for(let _ of A){let I=String(_).replace(/'/g,"''");F.push(`'${I}'`)}return`${W[J]}(${F.join(",")})`}if(k.isStringOrArrayType(J)){if(typeof Z!=="number")throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A${J} \u7C7B\u578B\u7F3A\u5931 max\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09`);return`${W[J]}(${Z})`}if(k.DECIMAL_TYPES.has(J)){if(typeof X!=="number"||typeof G!=="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 A=`${W[J]}(${X},${G})`;return Q?`${A} UNSIGNED`:A}let V=W[J]||"TEXT";if((k.INT_TYPES.has(J)||k.FLOAT_TYPES.has(J))&&Q)return`${V} UNSIGNED`;return V}static resolveDefaultValue($,Z){let Q=String(Z||"").toLowerCase();if($!==null&&$!=="null")return $;switch(Q){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":case"decimal":case"float":case"double":return 0;case"char":case"varchar":return"";case"enum":return"null";case"datetime":return"null";case"timestamp":return"null";case"tinytext":case"text":case"mediumtext":case"longtext":case"json":return"null";default:return $}}static generateDefaultSql($,Z){let Q=String(Z||"").toLowerCase();if(k.TEXT_FAMILY.has(Q)||Q==="json"||$==="null")return"";if(Q==="enum")return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(k.INT_TYPES.has(Q)||k.DECIMAL_TYPES.has(Q)||k.FLOAT_TYPES.has(Q)||k.isStringOrArrayType(Q))if(typeof $==="number"&&!Number.isNaN($))return` DEFAULT ${$}`;else return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(Q==="datetime"||Q==="timestamp"){if(typeof $==="string"){let X=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(X))return` DEFAULT ${X.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${X.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let Q=String(Z||"").toLowerCase(),X=String($).trim();if(k.INT_TYPES.has(Q)||k.DECIMAL_TYPES.has(Q)||k.FLOAT_TYPES.has(Q)){if(/^[+-]?\d+(?:\.\d+)?$/.test(X)){let G="",Y=X;if(Y.startsWith("+")||Y.startsWith("-"))G=Y.startsWith("-")?"-":"",Y=Y.slice(1);let J=Y.split("."),W=J[0]||"0",V=J[1]||"",A=W.replace(/^0+(\d)/,"$1"),F=V.replace(/0+$/g,""),_=A===""?"0":A,I=F.length>0?`${_}.${F}`:_;return G==="-"&&I!=="0"?`-${I}`:I}}return X}static buildIndexClause($,Z,Q){let X=k.quoteIdentifier($);if(Q==="create"){let G=k.quoteIdentifier(Z);return`ADD INDEX ${X} (${G})`}return`DROP INDEX ${X}`}static getSystemColumnDef($){let Z=null;for(let X of k.SYSTEM_FIELDS)if(X.name===$){Z=X;break}if(!Z)return null;return`${k.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${cQ(Z.comment)}"`}static buildSystemColumnDefs(){let $=[];for(let Z of k.SYSTEM_FIELDS){let Q=k.getSystemColumnDef(Z.name);if(Q)$.push(Q)}return $}static getSystemFieldNames(){return k.SYSTEM_FIELDS.filter(($)=>$.name!=="id").map(($)=>$.name)}static async runIndexBatch($,Z,Q,X){if(Q.length===0)return;let Y=`ALTER TABLE ${k.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${Q.join(", ")}`;try{await k.executeDDLSafely($,Y)}catch(J){throw K.error({err:J,table:Z,msg:X}),J}}static buildBusinessColumnDefs($){let Z=[];for(let[Q,X]of Object.entries($))Z.push(k.buildColumnSql(Q,X));return Z}static buildColumnSql($,Z){let Q=t0(Z),X=p($),G=k.quoteIdentifier(X),Y=k.getSqlType(Q.type,Q.max,Q.unsigned,Q.precision,Q.scale,Q.input),J=k.resolveDefaultValue(Q.default,Q.type),W=k.generateDefaultSql(J,Q.type),V=Q.unique?" UNIQUE":"",A=Q.nullable?" NULL":" NOT NULL";return`${G} ${Y}${V}${A}${W} COMMENT "${cQ(Q.name)}"`}static generateDDLClause($,Z,Q=!1){return`${Q?"ADD COLUMN":"MODIFY COLUMN"} ${k.buildColumnSql($,Z)}`}static buildTablePlan($){let Z=k.getSystemFieldNames(),Q=k.buildFieldPlan({tableName:$.tableName,fields:$.fields,existingColumns:$.existingColumns}),X=k.buildSystemFieldPlan({systemFieldNames:Z,existingColumns:$.existingColumns}),G=k.buildIndexPlan({fields:$.fields,existingColumns:$.existingColumns,existingIndexes:$.existingIndexes,systemFieldNames:Z}),Y=[...Q.alterClauses,...X.alterClauses],J=G.indexActions,W=Q.addedBusiness,V=Q.modified,A=X.addedSystem,F=Q.incompatibleTypeChanges;return{plan:{changed:Y.length>0||J.length>0,alterClauses:Y,indexActions:J},summary:{addedBusiness:W,addedSystem:A,modified:V,indexChanges:J.length},details:{fieldChanges:Q.changeDetails,indexChanges:G.indexActions},incompatibleTypeChanges:F}}static buildFieldPlan($){let Z=[],Q=0,X=0,G=[],Y=[];for(let[J,W]of Object.entries($.fields)){let V=p(J);if($.existingColumns[V]){let A=k.compareFieldDefinition($.existingColumns[V],W);if(A.length>0){X=X+1,G.push({fieldKey:J,dbFieldName:V,changes:A});let F=A.find((_)=>_.type==="datatype");if(F){let _=t0(W),I=k.getSqlType(_.type,_.max,_.unsigned,_.precision,_.scale,_.input),P=k.getIncompatibleTypeChange($.tableName,V,String(F.current??""),I);if(P)Y.push(P)}Z.push(k.generateDDLClause(J,W,!1))}}else Q=Q+1,Z.push(k.generateDDLClause(J,W,!0))}return{alterClauses:Z,addedBusiness:Q,modified:X,changeDetails:G,incompatibleTypeChanges:Y}}static buildSystemFieldPlan($){let Z=[],Q=0;for(let X of $.systemFieldNames)if(!$.existingColumns[X]){let G=k.getSystemColumnDef(X);if(G)Q=Q+1,Z.push(`ADD COLUMN ${G}`)}return{alterClauses:Z,addedSystem:Q}}static buildIndexPlan($){let Z={};for(let X of k.SYSTEM_INDEX_FIELDS)if($.existingColumns[X]||$.systemFieldNames.includes(X))Z[`idx_${X}`]=X;for(let[X,G]of Object.entries($.fields)){let Y=p(X);if(G.index&&!G.unique)Z[`idx_${Y}`]=Y}return{indexActions:[...Object.entries(Z).filter(([X])=>!$.existingIndexes[X]).map(([X,G])=>({action:"create",indexName:X,fieldName:G})),...Object.entries($.existingIndexes).filter(([X,G])=>!Z[X]&&X.startsWith("idx_")&&Array.isArray(G)&&G.length===1&&!k.SYSTEM_INDEX_FIELDS.includes(G[0])).map(([X,G])=>({action:"drop",indexName:X,fieldName:G[0]}))]}}static getIncompatibleTypeChange($,Z,Q,X){let G=String(Q||"").toLowerCase(),Y=String(X||"").toLowerCase(),J=G.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),W=Y.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(J!==W&&!k.isCompatibleTypeChange(G,Y))return{tableName:$,dbFieldName:Z,currentType:String(Q??""),expectedType:String(X??"")};return null}static collectIncompatibleTypeChanges($,Z,Q){let X=[];for(let[G,Y]of Object.entries(Q)){let J=p(G),W=Z[J];if(!W)continue;let A=k.compareFieldDefinition(W,Y).find((P)=>P.type==="datatype");if(!A)continue;let F=t0(Y),_=k.getSqlType(F.type,F.max,F.unsigned,F.precision,F.scale,F.input),I=k.getIncompatibleTypeChange($,J,String(A.current??""),_);if(I)X.push(I)}return X}static throwIfIncompatibleTypeChanges($){if($.length===0)return;let Z=[];for(let X of $)Z.push(`- ${X.tableName}.${X.dbFieldName}: ${X.currentType} -> ${X.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 X of Z)Q.push(X);throw 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"),new D({kind:"policy",message:Q.join(`
|
|
11
|
+
`),noLog:!0,multiline:!0,meta:{subsystem:"syncTable",operation:"precheck"}})}static truncateForLog($,Z){let Q=String($);if(Z<=0)return"";if(Q.length<=Z)return Q;let X=Math.max(0,Math.floor(Z*0.6)),G=Math.max(0,Z-X),Y=Q.slice(0,X),J=Q.slice(Math.max(0,Q.length-G));return`${Y} \u2026(truncated, total=${Q.length})\u2026 ${J}`}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($),Q=[];if(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/i.test(Z)){let Y=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/gi,"ALGORITHM=COPY");if(Q.push({stmt:Y,reason:"ALGORITHM \u2192 COPY"}),/\bLOCK\s*=\s*NONE\b/i.test(Y))Q.push({stmt:Y.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=SHARED"),reason:"ALGORITHM \u2192 COPY, LOCK=SHARED"}),Q.push({stmt:Y.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=EXCLUSIVE"),reason:"ALGORITHM \u2192 COPY, LOCK=EXCLUSIVE"})}let X=k.stripAlgorithmAndLock(Z);if(X!==Z)Q.push({stmt:X,reason:"\u79FB\u9664 ALGORITHM/LOCK"});let G=[];for(let Y of Q){if(!Y.stmt||Y.stmt.trim()==="")continue;if(Y.stmt===Z)continue;if(G.some((J)=>J.stmt===Y.stmt))continue;G.push(Y)}return G}static async executeDDLSafely($,Z){try{return await $.unsafe(Z),!0}catch(Q){let X=k.buildDdlFallbackCandidates(Z),G=[],Y=Q;for(let F of X)try{return await $.unsafe(F.stmt),K.debug(`[DDL\u964D\u7EA7] ${F.reason}\uFF08\u5DF2\u6210\u529F\uFF09`),!0}catch(_){Y=_;let I=String(_?.message||_);G.push(`${F.reason}: ${I}`)}let J=String(Q?.message||Q),W=k.truncateForLog(String(Z),2000),V=G.length>0?G.join(" | "):"(\u65E0)",A=Error(`SQL\u6267\u884C\u5931\u8D25: ${J}
|
|
12
|
+
SQL: ${W}
|
|
13
|
+
\u964D\u7EA7: ${V}`);if(Q?.sqlInfo)A.sqlInfo=Q.sqlInfo;if(!A.sqlInfo&&Y?.sqlInfo)A.sqlInfo=Y.sqlInfo;throw A}}static isCompatibleTypeChange($,Z){let Q=String($||"").toLowerCase(),X=String(Z||"").toLowerCase();if(Q===X)return!1;let G=Q.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),Y=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(k.TEXT_FAMILY.has(G)&&k.TEXT_FAMILY.has(Y))return!0;if(k.INT_TYPES.has(G)&&k.INT_TYPES.has(Y)){let J=["tinyint","smallint","mediumint","int","bigint"],W=J.indexOf(G);if(J.indexOf(Y)>W)return!0}if(G==="float"&&Y==="double")return!0;if(G==="varchar"&&(Y==="text"||Y==="mediumtext"||Y==="longtext"))return!0;if(G==="char"&&Y==="varchar"||G==="varchar"&&Y==="char")return!0;if(G==="datetime"&&Y==="bigint"||G==="bigint"&&Y==="datetime")return!1;return!1}static compareFieldDefinition($,Z){let Q=[],X=t0(Z),G=k.getSqlType(X.type,X.max,X.unsigned,X.precision,X.scale,X.input).toLowerCase().replace(/\s+/g," ").trim(),Y=(typeof $.columnType==="string"&&$.columnType.trim()!==""?$.columnType:typeof $.type==="string"&&$.type.trim()!==""?k.isStringOrArrayType(X.type)&&typeof $.max==="number"?`${$.type.trim()}(${$.max})`:$.type.trim():String($.type??"")).toLowerCase().replace(/\s+/g," ").trim(),J=Y.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),W=k.INT_TYPES.has(J)?Y.replace(/\([^)]*\)/g,"").replace(/\s+/g," ").trim():Y;if(W!==G)Q.push({type:"datatype",current:W,expected:G});let V=X.nullable;if($.nullable!==V)Q.push({type:"nullable",current:$.nullable,expected:V});let A=String(X.type||"").toLowerCase();if(!k.TEXT_FAMILY.has(A)&&A!=="json"){let I=k.resolveDefaultValue(X.default,X.type),P=k.normalizeDefaultForCompare($.defaultValue,X.type),C=k.normalizeDefaultForCompare(I,X.type);if(P!==C)Q.push({type:"default",current:$.defaultValue,expected:I})}let F=String($.comment??""),_=String(X.name??"");if(F!==_)Q.push({type:"comment",current:F,expected:_});return Q}static async tableExists($,Z,Q){try{return((await $.unsafe("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?",[Z,Q])).data?.[0]?.count||0)>0}catch(X){throw k.buildRuntimeIoError("\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728",Q,X)}}static async getTableColumns($,Z,Q){let X={};try{let G=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,Q]);for(let Y of G.data){let J=pQ(Y.COLUMN_DEFAULT);X[Y.COLUMN_NAME]={type:String(Y.DATA_TYPE??""),columnType:String(Y.COLUMN_TYPE??""),length:Y.CHARACTER_MAXIMUM_LENGTH,max:Y.CHARACTER_MAXIMUM_LENGTH,nullable:Y.IS_NULLABLE==="YES",defaultValue:J,comment:Y.COLUMN_COMMENT===null?null:String(Y.COLUMN_COMMENT)}}return X}catch(G){throw k.buildRuntimeIoError("\u8BFB\u53D6\u5217\u4FE1\u606F",Q,G)}}static async getTableIndexes($,Z,Q){let X={};try{let G=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,Q]);for(let Y of G.data){let J=Y.INDEX_NAME,W=X[J];if(Array.isArray(W))W.push(Y.COLUMN_NAME);else X[J]=[Y.COLUMN_NAME]}return X}catch(G){throw k.buildRuntimeIoError("\u8BFB\u53D6\u7D22\u5F15\u4FE1\u606F",Q,G)}}static async ensureDbVersion($){let Z=await $.unsafe("SELECT VERSION() AS version");if(!Z.data||Z.data.length===0||!Z.data[0]?.version)throw new D({kind:"runtime",message:"\u540C\u6B65\u8868\uFF1A\u65E0\u6CD5\u83B7\u53D6 MySQL \u7248\u672C\u4FE1\u606F",noLog:!0,meta:{subsystem:"syncTable",operation:"ensureDbVersion"}});let Q=Z.data[0].version,X=String(Q).split(".")[0]||"0",G=parseInt(X,10);if(!Number.isFinite(G)||G<k.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR)throw new D({kind:"policy",message:`\u540C\u6B65\u8868\uFF1A\u4EC5\u652F\u6301 MySQL ${k.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR}.0+\uFF08\u5F53\u524D\u7248\u672C\uFF1A${Q}\uFF09`,noLog:!0,meta:{subsystem:"syncTable",operation:"ensureDbVersion"}})}static async applyTablePlan($,Z,Q){if(!Q||!Q.changed)return;if(await k.applyIndexPlan($,Z,Q.indexActions,"drop"),Q.alterClauses.length>0){let G=`ALTER TABLE ${k.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${Q.alterClauses.join(", ")}`;await k.executeDDLSafely($,G)}await k.applyIndexPlan($,Z,Q.indexActions,"create")}static async applyIndexPlan($,Z,Q,X){let G=Q.filter((W)=>W.action===X);if(G.length===0)return;let Y=G.map((W)=>k.buildIndexClause(W.indexName,W.fieldName,X)),J=X==="drop"?"\u6279\u91CF\u5220\u9664\u7D22\u5F15\u5931\u8D25":"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25";await k.runIndexBatch($,Z,Y,J)}static async createTable($,Z,Q,X=k.SYSTEM_INDEX_FIELDS){let Y=[...k.buildSystemColumnDefs(),...k.buildBusinessColumnDefs(Q)].join(`,
|
|
14
|
+
`),J=k.quoteIdentifier(Z),{ENGINE:W,CHARSET:V,COLLATE:A}=k.MYSQL_TABLE_CONFIG,F=`CREATE TABLE ${J} (
|
|
15
15
|
${Y}
|
|
16
|
-
) ENGINE=${
|
|
17
|
-
`&&$[Y]!=="\r";Y++)V+=$[Y];if(V=V.trim(),V[V.length-1]==="/")V=V.substring(0,V.length-1),Y--;if(!JW(V)){let _;if(V.trim().length===0)_="Invalid space after '<'.";else _="Tag '"+V+"' is an invalid name.";return
|
|
18
|
-
`||$==="\r"}function OY($,Z){let Q=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let X=$.substr(Q,Z-Q);if(Z>5&&X==="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 _Y($,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 Q=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")Q++;else if($[Z]===">"){if(Q--,Q===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 eH='"',$W="'";function ZW($,Z){let Q="",X="",G=!1;for(;Z<$.length;Z++){if($[Z]===eH||$[Z]===$W)if(X==="")X=$[Z];else if(X!==$[Z]);else X="";else if($[Z]===">"){if(X===""){G=!0;break}}Q+=$[Z]}if(X!=="")return!1;return{value:Q,index:Z,tagClosed:G}}var QW=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function AY($,Z){let Q=EZ($,QW),X={};for(let G=0;G<Q.length;G++){if(Q[G][1].length===0)return H0("InvalidAttr","Attribute '"+Q[G][2]+"' has no space in starting.",WZ(Q[G]));else if(Q[G][3]!==void 0&&Q[G][4]===void 0)return H0("InvalidAttr","Attribute '"+Q[G][2]+"' is without value.",WZ(Q[G]));else if(Q[G][3]===void 0&&!Z.allowBooleanAttributes)return H0("InvalidAttr","boolean attribute '"+Q[G][2]+"' is not allowed.",WZ(Q[G]));let Y=Q[G][2];if(!YW(Y))return H0("InvalidAttr","Attribute '"+Y+"' is an invalid name.",WZ(Q[G]));if(!X.hasOwnProperty(Y))X[Y]=1;else return H0("InvalidAttr","Attribute '"+Y+"' is repeated.",WZ(Q[G]))}return!0}function XW($,Z){let Q=/\d/;if($[Z]==="x")Z++,Q=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(Q))break}return-1}function GW($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,XW($,Z);let Q=0;for(;Z<$.length;Z++,Q++){if($[Z].match(/\w/)&&Q<20)continue;if($[Z]===";")break;return-1}return Z}function H0($,Z,Q){return{err:{code:$,msg:Z,line:Q.line||Q,col:Q.col}}}function YW($){return d$($)}function JW($){return d$($)}function o0($,Z){let Q=$.substring(0,Z).split(/\r?\n/);return{line:Q.length,col:Q[Q.length-1].length+1}}function WZ($){return $.startIndex+$[1].length}var HW={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,Q){return $},captureMetaData:!1},FY=function($){return Object.assign({},HW,$)};var TZ;if(typeof Symbol!=="function")TZ="@@xmlMetadata";else TZ=Symbol("XML Node Metadata");class a0{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][TZ]={startIndex:Z}}static getMetaDataSymbol(){return TZ}}class NZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let Q={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let X=1,G=!1,Y=!1,J="";for(;Z<$.length;Z++)if($[Z]==="<"&&!Y){if(G&&D$($,"!ENTITY",Z)){Z+=7;let U,V;if([U,V,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),V.indexOf("&")===-1)Q[U]={regx:RegExp(`&${U};`,"g"),val:V}}else if(G&&D$($,"!ELEMENT",Z)){Z+=8;let{index:U}=this.readElementExp($,Z+1);Z=U}else if(G&&D$($,"!ATTLIST",Z))Z+=8;else if(G&&D$($,"!NOTATION",Z)){Z+=9;let{index:U}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=U}else if(D$($,"!--",Z))Y=!0;else throw Error("Invalid DOCTYPE");X++,J=""}else if($[Z]===">"){if(Y){if($[Z-1]==="-"&&$[Z-2]==="-")Y=!1,X--}else X--;if(X===0)break}else if($[Z]==="[")G=!0;else J+=$[Z];if(X!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:Q,i:Z}}readEntityExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")Q+=$[Z],Z++;if(UZ(Q),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 X="";return[Z,X]=this.readIdentifierVal($,Z,"entity"),Z--,[Q,X,Z]}readNotationExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;!this.suppressValidationErr&&UZ(Q),Z=r0($,Z);let X=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&X!=="SYSTEM"&&X!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${X}"`);Z+=X.length,Z=r0($,Z);let G=null,Y=null;if(X==="PUBLIC"){if([Z,G]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(X==="SYSTEM"){if([Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!Y)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:Q,publicIdentifier:G,systemIdentifier:Y,index:--Z}}readIdentifierVal($,Z,Q){let X="",G=$[Z];if(G!=='"'&&G!=="'")throw Error(`Expected quoted string, found "${G}"`);Z++;while(Z<$.length&&$[Z]!==G)X+=$[Z],Z++;if($[Z]!==G)throw Error(`Unterminated ${Q} value`);return Z++,[Z,X]}readElementExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;if(!this.suppressValidationErr&&!d$(Q))throw Error(`Invalid element name: "${Q}"`);Z=r0($,Z);let X="";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]!==")")X+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:Q,contentModel:X.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;UZ(Q),Z=r0($,Z);let X="";while(Z<$.length&&!/\s/.test($[Z]))X+=$[Z],Z++;if(!UZ(X))throw Error(`Invalid attribute name: "${X}"`);Z=r0($,Z);let G="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(G="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let J=[];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(J.push(U),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,G+=" ("+J.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))G+=$[Z],Z++;let J=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!J.includes(G.toUpperCase()))throw Error(`Invalid attribute type: "${G}"`)}Z=r0($,Z);let Y="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")Y="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")Y="#IMPLIED",Z+=7;else[Z,Y]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:Q,attributeName:X,attributeType:G,defaultValue:Y,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function D$($,Z,Q){for(let X=0;X<Z.length;X++)if(Z[X]!==$[Q+X+1])return!1;return!0}function UZ($){if(d$($))return $;else throw Error(`Invalid entity name ${$}`)}var WW=/^[-+]?0x[a-fA-F0-9]+$/,UW=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,VW={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function uQ($,Z={}){if(Z=Object.assign({},VW,Z),!$||typeof $!=="string")return $;let Q=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(Q))return $;else if($==="0")return 0;else if(Z.hex&&WW.test(Q))return MW(Q,16);else if(Q.includes("e")||Q.includes("E"))return _W($,Q,Z);else{let X=UW.exec(Q);if(X){let G=X[1]||"",Y=X[2],J=AW(X[3]),U=G?$[Y.length+1]===".":$[Y.length]===".";if(!Z.leadingZeros&&(Y.length>1||Y.length===1&&!U))return $;else{let V=Number(Q),A=String(V);if(V===0)return V;if(A.search(/[eE]/)!==-1)if(Z.eNotation)return V;else return $;else if(Q.indexOf(".")!==-1)if(A==="0")return V;else if(A===J)return V;else if(A===`${G}${J}`)return V;else return $;let M=Y?J:Q;if(Y)return M===A||G+M===A?V:$;else return M===A||M===G+A?V:$}}else return $}}var OW=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function _W($,Z,Q){if(!Q.eNotation)return $;let X=Z.match(OW);if(X){let G=X[1]||"",Y=X[3].indexOf("e")===-1?"E":"e",J=X[2],U=G?$[J.length+1]===Y:$[J.length]===Y;if(J.length>1&&U)return $;else if(J.length===1&&(X[3].startsWith(`.${Y}`)||X[3][0]===Y))return Number(Z);else if(Q.leadingZeros&&!U)return Z=(X[1]||"")+X[3],Number(Z);else return $}else return $}function AW($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function MW($,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 mQ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let Q of $){if(typeof Q==="string"&&Z===Q)return!0;if(Q instanceof RegExp&&Q.test(Z))return!0}};return()=>!1}class DZ{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,Q)=>String.fromCodePoint(Number.parseInt(Q,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,Q)=>String.fromCodePoint(Number.parseInt(Q,16))}},this.addExternalEntities=FW,this.parseXml=qW,this.parseTextData=KW,this.resolveNameSpace=zW,this.buildAttributesMap=IW,this.isItStopNode=PW,this.replaceEntitiesValue=LW,this.readStopNodeData=SW,this.saveTextToParentTag=BW,this.addChild=jW,this.ignoreAttributesFn=mQ(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 Q=this.options.stopNodes[Z];if(typeof Q!=="string")continue;if(Q.startsWith("*."))this.stopNodesWildcard.add(Q.substring(2));else this.stopNodesExact.add(Q)}}}}function FW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let X=Z[Q];this.lastEntities[X]={regex:new RegExp("&"+X+";","g"),val:$[X]}}}function KW($,Z,Q,X,G,Y,J){if($!==void 0){if(this.options.trimValues&&!X)$=$.trim();if($.length>0){if(!J)$=this.replaceEntitiesValue($);let U=this.options.tagValueProcessor(Z,$,Q,G,Y);if(U===null||U===void 0)return $;else if(typeof U!==typeof $||U!==$)return U;else if(this.options.trimValues)return nQ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return nQ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function zW($){if(this.options.removeNSPrefix){let Z=$.split(":"),Q=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=Q+Z[1]}return $}var RW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function IW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let Q=EZ($,RW),X=Q.length,G={};for(let Y=0;Y<X;Y++){let J=this.resolveNameSpace(Q[Y][1]);if(this.ignoreAttributesFn(J,Z))continue;let U=Q[Y][4],V=this.options.attributeNamePrefix+J;if(J.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 A=this.options.attributeValueProcessor(J,U,Z);if(A===null||A===void 0)G[V]=U;else if(typeof A!==typeof U||A!==U)G[V]=A;else G[V]=nQ(U,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)G[V]=!0}}if(!Object.keys(G).length)return;if(this.options.attributesGroupName){let Y={};return Y[this.options.attributesGroupName]=G,Y}return G}}var qW=function($){$=$.replace(/\r\n?/g,`
|
|
19
|
-
`);let Z=new a0("!xml"),Q=Z,X="",G="",Y=new NZ(this.options.processEntities);for(let J=0;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let V=k$($,">",J,"Closing Tag is not closed."),A=$.substring(J+2,V).trim();if(this.options.removeNSPrefix){let R=A.indexOf(":");if(R!==-1)A=A.substr(R+1)}if(this.options.transformTagName)A=this.options.transformTagName(A);if(Q)X=this.saveTextToParentTag(X,Q,G);let M=G.substring(G.lastIndexOf(".")+1);if(A&&this.options.unpairedTags.indexOf(A)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${A}>`);let _=0;if(M&&this.options.unpairedTags.indexOf(M)!==-1)_=G.lastIndexOf(".",G.lastIndexOf(".")-1),this.tagsNodeStack.pop();else _=G.lastIndexOf(".");G=G.substring(0,_),Q=this.tagsNodeStack.pop(),X="",J=V}else if($[J+1]==="?"){let V=dQ($,J,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(X=this.saveTextToParentTag(X,Q,G),this.options.ignoreDeclaration&&V.tagName==="?xml"||this.options.ignorePiTags);else{let A=new a0(V.tagName);if(A.add(this.options.textNodeName,""),V.tagName!==V.tagExp&&V.attrExpPresent)A[":@"]=this.buildAttributesMap(V.tagExp,G);this.addChild(Q,A,G,J)}J=V.closeIndex+1}else if($.substr(J+1,3)==="!--"){let V=k$($,"-->",J+4,"Comment is not closed.");if(this.options.commentPropName){let A=$.substring(J+4,V-2);X=this.saveTextToParentTag(X,Q,G),Q.add(this.options.commentPropName,[{[this.options.textNodeName]:A}])}J=V}else if($.substr(J+1,2)==="!D"){let V=Y.readDocType($,J);this.docTypeEntities=V.entities,J=V.i}else if($.substr(J+1,2)==="!["){let V=k$($,"]]>",J,"CDATA is not closed.")-2,A=$.substring(J+9,V);X=this.saveTextToParentTag(X,Q,G);let M=this.parseTextData(A,Q.tagname,G,!0,!1,!0,!0);if(M==null)M="";if(this.options.cdataPropName)Q.add(this.options.cdataPropName,[{[this.options.textNodeName]:A}]);else Q.add(this.options.textNodeName,M);J=V+2}else{let V=dQ($,J,this.options.removeNSPrefix),A=V.tagName,M=V.rawTagName,_=V.tagExp,R=V.attrExpPresent,C=V.closeIndex;if(this.options.transformTagName){let N=this.options.transformTagName(A);if(_===A)_=N;A=N}if(Q&&X){if(Q.tagname!=="!xml")X=this.saveTextToParentTag(X,Q,G,!1)}let S=Q;if(S&&this.options.unpairedTags.indexOf(S.tagname)!==-1)Q=this.tagsNodeStack.pop(),G=G.substring(0,G.lastIndexOf("."));if(A!==Z.tagname)G+=G?"."+A:A;let w=J;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,G,A)){let N="";if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),G=G.substr(0,G.length-1),_=A;else _=_.substr(0,_.length-1);J=V.closeIndex}else if(this.options.unpairedTags.indexOf(A)!==-1)J=V.closeIndex;else{let E=this.readStopNodeData($,M,C+1);if(!E)throw Error(`Unexpected end of ${M}`);J=E.i,N=E.tagContent}let T=new a0(A);if(A!==_&&R)T[":@"]=this.buildAttributesMap(_,G);if(N)N=this.parseTextData(N,A,G,!0,R,!0,!0);G=G.substr(0,G.lastIndexOf(".")),T.add(this.options.textNodeName,N),this.addChild(Q,T,G,w)}else{if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),G=G.substr(0,G.length-1),_=A;else _=_.substr(0,_.length-1);if(this.options.transformTagName){let T=this.options.transformTagName(A);if(_===A)_=T;A=T}let N=new a0(A);if(A!==_&&R)N[":@"]=this.buildAttributesMap(_,G);this.addChild(Q,N,G,w),G=G.substr(0,G.lastIndexOf("."))}else{let N=new a0(A);if(this.tagsNodeStack.push(Q),A!==_&&R)N[":@"]=this.buildAttributesMap(_,G);this.addChild(Q,N,G,w),Q=N}X="",J=C}}else X+=$[J];return Z.child};function jW($,Z,Q,X){if(!this.options.captureMetaData)X=void 0;let G=this.options.updateTag(Z.tagname,Q,Z[":@"]);if(G===!1);else if(typeof G==="string")Z.tagname=G,$.addChild(Z,X);else $.addChild(Z,X)}var LW=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let Q=this.docTypeEntities[Z];$=$.replace(Q.regx,Q.val)}for(let Z in this.lastEntities){let Q=this.lastEntities[Z];$=$.replace(Q.regex,Q.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let Q=this.htmlEntities[Z];$=$.replace(Q.regex,Q.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function BW($,Z,Q,X){if($){if(X===void 0)X=Z.child.length===0;if($=this.parseTextData($,Z.tagname,Q,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,X),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function PW($,Z,Q,X){if(Z&&Z.has(X))return!0;if($&&$.has(Q))return!0;return!1}function CW($,Z,Q=">"){let X,G="";for(let Y=Z;Y<$.length;Y++){let J=$[Y];if(X){if(J===X)X=""}else if(J==='"'||J==="'")X=J;else if(J===Q[0])if(Q[1]){if($[Y+1]===Q[1])return{data:G,index:Y}}else return{data:G,index:Y};else if(J==="\t")J=" ";G+=J}}function k$($,Z,Q,X){let G=$.indexOf(Z,Q);if(G===-1)throw Error(X);else return G+Z.length-1}function dQ($,Z,Q,X=">"){let G=CW($,Z+1,X);if(!G)return;let{data:Y,index:J}=G,U=Y.search(/\s/),V=Y,A=!0;if(U!==-1)V=Y.substring(0,U),Y=Y.substring(U+1).trimStart();let M=V;if(Q){let _=V.indexOf(":");if(_!==-1)V=V.substr(_+1),A=V!==G.data.substr(_+1)}return{tagName:V,tagExp:Y,closeIndex:J,attrExpPresent:A,rawTagName:M}}function SW($,Z,Q){let X=Q,G=1;for(;Q<$.length;Q++)if($[Q]==="<")if($[Q+1]==="/"){let Y=k$($,">",Q,`${Z} is not closed`);if($.substring(Q+2,Y).trim()===Z){if(G--,G===0)return{tagContent:$.substring(X,Q),i:Y}}Q=Y}else if($[Q+1]==="?")Q=k$($,"?>",Q+1,"StopNode is not closed.");else if($.substr(Q+1,3)==="!--")Q=k$($,"-->",Q+3,"StopNode is not closed.");else if($.substr(Q+1,2)==="![")Q=k$($,"]]>",Q,"StopNode is not closed.")-2;else{let Y=dQ($,Q,">");if(Y){if((Y&&Y.tagName)===Z&&Y.tagExp[Y.tagExp.length-1]!=="/")G++;Q=Y.closeIndex}}}function nQ($,Z,Q){if(Z&&typeof $==="string"){let X=$.trim();if(X==="true")return!0;else if(X==="false")return!1;else return uQ($,Q)}else if(UY($))return $;else return""}var sQ=a0.getMetaDataSymbol();function oQ($,Z){return KY($,Z)}function KY($,Z,Q){let X,G={};for(let Y=0;Y<$.length;Y++){let J=$[Y],U=wW(J),V="";if(Q===void 0)V=U;else V=Q+"."+U;if(U===Z.textNodeName)if(X===void 0)X=J[U];else X+=""+J[U];else if(U===void 0)continue;else if(J[U]){let A=KY(J[U],Z,V),M=TW(A,Z);if(J[sQ]!==void 0)A[sQ]=J[sQ];if(J[":@"])EW(A,J[":@"],V,Z);else if(Object.keys(A).length===1&&A[Z.textNodeName]!==void 0&&!Z.alwaysCreateTextNode)A=A[Z.textNodeName];else if(Object.keys(A).length===0)if(Z.alwaysCreateTextNode)A[Z.textNodeName]="";else A="";if(G[U]!==void 0&&G.hasOwnProperty(U)){if(!Array.isArray(G[U]))G[U]=[G[U]];G[U].push(A)}else if(Z.isArray(U,V,M))G[U]=[A];else G[U]=A}}if(typeof X==="string"){if(X.length>0)G[Z.textNodeName]=X}else if(X!==void 0)G[Z.textNodeName]=X;return G}function wW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let X=Z[Q];if(X!==":@")return X}}function EW($,Z,Q,X){if(Z){let G=Object.keys(Z),Y=G.length;for(let J=0;J<Y;J++){let U=G[J];if(X.isArray(U,Q+"."+U,!0,!0))$[U]=[Z[U]];else $[U]=Z[U]}}}function TW($,Z){let{textNodeName:Q}=Z,X=Object.keys($).length;if(X===0)return!0;if(X===1&&($[Q]||typeof $[Q]==="boolean"||$[Q]===0))return!0;return!1}class VZ{constructor($){this.externalEntities={},this.options=FY($)}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 G=MY($,Z);if(G!==!0)throw Error(`${G.err.msg}:${G.err.line}:${G.err.col}`)}let Q=new DZ(this.options);Q.addExternalEntities(this.externalEntities);let X=Q.parseXml($);if(this.options.preserveOrder||X===void 0)return X;else return oQ(X,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 a0.getMetaDataSymbol()}}var NW=new VZ,DW={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 Q=new URL(Z.req.url),X=Object.fromEntries(Q.searchParams);Z.body=X}else if(Z.req.method==="POST"){let Q=Z.req.headers.get("content-type")||"",X=new URL(Z.req.url),G=Object.fromEntries(X.searchParams);try{if(Q.includes("application/json")){let Y=await Z.req.json(),J={...G,...Y};Z.body=J}else if(Q.includes("application/xml")||Q.includes("text/xml")){let Y=await Z.req.text(),J=NW.parse(Y),U=Object.keys(J)[0],V=U&&typeof J[U]==="object"?J[U]:J,A={...G,...V};Z.body=A}else{Z.response=C$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:Q},"parser");return}}catch{Z.response=C$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:Q.includes("application/json")?"invalid_json":Q.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},zY=DW;class m0{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleApis($){return`role:apis:${$}`}}$0();var kW={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=C$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let Q=Z.route,X=Z.user.roleCode,G=!1;if(X&&$.redis)try{let Y=m0.roleApis(X);G=await $.redis.sismember(Y,Q)}catch(Y){q.error({event:"hook_permission_redis_error",apiPath:Q,roleCode:X,err:Y,msg:"hook permission redis error"}),G=!1}if(!G){let Y=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,J=typeof Q==="string"&&Q.length>0?Q:null,U=Y?Y:J?J:"\u672A\u77E5\u63A5\u53E3";Z.response=C$(Z,`\u65E0\u6743\u8BBF\u95EE ${U} \u63A5\u53E3`,1,null,{apiLabel:U},"permission");return}}},RY=kW;var lQ={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:".+"},IY=new Map;function vW($){if($.startsWith("@")){let Z=$.slice(1);return lQ[Z]||$}return $}function xW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let Q=Z.lastIndexOf("/");if(Q<=0)return null;let X=Z.slice(Q+1);if(X!==""&&!/^[gimsuy]+$/.test(X))return null;return{source:Z.slice(1,Q),flags:X}}function qY($,Z){let Q=xW($),X=Q?Q.source:vW($),G=Q&&Q.flags!==""?Q.flags:Z||"",Y=`${X}:${G}`,J=IY.get(Y);if(!J)J=new RegExp(X,G),IY.set(Y,J);return J}u0();var kZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function vZ($,Z){if(KQ($)){if(Z==="number")return zZ($);return RZ($)}if(Array.isArray($)){for(let Q of $)if(!vZ(Q,Z))return!1;return!0}if(KZ($)){for(let Q of Object.values($)){if(Q===void 0)continue;if(!vZ(Q,Z))return!1}return!0}return!1}class rQ{static validate($,Z,Q=[]){let X={};if(!s($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!s(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let G=$,Y=Z;for(let J of Q){let U=G[J];if(U===void 0||U===null){let V=Y[J],A=s(V)&&typeof V.name==="string"?V.name:J;X[J]=`${A}\u4E3A\u5FC5\u586B\u9879`}}for(let[J,U]of Object.entries(Y)){if(X[J])continue;if(G[J]===void 0&&!Q.includes(J))continue;if(!s(U)){X[J]=`${J}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:V,type:A}=U;if(typeof V!=="string"||typeof A!=="string"){X[J]=`${J}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let M={name:V,type:A},_=U.input;if(typeof _==="string")M.input=_;let R=U.min;if(typeof R==="number"||R===null)M.min=R;let C=U.max;if(typeof C==="number"||C===null)M.max=C;let S=U.default;if(S===null||typeof S==="string"||typeof S==="number"||typeof S==="boolean"||Array.isArray(S)||s(S))M.default=S;let w=U.detail;if(typeof w==="string")M.detail=w;let N=U.index;if(typeof N==="boolean")M.index=N;let T=U.unique;if(typeof T==="boolean")M.unique=T;let E=U.nullable;if(typeof E==="boolean")M.nullable=E;let v=U.unsigned;if(typeof v==="boolean")M.unsigned=v;let b=this.checkField(G[J],M,J);if(b)X[J]=b}return this.buildResult(X)}static single($,Z){let Q=t0(Z),X=Q.type,G=Q.input,Y=Q.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(X,G,Y),error:null};let J=this.convert($,G,X);if(J.error)return{value:null,error:J.error};let U=this.checkRule(J.value,Z);if(U)return{value:null,error:U};return{value:J.value,error:null}}static buildResult($){let Z=Object.values($),Q=Object.keys($),X=Z.length>0;return{code:X?1:0,failed:X,firstError:X?Z[0]??null:null,errors:Z,errorFields:Q,fieldErrors:$}}static checkField($,Z,Q){let X=Z.name||Q,G=t0(Z),Y=this.convert($,G.input,G.type);if(Y.error)return`${X}${Y.error}`;let J=this.checkRule(Y.value,Z);return J?`${X}${J}`:null}static convert($,Z,Q){let X=String(Z||"").trim(),G=X.toLowerCase();if(!kZ.has(G)&&g$(X))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!kZ.has(G)&&T$(X))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(G){case"number":{if(zZ($))return{value:$,error:null};if(typeof $==="string"){let Y=Number($);return Number.isFinite(Y)?{value:Y,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 Y=Number($);return Number.isFinite(Y)&&Number.isInteger(Y)?{value:Y,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}return{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}case"string":{if(typeof $==="string"){let J=String(Q||"").toLowerCase();if(J==="datetime"||J==="timestamp")return{value:$.trim(),error:null};return{value:$,error:null}}let Y=String(Q||"").toLowerCase();if(Y==="datetime"||Y==="timestamp")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 Y of $)if(!zZ(Y))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 Y of $)if(!RZ(Y))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6574\u6570"};return{value:$,error:null}}case"json":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return vZ($,"number")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6570\u5B57"};case"json_integer":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return vZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{let Y=String(Q||"").toLowerCase();if(Y==="datetime"||Y==="timestamp"){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 Q=t0(Z),X=Q.type,G=Q.input,Y=Q.min,J=Q.max,U=String(G||"").trim(),V=U.toLowerCase(),A=!kZ.has(V)&&g$(U),M=!kZ.has(V)&&T$(U);if(V==="number"||V==="integer"){if(typeof $!=="number")return V==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(Y!==null&&$<Y)return`\u4E0D\u80FD\u5C0F\u4E8E${Y}`;if(J!==null&&J>0&&$>J)return`\u4E0D\u80FD\u5927\u4E8E${J}`}else if(V==="string"||V==="char"||A||M){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(V==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(Y!==null&&$.length<Y)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${Y}\u4E2A\u5B57\u7B26`;if(J!==null&&J>0&&$.length>J)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${J}\u4E2A\u5B57\u7B26`;if(A){let R=this.resolveRegex(U);if(!this.testRegex(R,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(M){if(!u$(U).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(Y!==null&&$.length<Y)return`\u81F3\u5C11\u9700\u8981${Y}\u4E2A\u5143\u7D20`;if(J!==null&&J>0&&$.length>J)return`\u6700\u591A\u53EA\u80FD\u6709${J}\u4E2A\u5143\u7D20`}else if(V==="json"||V==="json_number"||V==="json_integer"){if(!GZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}let _=String(X||"").toLowerCase();if(_==="datetime"||_==="timestamp"){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[R,C]=$.split(" ");if(typeof R!=="string"||typeof C!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[S,w,N]=R.split("-"),[T,E,v]=C.split(":"),b=Number(S),f=Number(w),m=Number(N),a=Number(T),r=Number(E),J0=Number(v);if(!Number.isInteger(b)||b<1000||b>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(f)||f<1||f>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(m)||m<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(a)||a<0||a>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(r)||r<0||r>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(J0)||J0<0||J0>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let O=[31,b%4===0&&b%100!==0||b%400===0?29:28,31,30,31,30,31,31,30,31,30,31][f-1]??0;if(m>O)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return lQ[Z]||$}return $}static testRegex($,Z){try{return qY($).test(Z)}catch{return!1}}static defaultFor($,Z,Q){if(Q!==null&&Q!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof Q==="string"){if(Q==="[]")return[];try{let Y=JSON.parse(Q);return Array.isArray(Y)?Y:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof Q==="string"){let Y=Number(Q);return isNaN(Y)?0:Y}return Q}let X=String($||"").toLowerCase();if(X==="datetime"||X==="timestamp"||X==="json"||X==="enum")return null;let G=String(Z||"").toLowerCase();if(G==="json"||G==="json_number"||G==="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 fW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(s(Z.api.fields)){let X=s(Z.body)?Z.body:{},G={};for(let[Y,J]of Object.entries(Z.api.fields)){let U=t0(J),V=X[Y];if(V===void 0){let A=c(Y);if(X[A]!==void 0)V=X[A]}if(V===void 0&&U.default!==null)V=U.default;if(V!==void 0)G[Y]=V}Z.body=G}let Q=rQ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(Q.code!==0){Z.response=C$(Z,Q.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,Q.fieldErrors,"validator");return}}},jY=fW;$0();class iQ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let Q=$.trim();if(!Q)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(Q))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!Q.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(Q.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return Q}assertApiPathList($,Z){if($===null||$===void 0)return[];let Q=$;if(typeof Q==="string"){let G=Q.trim();if(G===""||G==="null")return[];if(G.startsWith("[")&&G.endsWith("]"))try{Q=JSON.parse(G)}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(Q))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 Q}`);let X=[];for(let G of Q)X.push(this.assertApiPathname(G,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return X}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){q.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)q.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){q.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){q.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)q.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){q.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){q.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"]}),Q=new Map;for(let J of Z.data.lists){if(!J?.code)continue;let U=this.assertApiPathList(J.apis,J.code);Q.set(J.code,U)}let X=Array.from(Q.keys());if(X.length===0){q.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let G=X.map((J)=>m0.roleApis(J));await this.redis.delBatch(G);let Y=[];for(let J of X){let U=Q.get(J)||[],V=Array.from(new Set(U)).sort();if(V.length>0)Y.push({key:m0.roleApis(J),members:V})}if(Y.length>0)await this.redis.saddBatch(Y)}catch($){throw q.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new D({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 Q=Z.map((Y)=>this.assertApiPathname(Y,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),X=m0.roleApis($);if(Q.length===0){await this.redis.del(X);return}let G=Array.from(new Set(Q));if(await this.redis.del(X),G.length>0)await this.redis.sadd(X,G)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions()}async getApis(){try{return await this.redis.getObject(m0.apisAll())||[]}catch($){return q.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(m0.menusAll())||[]}catch($){return q.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(m0.roleApis($))||[]}catch(Z){return q.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let Q=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(m0.roleApis($),Q)}catch(Q){return q.error({err:Q,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(m0.roleApis($))>0)return q.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return q.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var gW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new D({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new D({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new iQ({db:$.db,redis:$.redis})}},LY=gW;var yW={name:"cipher",enable:!0,deps:[],handler:()=>{return m$}},BY=yW;var hW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},PY=hW;u0();function tQ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function bW($){return Array.isArray($)}function CY($,Z={}){let{pickKeys:Q,omitKeys:X,keepValues:G,excludeValues:Y,keepMap:J}=Z,U=(V)=>{let A={},M=Object.keys(V);if(Q&&Q.length)M=M.filter((_)=>Q.includes(_));if(X&&X.length)M=M.filter((_)=>!X.includes(_));for(let _ of M){let R=V[_];if(J&&_ in J){if(Object.is(J[_],R)){A[_]=R;continue}}if(G&&G.length&&!G.includes(R))continue;if(Y&&Y.length&&Y.includes(R))continue;A[_]=R}return A};if(bW($))return $.map((V)=>tQ(V)?U(V):V).filter((V)=>{if(tQ(V))return Object.keys(V).length>0;return!0});if(tQ($))return U($);return $}u0();class X0{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 Q=Z[0],X=Z[Z.length-1];if(Q==="`"&&X==="`")return!0;if(Q==='"'&&X==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(X0.startsWithQuote($)&&!X0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!X0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(X0.isQuotedIdentPaired($))return;if(!X0.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[Q,X]of Object.entries($))if(X===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${Q})`)}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 Q=$[0];if(!Q||typeof Q!=="object"||Array.isArray(Q))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let X=Object.keys(Q);if(X.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let G=new Set(X);for(let Y=0;Y<$.length;Y++){let J=$[Y];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: ${Y})`);let U=Object.keys(J);if(U.length!==X.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${Y})`);for(let V of U)if(!G.has(V))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${Y}, extraField: ${V})`);for(let V of X){if(!(V in J))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${Y}, field: ${V})`);X0.assertNoUndefinedParam(J[V],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${Y}, field: ${V})`)}}return X}}class y{static clearDeep($,Z){let Q=Array.isArray(Z?.arrayObjectKeys)?Z.arrayObjectKeys:["$or","$and"],X=new Set;for(let U of Q)X.add(U);let G=typeof Z?.depth==="number"&&Number.isFinite(Z.depth)?Math.floor(Z.depth):0,Y=G<0?0:G,J=(U,V)=>{if(!U||typeof U!=="object")return U;if(Array.isArray(U))return U;let A=V===0||V>1,M=V===0?0:V-1,_={};for(let[R,C]of Object.entries(U)){if(C===void 0||C===null)continue;if(X.has(R)){if(!Array.isArray(C))continue;let S=V,w=[];for(let N of C){if(!N||typeof N!=="object"||Array.isArray(N))continue;let T=J(N,S);if(!T||typeof T!=="object"||Array.isArray(T))continue;if(Object.keys(T).length===0)continue;w.push(T)}if(w.length>0)_[R]=w;continue}if(typeof C==="object"&&!Array.isArray(C)){if(!A){_[R]=C;continue}let S=J(C,M);if(!S||typeof S!=="object"||Array.isArray(S))continue;if(Object.keys(S).length===0)continue;_[R]=S;continue}_[R]=C}return _};return J($,Y)}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 Q=Z.split(/\s+/).filter((U)=>U.length>0);if(Q.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(Q.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 X=Q[0];if(typeof X!=="string"||X.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let G=null;if(Q.length===2){let U=Q[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);G=U}let Y=X.split(".");if(Y.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(Y.length===2){let U=Y[0],V=Y[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:G}}let J=Y[0];if(typeof J!=="string"||J.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:J,alias:G}}static normalizeTableRef($){let Z=y.parseTableRef($),Q=Z.schema?c(Z.schema):null,X=c(Z.table),G=Q?`${Q}.${X}`:X;if(Z.alias)G=`${G} ${Z.alias}`;return G}static getJoinMainQualifier($){let Z=y.parseTableRef($);if(Z.alias)return Z.alias;return c(Z.table)}static async fieldsToSnake($,Z,Q){if(!Z||!Array.isArray(Z))return["*"];let X=y.validateAndClassifyFields(Z);if(X.type==="all")return["*"];if(X.type==="include")return X.fields.map((G)=>{return y.processJoinField(G)});if(X.type==="exclude"){let G=await Q($),Y=X.fields.map((U)=>c(U)),J=G.filter((U)=>!Y.includes(U));if(J.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${Y.join(", ")}`);return J}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((X)=>X==="*"))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((X)=>!X||typeof X!=="string"||X.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let X of $){let G=X.startsWith("!")?X.substring(1):X;X0.assertNoExprField(G)}let Z=$.filter((X)=>!X.startsWith("!")),Q=$.filter((X)=>X.startsWith("!"));if(Z.length>0&&Q.length===0)return{type:"include",fields:Z};if(Q.length>0&&Z.length===0)return{type:"exclude",fields:Q.map((G)=>G.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
|
|
16
|
+
) ENGINE=${W} DEFAULT CHARSET=${V} COLLATE=${A}`;await $.unsafe(F);let _=[];for(let I of X){let P=`idx_${I}`;_.push(k.buildIndexClause(P,I,"create"))}for(let[I,P]of Object.entries(Q)){let C=p(I);if(P.index===!0&&P.unique!==!0){let w=`idx_${C}`;_.push(k.buildIndexClause(w,C,"create"))}}await k.runIndexBatch($,Z,_,"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25")}static async modifyTable($,Z,Q,X){let G=await k.getTableColumns($,Z,Q),Y=await k.getTableIndexes($,Z,Q),{plan:J,summary:W,details:V}=k.buildTablePlan({tableName:Q,fields:X,existingColumns:G,existingIndexes:Y});if(J.changed){let A=`[\u8868 ${Q}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${W.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${W.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${W.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${W.indexChanges}`,F=V.fieldChanges.flatMap((P)=>P.changes.map((C)=>{let w=String(C.current??""),N=String(C.expected??"");return`- ${P.dbFieldName}.${C.type}: ${w} -> ${N}`})),_=V.indexChanges.map((P)=>{let C=`idx_${P.fieldName}`===P.indexName?P.indexName:P.indexName;if(P.action==="create")return`- index.${C}: \u65E0 -> ${P.indexName}(${P.fieldName})`;return`- index.${C}: ${P.indexName}(${P.fieldName}) -> \u65E0`}),I=[...F,..._];K.debug(A);for(let P of I)K.debug(`[\u8868 ${Q}] \u53D8\u66F4\u660E\u7EC6 ${P}`);await k.applyTablePlan($,Q,J)}return J}}var GY=($,Z=Bun.nanoseconds())=>{let Q=(Z-$)/1e6;if(Q<1000)return`${Q.toFixed(2)} \u6BEB\u79D2`;else return`${(Q/1000).toFixed(2)} \u79D2`};P$();P$();import{existsSync as nH,readdirSync as sH}from"fs";vQ();m0();var YY=()=>{let $=new Map;return((Q,X,G)=>{if(!nH(Q))return;let Y=sH(Q,{withFileTypes:!0});for(let J of Y){if(J.name.startsWith("_"))continue;if(!PZ(Q,J))continue;let W=YZ(Q,J.name),V={source:X,sourceName:G,name:J.name,camelName:j$(J.name),rootDir:W};$.set(J.name,V)}})(r(s0,"node_modules","@befly-addon"),"addon","\u7EC4\u4EF6"),Array.from($.values())};qZ();var oH={name:"auth",enable:!0,deps:["cors"],handler:async($,Z)=>{let Q=Z.req.headers.get("authorization");if(Q&&Q.startsWith("Bearer ")){let X=Q.substring(7);try{let G=await $.jwt.verify(X);Z.user=G,QG(G.id,G.roleCode,G.nickname,G.roleType)}catch{Z.user={}}}else Z.user={}}},JY=oH;var lH={name:"cors",enable:!0,deps:[],handler:async($,Z)=>{let Q=Z.req,G=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:{}),Y=wZ(Q,G);if(Z.corsHeaders=Y,Q.method==="OPTIONS"){Z.response=new Response(null,{status:204,headers:Y});return}}},HY=lH;var rH=":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",iH="[: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]["+rH+"]*",tH=new RegExp("^"+iH+"$");function EZ($,Z){let Q=[],X=Z.exec($);while(X){let G=[];G.startIndex=Z.lastIndex-X[0].length;let Y=X.length;for(let J=0;J<Y;J++)G.push(X[J]);Q.push(G),X=Z.exec($)}return Q}var d$=function($){let Z=tH.exec($);return!(Z===null||typeof Z>"u")};function WY($){return typeof $<"u"}var aH={allowBooleanAttributes:!1,unpairedTags:[]};function AY($,Z){Z=Object.assign({},aH,Z);let Q=[],X=!1,G=!1;if($[0]==="\uFEFF")$=$.substr(1);for(let Y=0;Y<$.length;Y++)if($[Y]==="<"&&$[Y+1]==="?"){if(Y+=2,Y=VY($,Y),Y.err)return Y}else if($[Y]==="<"){let J=Y;if(Y++,$[Y]==="!"){Y=OY($,Y);continue}else{let W=!1;if($[Y]==="/")W=!0,Y++;let V="";for(;Y<$.length&&$[Y]!==">"&&$[Y]!==" "&&$[Y]!=="\t"&&$[Y]!==`
|
|
17
|
+
`&&$[Y]!=="\r";Y++)V+=$[Y];if(V=V.trim(),V[V.length-1]==="/")V=V.substring(0,V.length-1),Y--;if(!JW(V)){let _;if(V.trim().length===0)_="Invalid space after '<'.";else _="Tag '"+V+"' is an invalid name.";return W0("InvalidTag",_,o0($,Y))}let A=ZW($,Y);if(A===!1)return W0("InvalidAttr","Attributes for '"+V+"' have open quote.",o0($,Y));let F=A.value;if(Y=A.index,F[F.length-1]==="/"){let _=Y-F.length;F=F.substring(0,F.length-1);let I=_Y(F,Z);if(I===!0)X=!0;else return W0(I.err.code,I.err.msg,o0($,_+I.err.line))}else if(W)if(!A.tagClosed)return W0("InvalidTag","Closing tag '"+V+"' doesn't have proper closing.",o0($,Y));else if(F.trim().length>0)return W0("InvalidTag","Closing tag '"+V+"' can't have attributes or invalid starting.",o0($,J));else if(Q.length===0)return W0("InvalidTag","Closing tag '"+V+"' has not been opened.",o0($,J));else{let _=Q.pop();if(V!==_.tagName){let I=o0($,_.tagStartPos);return W0("InvalidTag","Expected closing tag '"+_.tagName+"' (opened in line "+I.line+", col "+I.col+") instead of closing tag '"+V+"'.",o0($,J))}if(Q.length==0)G=!0}else{let _=_Y(F,Z);if(_!==!0)return W0(_.err.code,_.err.msg,o0($,Y-F.length+_.err.line));if(G===!0)return W0("InvalidXml","Multiple possible root nodes found.",o0($,Y));else if(Z.unpairedTags.indexOf(V)!==-1);else Q.push({tagName:V,tagStartPos:J});X=!0}for(Y++;Y<$.length;Y++)if($[Y]==="<")if($[Y+1]==="!"){Y++,Y=OY($,Y);continue}else if($[Y+1]==="?"){if(Y=VY($,++Y),Y.err)return Y}else break;else if($[Y]==="&"){let _=GW($,Y);if(_==-1)return W0("InvalidChar","char '&' is not expected.",o0($,Y));Y=_}else if(G===!0&&!UY($[Y]))return W0("InvalidXml","Extra text at the end",o0($,Y));if($[Y]==="<")Y--}}else{if(UY($[Y]))continue;return W0("InvalidChar","char '"+$[Y]+"' is not expected.",o0($,Y))}if(!X)return W0("InvalidXml","Start tag expected.",1);else if(Q.length==1)return W0("InvalidTag","Unclosed tag '"+Q[0].tagName+"'.",o0($,Q[0].tagStartPos));else if(Q.length>0)return W0("InvalidXml","Invalid '"+JSON.stringify(Q.map((Y)=>Y.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1});return!0}function UY($){return $===" "||$==="\t"||$===`
|
|
18
|
+
`||$==="\r"}function VY($,Z){let Q=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let X=$.substr(Q,Z-Q);if(Z>5&&X==="xml")return W0("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 OY($,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 Q=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")Q++;else if($[Z]===">"){if(Q--,Q===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 eH='"',$W="'";function ZW($,Z){let Q="",X="",G=!1;for(;Z<$.length;Z++){if($[Z]===eH||$[Z]===$W)if(X==="")X=$[Z];else if(X!==$[Z]);else X="";else if($[Z]===">"){if(X===""){G=!0;break}}Q+=$[Z]}if(X!=="")return!1;return{value:Q,index:Z,tagClosed:G}}var QW=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function _Y($,Z){let Q=EZ($,QW),X={};for(let G=0;G<Q.length;G++){if(Q[G][1].length===0)return W0("InvalidAttr","Attribute '"+Q[G][2]+"' has no space in starting.",WZ(Q[G]));else if(Q[G][3]!==void 0&&Q[G][4]===void 0)return W0("InvalidAttr","Attribute '"+Q[G][2]+"' is without value.",WZ(Q[G]));else if(Q[G][3]===void 0&&!Z.allowBooleanAttributes)return W0("InvalidAttr","boolean attribute '"+Q[G][2]+"' is not allowed.",WZ(Q[G]));let Y=Q[G][2];if(!YW(Y))return W0("InvalidAttr","Attribute '"+Y+"' is an invalid name.",WZ(Q[G]));if(!X.hasOwnProperty(Y))X[Y]=1;else return W0("InvalidAttr","Attribute '"+Y+"' is repeated.",WZ(Q[G]))}return!0}function XW($,Z){let Q=/\d/;if($[Z]==="x")Z++,Q=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(Q))break}return-1}function GW($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,XW($,Z);let Q=0;for(;Z<$.length;Z++,Q++){if($[Z].match(/\w/)&&Q<20)continue;if($[Z]===";")break;return-1}return Z}function W0($,Z,Q){return{err:{code:$,msg:Z,line:Q.line||Q,col:Q.col}}}function YW($){return d$($)}function JW($){return d$($)}function o0($,Z){let Q=$.substring(0,Z).split(/\r?\n/);return{line:Q.length,col:Q[Q.length-1].length+1}}function WZ($){return $.startIndex+$[1].length}var HW={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,Q){return $},captureMetaData:!1},FY=function($){return Object.assign({},HW,$)};var TZ;if(typeof Symbol!=="function")TZ="@@xmlMetadata";else TZ=Symbol("XML Node Metadata");class a0{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][TZ]={startIndex:Z}}static getMetaDataSymbol(){return TZ}}class NZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let Q={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let X=1,G=!1,Y=!1,J="";for(;Z<$.length;Z++)if($[Z]==="<"&&!Y){if(G&&D$($,"!ENTITY",Z)){Z+=7;let W,V;if([W,V,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),V.indexOf("&")===-1)Q[W]={regx:RegExp(`&${W};`,"g"),val:V}}else if(G&&D$($,"!ELEMENT",Z)){Z+=8;let{index:W}=this.readElementExp($,Z+1);Z=W}else if(G&&D$($,"!ATTLIST",Z))Z+=8;else if(G&&D$($,"!NOTATION",Z)){Z+=9;let{index:W}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=W}else if(D$($,"!--",Z))Y=!0;else throw Error("Invalid DOCTYPE");X++,J=""}else if($[Z]===">"){if(Y){if($[Z-1]==="-"&&$[Z-2]==="-")Y=!1,X--}else X--;if(X===0)break}else if($[Z]==="[")G=!0;else J+=$[Z];if(X!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:Q,i:Z}}readEntityExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")Q+=$[Z],Z++;if(UZ(Q),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 X="";return[Z,X]=this.readIdentifierVal($,Z,"entity"),Z--,[Q,X,Z]}readNotationExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;!this.suppressValidationErr&&UZ(Q),Z=r0($,Z);let X=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&X!=="SYSTEM"&&X!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${X}"`);Z+=X.length,Z=r0($,Z);let G=null,Y=null;if(X==="PUBLIC"){if([Z,G]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(X==="SYSTEM"){if([Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!Y)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:Q,publicIdentifier:G,systemIdentifier:Y,index:--Z}}readIdentifierVal($,Z,Q){let X="",G=$[Z];if(G!=='"'&&G!=="'")throw Error(`Expected quoted string, found "${G}"`);Z++;while(Z<$.length&&$[Z]!==G)X+=$[Z],Z++;if($[Z]!==G)throw Error(`Unterminated ${Q} value`);return Z++,[Z,X]}readElementExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;if(!this.suppressValidationErr&&!d$(Q))throw Error(`Invalid element name: "${Q}"`);Z=r0($,Z);let X="";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]!==")")X+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:Q,contentModel:X.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;UZ(Q),Z=r0($,Z);let X="";while(Z<$.length&&!/\s/.test($[Z]))X+=$[Z],Z++;if(!UZ(X))throw Error(`Invalid attribute name: "${X}"`);Z=r0($,Z);let G="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(G="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let J=[];while(Z<$.length&&$[Z]!==")"){let W="";while(Z<$.length&&$[Z]!=="|"&&$[Z]!==")")W+=$[Z],Z++;if(W=W.trim(),!UZ(W))throw Error(`Invalid notation name: "${W}"`);if(J.push(W),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,G+=" ("+J.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))G+=$[Z],Z++;let J=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!J.includes(G.toUpperCase()))throw Error(`Invalid attribute type: "${G}"`)}Z=r0($,Z);let Y="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")Y="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")Y="#IMPLIED",Z+=7;else[Z,Y]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:Q,attributeName:X,attributeType:G,defaultValue:Y,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function D$($,Z,Q){for(let X=0;X<Z.length;X++)if(Z[X]!==$[Q+X+1])return!1;return!0}function UZ($){if(d$($))return $;else throw Error(`Invalid entity name ${$}`)}var WW=/^[-+]?0x[a-fA-F0-9]+$/,UW=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,VW={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function uQ($,Z={}){if(Z=Object.assign({},VW,Z),!$||typeof $!=="string")return $;let Q=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(Q))return $;else if($==="0")return 0;else if(Z.hex&&WW.test(Q))return FW(Q,16);else if(Q.includes("e")||Q.includes("E"))return _W($,Q,Z);else{let X=UW.exec(Q);if(X){let G=X[1]||"",Y=X[2],J=AW(X[3]),W=G?$[Y.length+1]===".":$[Y.length]===".";if(!Z.leadingZeros&&(Y.length>1||Y.length===1&&!W))return $;else{let V=Number(Q),A=String(V);if(V===0)return V;if(A.search(/[eE]/)!==-1)if(Z.eNotation)return V;else return $;else if(Q.indexOf(".")!==-1)if(A==="0")return V;else if(A===J)return V;else if(A===`${G}${J}`)return V;else return $;let F=Y?J:Q;if(Y)return F===A||G+F===A?V:$;else return F===A||F===G+A?V:$}}else return $}}var OW=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function _W($,Z,Q){if(!Q.eNotation)return $;let X=Z.match(OW);if(X){let G=X[1]||"",Y=X[3].indexOf("e")===-1?"E":"e",J=X[2],W=G?$[J.length+1]===Y:$[J.length]===Y;if(J.length>1&&W)return $;else if(J.length===1&&(X[3].startsWith(`.${Y}`)||X[3][0]===Y))return Number(Z);else if(Q.leadingZeros&&!W)return Z=(X[1]||"")+X[3],Number(Z);else return $}else return $}function AW($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function FW($,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 mQ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let Q of $){if(typeof Q==="string"&&Z===Q)return!0;if(Q instanceof RegExp&&Q.test(Z))return!0}};return()=>!1}class DZ{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,Q)=>MY(Q,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,Q)=>MY(Q,16,"&#x")}},this.addExternalEntities=MW,this.parseXml=qW,this.parseTextData=zW,this.resolveNameSpace=KW,this.buildAttributesMap=IW,this.isItStopNode=PW,this.replaceEntitiesValue=BW,this.readStopNodeData=CW,this.saveTextToParentTag=LW,this.addChild=jW,this.ignoreAttributesFn=mQ(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 Q=this.options.stopNodes[Z];if(typeof Q!=="string")continue;if(Q.startsWith("*."))this.stopNodesWildcard.add(Q.substring(2));else this.stopNodesExact.add(Q)}}}}function MW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let X=Z[Q];this.lastEntities[X]={regex:new RegExp("&"+X+";","g"),val:$[X]}}}function zW($,Z,Q,X,G,Y,J){if($!==void 0){if(this.options.trimValues&&!X)$=$.trim();if($.length>0){if(!J)$=this.replaceEntitiesValue($);let W=this.options.tagValueProcessor(Z,$,Q,G,Y);if(W===null||W===void 0)return $;else if(typeof W!==typeof $||W!==$)return W;else if(this.options.trimValues)return nQ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return nQ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function KW($){if(this.options.removeNSPrefix){let Z=$.split(":"),Q=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=Q+Z[1]}return $}var RW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function IW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let Q=EZ($,RW),X=Q.length,G={};for(let Y=0;Y<X;Y++){let J=this.resolveNameSpace(Q[Y][1]);if(this.ignoreAttributesFn(J,Z))continue;let W=Q[Y][4],V=this.options.attributeNamePrefix+J;if(J.length){if(this.options.transformAttributeName)V=this.options.transformAttributeName(V);if(V==="__proto__")V="#__proto__";if(W!==void 0){if(this.options.trimValues)W=W.trim();W=this.replaceEntitiesValue(W);let A=this.options.attributeValueProcessor(J,W,Z);if(A===null||A===void 0)G[V]=W;else if(typeof A!==typeof W||A!==W)G[V]=A;else G[V]=nQ(W,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)G[V]=!0}}if(!Object.keys(G).length)return;if(this.options.attributesGroupName){let Y={};return Y[this.options.attributesGroupName]=G,Y}return G}}var qW=function($){$=$.replace(/\r\n?/g,`
|
|
19
|
+
`);let Z=new a0("!xml"),Q=Z,X="",G="",Y=new NZ(this.options.processEntities);for(let J=0;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let V=k$($,">",J,"Closing Tag is not closed."),A=$.substring(J+2,V).trim();if(this.options.removeNSPrefix){let I=A.indexOf(":");if(I!==-1)A=A.substr(I+1)}if(this.options.transformTagName)A=this.options.transformTagName(A);if(Q)X=this.saveTextToParentTag(X,Q,G);let F=G.substring(G.lastIndexOf(".")+1);if(A&&this.options.unpairedTags.indexOf(A)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${A}>`);let _=0;if(F&&this.options.unpairedTags.indexOf(F)!==-1)_=G.lastIndexOf(".",G.lastIndexOf(".")-1),this.tagsNodeStack.pop();else _=G.lastIndexOf(".");G=G.substring(0,_),Q=this.tagsNodeStack.pop(),X="",J=V}else if($[J+1]==="?"){let V=dQ($,J,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(X=this.saveTextToParentTag(X,Q,G),this.options.ignoreDeclaration&&V.tagName==="?xml"||this.options.ignorePiTags);else{let A=new a0(V.tagName);if(A.add(this.options.textNodeName,""),V.tagName!==V.tagExp&&V.attrExpPresent)A[":@"]=this.buildAttributesMap(V.tagExp,G);this.addChild(Q,A,G,J)}J=V.closeIndex+1}else if($.substr(J+1,3)==="!--"){let V=k$($,"-->",J+4,"Comment is not closed.");if(this.options.commentPropName){let A=$.substring(J+4,V-2);X=this.saveTextToParentTag(X,Q,G),Q.add(this.options.commentPropName,[{[this.options.textNodeName]:A}])}J=V}else if($.substr(J+1,2)==="!D"){let V=Y.readDocType($,J);this.docTypeEntities=V.entities,J=V.i}else if($.substr(J+1,2)==="!["){let V=k$($,"]]>",J,"CDATA is not closed.")-2,A=$.substring(J+9,V);X=this.saveTextToParentTag(X,Q,G);let F=this.parseTextData(A,Q.tagname,G,!0,!1,!0,!0);if(F==null)F="";if(this.options.cdataPropName)Q.add(this.options.cdataPropName,[{[this.options.textNodeName]:A}]);else Q.add(this.options.textNodeName,F);J=V+2}else{let V=dQ($,J,this.options.removeNSPrefix),A=V.tagName,F=V.rawTagName,_=V.tagExp,I=V.attrExpPresent,P=V.closeIndex;if(this.options.transformTagName){let N=this.options.transformTagName(A);if(_===A)_=N;A=N}if(Q&&X){if(Q.tagname!=="!xml")X=this.saveTextToParentTag(X,Q,G,!1)}let C=Q;if(C&&this.options.unpairedTags.indexOf(C.tagname)!==-1)Q=this.tagsNodeStack.pop(),G=G.substring(0,G.lastIndexOf("."));if(A!==Z.tagname)G+=G?"."+A:A;let w=J;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,G,A)){let N="";if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),G=G.substr(0,G.length-1),_=A;else _=_.substr(0,_.length-1);J=V.closeIndex}else if(this.options.unpairedTags.indexOf(A)!==-1)J=V.closeIndex;else{let E=this.readStopNodeData($,F,P+1);if(!E)throw Error(`Unexpected end of ${F}`);J=E.i,N=E.tagContent}let T=new a0(A);if(A!==_&&I)T[":@"]=this.buildAttributesMap(_,G);if(N)N=this.parseTextData(N,A,G,!0,I,!0,!0);G=G.substr(0,G.lastIndexOf(".")),T.add(this.options.textNodeName,N),this.addChild(Q,T,G,w)}else{if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),G=G.substr(0,G.length-1),_=A;else _=_.substr(0,_.length-1);if(this.options.transformTagName){let T=this.options.transformTagName(A);if(_===A)_=T;A=T}let N=new a0(A);if(A!==_&&I)N[":@"]=this.buildAttributesMap(_,G);this.addChild(Q,N,G,w),G=G.substr(0,G.lastIndexOf("."))}else{let N=new a0(A);if(this.tagsNodeStack.push(Q),A!==_&&I)N[":@"]=this.buildAttributesMap(_,G);this.addChild(Q,N,G,w),Q=N}X="",J=P}}else X+=$[J];return Z.child};function jW($,Z,Q,X){if(!this.options.captureMetaData)X=void 0;let G=this.options.updateTag(Z.tagname,Q,Z[":@"]);if(G===!1);else if(typeof G==="string")Z.tagname=G,$.addChild(Z,X);else $.addChild(Z,X)}var BW=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let Q=this.docTypeEntities[Z];$=$.replace(Q.regx,Q.val)}for(let Z in this.lastEntities){let Q=this.lastEntities[Z];$=$.replace(Q.regex,Q.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let Q=this.htmlEntities[Z];$=$.replace(Q.regex,Q.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function LW($,Z,Q,X){if($){if(X===void 0)X=Z.child.length===0;if($=this.parseTextData($,Z.tagname,Q,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,X),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function PW($,Z,Q,X){if(Z&&Z.has(X))return!0;if($&&$.has(Q))return!0;return!1}function SW($,Z,Q=">"){let X,G="";for(let Y=Z;Y<$.length;Y++){let J=$[Y];if(X){if(J===X)X=""}else if(J==='"'||J==="'")X=J;else if(J===Q[0])if(Q[1]){if($[Y+1]===Q[1])return{data:G,index:Y}}else return{data:G,index:Y};else if(J==="\t")J=" ";G+=J}}function k$($,Z,Q,X){let G=$.indexOf(Z,Q);if(G===-1)throw Error(X);else return G+Z.length-1}function dQ($,Z,Q,X=">"){let G=SW($,Z+1,X);if(!G)return;let{data:Y,index:J}=G,W=Y.search(/\s/),V=Y,A=!0;if(W!==-1)V=Y.substring(0,W),Y=Y.substring(W+1).trimStart();let F=V;if(Q){let _=V.indexOf(":");if(_!==-1)V=V.substr(_+1),A=V!==G.data.substr(_+1)}return{tagName:V,tagExp:Y,closeIndex:J,attrExpPresent:A,rawTagName:F}}function CW($,Z,Q){let X=Q,G=1;for(;Q<$.length;Q++)if($[Q]==="<")if($[Q+1]==="/"){let Y=k$($,">",Q,`${Z} is not closed`);if($.substring(Q+2,Y).trim()===Z){if(G--,G===0)return{tagContent:$.substring(X,Q),i:Y}}Q=Y}else if($[Q+1]==="?")Q=k$($,"?>",Q+1,"StopNode is not closed.");else if($.substr(Q+1,3)==="!--")Q=k$($,"-->",Q+3,"StopNode is not closed.");else if($.substr(Q+1,2)==="![")Q=k$($,"]]>",Q,"StopNode is not closed.")-2;else{let Y=dQ($,Q,">");if(Y){if((Y&&Y.tagName)===Z&&Y.tagExp[Y.tagExp.length-1]!=="/")G++;Q=Y.closeIndex}}}function nQ($,Z,Q){if(Z&&typeof $==="string"){let X=$.trim();if(X==="true")return!0;else if(X==="false")return!1;else return uQ($,Q)}else if(WY($))return $;else return""}function MY($,Z,Q){let X=Number.parseInt($,Z);if(X>=0&&X<=1114111)return String.fromCodePoint(X);else return Q+$+";"}var sQ=a0.getMetaDataSymbol();function oQ($,Z){return zY($,Z)}function zY($,Z,Q){let X,G={};for(let Y=0;Y<$.length;Y++){let J=$[Y],W=wW(J),V="";if(Q===void 0)V=W;else V=Q+"."+W;if(W===Z.textNodeName)if(X===void 0)X=J[W];else X+=""+J[W];else if(W===void 0)continue;else if(J[W]){let A=zY(J[W],Z,V),F=TW(A,Z);if(J[sQ]!==void 0)A[sQ]=J[sQ];if(J[":@"])EW(A,J[":@"],V,Z);else if(Object.keys(A).length===1&&A[Z.textNodeName]!==void 0&&!Z.alwaysCreateTextNode)A=A[Z.textNodeName];else if(Object.keys(A).length===0)if(Z.alwaysCreateTextNode)A[Z.textNodeName]="";else A="";if(G[W]!==void 0&&G.hasOwnProperty(W)){if(!Array.isArray(G[W]))G[W]=[G[W]];G[W].push(A)}else if(Z.isArray(W,V,F))G[W]=[A];else G[W]=A}}if(typeof X==="string"){if(X.length>0)G[Z.textNodeName]=X}else if(X!==void 0)G[Z.textNodeName]=X;return G}function wW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let X=Z[Q];if(X!==":@")return X}}function EW($,Z,Q,X){if(Z){let G=Object.keys(Z),Y=G.length;for(let J=0;J<Y;J++){let W=G[J];if(X.isArray(W,Q+"."+W,!0,!0))$[W]=[Z[W]];else $[W]=Z[W]}}}function TW($,Z){let{textNodeName:Q}=Z,X=Object.keys($).length;if(X===0)return!0;if(X===1&&($[Q]||typeof $[Q]==="boolean"||$[Q]===0))return!0;return!1}class VZ{constructor($){this.externalEntities={},this.options=FY($)}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 G=AY($,Z);if(G!==!0)throw Error(`${G.err.msg}:${G.err.line}:${G.err.col}`)}let Q=new DZ(this.options);Q.addExternalEntities(this.externalEntities);let X=Q.parseXml($);if(this.options.preserveOrder||X===void 0)return X;else return oQ(X,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 a0.getMetaDataSymbol()}}var NW=new VZ,DW={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 Q=new URL(Z.req.url),X=Object.fromEntries(Q.searchParams);Z.body=X}else if(Z.req.method==="POST"){let Q=Z.req.headers.get("content-type")||"",X=new URL(Z.req.url),G=Object.fromEntries(X.searchParams);try{if(Q.includes("application/json")){let Y=await Z.req.json(),J={...G,...Y};Z.body=J}else if(Q.includes("application/xml")||Q.includes("text/xml")){let Y=await Z.req.text(),J=NW.parse(Y),W=Object.keys(J)[0],V=W&&typeof J[W]==="object"?J[W]:J,A={...G,...V};Z.body=A}else{Z.response=S$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:Q},"parser");return}}catch{Z.response=S$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:Q.includes("application/json")?"invalid_json":Q.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},KY=DW;class e{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleMenus($){return`role:menus:${$}`}static roleApis($){return`role:apis:${$}`}}Z0();var kW={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=S$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let Q=Z.route,X=Z.user.roleCode,G=!1;if(X&&$.redis)try{let Y=e.roleApis(X);G=await $.redis.sismember(Y,Q)}catch(Y){K.error({event:"hook_permission_redis_error",apiPath:Q,roleCode:X,err:Y,msg:"hook permission redis error"}),G=!1}if(!G){let Y=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,J=typeof Q==="string"&&Q.length>0?Q:null,W=Y?Y:J?J:"\u672A\u77E5\u63A5\u53E3";Z.response=S$(Z,`\u65E0\u6743\u8BBF\u95EE ${W} \u63A5\u53E3`,1,null,{apiLabel:W},"permission");return}}},RY=kW;var lQ={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:".+"},IY=new Map;function vW($){if($.startsWith("@")){let Z=$.slice(1);return lQ[Z]||$}return $}function xW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let Q=Z.lastIndexOf("/");if(Q<=0)return null;let X=Z.slice(Q+1);if(X!==""&&!/^[gimsuy]+$/.test(X))return null;return{source:Z.slice(1,Q),flags:X}}function qY($,Z){let Q=xW($),X=Q?Q.source:vW($),G=Q&&Q.flags!==""?Q.flags:Z||"",Y=`${X}:${G}`,J=IY.get(Y);if(!J)J=new RegExp(X,G),IY.set(Y,J);return J}m0();var kZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function vZ($,Z){if(zQ($)){if(Z==="number")return KZ($);return RZ($)}if(Array.isArray($)){for(let Q of $)if(!vZ(Q,Z))return!1;return!0}if(zZ($)){for(let Q of Object.values($)){if(Q===void 0)continue;if(!vZ(Q,Z))return!1}return!0}return!1}class rQ{static validate($,Z,Q=[]){let X={};if(!o($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!o(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let G=$,Y=Z;for(let J of Q){let W=G[J];if(W===void 0||W===null){let V=Y[J],A=o(V)&&typeof V.name==="string"?V.name:J;X[J]=`${A}\u4E3A\u5FC5\u586B\u9879`}}for(let[J,W]of Object.entries(Y)){if(X[J])continue;if(G[J]===void 0&&!Q.includes(J))continue;if(!o(W)){X[J]=`${J}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:V,type:A}=W;if(typeof V!=="string"||typeof A!=="string"){X[J]=`${J}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let F={name:V,type:A},_=W.input;if(typeof _==="string")F.input=_;let I=W.min;if(typeof I==="number"||I===null)F.min=I;let P=W.max;if(typeof P==="number"||P===null)F.max=P;let C=W.default;if(C===null||typeof C==="string"||typeof C==="number"||typeof C==="boolean"||Array.isArray(C)||o(C))F.default=C;let w=W.detail;if(typeof w==="string")F.detail=w;let N=W.index;if(typeof N==="boolean")F.index=N;let T=W.unique;if(typeof T==="boolean")F.unique=T;let E=W.nullable;if(typeof E==="boolean")F.nullable=E;let v=W.unsigned;if(typeof v==="boolean")F.unsigned=v;let c=this.checkField(G[J],F,J);if(c)X[J]=c}return this.buildResult(X)}static single($,Z){let Q=t0(Z),X=Q.type,G=Q.input,Y=Q.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(X,G,Y),error:null};let J=this.convert($,G,X);if(J.error)return{value:null,error:J.error};let W=this.checkRule(J.value,Z);if(W)return{value:null,error:W};return{value:J.value,error:null}}static buildResult($){let Z=Object.values($),Q=Object.keys($),X=Z.length>0;return{code:X?1:0,failed:X,firstError:X?Z[0]??null:null,errors:Z,errorFields:Q,fieldErrors:$}}static checkField($,Z,Q){let X=Z.name||Q,G=t0(Z),Y=this.convert($,G.input,G.type);if(Y.error)return`${X}${Y.error}`;let J=this.checkRule(Y.value,Z);return J?`${X}${J}`:null}static convert($,Z,Q){let X=String(Z||"").trim(),G=X.toLowerCase();if(!kZ.has(G)&&g$(X))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!kZ.has(G)&&T$(X))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(G){case"number":{if(KZ($))return{value:$,error:null};if(typeof $==="string"){let Y=Number($);return Number.isFinite(Y)?{value:Y,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 Y=Number($);return Number.isFinite(Y)&&Number.isInteger(Y)?{value:Y,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}return{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}case"string":{if(typeof $==="string"){let J=String(Q||"").toLowerCase();if(J==="datetime"||J==="timestamp")return{value:$.trim(),error:null};return{value:$,error:null}}let Y=String(Q||"").toLowerCase();if(Y==="datetime"||Y==="timestamp")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 Y of $)if(!KZ(Y))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 Y of $)if(!RZ(Y))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6574\u6570"};return{value:$,error:null}}case"json":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return vZ($,"number")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6570\u5B57"};case"json_integer":if(!GZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return vZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{let Y=String(Q||"").toLowerCase();if(Y==="datetime"||Y==="timestamp"){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 Q=t0(Z),X=Q.type,G=Q.input,Y=Q.min,J=Q.max,W=String(G||"").trim(),V=W.toLowerCase(),A=!kZ.has(V)&&g$(W),F=!kZ.has(V)&&T$(W);if(V==="number"||V==="integer"){if(typeof $!=="number")return V==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(Y!==null&&$<Y)return`\u4E0D\u80FD\u5C0F\u4E8E${Y}`;if(J!==null&&J>0&&$>J)return`\u4E0D\u80FD\u5927\u4E8E${J}`}else if(V==="string"||V==="char"||A||F){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(V==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(Y!==null&&$.length<Y)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${Y}\u4E2A\u5B57\u7B26`;if(J!==null&&J>0&&$.length>J)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${J}\u4E2A\u5B57\u7B26`;if(A){let I=this.resolveRegex(W);if(!this.testRegex(I,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(F){if(!u$(W).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(Y!==null&&$.length<Y)return`\u81F3\u5C11\u9700\u8981${Y}\u4E2A\u5143\u7D20`;if(J!==null&&J>0&&$.length>J)return`\u6700\u591A\u53EA\u80FD\u6709${J}\u4E2A\u5143\u7D20`}else if(V==="json"||V==="json_number"||V==="json_integer"){if(!GZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}let _=String(X||"").toLowerCase();if(_==="datetime"||_==="timestamp"){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[I,P]=$.split(" ");if(typeof I!=="string"||typeof P!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[C,w,N]=I.split("-"),[T,E,v]=P.split(":"),c=Number(C),g=Number(w),y=Number(N),l=Number(T),n=Number(E),H0=Number(v);if(!Number.isInteger(c)||c<1000||c>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(g)||g<1||g>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(y)||y<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(l)||l<0||l>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(n)||n<0||n>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(H0)||H0<0||H0>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let O=[31,c%4===0&&c%100!==0||c%400===0?29:28,31,30,31,30,31,31,30,31,30,31][g-1]??0;if(y>O)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return lQ[Z]||$}return $}static testRegex($,Z){try{return qY($).test(Z)}catch{return!1}}static defaultFor($,Z,Q){if(Q!==null&&Q!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof Q==="string"){if(Q==="[]")return[];try{let Y=JSON.parse(Q);return Array.isArray(Y)?Y:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof Q==="string"){let Y=Number(Q);return isNaN(Y)?0:Y}return Q}let X=String($||"").toLowerCase();if(X==="datetime"||X==="timestamp"||X==="json"||X==="enum")return null;let G=String(Z||"").toLowerCase();if(G==="json"||G==="json_number"||G==="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""}}}m0();var fW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(o(Z.api.fields)){let X=o(Z.body)?Z.body:{},G={};for(let[Y,J]of Object.entries(Z.api.fields)){let W=t0(J),V=X[Y];if(V===void 0){let A=p(Y);if(X[A]!==void 0)V=X[A]}if(V===void 0&&W.default!==null)V=W.default;if(V!==void 0)G[Y]=V}Z.body=G}let Q=rQ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(Q.code!==0){Z.response=S$(Z,Q.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,Q.fieldErrors,"validator");return}}},jY=fW;Z0();class iQ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let Q=$.trim();if(!Q)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(Q))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!Q.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(Q.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return Q}assertMenuPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let Q=$.trim();if(!Q)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(!Q.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(Q.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);if(Q.length>1&&Q.endsWith("/"))throw Error(`${Z} \u4E0D\u5141\u8BB8\u4EE5 / \u7ED3\u5C3E`);return Q}assertApiPathList($,Z){if($===null||$===void 0)return[];let Q=$;if(typeof Q==="string"){let G=Q.trim();if(G===""||G==="null")return[];if(G.startsWith("[")&&G.endsWith("]"))try{Q=JSON.parse(G)}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(Q))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 Q}`);let X=[];for(let G of Q)X.push(this.assertApiPathname(G,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return X}assertMenuPathList($,Z){if($===null||$===void 0)return[];let Q=$;if(typeof Q==="string"){let G=Q.trim();if(G===""||G==="null")return[];if(G.startsWith("[")&&G.endsWith("]"))try{Q=JSON.parse(G)}catch{throw Error(`\u89D2\u8272\u83DC\u5355\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.menus JSON \u89E3\u6790\u5931\u8D25\uFF0CroleCode=${Z}`)}}if(!Array.isArray(Q))throw Error(`\u89D2\u8272\u83DC\u5355\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.menus \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u6216 JSON \u6570\u7EC4\u5B57\u7B26\u4E32\uFF0CroleCode=${Z}\uFF0Ctype=${typeof Q}`);let X=[];for(let G of Q)X.push(this.assertMenuPathname(G,`\u89D2\u8272\u83DC\u5355\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.menus \u5143\u7D20\uFF0CroleCode=${Z}`));return X}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){K.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(e.apisAll(),Z.data.lists)===null)K.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){K.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){K.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(e.menusAll(),Z.data.lists)===null)K.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){K.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){K.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"]}),Q=new Map;for(let J of Z.data.lists){if(!J?.code)continue;let W=this.assertApiPathList(J.apis,J.code);Q.set(J.code,W)}let X=Array.from(Q.keys());if(X.length===0){K.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let G=X.map((J)=>e.roleApis(J));await this.redis.delBatch(G);let Y=[];for(let J of X){let W=Q.get(J)||[],V=Array.from(new Set(W)).sort();if(V.length>0)Y.push({key:e.roleApis(J),members:V})}if(Y.length>0)await this.redis.saddBatch(Y)}catch($){throw K.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new D({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 rebuildRoleMenuPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){K.warn("\u26A0\uFE0F \u89D2\u8272\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u89D2\u8272\u83DC\u5355\u6743\u9650\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_role",fields:["code","menus"]}),Q=new Map;for(let J of Z.data.lists){if(!J?.code)continue;let W=this.assertMenuPathList(J.menus,J.code);Q.set(J.code,W)}let X=Array.from(Q.keys());if(X.length===0){K.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u83DC\u5355\u6743\u9650");return}let G=X.map((J)=>e.roleMenus(J));await this.redis.delBatch(G);let Y=[];for(let J of X){let W=Q.get(J)||[],V=Array.from(new Set(W)).sort();if(V.length>0)Y.push({key:e.roleMenus(J),members:V})}if(Y.length>0)await this.redis.saddBatch(Y)}catch($){throw K.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u83DC\u5355\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new D({kind:"runtime",message:"\u26A0\uFE0F \u89D2\u8272\u83DC\u5355\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09",logged:!0,cause:$,meta:{subsystem:"cache",operation:"rebuildRoleMenuPermissions"}})}}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 Q=Z.map((Y)=>this.assertApiPathname(Y,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),X=e.roleApis($);if(Q.length===0){await this.redis.del(X);return}let G=Array.from(new Set(Q));if(await this.redis.del(X),G.length>0)await this.redis.sadd(X,G)}async refreshRoleMenuPermissions($,Z){if(!$||typeof $!=="string")throw Error("roleCode \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Array.isArray(Z))throw Error("menuPaths \u5FC5\u987B\u662F\u6570\u7EC4");let Q=Z.map((Y)=>this.assertMenuPathname(Y,`refreshRoleMenuPermissions: menuPaths \u5143\u7D20\uFF0CroleCode=${$}`)),X=e.roleMenus($);if(Q.length===0){await this.redis.del(X);return}let G=Array.from(new Set(Q));if(await this.redis.del(X),G.length>0)await this.redis.sadd(X,G)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions(),await this.rebuildRoleMenuPermissions()}async getApis(){try{return await this.redis.getObject(e.apisAll())||[]}catch($){return K.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(e.menusAll())||[]}catch($){return K.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(e.roleApis($))||[]}catch(Z){return K.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async getRoleMenuPermissions($){try{return await this.redis.smembers(e.roleMenus($))||[]}catch(Z){return K.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u83DC\u5355\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let Q=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(e.roleApis($),Q)}catch(Q){return K.error({err:Q,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async checkRoleMenuPermission($,Z){try{let Q=this.assertMenuPathname(Z,"checkRoleMenuPermission: menuPath");return await this.redis.sismember(e.roleMenus($),Q)}catch(Q){return K.error({err:Q,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u83DC\u5355\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(e.roleApis($))>0)return K.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return K.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}async deleteRoleMenuPermissions($){try{if(await this.redis.del(e.roleMenus($))>0)return K.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u83DC\u5355\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return K.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u83DC\u5355\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var gW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new D({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new D({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new iQ({db:$.db,redis:$.redis})}},BY=gW;var yW={name:"cipher",enable:!0,deps:[],handler:()=>{return m$}},LY=yW;var hW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},PY=hW;m0();function tQ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function bW($){return Array.isArray($)}function SY($,Z={}){let{pickKeys:Q,omitKeys:X,keepValues:G,excludeValues:Y,keepMap:J}=Z,W=(V)=>{let A={},F=Object.keys(V);if(Q&&Q.length)F=F.filter((_)=>Q.includes(_));if(X&&X.length)F=F.filter((_)=>!X.includes(_));for(let _ of F){let I=V[_];if(J&&_ in J){if(Object.is(J[_],I)){A[_]=I;continue}}if(G&&G.length&&!G.includes(I))continue;if(Y&&Y.length&&Y.includes(I))continue;A[_]=I}return A};if(bW($))return $.map((V)=>tQ(V)?W(V):V).filter((V)=>{if(tQ(V))return Object.keys(V).length>0;return!0});if(tQ($))return W($);return $}m0();class G0{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 Q=Z[0],X=Z[Z.length-1];if(Q==="`"&&X==="`")return!0;if(Q==='"'&&X==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(G0.startsWithQuote($)&&!G0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!G0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(G0.isQuotedIdentPaired($))return;if(!G0.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[Q,X]of Object.entries($))if(X===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${Q})`)}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 Q=$[0];if(!Q||typeof Q!=="object"||Array.isArray(Q))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let X=Object.keys(Q);if(X.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let G=new Set(X);for(let Y=0;Y<$.length;Y++){let J=$[Y];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: ${Y})`);let W=Object.keys(J);if(W.length!==X.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${Y})`);for(let V of W)if(!G.has(V))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${Y}, extraField: ${V})`);for(let V of X){if(!(V in J))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${Y}, field: ${V})`);G0.assertNoUndefinedParam(J[V],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${Y}, field: ${V})`)}}return X}}class h{static clearDeep($,Z){let Q=Array.isArray(Z?.arrayObjectKeys)?Z.arrayObjectKeys:["$or","$and"],X=new Set;for(let W of Q)X.add(W);let G=typeof Z?.depth==="number"&&Number.isFinite(Z.depth)?Math.floor(Z.depth):0,Y=G<0?0:G,J=(W,V)=>{if(!W||typeof W!=="object")return W;if(Array.isArray(W))return W;let A=V===0||V>1,F=V===0?0:V-1,_={};for(let[I,P]of Object.entries(W)){if(P===void 0||P===null)continue;if(X.has(I)){if(!Array.isArray(P))continue;let C=V,w=[];for(let N of P){if(!N||typeof N!=="object"||Array.isArray(N))continue;let T=J(N,C);if(!T||typeof T!=="object"||Array.isArray(T))continue;if(Object.keys(T).length===0)continue;w.push(T)}if(w.length>0)_[I]=w;continue}if(typeof P==="object"&&!Array.isArray(P)){if(!A){_[I]=P;continue}let C=J(P,F);if(!C||typeof C!=="object"||Array.isArray(C))continue;if(Object.keys(C).length===0)continue;_[I]=C;continue}_[I]=P}return _};return J($,Y)}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 Q=Z.split(/\s+/).filter((W)=>W.length>0);if(Q.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(Q.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 X=Q[0];if(typeof X!=="string"||X.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let G=null;if(Q.length===2){let W=Q[1];if(typeof W!=="string"||W.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);G=W}let Y=X.split(".");if(Y.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(Y.length===2){let W=Y[0],V=Y[1];if(typeof W!=="string"||W.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:W,table:V,alias:G}}let J=Y[0];if(typeof J!=="string"||J.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:J,alias:G}}static normalizeTableRef($){let Z=h.parseTableRef($),Q=Z.schema?p(Z.schema):null,X=p(Z.table),G=Q?`${Q}.${X}`:X;if(Z.alias)G=`${G} ${Z.alias}`;return G}static getJoinMainQualifier($){let Z=h.parseTableRef($);if(Z.alias)return Z.alias;return p(Z.table)}static async fieldsToSnake($,Z,Q){if(!Z||!Array.isArray(Z))return["*"];let X=h.validateAndClassifyFields(Z);if(X.type==="all")return["*"];if(X.type==="include")return X.fields.map((G)=>{return h.processJoinField(G)});if(X.type==="exclude"){let G=await Q($),Y=X.fields.map((W)=>p(W)),J=G.filter((W)=>!Y.includes(W));if(J.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${Y.join(", ")}`);return J}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((X)=>X==="*"))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((X)=>!X||typeof X!=="string"||X.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let X of $){let G=X.startsWith("!")?X.substring(1):X;G0.assertNoExprField(G)}let Z=$.filter((X)=>!X.startsWith("!")),Q=$.filter((X)=>X.startsWith("!"));if(Z.length>0&&Q.length===0)return{type:"include",fields:Z};if(Q.length>0&&Z.length===0)return{type:"exclude",fields:Q.map((G)=>G.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
|
|
20
20
|
1. \u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\uFF08\u67E5\u8BE2\u6240\u6709\uFF09
|
|
21
21
|
2. \u5168\u90E8\u6307\u5B9A\u5B57\u6BB5 ["id", "name"]
|
|
22
|
-
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 Q=Z.split("#");if(Q.length!==2)return Z;let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")return Z;return`${c(X.trim())}#${G.trim()}`})}static processJoinField($){if(X0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),Q=Z[0],X=Z[1];if(typeof Q!=="string"||typeof X!=="string")return $;return`${y.processJoinField(Q.trim())} AS ${X.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((G)=>G.trim()===""))return $;let Q=Z[Z.length-1],X=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof X!=="string")return c($);return`${X.trim()}.${c(Q)}`}return c($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(X0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),Q=$.substring(0,Z),X=$.substring(Z);if(Q.includes(".")){let G=Q.split(".");if(G.length<2)return`${c(Q)}${X}`;if(G.some((U)=>U.trim()===""))return`${c(Q)}${X}`;let Y=G[G.length-1],J=G.slice(0,G.length-1).join(".");if(typeof Y!=="string"||typeof J!=="string")return`${c(Q)}${X}`;return`${J.trim()}.${c(Y)}${X}`}return`${c(Q)}${X}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((G)=>G.trim()===""))return c($);let Q=Z[Z.length-1],X=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof X!=="string")return c($);return`${X.trim()}.${c(Q)}`}return c($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((Q)=>y.processJoinWhere(Q));let Z={};for(let[Q,X]of Object.entries($)){let G=y.processJoinWhereKey(Q);if(Q==="$or"||Q==="$and")Z[G]=Array.isArray(X)?X.map((Y)=>y.processJoinWhere(Y)):[];else if(typeof X==="object"&&X!==null&&!Array.isArray(X))Z[G]=y.processJoinWhere(X);else Z[G]=X}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let Q=Z.split("#");if(Q.length!==2)return Z;let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")return Z;return`${y.processJoinField(X.trim())}#${G.trim()}`})}static addDefaultStateFilter($={},Z,Q=!1){if(Object.keys($).some((Y)=>Y.startsWith("state")||Y.includes(".state")))return $;if(Q&&Z){let Y={};for(let[J,U]of Object.entries($))Y[J]=U;return Y[`${Z}.state$gt`]=0,Y}let G={};for(let[Y,J]of Object.entries($))G[Y]=J;return G.state$gt=0,G}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((Q)=>y.whereKeysToSnake(Q));let Z={};for(let[Q,X]of Object.entries($)){if(Q==="$or"||Q==="$and"){Z[Q]=Array.isArray(X)?X.map((Y)=>y.whereKeysToSnake(Y)):[];continue}if(X0.assertNoExprField(Q),Q.includes("$")){let Y=Q.lastIndexOf("$"),J=Q.substring(0,Y),U=Q.substring(Y),V=c(J)+U;Z[V]=X;continue}let G=c(Q);if(typeof X==="object"&&X!==null&&!Array.isArray(X))Z[G]=y.whereKeysToSnake(X);else Z[G]=X}return Z}static serializeArrayFields($){let Z={};for(let[Q,X]of Object.entries($)){if(X===null||X===void 0){Z[Q]=X;continue}if(Array.isArray(X)){Z[Q]=JSON.stringify(X);continue}Z[Q]=X}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[Q,X]of Object.entries($))Z[Q]=X;for(let[Q,X]of Object.entries(Z)){if(typeof X!=="string")continue;if(X.startsWith("[")&&X.endsWith("]"))try{let G=JSON.parse(X);if(Array.isArray(G))Z[Q]=G}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let Q=CY($,{excludeValues:Z}),X=rX(Q);return y.serializeArrayFields(X)}static stripSystemFieldsForWrite($,Z){let Q={};for(let[X,G]of Object.entries($)){if(X==="id")continue;if(X==="created_at")continue;if(X==="updated_at")continue;if(X==="deleted_at")continue;if(!Z.allowState&&X==="state")continue;Q[X]=G}return Q}static buildInsertRow($){let Z=y.cleanAndSnakeAndSerializeWriteData($.data),Q=y.stripSystemFieldsForWrite(Z,{allowState:!1}),X={};for(let[G,Y]of Object.entries(Q))X[G]=Y;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)})`);X.id=$.id}return X.created_at=$.now,X.updated_at=$.now,X.state=1,X}static buildUpdateRow($){let Z=y.cleanAndSnakeAndSerializeWriteData($.data),Q=y.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),X={};for(let[G,Y]of Object.entries(Q))X[G]=Y;return X.updated_at=$.now,X}static buildPartialUpdateData($){let Z=y.cleanAndSnakeAndSerializeWriteData($.data);return y.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 n${_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 Q=Z.trim();if(!Q)throw Error(p.IDENT_EMPTY);return`\`${Q.replace(/`/g,"``")}\``}}_isQuotedIdent($){return X0.isQuotedIdentPaired($)}_startsWithQuote($){return X0.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(),X0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{X0.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 Q=Z[0],X=Z[1];if(typeof Q!=="string"||typeof X!=="string")throw Error(p.FIELD_INVALID($));let G=Q.trim(),Y=X.trim();return X0.assertSafeAlias(Y),`${this._escapeField(G)} AS ${Y}`}if($.includes("."))return $.split(".").map((Q)=>{if(Q=Q.trim(),Q==="*"||this._isQuotedIdent(Q))return Q;return X0.assertPairedQuotedIdentIfStartsWithQuote(Q,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(Q)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){X0.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 Q=Z[0];if(typeof Q!=="string"||Q.trim()==="")throw Error(p.FROM_EMPTY);let X=Q.trim(),G=Z.length===2?Z[1]:null,Y=typeof G==="string"?G.trim():null,J=X.split(".");if(J.length>2)throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let U="";if(J.length===2){let V=J[0],A=J[1];if(typeof V!=="string"||typeof A!=="string")throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let M=V.trim(),_=A.trim(),R=this._isQuotedIdent(M)?M:(()=>{if(this._startsWithQuote(M)&&!this._isQuotedIdent(M))throw Error(p.SCHEMA_QUOTE_NOT_PAIRED(M));return this._validateIdentifierPart(M,"schema"),this._quoteIdent(M)})(),C=this._isQuotedIdent(_)?_:(()=>{if(this._startsWithQuote(_)&&!this._isQuotedIdent(_))throw Error(p.TABLE_QUOTE_NOT_PAIRED(_));return this._validateIdentifierPart(_,"table"),this._quoteIdent(_)})();U=`${R}.${C}`}else{let V=J[0];if(typeof V!=="string")throw Error(p.FROM_EMPTY);let A=V.trim();if(this._isQuotedIdent(A))U=A;else{if(this._startsWithQuote(A)&&!this._isQuotedIdent(A))throw Error(p.TABLE_QUOTE_NOT_PAIRED(A));this._validateIdentifierPart(A,"table"),U=this._quoteIdent(A)}}if(Y)return this._validateIdentifierPart(Y,"alias"),`${U} ${Y}`;return U}_validateParam($){X0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,Q){let X=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(Q),this._where.push(`${X} != ?`),this._params.push(Q);break;case"$in":if(!Array.isArray(Q))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(Q.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 G=Q.map(()=>"?").join(",");this._where.push(`${X} IN (${G})`),this._params.push(...Q);break;case"$nin":case"$notIn":if(!Array.isArray(Q))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(Q.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 Y=Q.map(()=>"?").join(",");this._where.push(`${X} NOT IN (${Y})`),this._params.push(...Q);break;case"$like":this._validateParam(Q),this._where.push(`${X} LIKE ?`),this._params.push(Q);break;case"$notLike":this._validateParam(Q),this._where.push(`${X} NOT LIKE ?`),this._params.push(Q);break;case"$gt":this._validateParam(Q),this._where.push(`${X} > ?`),this._params.push(Q);break;case"$gte":this._validateParam(Q),this._where.push(`${X} >= ?`),this._params.push(Q);break;case"$lt":this._validateParam(Q),this._where.push(`${X} < ?`),this._params.push(Q);break;case"$lte":this._validateParam(Q),this._where.push(`${X} <= ?`),this._params.push(Q);break;case"$between":if(Array.isArray(Q)&&Q.length===2)this._validateParam(Q[0]),this._validateParam(Q[1]),this._where.push(`${X} BETWEEN ? AND ?`),this._params.push(Q[0],Q[1]);break;case"$notBetween":if(Array.isArray(Q)&&Q.length===2)this._validateParam(Q[0]),this._validateParam(Q[1]),this._where.push(`${X} NOT BETWEEN ? AND ?`),this._params.push(Q[0],Q[1]);break;case"$null":if(Q===!0)this._where.push(`${X} IS NULL`);break;case"$notNull":if(Q===!0)this._where.push(`${X} IS NOT NULL`);break;default:this._validateParam(Q),this._where.push(`${X} = ?`),this._params.push(Q)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,Q])=>{if(Q===void 0)return;if(Z==="$and"){if(Array.isArray(Q))Q.forEach((X)=>{if(X&&typeof X==="object"&&!Array.isArray(X))this._processWhereConditions(X)})}else if(Z==="$or"){if(Array.isArray(Q)){let X=[],G=[];if(Q.forEach((Y)=>{if(!Y||typeof Y!=="object"||Array.isArray(Y))return;let J=new n$({quoteIdent:this._quoteIdent});if(J._processWhereConditions(Y),J._where.length>0)X.push(`(${J._where.join(" AND ")})`),G.push(...J._params)}),X.length>0)this._where.push(`(${X.join(" OR ")})`),this._params.push(...G)}}else if(Z.includes("$")){let X=Z.lastIndexOf("$"),G=Z.substring(0,X),Y="$"+Z.substring(X+1);this._applyOperator(G,Y,Q)}else if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q))for(let[X,G]of Object.entries(Q))this._applyOperator(Z,X,G);else{this._validateParam(Q);let X=this._escapeField(Z);this._where.push(`${X} = ?`),this._params.push(Q)}})}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 Q=this._escapeField($);return this._where.push(`${Q} = ?`),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 Q=this._escapeTable($);return this._joins.push(`LEFT JOIN ${Q} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let Q=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${Q} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let Q=this._escapeTable($);return this._joins.push(`INNER JOIN ${Q} 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 Q=Z.split("#");if(Q.length!==2)throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let Y=X.trim(),J=G.trim().toUpperCase();if(!Y)throw Error(p.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(J))throw Error(p.ORDER_BY_DIR_INVALID(J));let U=this._escapeField(Y);this._orderBy.push(`${U} ${J}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((Q)=>typeof Q==="string").map((Q)=>this._escapeField(Q));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 Q=this._escapeTable($);if(Array.isArray(Z)){let X=X0.assertBatchInsertRowsConsistent(Z,{table:$}),G=X.map((A)=>this._escapeField(A)),Y=X.map(()=>"?").join(", "),J=Z.map(()=>`(${Y})`).join(", "),U=`INSERT INTO ${Q} (${G.join(", ")}) VALUES ${J}`,V=[];for(let A=0;A<Z.length;A++){let M=Z[A];for(let _ of X){let R=M[_];this._validateParam(R),V.push(R)}}return{sql:U,params:V}}else{let X=Object.keys(Z);if(X.length===0)throw Error(p.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of X){let A=Z;this._validateParam(A[V])}let G=X.map((V)=>this._escapeField(V)),Y=X.map(()=>"?").join(", "),J=`INSERT INTO ${Q} (${G.join(", ")}) VALUES (${Y})`,U=[];for(let V of X){let A=Z[V];this._validateParam(A),U.push(A)}return{sql:J,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 Q=Object.keys(Z);if(Q.length===0)throw Error(p.UPDATE_NEED_AT_LEAST_ONE_FIELD);let X=this._escapeTable($),G=Q.map((U)=>`${this._escapeField(U)} = ?`),Y=[...Object.values(Z),...this._params],J=`UPDATE ${X} SET ${G.join(", ")}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(p.UPDATE_NEED_WHERE);return{sql:J,params:Y}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(p.DELETE_NEED_TABLE);let Q=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)Q+=" WHERE "+this._where.join(" AND ");else throw Error(p.DELETE_NEED_WHERE);return{sql:Q,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),Q=Z.map(()=>"?").join(","),X=[],G=[],Y=$.quoteIdent($.idField);for(let U of $.fields){let V=[];for(let M of $.rows){if(!(U in M.data))continue;V.push("WHEN ? THEN ?"),G.push(M.id);let _=M.data[U];X0.assertNoUndefinedParam(_,"SQL \u53C2\u6570\u503C"),G.push(_)}if(V.length===0)continue;let A=$.quoteIdent(U);X.push(`${A} = CASE ${Y} ${V.join(" ")} ELSE ${A} END`)}X.push(`${$.quoteIdent($.updatedAtField)} = ?`),G.push($.updatedAtValue);for(let U of Z)G.push(U);let J=`UPDATE ${$.quoteIdent($.table)} SET ${X.join(", ")} WHERE ${Y} IN (${Q})`;if($.stateGtZero&&$.stateField)J+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:J,params:G}}}function s$($){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 cW($){return typeof $.begin==="function"}class SY 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 v${redis;dbName;sql=null;isTransaction=!1;idMode;static convertBigIntFields($,Z){if($===null||$===void 0)return $;let Q=["id","pid","sort"],G=((A)=>{if(!A||A.length===0)return Q;let M=["id","pid","sort"];for(let _ of A){if(typeof _!=="string")continue;let R=_.trim();if(R.length===0)continue;if(!M.includes(R))M.push(R)}return M})(Z),Y=new Set(G),J=BigInt(Number.MAX_SAFE_INTEGER),U=BigInt(Number.MIN_SAFE_INTEGER),V=(A)=>{let M={};for(let[_,R]of Object.entries(A)){let C=R;if(R!==void 0&&R!==null){if(Y.has(_)||_.endsWith("Id")||_.endsWith("_id")||_.endsWith("At")||_.endsWith("_at")){let w=null;if(typeof R==="bigint")w=R;else if(typeof R==="string"){if(/^-?\d+$/.test(R))try{w=BigInt(R)}catch{w=null}}if(w!==null){if(w<=J&&w>=U)C=Number(w)}}}M[_]=C}return M};if(Array.isArray($))return $.map((A)=>V(A));if(typeof $==="object")return V($);return $}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 n$({quoteIdent:s$})}async getTableColumns($){let Z=s$($),X=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!X||X.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let G=[];for(let Y of X){let J=Y.Field;if(typeof J==="string"&&J.length>0)G.push(J)}return G}async prepareQueryOptions($){let Z=y.clearDeep($.where||{});if($.joins&&$.joins.length>0){let G=($.fields||[]).map((U)=>y.processJoinField(U)),Y=y.normalizeTableRef($.table),J=y.getJoinMainQualifier($.table);return{table:Y,tableQualifier:J,fields:G.length>0?G:["*"],where:y.processJoinWhere(Z),joins:$.joins,orderBy:y.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let X=await y.fieldsToSnake(c($.table),$.fields||[],this.getTableColumns.bind(this));return{table:c($.table),tableQualifier:c($.table),fields:X,where:y.whereKeysToSnake(Z),joins:void 0,orderBy:y.orderByToSnake($.orderBy||[]),page:$.page||1,limit:$.limit||10}}applyJoins($,Z){if(!Z||Z.length===0)return;for(let Q of Z){let X=y.normalizeTableRef(Q.table);switch(Q.type||"left"){case"inner":$.innerJoin(X,Q.on);break;case"right":$.rightJoin(X,Q.on);break;case"left":default:$.leftJoin(X,Q.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 Q=Date.now(),X=XY(Z);try{let G;if(X.length>0)G=await this.sql.unsafe($,X);else G=await this.sql.unsafe($);let Y=Date.now()-Q;return{data:G,sql:{sql:$,params:X,duration:Y}}}catch(G){let Y=Date.now()-Q,J=G instanceof Error?G.message:String(G);throw new SY(`SQL\u6267\u884C\u5931\u8D25: ${J}`,{originalError:G,params:X,duration:Y,sqlInfo:{sql:$,params:X,duration:Y}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=c($),Q=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(Q.data?.[0]?.count||0)>0,sql:Q.sql}}async getCount($){let{table:Z,where:Q,joins:X,tableQualifier:G}=await this.prepareQueryOptions($),Y=Array.isArray(X)&&X.length>0,J=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(y.addDefaultStateFilter(Q,G,Y));this.applyJoins(J,X);let{sql:U,params:V}=J.toSelectSql(),A=await this.executeSelect(U,V);return{data:A.data?.[0]?.count||0,sql:A.sql}}async getOne($){let{table:Z,fields:Q,where:X,joins:G,tableQualifier:Y}=await this.prepareQueryOptions($),J=Array.isArray(G)&&G.length>0,U=this.createSqlBuilder().select(Q).from(Z).where(y.addDefaultStateFilter(X,Y,J));this.applyJoins(U,G);let{sql:V,params:A}=U.toSelectSql(),M=await this.executeSelect(V,A),R=M.data?.[0]||null;if(!R)return{data:{},sql:M.sql};let C=IQ(R),S=y.deserializeArrayFields(C);if(!S)return{data:{},sql:M.sql};return{data:v$.convertBigIntFields([S],$.bigint)[0]??S,sql:M.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 Q=y.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),X=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(Q);this.applyJoins(X,Z.joins);let{sql:G,params:Y}=X.toSelectSql(),J=await this.executeSelect(G,Y),U=J.data?.[0]?.total||0;if(U===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:J.sql}};let V=(Z.page-1)*Z.limit,A=this.createSqlBuilder().select(Z.fields).from(Z.table).where(Q).limit(Z.limit).offset(V);if(this.applyJoins(A,Z.joins),Z.orderBy&&Z.orderBy.length>0)A.orderBy(Z.orderBy);let{sql:M,params:_}=A.toSelectSql(),R=await this.executeSelect(M,_),C=R.data||[],w=qQ(C).map((N)=>y.deserializeArrayFields(N)).filter((N)=>N!==null);return{data:{lists:v$.convertBigIntFields(w,$.bigint),total:U,page:Z.page,limit:Z.limit,pages:Math.ceil(U/Z.limit)},sql:{count:J.sql,data:R.sql}}}async getAll($){let X={table:$.table,page:1,limit:10};if($.fields!==void 0)X.fields=$.fields;if($.bigint!==void 0)X.bigint=$.bigint;if($.where!==void 0)X.where=$.where;if($.joins!==void 0)X.joins=$.joins;if($.orderBy!==void 0)X.orderBy=$.orderBy;let G=await this.prepareQueryOptions(X),Y=y.addDefaultStateFilter(G.where,G.tableQualifier,Array.isArray(G.joins)&&G.joins.length>0),J=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(G.table).where(Y);this.applyJoins(J,G.joins);let{sql:U,params:V}=J.toSelectSql(),A=await this.executeSelect(U,V),M=A.data?.[0]?.total||0;if(M===0)return{data:{lists:[],total:0},sql:{count:A.sql}};let _=this.createSqlBuilder().select(G.fields).from(G.table).where(Y).limit(1e4);if(this.applyJoins(_,G.joins),G.orderBy&&G.orderBy.length>0)_.orderBy(G.orderBy);let{sql:R,params:C}=_.toSelectSql(),S=await this.executeSelect(R,C),w=S.data||[];if(w.length>=1000)q.warn({table:$.table,count:w.length,total:M,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(w.length>=1e4)q.warn({table:$.table,limit:1e4,total:M,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${M}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let T=qQ(w).map((v)=>y.deserializeArrayFields(v)).filter((v)=>v!==null);return{data:{lists:v$.convertBigIntFields(T,$.bigint),total:M},sql:{count:A.sql,data:S.sql}}}async insData($){let{table:Z,data:Q}=$,X=c(Z),G=Date.now(),Y;if(this.idMode==="autoId")Y=y.buildInsertRow({idMode:"autoId",data:Q,now:G});else{let S;try{S=await this.redis.genTimeID()}catch(w){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:w})}Y=y.buildInsertRow({idMode:"timeId",data:Q,id:S,now:G})}X0.assertNoUndefinedInRecord(Y,`insData \u63D2\u5165\u6570\u636E (table: ${X})`);let J=this.createSqlBuilder(),{sql:U,params:V}=J.toInsertSql(X,Y),A=await this.executeRun(U,V),M=Y.id,_=typeof M==="number"?M:0,R=w$(A.data?.lastInsertRowid),C=this.idMode==="autoId"?R||0:_||R||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:A.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let Q=1000;if(Z.length>Q)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${Q}`);let X=c($),G=Date.now(),Y=[],J;if(this.idMode==="autoId")J=Z.map((_)=>{return y.buildInsertRow({idMode:"autoId",data:_,now:G})});else{let _=[];for(let R=0;R<Z.length;R++)_.push(await this.redis.genTimeID());Y=_,J=Z.map((R,C)=>{let S=_[C];if(typeof S!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${C}] \u4E0D\u662F number (table: ${X})`);return y.buildInsertRow({idMode:"timeId",data:R,id:S,now:G})})}let U=X0.assertBatchInsertRowsConsistent(J,{table:X}),V=this.createSqlBuilder(),{sql:A,params:M}=V.toInsertSql(X,J);try{let _=await this.executeRun(A,M);if(this.idMode==="autoId"){let R=w$(_.data?.lastInsertRowid);if(R<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let C=[];for(let S=0;S<Z.length;S++)C.push(R+S);return{data:C,sql:_.sql}}return{data:Y,sql:_.sql}}catch(_){throw q.error({err:_,table:$,snakeTable:X,count:Z.length,fields:U,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new D({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:_,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:X,count:Z.length,fields:U}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=c($),X=n$.toDeleteInSql({table:Q,idField:"id",ids:Z,quoteIdent:s$}),G=await this.executeRun(X.sql,X.params);return{data:w$(G.data?.changes),sql:G.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=c($),X=Date.now(),G=[],Y=new Set;for(let M of Z){let _=y.buildPartialUpdateData({data:M.data,allowState:!0});for(let R of Object.keys(_))Y.add(R);G.push({id:M.id,data:_})}let J=Array.from(Y).sort();if(J.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let U=n$.toUpdateCaseByIdSql({table:Q,idField:"id",rows:G,fields:J,quoteIdent:s$,updatedAtField:"updated_at",updatedAtValue:X,stateField:"state",stateGtZero:!0}),V=await this.executeRun(U.sql,U.params);return{data:w$(V.data?.changes),sql:V.sql}}async updData($){let{table:Z,data:Q,where:X}=$,G=y.clearDeep(X),Y=c(Z),J=y.whereKeysToSnake(G),U=y.buildUpdateRow({data:Q,now:Date.now(),allowState:!0}),V=y.addDefaultStateFilter(J,Y,!1),A=this.createSqlBuilder().where(V),{sql:M,params:_}=A.toUpdateSql(Y,U),R=await this.executeRun(M,_);return{data:w$(R.data?.changes),sql:R.sql}}async delData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:Q})}async delForce($){let{table:Z,where:Q}=$,X=c(Z),G=y.clearDeep(Q),Y=y.whereKeysToSnake(G),J=this.createSqlBuilder().where(Y),{sql:U,params:V}=J.toDeleteSql(X),A=await this.executeRun(U,V);return{data:w$(A.data?.changes),sql:A.sql}}async disableData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:2},where:Q})}async enableData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:1},where:Q})}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(!cW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(Q)=>{let X=new v$({redis:this.redis,dbName:this.dbName,sql:Q,idMode:this.idMode});return await $(X)})}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 Q=c(Z),X=y.clearDeep($.where||{}),G=y.whereKeysToSnake(X),Y=y.addDefaultStateFilter(G,Q,!1),J=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(Q).where(Y).limit(1),{sql:U,params:V}=J.toSelectSql(),A=await this.executeSelect(U,V);return{data:(A.data?.[0]?.cnt||0)>0,sql:A.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 Q=typeof $.table==="string"?$.table.trim():"";if(!Q)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(Q.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${Q}\uFF09`);if(Q.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${Q}\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 X={table:$.table};if($.where!==void 0)X.where=$.where;if($.joins!==void 0)X.joins=$.joins;if($.orderBy!==void 0)X.orderBy=$.orderBy;if($.page!==void 0)X.page=$.page;if($.limit!==void 0)X.limit=$.limit;X.fields=[Z];let G=await this.getOne(X),Y=G.data;if(!s(Y))return{data:null,sql:G.sql};if(Object.hasOwn(Y,Z))return{data:Y[Z],sql:G.sql};let J=Z.replace(/_([a-z])/g,(V,A)=>A.toUpperCase());if(J!==Z&&Object.hasOwn(Y,J))return{data:Y[J],sql:G.sql};let U=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(U!==Z&&Object.hasOwn(Y,U))return{data:Y[U],sql:G.sql};return{data:null,sql:G.sql}}async increment($,Z,Q,X=1){let G=c($),Y=c(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(G))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${G}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Y))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof X!=="number"||isNaN(X))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${X})`);let J=y.clearDeep(Q),U=y.whereKeysToSnake(J),V=y.addDefaultStateFilter(U,G,!1),A=this.createSqlBuilder().where(V),{sql:M,params:_}=A.getWhereConditions(),R=s$(G),C=s$(Y),S=M?`UPDATE ${R} SET ${C} = ${C} + ? WHERE ${M}`:`UPDATE ${R} SET ${C} = ${C} + ?`,w=await this.executeRun(S,[X,..._]);return{data:w$(w.data?.changes),sql:w.sql}}async decrement($,Z,Q,X=1){return await this.increment($,Z,Q,-X)}}$0();var pW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,Q=String($.config?.db?.database||"");if(!Q)throw new D({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new D({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let X=F$.getSql(),Y=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new v$({redis:$.redis,dbName:Q,sql:X,idMode:Y})}catch(X){throw q.error({env:Z,err:X,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"db",operation:"init"}})}}},wY=pW;var f$=T1(K1(),1);class EX{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let Q=Z.secret||this.config.secret,X=Z.algorithm||this.config.algorithm||"HS256",G={key:Q,algorithm:X,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)G.iss=Z.issuer;if(Z.audience!==void 0)G.aud=Z.audience;if(Z.subject!==void 0)G.sub=Z.subject;if(Z.jwtId!==void 0)G.jti=Z.jwtId;if(typeof Z.notBefore==="number")G.notBefore=Z.notBefore;return f$.createSigner(G)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let Q=Z.secret||this.config.secret,X=this.config.algorithm||"HS256",G=Z.algorithms?Z.algorithms:[X],Y={key:Q,algorithms:G,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)Y.allowedIss=Z.issuer;if(Z.audience!==void 0)Y.allowedAud=Z.audience;if(Z.subject!==void 0)Y.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")Y.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")Y.ignoreNotBefore=Z.ignoreNotBefore;return f$.createVerifier(Y)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let G=f$.createDecoder({complete:!0})($);return{header:G.header,payload:G.payload,signature:G.signature}}return f$.createDecoder()($)}}var W9={name:"jwt",enable:!0,deps:[],handler:($)=>{return new EX($.config?$.config.auth:void 0)}},z1=W9;$0();var U9={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)q.configure($.config.logger);return q}},R1=U9;$0();$0();class TX{client;prefix;slowThresholdMs=500;constructor($=""){let Z=F$.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,Q,X={}){if(Q<=this.slowThresholdMs)return;q.warn({subsystem:"redis",event:"slow",duration:Q,cmd:$,key:Z,extra:X,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,Q=null){try{let X=JSON.stringify(Z),G=`${this.prefix}${$}`,Y=Date.now();if(Q){let V=await this.client.setex(G,Q,X),A=Date.now()-Y;return this.logSlow("SETEX",G,A,{ttl:Q}),V}let J=await this.client.set(G,X),U=Date.now()-Y;return this.logSlow("SET",G,U),J}catch(X){return q.error({err:X,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.get(Z),G=Date.now()-Q;return this.logSlow("GET",Z,G),X?JSON.parse(X):null}catch(Z){return q.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,Q=Date.now();await this.client.del(Z);let X=Date.now()-Q;this.logSlow("DEL",Z,X)}catch(Z){q.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,Q=Date.now(),X=await this.client.incr(Z);if(X===1)await this.client.expire(Z,1);let G=Date.now()-Q;this.logSlow("INCR",Z,G,{expireSeconds:1});let Y=100+($%900+X-1)%900;return Number(`${$}${Y}`)}async setString($,Z,Q=null){try{let X=`${this.prefix}${$}`,G=Date.now();if(Q){let U=await this.client.setex(X,Q,Z),V=Date.now()-G;return this.logSlow("SETEX",X,V,{ttl:Q}),U}let Y=await this.client.set(X,Z),J=Date.now()-G;return this.logSlow("SET",X,J),Y}catch(X){return q.error({err:X,msg:"Redis setString \u9519\u8BEF"}),null}}async getString($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.get(Z),G=Date.now()-Q;return this.logSlow("GET",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.exists(Z),G=Date.now()-Q;return this.logSlow("EXISTS",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.incr(Z),G=Date.now()-Q;return this.logSlow("INCR",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.incr(Q);if(G===1)await this.client.expire(Q,Z);let Y=Date.now()-X;return this.logSlow("INCR",Q,Y,{expireSeconds:Z}),G}catch(Q){return q.error({err:Q,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.expire(Q,Z),Y=Date.now()-X;return this.logSlow("EXPIRE",Q,Y,{seconds:Z}),G}catch(Q){return q.error({err:Q,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.ttl(Z),G=Date.now()-Q;return this.logSlow("TTL",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((Q)=>this.ttl(Q)))}catch(Z){return q.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.sadd(Q,...Z),Y=Date.now()-X;return this.logSlow("SADD",Q,Y,{membersCount:Z.length}),G}catch(Q){return q.error({err:Q,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.sismember(Q,Z),Y=Date.now()-X;return this.logSlow("SISMEMBER",Q,Y),G}catch(Q){return q.error({err:Q,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.scard(Z),G=Date.now()-Q;return this.logSlow("SCARD",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.smembers(Z),G=Date.now()-Q;return this.logSlow("SMEMBERS",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.sadd(Q.key,Q.members)))).reduce((Q,X)=>Q+X,0)}catch(Z){return q.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 q.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.del(Z),G=Date.now()-Q;return this.logSlow("DEL",Z,G),X}catch(Z){return q.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>{let X=`${this.prefix}${Q}`;return this.client.del(X)}))).reduce((Q,X)=>Q+X,0)}catch(Z){return q.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.setObject(Q.key,Q.value,Q.ttl??null)))).filter((Q)=>Q!==null).length}catch(Z){return q.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((Q)=>this.getObject(Q)))}catch(Z){return q.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 q.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.expire(Q.key,Q.seconds)))).filter((Q)=>Q>0).length}catch(Z){return q.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),Q=Date.now()-$;return this.logSlow("PING","(no-key)",Q),Z}catch($){throw q.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new D({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var V9={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,Q=$.config?.redis?.prefix;try{return F$.getRedis(),new TX(Q)}catch(X){throw q.error({env:Z,err:X,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"redis",operation:"init"}})}}},I1=V9;function O9($,Z={},Q={}){return{code:0,msg:$,data:Z,...Q}}function _9($,Z=null,Q={}){return{code:1,msg:$,data:Z,...Q}}function A9($,Z,Q={}){let{status:X=200,contentType:G,headers:Y={}}=Q,J=G,U;if(typeof Z==="string"){if(U=Z,!J)J=Z.trim().startsWith("<")?"application/xml":"text/plain"}else U=JSON.stringify(Z),J=J||"application/json";let V={...$.corsHeaders,"Content-Type":J,...Y};return new Response(U,{status:X,headers:V})}var M9={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:O9,No:_9,Raw:A9}}},q1=M9;u0();function j1($,Z){let Q=s(Z)?Z:{},X=typeof Q.name==="string"?String(Q.name):"",G=s(Z)?Object.keys(Z):[],Y=Q.deps,J=Array.isArray(Y)?Y.filter((V)=>typeof V==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${X}`,relativePath:X,fileName:X,moduleName:X,addonName:"",fileBaseName:X,fileDir:"(builtin)",name:X,enable:Q.enable,deps:J,handler:Q.handler??null,customKeys:G}}function L1(){let $=[],Z=[R1,I1,wY,LY,q1,BY,z1,PY];for(let Q of Z)$.push(j1("plugin",Q));return $}function B1(){let $=[],Z=[HY,WY,zY,jY,RY];for(let Q of Z)$.push(j1("hook",Q));return $}P$();LZ();u0();import{existsSync as F9}from"fs";function K9($){let Z=$.split("/").filter(Boolean),Q=Z.indexOf("@befly-addon");if(Q<0)return null;let X=Z[Q+1];if(typeof X!=="string"||X.trim()==="")return null;return X}async function z$($,Z,Q,X){if(!F9($))return[];let G=N$($),Y=new Bun.Glob(X),J=[];try{let U=await Y.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let V of U){if(V.endsWith(".d.ts"))continue;let A=N$(V),M=HZ(A).name,_=kQ(G,A),R=HZ(_),C=R.dir?o(R.dir,R.name):R.name;if(M.startsWith("_"))continue;if(C.split("/").some((v)=>v.startsWith("_")))continue;let S=await B$(A,{}),w=j$(M),N="",T="";if(Z==="core")N="",T=M;else if(Z==="app")T=`app_${w}`;else{let v=K9(A);if(!v)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${A}`);N=v,T=`addon_${j$(N)}_${w}`}let E={source:Z,type:Q,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:A,relativePath:C,fileName:M,moduleName:T,addonName:N,fileBaseName:HZ(A).base,fileDir:$,customKeys:s(S)?Object.keys(S):[]};if(Q==="table"){E.content=s(S)?S:{},J.push(E);continue}if(Q==="api")E.auth=!0,E.rawBody=!1,E.method="POST",E.fields={},E.required=[];if(Q==="plugin"||Q==="hook")E.deps=[],E.name="",E.handler=null;if(lX(S,(v,b)=>{E[b]=v}),Q==="api")E.routePrefix=Z==="app"?"/app":`/addon/${N}`,E.path=`/api${E.routePrefix}/${C}`;J.push(E)}}catch(U){let V=Error(`scanFiles failed: source=${Z} type=${Q} dir=${G} pattern=${X}`);throw V.cause=U,V}return J}var P1=async()=>{let $=[],Z=[],Q=[],X=[],G=await JY();X.push(...await z$(o(s0,"tables"),"app","table","*.json"));for(let Y of G)X.push(...await z$(o(Y.rootDir,"tables"),"addon","table","*.json"));Z.push(...L1()),Z.push(...await z$(o(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let Y of G)Z.push(...await z$(o(Y.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));Q.push(...B1()),Q.push(...await z$(o(s0,"hooks"),"app","hook","*.{ts,js}"));for(let Y of G)Q.push(...await z$(o(Y.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await z$(o(s0,"apis"),"app","api","**/*.{ts,js}"));for(let Y of G)$.push(...await z$(o(Y.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:Q,plugins:Z,apis:$,tables:X,addons:G}};class z9{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 new D({kind:"validation",message:`\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`,noLog:!0,meta:{subsystem:"start",operation:"assertStartContextReady"}})}async start($={}){try{let Z=Bun.nanoseconds();this.config=await _G($.NODE_ENV||"development"),await MG(this.config),this.context.config=this.config,this.context.env=$;let{apis:Q,tables:X,plugins:G,hooks:Y,addons:J}=await P1();this.context.addons=J,await AG(Q),await nG(X,this.config),await wG(G),await KG(Y);let U=await CG(J);await F$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await lG(G,this.context),this.assertStartContextReady(),await new k(this.context).run(X),await aG(this.context,Q),await QY(this.context,U);let V=this.config.devEmail,A=this.config.devPassword;if(typeof V==="string"&&V.length>0&&typeof A==="string"&&A.length>0)await $Y(this.context,{devEmail:V,devPassword:A});else q.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await eG(this.context),this.hooks=await oG(Y),this.apis=await sG(Q);let M=iG(this.apis,this.hooks,this.context),_=tG(this.config.cors),R=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",S=Bun.serve({port:R,hostname:C,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(v,b)=>{let f=new URL(v.url);if(f.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(f.pathname.startsWith("/api/"))return M(v,b);return _(v)},error:(v)=>{if(q.error({err:v,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:v.message,stack:v.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),w=GY(Z),N=YY($),T=N.role==="primary"?"\u4E3B\u8FDB\u7A0B":`\u5DE5\u4F5C\u8FDB\u7A0B #${N.instanceId}`,E=N.env==="standalone"?"":` [${N.env}]`;return q.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${T}${E})`),q.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${w}`),q.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${S.url}`),S}catch(Z){let Q=Z instanceof Error?Z.message:String(Z),X="runtime",G=!1,Y=!1,J=!1;if(q$(Z))X=Z.kind,G=Z.logged===!0,Y=Z.noLog===!0,J=Z.multiline===!0;else{let U=Z;if(U&&U.__syncTableLogged===!0)G=!0;if(U&&U.__syncTableNoLog===!0)X="policy";if(U&&U.__coreLogged===!0)G=!0;if(U&&U.__coreNoLog===!0)Y=!0}if(!G&&J){let U=String(this.config?.appName||"\u9879\u76EE"),V=Z instanceof Error&&Z.name?Z.name:"Error";q.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:X,errorMessage:Q},{truncate:!1,console:!1});{let M=String(Q||"").split(`
|
|
23
|
-
`),_=
|
|
22
|
+
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 Q=Z.split("#");if(Q.length!==2)return Z;let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")return Z;return`${p(X.trim())}#${G.trim()}`})}static processJoinField($){if(G0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),Q=Z[0],X=Z[1];if(typeof Q!=="string"||typeof X!=="string")return $;return`${h.processJoinField(Q.trim())} AS ${X.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return p($);if(Z.some((G)=>G.trim()===""))return $;let Q=Z[Z.length-1],X=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof X!=="string")return p($);return`${X.trim()}.${p(Q)}`}return p($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(G0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),Q=$.substring(0,Z),X=$.substring(Z);if(Q.includes(".")){let G=Q.split(".");if(G.length<2)return`${p(Q)}${X}`;if(G.some((W)=>W.trim()===""))return`${p(Q)}${X}`;let Y=G[G.length-1],J=G.slice(0,G.length-1).join(".");if(typeof Y!=="string"||typeof J!=="string")return`${p(Q)}${X}`;return`${J.trim()}.${p(Y)}${X}`}return`${p(Q)}${X}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return p($);if(Z.some((G)=>G.trim()===""))return p($);let Q=Z[Z.length-1],X=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof X!=="string")return p($);return`${X.trim()}.${p(Q)}`}return p($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((Q)=>h.processJoinWhere(Q));let Z={};for(let[Q,X]of Object.entries($)){let G=h.processJoinWhereKey(Q);if(Q==="$or"||Q==="$and")Z[G]=Array.isArray(X)?X.map((Y)=>h.processJoinWhere(Y)):[];else if(typeof X==="object"&&X!==null&&!Array.isArray(X))Z[G]=h.processJoinWhere(X);else Z[G]=X}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let Q=Z.split("#");if(Q.length!==2)return Z;let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")return Z;return`${h.processJoinField(X.trim())}#${G.trim()}`})}static addDefaultStateFilter($={},Z,Q=!1){if(Object.keys($).some((Y)=>Y.startsWith("state")||Y.includes(".state")))return $;if(Q&&Z){let Y={};for(let[J,W]of Object.entries($))Y[J]=W;return Y[`${Z}.state$gt`]=0,Y}let G={};for(let[Y,J]of Object.entries($))G[Y]=J;return G.state$gt=0,G}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((Q)=>h.whereKeysToSnake(Q));let Z={};for(let[Q,X]of Object.entries($)){if(Q==="$or"||Q==="$and"){Z[Q]=Array.isArray(X)?X.map((Y)=>h.whereKeysToSnake(Y)):[];continue}if(G0.assertNoExprField(Q),Q.includes("$")){let Y=Q.lastIndexOf("$"),J=Q.substring(0,Y),W=Q.substring(Y),V=p(J)+W;Z[V]=X;continue}let G=p(Q);if(typeof X==="object"&&X!==null&&!Array.isArray(X))Z[G]=h.whereKeysToSnake(X);else Z[G]=X}return Z}static serializeArrayFields($){let Z={};for(let[Q,X]of Object.entries($)){if(X===null||X===void 0){Z[Q]=X;continue}if(Array.isArray(X)){Z[Q]=JSON.stringify(X);continue}Z[Q]=X}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[Q,X]of Object.entries($))Z[Q]=X;for(let[Q,X]of Object.entries(Z)){if(typeof X!=="string")continue;if(X.startsWith("[")&&X.endsWith("]"))try{let G=JSON.parse(X);if(Array.isArray(G))Z[Q]=G}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let Q=SY($,{excludeValues:Z}),X=rX(Q);return h.serializeArrayFields(X)}static stripSystemFieldsForWrite($,Z){let Q={};for(let[X,G]of Object.entries($)){if(X==="id")continue;if(X==="created_at")continue;if(X==="updated_at")continue;if(X==="deleted_at")continue;if(!Z.allowState&&X==="state")continue;Q[X]=G}return Q}static buildInsertRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),Q=h.stripSystemFieldsForWrite(Z,{allowState:!1}),X={};for(let[G,Y]of Object.entries(Q))X[G]=Y;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)})`);X.id=$.id}return X.created_at=$.now,X.updated_at=$.now,X.state=1,X}static buildUpdateRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),Q=h.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),X={};for(let[G,Y]of Object.entries(Q))X[G]=Y;return X.updated_at=$.now,X}static buildPartialUpdateData($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data);return h.stripSystemFieldsForWrite(Z,{allowState:$.allowState})}}Z0();var u={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 n${_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(u.QUOTE_IDENT_NEED_STRING(Z));let Q=Z.trim();if(!Q)throw Error(u.IDENT_EMPTY);return`\`${Q.replace(/`/g,"``")}\``}}_isQuotedIdent($){return G0.isQuotedIdentPaired($)}_startsWithQuote($){return G0.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(),G0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{G0.assertNoExprField($)}catch{throw Error(u.FIELD_EXPR_NOT_ALLOWED($))}if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i);if(Z.length!==2)throw Error(u.FIELD_INVALID($));let Q=Z[0],X=Z[1];if(typeof Q!=="string"||typeof X!=="string")throw Error(u.FIELD_INVALID($));let G=Q.trim(),Y=X.trim();return G0.assertSafeAlias(Y),`${this._escapeField(G)} AS ${Y}`}if($.includes("."))return $.split(".").map((Q)=>{if(Q=Q.trim(),Q==="*"||this._isQuotedIdent(Q))return Q;return G0.assertPairedQuotedIdentIfStartsWithQuote(Q,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(Q)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){G0.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(u.FROM_EMPTY);if(Z.length>2)throw Error(u.TABLE_REF_TOO_MANY_PARTS($));let Q=Z[0];if(typeof Q!=="string"||Q.trim()==="")throw Error(u.FROM_EMPTY);let X=Q.trim(),G=Z.length===2?Z[1]:null,Y=typeof G==="string"?G.trim():null,J=X.split(".");if(J.length>2)throw Error(u.TABLE_REF_SCHEMA_TOO_DEEP($));let W="";if(J.length===2){let V=J[0],A=J[1];if(typeof V!=="string"||typeof A!=="string")throw Error(u.TABLE_REF_SCHEMA_TOO_DEEP($));let F=V.trim(),_=A.trim(),I=this._isQuotedIdent(F)?F:(()=>{if(this._startsWithQuote(F)&&!this._isQuotedIdent(F))throw Error(u.SCHEMA_QUOTE_NOT_PAIRED(F));return this._validateIdentifierPart(F,"schema"),this._quoteIdent(F)})(),P=this._isQuotedIdent(_)?_:(()=>{if(this._startsWithQuote(_)&&!this._isQuotedIdent(_))throw Error(u.TABLE_QUOTE_NOT_PAIRED(_));return this._validateIdentifierPart(_,"table"),this._quoteIdent(_)})();W=`${I}.${P}`}else{let V=J[0];if(typeof V!=="string")throw Error(u.FROM_EMPTY);let A=V.trim();if(this._isQuotedIdent(A))W=A;else{if(this._startsWithQuote(A)&&!this._isQuotedIdent(A))throw Error(u.TABLE_QUOTE_NOT_PAIRED(A));this._validateIdentifierPart(A,"table"),W=this._quoteIdent(A)}}if(Y)return this._validateIdentifierPart(Y,"alias"),`${W} ${Y}`;return W}_validateParam($){G0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,Q){let X=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(Q),this._where.push(`${X} != ?`),this._params.push(Q);break;case"$in":if(!Array.isArray(Q))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(Q.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 G=Q.map(()=>"?").join(",");this._where.push(`${X} IN (${G})`),this._params.push(...Q);break;case"$nin":case"$notIn":if(!Array.isArray(Q))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(Q.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 Y=Q.map(()=>"?").join(",");this._where.push(`${X} NOT IN (${Y})`),this._params.push(...Q);break;case"$like":this._validateParam(Q),this._where.push(`${X} LIKE ?`),this._params.push(Q);break;case"$notLike":this._validateParam(Q),this._where.push(`${X} NOT LIKE ?`),this._params.push(Q);break;case"$gt":this._validateParam(Q),this._where.push(`${X} > ?`),this._params.push(Q);break;case"$gte":this._validateParam(Q),this._where.push(`${X} >= ?`),this._params.push(Q);break;case"$lt":this._validateParam(Q),this._where.push(`${X} < ?`),this._params.push(Q);break;case"$lte":this._validateParam(Q),this._where.push(`${X} <= ?`),this._params.push(Q);break;case"$between":if(Array.isArray(Q)&&Q.length===2)this._validateParam(Q[0]),this._validateParam(Q[1]),this._where.push(`${X} BETWEEN ? AND ?`),this._params.push(Q[0],Q[1]);break;case"$notBetween":if(Array.isArray(Q)&&Q.length===2)this._validateParam(Q[0]),this._validateParam(Q[1]),this._where.push(`${X} NOT BETWEEN ? AND ?`),this._params.push(Q[0],Q[1]);break;case"$null":if(Q===!0)this._where.push(`${X} IS NULL`);break;case"$notNull":if(Q===!0)this._where.push(`${X} IS NOT NULL`);break;default:this._validateParam(Q),this._where.push(`${X} = ?`),this._params.push(Q)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,Q])=>{if(Q===void 0)return;if(Z==="$and"){if(Array.isArray(Q))Q.forEach((X)=>{if(X&&typeof X==="object"&&!Array.isArray(X))this._processWhereConditions(X)})}else if(Z==="$or"){if(Array.isArray(Q)){let X=[],G=[];if(Q.forEach((Y)=>{if(!Y||typeof Y!=="object"||Array.isArray(Y))return;let J=new n$({quoteIdent:this._quoteIdent});if(J._processWhereConditions(Y),J._where.length>0)X.push(`(${J._where.join(" AND ")})`),G.push(...J._params)}),X.length>0)this._where.push(`(${X.join(" OR ")})`),this._params.push(...G)}}else if(Z.includes("$")){let X=Z.lastIndexOf("$"),G=Z.substring(0,X),Y="$"+Z.substring(X+1);this._applyOperator(G,Y,Q)}else if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q))for(let[X,G]of Object.entries(Q))this._applyOperator(Z,X,G);else{this._validateParam(Q);let X=this._escapeField(Z);this._where.push(`${X} = ?`),this._params.push(Q)}})}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(u.SELECT_FIELDS_INVALID);return this}selectRaw($){if(typeof $!=="string"||!$.trim())throw Error(u.SELECT_RAW_NEED_NON_EMPTY($));return this._select.push($),this}from($){if(typeof $!=="string"||!$.trim())throw Error(u.FROM_NEED_NON_EMPTY($));return this._from=this._escapeTable($.trim()),this}fromRaw($){if(typeof $!=="string"||!$.trim())throw Error(u.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(u.WHERE_VALUE_REQUIRED);this._validateParam(Z);let Q=this._escapeField($);return this._where.push(`${Q} = ?`),this._params.push(Z),this}return this}whereRaw($,Z){if(typeof $!=="string"||!$.trim())throw Error(u.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(u.JOIN_NEED_STRING($,Z));let Q=this._escapeTable($);return this._joins.push(`LEFT JOIN ${Q} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(u.JOIN_NEED_STRING($,Z));let Q=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${Q} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(u.JOIN_NEED_STRING($,Z));let Q=this._escapeTable($);return this._joins.push(`INNER JOIN ${Q} ON ${Z}`),this}orderBy($){if(!Array.isArray($))throw Error(u.ORDER_BY_NEED_ARRAY);return $.forEach((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))throw Error(u.ORDER_BY_ITEM_NEED_HASH(Z));let Q=Z.split("#");if(Q.length!==2)throw Error(u.ORDER_BY_ITEM_NEED_HASH(Z));let X=Q[0],G=Q[1];if(typeof X!=="string"||typeof G!=="string")throw Error(u.ORDER_BY_ITEM_NEED_HASH(Z));let Y=X.trim(),J=G.trim().toUpperCase();if(!Y)throw Error(u.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(J))throw Error(u.ORDER_BY_DIR_INVALID(J));let W=this._escapeField(Y);this._orderBy.push(`${W} ${J}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((Q)=>typeof Q==="string").map((Q)=>this._escapeField(Q));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(u.LIMIT_MUST_NON_NEGATIVE($));if(this._limit=Math.floor($),Z!==void 0&&Z!==null){if(typeof Z!=="number"||Z<0)throw Error(u.OFFSET_MUST_NON_NEGATIVE(Z));this._offset=Math.floor(Z)}return this}offset($){if(typeof $!=="number"||$<0)throw Error(u.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(u.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(u.INSERT_NEED_TABLE($));if(!Z||typeof Z!=="object")throw Error(u.INSERT_NEED_DATA($,Z));let Q=this._escapeTable($);if(Array.isArray(Z)){let X=G0.assertBatchInsertRowsConsistent(Z,{table:$}),G=X.map((A)=>this._escapeField(A)),Y=X.map(()=>"?").join(", "),J=Z.map(()=>`(${Y})`).join(", "),W=`INSERT INTO ${Q} (${G.join(", ")}) VALUES ${J}`,V=[];for(let A=0;A<Z.length;A++){let F=Z[A];for(let _ of X){let I=F[_];this._validateParam(I),V.push(I)}}return{sql:W,params:V}}else{let X=Object.keys(Z);if(X.length===0)throw Error(u.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of X){let A=Z;this._validateParam(A[V])}let G=X.map((V)=>this._escapeField(V)),Y=X.map(()=>"?").join(", "),J=`INSERT INTO ${Q} (${G.join(", ")}) VALUES (${Y})`,W=[];for(let V of X){let A=Z[V];this._validateParam(A),W.push(A)}return{sql:J,params:W}}}toUpdateSql($,Z){if(!$||typeof $!=="string")throw Error(u.UPDATE_NEED_TABLE);if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(u.UPDATE_NEED_OBJECT);let Q=Object.keys(Z);if(Q.length===0)throw Error(u.UPDATE_NEED_AT_LEAST_ONE_FIELD);let X=this._escapeTable($),G=Q.map((W)=>`${this._escapeField(W)} = ?`),Y=[...Object.values(Z),...this._params],J=`UPDATE ${X} SET ${G.join(", ")}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(u.UPDATE_NEED_WHERE);return{sql:J,params:Y}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(u.DELETE_NEED_TABLE);let Q=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)Q+=" WHERE "+this._where.join(" AND ");else throw Error(u.DELETE_NEED_WHERE);return{sql:Q,params:[...this._params]}}toCountSql(){let $="SELECT COUNT(*) as total";if(!this._from)throw Error(u.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(u.TO_DELETE_IN_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(u.TO_DELETE_IN_NEED_ID_FIELD($.idField));if(!Array.isArray($.ids))throw Error(u.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(u.TO_UPDATE_CASE_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(u.TO_UPDATE_CASE_NEED_ID_FIELD($.idField));if(!Array.isArray($.rows))throw Error(u.TO_UPDATE_CASE_NEED_ROWS);if($.rows.length===0)return{sql:"",params:[]};if(!Array.isArray($.fields))throw Error(u.TO_UPDATE_CASE_NEED_FIELDS);if($.fields.length===0)return{sql:"",params:[]};let Z=$.rows.map((W)=>W.id),Q=Z.map(()=>"?").join(","),X=[],G=[],Y=$.quoteIdent($.idField);for(let W of $.fields){let V=[];for(let F of $.rows){if(!(W in F.data))continue;V.push("WHEN ? THEN ?"),G.push(F.id);let _=F.data[W];G0.assertNoUndefinedParam(_,"SQL \u53C2\u6570\u503C"),G.push(_)}if(V.length===0)continue;let A=$.quoteIdent(W);X.push(`${A} = CASE ${Y} ${V.join(" ")} ELSE ${A} END`)}X.push(`${$.quoteIdent($.updatedAtField)} = ?`),G.push($.updatedAtValue);for(let W of Z)G.push(W);let J=`UPDATE ${$.quoteIdent($.table)} SET ${X.join(", ")} WHERE ${Y} IN (${Q})`;if($.stateGtZero&&$.stateField)J+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:J,params:G}}}function s$($){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 cW($){return typeof $.begin==="function"}class CY 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 v${redis;dbName;sql=null;isTransaction=!1;idMode;static convertBigIntFields($,Z){if($===null||$===void 0)return $;let Q=["id","pid","sort"],G=((A)=>{if(!A||A.length===0)return Q;let F=["id","pid","sort"];for(let _ of A){if(typeof _!=="string")continue;let I=_.trim();if(I.length===0)continue;if(!F.includes(I))F.push(I)}return F})(Z),Y=new Set(G),J=BigInt(Number.MAX_SAFE_INTEGER),W=BigInt(Number.MIN_SAFE_INTEGER),V=(A)=>{let F={};for(let[_,I]of Object.entries(A)){let P=I;if(I!==void 0&&I!==null){if(Y.has(_)||_.endsWith("Id")||_.endsWith("_id")||_.endsWith("At")||_.endsWith("_at")){let w=null;if(typeof I==="bigint")w=I;else if(typeof I==="string"){if(/^-?\d+$/.test(I))try{w=BigInt(I)}catch{w=null}}if(w!==null){if(w<=J&&w>=W)P=Number(w)}}}F[_]=P}return F};if(Array.isArray($))return $.map((A)=>V(A));if(typeof $==="object")return V($);return $}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 n$({quoteIdent:s$})}async getTableColumns($){let Z=s$($),X=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!X||X.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let G=[];for(let Y of X){let J=Y.Field;if(typeof J==="string"&&J.length>0)G.push(J)}return G}async prepareQueryOptions($){let Z=h.clearDeep($.where||{});if($.joins&&$.joins.length>0){let G=($.fields||[]).map((W)=>h.processJoinField(W)),Y=h.normalizeTableRef($.table),J=h.getJoinMainQualifier($.table);return{table:Y,tableQualifier:J,fields:G.length>0?G:["*"],where:h.processJoinWhere(Z),joins:$.joins,orderBy:h.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let X=await h.fieldsToSnake(p($.table),$.fields||[],this.getTableColumns.bind(this));return{table:p($.table),tableQualifier:p($.table),fields:X,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 Q of Z){let X=h.normalizeTableRef(Q.table);switch(Q.type||"left"){case"inner":$.innerJoin(X,Q.on);break;case"right":$.rightJoin(X,Q.on);break;case"left":default:$.leftJoin(X,Q.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 Q=Date.now(),X=XY(Z);try{let G;if(X.length>0)G=await this.sql.unsafe($,X);else G=await this.sql.unsafe($);let Y=Date.now()-Q;return{data:G,sql:{sql:$,params:X,duration:Y}}}catch(G){let Y=Date.now()-Q,J=G instanceof Error?G.message:String(G);throw new CY(`SQL\u6267\u884C\u5931\u8D25: ${J}`,{originalError:G,params:X,duration:Y,sqlInfo:{sql:$,params:X,duration:Y}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=p($),Q=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(Q.data?.[0]?.count||0)>0,sql:Q.sql}}async getCount($){let{table:Z,where:Q,joins:X,tableQualifier:G}=await this.prepareQueryOptions($),Y=Array.isArray(X)&&X.length>0,J=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(h.addDefaultStateFilter(Q,G,Y));this.applyJoins(J,X);let{sql:W,params:V}=J.toSelectSql(),A=await this.executeSelect(W,V);return{data:A.data?.[0]?.count||0,sql:A.sql}}async getOne($){let{table:Z,fields:Q,where:X,joins:G,tableQualifier:Y}=await this.prepareQueryOptions($),J=Array.isArray(G)&&G.length>0,W=this.createSqlBuilder().select(Q).from(Z).where(h.addDefaultStateFilter(X,Y,J));this.applyJoins(W,G);let{sql:V,params:A}=W.toSelectSql(),F=await this.executeSelect(V,A),I=F.data?.[0]||null;if(!I)return{data:{},sql:F.sql};let P=IQ(I),C=h.deserializeArrayFields(P);if(!C)return{data:{},sql:F.sql};return{data:v$.convertBigIntFields([C],$.bigint)[0]??C,sql:F.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 Q=h.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),X=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(Q);this.applyJoins(X,Z.joins);let{sql:G,params:Y}=X.toSelectSql(),J=await this.executeSelect(G,Y),W=J.data?.[0]?.total||0;if(W===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:J.sql}};let V=(Z.page-1)*Z.limit,A=this.createSqlBuilder().select(Z.fields).from(Z.table).where(Q).limit(Z.limit).offset(V);if(this.applyJoins(A,Z.joins),Z.orderBy&&Z.orderBy.length>0)A.orderBy(Z.orderBy);let{sql:F,params:_}=A.toSelectSql(),I=await this.executeSelect(F,_),P=I.data||[],w=qQ(P).map((N)=>h.deserializeArrayFields(N)).filter((N)=>N!==null);return{data:{lists:v$.convertBigIntFields(w,$.bigint),total:W,page:Z.page,limit:Z.limit,pages:Math.ceil(W/Z.limit)},sql:{count:J.sql,data:I.sql}}}async getAll($){let X={table:$.table,page:1,limit:10};if($.fields!==void 0)X.fields=$.fields;if($.bigint!==void 0)X.bigint=$.bigint;if($.where!==void 0)X.where=$.where;if($.joins!==void 0)X.joins=$.joins;if($.orderBy!==void 0)X.orderBy=$.orderBy;let G=await this.prepareQueryOptions(X),Y=h.addDefaultStateFilter(G.where,G.tableQualifier,Array.isArray(G.joins)&&G.joins.length>0),J=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(G.table).where(Y);this.applyJoins(J,G.joins);let{sql:W,params:V}=J.toSelectSql(),A=await this.executeSelect(W,V),F=A.data?.[0]?.total||0;if(F===0)return{data:{lists:[],total:0},sql:{count:A.sql}};let _=this.createSqlBuilder().select(G.fields).from(G.table).where(Y).limit(1e4);if(this.applyJoins(_,G.joins),G.orderBy&&G.orderBy.length>0)_.orderBy(G.orderBy);let{sql:I,params:P}=_.toSelectSql(),C=await this.executeSelect(I,P),w=C.data||[];if(w.length>=1000)K.warn({table:$.table,count:w.length,total:F,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(w.length>=1e4)K.warn({table:$.table,limit:1e4,total:F,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${F}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let T=qQ(w).map((v)=>h.deserializeArrayFields(v)).filter((v)=>v!==null);return{data:{lists:v$.convertBigIntFields(T,$.bigint),total:F},sql:{count:A.sql,data:C.sql}}}async insData($){let{table:Z,data:Q}=$,X=p(Z),G=Date.now(),Y;if(this.idMode==="autoId")Y=h.buildInsertRow({idMode:"autoId",data:Q,now:G});else{let C;try{C=await this.redis.genTimeID()}catch(w){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:w})}Y=h.buildInsertRow({idMode:"timeId",data:Q,id:C,now:G})}G0.assertNoUndefinedInRecord(Y,`insData \u63D2\u5165\u6570\u636E (table: ${X})`);let J=this.createSqlBuilder(),{sql:W,params:V}=J.toInsertSql(X,Y),A=await this.executeRun(W,V),F=Y.id,_=typeof F==="number"?F:0,I=w$(A.data?.lastInsertRowid),P=this.idMode==="autoId"?I||0:_||I||0;if(this.idMode==="autoId"&&P<=0)throw Error(`\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${Z})`);return{data:P,sql:A.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let Q=1000;if(Z.length>Q)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${Q}`);let X=p($),G=Date.now(),Y=[],J;if(this.idMode==="autoId")J=Z.map((_)=>{return h.buildInsertRow({idMode:"autoId",data:_,now:G})});else{let _=[];for(let I=0;I<Z.length;I++)_.push(await this.redis.genTimeID());Y=_,J=Z.map((I,P)=>{let C=_[P];if(typeof C!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${P}] \u4E0D\u662F number (table: ${X})`);return h.buildInsertRow({idMode:"timeId",data:I,id:C,now:G})})}let W=G0.assertBatchInsertRowsConsistent(J,{table:X}),V=this.createSqlBuilder(),{sql:A,params:F}=V.toInsertSql(X,J);try{let _=await this.executeRun(A,F);if(this.idMode==="autoId"){let I=w$(_.data?.lastInsertRowid);if(I<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let P=[];for(let C=0;C<Z.length;C++)P.push(I+C);return{data:P,sql:_.sql}}return{data:Y,sql:_.sql}}catch(_){throw K.error({err:_,table:$,snakeTable:X,count:Z.length,fields:W,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new D({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:_,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:X,count:Z.length,fields:W}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=p($),X=n$.toDeleteInSql({table:Q,idField:"id",ids:Z,quoteIdent:s$}),G=await this.executeRun(X.sql,X.params);return{data:w$(G.data?.changes),sql:G.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=p($),X=Date.now(),G=[],Y=new Set;for(let F of Z){let _=h.buildPartialUpdateData({data:F.data,allowState:!0});for(let I of Object.keys(_))Y.add(I);G.push({id:F.id,data:_})}let J=Array.from(Y).sort();if(J.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let W=n$.toUpdateCaseByIdSql({table:Q,idField:"id",rows:G,fields:J,quoteIdent:s$,updatedAtField:"updated_at",updatedAtValue:X,stateField:"state",stateGtZero:!0}),V=await this.executeRun(W.sql,W.params);return{data:w$(V.data?.changes),sql:V.sql}}async updData($){let{table:Z,data:Q,where:X}=$,G=h.clearDeep(X),Y=p(Z),J=h.whereKeysToSnake(G),W=h.buildUpdateRow({data:Q,now:Date.now(),allowState:!0}),V=h.addDefaultStateFilter(J,Y,!1),A=this.createSqlBuilder().where(V),{sql:F,params:_}=A.toUpdateSql(Y,W),I=await this.executeRun(F,_);return{data:w$(I.data?.changes),sql:I.sql}}async delData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:Q})}async delForce($){let{table:Z,where:Q}=$,X=p(Z),G=h.clearDeep(Q),Y=h.whereKeysToSnake(G),J=this.createSqlBuilder().where(Y),{sql:W,params:V}=J.toDeleteSql(X),A=await this.executeRun(W,V);return{data:w$(A.data?.changes),sql:A.sql}}async disableData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:2},where:Q})}async enableData($){let{table:Z,where:Q}=$;return await this.updData({table:Z,data:{state:1},where:Q})}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(!cW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(Q)=>{let X=new v$({redis:this.redis,dbName:this.dbName,sql:Q,idMode:this.idMode});return await $(X)})}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 Q=p(Z),X=h.clearDeep($.where||{}),G=h.whereKeysToSnake(X),Y=h.addDefaultStateFilter(G,Q,!1),J=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(Q).where(Y).limit(1),{sql:W,params:V}=J.toSelectSql(),A=await this.executeSelect(W,V);return{data:(A.data?.[0]?.cnt||0)>0,sql:A.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 Q=typeof $.table==="string"?$.table.trim():"";if(!Q)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(Q.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${Q}\uFF09`);if(Q.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${Q}\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 X={table:$.table};if($.where!==void 0)X.where=$.where;if($.joins!==void 0)X.joins=$.joins;if($.orderBy!==void 0)X.orderBy=$.orderBy;if($.page!==void 0)X.page=$.page;if($.limit!==void 0)X.limit=$.limit;X.fields=[Z];let G=await this.getOne(X),Y=G.data;if(!o(Y))return{data:null,sql:G.sql};if(Object.hasOwn(Y,Z))return{data:Y[Z],sql:G.sql};let J=Z.replace(/_([a-z])/g,(V,A)=>A.toUpperCase());if(J!==Z&&Object.hasOwn(Y,J))return{data:Y[J],sql:G.sql};let W=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(W!==Z&&Object.hasOwn(Y,W))return{data:Y[W],sql:G.sql};return{data:null,sql:G.sql}}async increment($,Z,Q,X=1){let G=p($),Y=p(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(G))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${G}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Y))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof X!=="number"||isNaN(X))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${X})`);let J=h.clearDeep(Q),W=h.whereKeysToSnake(J),V=h.addDefaultStateFilter(W,G,!1),A=this.createSqlBuilder().where(V),{sql:F,params:_}=A.getWhereConditions(),I=s$(G),P=s$(Y),C=F?`UPDATE ${I} SET ${P} = ${P} + ? WHERE ${F}`:`UPDATE ${I} SET ${P} = ${P} + ?`,w=await this.executeRun(C,[X,..._]);return{data:w$(w.data?.changes),sql:w.sql}}async decrement($,Z,Q,X=1){return await this.increment($,Z,Q,-X)}}Z0();var pW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,Q=String($.config?.db?.database||"");if(!Q)throw new D({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new D({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let X=M$.getSql(),Y=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new v$({redis:$.redis,dbName:Q,sql:X,idMode:Y})}catch(X){throw K.error({env:Z,err:X,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"db",operation:"init"}})}}},wY=pW;var f$=T1(z1(),1);class EX{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let Q=Z.secret||this.config.secret,X=Z.algorithm||this.config.algorithm||"HS256",G={key:Q,algorithm:X,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)G.iss=Z.issuer;if(Z.audience!==void 0)G.aud=Z.audience;if(Z.subject!==void 0)G.sub=Z.subject;if(Z.jwtId!==void 0)G.jti=Z.jwtId;if(typeof Z.notBefore==="number")G.notBefore=Z.notBefore;return f$.createSigner(G)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let Q=Z.secret||this.config.secret,X=this.config.algorithm||"HS256",G=Z.algorithms?Z.algorithms:[X],Y={key:Q,algorithms:G,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)Y.allowedIss=Z.issuer;if(Z.audience!==void 0)Y.allowedAud=Z.audience;if(Z.subject!==void 0)Y.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")Y.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")Y.ignoreNotBefore=Z.ignoreNotBefore;return f$.createVerifier(Y)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let G=f$.createDecoder({complete:!0})($);return{header:G.header,payload:G.payload,signature:G.signature}}return f$.createDecoder()($)}}var W9={name:"jwt",enable:!0,deps:[],handler:($)=>{return new EX($.config?$.config.auth:void 0)}},K1=W9;Z0();var U9={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)K.configure($.config.logger);return K}},R1=U9;Z0();Z0();class TX{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,Q,X={}){if(Q<=this.slowThresholdMs)return;K.warn({subsystem:"redis",event:"slow",duration:Q,cmd:$,key:Z,extra:X,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,Q=null){try{let X=JSON.stringify(Z),G=`${this.prefix}${$}`,Y=Date.now();if(Q){let V=await this.client.setex(G,Q,X),A=Date.now()-Y;return this.logSlow("SETEX",G,A,{ttl:Q}),V}let J=await this.client.set(G,X),W=Date.now()-Y;return this.logSlow("SET",G,W),J}catch(X){return K.error({err:X,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.get(Z),G=Date.now()-Q;return this.logSlow("GET",Z,G),X?JSON.parse(X):null}catch(Z){return K.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,Q=Date.now();await this.client.del(Z);let X=Date.now()-Q;this.logSlow("DEL",Z,X)}catch(Z){K.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,Q=Date.now(),X=await this.client.incr(Z);if(X===1)await this.client.expire(Z,1);let G=Date.now()-Q;this.logSlow("INCR",Z,G,{expireSeconds:1});let Y=100+($%900+X-1)%900;return Number(`${$}${Y}`)}async setString($,Z,Q=null){try{let X=`${this.prefix}${$}`,G=Date.now();if(Q){let W=await this.client.setex(X,Q,Z),V=Date.now()-G;return this.logSlow("SETEX",X,V,{ttl:Q}),W}let Y=await this.client.set(X,Z),J=Date.now()-G;return this.logSlow("SET",X,J),Y}catch(X){return K.error({err:X,msg:"Redis setString \u9519\u8BEF"}),null}}async tryAcquireLock($,Z,Q){try{if(!$||typeof $!=="string")throw Error("tryAcquireLock: key \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Z||typeof Z!=="string")throw Error("tryAcquireLock: token \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!(typeof Q==="number"&&Number.isFinite(Q)&&Q>0))throw Error("tryAcquireLock: ttlMs \u5FC5\u987B\u662F\u6B63\u6570");let X=`${this.prefix}${$}`,G=Date.now(),Y=String(Math.floor(Q)),J=await this.client.set(X,Z,"NX","PX",Y),W=Date.now()-G;return this.logSlow("SET NX PX",X,W,{ttlMs:Q}),J==="OK"}catch(X){return K.error({err:X,msg:"Redis tryAcquireLock \u9519\u8BEF"}),!1}}async releaseLock($,Z){try{if(!$||typeof $!=="string")throw Error("releaseLock: key \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Z||typeof Z!=="string")throw Error("releaseLock: token \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let Q=`${this.prefix}${$}`,X=Date.now();if(await this.client.get(Q)!==Z)return!1;let Y=await this.client.del(Q),J=Date.now()-X;return this.logSlow("GET+DEL",Q,J),Y>0}catch(Q){return K.error({err:Q,msg:"Redis releaseLock \u9519\u8BEF"}),!1}}async getString($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.get(Z),G=Date.now()-Q;return this.logSlow("GET",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.exists(Z),G=Date.now()-Q;return this.logSlow("EXISTS",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.incr(Z),G=Date.now()-Q;return this.logSlow("INCR",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.incr(Q);if(G===1)await this.client.expire(Q,Z);let Y=Date.now()-X;return this.logSlow("INCR",Q,Y,{expireSeconds:Z}),G}catch(Q){return K.error({err:Q,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.expire(Q,Z),Y=Date.now()-X;return this.logSlow("EXPIRE",Q,Y,{seconds:Z}),G}catch(Q){return K.error({err:Q,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.ttl(Z),G=Date.now()-Q;return this.logSlow("TTL",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((Q)=>this.ttl(Q)))}catch(Z){return K.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.sadd(Q,...Z),Y=Date.now()-X;return this.logSlow("SADD",Q,Y,{membersCount:Z.length}),G}catch(Q){return K.error({err:Q,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let Q=`${this.prefix}${$}`,X=Date.now(),G=await this.client.sismember(Q,Z),Y=Date.now()-X;return this.logSlow("SISMEMBER",Q,Y),G}catch(Q){return K.error({err:Q,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.scard(Z),G=Date.now()-Q;return this.logSlow("SCARD",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.smembers(Z),G=Date.now()-Q;return this.logSlow("SMEMBERS",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.sadd(Q.key,Q.members)))).reduce((Q,X)=>Q+X,0)}catch(Z){return K.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 K.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.del(Z),G=Date.now()-Q;return this.logSlow("DEL",Z,G),X}catch(Z){return K.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>{let X=`${this.prefix}${Q}`;return this.client.del(X)}))).reduce((Q,X)=>Q+X,0)}catch(Z){return K.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.setObject(Q.key,Q.value,Q.ttl??null)))).filter((Q)=>Q!==null).length}catch(Z){return K.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((Q)=>this.getObject(Q)))}catch(Z){return K.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 K.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((Q)=>this.expire(Q.key,Q.seconds)))).filter((Q)=>Q>0).length}catch(Z){return K.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),Q=Date.now()-$;return this.logSlow("PING","(no-key)",Q),Z}catch($){throw K.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new D({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var V9={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,Q=$.config?.redis?.prefix;try{return M$.getRedis(),new TX(Q)}catch(X){throw K.error({env:Z,err:X,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:X,meta:{subsystem:"redis",operation:"init"}})}}},I1=V9;function O9($,Z={},Q={}){return{code:0,msg:$,data:Z,...Q}}function _9($,Z=null,Q={}){return{code:1,msg:$,data:Z,...Q}}function A9($,Z,Q={}){let{status:X=200,contentType:G,headers:Y={}}=Q,J=G,W;if(typeof Z==="string"){if(W=Z,!J)J=Z.trim().startsWith("<")?"application/xml":"text/plain"}else W=JSON.stringify(Z),J=J||"application/json";let V={...$.corsHeaders,"Content-Type":J,...Y};return new Response(W,{status:X,headers:V})}var F9={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:O9,No:_9,Raw:A9}}},q1=F9;m0();function j1($,Z){let Q=o(Z)?Z:{},X=typeof Q.name==="string"?String(Q.name):"",G=o(Z)?Object.keys(Z):[],Y=Q.deps,J=Array.isArray(Y)?Y.filter((V)=>typeof V==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${X}`,relativePath:X,fileName:X,moduleName:X,addonName:"",fileBaseName:X,fileDir:"(builtin)",name:X,enable:Q.enable,deps:J,handler:Q.handler??null,customKeys:G}}function B1(){let $=[],Z=[R1,I1,wY,BY,q1,LY,K1,PY];for(let Q of Z)$.push(j1("plugin",Q));return $}function L1(){let $=[],Z=[JY,HY,KY,jY,RY];for(let Q of Z)$.push(j1("hook",Q));return $}P$();BZ();m0();import{existsSync as M9}from"fs";function z9($){let Z=$.split("/").filter(Boolean),Q=Z.indexOf("@befly-addon");if(Q<0)return null;let X=Z[Q+1];if(typeof X!=="string"||X.trim()==="")return null;return X}async function K$($,Z,Q,X){if(!M9($))return[];let G=N$($),Y=new Bun.Glob(X),J=[];try{let W=await Y.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let V of W){if(V.endsWith(".d.ts"))continue;let A=N$(V),F=HZ(A).name,_=kQ(G,A),I=HZ(_),P=I.dir?r(I.dir,I.name):I.name;if(F.startsWith("_"))continue;if(P.split("/").some((v)=>v.startsWith("_")))continue;let C=await L$(A,{}),w=j$(F),N="",T="";if(Z==="core")N="",T=F;else if(Z==="app")T=`app_${w}`;else{let v=z9(A);if(!v)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${A}`);N=v,T=`addon_${j$(N)}_${w}`}let E={source:Z,type:Q,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:A,relativePath:P,fileName:F,moduleName:T,addonName:N,fileBaseName:HZ(A).base,fileDir:$,customKeys:o(C)?Object.keys(C):[]};if(Q==="table"){E.content=o(C)?C:{},J.push(E);continue}if(Q==="api")E.auth=!0,E.rawBody=!1,E.method="POST",E.fields={},E.required=[];if(Q==="plugin"||Q==="hook")E.deps=[],E.name="",E.handler=null;if(lX(C,(v,c)=>{E[c]=v}),Q==="api")E.routePrefix=Z==="app"?"/app":`/addon/${N}`,E.path=`/api${E.routePrefix}/${P}`;J.push(E)}}catch(W){let V=Error(`scanFiles failed: source=${Z} type=${Q} dir=${G} pattern=${X}`);throw V.cause=W,V}return J}var P1=async()=>{let $=[],Z=[],Q=[],X=[],G=await YY();X.push(...await K$(r(s0,"tables"),"app","table","*.json"));for(let Y of G)X.push(...await K$(r(Y.rootDir,"tables"),"addon","table","*.json"));Z.push(...B1()),Z.push(...await K$(r(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let Y of G)Z.push(...await K$(r(Y.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));Q.push(...L1()),Q.push(...await K$(r(s0,"hooks"),"app","hook","*.{ts,js}"));for(let Y of G)Q.push(...await K$(r(Y.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await K$(r(s0,"apis"),"app","api","**/*.{ts,js}"));for(let Y of G)$.push(...await K$(r(Y.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:Q,plugins:Z,apis:$,tables:X,addons:G}};class K9{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 new D({kind:"validation",message:`\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`,noLog:!0,meta:{subsystem:"start",operation:"assertStartContextReady"}})}async start($={}){try{let Z=Bun.nanoseconds();this.config=await _G($.NODE_ENV||"development"),await FG(this.config),this.context.config=this.config,this.context.env=$;let{apis:Q,tables:X,plugins:G,hooks:Y,addons:J}=await P1();this.context.addons=J,await AG(Q),await nG(X,this.config),await wG(G),await zG(Y);let W=await SG(J);await M$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await lG(G,this.context),this.assertStartContextReady();let V="sync:lock",A="sync:ready",F=600000,_=120000,I=250,P=`${process.pid}:${Bun.nanoseconds()}`,C=this.context;if(await C.redis.tryAcquireLock(V,P,F)){K.info({key:V,msg:"\u2705 \u5DF2\u83B7\u53D6\u542F\u52A8\u540C\u6B65\u9501\uFF0C\u5C06\u6267\u884C\u81EA\u52A8\u540C\u6B65"}),await C.redis.del(A);try{await new k(C).run(X),await aG(C,Q),await QY(C,W);let y=this.config.devEmail,l=this.config.devPassword;if(typeof y==="string"&&y.length>0&&typeof l==="string"&&l.length>0)await $Y(C,{devEmail:y,devPassword:l});else K.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await eG(C),await C.redis.setString(A,String(Date.now()),3600)}finally{if(!await C.redis.releaseLock(V,P))K.warn({key:V,msg:"\u540C\u6B65\u9501\u672A\u80FD\u4E3B\u52A8\u91CA\u653E\uFF08\u5C06\u4F9D\u8D56 TTL \u81EA\u52A8\u91CA\u653E\uFF09"})}}else{K.info({key:V,msg:"\u542F\u52A8\u540C\u6B65\u9501\u88AB\u5360\u7528\uFF1A\u7B49\u5F85\u540C\u6B65\u5B8C\u6210\u6807\u8BB0"});let y=Date.now();while(!0){let l=await C.redis.getString(A);if(typeof l==="string"&&l.length>0){K.info({key:A,msg:"\u2705 \u68C0\u6D4B\u5230\u540C\u6B65\u5B8C\u6210\u6807\u8BB0\uFF0C\u5C06\u8DF3\u8FC7\u81EA\u52A8\u540C\u6B65"});break}if(Date.now()-y>=_)throw new D({kind:"runtime",message:`\u542F\u52A8\u7B49\u5F85\u540C\u6B65\u5B8C\u6210\u8D85\u65F6\uFF08${_}ms\uFF09\uFF1A\u8BF7\u68C0\u67E5\u662F\u5426\u6709\u5B9E\u4F8B\u5361\u5728\u540C\u6B65\u9636\u6BB5\u6216 Redis \u9501 TTL \u8FC7\u957F`,logged:!0,meta:{subsystem:"start",operation:"waitSyncReady"}});await Bun.sleep(I)}}this.hooks=await oG(Y),this.apis=await sG(Q);let N=iG(this.apis,this.hooks,this.context),T=tG(this.config.cors),E=typeof this.config.appPort==="number"?this.config.appPort:3000,v=typeof this.config.appHost==="string"&&this.config.appHost.length>0?this.config.appHost:"0.0.0.0",c=Bun.serve({port:E,hostname:v,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(y,l)=>{let n=new URL(y.url);if(n.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(n.pathname.startsWith("/api/"))return N(y,l);return T(y)},error:(y)=>{if(K.error({err:y,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:y.message,stack:y.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),g=GY(Z);return K.info(`${this.config.appName} \u542F\u52A8\u6210\u529F!`),K.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${g}`),K.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${c.url}`),c}catch(Z){let Q=Z instanceof Error?Z.message:String(Z),X="runtime",G=!1,Y=!1,J=!1;if(q$(Z))X=Z.kind,G=Z.logged===!0,Y=Z.noLog===!0,J=Z.multiline===!0;else{let W=Z;if(W&&W.__syncTableLogged===!0)G=!0;if(W&&W.__syncTableNoLog===!0)X="policy";if(W&&W.__coreLogged===!0)G=!0;if(W&&W.__coreNoLog===!0)Y=!0}if(!G&&J){let W=String(this.config?.appName||"\u9879\u76EE"),V=Z instanceof Error&&Z.name?Z.name:"Error";K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:X,errorMessage:Q},{truncate:!1,console:!1});{let F=String(Q||"").split(`
|
|
23
|
+
`),_=F.length>0?String(F[0]||""):"",I=[];I.push(`[${W}] \u542F\u52A8\u5931\u8D25: ${V}: ${_}`);for(let P=1;P<F.length;P=P+1)I.push(String(F[P]||""));K.printPlainLines(I,{stream:"stderr"})}}else if(G)K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25\uFF08\u4E0B\u5C42\u5DF2\u8BB0\u5F55\uFF09",errorKind:X,errorMessage:Q},{truncate:!1});else if(Y)K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:X,errorMessage:Q},{truncate:!1});else K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:X,errorMessage:Q,err:Z},{truncate:!1});try{await K.flush()}catch{}try{await K.shutdown()}catch{}if(q$(Z))throw Z.logged=!0,Z;throw new D({kind:X,message:Q,logged:!0,noLog:Y,meta:{subsystem:"start",operation:"start"},cause:Z})}}}export{K9 as Befly};
|