befly 3.16.10 → 3.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -129
- package/befly.js +16413 -0
- package/befly.min.js +72 -0
- package/package.json +19 -29
- package/scripts/syncDb/context.js +99 -0
- package/scripts/syncDb/diff.js +133 -0
- package/scripts/syncDb/index.js +70 -0
- package/scripts/syncDb/query.js +26 -0
- package/scripts/syncDb/report.js +190 -0
- package/scripts/syncDb/transform.js +111 -0
- package/dist/befly.config.d.ts +0 -7
- package/dist/befly.config.js +0 -128
- package/dist/befly.js +0 -17348
- package/dist/befly.min.js +0 -23
- package/dist/checks/checkApi.d.ts +0 -1
- package/dist/checks/checkApi.js +0 -139
- package/dist/checks/checkConfig.d.ts +0 -9
- package/dist/checks/checkConfig.js +0 -255
- package/dist/checks/checkHook.d.ts +0 -1
- package/dist/checks/checkHook.js +0 -132
- package/dist/checks/checkMenu.d.ts +0 -3
- package/dist/checks/checkMenu.js +0 -106
- package/dist/checks/checkPlugin.d.ts +0 -1
- package/dist/checks/checkPlugin.js +0 -132
- package/dist/checks/checkTable.d.ts +0 -7
- package/dist/checks/checkTable.js +0 -431
- package/dist/configs/presetRegexp.d.ts +0 -145
- package/dist/configs/presetRegexp.js +0 -218
- package/dist/hooks/auth.d.ts +0 -3
- package/dist/hooks/auth.js +0 -24
- package/dist/hooks/cors.d.ts +0 -7
- package/dist/hooks/cors.js +0 -36
- package/dist/hooks/parser.d.ts +0 -10
- package/dist/hooks/parser.js +0 -76
- package/dist/hooks/permission.d.ts +0 -11
- package/dist/hooks/permission.js +0 -78
- package/dist/hooks/validator.d.ts +0 -7
- package/dist/hooks/validator.js +0 -52
- package/dist/index.d.ts +0 -28
- package/dist/index.js +0 -316
- package/dist/lib/asyncContext.d.ts +0 -21
- package/dist/lib/asyncContext.js +0 -27
- package/dist/lib/cacheHelper.d.ts +0 -128
- package/dist/lib/cacheHelper.js +0 -477
- package/dist/lib/cacheKeys.d.ts +0 -27
- package/dist/lib/cacheKeys.js +0 -37
- package/dist/lib/cipher.d.ts +0 -153
- package/dist/lib/cipher.js +0 -237
- package/dist/lib/connect.d.ts +0 -95
- package/dist/lib/connect.js +0 -313
- package/dist/lib/dbHelper.d.ts +0 -229
- package/dist/lib/dbHelper.js +0 -1099
- package/dist/lib/dbUtils.d.ts +0 -91
- package/dist/lib/dbUtils.js +0 -544
- package/dist/lib/jwt.d.ts +0 -13
- package/dist/lib/jwt.js +0 -77
- package/dist/lib/logger.d.ts +0 -46
- package/dist/lib/logger.js +0 -731
- package/dist/lib/redisHelper.d.ts +0 -193
- package/dist/lib/redisHelper.js +0 -598
- package/dist/lib/sqlBuilder.d.ts +0 -160
- package/dist/lib/sqlBuilder.js +0 -837
- package/dist/lib/sqlCheck.d.ts +0 -23
- package/dist/lib/sqlCheck.js +0 -119
- package/dist/lib/validator.d.ts +0 -45
- package/dist/lib/validator.js +0 -424
- package/dist/loader/loadApis.d.ts +0 -12
- package/dist/loader/loadApis.js +0 -71
- package/dist/loader/loadHooks.d.ts +0 -7
- package/dist/loader/loadHooks.js +0 -50
- package/dist/loader/loadPlugins.d.ts +0 -8
- package/dist/loader/loadPlugins.js +0 -69
- package/dist/paths.d.ts +0 -93
- package/dist/paths.js +0 -100
- package/dist/plugins/cache.d.ts +0 -10
- package/dist/plugins/cache.js +0 -24
- package/dist/plugins/cipher.d.ts +0 -7
- package/dist/plugins/cipher.js +0 -14
- package/dist/plugins/config.d.ts +0 -3
- package/dist/plugins/config.js +0 -9
- package/dist/plugins/db.d.ts +0 -10
- package/dist/plugins/db.js +0 -48
- package/dist/plugins/jwt.d.ts +0 -6
- package/dist/plugins/jwt.js +0 -13
- package/dist/plugins/logger.d.ts +0 -10
- package/dist/plugins/logger.js +0 -21
- package/dist/plugins/redis.d.ts +0 -10
- package/dist/plugins/redis.js +0 -40
- package/dist/plugins/tool.d.ts +0 -75
- package/dist/plugins/tool.js +0 -105
- package/dist/router/api.d.ts +0 -14
- package/dist/router/api.js +0 -109
- package/dist/router/static.d.ts +0 -9
- package/dist/router/static.js +0 -56
- package/dist/scripts/ensureDist.d.ts +0 -1
- package/dist/scripts/ensureDist.js +0 -296
- package/dist/sync/syncApi.d.ts +0 -3
- package/dist/sync/syncApi.js +0 -163
- package/dist/sync/syncCache.d.ts +0 -2
- package/dist/sync/syncCache.js +0 -14
- package/dist/sync/syncDev.d.ts +0 -6
- package/dist/sync/syncDev.js +0 -166
- package/dist/sync/syncMenu.d.ts +0 -14
- package/dist/sync/syncMenu.js +0 -308
- package/dist/sync/syncTable.d.ts +0 -126
- package/dist/sync/syncTable.js +0 -1129
- package/dist/types/api.d.ts +0 -177
- package/dist/types/api.js +0 -4
- package/dist/types/befly.d.ts +0 -231
- package/dist/types/befly.js +0 -4
- package/dist/types/cache.d.ts +0 -96
- package/dist/types/cache.js +0 -4
- package/dist/types/cipher.d.ts +0 -27
- package/dist/types/cipher.js +0 -7
- package/dist/types/common.d.ts +0 -127
- package/dist/types/common.js +0 -5
- package/dist/types/context.d.ts +0 -39
- package/dist/types/context.js +0 -4
- package/dist/types/coreError.d.ts +0 -31
- package/dist/types/coreError.js +0 -38
- package/dist/types/crypto.d.ts +0 -20
- package/dist/types/crypto.js +0 -4
- package/dist/types/database.d.ts +0 -182
- package/dist/types/database.js +0 -4
- package/dist/types/hook.d.ts +0 -30
- package/dist/types/hook.js +0 -19
- package/dist/types/jwt.d.ts +0 -76
- package/dist/types/jwt.js +0 -4
- package/dist/types/logger.d.ts +0 -95
- package/dist/types/logger.js +0 -6
- package/dist/types/plugin.d.ts +0 -27
- package/dist/types/plugin.js +0 -17
- package/dist/types/redis.d.ts +0 -80
- package/dist/types/redis.js +0 -4
- package/dist/types/roleApisCache.d.ts +0 -21
- package/dist/types/roleApisCache.js +0 -8
- package/dist/types/sync.d.ts +0 -93
- package/dist/types/sync.js +0 -4
- package/dist/types/table.d.ts +0 -34
- package/dist/types/table.js +0 -4
- package/dist/types/validate.d.ts +0 -113
- package/dist/types/validate.js +0 -4
- package/dist/utils/calcPerfTime.d.ts +0 -4
- package/dist/utils/calcPerfTime.js +0 -13
- package/dist/utils/cors.d.ts +0 -8
- package/dist/utils/cors.js +0 -17
- package/dist/utils/dbFieldRules.d.ts +0 -31
- package/dist/utils/dbFieldRules.js +0 -94
- package/dist/utils/fieldClear.d.ts +0 -11
- package/dist/utils/fieldClear.js +0 -57
- package/dist/utils/formatYmdHms.d.ts +0 -1
- package/dist/utils/formatYmdHms.js +0 -20
- package/dist/utils/getClientIp.d.ts +0 -6
- package/dist/utils/getClientIp.js +0 -39
- package/dist/utils/importDefault.d.ts +0 -1
- package/dist/utils/importDefault.js +0 -53
- package/dist/utils/isDirentDirectory.d.ts +0 -3
- package/dist/utils/isDirentDirectory.js +0 -18
- package/dist/utils/loadMenuConfigs.d.ts +0 -11
- package/dist/utils/loadMenuConfigs.js +0 -130
- package/dist/utils/loggerUtils.d.ts +0 -18
- package/dist/utils/loggerUtils.js +0 -171
- package/dist/utils/mergeAndConcat.d.ts +0 -7
- package/dist/utils/mergeAndConcat.js +0 -77
- package/dist/utils/normalizeFieldDefinition.d.ts +0 -18
- package/dist/utils/normalizeFieldDefinition.js +0 -27
- package/dist/utils/processInfo.d.ts +0 -26
- package/dist/utils/processInfo.js +0 -41
- package/dist/utils/response.d.ts +0 -20
- package/dist/utils/response.js +0 -96
- package/dist/utils/scanAddons.d.ts +0 -15
- package/dist/utils/scanAddons.js +0 -35
- package/dist/utils/scanCoreBuiltins.d.ts +0 -3
- package/dist/utils/scanCoreBuiltins.js +0 -72
- package/dist/utils/scanFiles.d.ts +0 -32
- package/dist/utils/scanFiles.js +0 -124
- package/dist/utils/scanSources.d.ts +0 -10
- package/dist/utils/scanSources.js +0 -46
- package/dist/utils/sortModules.d.ts +0 -28
- package/dist/utils/sortModules.js +0 -105
- package/dist/utils/sqlUtil.d.ts +0 -33
- package/dist/utils/sqlUtil.js +0 -146
- package/dist/utils/util.d.ts +0 -172
- package/dist/utils/util.js +0 -517
package/dist/befly.min.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
var T1=Object.create;var{getPrototypeOf:N1,defineProperty:lG,getOwnPropertyNames:D1}=Object;var k1=Object.prototype.hasOwnProperty;var v1=($,Z,Q)=>{Q=$!=null?T1(N1($)):{};let G=Z||!$||!$.__esModule?lG(Q,"default",{value:$,enumerable:!0}):Q;for(let X of D1($))if(!k1.call(G,X))lG(G,X,{get:()=>$[X],enumerable:!0});return G};var t=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var A$=($,Z)=>()=>($&&(Z=$($=0)),Z);var q$=import.meta.require;function zQ($,Z="dateTime"){let Q=$.getFullYear(),G=$.getMonth()+1,X=$.getDate(),Y=$.getHours(),J=$.getMinutes(),W=$.getSeconds(),V=G<10?`0${G}`:String(G),A=X<10?`0${X}`:String(X),M=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`${M}:${_}:${I}`;return`${Q}-${V}-${A} ${M}:${_}:${I}`}function s($){if(typeof $!=="object"||$===null)return!1;let Z=Object.getPrototypeOf($);return Z===Object.prototype||Z===null}function KQ($){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 XZ($){return Array.isArray($)||zZ($)}function FZ($){if(KQ($))return!0;if(Array.isArray($)){for(let Z of $)if(!FZ(Z))return!1;return!0}if(zZ($)){for(let Z of Object.values($)){if(Z===void 0)continue;if(!FZ(Z))return!1}return!0}return!1}function KZ($){return typeof $==="number"&&Number.isFinite($)}function RZ($){return typeof $==="number"&&Number.isFinite($)&&Number.isInteger($)}function iG($){let Z=BigInt(Number.MAX_SAFE_INTEGER),Q=BigInt(Number.MIN_SAFE_INTEGER);if($>Z||$<Q)return null;let G=Number($);if(!Number.isSafeInteger(G))return null;let X=String(G);if(X.includes("e")||X.includes("E"))return null;return G}function X$($){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 RQ($){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 f1($){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 G=Z.slice(Q+1);if(G!==""&&!/^[gimsuy]+$/.test(G))return!1;return!0}function g$($){let Z=String($||"").trim();return f1(Z)||Z.startsWith("@")}function T$($){let Z=String($||"").trim();if(Z.length===0)return!1;return!Z.startsWith("/")&&Z.includes("|")}function IQ($){return String($||"").trim().startsWith("@")}function y$($,Z,Q,G){if(typeof $!=="number")return Z;if(!Number.isFinite($))return Z;let X=Math.floor($);if(X<Q)return Z;if(X>G)return G;return X}function rG($,Z){if(typeof Z!=="function")return;if(!s($))return;let Q=$;for(let G of Object.keys(Q))Z(Q[G],G)}function g1($){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 y1($){if($.length===0)return $;return $.charAt(0).toUpperCase()+$.slice(1)}function B$($){let Z=g1($);if(Z.length===0)return"";let Q=Z[0];if(!Q)return"";let G=Q.toLowerCase(),X=Z.slice(1).map((Y)=>y1(Y.toLowerCase()));return[G].concat(X).join("")}function h1($){return String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim()}function p($){let Z=h1($);if(Z.length===0)return"";return Z.split(/\s+/).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase()).join("_")}function m($,Z){if(!s($))return{};let Q=new Set(Array.isArray(Z)?Z:[]),G={};for(let[X,Y]of Object.entries($)){if(Q.has(X))continue;G[X]=Y}return G}function aG($,Z){let Q={};if(!Array.isArray($)||typeof Z!=="function")return Q;for(let G of $){let X=Z(G);if(typeof X!=="string"||X==="")continue;Q[X]=G}return Q}function eG(){let $=Date.now().toString(36),Z="";while(Z.length<10)Z=Z+Math.random().toString(36).slice(2);return $+Z.slice(0,10)}var qQ=($)=>{if(!$||!s($))return $;let Z={};for(let[Q,G]of Object.entries($)){let X=B$(Q);Z[X]=G}return Z},tG=($)=>{if(!$||!s($))return $;let Z={};for(let[Q,G]of Object.entries($)){let X=p(Q);Z[X]=G}return Z},jQ=($)=>{if(!$||!Array.isArray($))return $;return $.map((Z)=>qQ(Z))};var m0=()=>{};function PQ($){let Z=[];for(let X of $.builtinPatterns){let Y=String(X).trim();if(Y.length>0)Z.push(Y.toLowerCase())}if(Array.isArray($.userPatterns))for(let X of $.userPatterns){let Y=String(X).trim();if(Y.length>0)Z.push(Y.toLowerCase())}let Q=new Set,G=[];for(let X of Z){if(!X.includes("*")){Q.add(X);continue}let Y=X.replace(/\*+/g,"").trim();if(!Y)continue;G.push(Y)}return{exactSet:Q,contains:G}}function SQ($,Z){let Q=String($).toLowerCase();if(Z.exactSet.has(Q))return!0;for(let G of Z.contains)if(Q.includes(G))return!0;return!1}function IZ($,Z){if($.length<=Z)return $;return $.slice(0,Z)}function $X($,Z){let Q={name:$.name||"Error",message:IZ($.message||"",Z.maxStringLen)};if(typeof $.stack==="string")Q.stack=IZ($.stack,Z.maxStringLen);return Q}function b1($,Z,Q){if(typeof $==="string")return $;if($ instanceof Error)try{return JSON.stringify($X($,Z))}catch{return`${$.name||"Error"}: ${$.message||""}`}if($&&typeof $==="object"){if(Q.has($))return"[Circular]"}try{let G=Q;return JSON.stringify($,(Y,J)=>{if(Y&&SQ(Y,Z.sensitiveKeyMatcher))return"[MASKED]";if(J&&typeof J==="object"){if(G.has(J))return"[Circular]";G.add(J)}return J})}catch{try{return String($)}catch{return"[Unserializable]"}}}function BQ($,Z,Q){let G=b1($,Z,Q);return IZ(G,Z.maxStringLen)}function LQ($,Z,Q,G,X){if($===null||$===void 0)return $;if(typeof $==="string")return IZ($,Z.maxStringLen);if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return $;if($ instanceof Error)return $X($,Z);let Y=Array.isArray($),J=s($);if(!Y&&!J)return BQ($,Z,X);if(X.has($))return"[Circular]";if(G>=Z.sanitizeDepth)return BQ($,Z,X);if(Q.nodes>=Z.sanitizeNodes)return BQ($,Z,X);if(X.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]=LQ(_[C],Z,Q,G+1,X);return I}let W=$,V={},A=Object.entries(W),M=A.length>Z.sanitizeObjectKeys?Z.sanitizeObjectKeys:A.length;for(let _=0;_<M;_++){let I=A[_];if(!I)continue;let P=I[0],C=I[1];if(SQ(P,Z.sensitiveKeyMatcher)){V[P]="[MASKED]";continue}V[P]=LQ(C,Z,Q,G+1,X)}return V}function CQ($,Z){let Q=new WeakSet,G={nodes:0},X={};for(let[Y,J]of Object.entries($)){if(SQ(Y,Z.sensitiveKeyMatcher)){X[Y]="[MASKED]";continue}X[Y]=LQ(J,Z,G,0,Q)}return X}var ZX=A$(()=>{m0()});import{AsyncLocalStorage as c1}from"async_hooks";function QX($,Z){return wQ.run($,Z)}function GX(){let $=wQ.getStore();if(!$)return null;return $}function XX($,Z,Q,G){let X=wQ.getStore();if(!X)return;X.userId=$===void 0?null:$,X.roleCode=Z===void 0?null:Z,X.nickname=Q===void 0?null:Q,X.roleType=G===void 0?null:G}var wQ;var qZ=A$(()=>{wQ=new c1});import{createWriteStream as p1,existsSync as u1,mkdirSync as m1}from"fs";import{stat as d1}from"fs/promises";import{hostname as n1}from"os";import{isAbsolute as s1,join as o1,resolve as l1}from"path";function WX($){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 t1($,Z){let Q=[],G=0;while($.length>0){let X=$[0],Y=Buffer.byteLength(X);if(Q.length>0&&G+Y>Z)break;Q.push(X),G=G+Y,$.shift()}return{chunk:Q.join(""),bytes:G}}class TQ{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=t1(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 a1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},Q=new TQ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(G)=>{try{let X=Z();if(!X.write(G))await new Promise((J)=>{X.once("drain",()=>J())});return!0}catch(X){return jZ(`[Logger] stream sink error: ${X?.message||X}`),!1}}});return{enqueue(G){Q.enqueue(G)},async flushNow(){await Q.flushNow()},async shutdown(){await Q.shutdown()}}}class EQ{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 TQ({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((X)=>{let Y=this.stream;if(!Y){X();return}Y.once("drain",()=>X())});return this.streamSizeBytes=this.streamSizeBytes+Q,!0}catch(G){return jZ(`[Logger] file sink flush error (${this.prefix}): ${G?.message||G}`),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=p1($,{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}`:"",G=`${this.prefix}.${$}${Q}.log`;return o1(VX(),G)}async ensureStreamReady($){let Z=zQ(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),G=0;try{let X=await d1(Q);G=typeof X.size==="number"?X.size:0}catch{G=0}if(this.streamDate=Z,this.streamIndex=0,this.streamSizeBytes=G,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 e1(){if(L$)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 UX(){if(L$)return;let $=J$,Z=H$,Q=W$,G=[];if($)G.push({shutdown:()=>$.shutdown()});if(Z)G.push({shutdown:()=>Z.shutdown()});if(Q)G.push({shutdown:()=>Q.shutdown()});for(let X of G)try{await X.shutdown()}catch{}if(J$===$)J$=null;if(H$===Z)H$=null;if(W$===Q)W$=null}function VX(){let $=n0.dir||"./logs";if(s1($))return $;return l1(i1,$)}function $H(){let $=VX();try{if(!u1($))m1($,{recursive:!0})}catch(Z){throw Error(`\u521B\u5EFA logs \u76EE\u5F55\u5931\u8D25: ${$}. ${Z?.message||Z}`)}}function ZH($){UX(),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:PQ({builtinPatterns:HX,userPatterns:n0.excludeFields})}}function QH($){L$=$}function GH($,Z){return{level:$,time:Z,timeFormat:zQ(new Date(Z)),pid:process.pid,hostname:r1}}function XH($,Z){if(Z&&s(Z)){let Q={};Q.level=$.level,Q.time=$.time,Q.timeFormat=$.timeFormat,Q.pid=$.pid,Q.hostname=$.hostname;for(let G of Object.keys(Z)){if(G==="level")continue;if(G==="time")continue;if(G==="timeFormat")continue;if(G==="pid")continue;if(G==="hostname")continue;Q[G]=Z[G]}if(Z.msg!==void 0)Q.msg=Z.msg;else if(Q.msg===void 0)Q.msg="";return`${YX(Q)}
|
|
4
|
-
`}if($.msg===void 0)$.msg="";return`${YX($)}
|
|
5
|
-
`}function YX($){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 YH($){$H();let Z=typeof n0.maxSize==="number"?n0.maxSize:20,Q=Math.floor(Z*1024*1024);if($==="app"){if(!J$)J$=new EQ({prefix:"app",maxFileBytes:Q});if(n0.console===1&&!W$)W$=a1("stdout");return{fileSink:J$,consoleSink:n0.console===1?W$:null}}if(!H$)H$=new EQ({prefix:"error",maxFileBytes:Q});return{fileSink:H$,consoleSink:null}}function JX($,Z,Q,G){if(Z==="debug"&&n0.debug!==1)return;let X=YH($),Y=Date.now(),J=GH(Z,Y),W=WX(G),V=CQ(Q,W),A=XH(J,V);if(X.fileSink.enqueue(A),X.consoleSink){if(!G||G.console!==!1)X.consoleSink.enqueue(A)}}function JH(){let $=GX();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 HH($,Z){let Q={};for(let X of Object.keys($))Q[X]=$[X];let G=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let X of G)if(Q[X]===void 0)Q[X]=Z[X];return Q}function WH($){if(s($))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 UH($){let Z=JH();if(!Z)return $;return HH($,Z)}class OX{write($,Z,Q){if($==="debug"&&n0.debug!==1)return;let G=UH(WH(Z));if(L$){let X=WX(Q),Y=CQ(G,X);if($==="info")L$.info(Y);else if($==="warn")L$.warn(Y);else if($==="error")L$.error(Y);else L$.debug(Y);return}if(JX("app",$,G,Q),$==="error")JX("error","error",G,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 G=(Z&&Z.stream==="stderr"?"stderr":"stdout")==="stderr"?process.stderr:process.stdout;try{if(Array.isArray($)){for(let Y of $)G.write(`${String(Y)}
|
|
6
|
-
`);return}let X=String($).split(`
|
|
7
|
-
`);for(let Y=0;Y<X.length;Y=Y+1)G.write(`${X[Y]}
|
|
8
|
-
`)}catch{}}async flush(){await e1()}configure($){ZH($)}setMock($){QH($)}async shutdown(){await UX()}}var i1,HX,h$,r1,L$=null,J$=null,H$=null,W$=null,n0,K;var Z0=A$(()=>{ZX();m0();qZ();i1=process.cwd(),HX=["*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:PQ({builtinPatterns:HX,userPatterns:[]})};r1=(()=>{try{return n1()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};K=new OX});import{isAbsolute as VH}from"path";import{pathToFileURL as OH}from"url";function _H($){return/^[a-zA-Z]:[\\/]/.test($)}function AH($){if(VH($)||_H($))return OH($).href;return $}async function P$($,Z){try{let X=($.endsWith(".json")?await import(AH($),{with:{type:"json"}}):await import($))?.default;if(X===null||X===void 0)return Z;let Y=RQ(Z),J=RQ(X);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 X}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(qH,(Z)=>Z.toUpperCase())}function SH(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function kQ($,Z){let Q="",G=0,X=-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(X===W-1||Y===1);else if(Y===2){if(Q.length<2||G!==2||Q[Q.length-1]!=="."||Q[Q.length-2]!=="."){if(Q.length>2){let V=Q.lastIndexOf("/");if(V===-1)Q="",G=0;else Q=Q.slice(0,V),G=Q.length-1-Q.lastIndexOf("/");X=W,Y=0;continue}else if(Q.length>0){Q="",G=0,X=W,Y=0;continue}}if(Z)Q+=Q.length>0?"/..":"..",G=2}else{if(Q.length>0)Q+=`/${$.slice(X+1,W)}`;else Q=$.slice(X+1,W);G=W-X-1}X=W,Y=0}else if(J==="."&&Y!==-1)++Y;else Y=-1}return Q}var qH,jH,BH,qX,IX,LH,PH,N$=function($){if($.length===0)return".";$=JZ($);let Z=$.match(jH),Q=c$($),G=$[$.length-1]==="/";if($=kQ($,!Q),$.length===0){if(Q)return"/";return G?"./":"."}if(G)$+="/";if(qX.test($))$+="/";if(Z){if(!Q)return`//./${$}`;return`//${$}`}return Q&&!c$($)?`/${$}`:$},i=function(...$){let Z="";for(let Q of $){if(!Q)continue;if(Z.length>0){let G=Z[Z.length-1]==="/",X=Q[0]==="/";if(G&&X)Z+=Q.slice(1);else Z+=G||X?Q:`/${Q}`}else Z+=Q}return N$(Z)},YZ=function(...$){$=$.map((G)=>JZ(G));let Z="",Q=!1;for(let G=$.length-1;G>=-1&&!Q;G--){let X=G>=0?$[G]:SH();if(!X||X.length===0)continue;Z=`${X}/${Z}`,Q=c$(X)}if(Z=kQ(Z,!Q),Q&&!c$(Z))return`/${Z}`;return Z.length>0?Z:"."},c$=function($){return BH.test($)},jX=function($){if($==="..")return"";let Z=LH.exec(JZ($));return Z&&Z[1]||""},vQ=function($,Z){let Q=YZ($).replace(IX,"$1").split("/"),G=YZ(Z).replace(IX,"$1").split("/");if(G[0][1]===":"&&Q[0][1]===":"&&Q[0]!==G[0])return G.join("/");let X=[...Q];for(let Y of X){if(G[0]!==Y)break;Q.shift(),G.shift()}return[...Q.map(()=>".."),...G].join("/")},LZ=function($){let Z=JZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&qX.test(Z[0]))Z[0]+="/";return Z.join("/")||(c$($)?"/":".")},BX=function($,Z){let Q=JZ($).split("/"),G="";for(let X=Q.length-1;X>=0;X--){let Y=Q[X];if(Y){G=Y;break}}return Z&&G.endsWith(Z)?G.slice(0,-Z.length):G},HZ=function($){let Z=PH.exec($)?.[0]?.replace(/\\/g,"/")||"",Q=BX($),G=jX(Q);return{root:Z,dir:LZ($),base:Q,ext:G,name:Q.slice(0,Q.length-G.length)}};var LX=A$(()=>{qH=/^[A-Za-z]:\//;jH=/^[/\\]{2}/,BH=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,qX=/^[A-Za-z]:$/,IX=/^\/([A-Za-z]:)?$/,LH=/.(\.[^./]+|\.)$/,PH=/^[/\\]|^[a-zA-Z]:[/\\]/});var S$=A$(()=>{LX()});import{statSync as CH}from"fs";var PZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return CH(i($,Z.name)).isDirectory()}catch{return!1}};var xQ=A$(()=>{S$()});import{existsSync as p$}from"fs";import{readdir as wH}from"fs/promises";function EH($){if(!$||typeof $!=="object")return null;let Z=$,Q=Z.title;if(typeof Q!=="string"||!Q)return null;let G=Z.order,X=typeof G==="number"&&Number.isFinite(G)&&Number.isInteger(G)&&G>=1?G:void 0;if(X===void 0)return{title:Q};return{title:Q,order:X}}async function PX($,Z,Q=""){if(!p$($))return[];let G=[],X=await wH($,{withFileTypes:!0});for(let Y of X){if(!PZ($,Y)||Y.name==="components")continue;let J=i($,Y.name),W=i(J,"meta.json"),V=i(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 M=await P$(W,{});if(A=EH(M),!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},E=await PX(J,Z,I);if(E.length>0)C.children=E;G.push(C)}return G.sort((Y,J)=>(Y.sort??999999)-(J.sort??999999)),G}function SX($){let Z=$.split("/").filter((Q)=>Boolean(Q));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function CX($){let Z=[];for(let G of $){let X=i(G.rootDir,"adminViews"),Y=i(G.rootDir,"views","admin"),J=p$(X)?X:p$(Y)?Y:null;if(!J)continue;try{let W=`/${G.source}/${G.name}`,V=await PX(J,W);if(V.length>0)for(let A of V)Z.push(A)}catch(W){K.warn({err:W,addon:G.name,addonSource:G.source,dir:J,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let Q=i(process.cwd(),"menus.json");if(p$(Q)){let G=await P$(Q,[]);if(Array.isArray(G)&&G.length>0)for(let X of G)Z.push(X)}return Z}var fQ=A$(()=>{S$();Z0();BZ();xQ()});var l$=t((f7,vY)=>{var kY={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 G in Q)this[G]=Q[G]}}o$.codes=kY;o$.wrap=function($,Z,Q){if($ instanceof o$)return $;return new o$(Z,Q,{originalError:$})};vY.exports={TokenError:o$,TOKEN_ERROR_CODES:kY}});var eQ=t((g7,xY)=>{var{TokenError:V$}=l$();function sW({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 G=Q.indexOf("."),X=Q.lastIndexOf(".");if(G===-1||G>=X)throw new V$(V$.codes.malformed,"The token is malformed.");let Y=!1;try{let J=JSON.parse(Buffer.from(Q.slice(0,G),"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(G+1,X),"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(X+1),input:Q.slice(0,X)}:W}catch(J){throw V$.wrap(J,V$.codes.malformed,`The token ${Y?"payload":"header"} is not a valid base64url serialized JSON.`)}}xY.exports=function(Z={}){let Q=Z.complete||!1,G=Z.checkTyp;return sW.bind(null,{complete:Q,checkTyp:G})}});var gY=t((y7,fY)=>{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"};fY.exports=O$});var yY=t((oW)=>{oW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";oW.SYMBOL_SUPPORT=typeof Symbol<"u"});var $G=t((b7,bY)=>{var hY=yY(),rW=hY.ARRAY_BUFFER_SUPPORT,tW=hY.SYMBOL_SUPPORT;bY.exports=function(Z,Q){var G,X,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)||rW&&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(tW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){G=Z,Y=0;while(W=G.next(),W.done!==!0)Q(W.value,Y),Y++;return}for(X in Z)if(Z.hasOwnProperty(X))Q(Z[X],X);return}});var ZG=t((Y8)=>{var aW=Math.pow(2,8)-1,eW=Math.pow(2,16)-1,$8=Math.pow(2,32)-1,Z8=Math.pow(2,7)-1,Q8=Math.pow(2,15)-1,G8=Math.pow(2,31)-1;Y8.getPointerArray=function($){var Z=$-1;if(Z<=aW)return Uint8Array;if(Z<=eW)return Uint16Array;if(Z<=$8)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};Y8.getSignedPointerArray=function($){var Z=$-1;if(Z<=Z8)return Int8Array;if(Z<=Q8)return Int16Array;if(Z<=G8)return Int32Array;return Float64Array};Y8.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 X8={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};Y8.getMinimalRepresentation=function($,Z){var Q=null,G=0,X,Y,J,W,V;for(W=0,V=$.length;W<V;W++)if(J=Z?Z($[W]):$[W],Y=Y8.getNumberType(J),X=X8[Y.name],X>G)G=X,Q=Y;return Q};Y8.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};Y8.concat=function(){var $=0,Z,Q,G;for(Z=0,G=arguments.length;Z<G;Z++)$+=arguments[Z].length;var X=new arguments[0].constructor($);for(Z=0,Q=0;Z<G;Z++)X.set(arguments[Z],Q),Q+=arguments[Z].length;return X};Y8.indices=function($){var Z=Y8.getPointerArray($),Q=new Z($);for(var G=0;G<$;G++)Q[G]=G;return Q}});var dY=t((M8)=>{var uY=$G(),mY=ZG();function O8($){return Array.isArray($)||mY.isTypedArray($)}function QG($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function _8($){var Z=QG($),Q=typeof Z==="number"?Array(Z):[],G=0;return uY($,function(X){Q[G++]=X}),Q}function A8($){var Z=QG($),Q=typeof Z==="number"?mY.getPointerArray(Z):Array,G=typeof Z==="number"?Array(Z):[],X=typeof Z==="number"?new Q(Z):[],Y=0;return uY($,function(J){G[Y]=J,X[Y]=Y++}),[G,X]}M8.isArrayLike=O8;M8.guessLength=QG;M8.toArray=_8;M8.toArrayWithIndices=A8});var XG=t((u7,nY)=>{var GG=gY(),I8=$G(),q8=ZG(),j8=dY();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 G=q8.getPointerArray(Q);this.forward=new G(Q),this.backward=new G(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[$],G=this.forward[$];if(this.tail===$)this.tail=Q;else this.backward[G]=Q;return this.forward[Q]=G,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,G=null,X=this.items[$];if(typeof X<"u")return this.splayOnTop(X),Q=this.V[X],this.V[X]=Z,{evicted:!1,key:$,value:Q};if(this.size<this.capacity)X=this.size++;else X=this.tail,this.tail=this.backward[X],Q=this.V[X],G=this.K[X],delete this.items[G];if(this.items[$]=X,this.K[X]=$,this.V[X]=Z,this.forward[X]=this.head,this.backward[this.head]=X,this.head=X,G)return{evicted:!0,key:G,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,G=this.size,X=this.head,Y=this.K,J=this.V,W=this.forward;while(Q<G)$.call(Z,J[X],Y[X],this),X=W[X],Q++};d0.prototype.keys=function(){var $=0,Z=this.size,Q=this.head,G=this.K,X=this.forward;return new GG(function(){if($>=Z)return{done:!0};var Y=G[Q];if($++,$<Z)Q=X[Q];return{done:!1,value:Y}})};d0.prototype.values=function(){var $=0,Z=this.size,Q=this.head,G=this.V,X=this.forward;return new GG(function(){if($>=Z)return{done:!0};var Y=G[Q];if($++,$<Z)Q=X[Q];return{done:!1,value:Y}})};d0.prototype.entries=function(){var $=0,Z=this.size,Q=this.head,G=this.K,X=this.V,Y=this.forward;return new GG(function(){if($>=Z)return{done:!0};var J=G[Q],W=X[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,G){if(arguments.length<2){if(G=j8.guessLength($),typeof G!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)G=Z,Z=null,Q=null;var X=new d0(Z,Q,G);return I8($,function(Y,J){X.set(J,Y)}),X};nY.exports=d0});var JG=t((sY,YG)=>{(function($,Z){function Q(B,H){if(!B)throw Error(H||"Assertion failed")}function G(B,H){B.super_=H;var O=function(){};O.prototype=H.prototype,B.prototype=new O,B.prototype.constructor=B}function X(B,H,O){if(X.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=X;else Z.BN=X;X.BN=X,X.wordSize=26;var Y;try{if(typeof window<"u"&&typeof window.Buffer<"u")Y=window.Buffer;else Y=q$("buffer").Buffer}catch(B){}X.isBN=function(H){if(H instanceof X)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===X.wordSize&&Array.isArray(H.words)},X.max=function(H,O){if(H.cmp(O)>0)return H;return O},X.min=function(H,O){if(H.cmp(O)<0)return H;return O},X.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 z=0;if(H[0]==="-")z++,this.negative=1;if(z<H.length){if(O===16)this._parseHex(H,z,F);else if(this._parseBase(H,O,z),F==="le")this._initArray(this.toArray(),O,F)}},X.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)},X.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 z=0;z<this.length;z++)this.words[z]=0;var j,L,S=0;if(F==="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(F==="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 F=J(B,O);if(O-1>=H)F|=J(B,O-1)<<4;return F}X.prototype._parseHex=function(H,O,F){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(F==="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,F){var z=0,j=Math.min(B.length,O);for(var L=H;L<j;L++){var S=B.charCodeAt(L)-48;if(z*=F,S>=49)z+=S-49+10;else if(S>=17)z+=S-17+10;else z+=S}return z}X.prototype._parseBase=function(H,O,F){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-F,S=L%z,R=Math.min(L,L-S)+F,U=0;for(var q=F;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()},X.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},X.prototype.clone=function(){var H=new X(null);return this.copy(H),H},X.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},X.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},X.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},X.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(X.prototype.toString=function(H,O){H=H||10,O=O|0||1;var F;if(H===16||H==="hex"){F="";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)F=A[6-R.length]+R+F;else F=R+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 U=M[H],q=_[H];F="";var x=this.clone();x.negative=0;while(!x.isZero()){var g=x.modn(q).toString(H);if(x=x.idivn(q),!x.isZero())F=A[U-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")},X.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},X.prototype.toJSON=function(){return this.toString(16)},X.prototype.toBuffer=function(H,O){return Q(typeof Y<"u"),this.toArrayLike(Y,H,O)},X.prototype.toArray=function(H,O){return this.toArrayLike(Array,H,O)},X.prototype.toArrayLike=function(H,O,F){var z=this.byteLength(),j=F||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)X.prototype._countBits=function(H){return 32-Math.clz32(H)};else X.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};X.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},X.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 F=O/26|0,z=O%26;H[O]=(B.words[F]&1<<z)>>>z}return H}X.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},X.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},X.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},X.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},X.prototype.isNeg=function(){return this.negative!==0},X.prototype.neg=function(){return this.clone().ineg()},X.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},X.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()},X.prototype.ior=function(H){return Q((this.negative|H.negative)===0),this.iuor(H)},X.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},X.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},X.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()},X.prototype.iand=function(H){return Q((this.negative|H.negative)===0),this.iuand(H)},X.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},X.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},X.prototype.iuxor=function(H){var O,F;if(this.length>H.length)O=this,F=H;else O=H,F=this;for(var z=0;z<F.length;z++)this.words[z]=O.words[z]^F.words[z];if(this!==O)for(;z<O.length;z++)this.words[z]=O.words[z];return this.length=O.length,this.strip()},X.prototype.ixor=function(H){return Q((this.negative|H.negative)===0),this.iuxor(H)},X.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},X.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},X.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 z=0;z<O;z++)this.words[z]=~this.words[z]&67108863;if(F>0)this.words[z]=~this.words[z]&67108863>>26-F;return this.strip()},X.prototype.notn=function(H){return this.clone().inotn(H)},X.prototype.setn=function(H,O){Q(typeof H==="number"&&H>=0);var F=H/26|0,z=H%26;if(this._expand(F+1),O)this.words[F]=this.words[F]|1<<z;else this.words[F]=this.words[F]&~(1<<z);return this.strip()},X.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,z;if(this.length>H.length)F=this,z=H;else F=H,z=this;var j=0;for(var L=0;L<z.length;L++)O=(F.words[L]|0)+(z.words[L]|0)+j,this.words[L]=O&67108863,j=O>>>26;for(;j!==0&&L<F.length;L++)O=(F.words[L]|0)+j,this.words[L]=O&67108863,j=O>>>26;if(this.length=F.length,j!==0)this.words[this.length]=j,this.length++;else if(F!==this)for(;L<F.length;L++)this.words[L]=F.words[L];return this},X.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)},X.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 z,j;if(F>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()},X.prototype.sub=function(H){return this.clone().isub(H)};function P(B,H,O){O.negative=H.negative^B.negative;var F=B.length+H.length|0;O.length=F,F=F-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<F;U++){var q=R>>>26,x=R&67108863,g=Math.min(U,H.length-1);for(var b=Math.max(0,U-B.length+1);b<=g;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,F){var z=H.words,j=O.words,L=F.words,S=0,R,U,q,x=z[0]|0,g=x&8191,b=x>>>13,d=z[1]|0,a=d&8191,Q0=d>>>13,I$=z[2]|0,G0=I$&8191,J0=I$>>>13,DG=z[3]|0,U0=DG&8191,V0=DG>>>13,kG=z[4]|0,O0=kG&8191,_0=kG>>>13,vG=z[5]|0,A0=vG&8191,M0=vG>>>13,xG=z[6]|0,F0=xG&8191,z0=xG>>>13,fG=z[7]|0,K0=fG&8191,R0=fG>>>13,gG=z[8]|0,I0=gG&8191,q0=gG>>>13,yG=z[9]|0,j0=yG&8191,B0=yG>>>13,hG=j[0]|0,L0=hG&8191,P0=hG>>>13,bG=j[1]|0,S0=bG&8191,C0=bG>>>13,cG=j[2]|0,w0=cG&8191,E0=cG>>>13,pG=j[3]|0,T0=pG&8191,N0=pG>>>13,uG=j[4]|0,D0=uG&8191,k0=uG>>>13,mG=j[5]|0,v0=mG&8191,x0=mG>>>13,dG=j[6]|0,f0=dG&8191,g0=dG>>>13,nG=j[7]|0,y0=nG&8191,h0=nG>>>13,sG=j[8]|0,b0=sG&8191,c0=sG>>>13,oG=j[9]|0,p0=oG&8191,u0=oG>>>13;F.negative=H.negative^O.negative,F.length=19,R=Math.imul(g,L0),U=Math.imul(g,P0),U=U+Math.imul(b,L0)|0,q=Math.imul(b,P0);var tZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(tZ>>>26)|0,tZ&=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(g,S0)|0,U=U+Math.imul(g,C0)|0,U=U+Math.imul(b,S0)|0,q=q+Math.imul(b,C0)|0;var aZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(aZ>>>26)|0,aZ&=67108863,R=Math.imul(G0,L0),U=Math.imul(G0,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(g,w0)|0,U=U+Math.imul(g,E0)|0,U=U+Math.imul(b,w0)|0,q=q+Math.imul(b,E0)|0;var eZ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(eZ>>>26)|0,eZ&=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(G0,S0)|0,U=U+Math.imul(G0,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(g,T0)|0,U=U+Math.imul(g,N0)|0,U=U+Math.imul(b,T0)|0,q=q+Math.imul(b,N0)|0;var $Q=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+($Q>>>26)|0,$Q&=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(G0,w0)|0,U=U+Math.imul(G0,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(g,D0)|0,U=U+Math.imul(g,k0)|0,U=U+Math.imul(b,D0)|0,q=q+Math.imul(b,k0)|0;var ZQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(ZQ>>>26)|0,ZQ&=67108863,R=Math.imul(A0,L0),U=Math.imul(A0,P0),U=U+Math.imul(M0,L0)|0,q=Math.imul(M0,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(G0,T0)|0,U=U+Math.imul(G0,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(g,v0)|0,U=U+Math.imul(g,x0)|0,U=U+Math.imul(b,v0)|0,q=q+Math.imul(b,x0)|0;var QQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(QQ>>>26)|0,QQ&=67108863,R=Math.imul(F0,L0),U=Math.imul(F0,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(M0,S0)|0,q=q+Math.imul(M0,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(G0,D0)|0,U=U+Math.imul(G0,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(g,f0)|0,U=U+Math.imul(g,g0)|0,U=U+Math.imul(b,f0)|0,q=q+Math.imul(b,g0)|0;var GQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(GQ>>>26)|0,GQ&=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(F0,S0)|0,U=U+Math.imul(F0,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(M0,w0)|0,q=q+Math.imul(M0,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(G0,v0)|0,U=U+Math.imul(G0,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(g,y0)|0,U=U+Math.imul(g,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(F0,w0)|0,U=U+Math.imul(F0,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(M0,T0)|0,q=q+Math.imul(M0,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(G0,f0)|0,U=U+Math.imul(G0,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(g,b0)|0,U=U+Math.imul(g,c0)|0,U=U+Math.imul(b,b0)|0,q=q+Math.imul(b,c0)|0;var YQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(YQ>>>26)|0,YQ&=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(F0,T0)|0,U=U+Math.imul(F0,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(M0,D0)|0,q=q+Math.imul(M0,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(G0,y0)|0,U=U+Math.imul(G0,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(g,p0)|0,U=U+Math.imul(g,u0)|0,U=U+Math.imul(b,p0)|0,q=q+Math.imul(b,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,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(F0,D0)|0,U=U+Math.imul(F0,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(M0,v0)|0,q=q+Math.imul(M0,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(G0,b0)|0,U=U+Math.imul(G0,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 HQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(HQ>>>26)|0,HQ&=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(F0,v0)|0,U=U+Math.imul(F0,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(M0,f0)|0,q=q+Math.imul(M0,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(G0,p0)|0,U=U+Math.imul(G0,u0)|0,U=U+Math.imul(J0,p0)|0,q=q+Math.imul(J0,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,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(F0,f0)|0,U=U+Math.imul(F0,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(M0,y0)|0,q=q+Math.imul(M0,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 UQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(UQ>>>26)|0,UQ&=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(F0,y0)|0,U=U+Math.imul(F0,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(M0,b0)|0,q=q+Math.imul(M0,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 VQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(VQ>>>26)|0,VQ&=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(F0,b0)|0,U=U+Math.imul(F0,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(M0,p0)|0,q=q+Math.imul(M0,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,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(F0,p0)|0,U=U+Math.imul(F0,u0)|0,U=U+Math.imul(z0,p0)|0,q=q+Math.imul(z0,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,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 AQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(AQ>>>26)|0,AQ&=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 MQ=(S+R|0)+((U&8191)<<13)|0;S=(q+(U>>>13)|0)+(MQ>>>26)|0,MQ&=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]=tZ,L[1]=aZ,L[2]=eZ,L[3]=$Q,L[4]=ZQ,L[5]=QQ,L[6]=GQ,L[7]=XQ,L[8]=YQ,L[9]=JQ,L[10]=HQ,L[11]=WQ,L[12]=UQ,L[13]=VQ,L[14]=OQ,L[15]=_Q,L[16]=AQ,L[17]=MQ,L[18]=FQ,S!==0)L[19]=S,F.length++;return F};if(!Math.imul)C=P;function E(B,H,O){O.negative=H.negative^B.negative,O.length=B.length+H.length;var F=0,z=0;for(var j=0;j<O.length-1;j++){var L=z;z=0;var S=F&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,g=H.words[U]|0,b=x*g,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,F=L,L=z}if(F!==0)O.words[j]=F;else O.length--;return O.strip()}function N(B,H,O){var F=new T;return F.mulp(B,H,O)}X.prototype.mulTo=function(H,O){var F,z=this.length+H.length;if(this.length===10&&H.length===10)F=C(this,H,O);else if(z<63)F=P(this,H,O);else if(z<1024)F=E(this,H,O);else F=N(this,H,O);return F};function T(B,H){this.x=B,this.y=H}T.prototype.makeRBT=function(H){var O=Array(H),F=X.prototype._countBits(H)-1;for(var z=0;z<H;z++)O[z]=this.revBin(z,F,H);return O},T.prototype.revBin=function(H,O,F){if(H===0||H===F-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,F,z,j,L){for(var S=0;S<L;S++)z[S]=O[H[S]],j[S]=F[H[S]]},T.prototype.transform=function(H,O,F,z,j,L){this.permute(L,H,O,F,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 g=U,b=q;for(var d=0;d<S;d++){var a=F[x+d],Q0=z[x+d],I$=F[x+d+S],G0=z[x+d+S],J0=g*I$-b*G0;if(G0=g*G0+b*I$,I$=J0,F[x+d]=a+I$,z[x+d]=Q0+G0,F[x+d+S]=a-I$,z[x+d+S]=Q0-G0,d!==R)J0=U*g-q*b,b=U*b+q*g,g=J0}}}},T.prototype.guessLen13b=function(H,O){var F=Math.max(O,H)|1,z=F&1,j=0;for(F=F/2|0;F;F=F>>>1)j++;return 1<<j+1+z},T.prototype.conjugate=function(H,O,F){if(F<=1)return;for(var z=0;z<F/2;z++){var j=H[z];H[z]=H[F-z-1],H[F-z-1]=j,j=O[z],O[z]=-O[F-z-1],O[F-z-1]=-j}},T.prototype.normalize13b=function(H,O){var F=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)+F;if(H[z]=j&67108863,j<67108864)F=0;else F=j/67108864|0}return H},T.prototype.convert13b=function(H,O,F,z){var j=0;for(var L=0;L<O;L++)j=j+(H[L]|0),F[2*L]=j&8191,j=j>>>13,F[2*L+1]=j&8191,j=j>>>13;for(L=2*O;L<z;++L)F[L]=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 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),g=Array(z),b=F.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,g,z,j);for(var d=0;d<z;d++){var a=R[d]*x[d]-U[d]*g[d];U[d]=R[d]*g[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),F.negative=H.negative^O.negative,F.length=H.length+O.length,F.strip()},X.prototype.mul=function(H){var O=new X(null);return O.words=Array(this.length+H.length),this.mulTo(H,O)},X.prototype.mulf=function(H){var O=new X(null);return O.words=Array(this.length+H.length),N(this,H,O)},X.prototype.imul=function(H){return this.clone().mulTo(H,this)},X.prototype.imuln=function(H){Q(typeof H==="number"),Q(H<67108864);var O=0;for(var F=0;F<this.length;F++){var z=(this.words[F]|0)*H,j=(z&67108863)+(O&67108863);O>>=26,O+=z/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},X.prototype.muln=function(H){return this.clone().imuln(H)},X.prototype.sqr=function(){return this.mul(this)},X.prototype.isqr=function(){return this.imul(this.clone())},X.prototype.pow=function(H){var O=I(H);if(O.length===0)return new X(1);var F=this;for(var z=0;z<O.length;z++,F=F.sqr())if(O[z]!==0)break;if(++z<O.length)for(var j=F.sqr();z<O.length;z++,j=j.sqr()){if(O[z]===0)continue;F=F.mul(j)}return F},X.prototype.iushln=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,F=(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(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()},X.prototype.ishln=function(H){return Q(this.negative===0),this.iushln(H)},X.prototype.iushrn=function(H,O,F){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=F;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()},X.prototype.ishrn=function(H,O,F){return Q(this.negative===0),this.iushrn(H,O,F)},X.prototype.shln=function(H){return this.clone().ishln(H)},X.prototype.ushln=function(H){return this.clone().iushln(H)},X.prototype.shrn=function(H){return this.clone().ishrn(H)},X.prototype.ushrn=function(H){return this.clone().iushrn(H)},X.prototype.testn=function(H){Q(typeof H==="number"&&H>=0);var O=H%26,F=(H-O)/26,z=1<<O;if(this.length<=F)return!1;var j=this.words[F];return!!(j&z)},X.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 z=67108863^67108863>>>O<<O;this.words[this.length-1]&=z}return this.strip()},X.prototype.maskn=function(H){return this.clone().imaskn(H)},X.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)},X.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},X.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()},X.prototype.addn=function(H){return this.clone().iaddn(H)},X.prototype.subn=function(H){return this.clone().isubn(H)},X.prototype.iabs=function(){return this.negative=0,this},X.prototype.abs=function(){return this.clone().iabs()},X.prototype._ishlnsubmul=function(H,O,F){var z=H.length+F,j;this._expand(z);var L,S=0;for(j=0;j<H.length;j++){L=(this.words[j+F]|0)+S;var R=(H.words[j]|0)*O;L-=R&67108863,S=(L>>26)-(R/67108864|0),this.words[j+F]=L&67108863}for(;j<this.length-F;j++)L=(this.words[j+F]|0)+S,S=L>>26,this.words[j+F]=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()},X.prototype._wordDiv=function(H,O){var F=this.length-H.length,z=this.clone(),j=H,L=j.words[j.length-1]|0,S=this._countBits(L);if(F=26-S,F!==0)j=j.ushln(F),z.iushln(F),L=j.words[j.length-1]|0;var R=z.length-j.length,U;if(O!=="mod"){U=new X(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 g=R-1;g>=0;g--){var b=(z.words[j.length+g]|0)*67108864+(z.words[j.length+g-1]|0);b=Math.min(b/L|0,67108863),z._ishlnsubmul(j,b,g);while(z.negative!==0)if(b--,z.negative=0,z._ishlnsubmul(j,1,g),!z.isZero())z.negative^=1;if(U)U.words[g]=b}if(U)U.strip();if(z.strip(),O!=="div"&&F!==0)z.iushrn(F);return{div:U||null,mod:z}},X.prototype.divmod=function(H,O,F){if(Q(!H.isZero()),this.isZero())return{div:new X(0),mod:new X(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(),F&&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(),F&&j.negative!==0)j.isub(H)}return{div:L.div,mod:j}}if(H.length>this.length||this.cmp(H)<0)return{div:new X(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 X(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new X(this.modn(H.words[0]))}}return this._wordDiv(H,O)},X.prototype.div=function(H){return this.divmod(H,"div",!1).div},X.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},X.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},X.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,z=H.ushrn(1),j=H.andln(1),L=F.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)},X.prototype.modn=function(H){Q(H<=67108863);var O=67108864%H,F=0;for(var z=this.length-1;z>=0;z--)F=(O*F+(this.words[z]|0))%H;return F},X.prototype.idivn=function(H){Q(H<=67108863);var O=0;for(var F=this.length-1;F>=0;F--){var z=(this.words[F]|0)+O*67108864;this.words[F]=z/H|0,O=z%H}return this.strip()},X.prototype.divn=function(H){return this.clone().idivn(H)},X.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 z=new X(1),j=new X(0),L=new X(0),S=new X(1),R=0;while(O.isEven()&&F.isEven())O.iushrn(1),F.iushrn(1),++R;var U=F.clone(),q=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(z.isOdd()||j.isOdd())z.iadd(U),j.isub(q);z.iushrn(1),j.iushrn(1)}}for(var b=0,d=1;(F.words[0]&d)===0&&b<26;++b,d<<=1);if(b>0){F.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(F)>=0)O.isub(F),z.isub(L),j.isub(S);else F.isub(O),L.isub(z),S.isub(j)}return{a:L,b:S,gcd:F.iushln(R)}},X.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 z=new X(1),j=new X(0),L=F.clone();while(O.cmpn(1)>0&&F.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;(F.words[0]&q)===0&&U<26;++U,q<<=1);if(U>0){F.iushrn(U);while(U-- >0){if(j.isOdd())j.iadd(L);j.iushrn(1)}}if(O.cmp(F)>=0)O.isub(F),z.isub(j);else F.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},X.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 z=0;O.isEven()&&F.isEven();z++)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 L=O;O=F,F=L}else if(j===0||F.cmpn(1)===0)break;O.isub(F)}while(!0);return F.iushln(z)},X.prototype.invm=function(H){return this.egcd(H).a.umod(H)},X.prototype.isEven=function(){return(this.words[0]&1)===0},X.prototype.isOdd=function(){return(this.words[0]&1)===1},X.prototype.andln=function(H){return this.words[0]&H},X.prototype.bincn=function(H){Q(typeof H==="number");var O=H%26,F=(H-O)/26,z=1<<O;if(this.length<=F)return this._expand(F+1),this.words[F]|=z,this;var j=z;for(var L=F;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},X.prototype.isZero=function(){return this.length===1&&this.words[0]===0},X.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 z=this.words[0]|0;F=z===H?0:z<H?-1:1}if(this.negative!==0)return-F|0;return F},X.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},X.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 z=this.words[F]|0,j=H.words[F]|0;if(z===j)continue;if(z<j)O=-1;else if(z>j)O=1;break}return O},X.prototype.gtn=function(H){return this.cmpn(H)===1},X.prototype.gt=function(H){return this.cmp(H)===1},X.prototype.gten=function(H){return this.cmpn(H)>=0},X.prototype.gte=function(H){return this.cmp(H)>=0},X.prototype.ltn=function(H){return this.cmpn(H)===-1},X.prototype.lt=function(H){return this.cmp(H)===-1},X.prototype.lten=function(H){return this.cmpn(H)<=0},X.prototype.lte=function(H){return this.cmp(H)<=0},X.prototype.eqn=function(H){return this.cmpn(H)===0},X.prototype.eq=function(H){return this.cmp(H)===0},X.red=function(H){return new n(H)},X.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)},X.prototype.fromRed=function(){return Q(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},X.prototype._forceRed=function(H){return this.red=H,this},X.prototype.forceRed=function(H){return Q(!this.red,"Already a number in reduction context"),this._forceRed(H)},X.prototype.redAdd=function(H){return Q(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},X.prototype.redIAdd=function(H){return Q(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},X.prototype.redSub=function(H){return Q(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},X.prototype.redISub=function(H){return Q(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},X.prototype.redShl=function(H){return Q(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},X.prototype.redMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},X.prototype.redIMul=function(H){return Q(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},X.prototype.redSqr=function(){return Q(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},X.prototype.redISqr=function(){return Q(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},X.prototype.redSqrt=function(){return Q(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},X.prototype.redInvm=function(){return Q(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},X.prototype.redNeg=function(){return Q(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},X.prototype.redPow=function(H){return Q(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var w={k256:null,p224:null,p192:null,p25519:null};function v(B,H){this.name=B,this.p=new X(H,16),this.n=this.p.bitLength(),this.k=new X(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}v.prototype._tmp=function(){var H=new X(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 z=F<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")}G(c,v),c.prototype.split=function(H,O){var F=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&F;for(j=10;j<H.length;j++){var S=H.words[j]|0;H.words[j-10]=(S&F)<<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 F=0;F<H.length;F++){var z=H.words[F]|0;O+=z*977,H.words[F]=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 f(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}G(f,v);function y(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}G(y,v);function l(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}G(l,v),l.prototype.imulK=function(H){var O=0;for(var F=0;F<H.length;F++){var z=(H.words[F]|0)*19+O,j=z&67108863;z>>>=26,H.words[F]=j,O=z}if(O!==0)H.words[H.length++]=O;return H},X._prime=function(H){if(w[H])return w[H];var O;if(H==="k256")O=new c;else if(H==="p224")O=new f;else if(H==="p192")O=new y;else if(H==="p25519")O=new l;else throw Error("Unknown prime "+H);return w[H]=O,O};function n(B){if(typeof B==="string"){var H=X._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 F=H.add(O);if(F.cmp(this.m)>=0)F.isub(this.m);return F._forceRed(this)},n.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},n.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)},n.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},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 F=this.m.add(new X(1)).iushrn(2);return this.pow(H,F)}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 X(1).toRed(this),S=L.redNeg(),R=this.m.subn(1).iushrn(1),U=this.m.bitLength();U=new X(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)),g=this.pow(H,z),b=j;while(g.cmp(L)!==0){var d=g;for(var a=0;d.cmp(L)!==0;a++)d=d.redSqr();Q(a<b);var Q0=this.pow(q,new X(1).iushln(b-a-1));x=x.redMul(Q0),q=Q0.redSqr(),g=g.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 X(1).toRed(this);if(O.cmpn(1)===0)return H.clone();var F=4,z=Array(1<<F);z[0]=new X(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 g=q>>x&1;if(L!==z[0])L=this.sqr(L);if(g===0&&S===0){R=0;continue}if(S<<=1,S|=g,R++,R!==F&&(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},X.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 X(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)}G(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 F=H.imul(O),z=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=F.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 X(0)._forceRed(this);var F=H.mul(O),z=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),j=F.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 YG>"u"||YG,sY)});var oY=t((m7,HG)=>{if(typeof Object.create==="function")HG.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 HG.exports=function(Z,Q){if(Q){Z.super_=Q;var G=function(){};G.prototype=Q.prototype,Z.prototype=new G,Z.prototype.constructor=Z}}});var E$=t((d7,WG)=>{try{if(fZ=q$("util"),typeof fZ.inherits!=="function")throw"";WG.exports=fZ.inherits}catch($){WG.exports=oY()}var fZ});var yZ=t((n7,lY)=>{var gZ=q$("buffer"),i$=gZ.Buffer,e0={},$$;for($$ in gZ){if(!gZ.hasOwnProperty($$))continue;if($$==="SlowBuffer"||$$==="Buffer")continue;e0[$$]=gZ[$$]}var r$=e0.Buffer={};for($$ in i$){if(!i$.hasOwnProperty($$))continue;if($$==="allocUnsafe"||$$==="allocUnsafeSlow")continue;r$[$$]=i$[$$]}e0.Buffer.prototype=i$.prototype;if(!r$.from||r$.from===Uint8Array.from)r$.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 i$($,Z,Q)};if(!r$.alloc)r$.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 G=i$($);if(!Z||Z.length===0)G.fill(0);else if(typeof Q==="string")G.fill(Z,Q);else G.fill(Z);return G};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}lY.exports=e0});var hZ=t((L8)=>{var B8=E$();function Z$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}L8.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,G){let X=this._reporterState;if(this.exitKey(Z),X.obj!==null)X.obj[Q]=G};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,G=Q.obj;return Q.obj=Z,G};Z$.prototype.error=function(Z){let Q,G=this._reporterState,X=Z instanceof t$;if(X)Q=Z;else Q=new t$(G.path.map(function(Y){return"["+JSON.stringify(Y)+"]"}).join(""),Z.message||Z,Z.stack);if(!G.options.partial)throw Q;if(!X)G.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)}B8(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((C8)=>{var S8=E$(),bZ=hZ().Reporter,a$=yZ().Buffer;function Q$($,Z){if(bZ.call(this,Z),!a$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}S8(Q$,bZ);C8.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:bZ.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,bZ.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 G=new Q$(this.base);return G._reporterState=this._reporterState,G.offset=this.offset,G.length=this.offset+Z,this.offset+=Z,G};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 $)}C8.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(G){G.join(Z,Q),Q+=G.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 tY=t((l7,rY)=>{rY.exports=iY;function iY($,Z){if(!$)throw Error(Z||"Assertion failed")}iY.equal=function(Z,Q,G){if(Z!=Q)throw Error(G||"Assertion failed: "+Z+" != "+Q)}});var cZ=t((i7,eY)=>{var T8=hZ().Reporter,N8=$Z().EncoderBuffer,D8=$Z().DecoderBuffer,l0=tY(),aY=["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"],k8=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(aY),v8=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function $0($,Z,Q){let G={};if(this._baseState=G,G.name=Q,G.enc=$,G.parent=Z||null,G.children=null,G.tag=null,G.args=null,G.reverseArgs=null,G.choice=null,G.optional=!1,G.any=!1,G.obj=!1,G.use=null,G.useDecoder=null,G.key=null,G.default=null,G.explicit=null,G.implicit=null,G.contains=null,!G.parent)G.children=[],this._wrap()}eY.exports=$0;var x8=["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={};x8.forEach(function(X){Q[X]=Z[X]});let G=new this.constructor(Q.parent);return G._baseState=Q,G};$0.prototype._wrap=function(){let Z=this._baseState;k8.forEach(function(Q){this[Q]=function(){let X=new this.constructor(this);return Z.children.push(X),X[Q].apply(X,arguments)}},this)};$0.prototype._init=function(Z){let Q=this._baseState;l0(Q.parent===null),Z.call(this),Q.children=Q.children.filter(function(G){return G._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,G=Z.filter(function(X){return X instanceof this.constructor},this);if(Z=Z.filter(function(X){return!(X instanceof this.constructor)},this),G.length!==0)l0(Q.children===null),Q.children=G,G.forEach(function(X){X._baseState.parent=this},this);if(Z.length!==0)l0(Q.args===null),Q.args=Z,Q.reverseArgs=Z.map(function(X){if(typeof X!=="object"||X.constructor!==Object)return X;let Y={};return Object.keys(X).forEach(function(J){if(J==(J|0))J|=0;let W=X[J];Y[W]=J}),Y})};v8.forEach(function($){$0.prototype[$]=function(){let Q=this._baseState;throw Error($+" not implemented for encoding: "+Q.enc)}});aY.forEach(function($){$0.prototype[$]=function(){let Q=this._baseState,G=Array.prototype.slice.call(arguments);return l0(Q.tag===null),Q.tag=$,this._useArgs(G),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(G){return Z[G]})),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 G=this._baseState;if(G.parent===null)return Z.wrapResult(G.children[0]._decode(Z,Q));let X=G.default,Y=!0,J=null;if(G.key!==null)J=Z.enterKey(G.key);if(G.optional){let V=null;if(G.explicit!==null)V=G.explicit;else if(G.implicit!==null)V=G.implicit;else if(G.tag!==null)V=G.tag;if(V===null&&!G.any){let A=Z.save();try{if(G.choice===null)this._decodeGeneric(G.tag,Z,Q);else this._decodeChoice(Z,Q);Y=!0}catch(M){Y=!1}Z.restore(A)}else if(Y=this._peekTag(Z,V,G.any),Z.isError(Y))return Y}let W;if(G.obj&&Y)W=Z.enterObject();if(Y){if(G.explicit!==null){let A=this._decodeTag(Z,G.explicit);if(Z.isError(A))return A;Z=A}let V=Z.offset;if(G.use===null&&G.choice===null){let A;if(G.any)A=Z.save();let M=this._decodeTag(Z,G.implicit!==null?G.implicit:G.tag,G.any);if(Z.isError(M))return M;if(G.any)X=Z.raw(A);else Z=M}if(Q&&Q.track&&G.tag!==null)Q.track(Z.path(),V,Z.length,"tagged");if(Q&&Q.track&&G.tag!==null)Q.track(Z.path(),Z.offset,Z.length,"content");if(G.any);else if(G.choice===null)X=this._decodeGeneric(G.tag,Z,Q);else X=this._decodeChoice(Z,Q);if(Z.isError(X))return X;if(!G.any&&G.choice===null&&G.children!==null)G.children.forEach(function(M){M._decode(Z,Q)});if(G.contains&&(G.tag==="octstr"||G.tag==="bitstr")){let A=new D8(X);X=this._getUse(G.contains,Z._reporterState.obj)._decode(A,Q)}}if(G.obj&&Y)X=Z.leaveObject(W);if(G.key!==null&&(X!==null||Y===!0))Z.leaveKey(J,G.key,X);else if(J!==null)Z.exitKey(J);return X};$0.prototype._decodeGeneric=function(Z,Q,G){let X=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(Q,Z,X.args[0],G);else if(/str$/.test(Z))return this._decodeStr(Q,Z,G);else if(Z==="objid"&&X.args)return this._decodeObjid(Q,X.args[0],X.args[1],G);else if(Z==="objid")return this._decodeObjid(Q,null,null,G);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(Q,Z,G);else if(Z==="null_")return this._decodeNull(Q,G);else if(Z==="bool")return this._decodeBool(Q,G);else if(Z==="objDesc")return this._decodeStr(Q,Z,G);else if(Z==="int"||Z==="enum")return this._decodeInt(Q,X.args&&X.args[0],G);if(X.use!==null)return this._getUse(X.use,Q._reporterState.obj)._decode(Q,G);else return Q.error("unknown tag: "+Z)};$0.prototype._getUse=function(Z,Q){let G=this._baseState;if(G.useDecoder=this._use(Z,Q),l0(G.useDecoder._baseState.parent===null),G.useDecoder=G.useDecoder._baseState.children[0],G.implicit!==G.useDecoder._baseState.implicit)G.useDecoder=G.useDecoder.clone(),G.useDecoder._baseState.implicit=G.implicit;return G.useDecoder};$0.prototype._decodeChoice=function(Z,Q){let G=this._baseState,X=null,Y=!1;if(Object.keys(G.choice).some(function(J){let W=Z.save(),V=G.choice[J];try{let A=V._decode(Z,Q);if(Z.isError(A))return!1;X={type:J,value:A},Y=!0}catch(A){return Z.restore(W),!1}return!0},this),!Y)return Z.error("Choice not matched");return X};$0.prototype._createEncoderBuffer=function(Z){return new N8(Z,this.reporter)};$0.prototype._encode=function(Z,Q,G){let X=this._baseState;if(X.default!==null&&X.default===Z)return;let Y=this._encodeValue(Z,Q,G);if(Y===void 0)return;if(this._skipDefault(Y,Q,G))return;return Y};$0.prototype._encodeValue=function(Z,Q,G){let X=this._baseState;if(X.parent===null)return X.children[0]._encode(Z,Q||new T8);let Y=null;if(this.reporter=Q,X.optional&&Z===void 0)if(X.default!==null)Z=X.default;else return;let J=null,W=!1;if(X.any)Y=this._createEncoderBuffer(Z);else if(X.choice)Y=this._encodeChoice(Z,Q);else if(X.contains)J=this._getUse(X.contains,G)._encode(Z,Q),W=!0;else if(X.children)J=X.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(X.tag==="seqof"||X.tag==="setof"){if(!(X.args&&X.args.length===1))return Q.error("Too many args for : "+X.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(X.use!==null)Y=this._getUse(X.use,G)._encode(Z,Q);else J=this._encodePrimitive(X.tag,Z),W=!0;if(!X.any&&X.choice===null){let V=X.implicit!==null?X.implicit:X.tag,A=X.implicit===null?"universal":"context";if(V===null){if(X.use===null)Q.error("Tag could be omitted only for .use()")}else if(X.use===null)Y=this._encodeComposite(V,W,A,J)}if(X.explicit!==null)Y=this._encodeComposite(X.explicit,!1,"context",Y);return Y};$0.prototype._encodeChoice=function(Z,Q){let G=this._baseState,X=G.choice[Z.type];if(!X)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(G.choice)));return X._encode(Z.value,Q)};$0.prototype._encodePrimitive=function(Z,Q){let G=this._baseState;if(/str$/.test(Z))return this._encodeStr(Q,Z);else if(Z==="objid"&&G.args)return this._encodeObjid(Q,G.reverseArgs[0],G.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,G.args&&G.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 pZ=t((f8)=>{function $J($){let Z={};return Object.keys($).forEach(function(Q){if((Q|0)==Q)Q=Q|0;let G=$[Q];Z[G]=Q}),Z}f8.tagClass={0:"universal",1:"application",2:"context",3:"private"};f8.tagClassByName=$J(f8.tagClass);f8.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"};f8.tagByName=$J(f8.tag)});var VG=t((t7,YJ)=>{var h8=E$(),K$=yZ().Buffer,GJ=cZ(),UG=pZ();function XJ($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}YJ.exports=XJ;XJ.prototype.encode=function(Z,Q){return this.tree._encode(Z,Q).join()};function Y$($){GJ.call(this,"der",$)}h8(Y$,GJ);Y$.prototype._encodeComposite=function(Z,Q,G,X){let Y=b8(Z,Q,G,this.reporter);if(X.length<128){let V=K$.alloc(2);return V[0]=Y,V[1]=X.length,this._createEncoderBuffer([V,X])}let J=1;for(let V=X.length;V>=256;V>>=8)J++;let W=K$.alloc(2+J);W[0]=Y,W[1]=128|J;for(let V=1+J,A=X.length;A>0;V--,A>>=8)W[V]=A&255;return this._createEncoderBuffer([W,X])};Y$.prototype._encodeStr=function(Z,Q){if(Q==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(Q==="bmpstr"){let G=K$.alloc(Z.length*2);for(let X=0;X<Z.length;X++)G.writeUInt16BE(Z.charCodeAt(X),X*2);return this._createEncoderBuffer(G)}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,G){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(!G){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let X=0;for(let W=0;W<Z.length;W++){let V=Z[W];for(X++;V>=128;V>>=7)X++}let Y=K$.alloc(X),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 G$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,Q){let G,X=new Date(Z);if(Q==="gentime")G=[G$(X.getUTCFullYear()),G$(X.getUTCMonth()+1),G$(X.getUTCDate()),G$(X.getUTCHours()),G$(X.getUTCMinutes()),G$(X.getUTCSeconds()),"Z"].join("");else if(Q==="utctime")G=[G$(X.getUTCFullYear()%100),G$(X.getUTCMonth()+1),G$(X.getUTCDate()),G$(X.getUTCHours()),G$(X.getUTCMinutes()),G$(X.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+Q+" time is not supported yet");return this._encodeStr(G,"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 G=1;for(let Y=Z;Y>=256;Y>>=8)G++;let X=Array(G);for(let Y=X.length-1;Y>=0;Y--)X[Y]=Z&255,Z>>=8;if(X[0]&128)X.unshift(0);return this._createEncoderBuffer(K$.from(X))};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,G){let X=this._baseState,Y;if(X.default===null)return!1;let J=Z.join();if(X.defaultBuffer===void 0)X.defaultBuffer=this._encodeValue(X.default,Q,G).join();if(J.length!==X.defaultBuffer.length)return!1;for(Y=0;Y<J.length;Y++)if(J[Y]!==X.defaultBuffer[Y])return!1;return!0};function b8($,Z,Q,G){let X;if($==="seqof")$="seq";else if($==="setof")$="set";if(UG.tagByName.hasOwnProperty($))X=UG.tagByName[$];else if(typeof $==="number"&&($|0)===$)X=$;else return G.error("Unknown tag: "+$);if(X>=31)return G.error("Multi-octet tag encoding unsupported");if(!Z)X|=32;return X|=UG.tagClassByName[Q||"universal"]<<6,X}});var HJ=t((a7,JJ)=>{var c8=E$(),OG=VG();function _G($){OG.call(this,$),this.enc="pem"}c8(_G,OG);JJ.exports=_G;_G.prototype.encode=function(Z,Q){let X=OG.prototype.encode.call(this,Z).toString("base64"),Y=["-----BEGIN "+Q.label+"-----"];for(let J=0;J<X.length;J+=64)Y.push(X.slice(J,J+64));return Y.push("-----END "+Q.label+"-----"),Y.join(`
|
|
9
|
-
`)}});var AG=t((UJ)=>{var WJ=UJ;WJ.der=VG();WJ.pem=HJ()});var FG=t(($3,FJ)=>{var p8=E$(),u8=JG(),VJ=$Z().DecoderBuffer,_J=cZ(),OJ=pZ();function AJ($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new r0,this.tree._init($.body)}FJ.exports=AJ;AJ.prototype.decode=function(Z,Q){if(!VJ.isDecoderBuffer(Z))Z=new VJ(Z,Q);return this.tree._decode(Z,Q)};function r0($){_J.call(this,"der",$)}p8(r0,_J);r0.prototype._peekTag=function(Z,Q,G){if(Z.isEmpty())return!1;let X=Z.save(),Y=MG(Z,'Failed to peek tag: "'+Q+'"');if(Z.isError(Y))return Y;return Z.restore(X),Y.tag===Q||Y.tagStr===Q||Y.tagStr+"of"===Q||G};r0.prototype._decodeTag=function(Z,Q,G){let X=MG(Z,'Failed to decode tag of "'+Q+'"');if(Z.isError(X))return X;let Y=MJ(Z,X.primitive,'Failed to get length of "'+Q+'"');if(Z.isError(Y))return Y;if(!G&&X.tag!==Q&&X.tagStr!==Q&&X.tagStr+"of"!==Q)return Z.error('Failed to match tag: "'+Q+'"');if(X.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+'"')};r0.prototype._skipUntilEnd=function(Z,Q){for(;;){let G=MG(Z,Q);if(Z.isError(G))return G;let X=MJ(Z,G.primitive,Q);if(Z.isError(X))return X;let Y;if(G.primitive||X!==null)Y=Z.skip(X);else Y=this._skipUntilEnd(Z,Q);if(Z.isError(Y))return Y;if(G.tagStr==="end")break}};r0.prototype._decodeList=function(Z,Q,G,X){let Y=[];while(!Z.isEmpty()){let J=this._peekTag(Z,"end");if(Z.isError(J))return J;let W=G.decode(Z,"der",X);if(Z.isError(W)&&J)break;Y.push(W)}return Y};r0.prototype._decodeStr=function(Z,Q){if(Q==="bitstr"){let G=Z.readUInt8();if(Z.isError(G))return G;return{unused:G,data:Z.raw()}}else if(Q==="bmpstr"){let G=Z.raw();if(G.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let X="";for(let Y=0;Y<G.length/2;Y++)X+=String.fromCharCode(G.readUInt16BE(Y*2));return X}else if(Q==="numstr"){let G=Z.raw().toString("ascii");if(!this._isNumstr(G))return Z.error("Decoding of string type: numstr unsupported characters");return G}else if(Q==="octstr")return Z.raw();else if(Q==="objDesc")return Z.raw();else if(Q==="printstr"){let G=Z.raw().toString("ascii");if(!this._isPrintstr(G))return Z.error("Decoding of string type: printstr unsupported characters");return G}else if(/str$/.test(Q))return Z.raw().toString();else return Z.error("Decoding of string type: "+Q+" unsupported")};r0.prototype._decodeObjid=function(Z,Q,G){let X,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(G)X=Y;else X=[V,A].concat(Y.slice(1));if(Q){let M=Q[X.join(" ")];if(M===void 0)M=Q[X.join(".")];if(M!==void 0)X=M}return X};r0.prototype._decodeTime=function(Z,Q){let G=Z.raw().toString(),X,Y,J,W,V,A;if(Q==="gentime")X=G.slice(0,4)|0,Y=G.slice(4,6)|0,J=G.slice(6,8)|0,W=G.slice(8,10)|0,V=G.slice(10,12)|0,A=G.slice(12,14)|0;else if(Q==="utctime")if(X=G.slice(0,2)|0,Y=G.slice(2,4)|0,J=G.slice(4,6)|0,W=G.slice(6,8)|0,V=G.slice(8,10)|0,A=G.slice(10,12)|0,X<70)X=2000+X;else X=1900+X;else return Z.error("Decoding "+Q+" time is not supported yet");return Date.UTC(X,Y-1,J,W,V,A,0)};r0.prototype._decodeNull=function(){return null};r0.prototype._decodeBool=function(Z){let Q=Z.readUInt8();if(Z.isError(Q))return Q;else return Q!==0};r0.prototype._decodeInt=function(Z,Q){let G=Z.raw(),X=new u8(G);if(Q)X=Q[X.toString(10)]||X;return X};r0.prototype._use=function(Z,Q){if(typeof Z==="function")Z=Z(Q);return Z._getDecoder("der").tree};function MG($,Z){let Q=$.readUInt8(Z);if($.isError(Q))return Q;let G=OJ.tagClass[Q>>6],X=(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=OJ.tag[Q];return{cls:G,primitive:X,tag:Q,tagStr:Y}}function MJ($,Z,Q){let G=$.readUInt8(Q);if($.isError(G))return G;if(!Z&&G===128)return null;if((G&128)===0)return G;let X=G&127;if(X>4)return $.error("length octect is too long");G=0;for(let Y=0;Y<X;Y++){G<<=8;let J=$.readUInt8(Q);if($.isError(J))return J;G|=J}return G}});var KJ=t((Z3,zJ)=>{var m8=E$(),d8=yZ().Buffer,zG=FG();function KG($){zG.call(this,$),this.enc="pem"}m8(KG,zG);zJ.exports=KG;KG.prototype.decode=function(Z,Q){let G=Z.toString().split(/[\r\n]+/g),X=Q.label.toUpperCase(),Y=/^-----(BEGIN|END) ([^-]+)-----$/,J=-1,W=-1;for(let M=0;M<G.length;M++){let _=G[M].match(Y);if(_===null)continue;if(_[2]!==X)continue;if(J===-1){if(_[1]!=="BEGIN")break;J=M}else{if(_[1]!=="END")break;W=M;break}}if(J===-1||W===-1)throw Error("PEM section not found for: "+X);let V=G.slice(J+1,W).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let A=d8.from(V,"base64");return zG.prototype.decode.call(this,A,Q)}});var RG=t((IJ)=>{var RJ=IJ;RJ.der=FG();RJ.pem=KJ()});var jJ=t((qJ)=>{var n8=AG(),s8=RG(),o8=E$(),l8=qJ;l8.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 G(X){this._initNamed(X,Q)}return o8(G,Z),G.prototype._initNamed=function(Y,J){Z.call(this,Y,J)},new G(this)};ZZ.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(s8[Z]);return this.decoders[Z]};ZZ.prototype.decode=function(Z,Q,G){return this._getDecoder(Q).decode(Z,G)};ZZ.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(n8[Z]);return this.encoders[Z]};ZZ.prototype.encode=function(Z,Q,G){return this._getEncoder(Q).encode(Z,G)}});var LJ=t((BJ)=>{var uZ=BJ;uZ.Reporter=hZ().Reporter;uZ.DecoderBuffer=$Z().DecoderBuffer;uZ.EncoderBuffer=$Z().EncoderBuffer;uZ.Node=cZ()});var CJ=t((SJ)=>{var PJ=SJ;PJ._reverse=function(Z){let Q={};return Object.keys(Z).forEach(function(G){if((G|0)==G)G=G|0;let X=Z[G];Q[X]=G}),Q};PJ.der=pZ()});var EJ=t((wJ)=>{var QZ=wJ;QZ.bignum=JG();QZ.define=jJ().define;QZ.base=LJ();QZ.constants=CJ();QZ.decoders=RG();QZ.encoders=AG()});var DJ=t((IG,NJ)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var mZ=q$("buffer"),_$=mZ.Buffer;function TJ($,Z){for(var Q in $)Z[Q]=$[Q]}if(_$.from&&_$.alloc&&_$.allocUnsafe&&_$.allocUnsafeSlow)NJ.exports=mZ;else TJ(mZ,IG),IG.Buffer=x$;function x$($,Z,Q){return _$($,Z,Q)}x$.prototype=Object.create(_$.prototype);TJ(_$,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 G=_$($);if(Z!==void 0)if(typeof Q==="string")G.fill(Z,Q);else G.fill(Z);else G.fill(0);return G};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 mZ.SlowBuffer($)}});var vJ=t((H3,kJ)=>{function qG($){var Z=($/8|0)+($%8===0?0:1);return Z}var i8={ES256:qG(256),ES384:qG(384),ES512:qG(521)};function r8($){var Z=i8[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}kJ.exports=r8});var cJ=t((W3,bJ)=>{var dZ=DJ().Buffer,fJ=vJ(),nZ=128,gJ=0,t8=32,a8=16,e8=2,yJ=a8|t8|gJ<<6,sZ=e8|gJ<<6;function $6($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function hJ($){if(dZ.isBuffer($))return $;else if(typeof $==="string")return dZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function Z6($,Z){$=hJ($);var Q=fJ(Z),G=Q+1,X=$.length,Y=0;if($[Y++]!==yJ)throw Error('Could not find expected "seq"');var J=$[Y++];if(J===(nZ|1))J=$[Y++];if(X-Y<J)throw Error('"seq" specified length of "'+J+'", only "'+(X-Y)+'" remaining');if($[Y++]!==sZ)throw Error('Could not find expected "int" for "r"');var W=$[Y++];if(X-Y-2<W)throw Error('"r" specified length of "'+W+'", only "'+(X-Y-2)+'" available');if(G<W)throw Error('"r" specified length of "'+W+'", max of "'+G+'" is acceptable');var V=Y;if(Y+=W,$[Y++]!==sZ)throw Error('Could not find expected "int" for "s"');var A=$[Y++];if(X-Y!==A)throw Error('"s" specified length of "'+A+'", expected "'+(X-Y)+'"');if(G<A)throw Error('"s" specified length of "'+A+'", max of "'+G+'" is acceptable');var M=Y;if(Y+=A,Y!==X)throw Error('Expected to consume entire buffer, but "'+(X-Y)+'" bytes remain');var _=Q-W,I=Q-A,P=dZ.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,M+Math.max(-I,0),M+A),P=P.toString("base64"),P=$6(P),P}function xJ($,Z,Q){var G=0;while(Z+G<Q&&$[Z+G]===0)++G;var X=$[Z+G]>=nZ;if(X)--G;return G}function Q6($,Z){$=hJ($);var Q=fJ(Z),G=$.length;if(G!==Q*2)throw TypeError('"'+Z+'" signatures must be "'+Q*2+'" bytes, saw "'+G+'"');var X=xJ($,0,Q),Y=xJ($,Q,$.length),J=Q-X,W=Q-Y,V=2+J+1+1+W,A=V<nZ,M=dZ.allocUnsafe((A?2:3)+V),_=0;if(M[_++]=yJ,A)M[_++]=V;else M[_++]=nZ|1,M[_++]=V&255;if(M[_++]=sZ,M[_++]=J,X<0)M[_++]=0,_+=$.copy(M,_,0,Q);else _+=$.copy(M,_,X,Q);if(M[_++]=sZ,M[_++]=W,Y<0)M[_++]=0,$.copy(M,_,Q);else $.copy(M,_,Q+Y);return M}bJ.exports={derToJose:Z6,joseToDer:Q6}});var PG=t((U3,$1)=>{var LG=EJ(),{createHmac:mJ,createVerify:G6,createSign:X6,timingSafeEqual:Y6,createPublicKey:J6,constants:{RSA_PKCS1_PSS_PADDING:dJ,RSA_PSS_SALTLEN_DIGEST:nJ,RSA_PKCS1_PADDING:sJ,RSA_PSS_SALTLEN_MAX_SIGN:H6,RSA_PSS_SALTLEN_AUTO:W6},sign:pJ,verify:uJ}=q$("crypto"),{joseToDer:U6,derToJose:V6}=cJ(),oJ=XG(),{TokenError:Y0}=l$(),lJ=/[=+/]/g,O6={"=":"","+":"-","/":"_"},iJ=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,rJ=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,oZ=new oJ(1000),jG=new oJ(1000),tJ=["HS256","HS384","HS512"],_6=["ES256","ES384","ES512"],BG=["RS256","RS384","RS512","PS256","PS384","PS512"],A6=["EdDSA"],aJ={"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"]}},M6=LG.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),F6=LG.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),z6=LG.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 eJ($){return O6[$]}function OZ($,Z,Q,G){return $.set(Z,[Q,G]),Q||G}function K6($){if($.match(rJ)||$.includes("-----BEGIN CERTIFICATE-----"))throw new Y0(Y0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(iJ);if(!Z)return"HS256";let Q,G,X;switch(Z[1]){case"RSA":return"RS256";case"EC":Q=z6.decode($,"pem",{label:"EC PRIVATE KEY"}),X=Q.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(Q=M6.decode($,"pem",{label:"PRIVATE KEY"}),G=Q.algorithm.algorithm.join("."),G){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":X=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 ${G}.`)}}let Y=aJ[X];if(!Y)throw new Y0(Y0.codes.invalidKey,`Unsupported EC private key with curve ${X}.`);return`ES${Y.bits}`}function R6($){let Z=$.match(rJ);if($.match(iJ))throw new Y0(Y0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return BG;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return tJ;if($.includes("-----BEGIN CERTIFICATE-----"))$=J6($).export({type:"spki",format:"pem"});let Q=F6.decode($,"pem",{label:"PUBLIC KEY"}),G=Q.algorithm.algorithm.join("."),X;switch(G){case"1.2.840.113549.1.1.1":return BG;case"1.2.840.10045.2.1":X=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 ${G}.`)}let Y=aJ[X];if(!Y)throw new Y0(Y0.codes.invalidKey,`Unsupported EC public key with curve ${X}.`);return[`ES${Y.bits}`]}function I6($,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,G]=oZ.get($)||[];if(Q)return Q;else if(G)throw G;try{let X=K6($);if(X==="ENCRYPTED")return OZ(oZ,$,Z);return OZ(oZ,$,X)}catch(X){throw OZ(oZ,$,null,Y0.wrap(X,Y0.codes.invalidKey,"Unsupported PEM private key."))}}function q6($){if(!$)return"none";let[Z,Q]=jG.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(jG,$,R6($))}catch(G){throw OZ(jG,$,null,Y0.wrap(G,Y0.codes.invalidKey,"Unsupported PEM public key."))}}function j6($,Z,Q){try{let G=$.slice(0,2),X=`sha${$.slice(2)}`,Y,J;switch(G){case"HS":Y=mJ(X,Z).update(Q).digest("base64");break;case"ES":Y=V6(pJ(X,Buffer.from(Q,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(J={key:Z,padding:sJ,saltLength:H6},G==="PS")J.padding=dJ,J.saltLength=nJ;Y=X6(X).update(Q).sign(J).toString("base64");break;case"Ed":Y=pJ(void 0,Buffer.from(Q,"utf-8"),Z).toString("base64")}return Y.replace(lJ,eJ)}catch(G){throw new Y0(Y0.codes.signError,"Cannot create the signature.",{originalError:G})}}function B6($,Z,Q,G){try{let X=$.slice(0,2),Y=`SHA${$.slice(2)}`;if(G=Buffer.from(G,"base64"),X==="HS")try{return Y6(mJ(Y,Z).update(Q).digest(),G)}catch{return!1}else if(X==="Ed")if(typeof uJ==="function")return uJ(void 0,Buffer.from(Q,"utf-8"),Z,G);else throw new Y0(Y0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let J={key:Z,padding:sJ,saltLength:W6};if(X==="PS")J.padding=dJ,J.saltLength=nJ;else if(X==="ES")G=U6(G,$);return G6("RSA-"+Y).update(Q).verify(J,G)}catch(X){throw new Y0(Y0.codes.verifyError,"Cannot verify the signature.",{originalError:X})}}$1.exports={base64UrlMatcher:lJ,base64UrlReplacer:eJ,hsAlgorithms:tJ,rsaAlgorithms:BG,esAlgorithms:_6,edAlgorithms:A6,detectPrivateKeyAlgorithm:I6,detectPublicKeyAlgorithms:q6,createSignature:j6,verifySignature:B6}});var SG=t((V3,Q1)=>{var{createHash:Z1}=q$("crypto"),L6=/"alg"\s*:\s*"[HERP]S(256|384)"/m,P6=/"alg"\s*:\s*"EdDSA"/m,S6=/"crv"\s*:\s*"Ed448"/m;function C6($,Z,Q){let G=$(Z,Q);if(G&&typeof G.then==="function")G.then((X)=>{process.nextTick(()=>Q(null,X))}).catch(Q)}function w6($){if(typeof $==="function")return[$];let Z,Q,G=new Promise((X,Y)=>{Z=X,Q=Y});return[function(X,Y){if(X)return Q(X);return Z(Y)},G]}function E6($){let Z=$.split(".",1)[0],Q=Buffer.from(Z,"base64").toString("utf-8"),G=null;if(Q.match(P6)&&Q.match(S6))G=Z1("shake256",{outputLength:114});else{let X=Q.match(L6);G=Z1(`sha${X?X[1]:"512"}`)}return G.update($).digest("hex")}Q1.exports={getAsyncKey:C6,ensurePromiseCallback:w6,hashToken:E6}});var U1=t((O3,W1)=>{var{createPublicKey:T6,createSecretKey:N6}=q$("crypto"),D6=XG(),{hsAlgorithms:X1,verifySignature:k6,detectPublicKeyAlgorithms:Y1}=PG(),v6=eQ(),{TokenError:o}=l$(),{getAsyncKey:x6,ensurePromiseCallback:f6,hashToken:g6}=SG();function y6($,Z){return $===Z}function J1($,Z){for(let Q of $)if(Z.includes(Q))return;throw new o(o.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function H1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?N6($):T6($)}function _Z($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:y6.bind(null,Z)}})}function h6($){let Z=parseInt($===!0?1000:$,10);return Z>0?new D6(Z):null}function GZ({cache:$,token:Z,cacheTTL:Q,payload:G,ignoreExpiration:X,ignoreNotBefore:Y,maxAge:J,clockTimestamp:W=Date.now(),clockTolerance:V,errorCacheTTL:A,cacheKeyBuilder:M},_){if(!$)return _;let I=[_,0,0];if(_ instanceof o){let E=typeof A==="function"?A(_):A;return I[2]=W+V+E,$.set(M(Z),I),_}if(G&&typeof G.iat==="number"){if(I[1]=!Y&&typeof G.nbf==="number"?G.nbf*1000-V:0,!X){if(typeof G.exp==="number")I[2]=G.exp*1000+V;else if(J)I[2]=G.iat*1000+J+V}}let C=W+V+Q;return I[2]=I[2]===0?C:Math.min(I[2],C),$.set(M(Z),I),_}function b6($,Z,Q){if($ instanceof o){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return Q}function c6($,Z,Q,G,X){if(!X.includes(Z.alg))throw new o(o.codes.invalidAlgorithm,"The token algorithm is invalid.");if(Q&&!k6(Z.alg,G,$,Q))throw new o(o.codes.invalidSignature,"The token signature is invalid.")}function p6($,Z,Q,G,X){let Y=Q?`The ${Z} claim must be a ${X} or an array of ${X}s.`:`The ${Z} claim must be a ${X}.`;if(G&&!Q)throw new o(o.codes.invalidClaimValue,Y);if($.map((J)=>typeof J).some((J)=>J!==X))throw new o(o.codes.invalidClaimType,Y)}function u6($,Z,Q,G){let X=G?`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 o(o.codes.invalidClaimValue,X)}function m6($,Z,Q,G,X,Y){let J=$*1000+(Z||0);if(!(G?Q>=J:Q<=J))throw new o(o.codes[X],`The token ${Y} at ${new Date(J).toISOString()}.`)}function G1($,{input:Z,header:Q,payload:G,signature:X},{validators:Y,allowedAlgorithms:J,checkTyp:W,clockTimestamp:V,requiredClaims:A}){let M=$ instanceof Buffer?$.length:!!$;if(M&&!X)throw new o(o.codes.missingSignature,"The token signature is missing.");else if(!M&&X)throw new o(o.codes.missingKey,"The key option is missing.");if(c6(Z,Q,X,$,J),W&&(typeof Q.typ!=="string"||W!==Q.typ.toLowerCase().replace(/^application\//,"")))throw new o(o.codes.invalidType,"Invalid typ.");if(A){for(let I of A)if(!(I in G))throw new o(o.codes.missingRequiredClaim,`The ${I} claim is required.`)}let _=V||Date.now();for(let{type:I,claim:P,allowed:C,array:E,modifier:N,greater:T,errorCode:w,errorVerb:v}of Y){let c=G[P],f=Array.isArray(c),y=f?c:[c];if(!(P in G))continue;if(p6(y,P,E,f,I==="date"?"number":"string"),I==="date")m6(c,N,_,T,w,v);else u6(y,P,C,f)}}function d6({key:$,allowedAlgorithms:Z,complete:Q,cacheTTL:G,checkTyp:X,clockTimestamp:Y,clockTolerance:J,ignoreExpiration:W,ignoreNotBefore:V,maxAge:A,isAsync:M,validators:_,decode:I,cache:P,requiredClaims:C,errorCacheTTL:E,cacheKeyBuilder:N},T,w){let[v,c]=M?f6(w):[];if(P){let[O,F,z]=P.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")&&(z===0||j<=z))return b6(O,v,c)}let f;try{f=I(T)}catch(O){if(v)return v(O),c;throw O}let{header:y,payload:l,signature:n,input:H0}=f,B={cache:P,token:T,cacheTTL:G,errorCacheTTL:E,ignoreExpiration:W,ignoreNotBefore:V,maxAge:A,clockTimestamp:Y,clockTolerance:J,payload:l,cacheKeyBuilder:N},H={validators:_,allowedAlgorithms:Z,checkTyp:X,clockTimestamp:Y,clockTolerance:J,requiredClaims:C};if(!v)try{return G1($,f,H),GZ(B,Q?{header:y,payload:l,signature:n,input:H0}:l)}catch(O){throw GZ(B,O)}return x6($,{header:y,payload:l,signature:n},(O,F)=>{if(O)return v(GZ(B,o.wrap(O,o.codes.keyFetchingError,"Cannot fetch key.")));if(typeof F==="string")F=Buffer.from(F,"utf-8");else if(!(F instanceof Buffer))return v(GZ(B,new o(o.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=Y1(F);if(H.allowedAlgorithms.length)J1(Z,z);else H.allowedAlgorithms=z;F=H1(F,z[0]===X1[0]),G1(F,f,H)}catch(z){return v(GZ(B,z))}v(null,GZ(B,Q?{header:y,payload:l,signature:n,input:T}:l))}),c}W1.exports=function(Z){let{key:Q,algorithms:G,complete:X,cache:Y,cacheTTL:J,errorCacheTTL:W,checkTyp:V,clockTimestamp:A,clockTolerance:M,ignoreExpiration:_,ignoreNotBefore:I,maxAge:P,allowedJti:C,allowedAud:E,allowedIss:N,allowedSub:T,allowedNonce:w,requiredClaims:v,cacheKeyBuilder:c}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:g6,...Z};if(!Array.isArray(G))G=[];let f=typeof Q;if(f!=="string"&&f!=="object"&&f!=="function")throw new o(o.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 B=Y1(Q);if(G.length)J1(G,B);else G=B;Q=H1(Q,B[0]===X1[0])}if(A&&(typeof A!=="number"||A<0))throw new o(o.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(M&&(typeof M!=="number"||M<0))throw new o(o.codes.invalidOption,"The clockTolerance option must be a positive number.");if(J&&(typeof J!=="number"||J<0))throw new o(o.codes.invalidOption,"The cacheTTL option must be a positive number.");if(W&&typeof W!=="function"&&typeof W!=="number"||W<-1)throw new o(o.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(v&&!Array.isArray(v))throw new o(o.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:-M});if(!_)y.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+M});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(E)y.push({type:"string",claim:"aud",allowed:_Z(E),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(w)y.push({type:"string",claim:"nonce",allowed:_Z(w)});let l=V?V.toLowerCase().replace(/^application\//,""):null,n={key:Q,allowedAlgorithms:G,complete:X,cacheTTL:J,errorCacheTTL:W,checkTyp:l,clockTimestamp:A,clockTolerance:M,ignoreExpiration:_,ignoreNotBefore:I,maxAge:P,isAsync:f==="function",validators:y,decode:v6({complete:!0}),cache:h6(Y),requiredClaims:v,cacheKeyBuilder:c},H0=d6.bind(null,n);return H0.cache=n.cache,H0}});var V1=t((l6)=>{var n6=/^(-?(?:\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?)?)?$/,lZ=1000,iZ=lZ*60,rZ=iZ*60,MZ=rZ*24,CG=MZ*365.25;function s6($){var Z,Q=$.toLowerCase().match(n6);if(Q!=null&&(Z=parseFloat(Q[1]))){if(Q[3]!=null)return Z*lZ;if(Q[4]!=null)return Z*iZ;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*CG;return Z}}function AZ($,Z,Q,G){var X=($|0)===$?$:~~($+0.5);return Z+X+(G?" "+Q+(X!=1?"s":""):Q[0])}function o6($,Z){var Q=$<0?"-":"",G=$<0?-$:$;if(G<lZ)return $+(Z?" ms":"ms");if(G<iZ)return AZ(G/lZ,Q,"second",Z);if(G<rZ)return AZ(G/iZ,Q,"minute",Z);if(G<MZ)return AZ(G/rZ,Q,"hour",Z);if(G<CG)return AZ(G/MZ,Q,"day",Z);return AZ(G/CG,Q,"year",Z)}l6.format=o6;l6.parse=s6});var R1=t((A3,K1)=>{var{base64UrlMatcher:wG,base64UrlReplacer:EG,hsAlgorithms:t6,esAlgorithms:a6,rsaAlgorithms:e6,edAlgorithms:$9,detectPrivateKeyAlgorithm:A1,createSignature:O1}=PG(),{TokenError:r}=l$(),{getAsyncKey:Z9,ensurePromiseCallback:Q9}=SG(),{createPrivateKey:G9,createSecretKey:X9}=q$("crypto"),{parse:_1}=V1(),M1=new Set([...t6,...a6,...e6,...$9,"none"]),Y9=Array.from(M1).join(", ");function F1($,Z){let Q=$.slice(0,2),G=Z.slice(0,2),X=!0;if(Q==="RS"||Q==="PS")X=G==="RS"||Q==="RS"&&Z==="ENCRYPTED";else if(Q==="ES"||Q==="Ed")X=Q===G||Q==="ES"&&Z==="ENCRYPTED";if(!X)throw new r(r.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function z1($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?X9($):G9($)}function J9({key:$,algorithm:Z,noTimestamp:Q,mutatePayload:G,clockTimestamp:X,expiresIn:Y,notBefore:J,kid:W,typ:V,isAsync:A,additionalHeader:M,fixedPayload:_},I,P){let[C,E]=A?Q9(P):[];if(typeof I!=="object")throw new r(r.codes.invalidType,"The payload must be an object.");if(I.exp&&(!Number.isInteger(I.exp)||I.exp<0))throw new r(r.codes.invalidClaimValue,"The exp claim must be a positive integer.");let N={alg:Z,typ:V||"JWT",kid:W,...M},T="",w=I.iat*1000||X||Date.now(),v={...I,..._,iat:Q?void 0:Math.floor(w/1000),exp:I.exp?I.exp:Y?Math.floor((w+Y)/1000):void 0,nbf:I.nbf?I.nbf:J?Math.floor((w+J)/1000):void 0};if(G)Object.assign(I,v);if(T=Buffer.from(JSON.stringify(v),"utf-8").toString("base64").replace(wG,EG),!C){let f=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(wG,EG)+"."+T,y=Z==="none"?"":O1(Z,$,f);return f+"."+y}return Z9($,{header:N,payload:I},(c,f)=>{if(c){let l=r.wrap(c,r.codes.keyFetchingError,"Cannot fetch key.");return C(l)}if(typeof f==="string")f=Buffer.from(f,"utf-8");else if(!(f instanceof Buffer))return C(new r(r.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=A1(f,Z);if(Z)F1(Z,l);else N.alg=Z=l;f=z1(f,Z);let H0=Buffer.from(JSON.stringify(N),"utf-8").toString("base64").replace(wG,EG)+"."+T;y=H0+"."+O1(Z,f,H0)}catch(l){return C(l)}C(null,y)}),E}K1.exports=function(Z){let{key:Q,algorithm:G,noTimestamp:X,mutatePayload:Y,clockTimestamp:J,expiresIn:W,notBefore:V,jti:A,aud:M,iss:_,sub:I,nonce:P,kid:C,typ:E,header:N}={clockTimestamp:0,...Z};if(G&&!M1.has(G))throw new r(r.codes.invalidOption,`The algorithm option must be one of the following values: ${Y9}.`);let T=typeof Q,w=T==="object"&&Q&&Q.key&&Q.passphrase;if(G==="none"){if(Q)throw new r(r.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"&&!w)throw new r(r.codes.invalidOption,"The key option must be a string, a buffer, an object containing key/passphrase properties or a function returning the algorithm secret or private key.");else if(w&&!G)throw new r(r.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(Q&&T!=="function"){let f=A1(w?Q.key:Q,G);if(G)F1(G,f);else G=f;Q=z1(Q,G)}if(W){if(typeof W==="string")W=_1(W);if(typeof W!=="number")throw new r(r.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(V){if(typeof V==="string")V=_1(V);if(typeof V!=="number"||V<0)throw new r(r.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(J&&(typeof J!=="number"||J<0))throw new r(r.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(A&&typeof A!=="string")throw new r(r.codes.invalidOption,"The jti option must be a string.");if(M&&typeof M!=="string"&&!Array.isArray(M))throw new r(r.codes.invalidOption,"The aud option must be a string or an array of strings.");if(_&&typeof _!=="string")throw new r(r.codes.invalidOption,"The iss option must be a string.");if(I&&typeof I!=="string")throw new r(r.codes.invalidOption,"The sub option must be a string.");if(P&&typeof P!=="string")throw new r(r.codes.invalidOption,"The nonce option must be a string.");if(C&&typeof C!=="string")throw new r(r.codes.invalidOption,"The kid option must be a string.");if(N&&typeof N!=="object")throw new r(r.codes.invalidOption,"The header option must be a object.");let c=Object.entries({jti:A,aud:M,iss:_,sub:I,nonce:P}).reduce((f,[y,l])=>{if(l!==void 0)f[y]=l;return f},{});return J9.bind(null,{key:Q,algorithm:G,noTimestamp:X,mutatePayload:Y,clockTimestamp:J,expiresIn:W,notBefore:V,kid:C,typ:E,isAsync:T==="function",additionalHeader:N,fixedPayload:c})}});var q1=t((M3,I1)=>{var{TokenError:H9,TOKEN_ERROR_CODES:W9}=l$(),U9=eQ(),V9=U1(),O9=R1();I1.exports={TokenError:H9,TOKEN_ERROR_CODES:W9,createDecoder:U9,createVerifier:V9,createSigner:O9}});import{join as NQ}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 j$($){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(s($)){let Z={},Q=$;for(let G of Object.keys(Q))Z[G]=U$(Q[G]);return Z}return $}function _X($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let Q=[];for(let G of $)Q.push(U$(G));for(let G of Z)Q.push(U$(G));return Q}if(s($)&&s(Z)){let Q=$,G=Z,X={};for(let Y of Object.keys(Q))X[Y]=U$(Q[Y]);for(let Y of Object.keys(G)){let J=G[Y];if(J===void 0)continue;let W=X[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));X[Y]=V;continue}if(s(W)&&s(J)){X[Y]=_X(U$(W),J);continue}X[Y]=U$(J)}return X}return U$(Z)}function AX(...$){let Z={};for(let Q of $){if(Q===void 0)continue;Z=_X(Z,Q)}return Z}var MH={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 MX($){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=NQ(process.cwd(),"configs"),Q=await P$(NQ(Z,"befly.common.json"),{}),G=await P$(NQ(Z,`befly.${$}.json`),{}),X=AX(MH,Q,G);X.nodeEnv=$;let Y=X.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=X.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=X.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 X}Z0();m0();async function FX($){let Z=!1,Q=new Set;for(let G of $)try{if(!s(G)){K.warn({item:G,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let X=G,Y=X.name;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof X.handler!=="function"){K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let W=X.path;if(typeof W!=="string"||W.trim()==="")K.warn(Object.assign({},m(X,["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(X,["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(X,["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(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(C.includes(" "))K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(C.includes("/api//"))K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=X.routePrefix,A=typeof V==="string"?V.trim():"";if(A==="")K.warn(Object.assign({},m(X,["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(X,["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(),E=`/api${A}/`;if(!C.startsWith(E))K.warn(Object.assign({},m(X,["handler"]),{expectedPrefix:E,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=X.method;if(M!==void 0&&!["GET","POST","GET,POST"].includes(String(M).toUpperCase()))K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let _=X.auth;if(_!==void 0)if(typeof _==="boolean");else if(Array.isArray(_)){if(_.length===0)K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A"})),Z=!0;else if(_.some((C)=>typeof C!=="string"||C.trim()===""))K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u6570\u7EC4\u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32\u6570\u7EC4\uFF08roleType \u5217\u8868\uFF09"})),Z=!0}else K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F boolean \u6216 string[]"})),Z=!0;let I=X.fields;if(I!==void 0&&I!==null&&!s(I))K.warn(Object.assign({},m(X,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let P=X.required;if(P!==void 0&&!Array.isArray(P))K.warn(Object.assign({},m(X,["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(X,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(X){K.error({err:X,item:G,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 DQ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function FH($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function zH($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function KH($){if(!b$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function RH($){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(!DQ($.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 IH($){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&&!DQ($.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&&!FH($.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 zX($){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(!DQ($.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(!zH($.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(!KH($.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"}});RH($.db),IH($.redis)}Z0();m0();var KX=["name","enable","deps","handler"];async function RX($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let G of $)try{if(!s(G)){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let X=G,Y=X.moduleName;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(G,["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=X.customKeys;if(!Array.isArray(J)){K.warn(Object.assign({},m(G,["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")){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let W=J.filter((M)=>!KX.includes(M));if(W.length>0){K.warn(Object.assign({},m(G,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${W.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${KX.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof X.enable!=="boolean"){K.warn(Object.assign({},m(G,["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 X.enable=!0;if(X.source==="core"){let M=typeof X.name==="string"?X.name:"";if(M===""){K.warn(Object.assign({},m(G,["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)){K.warn(Object.assign({},m(G,["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(X.moduleName))){K.warn(Object.assign({},m(G,["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(X.moduleName)){K.warn(Object.assign({},m(G,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=X.filePath;if(typeof _!=="string"||!_.startsWith(`core:hook:${M}`)){K.warn(Object.assign({},m(G,["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=X.deps;if(!Array.isArray(M)){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(M.some((_)=>typeof _!=="string")){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let M=X.deps;if(!Array.isArray(M))X.deps=[]}if(typeof X.handler!=="function"){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(X){K.error({err:X,item:G,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();fQ();function TH($){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 wX=async($)=>{let Z=!1,Q=await CX($),G=[];for(let Y of Q)G.push({menu:Y,depth:1});let X=new Set;while(G.length>0){let Y=G.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)G.push({menu:P,depth:W+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,K.warn({menu:J,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let I=TH(A);if(!I.ok)Z=!0,K.warn({path:A,reason:I.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!M)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(X.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}X.add(A)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return Q};Z0();m0();var EX=["name","enable","deps","handler"];async function TX($){let Z=!1,Q=/^[a-z]+(?:_[a-z]+)*$/;for(let G of $)try{if(!s(G)){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let X=G,Y=X.moduleName;if(typeof Y!=="string"||Y.trim()===""){K.warn(Object.assign({},m(G,["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=X.customKeys;if(!Array.isArray(J)){K.warn(Object.assign({},m(G,["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")){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let W=J.filter((M)=>!EX.includes(M));if(W.length>0){K.warn(Object.assign({},m(G,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${W.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${EX.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${J.join(", ")}`})),Z=!0;continue}let V=J.includes("enable"),A=J.includes("deps");if(V){if(typeof X.enable!=="boolean"){K.warn(Object.assign({},m(G,["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 X.enable=!0;if(X.source==="core"){let M=typeof X.name==="string"?X.name:"";if(M===""){K.warn(Object.assign({},m(G,["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)){K.warn(Object.assign({},m(G,["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(X.moduleName))){K.warn(Object.assign({},m(G,["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(X.moduleName)){K.warn(Object.assign({},m(G,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let _=X.filePath;if(typeof _!=="string"||!_.startsWith(`core:plugin:${M}`)){K.warn(Object.assign({},m(G,["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=X.deps;if(!Array.isArray(M)){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(M.some((_)=>typeof _!=="string")){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let M=X.deps;if(!Array.isArray(M))X.deps=[]}if(typeof X.handler!=="function"){K.warn(Object.assign({},m(G,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(X){K.error({err:X,item:G,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 NX=new Set(["char","varchar","enum","tinytext","text","mediumtext","longtext"]),NH=new Set(["tinytext","text","mediumtext","longtext"]),gQ=new Set(["tinyint","smallint","mediumint","int","bigint"]),yQ=new Set(["decimal"]),hQ=new Set(["float","double"]),DH=new Set(["json"]),kH=new Set(["enum"]);function M$($){return String($||"").trim().toLowerCase()}function DX($){return NX.has(M$($))}function kX($){return NH.has(M$($))}function vX($){return gQ.has(M$($))}function xX($){return yQ.has(M$($))}function fX($){return hQ.has(M$($))}function gX($){return DH.has(M$($))}function yX($){return kH.has(M$($))}function hX($){let Z=M$($);return gQ.has(Z)||yQ.has(Z)||hQ.has(Z)}function vH($){let Z=M$($);if(gQ.has(Z))return"integer";if(yQ.has(Z)||hQ.has(Z))return"number";if(NX.has(Z)||Z==="datetime"||Z==="timestamp")return"string";if(Z==="json")return"json";return"string"}function SZ($,Z){let Q=String($||"").trim(),G=String(Z||"").trim();return{type:Q,input:G||vH(Q)}}function u$($){let Z=String($||"").trim();if(Z==="")return[];let Q=Z.split("|").map((X)=>X.trim()).filter((X)=>X!==""),G=[];for(let X of Q)if(!G.includes(X))G.push(X);return G}m0();var mX=["id","created_at","updated_at","deleted_at","state"],bX=new Set(mX),dX=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","enum","tinytext","text","mediumtext","longtext","datetime","timestamp","json"],xH=new Set(dX),nX=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],fH=new Set(nX),sX=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],gH=new Set(sX),yH=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,hH=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,cX=16383,pX=500,uX=180;async function oX($,Z){let Q=!1;for(let G of $){if(G.type!=="table")continue;let X=typeof G.sourceName==="string"?G.sourceName:"",Y=X?`${X}\u8868 `:"\u8868 ";try{let J=G.fileName;if(G.source==="addon"&&String(G.addonName).trim()===""){K.warn(`${Y}${J} addon \u8868\u7F3A\u5C11 addonName`),Q=!0;continue}let W=G.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(!yH.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 M=p(V);if(bX.has(V)||bX.has(M))K.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: ${mX.join(", ")}`),Q=!0;let _=A,P=Object.keys(_).filter((B)=>!gH.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: ${sX.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||""),E=C.type,N=C.input;if(_.default!==void 0&&_.default!==null&&!FZ(_.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=${X$(_.default)}\uFF09`),Q=!0;if(Z.strict){if(!hH.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(!xH.has(E))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${E}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${dX.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(!fH.has(T)&&!g$(T)&&!T$(T)&&!IQ(T))K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${T}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${nX.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),Q=!0;let w=xX(E),v=fX(E),c=gX(E),f=yX(E),y=hX(E),l=DX(E),n=kX(E),H0=vX(E);if(f){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 ${X$(T)}`),Q=!0}if(g$(T)||T$(T)||IQ(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 ${E}\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 ${E} \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 ${E} \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 ${E} \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 ${E} \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 ${E} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),Q=!0}else if(E==="datetime"||E==="timestamp"){if(_.min!==void 0&&_.min!==null)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${E} \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 ${E} \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 ${E} \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 ${X$(_.default)}`),Q=!0;if(_.unsigned!==void 0)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${E} \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),Q=!0}else if(E==="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=${X$(_.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=${X$(_.default)}\uFF0Cenums=${X$(T)}\uFF09`),Q=!0}else if(w){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=${X$(_.default)}\uFF09`),Q=!0}else if(E==="char"||E==="varchar"){if(_.max===void 0||_.max===null||typeof _.max!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${E} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${_.max}"`),Q=!0;else if(_.max>cX)K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${_.max} \u8D8A\u754C\uFF0C`+`${E} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${cX} \u8303\u56F4\u5185`),Q=!0;else{if(_.index===!0&&_.max>pX)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 <= ${pX}\uFF09`),Q=!0;if(_.unique===!0&&_.max>uX)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 <= ${uX}\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 ${E} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${X$(_.default)}\uFF09`),Q=!0}else if(H0){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${E} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${X$(_.default)}\uFF09`),Q=!0}else if(v){if(_.default!==void 0&&_.default!==null&&typeof _.default!=="number")K.warn(`${Y}${J} \u6587\u4EF6 ${V} \u4E3A ${E} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof _.default}\uFF0Cvalue=${X$(_.default)}\uFF09`),Q=!0}}}catch(J){K.error({msg:`${Y}${G.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:bH,RedisClient:cH}=globalThis.Bun;Z0();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():"",G=typeof Z.port==="number"?Z.port:NaN,X=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(G)||G<1||G>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(!X)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(X),V=encodeURIComponent(Y),A=encodeURIComponent(J),M=`mysql://${W}:${V}@${Q}:${G}/${A}`,_=new bH({url:M,max:Z.poolMax??1,bigint:!1});try{let P=(async()=>{let E=await _`SELECT VERSION() AS version`,N=typeof E?.[0]?.version==="string"?E?.[0]?.version:String(E?.[0]?.version||""),T=N.split(".")[0],w=Number(T);if(!Number.isFinite(w))throw new D({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${N}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(w<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=w,N})(),C=new Promise((E,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(j$(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",G=Z.port||6379,X=Z.username||"",Y=Z.password||"",J=Z.db||0,W="",V=X?encodeURIComponent(X):"",A=Y?encodeURIComponent(Y):"";if(V&&A)W=`${V}:${A}@`;else if(A)W=`:${A}@`;let M=`redis://${W}${Q}:${G}/${J}`,_=new cH(M,{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 G=`Redis \u8FDE\u63A5\u5931\u8D25: ${Q&&typeof Q.message==="string"?Q.message:String(Q)}`;throw new D({message:G,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(),j$(Z))throw Z.logged=!0,Z;let G=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new D({message:G,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 lX($){let Z=new Map;for(let Q of $)try{if(Q.type!=="api")continue;let G=Q,X=G.path,Y={name:G.name,handler:G.handler,route:X},J=G.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=G.auth;if(W!==void 0)Y.auth=W;let V=G.fields;if(V!==void 0)Y.fields=V;let A=G.required;if(A!==void 0)Y.required=A;let M=G.rawBody;if(M!==void 0)Y.rawBody=M;Z.set(X,Y)}catch(G){throw K.error({err:G,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:G,meta:{subsystem:"api",operation:"load",relativePath:Q.relativePath,filePath:Q.filePath}})}return Z}Z0();m0();function CZ($,Z={}){let Q=Z.moduleLabel||"\u6A21\u5757",G=Z.getName||((_)=>{let I=_.moduleName;if(typeof I==="string"&&I.trim()!=="")return I;return B$(_.fileName)}),X=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=G(_);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=G(_),P=X(_);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 M=(_)=>{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=X(I);W.add(_);for(let C of P)M(C);W.delete(_),J.add(_),Y.push(I)};for(let _ of $){let I=G(_);M(I)}return A?Y:!1}async function iX($){let Z=[],Q=$.filter((X)=>{let Y=X.moduleName;if(typeof Y!=="string"||Y.trim()==="")return!1;if((Object.hasOwn(X,"enable")?X.enable:void 0)===!1)return!1;return!0}),G=CZ(Q,{moduleLabel:"\u94A9\u5B50"});if(G===!1)throw new D({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let X of G){let Y=X.moduleName,J=Object.hasOwn(X,"deps")?X.deps:void 0,W=Array.isArray(J)?J.filter((M)=>typeof M==="string"):[],V=Object.hasOwn(X,"handler")?X.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 rX($,Z){let Q=[],G=$.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}),X=CZ(G,{moduleLabel:"\u63D2\u4EF6"});if(X===!1)throw new D({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Y of X){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 M=A;try{let _=await M(Z);Z[J]=_,Q.push({name:J,enable:!0,deps:V,handler:M})}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 tX($,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 G=$.headers.get("x-real-ip");if(typeof G==="string"&&G.trim())return G.trim();let X=$.headers.get("cf-connecting-ip");if(typeof X==="string"&&X.trim())return X.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 z$($,Z,Q=1,G=null,X=null,Y=null){if($.requestId)K.info({event:"request_blocked",reason:Z,reasonCode:Y,code:Q,detail:X,msg:"request blocked"});return Response.json({code:Q,msg:Z,data:G,detail:X},{headers:$.corsHeaders})}function bQ($){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,(G,X)=>typeof X==="bigint"?X.toString():X);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 aX($,Z,Q){return async(G,X)=>{let Y=eG(),W=new URL(G.url).pathname||"/",V=tX(G,X),A=Date.now(),M={method:G.method,body:{},user:{},req:G,now:A,ip:V,headers:G.headers,route:W,requestId:Y,corsHeaders:{"X-Request-ID":Y}},_=$.get(W);if(_)M.api=_;return QX({requestId:Y,method:G.method,route:W,ip:V,now:A},async()=>{try{for(let I of Z)if(await I.handler(Q,M),M.response)return M.response;if(M.api&&G.method!=="OPTIONS"){let I={event:"request",apiName:M.api.name};if(M.body&&Object.keys(M.body).length>0)I.body=M.body;I.msg="request",K.info(I)}if(!M.api){if(G.method!=="OPTIONS")M.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:M.corsHeaders})}else if(M.api.handler){let I=await M.api.handler(Q,M);if(I instanceof Response)M.response=I;else M.result=I}return bQ(M)}catch(I){let P=M.api?W:G.url;return K.error({err:I,path:P,msg:"\u8BF7\u6C42\u9519\u8BEF"}),M.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},bQ(M)}})}}S$();Z0();S$();import{fileURLToPath as pH}from"url";var uH=pH(import.meta.url),C$=LZ(uH);var _5=N$(C$).endsWith("/dist")?C$:i(C$,"dist"),A5=i(C$,"checks"),M5=i(C$,"plugins"),F5=i(C$,"hooks"),z5=i(C$,"apis"),K5=i(C$,"tables"),s0=process.cwd(),R5=i(s0,"checks"),I5=i(s0,"plugins"),q5=i(s0,"hooks"),j5=i(s0,"apis"),B5=i(s0,"tables"),L5=i(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 eX($=void 0){return async(Z)=>{let Q=wZ(Z,$),G=new URL(Z.url),X=i(s0,"public",G.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:Q});let Y=Bun.file(X);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 mH=($)=>{let Z=$.split("/").map((Y)=>Y.trim()).filter((Y)=>Y.length>0),G=(Z[1]||"")==="addon"?4:3,X=Z.slice(0,Math.min(G,Z.length));if(X.length===0)return"";return`/${X.join("/")}`},$Y=($)=>{if($===!1||$===0||$==="0"||$==="\u5426")return"\u5426";if(Array.isArray($)){let Z=$.filter((Q)=>typeof Q==="string").map((Q)=>Q.trim()).filter((Q)=>Q!=="");if(Z.length>0)return Z.join(",");return"\u662F"}if(typeof $==="string"){let Z=$.trim();if(Z!=="")return Z}return"\u662F"};async function ZY($,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 X=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],Y=aG(X,(M)=>M.path),J=[],W=[],V=[],A=new Set;for(let M of Z){if(M.type!=="api")continue;let _=M,I=_.path,P=_.name,C=_.addonName;if(typeof I!=="string"||I.trim()==="")continue;if(typeof P!=="string"||P.trim()==="")continue;let E=typeof C==="string"?C:"",N=_.auth,T=$Y(N),w=mH(I);A.add(I);let v=Y[I];if(v){let c=$Y(v.auth);if(P!==v.name||I!==v.path||E!==v.addonName||w!==v.parentPath||T!==c)W.push({id:v.id,name:P,path:I,parentPath:w,addonName:E,auth:T})}else J.push({name:P,path:I,parentPath:w,addonName:E,auth:T})}for(let M of X)if(!A.has(M.path))V.push(M.id);if(W.length>0)try{await $.db.updBatch("addon_admin_api",W.map((M)=>{return{id:M.id,data:{name:M.name,path:M.path,parentPath:M.parentPath,addonName:M.addonName,auth:M.auth}}}))}catch(M){K.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){K.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){K.error({err:M,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function QY($){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 dH}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 G=new Bun.CryptoHasher("md5",$);return G.update(Z),G.digest(Q)}static sha1($,Z="hex"){let Q=new Bun.CryptoHasher("sha1");return Q.update($),Q.digest(Z)}static hmacSha1($,Z,Q="hex"){let G=new Bun.CryptoHasher("sha1",$);return G.update(Z),G.digest(Q)}static sha256($,Z="hex"){let Q=new Bun.CryptoHasher("sha256");return Q.update($),Q.digest(Z)}static rsaSha256($,Z,Q="hex"){let G=dH("RSA-SHA256");return G.update($),G.sign(Z,Q)}static hmacSha256($,Z,Q="hex"){let G=new Bun.CryptoHasher("sha256",$);return G.update(Z),G.digest(Q)}static sha512($,Z="hex"){let Q=new Bun.CryptoHasher("sha512");return Q.update($),Q.digest(Z)}static hmacSha512($,Z,Q="hex"){let G=new Bun.CryptoHasher("sha512",$);return G.update(Z),G.digest(Q)}static hash($,Z,Q="hex"){let G=new Bun.CryptoHasher($);return G.update(Z),G.digest(Q)}static hmac($,Z,Q,G="hex"){let X=new Bun.CryptoHasher($,Z);return X.update(Q),X.digest(G)}static async hashFile($,Z="sha256",Q="hex"){let G=Bun.file($),X=new Bun.CryptoHasher(Z),J=G.stream().getReader();try{while(!0){let{done:W,value:V}=await J.read();if(W)break;X.update(V)}return X.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)),G="";for(let X=0;X<Q.length;X++)G+=Q[X].toString(16).padStart(2,"0");return G.slice(0,$)}static fastHash($,Z=0){let Q=Bun.hash($,Z);return typeof Q==="bigint"?Number(Q):Q}}Z0();async function GY($,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"]}),G=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),X=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:G.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),sort:0};if(typeof X.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();fQ();function nH($){let Z=$.config?.disableMenus,Q=Array.isArray(Z)?Z:[],G=[];for(let Y of Q){if(typeof Y!=="string")continue;let J=Y.trim();if(!J)continue;G.push(J)}if(G.length===0)return()=>!1;let X=G.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 X){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 W)if(M.call(V,_))return!0}return!1}}function XY($,Z){let Q=[];for(let G of $){if(G===null||typeof G!=="object")continue;let X=typeof G.path==="string"?String(G.path).trim():"";if(X&&Z(X))continue;let Y=G.children,J=Array.isArray(Y)&&Y.length>0?XY(Y,Z):[],W={};if(typeof G.name==="string")W.name=G.name;if(typeof G.path==="string")W.path=G.path;if(typeof G.sort==="number")W.sort=G.sort;if(typeof G.parentPath==="string")W.parentPath=G.parentPath;if(J.length>0)W.children=J;Q.push(W)}return Q}function sH($){let Z=new Map,Q=[];for(let G of $)Q.push({menu:G,parentPathFromTree:""});while(Q.length>0){let G=Q.pop(),X=G?G.menu:null;if(!X)continue;let Y=typeof X.path==="string"?X.path:"",J=X.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 X.name==="string"?X.name:"";if(!W)continue;let V=typeof X.sort==="number"?X.sort:999999,M=typeof X.parentPath==="string"?X.parentPath:typeof G?.parentPathFromTree==="string"?G.parentPathFromTree:SX(Y);Z.set(Y,{path:Y,name:W,sort:V,parentPath:M})}return Z}async function YY($,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=nH($),G=XY(Z,Q),X=sH(G),Y=new Set;for(let W of X.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||[],M=A.filter((w)=>typeof w?.state==="number"&&w.state>=0),_=new Map,I=new Set,P=new Map;for(let w of M){if(typeof w?.path!=="string"||!w.path)continue;if(typeof w?.id!=="number")continue;if(Q(w.path))continue;let v=_.get(w.path);if(!v){_.set(w.path,w);continue}let c=typeof v?.id==="number"?v.id:0,f=w.id;if(f>c){if(_.set(w.path,w),c>0)I.add(c);let y=P.get(w.path)||{keptId:f,removedIds:[]};if(y.keptId=f,c>0)y.removedIds.push(c);P.set(w.path,y)}else{if(f>0)I.add(f);let y=P.get(w.path)||{keptId:c,removedIds:[]};if(y.keptId=c,f>0)y.removedIds.push(f);P.set(w.path,y)}}if(P.size>0){let w=[];for(let v of P.entries()){let c=v[0],f=v[1];if(w.push({path:c,keptId:f.keptId,removedIds:f.removedIds}),w.length>=10)break}K.warn({table:J,duplicatePaths:P.size,duplicateIds:I.size,examples:w,msg:"addon_admin_menu \u68C0\u6D4B\u5230\u91CD\u590D path \u8BB0\u5F55\uFF1A\u5DF2\u4FDD\u7559 id \u6700\u5927\u7684\u4E00\u6761\u5E76\u5220\u9664\u5176\u4F59\u8BB0\u5F55"})}let C=[],E=[];for(let w of X.values()){let v=_.get(w.path);if(v){let c=typeof v.parentPath==="string"?v.parentPath:"";if(v.name!==w.name||v.sort!==w.sort||c!==w.parentPath)C.push({id:v.id,data:{name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort}})}else E.push({name:w.name,path:w.path,parentPath:w.parentPath,sort:w.sort})}if(C.length>0)await W.updBatch(J,C);if(E.length>0)await W.insBatch(J,E);let N=new Set;for(let w of M){if(typeof w?.path!=="string"||!w.path)continue;if(!Y.has(w.path)){if(typeof w?.id==="number")N.add(w.id)}}for(let w of I)if(typeof w==="number"&&w>0)N.add(w);for(let w of A){if(typeof w?.path!=="string"||!w.path)continue;if(!Q(w.path))continue;if(typeof w?.id==="number"&&w.id>0)N.add(w.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():"",G=SZ(Z,Q),X=$.default??null;if(X===null){if(G.input==="array"||G.input==="array_number"||G.input==="array_integer")X="[]"}return{name:$.name,type:G.type,input:G.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:X,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function pQ($){return String($).replace(/"/g,"\\\"")}function uQ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let Q of $)Z.push(uQ(Q));return Z}return String($)}function oH($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function lH($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function cQ($){if(oH($))return $;if(Array.isArray($)){let Z=[];for(let Q of $){let G=cQ(Q);if(G===null)return null;Z.push(G)}return Z}if(lH($)){let Z={};for(let[Q,G]of Object.entries($)){if(G===void 0)continue;let X=cQ(G);if(X===null)return null;Z[Q]=X}return Z}return null}function JY($){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 G=cQ(Q);if(G!==null){Z.push(G);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 X of $){if(!X||X.type!=="table")continue;let Y=X.source==="addon"?`addon_${p(X.addonName)}_${p(X.fileName)}`:p(X.fileName),J=X.content;for(let A of Object.values(J))k.normalizeFieldDefinitionInPlace(A);let W=await k.tableExists(this.db,this.dbName,Y),V={item:X,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),M=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=M}Z.push(V)}k.throwIfIncompatibleTypeChanges(Q);for(let X of Z){if(!X.existsTable)continue;if(!X.existingColumns||!X.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${X.tableName}\uFF09`);let Y=k.buildTablePlan({tableName:X.tableName,fields:X.tableFields,existingColumns:X.existingColumns,existingIndexes:X.existingIndexes});X.plan=Y.plan,X.planSummary=Y.summary,X.planDetails=Y.details;for(let J of Y.incompatibleTypeChanges)Q.push(J)}k.throwIfIncompatibleTypeChanges(Q);let G=[];for(let X of Z){let{item:Y,tableName:J,tableFields:W,existsTable:V}=X;try{if(V){let{plan:A,planSummary:M,planDetails:_}=X;if(A&&A.changed&&M&&_){let I=`[\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}`,P=_.fieldChanges.flatMap((N)=>N.changes.map((T)=>{let w=String(T.current??""),v=String(T.expected??"");return`- ${N.dbFieldName}.${T.type}: ${w} -> ${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`}),E=[];for(let N of P)E.push(N);for(let N of C)E.push(N);K.debug(I);for(let N of E)K.debug(`[\u8868 ${J}] \u53D8\u66F4\u660E\u7EC6 ${N}`);await k.applyTablePlan(this.db,J,A)}}else await k.createTable(this.db,J,W),G.push(J)}catch(A){let M=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:M,sqlInfo:_?{sql:_.sql,params:_.params,duration:_.duration}:null,err:A}),A.__syncTableLogged=!0,A}}if(G.length>0){let X=[];X.push(`\u521B\u5EFA\u8868\u5217\u8868\uFF08\u5171${G.length}\u5F20\uFF09:`);for(let J of G)X.push(`- ${J}`);let Y=X.join(`
|
|
10
|
-
`);K.debug(Y,{truncate:!1,console:!1}),K.printPlainLines(Y,{stream:"stdout"})}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(j$(Z)&&Z.noLog===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let Q=String(Z?.message||Z),G=Z?.sqlInfo;throw K.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:Q,sqlInfo:G?{sql:G.sql,params:G.params,duration:G.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,Q){let G=String(Q?.message||Q),X=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${G}`);if(Q?.sqlInfo)X.sqlInfo=Q.sqlInfo;return X}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,G=null,X=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 M=[];for(let _ of A){let I=String(_).replace(/'/g,"''");M.push(`'${I}'`)}return`${W[J]}(${M.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 G!=="number"||typeof X!=="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]}(${G},${X})`;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 G=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(G))return` DEFAULT ${G.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${G.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let Q=String(Z||"").toLowerCase(),G=String($).trim();if(k.INT_TYPES.has(Q)||k.DECIMAL_TYPES.has(Q)||k.FLOAT_TYPES.has(Q)){if(/^[+-]?\d+(?:\.\d+)?$/.test(G)){let X="",Y=G;if(Y.startsWith("+")||Y.startsWith("-"))X=Y.startsWith("-")?"-":"",Y=Y.slice(1);let J=Y.split("."),W=J[0]||"0",V=J[1]||"",A=W.replace(/^0+(\d)/,"$1"),M=V.replace(/0+$/g,""),_=A===""?"0":A,I=M.length>0?`${_}.${M}`:_;return X==="-"&&I!=="0"?`-${I}`:I}}return G}static buildIndexClause($,Z,Q){let G=k.quoteIdentifier($);if(Q==="create"){let X=k.quoteIdentifier(Z);return`ADD INDEX ${G} (${X})`}return`DROP INDEX ${G}`}static getSystemColumnDef($){let Z=null;for(let G of k.SYSTEM_FIELDS)if(G.name===$){Z=G;break}if(!Z)return null;return`${k.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${pQ(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,G){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:G}),J}}static buildBusinessColumnDefs($){let Z=[];for(let[Q,G]of Object.entries($))Z.push(k.buildColumnSql(Q,G));return Z}static buildColumnSql($,Z){let Q=t0(Z),G=p($),X=k.quoteIdentifier(G),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`${X} ${Y}${V}${A}${W} COMMENT "${pQ(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}),G=k.buildSystemFieldPlan({systemFieldNames:Z,existingColumns:$.existingColumns}),X=k.buildIndexPlan({fields:$.fields,existingColumns:$.existingColumns,existingIndexes:$.existingIndexes,systemFieldNames:Z}),Y=[...Q.alterClauses,...G.alterClauses],J=X.indexActions,W=Q.addedBusiness,V=Q.modified,A=G.addedSystem,M=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:X.indexActions},incompatibleTypeChanges:M}}static buildFieldPlan($){let Z=[],Q=0,G=0,X=[],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){G=G+1,X.push({fieldKey:J,dbFieldName:V,changes:A});let M=A.find((_)=>_.type==="datatype");if(M){let _=t0(W),I=k.getSqlType(_.type,_.max,_.unsigned,_.precision,_.scale,_.input),P=k.getIncompatibleTypeChange($.tableName,V,String(M.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:G,changeDetails:X,incompatibleTypeChanges:Y}}static buildSystemFieldPlan($){let Z=[],Q=0;for(let G of $.systemFieldNames)if(!$.existingColumns[G]){let X=k.getSystemColumnDef(G);if(X)Q=Q+1,Z.push(`ADD COLUMN ${X}`)}return{alterClauses:Z,addedSystem:Q}}static buildIndexPlan($){let Z={};for(let G of k.SYSTEM_INDEX_FIELDS)if($.existingColumns[G]||$.systemFieldNames.includes(G))Z[`idx_${G}`]=G;for(let[G,X]of Object.entries($.fields)){let Y=p(G);if(X.index&&!X.unique)Z[`idx_${Y}`]=Y}return{indexActions:[...Object.entries(Z).filter(([G])=>!$.existingIndexes[G]).map(([G,X])=>({action:"create",indexName:G,fieldName:X})),...Object.entries($.existingIndexes).filter(([G,X])=>!Z[G]&&G.startsWith("idx_")&&Array.isArray(X)&&X.length===1&&!k.SYSTEM_INDEX_FIELDS.includes(X[0])).map(([G,X])=>({action:"drop",indexName:G,fieldName:X[0]}))]}}static getIncompatibleTypeChange($,Z,Q,G){let X=String(Q||"").toLowerCase(),Y=String(G||"").toLowerCase(),J=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),W=Y.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(J!==W&&!k.isCompatibleTypeChange(X,Y))return{tableName:$,dbFieldName:Z,currentType:String(Q??""),expectedType:String(G??"")};return null}static collectIncompatibleTypeChanges($,Z,Q){let G=[];for(let[X,Y]of Object.entries(Q)){let J=p(X),W=Z[J];if(!W)continue;let A=k.compareFieldDefinition(W,Y).find((P)=>P.type==="datatype");if(!A)continue;let M=t0(Y),_=k.getSqlType(M.type,M.max,M.unsigned,M.precision,M.scale,M.input),I=k.getIncompatibleTypeChange($,J,String(A.current??""),_);if(I)G.push(I)}return G}static throwIfIncompatibleTypeChanges($){if($.length===0)return;let Z=[];for(let G of $)Z.push(`- ${G.tableName}.${G.dbFieldName}: ${G.currentType} -> ${G.expectedType}`);let Q=[];Q.push("\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4\uFF08\u68C0\u6D4B\u5230\u4E0D\u517C\u5BB9/\u6536\u7F29\u53D8\u66F4\uFF09:");for(let G of Z)Q.push(G);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 G=Math.max(0,Math.floor(Z*0.6)),X=Math.max(0,Z-G),Y=Q.slice(0,G),J=Q.slice(Math.max(0,Q.length-X));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 G=k.stripAlgorithmAndLock(Z);if(G!==Z)Q.push({stmt:G,reason:"\u79FB\u9664 ALGORITHM/LOCK"});let X=[];for(let Y of Q){if(!Y.stmt||Y.stmt.trim()==="")continue;if(Y.stmt===Z)continue;if(X.some((J)=>J.stmt===Y.stmt))continue;X.push(Y)}return X}static async executeDDLSafely($,Z){try{return await $.unsafe(Z),!0}catch(Q){let G=k.buildDdlFallbackCandidates(Z),X=[],Y=Q;for(let M of G)try{return await $.unsafe(M.stmt),K.debug(`[DDL\u964D\u7EA7] ${M.reason}\uFF08\u5DF2\u6210\u529F\uFF09`),!0}catch(_){Y=_;let I=String(_?.message||_);X.push(`${M.reason}: ${I}`)}let J=String(Q?.message||Q),W=k.truncateForLog(String(Z),2000),V=X.length>0?X.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(),G=String(Z||"").toLowerCase();if(Q===G)return!1;let X=Q.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),Y=G.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(k.TEXT_FAMILY.has(X)&&k.TEXT_FAMILY.has(Y))return!0;if(k.INT_TYPES.has(X)&&k.INT_TYPES.has(Y)){let J=["tinyint","smallint","mediumint","int","bigint"],W=J.indexOf(X);if(J.indexOf(Y)>W)return!0}if(X==="float"&&Y==="double")return!0;if(X==="varchar"&&(Y==="text"||Y==="mediumtext"||Y==="longtext"))return!0;if(X==="char"&&Y==="varchar"||X==="varchar"&&Y==="char")return!0;if(X==="datetime"&&Y==="bigint"||X==="bigint"&&Y==="datetime")return!1;return!1}static compareFieldDefinition($,Z){let Q=[],G=t0(Z),X=k.getSqlType(G.type,G.max,G.unsigned,G.precision,G.scale,G.input).toLowerCase().replace(/\s+/g," ").trim(),Y=(typeof $.columnType==="string"&&$.columnType.trim()!==""?$.columnType:typeof $.type==="string"&&$.type.trim()!==""?k.isStringOrArrayType(G.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!==X)Q.push({type:"datatype",current:W,expected:X});let V=G.nullable;if($.nullable!==V)Q.push({type:"nullable",current:$.nullable,expected:V});let A=String(G.type||"").toLowerCase();if(!k.TEXT_FAMILY.has(A)&&A!=="json"){let I=k.resolveDefaultValue(G.default,G.type),P=k.normalizeDefaultForCompare($.defaultValue,G.type),C=k.normalizeDefaultForCompare(I,G.type);if(P!==C)Q.push({type:"default",current:$.defaultValue,expected:I})}let M=String($.comment??""),_=String(G.name??"");if(M!==_)Q.push({type:"comment",current:M,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(G){throw k.buildRuntimeIoError("\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728",Q,G)}}static async getTableColumns($,Z,Q){let G={};try{let X=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 X.data){let J=uQ(Y.COLUMN_DEFAULT);G[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 G}catch(X){throw k.buildRuntimeIoError("\u8BFB\u53D6\u5217\u4FE1\u606F",Q,X)}}static async getTableIndexes($,Z,Q){let G={};try{let X=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 X.data){let J=Y.INDEX_NAME,W=G[J];if(Array.isArray(W))W.push(Y.COLUMN_NAME);else G[J]=[Y.COLUMN_NAME]}return G}catch(X){throw k.buildRuntimeIoError("\u8BFB\u53D6\u7D22\u5F15\u4FE1\u606F",Q,X)}}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,G=String(Q).split(".")[0]||"0",X=parseInt(G,10);if(!Number.isFinite(X)||X<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 X=`ALTER TABLE ${k.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${Q.alterClauses.join(", ")}`;await k.executeDDLSafely($,X)}await k.applyIndexPlan($,Z,Q.indexActions,"create")}static async applyIndexPlan($,Z,Q,G){let X=Q.filter((W)=>W.action===G);if(X.length===0)return;let Y=X.map((W)=>k.buildIndexClause(W.indexName,W.fieldName,G)),J=G==="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,G=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,M=`CREATE TABLE ${J} (
|
|
15
|
-
${Y}
|
|
16
|
-
) ENGINE=${W} DEFAULT CHARSET=${V} COLLATE=${A}`;await $.unsafe(M);let _=[];for(let I of G){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 E=`idx_${C}`;_.push(k.buildIndexClause(E,C,"create"))}}await k.runIndexBatch($,Z,_,"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25")}static async modifyTable($,Z,Q,G){let X=await k.getTableColumns($,Z,Q),Y=await k.getTableIndexes($,Z,Q),{plan:J,summary:W,details:V}=k.buildTablePlan({tableName:Q,fields:G,existingColumns:X,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}`,M=V.fieldChanges.flatMap((P)=>P.changes.map((C)=>{let E=String(C.current??""),N=String(C.expected??"");return`- ${P.dbFieldName}.${C.type}: ${E} -> ${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=[...M,..._];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 HY=($,Z=Bun.nanoseconds())=>{let Q=(Z-$)/1e6;if(Q<1000)return`${Q.toFixed(2)} \u6BEB\u79D2`;else return`${(Q/1000).toFixed(2)} \u79D2`};S$();S$();import{existsSync as iH,readdirSync as rH}from"fs";xQ();m0();var WY=()=>{let $=new Map;return((Q,G,X)=>{if(!iH(Q))return;let Y=rH(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:G,sourceName:X,name:J.name,camelName:B$(J.name),rootDir:W};$.set(J.name,V)}})(i(s0,"node_modules","@befly-addon"),"addon","\u7EC4\u4EF6"),Array.from($.values())};qZ();var tH={name:"auth",enable:!0,deps:["cors"],handler:async($,Z)=>{let Q=Z.req.headers.get("authorization");if(Q&&Q.startsWith("Bearer ")){let G=Q.substring(7);try{let X=await $.jwt.verify(G);Z.user=X,XX(X.id,X.roleCode,X.nickname,X.roleType)}catch{Z.user={}}}else Z.user={}}},UY=tH;var aH={name:"cors",enable:!0,deps:[],handler:async($,Z)=>{let Q=Z.req,X=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,X);if(Z.corsHeaders=Y,Q.method==="OPTIONS"){Z.response=new Response(null,{status:204,headers:Y});return}}},VY=aH;var eH=":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",$W="[: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]["+eH+"]*",ZW=new RegExp("^"+$W+"$");function EZ($,Z){let Q=[],G=Z.exec($);while(G){let X=[];X.startIndex=Z.lastIndex-G[0].length;let Y=G.length;for(let J=0;J<Y;J++)X.push(G[J]);Q.push(X),G=Z.exec($)}return Q}var d$=function($){let Z=ZW.exec($);return!(Z===null||typeof Z>"u")};function OY($){return typeof $<"u"}var QW={allowBooleanAttributes:!1,unpairedTags:[]};function zY($,Z){Z=Object.assign({},QW,Z);let Q=[],G=!1,X=!1;if($[0]==="\uFEFF")$=$.substr(1);for(let Y=0;Y<$.length;Y++)if($[Y]==="<"&&$[Y+1]==="?"){if(Y+=2,Y=AY($,Y),Y.err)return Y}else if($[Y]==="<"){let J=Y;if(Y++,$[Y]==="!"){Y=MY($,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(!VW(V)){let _;if(V.trim().length===0)_="Invalid space after '<'.";else _="Tag '"+V+"' is an invalid name.";return W0("InvalidTag",_,o0($,Y))}let A=YW($,Y);if(A===!1)return W0("InvalidAttr","Attributes for '"+V+"' have open quote.",o0($,Y));let M=A.value;if(Y=A.index,M[M.length-1]==="/"){let _=Y-M.length;M=M.substring(0,M.length-1);let I=FY(M,Z);if(I===!0)G=!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(M.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)X=!0}else{let _=FY(M,Z);if(_!==!0)return W0(_.err.code,_.err.msg,o0($,Y-M.length+_.err.line));if(X===!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});G=!0}for(Y++;Y<$.length;Y++)if($[Y]==="<")if($[Y+1]==="!"){Y++,Y=MY($,Y);continue}else if($[Y+1]==="?"){if(Y=AY($,++Y),Y.err)return Y}else break;else if($[Y]==="&"){let _=WW($,Y);if(_==-1)return W0("InvalidChar","char '&' is not expected.",o0($,Y));Y=_}else if(X===!0&&!_Y($[Y]))return W0("InvalidXml","Extra text at the end",o0($,Y));if($[Y]==="<")Y--}}else{if(_Y($[Y]))continue;return W0("InvalidChar","char '"+$[Y]+"' is not expected.",o0($,Y))}if(!G)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 _Y($){return $===" "||$==="\t"||$===`
|
|
18
|
-
`||$==="\r"}function AY($,Z){let Q=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let G=$.substr(Q,Z-Q);if(Z>5&&G==="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 MY($,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 GW='"',XW="'";function YW($,Z){let Q="",G="",X=!1;for(;Z<$.length;Z++){if($[Z]===GW||$[Z]===XW)if(G==="")G=$[Z];else if(G!==$[Z]);else G="";else if($[Z]===">"){if(G===""){X=!0;break}}Q+=$[Z]}if(G!=="")return!1;return{value:Q,index:Z,tagClosed:X}}var JW=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function FY($,Z){let Q=EZ($,JW),G={};for(let X=0;X<Q.length;X++){if(Q[X][1].length===0)return W0("InvalidAttr","Attribute '"+Q[X][2]+"' has no space in starting.",WZ(Q[X]));else if(Q[X][3]!==void 0&&Q[X][4]===void 0)return W0("InvalidAttr","Attribute '"+Q[X][2]+"' is without value.",WZ(Q[X]));else if(Q[X][3]===void 0&&!Z.allowBooleanAttributes)return W0("InvalidAttr","boolean attribute '"+Q[X][2]+"' is not allowed.",WZ(Q[X]));let Y=Q[X][2];if(!UW(Y))return W0("InvalidAttr","Attribute '"+Y+"' is an invalid name.",WZ(Q[X]));if(!G.hasOwnProperty(Y))G[Y]=1;else return W0("InvalidAttr","Attribute '"+Y+"' is repeated.",WZ(Q[X]))}return!0}function HW($,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 WW($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,HW($,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 UW($){return d$($)}function VW($){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 OW={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},KY=function($){return Object.assign({},OW,$)};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 G=1,X=!1,Y=!1,J="";for(;Z<$.length;Z++)if($[Z]==="<"&&!Y){if(X&&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(X&&D$($,"!ELEMENT",Z)){Z+=8;let{index:W}=this.readElementExp($,Z+1);Z=W}else if(X&&D$($,"!ATTLIST",Z))Z+=8;else if(X&&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");G++,J=""}else if($[Z]===">"){if(Y){if($[Z-1]==="-"&&$[Z-2]==="-")Y=!1,G--}else G--;if(G===0)break}else if($[Z]==="[")X=!0;else J+=$[Z];if(G!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:Q,i:Z}}readEntityExp($,Z){Z=i0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")Q+=$[Z],Z++;if(UZ(Q),Z=i0($,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 G="";return[Z,G]=this.readIdentifierVal($,Z,"entity"),Z--,[Q,G,Z]}readNotationExp($,Z){Z=i0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;!this.suppressValidationErr&&UZ(Q),Z=i0($,Z);let G=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&G!=="SYSTEM"&&G!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${G}"`);Z+=G.length,Z=i0($,Z);let X=null,Y=null;if(G==="PUBLIC"){if([Z,X]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=i0($,Z),$[Z]==='"'||$[Z]==="'")[Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(G==="SYSTEM"){if([Z,Y]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!Y)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:Q,publicIdentifier:X,systemIdentifier:Y,index:--Z}}readIdentifierVal($,Z,Q){let G="",X=$[Z];if(X!=='"'&&X!=="'")throw Error(`Expected quoted string, found "${X}"`);Z++;while(Z<$.length&&$[Z]!==X)G+=$[Z],Z++;if($[Z]!==X)throw Error(`Unterminated ${Q} value`);return Z++,[Z,G]}readElementExp($,Z){Z=i0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;if(!this.suppressValidationErr&&!d$(Q))throw Error(`Invalid element name: "${Q}"`);Z=i0($,Z);let G="";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]!==")")G+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:Q,contentModel:G.trim(),index:Z}}readAttlistExp($,Z){Z=i0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;UZ(Q),Z=i0($,Z);let G="";while(Z<$.length&&!/\s/.test($[Z]))G+=$[Z],Z++;if(!UZ(G))throw Error(`Invalid attribute name: "${G}"`);Z=i0($,Z);let X="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(X="NOTATION",Z+=8,Z=i0($,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=i0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,X+=" ("+J.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))X+=$[Z],Z++;let J=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!J.includes(X.toUpperCase()))throw Error(`Invalid attribute type: "${X}"`)}Z=i0($,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:G,attributeType:X,defaultValue:Y,index:Z}}}var i0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function D$($,Z,Q){for(let G=0;G<Z.length;G++)if(Z[G]!==$[Q+G+1])return!1;return!0}function UZ($){if(d$($))return $;else throw Error(`Invalid entity name ${$}`)}var _W=/^[-+]?0x[a-fA-F0-9]+$/,AW=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,MW={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function mQ($,Z={}){if(Z=Object.assign({},MW,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&&_W.test(Q))return RW(Q,16);else if(Q.includes("e")||Q.includes("E"))return zW($,Q,Z);else{let G=AW.exec(Q);if(G){let X=G[1]||"",Y=G[2],J=KW(G[3]),W=X?$[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===`${X}${J}`)return V;else return $;let M=Y?J:Q;if(Y)return M===A||X+M===A?V:$;else return M===A||M===X+A?V:$}}else return $}}var FW=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function zW($,Z,Q){if(!Q.eNotation)return $;let G=Z.match(FW);if(G){let X=G[1]||"",Y=G[3].indexOf("e")===-1?"E":"e",J=G[2],W=X?$[J.length+1]===Y:$[J.length]===Y;if(J.length>1&&W)return $;else if(J.length===1&&(G[3].startsWith(`.${Y}`)||G[3][0]===Y))return Number(Z);else if(Q.leadingZeros&&!W)return Z=(G[1]||"")+G[3],Number(Z);else return $}else return $}function KW($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function RW($,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 dQ($){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)=>RY(Q,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,Q)=>RY(Q,16,"&#x")}},this.addExternalEntities=IW,this.parseXml=PW,this.parseTextData=qW,this.resolveNameSpace=jW,this.buildAttributesMap=LW,this.isItStopNode=EW,this.replaceEntitiesValue=CW,this.readStopNodeData=NW,this.saveTextToParentTag=wW,this.addChild=SW,this.ignoreAttributesFn=dQ(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 IW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let G=Z[Q];this.lastEntities[G]={regex:new RegExp("&"+G+";","g"),val:$[G]}}}function qW($,Z,Q,G,X,Y,J){if($!==void 0){if(this.options.trimValues&&!G)$=$.trim();if($.length>0){if(!J)$=this.replaceEntitiesValue($);let W=this.options.tagValueProcessor(Z,$,Q,X,Y);if(W===null||W===void 0)return $;else if(typeof W!==typeof $||W!==$)return W;else if(this.options.trimValues)return sQ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return sQ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function jW($){if(this.options.removeNSPrefix){let Z=$.split(":"),Q=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=Q+Z[1]}return $}var BW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function LW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let Q=EZ($,BW),G=Q.length,X={};for(let Y=0;Y<G;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)X[V]=W;else if(typeof A!==typeof W||A!==W)X[V]=A;else X[V]=sQ(W,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)X[V]=!0}}if(!Object.keys(X).length)return;if(this.options.attributesGroupName){let Y={};return Y[this.options.attributesGroupName]=X,Y}return X}}var PW=function($){$=$.replace(/\r\n?/g,`
|
|
19
|
-
`);let Z=new a0("!xml"),Q=Z,G="",X="",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)G=this.saveTextToParentTag(G,Q,X);let M=X.substring(X.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)_=X.lastIndexOf(".",X.lastIndexOf(".")-1),this.tagsNodeStack.pop();else _=X.lastIndexOf(".");X=X.substring(0,_),Q=this.tagsNodeStack.pop(),G="",J=V}else if($[J+1]==="?"){let V=nQ($,J,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(G=this.saveTextToParentTag(G,Q,X),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,X);this.addChild(Q,A,X,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);G=this.saveTextToParentTag(G,Q,X),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);G=this.saveTextToParentTag(G,Q,X);let M=this.parseTextData(A,Q.tagname,X,!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=nQ($,J,this.options.removeNSPrefix),A=V.tagName,M=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&&G){if(Q.tagname!=="!xml")G=this.saveTextToParentTag(G,Q,X,!1)}let C=Q;if(C&&this.options.unpairedTags.indexOf(C.tagname)!==-1)Q=this.tagsNodeStack.pop(),X=X.substring(0,X.lastIndexOf("."));if(A!==Z.tagname)X+=X?"."+A:A;let E=J;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,X,A)){let N="";if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),X=X.substr(0,X.length-1),_=A;else _=_.substr(0,_.length-1);J=V.closeIndex}else if(this.options.unpairedTags.indexOf(A)!==-1)J=V.closeIndex;else{let w=this.readStopNodeData($,M,P+1);if(!w)throw Error(`Unexpected end of ${M}`);J=w.i,N=w.tagContent}let T=new a0(A);if(A!==_&&I)T[":@"]=this.buildAttributesMap(_,X);if(N)N=this.parseTextData(N,A,X,!0,I,!0,!0);X=X.substr(0,X.lastIndexOf(".")),T.add(this.options.textNodeName,N),this.addChild(Q,T,X,E)}else{if(_.length>0&&_.lastIndexOf("/")===_.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),X=X.substr(0,X.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(_,X);this.addChild(Q,N,X,E),X=X.substr(0,X.lastIndexOf("."))}else{let N=new a0(A);if(this.tagsNodeStack.push(Q),A!==_&&I)N[":@"]=this.buildAttributesMap(_,X);this.addChild(Q,N,X,E),Q=N}G="",J=P}}else G+=$[J];return Z.child};function SW($,Z,Q,G){if(!this.options.captureMetaData)G=void 0;let X=this.options.updateTag(Z.tagname,Q,Z[":@"]);if(X===!1);else if(typeof X==="string")Z.tagname=X,$.addChild(Z,G);else $.addChild(Z,G)}var CW=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 wW($,Z,Q,G){if($){if(G===void 0)G=Z.child.length===0;if($=this.parseTextData($,Z.tagname,Q,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,G),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function EW($,Z,Q,G){if(Z&&Z.has(G))return!0;if($&&$.has(Q))return!0;return!1}function TW($,Z,Q=">"){let G,X="";for(let Y=Z;Y<$.length;Y++){let J=$[Y];if(G){if(J===G)G=""}else if(J==='"'||J==="'")G=J;else if(J===Q[0])if(Q[1]){if($[Y+1]===Q[1])return{data:X,index:Y}}else return{data:X,index:Y};else if(J==="\t")J=" ";X+=J}}function k$($,Z,Q,G){let X=$.indexOf(Z,Q);if(X===-1)throw Error(G);else return X+Z.length-1}function nQ($,Z,Q,G=">"){let X=TW($,Z+1,G);if(!X)return;let{data:Y,index:J}=X,W=Y.search(/\s/),V=Y,A=!0;if(W!==-1)V=Y.substring(0,W),Y=Y.substring(W+1).trimStart();let M=V;if(Q){let _=V.indexOf(":");if(_!==-1)V=V.substr(_+1),A=V!==X.data.substr(_+1)}return{tagName:V,tagExp:Y,closeIndex:J,attrExpPresent:A,rawTagName:M}}function NW($,Z,Q){let G=Q,X=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(X--,X===0)return{tagContent:$.substring(G,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=nQ($,Q,">");if(Y){if((Y&&Y.tagName)===Z&&Y.tagExp[Y.tagExp.length-1]!=="/")X++;Q=Y.closeIndex}}}function sQ($,Z,Q){if(Z&&typeof $==="string"){let G=$.trim();if(G==="true")return!0;else if(G==="false")return!1;else return mQ($,Q)}else if(OY($))return $;else return""}function RY($,Z,Q){let G=Number.parseInt($,Z);if(G>=0&&G<=1114111)return String.fromCodePoint(G);else return Q+$+";"}var oQ=a0.getMetaDataSymbol();function lQ($,Z){return IY($,Z)}function IY($,Z,Q){let G,X={};for(let Y=0;Y<$.length;Y++){let J=$[Y],W=DW(J),V="";if(Q===void 0)V=W;else V=Q+"."+W;if(W===Z.textNodeName)if(G===void 0)G=J[W];else G+=""+J[W];else if(W===void 0)continue;else if(J[W]){let A=IY(J[W],Z,V),M=vW(A,Z);if(J[oQ]!==void 0)A[oQ]=J[oQ];if(J[":@"])kW(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(X[W]!==void 0&&X.hasOwnProperty(W)){if(!Array.isArray(X[W]))X[W]=[X[W]];X[W].push(A)}else if(Z.isArray(W,V,M))X[W]=[A];else X[W]=A}}if(typeof G==="string"){if(G.length>0)X[Z.textNodeName]=G}else if(G!==void 0)X[Z.textNodeName]=G;return X}function DW($){let Z=Object.keys($);for(let Q=0;Q<Z.length;Q++){let G=Z[Q];if(G!==":@")return G}}function kW($,Z,Q,G){if(Z){let X=Object.keys(Z),Y=X.length;for(let J=0;J<Y;J++){let W=X[J];if(G.isArray(W,Q+"."+W,!0,!0))$[W]=[Z[W]];else $[W]=Z[W]}}}function vW($,Z){let{textNodeName:Q}=Z,G=Object.keys($).length;if(G===0)return!0;if(G===1&&($[Q]||typeof $[Q]==="boolean"||$[Q]===0))return!0;return!1}class VZ{constructor($){this.externalEntities={},this.options=KY($)}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 X=zY($,Z);if(X!==!0)throw Error(`${X.err.msg}:${X.err.line}:${X.err.col}`)}let Q=new DZ(this.options);Q.addExternalEntities(this.externalEntities);let G=Q.parseXml($);if(this.options.preserveOrder||G===void 0)return G;else return lQ(G,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 xW=new VZ,fW={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),G=Object.fromEntries(Q.searchParams);Z.body=G}else if(Z.req.method==="POST"){let Q=Z.req.headers.get("content-type")||"",G=new URL(Z.req.url),X=Object.fromEntries(G.searchParams);try{if(Q.includes("application/json")){let Y=await Z.req.json(),J={...X,...Y};Z.body=J}else if(Q.includes("application/xml")||Q.includes("text/xml")){let Y=await Z.req.text(),J=xW.parse(Y),W=Object.keys(J)[0],V=W&&typeof J[W]==="object"?J[W]:J,A={...X,...V};Z.body=A}else{Z.response=z$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:Q},"parser");return}}catch{Z.response=z$(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}}}},qY=fW;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 gW={name:"permission",enable:!0,deps:["validator"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.auth===!1)return;let Q=Z.api.auth;if(typeof Z.user.id!=="number"){Z.response=z$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;if(Array.isArray(Q)){let J=Z.user.roleType;if(typeof J!=="string"||!Q.includes(J)){let W=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,V=typeof Z.route==="string"&&Z.route.length>0?Z.route:null,A=W?W:V?V:"\u672A\u77E5\u63A5\u53E3";Z.response=z$(Z,`\u65E0\u6743\u8BBF\u95EE ${A} \u63A5\u53E3`,1,null,{apiLabel:A},"permission");return}return}let G=Z.route,X=Z.user.roleCode,Y=!1;if(X&&$.redis)try{let J=e.roleApis(X);Y=await $.redis.sismember(J,G)}catch(J){K.error({event:"hook_permission_redis_error",apiPath:G,roleCode:X,err:J,msg:"hook permission redis error"}),Y=!1}if(!Y){let J=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,W=typeof G==="string"&&G.length>0?G:null,V=J?J:W?W:"\u672A\u77E5\u63A5\u53E3";Z.response=z$(Z,`\u65E0\u6743\u8BBF\u95EE ${V} \u63A5\u53E3`,1,null,{apiLabel:V},"permission");return}}},jY=gW;var iQ={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:".+"},BY=new Map;function yW($){if($.startsWith("@")){let Z=$.slice(1);return iQ[Z]||$}return $}function hW($){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 G=Z.slice(Q+1);if(G!==""&&!/^[gimsuy]+$/.test(G))return null;return{source:Z.slice(1,Q),flags:G}}function LY($,Z){let Q=hW($),G=Q?Q.source:yW($),X=Q&&Q.flags!==""?Q.flags:Z||"",Y=`${G}:${X}`,J=BY.get(Y);if(!J)J=new RegExp(G,X),BY.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(KQ($)){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 G={};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 X=$,Y=Z;for(let J of Q){let W=X[J];if(W===void 0||W===null){let V=Y[J],A=s(V)&&typeof V.name==="string"?V.name:J;G[J]=`${A}\u4E3A\u5FC5\u586B\u9879`}}for(let[J,W]of Object.entries(Y)){if(G[J])continue;if(X[J]===void 0&&!Q.includes(J))continue;if(!s(W)){G[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"){G[J]=`${J}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let M={name:V,type:A},_=W.input;if(typeof _==="string")M.input=_;let I=W.min;if(typeof I==="number"||I===null)M.min=I;let P=W.max;if(typeof P==="number"||P===null)M.max=P;let C=W.default;if(C===null||typeof C==="string"||typeof C==="number"||typeof C==="boolean"||Array.isArray(C)||s(C))M.default=C;let E=W.detail;if(typeof E==="string")M.detail=E;let N=W.index;if(typeof N==="boolean")M.index=N;let T=W.unique;if(typeof T==="boolean")M.unique=T;let w=W.nullable;if(typeof w==="boolean")M.nullable=w;let v=W.unsigned;if(typeof v==="boolean")M.unsigned=v;let c=this.checkField(X[J],M,J);if(c)G[J]=c}return this.buildResult(G)}static single($,Z){let Q=t0(Z),G=Q.type,X=Q.input,Y=Q.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(G,X,Y),error:null};let J=this.convert($,X,G);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($),G=Z.length>0;return{code:G?1:0,failed:G,firstError:G?Z[0]??null:null,errors:Z,errorFields:Q,fieldErrors:$}}static checkField($,Z,Q){let G=Z.name||Q,X=t0(Z),Y=this.convert($,X.input,X.type);if(Y.error)return`${G}${Y.error}`;let J=this.checkRule(Y.value,Z);return J?`${G}${J}`:null}static convert($,Z,Q){let G=String(Z||"").trim(),X=G.toLowerCase();if(!kZ.has(X)&&g$(G))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!kZ.has(X)&&T$(G))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(X){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(!XZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!XZ($))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(!XZ($))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),G=Q.type,X=Q.input,Y=Q.min,J=Q.max,W=String(X||"").trim(),V=W.toLowerCase(),A=!kZ.has(V)&&g$(W),M=!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||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 I=this.resolveRegex(W);if(!this.testRegex(I,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(M){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(!XZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}let _=String(G||"").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,E,N]=I.split("-"),[T,w,v]=P.split(":"),c=Number(C),f=Number(E),y=Number(N),l=Number(T),n=Number(w),H0=Number(v);if(!Number.isInteger(c)||c<1000||c>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(f)||f<1||f>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][f-1]??0;if(y>O)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return iQ[Z]||$}return $}static testRegex($,Z){try{return LY($).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 G=String($||"").toLowerCase();if(G==="datetime"||G==="timestamp"||G==="json"||G==="enum")return null;let X=String(Z||"").toLowerCase();if(X==="json"||X==="json_number"||X==="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 bW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(s(Z.api.fields)){let G=s(Z.body)?Z.body:{},X={};for(let[Y,J]of Object.entries(Z.api.fields)){let W=t0(J),V=G[Y];if(V===void 0){let A=p(Y);if(G[A]!==void 0)V=G[A]}if(V===void 0&&W.default!==null)V=W.default;if(V!==void 0)X[Y]=V}Z.body=X}let Q=rQ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(Q.code!==0){Z.response=z$(Z,Q.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,Q.fieldErrors,"validator");return}}},PY=bW;Z0();class tQ{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 X=Q.trim();if(X===""||X==="null")return[];if(X.startsWith("[")&&X.endsWith("]"))try{Q=JSON.parse(X)}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 G=[];for(let X of Q)G.push(this.assertApiPathname(X,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return G}assertMenuPathList($,Z){if($===null||$===void 0)return[];let Q=$;if(typeof Q==="string"){let X=Q.trim();if(X===""||X==="null")return[];if(X.startsWith("[")&&X.endsWith("]"))try{Q=JSON.parse(X)}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 G=[];for(let X of Q)G.push(this.assertMenuPathname(X,`\u89D2\u8272\u83DC\u5355\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.menus \u5143\u7D20\uFF0CroleCode=${Z}`));return G}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 G=Array.from(Q.keys());if(G.length===0){K.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let X=G.map((J)=>e.roleApis(J));await this.redis.delBatch(X);let Y=[];for(let J of G){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 G=Array.from(Q.keys());if(G.length===0){K.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u83DC\u5355\u6743\u9650");return}let X=G.map((J)=>e.roleMenus(J));await this.redis.delBatch(X);let Y=[];for(let J of G){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=${$}`)),G=e.roleApis($);if(Q.length===0){await this.redis.del(G);return}let X=Array.from(new Set(Q));if(await this.redis.del(G),X.length>0)await this.redis.sadd(G,X)}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=${$}`)),G=e.roleMenus($);if(Q.length===0){await this.redis.del(G);return}let X=Array.from(new Set(Q));if(await this.redis.del(G),X.length>0)await this.redis.sadd(G,X)}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 cW={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 tQ({db:$.db,redis:$.redis})}},SY=cW;var pW={name:"cipher",enable:!0,deps:[],handler:()=>{return m$}},CY=pW;var uW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},wY=uW;m0();function aQ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function mW($){return Array.isArray($)}function EY($,Z={}){let{pickKeys:Q,omitKeys:G,keepValues:X,excludeValues:Y,keepMap:J}=Z,W=(V)=>{let A={},M=Object.keys(V);if(Q&&Q.length)M=M.filter((_)=>Q.includes(_));if(G&&G.length)M=M.filter((_)=>!G.includes(_));for(let _ of M){let I=V[_];if(J&&_ in J){if(Object.is(J[_],I)){A[_]=I;continue}}if(X&&X.length&&!X.includes(I))continue;if(Y&&Y.length&&Y.includes(I))continue;A[_]=I}return A};if(mW($))return $.map((V)=>aQ(V)?W(V):V).filter((V)=>{if(aQ(V))return Object.keys(V).length>0;return!0});if(aQ($))return W($);return $}m0();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],G=Z[Z.length-1];if(Q==="`"&&G==="`")return!0;if(Q==='"'&&G==='"')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,G]of Object.entries($))if(G===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 G=Object.keys(Q);if(G.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let X=new Set(G);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!==G.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(!X.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 G){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 G}}class h{static clearDeep($,Z){let Q=Array.isArray(Z?.arrayObjectKeys)?Z.arrayObjectKeys:["$or","$and"],G=new Set;for(let W of Q)G.add(W);let X=typeof Z?.depth==="number"&&Number.isFinite(Z.depth)?Math.floor(Z.depth):0,Y=X<0?0:X,J=(W,V)=>{if(!W||typeof W!=="object")return W;if(Array.isArray(W))return W;let A=V===0||V>1,M=V===0?0:V-1,_={};for(let[I,P]of Object.entries(W)){if(P===void 0||P===null)continue;if(G.has(I)){if(!Array.isArray(P))continue;let C=V,E=[];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;E.push(T)}if(E.length>0)_[I]=E;continue}if(typeof P==="object"&&!Array.isArray(P)){if(!A){_[I]=P;continue}let C=J(P,M);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 G=Q[0];if(typeof G!=="string"||G.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let X=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})`);X=W}let Y=G.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:X}}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:X}}static normalizeTableRef($){let Z=h.parseTableRef($),Q=Z.schema?p(Z.schema):null,G=p(Z.table),X=Q?`${Q}.${G}`:G;if(Z.alias)X=`${X} ${Z.alias}`;return X}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 G=h.validateAndClassifyFields(Z);if(G.type==="all")return["*"];if(G.type==="include")return G.fields.map((X)=>{return h.processJoinField(X)});if(G.type==="exclude"){let X=await Q($),Y=G.fields.map((W)=>p(W)),J=X.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((G)=>G==="*"))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((G)=>!G||typeof G!=="string"||G.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let G of $){let X=G.startsWith("!")?G.substring(1):G;X0.assertNoExprField(X)}let Z=$.filter((G)=>!G.startsWith("!")),Q=$.filter((G)=>G.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((X)=>X.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
|
-
1. \u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\uFF08\u67E5\u8BE2\u6240\u6709\uFF09
|
|
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 G=Q[0],X=Q[1];if(typeof G!=="string"||typeof X!=="string")return Z;return`${p(G.trim())}#${X.trim()}`})}static processJoinField($){if(X0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),Q=Z[0],G=Z[1];if(typeof Q!=="string"||typeof G!=="string")return $;return`${h.processJoinField(Q.trim())} AS ${G.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return p($);if(Z.some((X)=>X.trim()===""))return $;let Q=Z[Z.length-1],G=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof G!=="string")return p($);return`${G.trim()}.${p(Q)}`}return p($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(X0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),Q=$.substring(0,Z),G=$.substring(Z);if(Q.includes(".")){let X=Q.split(".");if(X.length<2)return`${p(Q)}${G}`;if(X.some((W)=>W.trim()===""))return`${p(Q)}${G}`;let Y=X[X.length-1],J=X.slice(0,X.length-1).join(".");if(typeof Y!=="string"||typeof J!=="string")return`${p(Q)}${G}`;return`${J.trim()}.${p(Y)}${G}`}return`${p(Q)}${G}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return p($);if(Z.some((X)=>X.trim()===""))return p($);let Q=Z[Z.length-1],G=Z.slice(0,Z.length-1).join(".");if(typeof Q!=="string"||typeof G!=="string")return p($);return`${G.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,G]of Object.entries($)){let X=h.processJoinWhereKey(Q);if(Q==="$or"||Q==="$and")Z[X]=Array.isArray(G)?G.map((Y)=>h.processJoinWhere(Y)):[];else if(typeof G==="object"&&G!==null&&!Array.isArray(G))Z[X]=h.processJoinWhere(G);else Z[X]=G}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 G=Q[0],X=Q[1];if(typeof G!=="string"||typeof X!=="string")return Z;return`${h.processJoinField(G.trim())}#${X.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 X={};for(let[Y,J]of Object.entries($))X[Y]=J;return X.state$gt=0,X}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((Q)=>h.whereKeysToSnake(Q));let Z={};for(let[Q,G]of Object.entries($)){if(Q==="$or"||Q==="$and"){Z[Q]=Array.isArray(G)?G.map((Y)=>h.whereKeysToSnake(Y)):[];continue}if(X0.assertNoExprField(Q),Q.includes("$")){let Y=Q.lastIndexOf("$"),J=Q.substring(0,Y),W=Q.substring(Y),V=p(J)+W;Z[V]=G;continue}let X=p(Q);if(typeof G==="object"&&G!==null&&!Array.isArray(G))Z[X]=h.whereKeysToSnake(G);else Z[X]=G}return Z}static serializeArrayFields($){let Z={};for(let[Q,G]of Object.entries($)){if(G===null||G===void 0){Z[Q]=G;continue}if(Array.isArray(G)){Z[Q]=JSON.stringify(G);continue}Z[Q]=G}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[Q,G]of Object.entries($))Z[Q]=G;for(let[Q,G]of Object.entries(Z)){if(typeof G!=="string")continue;if(G.startsWith("[")&&G.endsWith("]"))try{let X=JSON.parse(G);if(Array.isArray(X))Z[Q]=X}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let Q=EY($,{excludeValues:Z}),G=tG(Q);return h.serializeArrayFields(G)}static stripSystemFieldsForWrite($,Z){let Q={};for(let[G,X]of Object.entries($)){if(G==="id")continue;if(G==="created_at")continue;if(G==="updated_at")continue;if(G==="deleted_at")continue;if(!Z.allowState&&G==="state")continue;Q[G]=X}return Q}static buildInsertRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),Q=h.stripSystemFieldsForWrite(Z,{allowState:!1}),G={};for(let[X,Y]of Object.entries(Q))G[X]=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)})`);G.id=$.id}return G.created_at=$.now,G.updated_at=$.now,G.state=1,G}static buildUpdateRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),Q=h.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),G={};for(let[X,Y]of Object.entries(Q))G[X]=Y;return G.updated_at=$.now,G}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 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(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],G=Z[1];if(typeof Q!=="string"||typeof G!=="string")throw Error(u.FIELD_INVALID($));let X=Q.trim(),Y=G.trim();return X0.assertSafeAlias(Y),`${this._escapeField(X)} 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(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 G=Q.trim(),X=Z.length===2?Z[1]:null,Y=typeof X==="string"?X.trim():null,J=G.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 M=V.trim(),_=A.trim(),I=this._isQuotedIdent(M)?M:(()=>{if(this._startsWithQuote(M)&&!this._isQuotedIdent(M))throw Error(u.SCHEMA_QUOTE_NOT_PAIRED(M));return this._validateIdentifierPart(M,"schema"),this._quoteIdent(M)})(),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($){X0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,Q){let G=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(Q),this._where.push(`${G} != ?`),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 X=Q.map(()=>"?").join(",");this._where.push(`${G} IN (${X})`),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(`${G} NOT IN (${Y})`),this._params.push(...Q);break;case"$like":this._validateParam(Q),this._where.push(`${G} LIKE ?`),this._params.push(Q);break;case"$notLike":this._validateParam(Q),this._where.push(`${G} NOT LIKE ?`),this._params.push(Q);break;case"$gt":this._validateParam(Q),this._where.push(`${G} > ?`),this._params.push(Q);break;case"$gte":this._validateParam(Q),this._where.push(`${G} >= ?`),this._params.push(Q);break;case"$lt":this._validateParam(Q),this._where.push(`${G} < ?`),this._params.push(Q);break;case"$lte":this._validateParam(Q),this._where.push(`${G} <= ?`),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(`${G} 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(`${G} NOT BETWEEN ? AND ?`),this._params.push(Q[0],Q[1]);break;case"$null":if(Q===!0)this._where.push(`${G} IS NULL`);break;case"$notNull":if(Q===!0)this._where.push(`${G} IS NOT NULL`);break;default:this._validateParam(Q),this._where.push(`${G} = ?`),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((G)=>{if(G&&typeof G==="object"&&!Array.isArray(G))this._processWhereConditions(G)})}else if(Z==="$or"){if(Array.isArray(Q)){let G=[],X=[];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)G.push(`(${J._where.join(" AND ")})`),X.push(...J._params)}),G.length>0)this._where.push(`(${G.join(" OR ")})`),this._params.push(...X)}}else if(Z.includes("$")){let G=Z.lastIndexOf("$"),X=Z.substring(0,G),Y="$"+Z.substring(G+1);this._applyOperator(X,Y,Q)}else if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q))for(let[G,X]of Object.entries(Q))this._applyOperator(Z,G,X);else{this._validateParam(Q);let G=this._escapeField(Z);this._where.push(`${G} = ?`),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 G=Q[0],X=Q[1];if(typeof G!=="string"||typeof X!=="string")throw Error(u.ORDER_BY_ITEM_NEED_HASH(Z));let Y=G.trim(),J=X.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 G=X0.assertBatchInsertRowsConsistent(Z,{table:$}),X=G.map((A)=>this._escapeField(A)),Y=G.map(()=>"?").join(", "),J=Z.map(()=>`(${Y})`).join(", "),W=`INSERT INTO ${Q} (${X.join(", ")}) VALUES ${J}`,V=[];for(let A=0;A<Z.length;A++){let M=Z[A];for(let _ of G){let I=M[_];this._validateParam(I),V.push(I)}}return{sql:W,params:V}}else{let G=Object.keys(Z);if(G.length===0)throw Error(u.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of G){let A=Z;this._validateParam(A[V])}let X=G.map((V)=>this._escapeField(V)),Y=G.map(()=>"?").join(", "),J=`INSERT INTO ${Q} (${X.join(", ")}) VALUES (${Y})`,W=[];for(let V of G){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 G=this._escapeTable($),X=Q.map((W)=>`${this._escapeField(W)} = ?`),Y=[...Object.values(Z),...this._params],J=`UPDATE ${G} SET ${X.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(","),G=[],X=[],Y=$.quoteIdent($.idField);for(let W of $.fields){let V=[];for(let M of $.rows){if(!(W in M.data))continue;V.push("WHEN ? THEN ?"),X.push(M.id);let _=M.data[W];X0.assertNoUndefinedParam(_,"SQL \u53C2\u6570\u503C"),X.push(_)}if(V.length===0)continue;let A=$.quoteIdent(W);G.push(`${A} = CASE ${Y} ${V.join(" ")} ELSE ${A} END`)}G.push(`${$.quoteIdent($.updatedAtField)} = ?`),X.push($.updatedAtValue);for(let W of Z)X.push(W);let J=`UPDATE ${$.quoteIdent($.table)} SET ${G.join(", ")} WHERE ${Y} IN (${Q})`;if($.stateGtZero&&$.stateField)J+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:J,params:X}}}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 dW($){return typeof $.begin==="function"}class NY 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 xZ extends Error{payload;constructor($){super("TRANSACTION_ABORT");this.payload=$}}function TY($){if(!s($))return!1;let Z=$;return typeof Z.code==="number"&&typeof Z.msg==="string"}class v${redis;dbName;sql=null;isTransaction=!1;idMode;static convertBigIntFields($,Z){if($===null||$===void 0)return $;let Q=["id","pid","sort"],X=((A)=>{if(!A||A.length===0)return Q;let M=["id","pid","sort"];for(let _ of A){if(typeof _!=="string")continue;let I=_.trim();if(I.length===0)continue;if(!M.includes(I))M.push(I)}return M})(Z),Y=new Set(X),J=BigInt(Number.MAX_SAFE_INTEGER),W=BigInt(Number.MIN_SAFE_INTEGER),V=(A)=>{let M={};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 E=null;if(typeof I==="bigint")E=I;else if(typeof I==="string"){if(/^-?\d+$/.test(I))try{E=BigInt(I)}catch{E=null}}if(E!==null){let N=iG(E);if(N!==null)P=N}}}M[_]=P}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$($),G=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!G||G.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let X=[];for(let Y of G){let J=Y.Field;if(typeof J==="string"&&J.length>0)X.push(J)}return X}async prepareQueryOptions($){let Z=h.clearDeep($.where||{});if($.joins&&$.joins.length>0){let X=($.fields||[]).map((W)=>h.processJoinField(W)),Y=h.normalizeTableRef($.table),J=h.getJoinMainQualifier($.table);return{table:Y,tableQualifier:J,fields:X.length>0?X:["*"],where:h.processJoinWhere(Z),joins:$.joins,orderBy:h.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let G=await h.fieldsToSnake(p($.table),$.fields||[],this.getTableColumns.bind(this));return{table:p($.table),tableQualifier:p($.table),fields:G,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 G=h.normalizeTableRef(Q.table);switch(Q.type||"left"){case"inner":$.innerJoin(G,Q.on);break;case"right":$.rightJoin(G,Q.on);break;case"left":default:$.leftJoin(G,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(),G=JY(Z);try{let X;if(G.length>0)X=await this.sql.unsafe($,G);else X=await this.sql.unsafe($);let Y=Date.now()-Q;return{data:X,sql:{sql:$,params:G,duration:Y}}}catch(X){let Y=Date.now()-Q,J=X instanceof Error?X.message:String(X);throw new NY(`SQL\u6267\u884C\u5931\u8D25: ${J}`,{originalError:X,params:G,duration:Y,sqlInfo:{sql:$,params:G,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:G,tableQualifier:X}=await this.prepareQueryOptions($),Y=Array.isArray(G)&&G.length>0,J=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(h.addDefaultStateFilter(Q,X,Y));this.applyJoins(J,G);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:G,joins:X,tableQualifier:Y}=await this.prepareQueryOptions($),J=Array.isArray(X)&&X.length>0,W=this.createSqlBuilder().select(Q).from(Z).where(h.addDefaultStateFilter(G,Y,J));this.applyJoins(W,X);let{sql:V,params:A}=W.toSelectSql(),M=await this.executeSelect(V,A),I=M.data?.[0]||null;if(!I)return{data:{},sql:M.sql};let P=qQ(I),C=h.deserializeArrayFields(P);if(!C)return{data:{},sql:M.sql};return{data:v$.convertBigIntFields([C],$.bigint)[0]??C,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=h.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),G=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(Q);this.applyJoins(G,Z.joins);let{sql:X,params:Y}=G.toSelectSql(),J=await this.executeSelect(X,Y),W=J.data?.[0]?.total||0;if(W===0){let N=(Z.page-1)*Z.limit,T=this.createSqlBuilder().select(Z.fields).from(Z.table).where(Q).limit(Z.limit).offset(N);if(this.applyJoins(T,Z.joins),Z.orderBy&&Z.orderBy.length>0)T.orderBy(Z.orderBy);let{sql:w,params:v}=T.toSelectSql();return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:J.sql,data:{sql:w,params:v,duration:0}}}}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(),I=await this.executeSelect(M,_),P=I.data||[],E=jQ(P).map((N)=>h.deserializeArrayFields(N)).filter((N)=>N!==null);return{data:{lists:v$.convertBigIntFields(E,$.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 G={table:$.table,page:1,limit:10};if($.fields!==void 0)G.fields=$.fields;if($.bigint!==void 0)G.bigint=$.bigint;if($.where!==void 0)G.where=$.where;if($.joins!==void 0)G.joins=$.joins;if($.orderBy!==void 0)G.orderBy=$.orderBy;let X=await this.prepareQueryOptions(G),Y=h.addDefaultStateFilter(X.where,X.tableQualifier,Array.isArray(X.joins)&&X.joins.length>0),J=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(X.table).where(Y);this.applyJoins(J,X.joins);let{sql:W,params:V}=J.toSelectSql(),A=await this.executeSelect(W,V),M=A.data?.[0]?.total||0;if(M===0)return{data:{lists:[],total:0},sql:{count:A.sql}};let _=this.createSqlBuilder().select(X.fields).from(X.table).where(Y).limit(1e4);if(this.applyJoins(_,X.joins),X.orderBy&&X.orderBy.length>0)_.orderBy(X.orderBy);let{sql:I,params:P}=_.toSelectSql(),C=await this.executeSelect(I,P),E=C.data||[];if(E.length>=1000)K.warn({table:$.table,count:E.length,total:M,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(E.length>=1e4)K.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=jQ(E).map((v)=>h.deserializeArrayFields(v)).filter((v)=>v!==null);return{data:{lists:v$.convertBigIntFields(T,$.bigint),total:M},sql:{count:A.sql,data:C.sql}}}async insData($){let{table:Z,data:Q}=$,G=p(Z),X=Date.now(),Y;if(this.idMode==="autoId")Y=h.buildInsertRow({idMode:"autoId",data:Q,now:X});else{let C;try{C=await this.redis.genTimeID()}catch(E){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:E})}Y=h.buildInsertRow({idMode:"timeId",data:Q,id:C,now:X})}X0.assertNoUndefinedInRecord(Y,`insData \u63D2\u5165\u6570\u636E (table: ${G})`);let J=this.createSqlBuilder(),{sql:W,params:V}=J.toInsertSql(G,Y),A=await this.executeRun(W,V),M=Y.id,_=typeof M==="number"?M: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 G=p($),X=Date.now(),Y=[],J;if(this.idMode==="autoId")J=Z.map((_)=>{return h.buildInsertRow({idMode:"autoId",data:_,now:X})});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: ${G})`);return h.buildInsertRow({idMode:"timeId",data:I,id:C,now:X})})}let W=X0.assertBatchInsertRowsConsistent(J,{table:G}),V=this.createSqlBuilder(),{sql:A,params:M}=V.toInsertSql(G,J);try{let _=await this.executeRun(A,M);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:G,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:G,count:Z.length,fields:W}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=p($),G=n$.toDeleteInSql({table:Q,idField:"id",ids:Z,quoteIdent:s$}),X=await this.executeRun(G.sql,G.params);return{data:w$(X.data?.changes),sql:X.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let Q=p($),G=Date.now(),X=[],Y=new Set;for(let M of Z){let _=h.buildPartialUpdateData({data:M.data,allowState:!0});for(let I of Object.keys(_))Y.add(I);X.push({id:M.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:X,fields:J,quoteIdent:s$,updatedAtField:"updated_at",updatedAtValue:G,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:G}=$,X=h.clearDeep(G),Y=p(Z),J=h.whereKeysToSnake(X),W=h.buildUpdateRow({data:Q,now:Date.now(),allowState:!0}),V=h.addDefaultStateFilter(J,Y,!1),A=this.createSqlBuilder().where(V),{sql:M,params:_}=A.toUpdateSql(Y,W),I=await this.executeRun(M,_);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}=$,G=p(Z),X=h.clearDeep(Q),Y=h.whereKeysToSnake(X),J=this.createSqlBuilder().where(Y),{sql:W,params:V}=J.toDeleteSql(G),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){let Q=await $(this);if(TY(Q)&&Q.code!==0)throw new xZ(Q);return Q}let Z=this.sql;if(!Z)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(!dW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");try{return await Z.begin(async(Q)=>{let G=new v$({redis:this.redis,dbName:this.dbName,sql:Q,idMode:this.idMode}),X=await $(G);if(TY(X)&&X.code!==0)throw new xZ(X);return X})}catch(Q){if(Q instanceof xZ)return Q.payload;throw Q}}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),G=h.clearDeep($.where||{}),X=h.whereKeysToSnake(G),Y=h.addDefaultStateFilter(X,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 G={table:$.table};if($.where!==void 0)G.where=$.where;if($.joins!==void 0)G.joins=$.joins;if($.orderBy!==void 0)G.orderBy=$.orderBy;if($.page!==void 0)G.page=$.page;if($.limit!==void 0)G.limit=$.limit;G.fields=[Z];let X=await this.getOne(G),Y=X.data;if(!s(Y))return{data:null,sql:X.sql};if(Object.hasOwn(Y,Z))return{data:Y[Z],sql:X.sql};let J=Z.replace(/_([a-z])/g,(V,A)=>A.toUpperCase());if(J!==Z&&Object.hasOwn(Y,J))return{data:Y[J],sql:X.sql};let W=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(W!==Z&&Object.hasOwn(Y,W))return{data:Y[W],sql:X.sql};return{data:null,sql:X.sql}}async increment($,Z,Q,G=1){let X=p($),Y=p(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(X))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${X}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Y))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof G!=="number"||isNaN(G))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${G})`);let J=h.clearDeep(Q),W=h.whereKeysToSnake(J),V=h.addDefaultStateFilter(W,X,!1),A=this.createSqlBuilder().where(V),{sql:M,params:_}=A.getWhereConditions(),I=s$(X),P=s$(Y),C=M?`UPDATE ${I} SET ${P} = ${P} + ? WHERE ${M}`:`UPDATE ${I} SET ${P} = ${P} + ?`,E=await this.executeRun(C,[G,..._]);return{data:w$(E.data?.changes),sql:E.sql}}async decrement($,Z,Q,G=1){return await this.increment($,Z,Q,-G)}}Z0();var nW={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 G=F$.getSql(),Y=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new v$({redis:$.redis,dbName:Q,sql:G,idMode:Y})}catch(G){throw K.error({env:Z,err:G,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:G,meta:{subsystem:"db",operation:"init"}})}}},DY=nW;var f$=v1(q1(),1);class TG{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let Q=Z.secret||this.config.secret,G=Z.algorithm||this.config.algorithm||"HS256",X={key:Q,algorithm:G,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)X.iss=Z.issuer;if(Z.audience!==void 0)X.aud=Z.audience;if(Z.subject!==void 0)X.sub=Z.subject;if(Z.jwtId!==void 0)X.jti=Z.jwtId;if(typeof Z.notBefore==="number")X.notBefore=Z.notBefore;return f$.createSigner(X)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let Q=Z.secret||this.config.secret,G=this.config.algorithm||"HS256",X=Z.algorithms?Z.algorithms:[G],Y={key:Q,algorithms:X,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 X=f$.createDecoder({complete:!0})($);return{header:X.header,payload:X.payload,signature:X.signature}}return f$.createDecoder()($)}}var _9={name:"jwt",enable:!0,deps:[],handler:($)=>{return new TG($.config?$.config.auth:void 0)}},j1=_9;Z0();var A9={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)K.configure($.config.logger);return K}},B1=A9;Z0();Z0();class NG{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,G={}){if(Q<=this.slowThresholdMs)return;K.warn({subsystem:"redis",event:"slow",duration:Q,cmd:$,key:Z,extra:G,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,Q=null){try{let G=JSON.stringify(Z),X=`${this.prefix}${$}`,Y=Date.now();if(Q){let V=await this.client.setex(X,Q,G),A=Date.now()-Y;return this.logSlow("SETEX",X,A,{ttl:Q}),V}let J=await this.client.set(X,G),W=Date.now()-Y;return this.logSlow("SET",X,W),J}catch(G){return K.error({err:G,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.get(Z),X=Date.now()-Q;return this.logSlow("GET",Z,X),G?JSON.parse(G):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 G=Date.now()-Q;this.logSlow("DEL",Z,G)}catch(Z){K.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,Q=Date.now(),G=await this.client.incr(Z);if(G===1)await this.client.expire(Z,1);let X=Date.now()-Q;this.logSlow("INCR",Z,X,{expireSeconds:1});let Y=100+($%900+G-1)%900;return Number(`${$}${Y}`)}async setString($,Z,Q=null){try{let G=`${this.prefix}${$}`,X=Date.now();if(Q){let W=await this.client.setex(G,Q,Z),V=Date.now()-X;return this.logSlow("SETEX",G,V,{ttl:Q}),W}let Y=await this.client.set(G,Z),J=Date.now()-X;return this.logSlow("SET",G,J),Y}catch(G){return K.error({err:G,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 G=`${this.prefix}${$}`,X=Date.now(),Y=String(Math.floor(Q)),J=await this.client.set(G,Z,"NX","PX",Y),W=Date.now()-X;return this.logSlow("SET NX PX",G,W,{ttlMs:Q}),J==="OK"}catch(G){return K.error({err:G,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}${$}`,G=Date.now();if(await this.client.get(Q)!==Z)return!1;let Y=await this.client.del(Q),J=Date.now()-G;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(),G=await this.client.get(Z),X=Date.now()-Q;return this.logSlow("GET",Z,X),G}catch(Z){return K.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.exists(Z),X=Date.now()-Q;return this.logSlow("EXISTS",Z,X),G}catch(Z){return K.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.incr(Z),X=Date.now()-Q;return this.logSlow("INCR",Z,X),G}catch(Z){return K.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let Q=`${this.prefix}${$}`,G=Date.now(),X=await this.client.incr(Q);if(X===1)await this.client.expire(Q,Z);let Y=Date.now()-G;return this.logSlow("INCR",Q,Y,{expireSeconds:Z}),X}catch(Q){return K.error({err:Q,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let Q=`${this.prefix}${$}`,G=Date.now(),X=await this.client.expire(Q,Z),Y=Date.now()-G;return this.logSlow("EXPIRE",Q,Y,{seconds:Z}),X}catch(Q){return K.error({err:Q,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.ttl(Z),X=Date.now()-Q;return this.logSlow("TTL",Z,X),G}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}${$}`,G=Date.now(),X=await this.client.sadd(Q,...Z),Y=Date.now()-G;return this.logSlow("SADD",Q,Y,{membersCount:Z.length}),X}catch(Q){return K.error({err:Q,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let Q=`${this.prefix}${$}`,G=Date.now(),X=await this.client.sismember(Q,Z),Y=Date.now()-G;return this.logSlow("SISMEMBER",Q,Y),X}catch(Q){return K.error({err:Q,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.scard(Z),X=Date.now()-Q;return this.logSlow("SCARD",Z,X),G}catch(Z){return K.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,Q=Date.now(),G=await this.client.smembers(Z),X=Date.now()-Q;return this.logSlow("SMEMBERS",Z,X),G}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,G)=>Q+G,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(),G=await this.client.del(Z),X=Date.now()-Q;return this.logSlow("DEL",Z,X),G}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 G=`${this.prefix}${Q}`;return this.client.del(G)}))).reduce((Q,G)=>Q+G,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 M9={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,Q=$.config?.redis?.prefix;try{return F$.getRedis(),new NG(Q)}catch(G){throw K.error({env:Z,err:G,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new D({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:G,meta:{subsystem:"redis",operation:"init"}})}}},L1=M9;function F9($,Z={},Q={}){return{code:0,msg:$,data:Z,...Q}}function z9($,Z=null,Q={}){return{code:1,msg:$,data:Z,...Q}}function K9($,Z,Q={}){let{status:G=200,contentType:X,headers:Y={}}=Q,J=X,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:G,headers:V})}var R9={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:F9,No:z9,Raw:K9}}},P1=R9;m0();function S1($,Z){let Q=s(Z)?Z:{},G=typeof Q.name==="string"?String(Q.name):"",X=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:${$}:${G}`,relativePath:G,fileName:G,moduleName:G,addonName:"",fileBaseName:G,fileDir:"(builtin)",name:G,enable:Q.enable,deps:J,handler:Q.handler??null,customKeys:X}}function C1(){let $=[],Z=[B1,L1,DY,SY,P1,CY,j1,wY];for(let Q of Z)$.push(S1("plugin",Q));return $}function w1(){let $=[],Z=[UY,VY,qY,PY,jY];for(let Q of Z)$.push(S1("hook",Q));return $}S$();BZ();m0();import{existsSync as I9}from"fs";function q9($){let Z=$.split("/").filter(Boolean),Q=Z.indexOf("@befly-addon");if(Q<0)return null;let G=Z[Q+1];if(typeof G!=="string"||G.trim()==="")return null;return G}async function R$($,Z,Q,G){if(!I9($))return[];let X=N$($),Y=new Bun.Glob(G),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),M=HZ(A).name,_=vQ(X,A),I=HZ(_),P=I.dir?i(I.dir,I.name):I.name;if(M.startsWith("_"))continue;if(P.split("/").some((v)=>v.startsWith("_")))continue;let C=await P$(A,{}),E=B$(M),N="",T="";if(Z==="core")N="",T=M;else if(Z==="app")T=`app_${E}`;else{let v=q9(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_${B$(N)}_${E}`}let w={source:Z,type:Q,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:A,relativePath:P,fileName:M,moduleName:T,addonName:N,fileBaseName:HZ(A).base,fileDir:$,customKeys:s(C)?Object.keys(C):[]};if(Q==="table"){w.content=s(C)?C:{},J.push(w);continue}if(Q==="api")w.auth=!0,w.rawBody=!1,w.method="POST",w.fields={},w.required=[];if(Q==="plugin"||Q==="hook")w.deps=[],w.name="",w.handler=null;if(rG(C,(v,c)=>{w[c]=v}),Q==="api")w.routePrefix=Z==="app"?"/app":`/addon/${N}`,w.path=`/api${w.routePrefix}/${P}`;J.push(w)}}catch(W){let V=Error(`scanFiles failed: source=${Z} type=${Q} dir=${X} pattern=${G}`);throw V.cause=W,V}return J}var E1=async()=>{let $=[],Z=[],Q=[],G=[],X=await WY();G.push(...await R$(i(s0,"tables"),"app","table","*.json"));for(let Y of X)G.push(...await R$(i(Y.rootDir,"tables"),"addon","table","*.json"));Z.push(...C1()),Z.push(...await R$(i(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let Y of X)Z.push(...await R$(i(Y.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));Q.push(...w1()),Q.push(...await R$(i(s0,"hooks"),"app","hook","*.{ts,js}"));for(let Y of X)Q.push(...await R$(i(Y.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await R$(i(s0,"apis"),"app","api","**/*.{ts,js}"));for(let Y of X)$.push(...await R$(i(Y.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:Q,plugins:Z,apis:$,tables:G,addons:X}};class j9{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 MX($.NODE_ENV||"development"),await zX(this.config),this.context.config=this.config,this.context.env=$;let{apis:Q,tables:G,plugins:X,hooks:Y,addons:J}=await E1();this.context.addons=J,await FX(Q),await oX(G,this.config),await TX(X),await RX(Y);let W=await wX(J);await F$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await rX(X,this.context),this.assertStartContextReady();let V="sync:lock",A="sync:ready",M=600000,_=120000,I=250,P=`${process.pid}:${Bun.nanoseconds()}`,C=this.context;if(await C.redis.tryAcquireLock(V,P,M)){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(G),await ZY(C,Q),await YY(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 GY(C,{devEmail:y,devPassword:l});else K.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await QY(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 iX(Y),this.apis=await lX(Q);let N=aX(this.apis,this.hooks,this.context),T=eX(this.config.cors),w=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:w,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})}}),f=HY(Z);return K.info(`${this.config.appName} \u542F\u52A8\u6210\u529F!`),K.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${f}`),K.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${c.url}`),c}catch(Z){let Q=Z instanceof Error?Z.message:String(Z),G="runtime",X=!1,Y=!1,J=!1;if(j$(Z))G=Z.kind,X=Z.logged===!0,Y=Z.noLog===!0,J=Z.multiline===!0;else{let W=Z;if(W&&W.__syncTableLogged===!0)X=!0;if(W&&W.__syncTableNoLog===!0)G="policy";if(W&&W.__coreLogged===!0)X=!0;if(W&&W.__coreNoLog===!0)Y=!0}if(!X&&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:G,errorMessage:Q},{truncate:!1,console:!1});{let M=String(Q||"").split(`
|
|
23
|
-
`),_=M.length>0?String(M[0]||""):"",I=[];I.push(`[${W}] \u542F\u52A8\u5931\u8D25: ${V}: ${_}`);for(let P=1;P<M.length;P=P+1)I.push(String(M[P]||""));K.printPlainLines(I,{stream:"stderr"})}}else if(X)K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25\uFF08\u4E0B\u5C42\u5DF2\u8BB0\u5F55\uFF09",errorKind:G,errorMessage:Q},{truncate:!1});else if(Y)K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:G,errorMessage:Q},{truncate:!1});else K.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:G,errorMessage:Q,err:Z},{truncate:!1});try{await K.flush()}catch{}try{await K.shutdown()}catch{}if(j$(Z))throw Z.logged=!0,Z;throw new D({kind:G,message:Q,logged:!0,noLog:Y,meta:{subsystem:"start",operation:"start"},cause:Z})}}}export{j9 as Befly};
|