befly 3.15.27 → 3.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/befly.js +184 -101
- package/dist/befly.min.js +18 -18
- package/dist/checks/checkTable.js +76 -62
- package/dist/lib/validator.js +12 -10
- package/dist/sync/syncTable.d.ts +1 -1
- package/dist/sync/syncTable.js +34 -7
- package/dist/types/validate.d.ts +1 -1
- package/dist/utils/dbFieldRules.d.ts +31 -0
- package/dist/utils/dbFieldRules.js +94 -0
- package/dist/utils/normalizeFieldDefinition.js +3 -33
- package/package.json +2 -2
package/dist/befly.min.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)}catch{}}function
|
|
4
|
-
`}if($.msg===void 0)$.msg="";return`${
|
|
5
|
-
`}function XQ($){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 GQ($){let{fileSink:Z,consoleSink:J}=$,Y=(Q,X)=>{if(Q==="debug"&&n0.debug!==1)return;let G=Date.now(),U=nH(Q,G),V=m(X)?X:{value:X},A=null;if(V&&typeof V==="object"){if(A=c$.get(V)??null,A)c$.delete(V)}let z=WQ(A),M=DJ(V,z),j=sH(U,M);if(Z.enqueue(j),J){if(!A||A.console!==!1)J.enqueue(j)}};return{info(Q){Y("info",Q)},warn(Q){Y("warn",Q)},error(Q){Y("error",Q)},debug(Q){Y("debug",Q)}}}function oH(){let $=YQ();if(!$)return null;let Z=Date.now()-$.now,J={requestId:$.requestId,method:$.method,route:$.route,ip:$.ip,now:$.now,durationSinceNowMs:Z};return J.userId=$.userId,J.roleCode=$.roleCode,J.nickname=$.nickname,J.roleType=$.roleType,J}function lH($,Z){let J={};for(let Q of Object.keys($))J[Q]=$[Q];let Y=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let Q of Y)if(J[Q]===void 0)J[Q]=Z[Q];return J}function BZ($){if(m($))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 PZ($){let Z=oH();if(!Z)return $;return lH($,Z)}class _Q{maybeSanitizeForMock($,Z){if(!Y$)return $;let J=WQ(Z?Z:null);return DJ($,J)}info($,Z){let J=PZ(BZ($));if(!Y$&&Z&&m(J))c$.set(J,Z);let Y=this.maybeSanitizeForMock(J,Z);GZ("app").info(Y)}warn($,Z){let J=PZ(BZ($));if(!Y$&&Z&&m(J))c$.set(J,Z);let Y=this.maybeSanitizeForMock(J,Z);GZ("app").warn(Y)}error($,Z){let J=PZ(BZ($));if(!Y$&&Z&&m(J))c$.set(J,Z);let Y=this.maybeSanitizeForMock(J,Z);if(GZ("app").error(Y),Y$)return;GZ("error").error(Y)}debug($,Z){if(n0.debug!==1)return;let J=PZ(BZ($));if(!Y$&&Z&&m(J))c$.set(J,Z);let Y=this.maybeSanitizeForMock(J,Z);GZ("app").debug(Y)}async flush(){await pH()}configure($){mH($)}setMock($){dH($)}async shutdown(){await UQ()}}var gH,HQ,N$,c$,hH,j$=null,L$=null,Y$=null,X$=null,G$=null,H$=null,n0,I;var $0=A$(()=>{ZQ();u0();LZ();gH=process.cwd(),HQ=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],N$={maxStringLen:200,maxArrayItems:500,sanitizeDepth:5,sanitizeNodes:5000,sanitizeObjectKeys:500,sensitiveKeyMatcher:EJ({builtinPatterns:HQ,userPatterns:[]})},c$=new WeakMap;hH=(()=>{try{return vH()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};I=new _Q});import{isAbsolute as rH}from"path";import{pathToFileURL as iH}from"url";function tH($){return/^[a-zA-Z]:[\\/]/.test($)}function aH($){if(rH($)||tH($))return iH($).href;return $}async function B$($,Z){try{let Q=($.endsWith(".json")?await import(aH($),{with:{type:"json"}}):await import($))?.default;if(Q===null||Q===void 0)return Z;let X=LJ(Z),G=LJ(Q);if(X!==G)return I.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:X,actualType:G}),Z;return Q}catch(J){return I.warn({err:J,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var SZ=A$(()=>{$0();u0()});function WZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(X1,(Z)=>Z.toUpperCase())}function V1(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function yJ($,Z){let J="",Y=0,Q=-1,X=0,G=null;for(let U=0;U<=$.length;++U){if(U<$.length)G=$[U];else if(G==="/")break;else G="/";if(G==="/"){if(Q===U-1||X===1);else if(X===2){if(J.length<2||Y!==2||J[J.length-1]!=="."||J[J.length-2]!=="."){if(J.length>2){let V=J.lastIndexOf("/");if(V===-1)J="",Y=0;else J=J.slice(0,V),Y=J.length-1-J.lastIndexOf("/");Q=U,X=0;continue}else if(J.length>0){J="",Y=0,Q=U,X=0;continue}}if(Z)J+=J.length>0?"/..":"..",Y=2}else{if(J.length>0)J+=`/${$.slice(Q+1,U)}`;else J=$.slice(Q+1,U);Y=U-Q-1}Q=U,X=0}else if(G==="."&&X!==-1)++X;else X=-1}return J}var X1,G1,H1,IQ,qQ,W1,U1,k$=function($){if($.length===0)return".";$=WZ($);let Z=$.match(G1),J=u$($),Y=$[$.length-1]==="/";if($=yJ($,!J),$.length===0){if(J)return"/";return Y?"./":"."}if(Y)$+="/";if(IQ.test($))$+="/";if(Z){if(!J)return`//./${$}`;return`//${$}`}return J&&!u$($)?`/${$}`:$},o=function(...$){let Z="";for(let J of $){if(!J)continue;if(Z.length>0){let Y=Z[Z.length-1]==="/",Q=J[0]==="/";if(Y&&Q)Z+=J.slice(1);else Z+=Y||Q?J:`/${J}`}else Z+=J}return k$(Z)},HZ=function(...$){$=$.map((Y)=>WZ(Y));let Z="",J=!1;for(let Y=$.length-1;Y>=-1&&!J;Y--){let Q=Y>=0?$[Y]:V1();if(!Q||Q.length===0)continue;Z=`${Q}/${Z}`,J=u$(Q)}if(Z=yJ(Z,!J),J&&!u$(Z))return`/${Z}`;return Z.length>0?Z:"."},u$=function($){return H1.test($)},jQ=function($){if($==="..")return"";let Z=W1.exec(WZ($));return Z&&Z[1]||""},gJ=function($,Z){let J=HZ($).replace(qQ,"$1").split("/"),Y=HZ(Z).replace(qQ,"$1").split("/");if(Y[0][1]===":"&&J[0][1]===":"&&J[0]!==Y[0])return Y.join("/");let Q=[...J];for(let X of Q){if(Y[0]!==X)break;J.shift(),Y.shift()}return[...J.map(()=>".."),...Y].join("/")},wZ=function($){let Z=WZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&IQ.test(Z[0]))Z[0]+="/";return Z.join("/")||(u$($)?"/":".")},LQ=function($,Z){let J=WZ($).split("/"),Y="";for(let Q=J.length-1;Q>=0;Q--){let X=J[Q];if(X){Y=X;break}}return Z&&Y.endsWith(Z)?Y.slice(0,-Z.length):Y},UZ=function($){let Z=U1.exec($)?.[0]?.replace(/\\/g,"/")||"",J=LQ($),Y=jQ(J);return{root:Z,dir:wZ($),base:J,ext:Y,name:J.slice(0,J.length-Y.length)}};var BQ=A$(()=>{X1=/^[A-Za-z]:\//;G1=/^[/\\]{2}/,H1=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,IQ=/^[A-Za-z]:$/,qQ=/^\/([A-Za-z]:)?$/,W1=/.(\.[^./]+|\.)$/,U1=/^[/\\]|^[a-zA-Z]:[/\\]/});var P$=A$(()=>{BQ()});import{statSync as _1}from"fs";var EZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return _1(o($,Z.name)).isDirectory()}catch{return!1}};var hJ=A$(()=>{P$()});import{existsSync as m$}from"fs";import{readdir as M1}from"fs/promises";function A1($){if(!$||typeof $!=="object")return null;let Z=$,J=Z.title;if(typeof J!=="string"||!J)return null;let Y=Z.order,Q=typeof Y==="number"&&Number.isFinite(Y)&&Number.isInteger(Y)&&Y>=0?Y:void 0;if(Q===void 0)return{title:J};return{title:J,order:Q}}async function PQ($,Z,J=""){if(!m$($))return[];let Y=[],Q=await M1($,{withFileTypes:!0});for(let X of Q){if(!EZ($,X)||X.name==="components")continue;let G=o($,X.name),U=o(G,"meta.json"),V=o(G,"index.vue"),A=null;if(!m$(U))continue;if(!m$(V)){I.warn({path:G,msg:"\u76EE\u5F55\u5B58\u5728 meta.json \u4F46\u7F3A\u5C11 index.vue\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}let z=await B$(U,{});if(A=A1(z),!A?.title){I.warn({path:U,msg:"meta.json \u7F3A\u5C11\u6709\u6548\u7684 title\uFF08\u4EE5\u53CA\u53EF\u9009 order:number\uFF09\uFF0C\u5DF2\u8DF3\u8FC7\u8BE5\u76EE\u5F55\u83DC\u5355\u540C\u6B65"});continue}if(!A?.title)continue;let M=String(X.name).replace(/_\d+$/,""),j;if(M==="index")j=J;else j=J?`${J}/${M}`:`/${M}`;let C=Z?j?`${Z}${j}`:Z:j||"/",S={name:A.title,path:C,sort:A.order??999999},w=await PQ(G,Z,j);if(w.length>0)S.children=w;Y.push(S)}return Y.sort((X,G)=>(X.sort??999999)-(G.sort??999999)),Y}function CQ($){let Z=$.split("/").filter((J)=>Boolean(J));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function SQ($){let Z=[];for(let Y of $){let Q=o(Y.rootDir,"adminViews"),X=o(Y.rootDir,"views","admin"),G=m$(Q)?Q:m$(X)?X:null;if(!G)continue;try{let U=`/${Y.source}/${Y.name}`,V=await PQ(G,U);if(V.length>0)for(let A of V)Z.push(A)}catch(U){I.warn({err:U,addon:Y.name,addonSource:Y.source,dir:G,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let J=o(process.cwd(),"menus.json");if(m$(J)){let Y=await B$(J,[]);if(Array.isArray(Y)&&Y.length>0)for(let Q of Y)Z.push(Q)}return Z}var bJ=A$(()=>{P$();$0();SZ();hJ()});var r$=i((q7,jX)=>{var IX={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 l$ extends Error{constructor($,Z,J){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,J)for(let Y in J)this[Y]=J[Y]}}l$.codes=IX;l$.wrap=function($,Z,J){if($ instanceof l$)return $;return new l$(Z,J,{originalError:$})};jX.exports={TokenError:l$,TOKEN_ERROR_CODES:IX}});var $Y=i((I7,LX)=>{var{TokenError:V$}=r$();function NW({complete:$,checkTyp:Z},J){if(J instanceof Buffer)J=J.toString("utf-8");else if(typeof J!=="string")throw new V$(V$.codes.invalidType,"The token must be a string or a buffer.");let Y=J.indexOf("."),Q=J.lastIndexOf(".");if(Y===-1||Y>=Q)throw new V$(V$.codes.malformed,"The token is malformed.");let X=!1;try{let G=JSON.parse(Buffer.from(J.slice(0,Y),"base64").toString("utf-8"));if(Z&&G.typ!==Z)throw new V$(V$.codes.invalidType,`The type must be "${Z}".`,{header:G});X=!0;let U=Buffer.from(J.slice(Y+1,Q),"base64").toString("utf-8");if(U=JSON.parse(U),!U||typeof U!=="object")throw new V$(V$.codes.invalidPayload,"The payload must be an object",{payload:U});return $?{header:G,payload:U,signature:J.slice(Q+1),input:J.slice(0,Q)}:U}catch(G){throw V$.wrap(G,V$.codes.malformed,`The token ${X?"payload":"header"} is not a valid base64url serialized JSON.`)}}LX.exports=function(Z={}){let J=Z.complete||!1,Y=Z.checkTyp;return NW.bind(null,{complete:J,checkTyp:Y})}});var PX=i((j7,BX)=>{function _$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")_$.prototype[Symbol.iterator]=function(){return this};_$.of=function(){var $=arguments,Z=$.length,J=0;return new _$(function(){if(J>=Z)return{done:!0};return{done:!1,value:$[J++]}})};_$.empty=function(){var $=new _$(function(){return{done:!0}});return $};_$.fromSequence=function($){var Z=0,J=$.length;return new _$(function(){if(Z>=J)return{done:!0};return{done:!1,value:$[Z++]}})};_$.is=function($){if($ instanceof _$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};BX.exports=_$});var CX=i((kW)=>{kW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";kW.SYMBOL_SUPPORT=typeof Symbol<"u"});var ZY=i((B7,wX)=>{var SX=CX(),fW=SX.ARRAY_BUFFER_SUPPORT,yW=SX.SYMBOL_SUPPORT;wX.exports=function(Z,J){var Y,Q,X,G,U;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof J!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||fW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(X=0,G=Z.length;X<G;X++)J(Z[X],X);return}if(typeof Z.forEach==="function"){Z.forEach(J);return}if(yW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){Y=Z,X=0;while(U=Y.next(),U.done!==!0)J(U.value,X),X++;return}for(Q in Z)if(Z.hasOwnProperty(Q))J(Z[Q],Q);return}});var JY=i((dW)=>{var gW=Math.pow(2,8)-1,hW=Math.pow(2,16)-1,bW=Math.pow(2,32)-1,cW=Math.pow(2,7)-1,pW=Math.pow(2,15)-1,uW=Math.pow(2,31)-1;dW.getPointerArray=function($){var Z=$-1;if(Z<=gW)return Uint8Array;if(Z<=hW)return Uint16Array;if(Z<=bW)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};dW.getSignedPointerArray=function($){var Z=$-1;if(Z<=cW)return Int8Array;if(Z<=pW)return Int16Array;if(Z<=uW)return Int32Array;return Float64Array};dW.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 mW={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};dW.getMinimalRepresentation=function($,Z){var J=null,Y=0,Q,X,G,U,V;for(U=0,V=$.length;U<V;U++)if(G=Z?Z($[U]):$[U],X=dW.getNumberType(G),Q=mW[X.name],Q>Y)Y=Q,J=X;return J};dW.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};dW.concat=function(){var $=0,Z,J,Y;for(Z=0,Y=arguments.length;Z<Y;Z++)$+=arguments[Z].length;var Q=new arguments[0].constructor($);for(Z=0,J=0;Z<Y;Z++)Q.set(arguments[Z],J),J+=arguments[Z].length;return Q};dW.indices=function($){var Z=dW.getPointerArray($),J=new Z($);for(var Y=0;Y<$;Y++)J[Y]=Y;return J}});var kX=i((eW)=>{var DX=ZY(),NX=JY();function iW($){return Array.isArray($)||NX.isTypedArray($)}function YY($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function tW($){var Z=YY($),J=typeof Z==="number"?Array(Z):[],Y=0;return DX($,function(Q){J[Y++]=Q}),J}function aW($){var Z=YY($),J=typeof Z==="number"?NX.getPointerArray(Z):Array,Y=typeof Z==="number"?Array(Z):[],Q=typeof Z==="number"?new J(Z):[],X=0;return DX($,function(G){Y[X]=G,Q[X]=X++}),[Y,Q]}eW.isArrayLike=iW;eW.guessLength=YY;eW.toArray=tW;eW.toArrayWithIndices=aW});var XY=i((S7,vX)=>{var QY=PX(),Q9=ZY(),X9=JY(),G9=kX();function d0($,Z,J){if(arguments.length<2)J=$,$=null,Z=null;if(this.capacity=J,typeof this.capacity!=="number"||this.capacity<=0)throw Error("mnemonist/lru-cache: capacity should be positive number.");else if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var Y=X9.getPointerArray(J);this.forward=new Y(J),this.backward=new Y(J),this.K=typeof $==="function"?new $(J):Array(J),this.V=typeof Z==="function"?new Z(J):Array(J),this.size=0,this.head=0,this.tail=0,this.items={}}d0.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};d0.prototype.splayOnTop=function($){var Z=this.head;if(this.head===$)return this;var J=this.backward[$],Y=this.forward[$];if(this.tail===$)this.tail=J;else this.backward[Y]=J;return this.forward[J]=Y,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var J=this.items[$];if(typeof J<"u"){this.splayOnTop(J),this.V[J]=Z;return}if(this.size<this.capacity)J=this.size++;else J=this.tail,this.tail=this.backward[J],delete this.items[this.K[J]];this.items[$]=J,this.K[J]=$,this.V[J]=Z,this.forward[J]=this.head,this.backward[this.head]=J,this.head=J};d0.prototype.setpop=function($,Z){var J=null,Y=null,Q=this.items[$];if(typeof Q<"u")return this.splayOnTop(Q),J=this.V[Q],this.V[Q]=Z,{evicted:!1,key:$,value:J};if(this.size<this.capacity)Q=this.size++;else Q=this.tail,this.tail=this.backward[Q],J=this.V[Q],Y=this.K[Q],delete this.items[Y];if(this.items[$]=Q,this.K[Q]=$,this.V[Q]=Z,this.forward[Q]=this.head,this.backward[this.head]=Q,this.head=Q,Y)return{evicted:!0,key:Y,value:J};else return null};d0.prototype.has=function($){return $ in this.items};d0.prototype.get=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.splayOnTop(Z),this.V[Z]};d0.prototype.peek=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.V[Z]};d0.prototype.forEach=function($,Z){Z=arguments.length>1?Z:this;var J=0,Y=this.size,Q=this.head,X=this.K,G=this.V,U=this.forward;while(J<Y)$.call(Z,G[Q],X[Q],this),Q=U[Q],J++};d0.prototype.keys=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.forward;return new QY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.values=function(){var $=0,Z=this.size,J=this.head,Y=this.V,Q=this.forward;return new QY(function(){if($>=Z)return{done:!0};var X=Y[J];if($++,$<Z)J=Q[J];return{done:!1,value:X}})};d0.prototype.entries=function(){var $=0,Z=this.size,J=this.head,Y=this.K,Q=this.V,X=this.forward;return new QY(function(){if($>=Z)return{done:!0};var G=Y[J],U=Q[J];if($++,$<Z)J=X[J];return{done:!1,value:[G,U]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),J;while(J=Z.next(),!J.done)$.set(J.value[0],J.value[1]);return Object.defineProperty($,"constructor",{value:d0,enumerable:!1}),$};if(typeof Symbol<"u")d0.prototype[Symbol.for("nodejs.util.inspect.custom")]=d0.prototype.inspect;d0.from=function($,Z,J,Y){if(arguments.length<2){if(Y=G9.guessLength($),typeof Y!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)Y=Z,Z=null,J=null;var Q=new d0(Z,J,Y);return Q9($,function(X,G){Q.set(G,X)}),Q};vX.exports=d0});var HY=i((xX,GY)=>{(function($,Z){function J(L,H){if(!L)throw Error(H||"Assertion failed")}function Y(L,H){L.super_=H;var _=function(){};_.prototype=H.prototype,L.prototype=new _,L.prototype.constructor=L}function Q(L,H,_){if(Q.isBN(L))return L;if(this.negative=0,this.words=null,this.length=0,this.red=null,L!==null){if(H==="le"||H==="be")_=H,H=10;this._init(L||0,H||10,_||"be")}}if(typeof $==="object")$.exports=Q;else Z.BN=Q;Q.BN=Q,Q.wordSize=26;var X;try{if(typeof window<"u"&&typeof window.Buffer<"u")X=window.Buffer;else X=R$("buffer").Buffer}catch(L){}Q.isBN=function(H){if(H instanceof Q)return!0;return H!==null&&typeof H==="object"&&H.constructor.wordSize===Q.wordSize&&Array.isArray(H.words)},Q.max=function(H,_){if(H.cmp(_)>0)return H;return _},Q.min=function(H,_){if(H.cmp(_)<0)return H;return _},Q.prototype._init=function(H,_,O){if(typeof H==="number")return this._initNumber(H,_,O);if(typeof H==="object")return this._initArray(H,_,O);if(_==="hex")_=16;J(_===(_|0)&&_>=2&&_<=36),H=H.toString().replace(/\s+/g,"");var F=0;if(H[0]==="-")F++,this.negative=1;if(F<H.length){if(_===16)this._parseHex(H,F,O);else if(this._parseBase(H,_,F),O==="le")this._initArray(this.toArray(),_,O)}},Q.prototype._initNumber=function(H,_,O){if(H<0)this.negative=1,H=-H;if(H<67108864)this.words=[H&67108863],this.length=1;else if(H<4503599627370496)this.words=[H&67108863,H/67108864&67108863],this.length=2;else J(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(O!=="le")return;this._initArray(this.toArray(),_,O)},Q.prototype._initArray=function(H,_,O){if(J(typeof H.length==="number"),H.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(H.length/3),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q,B,P=0;if(O==="be"){for(F=H.length-1,q=0;F>=0;F-=3)if(B=H[F]|H[F-1]<<8|H[F-2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}else if(O==="le"){for(F=0,q=0;F<H.length;F+=3)if(B=H[F]|H[F+1]<<8|H[F+2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}return this.strip()};function G(L,H){var _=L.charCodeAt(H);if(_>=65&&_<=70)return _-55;else if(_>=97&&_<=102)return _-87;else return _-48&15}function U(L,H,_){var O=G(L,_);if(_-1>=H)O|=G(L,_-1)<<4;return O}Q.prototype._parseHex=function(H,_,O){this.length=Math.ceil((H.length-_)/6),this.words=Array(this.length);for(var F=0;F<this.length;F++)this.words[F]=0;var q=0,B=0,P;if(O==="be")for(F=H.length-1;F>=_;F-=2)if(P=U(H,_,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8;else{var K=H.length-_;for(F=K%2===0?_+1:_;F<H.length;F+=2)if(P=U(H,_,F)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8}this.strip()};function V(L,H,_,O){var F=0,q=Math.min(L.length,_);for(var B=H;B<q;B++){var P=L.charCodeAt(B)-48;if(F*=O,P>=49)F+=P-49+10;else if(P>=17)F+=P-17+10;else F+=P}return F}Q.prototype._parseBase=function(H,_,O){this.words=[0],this.length=1;for(var F=0,q=1;q<=67108863;q*=_)F++;F--,q=q/_|0;var B=H.length-O,P=B%F,K=Math.min(B,B-P)+O,W=0;for(var R=O;R<K;R+=F)if(W=V(H,R,R+F,_),this.imuln(q),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W);if(P!==0){var x=1;W=V(H,R,H.length,_);for(R=0;R<P;R++)x*=_;if(this.imuln(x),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W)}this.strip()},Q.prototype.copy=function(H){H.words=Array(this.length);for(var _=0;_<this.length;_++)H.words[_]=this.words[_];H.length=this.length,H.negative=this.negative,H.red=this.red},Q.prototype.clone=function(){var H=new Q(null);return this.copy(H),H},Q.prototype._expand=function(H){while(this.length<H)this.words[this.length++]=0;return this},Q.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},Q.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},Q.prototype.inspect=function(){return(this.red?"<BN-R: ":"<BN: ")+this.toString(16)+">"};var 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"],z=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],M=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(Q.prototype.toString=function(H,_){H=H||10,_=_|0||1;var O;if(H===16||H==="hex"){O="";var F=0,q=0;for(var B=0;B<this.length;B++){var P=this.words[B],K=((P<<F|q)&16777215).toString(16);if(q=P>>>24-F&16777215,F+=2,F>=26)F-=26,B--;if(q!==0||B!==this.length-1)O=A[6-K.length]+K+O;else O=K+O}if(q!==0)O=q.toString(16)+O;while(O.length%_!==0)O="0"+O;if(this.negative!==0)O="-"+O;return O}if(H===(H|0)&&H>=2&&H<=36){var W=z[H],R=M[H];O="";var x=this.clone();x.negative=0;while(!x.isZero()){var y=x.modn(R).toString(H);if(x=x.idivn(R),!x.isZero())O=A[W-y.length]+y+O;else O=y+O}if(this.isZero())O="0"+O;while(O.length%_!==0)O="0"+O;if(this.negative!==0)O="-"+O;return O}J(!1,"Base should be between 2 and 36")},Q.prototype.toNumber=function(){var H=this.words[0];if(this.length===2)H+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)H+=4503599627370496+this.words[1]*67108864;else if(this.length>2)J(!1,"Number can only safely store up to 53 bits");return this.negative!==0?-H:H},Q.prototype.toJSON=function(){return this.toString(16)},Q.prototype.toBuffer=function(H,_){return J(typeof X<"u"),this.toArrayLike(X,H,_)},Q.prototype.toArray=function(H,_){return this.toArrayLike(Array,H,_)},Q.prototype.toArrayLike=function(H,_,O){var F=this.byteLength(),q=O||Math.max(1,F);J(F<=q,"byte array longer than desired length"),J(q>0,"Requested array length <= 0"),this.strip();var B=_==="le",P=new H(q),K,W,R=this.clone();if(!B){for(W=0;W<q-F;W++)P[W]=0;for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[q-W-1]=K}else{for(W=0;!R.isZero();W++)K=R.andln(255),R.iushrn(8),P[W]=K;for(;W<q;W++)P[W]=0}return P},Math.clz32)Q.prototype._countBits=function(H){return 32-Math.clz32(H)};else Q.prototype._countBits=function(H){var _=H,O=0;if(_>=4096)O+=13,_>>>=13;if(_>=64)O+=7,_>>>=7;if(_>=8)O+=4,_>>>=4;if(_>=2)O+=2,_>>>=2;return O+_};Q.prototype._zeroBits=function(H){if(H===0)return 26;var _=H,O=0;if((_&8191)===0)O+=13,_>>>=13;if((_&127)===0)O+=7,_>>>=7;if((_&15)===0)O+=4,_>>>=4;if((_&3)===0)O+=2,_>>>=2;if((_&1)===0)O++;return O},Q.prototype.bitLength=function(){var H=this.words[this.length-1],_=this._countBits(H);return(this.length-1)*26+_};function j(L){var H=Array(L.bitLength());for(var _=0;_<H.length;_++){var O=_/26|0,F=_%26;H[_]=(L.words[O]&1<<F)>>>F}return H}Q.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var _=0;_<this.length;_++){var O=this._zeroBits(this.words[_]);if(H+=O,O!==26)break}return H},Q.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},Q.prototype.toTwos=function(H){if(this.negative!==0)return this.abs().inotn(H).iaddn(1);return this.clone()},Q.prototype.fromTwos=function(H){if(this.testn(H-1))return this.notn(H).iaddn(1).ineg();return this.clone()},Q.prototype.isNeg=function(){return this.negative!==0},Q.prototype.neg=function(){return this.clone().ineg()},Q.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},Q.prototype.iuor=function(H){while(this.length<H.length)this.words[this.length++]=0;for(var _=0;_<H.length;_++)this.words[_]=this.words[_]|H.words[_];return this.strip()},Q.prototype.ior=function(H){return J((this.negative|H.negative)===0),this.iuor(H)},Q.prototype.or=function(H){if(this.length>H.length)return this.clone().ior(H);return H.clone().ior(this)},Q.prototype.uor=function(H){if(this.length>H.length)return this.clone().iuor(H);return H.clone().iuor(this)},Q.prototype.iuand=function(H){var _;if(this.length>H.length)_=H;else _=this;for(var O=0;O<_.length;O++)this.words[O]=this.words[O]&H.words[O];return this.length=_.length,this.strip()},Q.prototype.iand=function(H){return J((this.negative|H.negative)===0),this.iuand(H)},Q.prototype.and=function(H){if(this.length>H.length)return this.clone().iand(H);return H.clone().iand(this)},Q.prototype.uand=function(H){if(this.length>H.length)return this.clone().iuand(H);return H.clone().iuand(this)},Q.prototype.iuxor=function(H){var _,O;if(this.length>H.length)_=this,O=H;else _=H,O=this;for(var F=0;F<O.length;F++)this.words[F]=_.words[F]^O.words[F];if(this!==_)for(;F<_.length;F++)this.words[F]=_.words[F];return this.length=_.length,this.strip()},Q.prototype.ixor=function(H){return J((this.negative|H.negative)===0),this.iuxor(H)},Q.prototype.xor=function(H){if(this.length>H.length)return this.clone().ixor(H);return H.clone().ixor(this)},Q.prototype.uxor=function(H){if(this.length>H.length)return this.clone().iuxor(H);return H.clone().iuxor(this)},Q.prototype.inotn=function(H){J(typeof H==="number"&&H>=0);var _=Math.ceil(H/26)|0,O=H%26;if(this._expand(_),O>0)_--;for(var F=0;F<_;F++)this.words[F]=~this.words[F]&67108863;if(O>0)this.words[F]=~this.words[F]&67108863>>26-O;return this.strip()},Q.prototype.notn=function(H){return this.clone().inotn(H)},Q.prototype.setn=function(H,_){J(typeof H==="number"&&H>=0);var O=H/26|0,F=H%26;if(this._expand(O+1),_)this.words[O]=this.words[O]|1<<F;else this.words[O]=this.words[O]&~(1<<F);return this.strip()},Q.prototype.iadd=function(H){var _;if(this.negative!==0&&H.negative===0)return this.negative=0,_=this.isub(H),this.negative^=1,this._normSign();else if(this.negative===0&&H.negative!==0)return H.negative=0,_=this.isub(H),H.negative=1,_._normSign();var O,F;if(this.length>H.length)O=this,F=H;else O=H,F=this;var q=0;for(var B=0;B<F.length;B++)_=(O.words[B]|0)+(F.words[B]|0)+q,this.words[B]=_&67108863,q=_>>>26;for(;q!==0&&B<O.length;B++)_=(O.words[B]|0)+q,this.words[B]=_&67108863,q=_>>>26;if(this.length=O.length,q!==0)this.words[this.length]=q,this.length++;else if(O!==this)for(;B<O.length;B++)this.words[B]=O.words[B];return this},Q.prototype.add=function(H){var _;if(H.negative!==0&&this.negative===0)return H.negative=0,_=this.sub(H),H.negative^=1,_;else if(H.negative===0&&this.negative!==0)return this.negative=0,_=H.sub(this),this.negative=1,_;if(this.length>H.length)return this.clone().iadd(H);return H.clone().iadd(this)},Q.prototype.isub=function(H){if(H.negative!==0){H.negative=0;var _=this.iadd(H);return H.negative=1,_._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(H),this.negative=1,this._normSign();var O=this.cmp(H);if(O===0)return this.negative=0,this.length=1,this.words[0]=0,this;var F,q;if(O>0)F=this,q=H;else F=H,q=this;var B=0;for(var P=0;P<q.length;P++)_=(F.words[P]|0)-(q.words[P]|0)+B,B=_>>26,this.words[P]=_&67108863;for(;B!==0&&P<F.length;P++)_=(F.words[P]|0)+B,B=_>>26,this.words[P]=_&67108863;if(B===0&&P<F.length&&F!==this)for(;P<F.length;P++)this.words[P]=F.words[P];if(this.length=Math.max(this.length,P),F!==this)this.negative=1;return this.strip()},Q.prototype.sub=function(H){return this.clone().isub(H)};function C(L,H,_){_.negative=H.negative^L.negative;var O=L.length+H.length|0;_.length=O,O=O-1|0;var F=L.words[0]|0,q=H.words[0]|0,B=F*q,P=B&67108863,K=B/67108864|0;_.words[0]=P;for(var W=1;W<O;W++){var R=K>>>26,x=K&67108863,y=Math.min(W,H.length-1);for(var g=Math.max(0,W-L.length+1);g<=y;g++){var n=W-g|0;F=L.words[n]|0,q=H.words[g]|0,B=F*q+x,R+=B/67108864|0,x=B&67108863}_.words[W]=x|0,K=R|0}if(K!==0)_.words[W]=K|0;else _.length--;return _.strip()}var S=function(H,_,O){var F=H.words,q=_.words,B=O.words,P=0,K,W,R,x=F[0]|0,y=x&8191,g=x>>>13,n=F[1]|0,t=n&8191,J0=n>>>13,K$=F[2]|0,Y0=K$&8191,G0=K$>>>13,kY=F[3]|0,W0=kY&8191,U0=kY>>>13,vY=F[4]|0,V0=vY&8191,_0=vY>>>13,xY=F[5]|0,M0=xY&8191,A0=xY>>>13,fY=F[6]|0,O0=fY&8191,z0=fY>>>13,yY=F[7]|0,F0=yY&8191,K0=yY>>>13,gY=F[8]|0,R0=gY&8191,q0=gY>>>13,hY=F[9]|0,I0=hY&8191,j0=hY>>>13,bY=q[0]|0,L0=bY&8191,B0=bY>>>13,cY=q[1]|0,P0=cY&8191,C0=cY>>>13,pY=q[2]|0,S0=pY&8191,w0=pY>>>13,uY=q[3]|0,E0=uY&8191,T0=uY>>>13,mY=q[4]|0,D0=mY&8191,N0=mY>>>13,dY=q[5]|0,k0=dY&8191,v0=dY>>>13,nY=q[6]|0,x0=nY&8191,f0=nY>>>13,sY=q[7]|0,y0=sY&8191,g0=sY>>>13,oY=q[8]|0,h0=oY&8191,b0=oY>>>13,lY=q[9]|0,c0=lY&8191,p0=lY>>>13;O.negative=H.negative^_.negative,O.length=19,K=Math.imul(y,L0),W=Math.imul(y,B0),W=W+Math.imul(g,L0)|0,R=Math.imul(g,B0);var ZJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(ZJ>>>26)|0,ZJ&=67108863,K=Math.imul(t,L0),W=Math.imul(t,B0),W=W+Math.imul(J0,L0)|0,R=Math.imul(J0,B0),K=K+Math.imul(y,P0)|0,W=W+Math.imul(y,C0)|0,W=W+Math.imul(g,P0)|0,R=R+Math.imul(g,C0)|0;var JJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(JJ>>>26)|0,JJ&=67108863,K=Math.imul(Y0,L0),W=Math.imul(Y0,B0),W=W+Math.imul(G0,L0)|0,R=Math.imul(G0,B0),K=K+Math.imul(t,P0)|0,W=W+Math.imul(t,C0)|0,W=W+Math.imul(J0,P0)|0,R=R+Math.imul(J0,C0)|0,K=K+Math.imul(y,S0)|0,W=W+Math.imul(y,w0)|0,W=W+Math.imul(g,S0)|0,R=R+Math.imul(g,w0)|0;var YJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(YJ>>>26)|0,YJ&=67108863,K=Math.imul(W0,L0),W=Math.imul(W0,B0),W=W+Math.imul(U0,L0)|0,R=Math.imul(U0,B0),K=K+Math.imul(Y0,P0)|0,W=W+Math.imul(Y0,C0)|0,W=W+Math.imul(G0,P0)|0,R=R+Math.imul(G0,C0)|0,K=K+Math.imul(t,S0)|0,W=W+Math.imul(t,w0)|0,W=W+Math.imul(J0,S0)|0,R=R+Math.imul(J0,w0)|0,K=K+Math.imul(y,E0)|0,W=W+Math.imul(y,T0)|0,W=W+Math.imul(g,E0)|0,R=R+Math.imul(g,T0)|0;var QJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(QJ>>>26)|0,QJ&=67108863,K=Math.imul(V0,L0),W=Math.imul(V0,B0),W=W+Math.imul(_0,L0)|0,R=Math.imul(_0,B0),K=K+Math.imul(W0,P0)|0,W=W+Math.imul(W0,C0)|0,W=W+Math.imul(U0,P0)|0,R=R+Math.imul(U0,C0)|0,K=K+Math.imul(Y0,S0)|0,W=W+Math.imul(Y0,w0)|0,W=W+Math.imul(G0,S0)|0,R=R+Math.imul(G0,w0)|0,K=K+Math.imul(t,E0)|0,W=W+Math.imul(t,T0)|0,W=W+Math.imul(J0,E0)|0,R=R+Math.imul(J0,T0)|0,K=K+Math.imul(y,D0)|0,W=W+Math.imul(y,N0)|0,W=W+Math.imul(g,D0)|0,R=R+Math.imul(g,N0)|0;var XJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(XJ>>>26)|0,XJ&=67108863,K=Math.imul(M0,L0),W=Math.imul(M0,B0),W=W+Math.imul(A0,L0)|0,R=Math.imul(A0,B0),K=K+Math.imul(V0,P0)|0,W=W+Math.imul(V0,C0)|0,W=W+Math.imul(_0,P0)|0,R=R+Math.imul(_0,C0)|0,K=K+Math.imul(W0,S0)|0,W=W+Math.imul(W0,w0)|0,W=W+Math.imul(U0,S0)|0,R=R+Math.imul(U0,w0)|0,K=K+Math.imul(Y0,E0)|0,W=W+Math.imul(Y0,T0)|0,W=W+Math.imul(G0,E0)|0,R=R+Math.imul(G0,T0)|0,K=K+Math.imul(t,D0)|0,W=W+Math.imul(t,N0)|0,W=W+Math.imul(J0,D0)|0,R=R+Math.imul(J0,N0)|0,K=K+Math.imul(y,k0)|0,W=W+Math.imul(y,v0)|0,W=W+Math.imul(g,k0)|0,R=R+Math.imul(g,v0)|0;var GJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(GJ>>>26)|0,GJ&=67108863,K=Math.imul(O0,L0),W=Math.imul(O0,B0),W=W+Math.imul(z0,L0)|0,R=Math.imul(z0,B0),K=K+Math.imul(M0,P0)|0,W=W+Math.imul(M0,C0)|0,W=W+Math.imul(A0,P0)|0,R=R+Math.imul(A0,C0)|0,K=K+Math.imul(V0,S0)|0,W=W+Math.imul(V0,w0)|0,W=W+Math.imul(_0,S0)|0,R=R+Math.imul(_0,w0)|0,K=K+Math.imul(W0,E0)|0,W=W+Math.imul(W0,T0)|0,W=W+Math.imul(U0,E0)|0,R=R+Math.imul(U0,T0)|0,K=K+Math.imul(Y0,D0)|0,W=W+Math.imul(Y0,N0)|0,W=W+Math.imul(G0,D0)|0,R=R+Math.imul(G0,N0)|0,K=K+Math.imul(t,k0)|0,W=W+Math.imul(t,v0)|0,W=W+Math.imul(J0,k0)|0,R=R+Math.imul(J0,v0)|0,K=K+Math.imul(y,x0)|0,W=W+Math.imul(y,f0)|0,W=W+Math.imul(g,x0)|0,R=R+Math.imul(g,f0)|0;var HJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(HJ>>>26)|0,HJ&=67108863,K=Math.imul(F0,L0),W=Math.imul(F0,B0),W=W+Math.imul(K0,L0)|0,R=Math.imul(K0,B0),K=K+Math.imul(O0,P0)|0,W=W+Math.imul(O0,C0)|0,W=W+Math.imul(z0,P0)|0,R=R+Math.imul(z0,C0)|0,K=K+Math.imul(M0,S0)|0,W=W+Math.imul(M0,w0)|0,W=W+Math.imul(A0,S0)|0,R=R+Math.imul(A0,w0)|0,K=K+Math.imul(V0,E0)|0,W=W+Math.imul(V0,T0)|0,W=W+Math.imul(_0,E0)|0,R=R+Math.imul(_0,T0)|0,K=K+Math.imul(W0,D0)|0,W=W+Math.imul(W0,N0)|0,W=W+Math.imul(U0,D0)|0,R=R+Math.imul(U0,N0)|0,K=K+Math.imul(Y0,k0)|0,W=W+Math.imul(Y0,v0)|0,W=W+Math.imul(G0,k0)|0,R=R+Math.imul(G0,v0)|0,K=K+Math.imul(t,x0)|0,W=W+Math.imul(t,f0)|0,W=W+Math.imul(J0,x0)|0,R=R+Math.imul(J0,f0)|0,K=K+Math.imul(y,y0)|0,W=W+Math.imul(y,g0)|0,W=W+Math.imul(g,y0)|0,R=R+Math.imul(g,g0)|0;var WJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(WJ>>>26)|0,WJ&=67108863,K=Math.imul(R0,L0),W=Math.imul(R0,B0),W=W+Math.imul(q0,L0)|0,R=Math.imul(q0,B0),K=K+Math.imul(F0,P0)|0,W=W+Math.imul(F0,C0)|0,W=W+Math.imul(K0,P0)|0,R=R+Math.imul(K0,C0)|0,K=K+Math.imul(O0,S0)|0,W=W+Math.imul(O0,w0)|0,W=W+Math.imul(z0,S0)|0,R=R+Math.imul(z0,w0)|0,K=K+Math.imul(M0,E0)|0,W=W+Math.imul(M0,T0)|0,W=W+Math.imul(A0,E0)|0,R=R+Math.imul(A0,T0)|0,K=K+Math.imul(V0,D0)|0,W=W+Math.imul(V0,N0)|0,W=W+Math.imul(_0,D0)|0,R=R+Math.imul(_0,N0)|0,K=K+Math.imul(W0,k0)|0,W=W+Math.imul(W0,v0)|0,W=W+Math.imul(U0,k0)|0,R=R+Math.imul(U0,v0)|0,K=K+Math.imul(Y0,x0)|0,W=W+Math.imul(Y0,f0)|0,W=W+Math.imul(G0,x0)|0,R=R+Math.imul(G0,f0)|0,K=K+Math.imul(t,y0)|0,W=W+Math.imul(t,g0)|0,W=W+Math.imul(J0,y0)|0,R=R+Math.imul(J0,g0)|0,K=K+Math.imul(y,h0)|0,W=W+Math.imul(y,b0)|0,W=W+Math.imul(g,h0)|0,R=R+Math.imul(g,b0)|0;var UJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(UJ>>>26)|0,UJ&=67108863,K=Math.imul(I0,L0),W=Math.imul(I0,B0),W=W+Math.imul(j0,L0)|0,R=Math.imul(j0,B0),K=K+Math.imul(R0,P0)|0,W=W+Math.imul(R0,C0)|0,W=W+Math.imul(q0,P0)|0,R=R+Math.imul(q0,C0)|0,K=K+Math.imul(F0,S0)|0,W=W+Math.imul(F0,w0)|0,W=W+Math.imul(K0,S0)|0,R=R+Math.imul(K0,w0)|0,K=K+Math.imul(O0,E0)|0,W=W+Math.imul(O0,T0)|0,W=W+Math.imul(z0,E0)|0,R=R+Math.imul(z0,T0)|0,K=K+Math.imul(M0,D0)|0,W=W+Math.imul(M0,N0)|0,W=W+Math.imul(A0,D0)|0,R=R+Math.imul(A0,N0)|0,K=K+Math.imul(V0,k0)|0,W=W+Math.imul(V0,v0)|0,W=W+Math.imul(_0,k0)|0,R=R+Math.imul(_0,v0)|0,K=K+Math.imul(W0,x0)|0,W=W+Math.imul(W0,f0)|0,W=W+Math.imul(U0,x0)|0,R=R+Math.imul(U0,f0)|0,K=K+Math.imul(Y0,y0)|0,W=W+Math.imul(Y0,g0)|0,W=W+Math.imul(G0,y0)|0,R=R+Math.imul(G0,g0)|0,K=K+Math.imul(t,h0)|0,W=W+Math.imul(t,b0)|0,W=W+Math.imul(J0,h0)|0,R=R+Math.imul(J0,b0)|0,K=K+Math.imul(y,c0)|0,W=W+Math.imul(y,p0)|0,W=W+Math.imul(g,c0)|0,R=R+Math.imul(g,p0)|0;var VJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(VJ>>>26)|0,VJ&=67108863,K=Math.imul(I0,P0),W=Math.imul(I0,C0),W=W+Math.imul(j0,P0)|0,R=Math.imul(j0,C0),K=K+Math.imul(R0,S0)|0,W=W+Math.imul(R0,w0)|0,W=W+Math.imul(q0,S0)|0,R=R+Math.imul(q0,w0)|0,K=K+Math.imul(F0,E0)|0,W=W+Math.imul(F0,T0)|0,W=W+Math.imul(K0,E0)|0,R=R+Math.imul(K0,T0)|0,K=K+Math.imul(O0,D0)|0,W=W+Math.imul(O0,N0)|0,W=W+Math.imul(z0,D0)|0,R=R+Math.imul(z0,N0)|0,K=K+Math.imul(M0,k0)|0,W=W+Math.imul(M0,v0)|0,W=W+Math.imul(A0,k0)|0,R=R+Math.imul(A0,v0)|0,K=K+Math.imul(V0,x0)|0,W=W+Math.imul(V0,f0)|0,W=W+Math.imul(_0,x0)|0,R=R+Math.imul(_0,f0)|0,K=K+Math.imul(W0,y0)|0,W=W+Math.imul(W0,g0)|0,W=W+Math.imul(U0,y0)|0,R=R+Math.imul(U0,g0)|0,K=K+Math.imul(Y0,h0)|0,W=W+Math.imul(Y0,b0)|0,W=W+Math.imul(G0,h0)|0,R=R+Math.imul(G0,b0)|0,K=K+Math.imul(t,c0)|0,W=W+Math.imul(t,p0)|0,W=W+Math.imul(J0,c0)|0,R=R+Math.imul(J0,p0)|0;var _J=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(_J>>>26)|0,_J&=67108863,K=Math.imul(I0,S0),W=Math.imul(I0,w0),W=W+Math.imul(j0,S0)|0,R=Math.imul(j0,w0),K=K+Math.imul(R0,E0)|0,W=W+Math.imul(R0,T0)|0,W=W+Math.imul(q0,E0)|0,R=R+Math.imul(q0,T0)|0,K=K+Math.imul(F0,D0)|0,W=W+Math.imul(F0,N0)|0,W=W+Math.imul(K0,D0)|0,R=R+Math.imul(K0,N0)|0,K=K+Math.imul(O0,k0)|0,W=W+Math.imul(O0,v0)|0,W=W+Math.imul(z0,k0)|0,R=R+Math.imul(z0,v0)|0,K=K+Math.imul(M0,x0)|0,W=W+Math.imul(M0,f0)|0,W=W+Math.imul(A0,x0)|0,R=R+Math.imul(A0,f0)|0,K=K+Math.imul(V0,y0)|0,W=W+Math.imul(V0,g0)|0,W=W+Math.imul(_0,y0)|0,R=R+Math.imul(_0,g0)|0,K=K+Math.imul(W0,h0)|0,W=W+Math.imul(W0,b0)|0,W=W+Math.imul(U0,h0)|0,R=R+Math.imul(U0,b0)|0,K=K+Math.imul(Y0,c0)|0,W=W+Math.imul(Y0,p0)|0,W=W+Math.imul(G0,c0)|0,R=R+Math.imul(G0,p0)|0;var MJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(MJ>>>26)|0,MJ&=67108863,K=Math.imul(I0,E0),W=Math.imul(I0,T0),W=W+Math.imul(j0,E0)|0,R=Math.imul(j0,T0),K=K+Math.imul(R0,D0)|0,W=W+Math.imul(R0,N0)|0,W=W+Math.imul(q0,D0)|0,R=R+Math.imul(q0,N0)|0,K=K+Math.imul(F0,k0)|0,W=W+Math.imul(F0,v0)|0,W=W+Math.imul(K0,k0)|0,R=R+Math.imul(K0,v0)|0,K=K+Math.imul(O0,x0)|0,W=W+Math.imul(O0,f0)|0,W=W+Math.imul(z0,x0)|0,R=R+Math.imul(z0,f0)|0,K=K+Math.imul(M0,y0)|0,W=W+Math.imul(M0,g0)|0,W=W+Math.imul(A0,y0)|0,R=R+Math.imul(A0,g0)|0,K=K+Math.imul(V0,h0)|0,W=W+Math.imul(V0,b0)|0,W=W+Math.imul(_0,h0)|0,R=R+Math.imul(_0,b0)|0,K=K+Math.imul(W0,c0)|0,W=W+Math.imul(W0,p0)|0,W=W+Math.imul(U0,c0)|0,R=R+Math.imul(U0,p0)|0;var AJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(AJ>>>26)|0,AJ&=67108863,K=Math.imul(I0,D0),W=Math.imul(I0,N0),W=W+Math.imul(j0,D0)|0,R=Math.imul(j0,N0),K=K+Math.imul(R0,k0)|0,W=W+Math.imul(R0,v0)|0,W=W+Math.imul(q0,k0)|0,R=R+Math.imul(q0,v0)|0,K=K+Math.imul(F0,x0)|0,W=W+Math.imul(F0,f0)|0,W=W+Math.imul(K0,x0)|0,R=R+Math.imul(K0,f0)|0,K=K+Math.imul(O0,y0)|0,W=W+Math.imul(O0,g0)|0,W=W+Math.imul(z0,y0)|0,R=R+Math.imul(z0,g0)|0,K=K+Math.imul(M0,h0)|0,W=W+Math.imul(M0,b0)|0,W=W+Math.imul(A0,h0)|0,R=R+Math.imul(A0,b0)|0,K=K+Math.imul(V0,c0)|0,W=W+Math.imul(V0,p0)|0,W=W+Math.imul(_0,c0)|0,R=R+Math.imul(_0,p0)|0;var OJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(OJ>>>26)|0,OJ&=67108863,K=Math.imul(I0,k0),W=Math.imul(I0,v0),W=W+Math.imul(j0,k0)|0,R=Math.imul(j0,v0),K=K+Math.imul(R0,x0)|0,W=W+Math.imul(R0,f0)|0,W=W+Math.imul(q0,x0)|0,R=R+Math.imul(q0,f0)|0,K=K+Math.imul(F0,y0)|0,W=W+Math.imul(F0,g0)|0,W=W+Math.imul(K0,y0)|0,R=R+Math.imul(K0,g0)|0,K=K+Math.imul(O0,h0)|0,W=W+Math.imul(O0,b0)|0,W=W+Math.imul(z0,h0)|0,R=R+Math.imul(z0,b0)|0,K=K+Math.imul(M0,c0)|0,W=W+Math.imul(M0,p0)|0,W=W+Math.imul(A0,c0)|0,R=R+Math.imul(A0,p0)|0;var zJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(zJ>>>26)|0,zJ&=67108863,K=Math.imul(I0,x0),W=Math.imul(I0,f0),W=W+Math.imul(j0,x0)|0,R=Math.imul(j0,f0),K=K+Math.imul(R0,y0)|0,W=W+Math.imul(R0,g0)|0,W=W+Math.imul(q0,y0)|0,R=R+Math.imul(q0,g0)|0,K=K+Math.imul(F0,h0)|0,W=W+Math.imul(F0,b0)|0,W=W+Math.imul(K0,h0)|0,R=R+Math.imul(K0,b0)|0,K=K+Math.imul(O0,c0)|0,W=W+Math.imul(O0,p0)|0,W=W+Math.imul(z0,c0)|0,R=R+Math.imul(z0,p0)|0;var FJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(FJ>>>26)|0,FJ&=67108863,K=Math.imul(I0,y0),W=Math.imul(I0,g0),W=W+Math.imul(j0,y0)|0,R=Math.imul(j0,g0),K=K+Math.imul(R0,h0)|0,W=W+Math.imul(R0,b0)|0,W=W+Math.imul(q0,h0)|0,R=R+Math.imul(q0,b0)|0,K=K+Math.imul(F0,c0)|0,W=W+Math.imul(F0,p0)|0,W=W+Math.imul(K0,c0)|0,R=R+Math.imul(K0,p0)|0;var KJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(KJ>>>26)|0,KJ&=67108863,K=Math.imul(I0,h0),W=Math.imul(I0,b0),W=W+Math.imul(j0,h0)|0,R=Math.imul(j0,b0),K=K+Math.imul(R0,c0)|0,W=W+Math.imul(R0,p0)|0,W=W+Math.imul(q0,c0)|0,R=R+Math.imul(q0,p0)|0;var RJ=(P+K|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(RJ>>>26)|0,RJ&=67108863,K=Math.imul(I0,c0),W=Math.imul(I0,p0),W=W+Math.imul(j0,c0)|0,R=Math.imul(j0,p0);var qJ=(P+K|0)+((W&8191)<<13)|0;if(P=(R+(W>>>13)|0)+(qJ>>>26)|0,qJ&=67108863,B[0]=ZJ,B[1]=JJ,B[2]=YJ,B[3]=QJ,B[4]=XJ,B[5]=GJ,B[6]=HJ,B[7]=WJ,B[8]=UJ,B[9]=VJ,B[10]=_J,B[11]=MJ,B[12]=AJ,B[13]=OJ,B[14]=zJ,B[15]=FJ,B[16]=KJ,B[17]=RJ,B[18]=qJ,P!==0)B[19]=P,O.length++;return O};if(!Math.imul)S=C;function w(L,H,_){_.negative=H.negative^L.negative,_.length=L.length+H.length;var O=0,F=0;for(var q=0;q<_.length-1;q++){var B=F;F=0;var P=O&67108863,K=Math.min(q,H.length-1);for(var W=Math.max(0,q-L.length+1);W<=K;W++){var R=q-W,x=L.words[R]|0,y=H.words[W]|0,g=x*y,n=g&67108863;B=B+(g/67108864|0)|0,n=n+P|0,P=n&67108863,B=B+(n>>>26)|0,F+=B>>>26,B&=67108863}_.words[q]=P,O=B,B=F}if(O!==0)_.words[q]=O;else _.length--;return _.strip()}function k(L,H,_){var O=new N;return O.mulp(L,H,_)}Q.prototype.mulTo=function(H,_){var O,F=this.length+H.length;if(this.length===10&&H.length===10)O=S(this,H,_);else if(F<63)O=C(this,H,_);else if(F<1024)O=w(this,H,_);else O=k(this,H,_);return O};function N(L,H){this.x=L,this.y=H}N.prototype.makeRBT=function(H){var _=Array(H),O=Q.prototype._countBits(H)-1;for(var F=0;F<H;F++)_[F]=this.revBin(F,O,H);return _},N.prototype.revBin=function(H,_,O){if(H===0||H===O-1)return H;var F=0;for(var q=0;q<_;q++)F|=(H&1)<<_-q-1,H>>=1;return F},N.prototype.permute=function(H,_,O,F,q,B){for(var P=0;P<B;P++)F[P]=_[H[P]],q[P]=O[H[P]]},N.prototype.transform=function(H,_,O,F,q,B){this.permute(B,H,_,O,F,q);for(var P=1;P<q;P<<=1){var K=P<<1,W=Math.cos(2*Math.PI/K),R=Math.sin(2*Math.PI/K);for(var x=0;x<q;x+=K){var y=W,g=R;for(var n=0;n<P;n++){var t=O[x+n],J0=F[x+n],K$=O[x+n+P],Y0=F[x+n+P],G0=y*K$-g*Y0;if(Y0=y*Y0+g*K$,K$=G0,O[x+n]=t+K$,F[x+n]=J0+Y0,O[x+n+P]=t-K$,F[x+n+P]=J0-Y0,n!==K)G0=W*y-R*g,g=W*g+R*y,y=G0}}}},N.prototype.guessLen13b=function(H,_){var O=Math.max(_,H)|1,F=O&1,q=0;for(O=O/2|0;O;O=O>>>1)q++;return 1<<q+1+F},N.prototype.conjugate=function(H,_,O){if(O<=1)return;for(var F=0;F<O/2;F++){var q=H[F];H[F]=H[O-F-1],H[O-F-1]=q,q=_[F],_[F]=-_[O-F-1],_[O-F-1]=-q}},N.prototype.normalize13b=function(H,_){var O=0;for(var F=0;F<_/2;F++){var q=Math.round(H[2*F+1]/_)*8192+Math.round(H[2*F]/_)+O;if(H[F]=q&67108863,q<67108864)O=0;else O=q/67108864|0}return H},N.prototype.convert13b=function(H,_,O,F){var q=0;for(var B=0;B<_;B++)q=q+(H[B]|0),O[2*B]=q&8191,q=q>>>13,O[2*B+1]=q&8191,q=q>>>13;for(B=2*_;B<F;++B)O[B]=0;J(q===0),J((q&-8192)===0)},N.prototype.stub=function(H){var _=Array(H);for(var O=0;O<H;O++)_[O]=0;return _},N.prototype.mulp=function(H,_,O){var F=2*this.guessLen13b(H.length,_.length),q=this.makeRBT(F),B=this.stub(F),P=Array(F),K=Array(F),W=Array(F),R=Array(F),x=Array(F),y=Array(F),g=O.words;g.length=F,this.convert13b(H.words,H.length,P,F),this.convert13b(_.words,_.length,R,F),this.transform(P,B,K,W,F,q),this.transform(R,B,x,y,F,q);for(var n=0;n<F;n++){var t=K[n]*x[n]-W[n]*y[n];W[n]=K[n]*y[n]+W[n]*x[n],K[n]=t}return this.conjugate(K,W,F),this.transform(K,W,g,B,F,q),this.conjugate(g,B,F),this.normalize13b(g,F),O.negative=H.negative^_.negative,O.length=H.length+_.length,O.strip()},Q.prototype.mul=function(H){var _=new Q(null);return _.words=Array(this.length+H.length),this.mulTo(H,_)},Q.prototype.mulf=function(H){var _=new Q(null);return _.words=Array(this.length+H.length),k(this,H,_)},Q.prototype.imul=function(H){return this.clone().mulTo(H,this)},Q.prototype.imuln=function(H){J(typeof H==="number"),J(H<67108864);var _=0;for(var O=0;O<this.length;O++){var F=(this.words[O]|0)*H,q=(F&67108863)+(_&67108863);_>>=26,_+=F/67108864|0,_+=q>>>26,this.words[O]=q&67108863}if(_!==0)this.words[O]=_,this.length++;return this.length=H===0?1:this.length,this},Q.prototype.muln=function(H){return this.clone().imuln(H)},Q.prototype.sqr=function(){return this.mul(this)},Q.prototype.isqr=function(){return this.imul(this.clone())},Q.prototype.pow=function(H){var _=j(H);if(_.length===0)return new Q(1);var O=this;for(var F=0;F<_.length;F++,O=O.sqr())if(_[F]!==0)break;if(++F<_.length)for(var q=O.sqr();F<_.length;F++,q=q.sqr()){if(_[F]===0)continue;O=O.mul(q)}return O},Q.prototype.iushln=function(H){J(typeof H==="number"&&H>=0);var _=H%26,O=(H-_)/26,F=67108863>>>26-_<<26-_,q;if(_!==0){var B=0;for(q=0;q<this.length;q++){var P=this.words[q]&F,K=(this.words[q]|0)-P<<_;this.words[q]=K|B,B=P>>>26-_}if(B)this.words[q]=B,this.length++}if(O!==0){for(q=this.length-1;q>=0;q--)this.words[q+O]=this.words[q];for(q=0;q<O;q++)this.words[q]=0;this.length+=O}return this.strip()},Q.prototype.ishln=function(H){return J(this.negative===0),this.iushln(H)},Q.prototype.iushrn=function(H,_,O){J(typeof H==="number"&&H>=0);var F;if(_)F=(_-_%26)/26;else F=0;var q=H%26,B=Math.min((H-q)/26,this.length),P=67108863^67108863>>>q<<q,K=O;if(F-=B,F=Math.max(0,F),K){for(var W=0;W<B;W++)K.words[W]=this.words[W];K.length=B}if(B===0);else if(this.length>B){this.length-=B;for(W=0;W<this.length;W++)this.words[W]=this.words[W+B]}else this.words[0]=0,this.length=1;var R=0;for(W=this.length-1;W>=0&&(R!==0||W>=F);W--){var x=this.words[W]|0;this.words[W]=R<<26-q|x>>>q,R=x&P}if(K&&R!==0)K.words[K.length++]=R;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},Q.prototype.ishrn=function(H,_,O){return J(this.negative===0),this.iushrn(H,_,O)},Q.prototype.shln=function(H){return this.clone().ishln(H)},Q.prototype.ushln=function(H){return this.clone().iushln(H)},Q.prototype.shrn=function(H){return this.clone().ishrn(H)},Q.prototype.ushrn=function(H){return this.clone().iushrn(H)},Q.prototype.testn=function(H){J(typeof H==="number"&&H>=0);var _=H%26,O=(H-_)/26,F=1<<_;if(this.length<=O)return!1;var q=this.words[O];return!!(q&F)},Q.prototype.imaskn=function(H){J(typeof H==="number"&&H>=0);var _=H%26,O=(H-_)/26;if(J(this.negative===0,"imaskn works only with positive numbers"),this.length<=O)return this;if(_!==0)O++;if(this.length=Math.min(O,this.length),_!==0){var F=67108863^67108863>>>_<<_;this.words[this.length-1]&=F}return this.strip()},Q.prototype.maskn=function(H){return this.clone().imaskn(H)},Q.prototype.iaddn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.isubn(-H);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<H)return this.words[0]=H-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(H),this.negative=1,this}return this._iaddn(H)},Q.prototype._iaddn=function(H){this.words[0]+=H;for(var _=0;_<this.length&&this.words[_]>=67108864;_++)if(this.words[_]-=67108864,_===this.length-1)this.words[_+1]=1;else this.words[_+1]++;return this.length=Math.max(this.length,_+1),this},Q.prototype.isubn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.iaddn(-H);if(this.negative!==0)return this.negative=0,this.iaddn(H),this.negative=1,this;if(this.words[0]-=H,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var _=0;_<this.length&&this.words[_]<0;_++)this.words[_]+=67108864,this.words[_+1]-=1;return this.strip()},Q.prototype.addn=function(H){return this.clone().iaddn(H)},Q.prototype.subn=function(H){return this.clone().isubn(H)},Q.prototype.iabs=function(){return this.negative=0,this},Q.prototype.abs=function(){return this.clone().iabs()},Q.prototype._ishlnsubmul=function(H,_,O){var F=H.length+O,q;this._expand(F);var B,P=0;for(q=0;q<H.length;q++){B=(this.words[q+O]|0)+P;var K=(H.words[q]|0)*_;B-=K&67108863,P=(B>>26)-(K/67108864|0),this.words[q+O]=B&67108863}for(;q<this.length-O;q++)B=(this.words[q+O]|0)+P,P=B>>26,this.words[q+O]=B&67108863;if(P===0)return this.strip();J(P===-1),P=0;for(q=0;q<this.length;q++)B=-(this.words[q]|0)+P,P=B>>26,this.words[q]=B&67108863;return this.negative=1,this.strip()},Q.prototype._wordDiv=function(H,_){var O=this.length-H.length,F=this.clone(),q=H,B=q.words[q.length-1]|0,P=this._countBits(B);if(O=26-P,O!==0)q=q.ushln(O),F.iushln(O),B=q.words[q.length-1]|0;var K=F.length-q.length,W;if(_!=="mod"){W=new Q(null),W.length=K+1,W.words=Array(W.length);for(var R=0;R<W.length;R++)W.words[R]=0}var x=F.clone()._ishlnsubmul(q,1,K);if(x.negative===0){if(F=x,W)W.words[K]=1}for(var y=K-1;y>=0;y--){var g=(F.words[q.length+y]|0)*67108864+(F.words[q.length+y-1]|0);g=Math.min(g/B|0,67108863),F._ishlnsubmul(q,g,y);while(F.negative!==0)if(g--,F.negative=0,F._ishlnsubmul(q,1,y),!F.isZero())F.negative^=1;if(W)W.words[y]=g}if(W)W.strip();if(F.strip(),_!=="div"&&O!==0)F.iushrn(O);return{div:W||null,mod:F}},Q.prototype.divmod=function(H,_,O){if(J(!H.isZero()),this.isZero())return{div:new Q(0),mod:new Q(0)};var F,q,B;if(this.negative!==0&&H.negative===0){if(B=this.neg().divmod(H,_),_!=="mod")F=B.div.neg();if(_!=="div"){if(q=B.mod.neg(),O&&q.negative!==0)q.iadd(H)}return{div:F,mod:q}}if(this.negative===0&&H.negative!==0){if(B=this.divmod(H.neg(),_),_!=="mod")F=B.div.neg();return{div:F,mod:B.mod}}if((this.negative&H.negative)!==0){if(B=this.neg().divmod(H.neg(),_),_!=="div"){if(q=B.mod.neg(),O&&q.negative!==0)q.isub(H)}return{div:B.div,mod:q}}if(H.length>this.length||this.cmp(H)<0)return{div:new Q(0),mod:this};if(H.length===1){if(_==="div")return{div:this.divn(H.words[0]),mod:null};if(_==="mod")return{div:null,mod:new Q(this.modn(H.words[0]))};return{div:this.divn(H.words[0]),mod:new Q(this.modn(H.words[0]))}}return this._wordDiv(H,_)},Q.prototype.div=function(H){return this.divmod(H,"div",!1).div},Q.prototype.mod=function(H){return this.divmod(H,"mod",!1).mod},Q.prototype.umod=function(H){return this.divmod(H,"mod",!0).mod},Q.prototype.divRound=function(H){var _=this.divmod(H);if(_.mod.isZero())return _.div;var O=_.div.negative!==0?_.mod.isub(H):_.mod,F=H.ushrn(1),q=H.andln(1),B=O.cmp(F);if(B<0||q===1&&B===0)return _.div;return _.div.negative!==0?_.div.isubn(1):_.div.iaddn(1)},Q.prototype.modn=function(H){J(H<=67108863);var _=67108864%H,O=0;for(var F=this.length-1;F>=0;F--)O=(_*O+(this.words[F]|0))%H;return O},Q.prototype.idivn=function(H){J(H<=67108863);var _=0;for(var O=this.length-1;O>=0;O--){var F=(this.words[O]|0)+_*67108864;this.words[O]=F/H|0,_=F%H}return this.strip()},Q.prototype.divn=function(H){return this.clone().idivn(H)},Q.prototype.egcd=function(H){J(H.negative===0),J(!H.isZero());var _=this,O=H.clone();if(_.negative!==0)_=_.umod(H);else _=_.clone();var F=new Q(1),q=new Q(0),B=new Q(0),P=new Q(1),K=0;while(_.isEven()&&O.isEven())_.iushrn(1),O.iushrn(1),++K;var W=O.clone(),R=_.clone();while(!_.isZero()){for(var x=0,y=1;(_.words[0]&y)===0&&x<26;++x,y<<=1);if(x>0){_.iushrn(x);while(x-- >0){if(F.isOdd()||q.isOdd())F.iadd(W),q.isub(R);F.iushrn(1),q.iushrn(1)}}for(var g=0,n=1;(O.words[0]&n)===0&&g<26;++g,n<<=1);if(g>0){O.iushrn(g);while(g-- >0){if(B.isOdd()||P.isOdd())B.iadd(W),P.isub(R);B.iushrn(1),P.iushrn(1)}}if(_.cmp(O)>=0)_.isub(O),F.isub(B),q.isub(P);else O.isub(_),B.isub(F),P.isub(q)}return{a:B,b:P,gcd:O.iushln(K)}},Q.prototype._invmp=function(H){J(H.negative===0),J(!H.isZero());var _=this,O=H.clone();if(_.negative!==0)_=_.umod(H);else _=_.clone();var F=new Q(1),q=new Q(0),B=O.clone();while(_.cmpn(1)>0&&O.cmpn(1)>0){for(var P=0,K=1;(_.words[0]&K)===0&&P<26;++P,K<<=1);if(P>0){_.iushrn(P);while(P-- >0){if(F.isOdd())F.iadd(B);F.iushrn(1)}}for(var W=0,R=1;(O.words[0]&R)===0&&W<26;++W,R<<=1);if(W>0){O.iushrn(W);while(W-- >0){if(q.isOdd())q.iadd(B);q.iushrn(1)}}if(_.cmp(O)>=0)_.isub(O),F.isub(q);else O.isub(_),q.isub(F)}var x;if(_.cmpn(1)===0)x=F;else x=q;if(x.cmpn(0)<0)x.iadd(H);return x},Q.prototype.gcd=function(H){if(this.isZero())return H.abs();if(H.isZero())return this.abs();var _=this.clone(),O=H.clone();_.negative=0,O.negative=0;for(var F=0;_.isEven()&&O.isEven();F++)_.iushrn(1),O.iushrn(1);do{while(_.isEven())_.iushrn(1);while(O.isEven())O.iushrn(1);var q=_.cmp(O);if(q<0){var B=_;_=O,O=B}else if(q===0||O.cmpn(1)===0)break;_.isub(O)}while(!0);return O.iushln(F)},Q.prototype.invm=function(H){return this.egcd(H).a.umod(H)},Q.prototype.isEven=function(){return(this.words[0]&1)===0},Q.prototype.isOdd=function(){return(this.words[0]&1)===1},Q.prototype.andln=function(H){return this.words[0]&H},Q.prototype.bincn=function(H){J(typeof H==="number");var _=H%26,O=(H-_)/26,F=1<<_;if(this.length<=O)return this._expand(O+1),this.words[O]|=F,this;var q=F;for(var B=O;q!==0&&B<this.length;B++){var P=this.words[B]|0;P+=q,q=P>>>26,P&=67108863,this.words[B]=P}if(q!==0)this.words[B]=q,this.length++;return this},Q.prototype.isZero=function(){return this.length===1&&this.words[0]===0},Q.prototype.cmpn=function(H){var _=H<0;if(this.negative!==0&&!_)return-1;if(this.negative===0&&_)return 1;this.strip();var O;if(this.length>1)O=1;else{if(_)H=-H;J(H<=67108863,"Number is too big");var F=this.words[0]|0;O=F===H?0:F<H?-1:1}if(this.negative!==0)return-O|0;return O},Q.prototype.cmp=function(H){if(this.negative!==0&&H.negative===0)return-1;if(this.negative===0&&H.negative!==0)return 1;var _=this.ucmp(H);if(this.negative!==0)return-_|0;return _},Q.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var _=0;for(var O=this.length-1;O>=0;O--){var F=this.words[O]|0,q=H.words[O]|0;if(F===q)continue;if(F<q)_=-1;else if(F>q)_=1;break}return _},Q.prototype.gtn=function(H){return this.cmpn(H)===1},Q.prototype.gt=function(H){return this.cmp(H)===1},Q.prototype.gten=function(H){return this.cmpn(H)>=0},Q.prototype.gte=function(H){return this.cmp(H)>=0},Q.prototype.ltn=function(H){return this.cmpn(H)===-1},Q.prototype.lt=function(H){return this.cmp(H)===-1},Q.prototype.lten=function(H){return this.cmpn(H)<=0},Q.prototype.lte=function(H){return this.cmp(H)<=0},Q.prototype.eqn=function(H){return this.cmpn(H)===0},Q.prototype.eq=function(H){return this.cmp(H)===0},Q.red=function(H){return new r(H)},Q.prototype.toRed=function(H){return J(!this.red,"Already a number in reduction context"),J(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},Q.prototype.fromRed=function(){return J(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},Q.prototype._forceRed=function(H){return this.red=H,this},Q.prototype.forceRed=function(H){return J(!this.red,"Already a number in reduction context"),this._forceRed(H)},Q.prototype.redAdd=function(H){return J(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},Q.prototype.redIAdd=function(H){return J(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},Q.prototype.redSub=function(H){return J(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},Q.prototype.redISub=function(H){return J(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},Q.prototype.redShl=function(H){return J(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},Q.prototype.redMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},Q.prototype.redIMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},Q.prototype.redSqr=function(){return J(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},Q.prototype.redISqr=function(){return J(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},Q.prototype.redSqrt=function(){return J(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},Q.prototype.redInvm=function(){return J(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},Q.prototype.redNeg=function(){return J(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},Q.prototype.redPow=function(H){return J(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var E={k256:null,p224:null,p192:null,p25519:null};function v(L,H){this.name=L,this.p=new Q(H,16),this.n=this.p.bitLength(),this.k=new Q(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}v.prototype._tmp=function(){var H=new Q(null);return H.words=Array(Math.ceil(this.n/13)),H},v.prototype.ireduce=function(H){var _=H,O;do this.split(_,this.tmp),_=this.imulK(_),_=_.iadd(this.tmp),O=_.bitLength();while(O>this.n);var F=O<this.n?-1:_.ucmp(this.p);if(F===0)_.words[0]=0,_.length=1;else if(F>0)_.isub(this.p);else if(_.strip!==void 0)_.strip();else _._strip();return _},v.prototype.split=function(H,_){H.iushrn(this.n,0,_)},v.prototype.imulK=function(H){return H.imul(this.k)};function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}Y(b,v),b.prototype.split=function(H,_){var O=4194303,F=Math.min(H.length,9);for(var q=0;q<F;q++)_.words[q]=H.words[q];if(_.length=F,H.length<=9){H.words[0]=0,H.length=1;return}var B=H.words[9];_.words[_.length++]=B&O;for(q=10;q<H.length;q++){var P=H.words[q]|0;H.words[q-10]=(P&O)<<4|B>>>22,B=P}if(B>>>=22,H.words[q-10]=B,B===0&&H.length>10)H.length-=10;else H.length-=9},b.prototype.imulK=function(H){H.words[H.length]=0,H.words[H.length+1]=0,H.length+=2;var _=0;for(var O=0;O<H.length;O++){var F=H.words[O]|0;_+=F*977,H.words[O]=_&67108863,_=F*64+(_/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")}Y(f,v);function d(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}Y(d,v);function a(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}Y(a,v),a.prototype.imulK=function(H){var _=0;for(var O=0;O<H.length;O++){var F=(H.words[O]|0)*19+_,q=F&67108863;F>>>=26,H.words[O]=q,_=F}if(_!==0)H.words[H.length++]=_;return H},Q._prime=function(H){if(E[H])return E[H];var _;if(H==="k256")_=new b;else if(H==="p224")_=new f;else if(H==="p192")_=new d;else if(H==="p25519")_=new a;else throw Error("Unknown prime "+H);return E[H]=_,_};function r(L){if(typeof L==="string"){var H=Q._prime(L);this.m=H.p,this.prime=H}else J(L.gtn(1),"modulus must be greater than 1"),this.m=L,this.prime=null}r.prototype._verify1=function(H){J(H.negative===0,"red works only with positives"),J(H.red,"red works only with red numbers")},r.prototype._verify2=function(H,_){J((H.negative|_.negative)===0,"red works only with positives"),J(H.red&&H.red===_.red,"red works only with red numbers")},r.prototype.imod=function(H){if(this.prime)return this.prime.ireduce(H)._forceRed(this);return H.umod(this.m)._forceRed(this)},r.prototype.neg=function(H){if(H.isZero())return H.clone();return this.m.sub(H)._forceRed(this)},r.prototype.add=function(H,_){this._verify2(H,_);var O=H.add(_);if(O.cmp(this.m)>=0)O.isub(this.m);return O._forceRed(this)},r.prototype.iadd=function(H,_){this._verify2(H,_);var O=H.iadd(_);if(O.cmp(this.m)>=0)O.isub(this.m);return O},r.prototype.sub=function(H,_){this._verify2(H,_);var O=H.sub(_);if(O.cmpn(0)<0)O.iadd(this.m);return O._forceRed(this)},r.prototype.isub=function(H,_){this._verify2(H,_);var O=H.isub(_);if(O.cmpn(0)<0)O.iadd(this.m);return O},r.prototype.shl=function(H,_){return this._verify1(H),this.imod(H.ushln(_))},r.prototype.imul=function(H,_){return this._verify2(H,_),this.imod(H.imul(_))},r.prototype.mul=function(H,_){return this._verify2(H,_),this.imod(H.mul(_))},r.prototype.isqr=function(H){return this.imul(H,H.clone())},r.prototype.sqr=function(H){return this.mul(H,H)},r.prototype.sqrt=function(H){if(H.isZero())return H.clone();var _=this.m.andln(3);if(J(_%2===1),_===3){var O=this.m.add(new Q(1)).iushrn(2);return this.pow(H,O)}var F=this.m.subn(1),q=0;while(!F.isZero()&&F.andln(1)===0)q++,F.iushrn(1);J(!F.isZero());var B=new Q(1).toRed(this),P=B.redNeg(),K=this.m.subn(1).iushrn(1),W=this.m.bitLength();W=new Q(2*W*W).toRed(this);while(this.pow(W,K).cmp(P)!==0)W.redIAdd(P);var R=this.pow(W,F),x=this.pow(H,F.addn(1).iushrn(1)),y=this.pow(H,F),g=q;while(y.cmp(B)!==0){var n=y;for(var t=0;n.cmp(B)!==0;t++)n=n.redSqr();J(t<g);var J0=this.pow(R,new Q(1).iushln(g-t-1));x=x.redMul(J0),R=J0.redSqr(),y=y.redMul(R),g=t}return x},r.prototype.invm=function(H){var _=H._invmp(this.m);if(_.negative!==0)return _.negative=0,this.imod(_).redNeg();else return this.imod(_)},r.prototype.pow=function(H,_){if(_.isZero())return new Q(1).toRed(this);if(_.cmpn(1)===0)return H.clone();var O=4,F=Array(1<<O);F[0]=new Q(1).toRed(this),F[1]=H;for(var q=2;q<F.length;q++)F[q]=this.mul(F[q-1],H);var B=F[0],P=0,K=0,W=_.bitLength()%26;if(W===0)W=26;for(q=_.length-1;q>=0;q--){var R=_.words[q];for(var x=W-1;x>=0;x--){var y=R>>x&1;if(B!==F[0])B=this.sqr(B);if(y===0&&P===0){K=0;continue}if(P<<=1,P|=y,K++,K!==O&&(q!==0||x!==0))continue;B=this.mul(B,F[P]),K=0,P=0}W=26}return B},r.prototype.convertTo=function(H){var _=H.umod(this.m);return _===H?_.clone():_},r.prototype.convertFrom=function(H){var _=H.clone();return _.red=null,_},Q.mont=function(H){return new Z0(H)};function Z0(L){if(r.call(this,L),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new Q(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}Y(Z0,r),Z0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},Z0.prototype.convertFrom=function(H){var _=this.imod(H.mul(this.rinv));return _.red=null,_},Z0.prototype.imul=function(H,_){if(H.isZero()||_.isZero())return H.words[0]=0,H.length=1,H;var O=H.imul(_),F=O.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=O.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.mul=function(H,_){if(H.isZero()||_.isZero())return new Q(0)._forceRed(this);var O=H.mul(_),F=O.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=O.isub(F).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Z0.prototype.invm=function(H){var _=this.imod(H._invmp(this.m).mul(this.r2));return _._forceRed(this)}})(typeof GY>"u"||GY,xX)});var fX=i((w7,WY)=>{if(typeof Object.create==="function")WY.exports=function(Z,J){if(J)Z.super_=J,Z.prototype=Object.create(J.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else WY.exports=function(Z,J){if(J){Z.super_=J;var Y=function(){};Y.prototype=J.prototype,Z.prototype=new Y,Z.prototype.constructor=Z}}});var T$=i((E7,UY)=>{try{if(bZ=R$("util"),typeof bZ.inherits!=="function")throw"";UY.exports=bZ.inherits}catch($){UY.exports=fX()}var bZ});var pZ=i((T7,yX)=>{var cZ=R$("buffer"),i$=cZ.Buffer,a0={},e0;for(e0 in cZ){if(!cZ.hasOwnProperty(e0))continue;if(e0==="SlowBuffer"||e0==="Buffer")continue;a0[e0]=cZ[e0]}var t$=a0.Buffer={};for(e0 in i$){if(!i$.hasOwnProperty(e0))continue;if(e0==="allocUnsafe"||e0==="allocUnsafeSlow")continue;t$[e0]=i$[e0]}a0.Buffer.prototype=i$.prototype;if(!t$.from||t$.from===Uint8Array.from)t$.from=function($,Z,J){if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type '+typeof $);if($&&typeof $.length>"u")throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);return i$($,Z,J)};if(!t$.alloc)t$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError('The "size" argument must be of type number. Received type '+typeof $);if($<0||$>=2147483648)throw RangeError('The value "'+$+'" is invalid for option "size"');var Y=i$($);if(!Z||Z.length===0)Y.fill(0);else if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);return Y};if(!a0.kStringMaxLength)try{a0.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch($){}if(!a0.constants){if(a0.constants={MAX_LENGTH:a0.kMaxLength},a0.kStringMaxLength)a0.constants.MAX_STRING_LENGTH=a0.kStringMaxLength}yX.exports=a0});var uZ=i((W9)=>{var H9=T$();function $$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}W9.Reporter=$$;$$.prototype.isError=function(Z){return Z instanceof a$};$$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};$$.prototype.restore=function(Z){let J=this._reporterState;J.obj=Z.obj,J.path=J.path.slice(0,Z.pathLen)};$$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};$$.prototype.exitKey=function(Z){let J=this._reporterState;J.path=J.path.slice(0,Z-1)};$$.prototype.leaveKey=function(Z,J,Y){let Q=this._reporterState;if(this.exitKey(Z),Q.obj!==null)Q.obj[J]=Y};$$.prototype.path=function(){return this._reporterState.path.join("/")};$$.prototype.enterObject=function(){let Z=this._reporterState,J=Z.obj;return Z.obj={},J};$$.prototype.leaveObject=function(Z){let J=this._reporterState,Y=J.obj;return J.obj=Z,Y};$$.prototype.error=function(Z){let J,Y=this._reporterState,Q=Z instanceof a$;if(Q)J=Z;else J=new a$(Y.path.map(function(X){return"["+JSON.stringify(X)+"]"}).join(""),Z.message||Z,Z.stack);if(!Y.options.partial)throw J;if(!Q)Y.errors.push(J);return J};$$.prototype.wrapResult=function(Z){let J=this._reporterState;if(!J.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:J.errors}};function a$($,Z){this.path=$,this.rethrow(Z)}H9(a$,Error);a$.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,a$);if(!this.stack)try{throw Error(this.message)}catch(J){this.stack=J.stack}return this}});var ZZ=i((_9)=>{var V9=T$(),mZ=uZ().Reporter,e$=pZ().Buffer;function Z$($,Z){if(mZ.call(this,Z),!e$.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}V9(Z$,mZ);_9.DecoderBuffer=Z$;Z$.isDecoderBuffer=function(Z){if(Z instanceof Z$)return!0;return typeof Z==="object"&&e$.isBuffer(Z.base)&&Z.constructor.name==="DecoderBuffer"&&typeof Z.offset==="number"&&typeof Z.length==="number"&&typeof Z.save==="function"&&typeof Z.restore==="function"&&typeof Z.isEmpty==="function"&&typeof Z.readUInt8==="function"&&typeof Z.skip==="function"&&typeof Z.raw==="function"};Z$.prototype.save=function(){return{offset:this.offset,reporter:mZ.prototype.save.call(this)}};Z$.prototype.restore=function(Z){let J=new Z$(this.base);return J.offset=Z.offset,J.length=this.offset,this.offset=Z.offset,mZ.prototype.restore.call(this,Z.reporter),J};Z$.prototype.isEmpty=function(){return this.offset===this.length};Z$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};Z$.prototype.skip=function(Z,J){if(!(this.offset+Z<=this.length))return this.error(J||"DecoderBuffer overrun");let Y=new Z$(this.base);return Y._reporterState=this._reporterState,Y.offset=this.offset,Y.length=this.offset+Z,this.offset+=Z,Y};Z$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function $Z($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(J){if(!$Z.isEncoderBuffer(J))J=new $Z(J,Z);return this.length+=J.length,J},this);else if(typeof $==="number"){if(!(0<=$&&$<=255))return Z.error("non-byte EncoderBuffer value");this.value=$,this.length=1}else if(typeof $==="string")this.value=$,this.length=e$.byteLength($);else if(e$.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}_9.EncoderBuffer=$Z;$Z.isEncoderBuffer=function(Z){if(Z instanceof $Z)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};$Z.prototype.join=function(Z,J){if(!Z)Z=e$.alloc(this.length);if(!J)J=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(Y){Y.join(Z,J),J+=Y.length});else{if(typeof this.value==="number")Z[J]=this.value;else if(typeof this.value==="string")Z.write(this.value,J);else if(e$.isBuffer(this.value))this.value.copy(Z,J);J+=this.length}return Z}});var bX=i((k7,hX)=>{hX.exports=gX;function gX($,Z){if(!$)throw Error(Z||"Assertion failed")}gX.equal=function(Z,J,Y){if(Z!=J)throw Error(Y||"Assertion failed: "+Z+" != "+J)}});var dZ=i((v7,pX)=>{var O9=uZ().Reporter,z9=ZZ().EncoderBuffer,F9=ZZ().DecoderBuffer,l0=bX(),cX=["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"],K9=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(cX),R9=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function e($,Z,J){let Y={};if(this._baseState=Y,Y.name=J,Y.enc=$,Y.parent=Z||null,Y.children=null,Y.tag=null,Y.args=null,Y.reverseArgs=null,Y.choice=null,Y.optional=!1,Y.any=!1,Y.obj=!1,Y.use=null,Y.useDecoder=null,Y.key=null,Y.default=null,Y.explicit=null,Y.implicit=null,Y.contains=null,!Y.parent)Y.children=[],this._wrap()}pX.exports=e;var q9=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];e.prototype.clone=function(){let Z=this._baseState,J={};q9.forEach(function(Q){J[Q]=Z[Q]});let Y=new this.constructor(J.parent);return Y._baseState=J,Y};e.prototype._wrap=function(){let Z=this._baseState;K9.forEach(function(J){this[J]=function(){let Q=new this.constructor(this);return Z.children.push(Q),Q[J].apply(Q,arguments)}},this)};e.prototype._init=function(Z){let J=this._baseState;l0(J.parent===null),Z.call(this),J.children=J.children.filter(function(Y){return Y._baseState.parent===this},this),l0.equal(J.children.length,1,"Root node can have only one child")};e.prototype._useArgs=function(Z){let J=this._baseState,Y=Z.filter(function(Q){return Q instanceof this.constructor},this);if(Z=Z.filter(function(Q){return!(Q instanceof this.constructor)},this),Y.length!==0)l0(J.children===null),J.children=Y,Y.forEach(function(Q){Q._baseState.parent=this},this);if(Z.length!==0)l0(J.args===null),J.args=Z,J.reverseArgs=Z.map(function(Q){if(typeof Q!=="object"||Q.constructor!==Object)return Q;let X={};return Object.keys(Q).forEach(function(G){if(G==(G|0))G|=0;let U=Q[G];X[U]=G}),X})};R9.forEach(function($){e.prototype[$]=function(){let J=this._baseState;throw Error($+" not implemented for encoding: "+J.enc)}});cX.forEach(function($){e.prototype[$]=function(){let J=this._baseState,Y=Array.prototype.slice.call(arguments);return l0(J.tag===null),J.tag=$,this._useArgs(Y),this}});e.prototype.use=function(Z){l0(Z);let J=this._baseState;return l0(J.use===null),J.use=Z,this};e.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};e.prototype.def=function(Z){let J=this._baseState;return l0(J.default===null),J.default=Z,J.optional=!0,this};e.prototype.explicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.explicit=Z,this};e.prototype.implicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.implicit=Z,this};e.prototype.obj=function(){let Z=this._baseState,J=Array.prototype.slice.call(arguments);if(Z.obj=!0,J.length!==0)this._useArgs(J);return this};e.prototype.key=function(Z){let J=this._baseState;return l0(J.key===null),J.key=Z,this};e.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};e.prototype.choice=function(Z){let J=this._baseState;return l0(J.choice===null),J.choice=Z,this._useArgs(Object.keys(Z).map(function(Y){return Z[Y]})),this};e.prototype.contains=function(Z){let J=this._baseState;return l0(J.use===null),J.contains=Z,this};e.prototype._decode=function(Z,J){let Y=this._baseState;if(Y.parent===null)return Z.wrapResult(Y.children[0]._decode(Z,J));let Q=Y.default,X=!0,G=null;if(Y.key!==null)G=Z.enterKey(Y.key);if(Y.optional){let V=null;if(Y.explicit!==null)V=Y.explicit;else if(Y.implicit!==null)V=Y.implicit;else if(Y.tag!==null)V=Y.tag;if(V===null&&!Y.any){let A=Z.save();try{if(Y.choice===null)this._decodeGeneric(Y.tag,Z,J);else this._decodeChoice(Z,J);X=!0}catch(z){X=!1}Z.restore(A)}else if(X=this._peekTag(Z,V,Y.any),Z.isError(X))return X}let U;if(Y.obj&&X)U=Z.enterObject();if(X){if(Y.explicit!==null){let A=this._decodeTag(Z,Y.explicit);if(Z.isError(A))return A;Z=A}let V=Z.offset;if(Y.use===null&&Y.choice===null){let A;if(Y.any)A=Z.save();let z=this._decodeTag(Z,Y.implicit!==null?Y.implicit:Y.tag,Y.any);if(Z.isError(z))return z;if(Y.any)Q=Z.raw(A);else Z=z}if(J&&J.track&&Y.tag!==null)J.track(Z.path(),V,Z.length,"tagged");if(J&&J.track&&Y.tag!==null)J.track(Z.path(),Z.offset,Z.length,"content");if(Y.any);else if(Y.choice===null)Q=this._decodeGeneric(Y.tag,Z,J);else Q=this._decodeChoice(Z,J);if(Z.isError(Q))return Q;if(!Y.any&&Y.choice===null&&Y.children!==null)Y.children.forEach(function(z){z._decode(Z,J)});if(Y.contains&&(Y.tag==="octstr"||Y.tag==="bitstr")){let A=new F9(Q);Q=this._getUse(Y.contains,Z._reporterState.obj)._decode(A,J)}}if(Y.obj&&X)Q=Z.leaveObject(U);if(Y.key!==null&&(Q!==null||X===!0))Z.leaveKey(G,Y.key,Q);else if(G!==null)Z.exitKey(G);return Q};e.prototype._decodeGeneric=function(Z,J,Y){let Q=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(J,Z,Q.args[0],Y);else if(/str$/.test(Z))return this._decodeStr(J,Z,Y);else if(Z==="objid"&&Q.args)return this._decodeObjid(J,Q.args[0],Q.args[1],Y);else if(Z==="objid")return this._decodeObjid(J,null,null,Y);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(J,Z,Y);else if(Z==="null_")return this._decodeNull(J,Y);else if(Z==="bool")return this._decodeBool(J,Y);else if(Z==="objDesc")return this._decodeStr(J,Z,Y);else if(Z==="int"||Z==="enum")return this._decodeInt(J,Q.args&&Q.args[0],Y);if(Q.use!==null)return this._getUse(Q.use,J._reporterState.obj)._decode(J,Y);else return J.error("unknown tag: "+Z)};e.prototype._getUse=function(Z,J){let Y=this._baseState;if(Y.useDecoder=this._use(Z,J),l0(Y.useDecoder._baseState.parent===null),Y.useDecoder=Y.useDecoder._baseState.children[0],Y.implicit!==Y.useDecoder._baseState.implicit)Y.useDecoder=Y.useDecoder.clone(),Y.useDecoder._baseState.implicit=Y.implicit;return Y.useDecoder};e.prototype._decodeChoice=function(Z,J){let Y=this._baseState,Q=null,X=!1;if(Object.keys(Y.choice).some(function(G){let U=Z.save(),V=Y.choice[G];try{let A=V._decode(Z,J);if(Z.isError(A))return!1;Q={type:G,value:A},X=!0}catch(A){return Z.restore(U),!1}return!0},this),!X)return Z.error("Choice not matched");return Q};e.prototype._createEncoderBuffer=function(Z){return new z9(Z,this.reporter)};e.prototype._encode=function(Z,J,Y){let Q=this._baseState;if(Q.default!==null&&Q.default===Z)return;let X=this._encodeValue(Z,J,Y);if(X===void 0)return;if(this._skipDefault(X,J,Y))return;return X};e.prototype._encodeValue=function(Z,J,Y){let Q=this._baseState;if(Q.parent===null)return Q.children[0]._encode(Z,J||new O9);let X=null;if(this.reporter=J,Q.optional&&Z===void 0)if(Q.default!==null)Z=Q.default;else return;let G=null,U=!1;if(Q.any)X=this._createEncoderBuffer(Z);else if(Q.choice)X=this._encodeChoice(Z,J);else if(Q.contains)G=this._getUse(Q.contains,Y)._encode(Z,J),U=!0;else if(Q.children)G=Q.children.map(function(V){if(V._baseState.tag==="null_")return V._encode(null,J,Z);if(V._baseState.key===null)return J.error("Child should have a key");let A=J.enterKey(V._baseState.key);if(typeof Z!=="object")return J.error("Child expected, but input is not object");let z=V._encode(Z[V._baseState.key],J,Z);return J.leaveKey(A),z},this).filter(function(V){return V}),G=this._createEncoderBuffer(G);else if(Q.tag==="seqof"||Q.tag==="setof"){if(!(Q.args&&Q.args.length===1))return J.error("Too many args for : "+Q.tag);if(!Array.isArray(Z))return J.error("seqof/setof, but data is not Array");let V=this.clone();V._baseState.implicit=null,G=this._createEncoderBuffer(Z.map(function(A){let z=this._baseState;return this._getUse(z.args[0],Z)._encode(A,J)},V))}else if(Q.use!==null)X=this._getUse(Q.use,Y)._encode(Z,J);else G=this._encodePrimitive(Q.tag,Z),U=!0;if(!Q.any&&Q.choice===null){let V=Q.implicit!==null?Q.implicit:Q.tag,A=Q.implicit===null?"universal":"context";if(V===null){if(Q.use===null)J.error("Tag could be omitted only for .use()")}else if(Q.use===null)X=this._encodeComposite(V,U,A,G)}if(Q.explicit!==null)X=this._encodeComposite(Q.explicit,!1,"context",X);return X};e.prototype._encodeChoice=function(Z,J){let Y=this._baseState,Q=Y.choice[Z.type];if(!Q)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(Y.choice)));return Q._encode(Z.value,J)};e.prototype._encodePrimitive=function(Z,J){let Y=this._baseState;if(/str$/.test(Z))return this._encodeStr(J,Z);else if(Z==="objid"&&Y.args)return this._encodeObjid(J,Y.reverseArgs[0],Y.args[1]);else if(Z==="objid")return this._encodeObjid(J,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(J,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(J,Y.args&&Y.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(J);else if(Z==="objDesc")return this._encodeStr(J,Z);else throw Error("Unsupported tag: "+Z)};e.prototype._isNumstr=function(Z){return/^[0-9 ]*$/.test(Z)};e.prototype._isPrintstr=function(Z){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(Z)}});var nZ=i((I9)=>{function uX($){let Z={};return Object.keys($).forEach(function(J){if((J|0)==J)J=J|0;let Y=$[J];Z[Y]=J}),Z}I9.tagClass={0:"universal",1:"application",2:"context",3:"private"};I9.tagClassByName=uX(I9.tagClass);I9.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"};I9.tagByName=uX(I9.tag)});var _Y=i((f7,oX)=>{var B9=T$(),z$=pZ().Buffer,nX=dZ(),VY=nZ();function sX($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Q$,this.tree._init($.body)}oX.exports=sX;sX.prototype.encode=function(Z,J){return this.tree._encode(Z,J).join()};function Q$($){nX.call(this,"der",$)}B9(Q$,nX);Q$.prototype._encodeComposite=function(Z,J,Y,Q){let X=P9(Z,J,Y,this.reporter);if(Q.length<128){let V=z$.alloc(2);return V[0]=X,V[1]=Q.length,this._createEncoderBuffer([V,Q])}let G=1;for(let V=Q.length;V>=256;V>>=8)G++;let U=z$.alloc(2+G);U[0]=X,U[1]=128|G;for(let V=1+G,A=Q.length;A>0;V--,A>>=8)U[V]=A&255;return this._createEncoderBuffer([U,Q])};Q$.prototype._encodeStr=function(Z,J){if(J==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(J==="bmpstr"){let Y=z$.alloc(Z.length*2);for(let Q=0;Q<Z.length;Q++)Y.writeUInt16BE(Z.charCodeAt(Q),Q*2);return this._createEncoderBuffer(Y)}else if(J==="numstr"){if(!this._isNumstr(Z))return this.reporter.error("Encoding of string type: numstr supports only digits and space");return this._createEncoderBuffer(Z)}else if(J==="printstr"){if(!this._isPrintstr(Z))return this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark");return this._createEncoderBuffer(Z)}else if(/str$/.test(J))return this._createEncoderBuffer(Z);else if(J==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+J+" unsupported")};Q$.prototype._encodeObjid=function(Z,J,Y){if(typeof Z==="string"){if(!J)return this.reporter.error("string objid given, but no values map found");if(!J.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=J[Z].split(/[\s.]+/g);for(let U=0;U<Z.length;U++)Z[U]|=0}else if(Array.isArray(Z)){Z=Z.slice();for(let U=0;U<Z.length;U++)Z[U]|=0}if(!Array.isArray(Z))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(Z));if(!Y){if(Z[1]>=40)return this.reporter.error("Second objid identifier OOB");Z.splice(0,2,Z[0]*40+Z[1])}let Q=0;for(let U=0;U<Z.length;U++){let V=Z[U];for(Q++;V>=128;V>>=7)Q++}let X=z$.alloc(Q),G=X.length-1;for(let U=Z.length-1;U>=0;U--){let V=Z[U];X[G--]=V&127;while((V>>=7)>0)X[G--]=128|V&127}return this._createEncoderBuffer(X)};function J$($){if($<10)return"0"+$;else return $}Q$.prototype._encodeTime=function(Z,J){let Y,Q=new Date(Z);if(J==="gentime")Y=[J$(Q.getUTCFullYear()),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else if(J==="utctime")Y=[J$(Q.getUTCFullYear()%100),J$(Q.getUTCMonth()+1),J$(Q.getUTCDate()),J$(Q.getUTCHours()),J$(Q.getUTCMinutes()),J$(Q.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+J+" time is not supported yet");return this._encodeStr(Y,"octstr")};Q$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Q$.prototype._encodeInt=function(Z,J){if(typeof Z==="string"){if(!J)return this.reporter.error("String int or enum given, but no values map");if(!J.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=J[Z]}if(typeof Z!=="number"&&!z$.isBuffer(Z)){let X=Z.toArray();if(!Z.sign&&X[0]&128)X.unshift(0);Z=z$.from(X)}if(z$.isBuffer(Z)){let X=Z.length;if(Z.length===0)X++;let G=z$.alloc(X);if(Z.copy(G),Z.length===0)G[0]=0;return this._createEncoderBuffer(G)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let Y=1;for(let X=Z;X>=256;X>>=8)Y++;let Q=Array(Y);for(let X=Q.length-1;X>=0;X--)Q[X]=Z&255,Z>>=8;if(Q[0]&128)Q.unshift(0);return this._createEncoderBuffer(z$.from(Q))};Q$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Q$.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getEncoder("der").tree};Q$.prototype._skipDefault=function(Z,J,Y){let Q=this._baseState,X;if(Q.default===null)return!1;let G=Z.join();if(Q.defaultBuffer===void 0)Q.defaultBuffer=this._encodeValue(Q.default,J,Y).join();if(G.length!==Q.defaultBuffer.length)return!1;for(X=0;X<G.length;X++)if(G[X]!==Q.defaultBuffer[X])return!1;return!0};function P9($,Z,J,Y){let Q;if($==="seqof")$="seq";else if($==="setof")$="set";if(VY.tagByName.hasOwnProperty($))Q=VY.tagByName[$];else if(typeof $==="number"&&($|0)===$)Q=$;else return Y.error("Unknown tag: "+$);if(Q>=31)return Y.error("Multi-octet tag encoding unsupported");if(!Z)Q|=32;return Q|=VY.tagClassByName[J||"universal"]<<6,Q}});var rX=i((y7,lX)=>{var C9=T$(),MY=_Y();function AY($){MY.call(this,$),this.enc="pem"}C9(AY,MY);lX.exports=AY;AY.prototype.encode=function(Z,J){let Q=MY.prototype.encode.call(this,Z).toString("base64"),X=["-----BEGIN "+J.label+"-----"];for(let G=0;G<Q.length;G+=64)X.push(Q.slice(G,G+64));return X.push("-----END "+J.label+"-----"),X.join(`
|
|
6
|
-
`)}});var OY=i((tX)=>{var iX=tX;iX.der=_Y();iX.pem=rX()});var FY=i((h7,YG)=>{var S9=T$(),w9=HY(),aX=ZZ().DecoderBuffer,$G=dZ(),eX=nZ();function ZG($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}YG.exports=ZG;ZG.prototype.decode=function(Z,J){if(!aX.isDecoderBuffer(Z))Z=new aX(Z,J);return this.tree._decode(Z,J)};function i0($){$G.call(this,"der",$)}S9(i0,$G);i0.prototype._peekTag=function(Z,J,Y){if(Z.isEmpty())return!1;let Q=Z.save(),X=zY(Z,'Failed to peek tag: "'+J+'"');if(Z.isError(X))return X;return Z.restore(Q),X.tag===J||X.tagStr===J||X.tagStr+"of"===J||Y};i0.prototype._decodeTag=function(Z,J,Y){let Q=zY(Z,'Failed to decode tag of "'+J+'"');if(Z.isError(Q))return Q;let X=JG(Z,Q.primitive,'Failed to get length of "'+J+'"');if(Z.isError(X))return X;if(!Y&&Q.tag!==J&&Q.tagStr!==J&&Q.tagStr+"of"!==J)return Z.error('Failed to match tag: "'+J+'"');if(Q.primitive||X!==null)return Z.skip(X,'Failed to match body of: "'+J+'"');let G=Z.save(),U=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(U))return U;return X=Z.offset-G.offset,Z.restore(G),Z.skip(X,'Failed to match body of: "'+J+'"')};i0.prototype._skipUntilEnd=function(Z,J){for(;;){let Y=zY(Z,J);if(Z.isError(Y))return Y;let Q=JG(Z,Y.primitive,J);if(Z.isError(Q))return Q;let X;if(Y.primitive||Q!==null)X=Z.skip(Q);else X=this._skipUntilEnd(Z,J);if(Z.isError(X))return X;if(Y.tagStr==="end")break}};i0.prototype._decodeList=function(Z,J,Y,Q){let X=[];while(!Z.isEmpty()){let G=this._peekTag(Z,"end");if(Z.isError(G))return G;let U=Y.decode(Z,"der",Q);if(Z.isError(U)&&G)break;X.push(U)}return X};i0.prototype._decodeStr=function(Z,J){if(J==="bitstr"){let Y=Z.readUInt8();if(Z.isError(Y))return Y;return{unused:Y,data:Z.raw()}}else if(J==="bmpstr"){let Y=Z.raw();if(Y.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let Q="";for(let X=0;X<Y.length/2;X++)Q+=String.fromCharCode(Y.readUInt16BE(X*2));return Q}else if(J==="numstr"){let Y=Z.raw().toString("ascii");if(!this._isNumstr(Y))return Z.error("Decoding of string type: numstr unsupported characters");return Y}else if(J==="octstr")return Z.raw();else if(J==="objDesc")return Z.raw();else if(J==="printstr"){let Y=Z.raw().toString("ascii");if(!this._isPrintstr(Y))return Z.error("Decoding of string type: printstr unsupported characters");return Y}else if(/str$/.test(J))return Z.raw().toString();else return Z.error("Decoding of string type: "+J+" unsupported")};i0.prototype._decodeObjid=function(Z,J,Y){let Q,X=[],G=0,U=0;while(!Z.isEmpty())if(U=Z.readUInt8(),G<<=7,G|=U&127,(U&128)===0)X.push(G),G=0;if(U&128)X.push(G);let V=X[0]/40|0,A=X[0]%40;if(Y)Q=X;else Q=[V,A].concat(X.slice(1));if(J){let z=J[Q.join(" ")];if(z===void 0)z=J[Q.join(".")];if(z!==void 0)Q=z}return Q};i0.prototype._decodeTime=function(Z,J){let Y=Z.raw().toString(),Q,X,G,U,V,A;if(J==="gentime")Q=Y.slice(0,4)|0,X=Y.slice(4,6)|0,G=Y.slice(6,8)|0,U=Y.slice(8,10)|0,V=Y.slice(10,12)|0,A=Y.slice(12,14)|0;else if(J==="utctime")if(Q=Y.slice(0,2)|0,X=Y.slice(2,4)|0,G=Y.slice(4,6)|0,U=Y.slice(6,8)|0,V=Y.slice(8,10)|0,A=Y.slice(10,12)|0,Q<70)Q=2000+Q;else Q=1900+Q;else return Z.error("Decoding "+J+" time is not supported yet");return Date.UTC(Q,X-1,G,U,V,A,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let J=Z.readUInt8();if(Z.isError(J))return J;else return J!==0};i0.prototype._decodeInt=function(Z,J){let Y=Z.raw(),Q=new w9(Y);if(J)Q=J[Q.toString(10)]||Q;return Q};i0.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getDecoder("der").tree};function zY($,Z){let J=$.readUInt8(Z);if($.isError(J))return J;let Y=eX.tagClass[J>>6],Q=(J&32)===0;if((J&31)===31){let G=J;J=0;while((G&128)===128){if(G=$.readUInt8(Z),$.isError(G))return G;J<<=7,J|=G&127}}else J&=31;let X=eX.tag[J];return{cls:Y,primitive:Q,tag:J,tagStr:X}}function JG($,Z,J){let Y=$.readUInt8(J);if($.isError(Y))return Y;if(!Z&&Y===128)return null;if((Y&128)===0)return Y;let Q=Y&127;if(Q>4)return $.error("length octect is too long");Y=0;for(let X=0;X<Q;X++){Y<<=8;let G=$.readUInt8(J);if($.isError(G))return G;Y|=G}return Y}});var XG=i((b7,QG)=>{var E9=T$(),T9=pZ().Buffer,KY=FY();function RY($){KY.call(this,$),this.enc="pem"}E9(RY,KY);QG.exports=RY;RY.prototype.decode=function(Z,J){let Y=Z.toString().split(/[\r\n]+/g),Q=J.label.toUpperCase(),X=/^-----(BEGIN|END) ([^-]+)-----$/,G=-1,U=-1;for(let z=0;z<Y.length;z++){let M=Y[z].match(X);if(M===null)continue;if(M[2]!==Q)continue;if(G===-1){if(M[1]!=="BEGIN")break;G=z}else{if(M[1]!=="END")break;U=z;break}}if(G===-1||U===-1)throw Error("PEM section not found for: "+Q);let V=Y.slice(G+1,U).join("");V.replace(/[^a-z0-9+/=]+/gi,"");let A=T9.from(V,"base64");return KY.prototype.decode.call(this,A,J)}});var qY=i((HG)=>{var GG=HG;GG.der=FY();GG.pem=XG()});var UG=i((WG)=>{var D9=OY(),N9=qY(),k9=T$(),v9=WG;v9.define=function(Z,J){return new JZ(Z,J)};function JZ($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}JZ.prototype._createNamed=function(Z){let J=this.name;function Y(Q){this._initNamed(Q,J)}return k9(Y,Z),Y.prototype._initNamed=function(X,G){Z.call(this,X,G)},new Y(this)};JZ.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(N9[Z]);return this.decoders[Z]};JZ.prototype.decode=function(Z,J,Y){return this._getDecoder(J).decode(Z,Y)};JZ.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(D9[Z]);return this.encoders[Z]};JZ.prototype.encode=function(Z,J,Y){return this._getEncoder(J).encode(Z,Y)}});var _G=i((VG)=>{var sZ=VG;sZ.Reporter=uZ().Reporter;sZ.DecoderBuffer=ZZ().DecoderBuffer;sZ.EncoderBuffer=ZZ().EncoderBuffer;sZ.Node=dZ()});var OG=i((AG)=>{var MG=AG;MG._reverse=function(Z){let J={};return Object.keys(Z).forEach(function(Y){if((Y|0)==Y)Y=Y|0;let Q=Z[Y];J[Q]=Y}),J};MG.der=nZ()});var FG=i((zG)=>{var YZ=zG;YZ.bignum=HY();YZ.define=UG().define;YZ.base=_G();YZ.constants=OG();YZ.decoders=qY();YZ.encoders=OY()});var qG=i((IY,RG)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var oZ=R$("buffer"),M$=oZ.Buffer;function KG($,Z){for(var J in $)Z[J]=$[J]}if(M$.from&&M$.alloc&&M$.allocUnsafe&&M$.allocUnsafeSlow)RG.exports=oZ;else KG(oZ,IY),IY.Buffer=f$;function f$($,Z,J){return M$($,Z,J)}f$.prototype=Object.create(M$.prototype);KG(M$,f$);f$.from=function($,Z,J){if(typeof $==="number")throw TypeError("Argument must not be a number");return M$($,Z,J)};f$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError("Argument must be a number");var Y=M$($);if(Z!==void 0)if(typeof J==="string")Y.fill(Z,J);else Y.fill(Z);else Y.fill(0);return Y};f$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return M$($)};f$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return oZ.SlowBuffer($)}});var jG=i((n7,IG)=>{function jY($){var Z=($/8|0)+($%8===0?0:1);return Z}var x9={ES256:jY(256),ES384:jY(384),ES512:jY(521)};function f9($){var Z=x9[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}IG.exports=f9});var EG=i((s7,wG)=>{var lZ=qG().Buffer,BG=jG(),rZ=128,PG=0,y9=32,g9=16,h9=2,CG=g9|y9|PG<<6,iZ=h9|PG<<6;function b9($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function SG($){if(lZ.isBuffer($))return $;else if(typeof $==="string")return lZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function c9($,Z){$=SG($);var J=BG(Z),Y=J+1,Q=$.length,X=0;if($[X++]!==CG)throw Error('Could not find expected "seq"');var G=$[X++];if(G===(rZ|1))G=$[X++];if(Q-X<G)throw Error('"seq" specified length of "'+G+'", only "'+(Q-X)+'" remaining');if($[X++]!==iZ)throw Error('Could not find expected "int" for "r"');var U=$[X++];if(Q-X-2<U)throw Error('"r" specified length of "'+U+'", only "'+(Q-X-2)+'" available');if(Y<U)throw Error('"r" specified length of "'+U+'", max of "'+Y+'" is acceptable');var V=X;if(X+=U,$[X++]!==iZ)throw Error('Could not find expected "int" for "s"');var A=$[X++];if(Q-X!==A)throw Error('"s" specified length of "'+A+'", expected "'+(Q-X)+'"');if(Y<A)throw Error('"s" specified length of "'+A+'", max of "'+Y+'" is acceptable');var z=X;if(X+=A,X!==Q)throw Error('Expected to consume entire buffer, but "'+(Q-X)+'" bytes remain');var M=J-U,j=J-A,C=lZ.allocUnsafe(M+U+j+A);for(X=0;X<M;++X)C[X]=0;$.copy(C,X,V+Math.max(-M,0),V+U),X=J;for(var S=X;X<S+j;++X)C[X]=0;return $.copy(C,X,z+Math.max(-j,0),z+A),C=C.toString("base64"),C=b9(C),C}function LG($,Z,J){var Y=0;while(Z+Y<J&&$[Z+Y]===0)++Y;var Q=$[Z+Y]>=rZ;if(Q)--Y;return Y}function p9($,Z){$=SG($);var J=BG(Z),Y=$.length;if(Y!==J*2)throw TypeError('"'+Z+'" signatures must be "'+J*2+'" bytes, saw "'+Y+'"');var Q=LG($,0,J),X=LG($,J,$.length),G=J-Q,U=J-X,V=2+G+1+1+U,A=V<rZ,z=lZ.allocUnsafe((A?2:3)+V),M=0;if(z[M++]=CG,A)z[M++]=V;else z[M++]=rZ|1,z[M++]=V&255;if(z[M++]=iZ,z[M++]=G,Q<0)z[M++]=0,M+=$.copy(z,M,0,J);else M+=$.copy(z,M,Q,J);if(z[M++]=iZ,z[M++]=U,X<0)z[M++]=0,$.copy(z,M,J);else $.copy(z,M,J+X);return z}wG.exports={derToJose:c9,joseToDer:p9}});var CY=i((o7,uG)=>{var PY=FG(),{createHmac:NG,createVerify:u9,createSign:m9,timingSafeEqual:d9,createPublicKey:n9,constants:{RSA_PKCS1_PSS_PADDING:kG,RSA_PSS_SALTLEN_DIGEST:vG,RSA_PKCS1_PADDING:xG,RSA_PSS_SALTLEN_MAX_SIGN:s9,RSA_PSS_SALTLEN_AUTO:o9},sign:TG,verify:DG}=R$("crypto"),{joseToDer:l9,derToJose:r9}=EG(),fG=XY(),{TokenError:X0}=r$(),yG=/[=+/]/g,i9={"=":"","+":"-","/":"_"},gG=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,hG=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,tZ=new fG(1000),LY=new fG(1000),bG=["HS256","HS384","HS512"],t9=["ES256","ES384","ES512"],BY=["RS256","RS384","RS512","PS256","PS384","PS512"],a9=["EdDSA"],cG={"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"]}},e9=PY.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),$8=PY.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),Z8=PY.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 pG($){return i9[$]}function AZ($,Z,J,Y){return $.set(Z,[J,Y]),J||Y}function J8($){if($.match(hG)||$.includes("-----BEGIN CERTIFICATE-----"))throw new X0(X0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(gG);if(!Z)return"HS256";let J,Y,Q;switch(Z[1]){case"RSA":return"RS256";case"EC":J=Z8.decode($,"pem",{label:"EC PRIVATE KEY"}),Q=J.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(J=e9.decode($,"pem",{label:"PRIVATE KEY"}),Y=J.algorithm.algorithm.join("."),Y){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${Y}.`)}}let X=cG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC private key with curve ${Q}.`);return`ES${X.bits}`}function Y8($){let Z=$.match(hG);if($.match(gG))throw new X0(X0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return BY;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return bG;if($.includes("-----BEGIN CERTIFICATE-----"))$=n9($).export({type:"spki",format:"pem"});let J=$8.decode($,"pem",{label:"PUBLIC KEY"}),Y=J.algorithm.algorithm.join("."),Q;switch(Y){case"1.2.840.113549.1.1.1":return BY;case"1.2.840.10045.2.1":Q=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${Y}.`)}let X=cG[Q];if(!X)throw new X0(X0.codes.invalidKey,`Unsupported EC public key with curve ${Q}.`);return[`ES${X.bits}`]}function Q8($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The private key must be a string or a buffer.");let[J,Y]=tZ.get($)||[];if(J)return J;else if(Y)throw Y;try{let Q=J8($);if(Q==="ENCRYPTED")return AZ(tZ,$,Z);return AZ(tZ,$,Q)}catch(Q){throw AZ(tZ,$,null,X0.wrap(Q,X0.codes.invalidKey,"Unsupported PEM private key."))}}function X8($){if(!$)return"none";let[Z,J]=LY.get($)||[];if(Z)return Z;else if(J)throw J;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The public key must be a string or a buffer.");return AZ(LY,$,Y8($))}catch(Y){throw AZ(LY,$,null,X0.wrap(Y,X0.codes.invalidKey,"Unsupported PEM public key."))}}function G8($,Z,J){try{let Y=$.slice(0,2),Q=`sha${$.slice(2)}`,X,G;switch(Y){case"HS":X=NG(Q,Z).update(J).digest("base64");break;case"ES":X=r9(TG(Q,Buffer.from(J,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(G={key:Z,padding:xG,saltLength:s9},Y==="PS")G.padding=kG,G.saltLength=vG;X=m9(Q).update(J).sign(G).toString("base64");break;case"Ed":X=TG(void 0,Buffer.from(J,"utf-8"),Z).toString("base64")}return X.replace(yG,pG)}catch(Y){throw new X0(X0.codes.signError,"Cannot create the signature.",{originalError:Y})}}function H8($,Z,J,Y){try{let Q=$.slice(0,2),X=`SHA${$.slice(2)}`;if(Y=Buffer.from(Y,"base64"),Q==="HS")try{return d9(NG(X,Z).update(J).digest(),Y)}catch{return!1}else if(Q==="Ed")if(typeof DG==="function")return DG(void 0,Buffer.from(J,"utf-8"),Z,Y);else throw new X0(X0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let G={key:Z,padding:xG,saltLength:o9};if(Q==="PS")G.padding=kG,G.saltLength=vG;else if(Q==="ES")Y=l9(Y,$);return u9("RSA-"+X).update(J).verify(G,Y)}catch(Q){throw new X0(X0.codes.verifyError,"Cannot verify the signature.",{originalError:Q})}}uG.exports={base64UrlMatcher:yG,base64UrlReplacer:pG,hsAlgorithms:bG,rsaAlgorithms:BY,esAlgorithms:t9,edAlgorithms:a9,detectPrivateKeyAlgorithm:Q8,detectPublicKeyAlgorithms:X8,createSignature:G8,verifySignature:H8}});var SY=i((l7,dG)=>{var{createHash:mG}=R$("crypto"),W8=/"alg"\s*:\s*"[HERP]S(256|384)"/m,U8=/"alg"\s*:\s*"EdDSA"/m,V8=/"crv"\s*:\s*"Ed448"/m;function _8($,Z,J){let Y=$(Z,J);if(Y&&typeof Y.then==="function")Y.then((Q)=>{process.nextTick(()=>J(null,Q))}).catch(J)}function M8($){if(typeof $==="function")return[$];let Z,J,Y=new Promise((Q,X)=>{Z=Q,J=X});return[function(Q,X){if(Q)return J(Q);return Z(X)},Y]}function A8($){let Z=$.split(".",1)[0],J=Buffer.from(Z,"base64").toString("utf-8"),Y=null;if(J.match(U8)&&J.match(V8))Y=mG("shake256",{outputLength:114});else{let Q=J.match(W8);Y=mG(`sha${Q?Q[1]:"512"}`)}return Y.update($).digest("hex")}dG.exports={getAsyncKey:_8,ensurePromiseCallback:M8,hashToken:A8}});var tG=i((r7,iG)=>{var{createPublicKey:O8,createSecretKey:z8}=R$("crypto"),F8=XY(),{hsAlgorithms:sG,verifySignature:K8,detectPublicKeyAlgorithms:oG}=CY(),R8=$Y(),{TokenError:s}=r$(),{getAsyncKey:q8,ensurePromiseCallback:I8,hashToken:j8}=SY();function L8($,Z){return $===Z}function lG($,Z){for(let J of $)if(Z.includes(J))return;throw new s(s.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function rG($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?z8($):O8($)}function OZ($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:L8.bind(null,Z)}})}function B8($){let Z=parseInt($===!0?1000:$,10);return Z>0?new F8(Z):null}function QZ({cache:$,token:Z,cacheTTL:J,payload:Y,ignoreExpiration:Q,ignoreNotBefore:X,maxAge:G,clockTimestamp:U=Date.now(),clockTolerance:V,errorCacheTTL:A,cacheKeyBuilder:z},M){if(!$)return M;let j=[M,0,0];if(M instanceof s){let w=typeof A==="function"?A(M):A;return j[2]=U+V+w,$.set(z(Z),j),M}if(Y&&typeof Y.iat==="number"){if(j[1]=!X&&typeof Y.nbf==="number"?Y.nbf*1000-V:0,!Q){if(typeof Y.exp==="number")j[2]=Y.exp*1000+V;else if(G)j[2]=Y.iat*1000+G+V}}let S=U+V+J;return j[2]=j[2]===0?S:Math.min(j[2],S),$.set(z(Z),j),M}function P8($,Z,J){if($ instanceof s){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return J}function C8($,Z,J,Y,Q){if(!Q.includes(Z.alg))throw new s(s.codes.invalidAlgorithm,"The token algorithm is invalid.");if(J&&!K8(Z.alg,Y,$,J))throw new s(s.codes.invalidSignature,"The token signature is invalid.")}function S8($,Z,J,Y,Q){let X=J?`The ${Z} claim must be a ${Q} or an array of ${Q}s.`:`The ${Z} claim must be a ${Q}.`;if(Y&&!J)throw new s(s.codes.invalidClaimValue,X);if($.map((G)=>typeof G).some((G)=>G!==Q))throw new s(s.codes.invalidClaimType,X)}function w8($,Z,J,Y){let Q=Y?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((X)=>J.some((G)=>G.test(X))))throw new s(s.codes.invalidClaimValue,Q)}function E8($,Z,J,Y,Q,X){let G=$*1000+(Z||0);if(!(Y?J>=G:J<=G))throw new s(s.codes[Q],`The token ${X} at ${new Date(G).toISOString()}.`)}function nG($,{input:Z,header:J,payload:Y,signature:Q},{validators:X,allowedAlgorithms:G,checkTyp:U,clockTimestamp:V,requiredClaims:A}){let z=$ instanceof Buffer?$.length:!!$;if(z&&!Q)throw new s(s.codes.missingSignature,"The token signature is missing.");else if(!z&&Q)throw new s(s.codes.missingKey,"The key option is missing.");if(C8(Z,J,Q,$,G),U&&(typeof J.typ!=="string"||U!==J.typ.toLowerCase().replace(/^application\//,"")))throw new s(s.codes.invalidType,"Invalid typ.");if(A){for(let j of A)if(!(j in Y))throw new s(s.codes.missingRequiredClaim,`The ${j} claim is required.`)}let M=V||Date.now();for(let{type:j,claim:C,allowed:S,array:w,modifier:k,greater:N,errorCode:E,errorVerb:v}of X){let b=Y[C],f=Array.isArray(b),d=f?b:[b];if(!(C in Y))continue;if(S8(d,C,w,f,j==="date"?"number":"string"),j==="date")E8(b,k,M,N,E,v);else w8(d,C,S,f)}}function T8({key:$,allowedAlgorithms:Z,complete:J,cacheTTL:Y,checkTyp:Q,clockTimestamp:X,clockTolerance:G,ignoreExpiration:U,ignoreNotBefore:V,maxAge:A,isAsync:z,validators:M,decode:j,cache:C,requiredClaims:S,errorCacheTTL:w,cacheKeyBuilder:k},N,E){let[v,b]=z?I8(E):[];if(C){let[_,O,F]=C.get(k(N))||[void 0,0,0],q=X||Date.now();if(typeof _<"u"&&(O===0||q<O&&_.code==="FAST_JWT_INACTIVE"||q>=O&&_.code!=="FAST_JWT_INACTIVE")&&(F===0||q<=F))return P8(_,v,b)}let f;try{f=j(N)}catch(_){if(v)return v(_),b;throw _}let{header:d,payload:a,signature:r,input:Z0}=f,L={cache:C,token:N,cacheTTL:Y,errorCacheTTL:w,ignoreExpiration:U,ignoreNotBefore:V,maxAge:A,clockTimestamp:X,clockTolerance:G,payload:a,cacheKeyBuilder:k},H={validators:M,allowedAlgorithms:Z,checkTyp:Q,clockTimestamp:X,clockTolerance:G,requiredClaims:S};if(!v)try{return nG($,f,H),QZ(L,J?{header:d,payload:a,signature:r,input:Z0}:a)}catch(_){throw QZ(L,_)}return q8($,{header:d,payload:a,signature:r},(_,O)=>{if(_)return v(QZ(L,s.wrap(_,s.codes.keyFetchingError,"Cannot fetch key.")));if(typeof O==="string")O=Buffer.from(O,"utf-8");else if(!(O instanceof Buffer))return v(QZ(L,new s(s.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a public key.")));try{let F=oG(O);if(H.allowedAlgorithms.length)lG(Z,F);else H.allowedAlgorithms=F;O=rG(O,F[0]===sG[0]),nG(O,f,H)}catch(F){return v(QZ(L,F))}v(null,QZ(L,J?{header:d,payload:a,signature:r,input:N}:a))}),b}iG.exports=function(Z){let{key:J,algorithms:Y,complete:Q,cache:X,cacheTTL:G,errorCacheTTL:U,checkTyp:V,clockTimestamp:A,clockTolerance:z,ignoreExpiration:M,ignoreNotBefore:j,maxAge:C,allowedJti:S,allowedAud:w,allowedIss:k,allowedSub:N,allowedNonce:E,requiredClaims:v,cacheKeyBuilder:b}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:j8,...Z};if(!Array.isArray(Y))Y=[];let f=typeof J;if(f!=="string"&&f!=="object"&&f!=="function")throw new s(s.codes.INVALID_OPTION,"The key option must be a string, a buffer or a function returning the algorithm secret or public key.");if(J&&f!=="function"){let L=oG(J);if(Y.length)lG(Y,L);else Y=L;J=rG(J,L[0]===sG[0])}if(A&&(typeof A!=="number"||A<0))throw new s(s.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(z&&(typeof z!=="number"||z<0))throw new s(s.codes.invalidOption,"The clockTolerance option must be a positive number.");if(G&&(typeof G!=="number"||G<0))throw new s(s.codes.invalidOption,"The cacheTTL option must be a positive number.");if(U&&typeof U!=="function"&&typeof U!=="number"||U<-1)throw new s(s.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(v&&!Array.isArray(v))throw new s(s.codes.invalidOption,"The requiredClaims option must be an array.");let d=[];if(!j)d.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-z});if(!M)d.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+z});if(typeof C==="number")d.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:C});if(S)d.push({type:"string",claim:"jti",allowed:OZ(S)});if(w)d.push({type:"string",claim:"aud",allowed:OZ(w),array:!0});if(k)d.push({type:"string",claim:"iss",allowed:OZ(k)});if(N)d.push({type:"string",claim:"sub",allowed:OZ(N)});if(E)d.push({type:"string",claim:"nonce",allowed:OZ(E)});let a=V?V.toLowerCase().replace(/^application\//,""):null,r={key:J,allowedAlgorithms:Y,complete:Q,cacheTTL:G,errorCacheTTL:U,checkTyp:a,clockTimestamp:A,clockTolerance:z,ignoreExpiration:M,ignoreNotBefore:j,maxAge:C,isAsync:f==="function",validators:d,decode:R8({complete:!0}),cache:B8(X),requiredClaims:v,cacheKeyBuilder:b},Z0=T8.bind(null,r);return Z0.cache=r.cache,Z0}});var aG=i((v8)=>{var D8=/^(-?(?:\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?)?)?$/,aZ=1000,eZ=aZ*60,$J=eZ*60,FZ=$J*24,wY=FZ*365.25;function N8($){var Z,J=$.toLowerCase().match(D8);if(J!=null&&(Z=parseFloat(J[1]))){if(J[3]!=null)return Z*aZ;if(J[4]!=null)return Z*eZ;if(J[5]!=null)return Z*$J;if(J[6]!=null)return Z*FZ;if(J[7]!=null)return Z*FZ*7;if(J[8]!=null)return Z*wY;return Z}}function zZ($,Z,J,Y){var Q=($|0)===$?$:~~($+0.5);return Z+Q+(Y?" "+J+(Q!=1?"s":""):J[0])}function k8($,Z){var J=$<0?"-":"",Y=$<0?-$:$;if(Y<aZ)return $+(Z?" ms":"ms");if(Y<eZ)return zZ(Y/aZ,J,"second",Z);if(Y<$J)return zZ(Y/eZ,J,"minute",Z);if(Y<FZ)return zZ(Y/$J,J,"hour",Z);if(Y<wY)return zZ(Y/FZ,J,"day",Z);return zZ(Y/wY,J,"year",Z)}v8.format=k8;v8.parse=N8});var GH=i((t7,XH)=>{var{base64UrlMatcher:EY,base64UrlReplacer:TY,hsAlgorithms:y8,esAlgorithms:g8,rsaAlgorithms:h8,edAlgorithms:b8,detectPrivateKeyAlgorithm:ZH,createSignature:eG}=CY(),{TokenError:l}=r$(),{getAsyncKey:c8,ensurePromiseCallback:p8}=SY(),{createPrivateKey:u8,createSecretKey:m8}=R$("crypto"),{parse:$H}=aG(),JH=new Set([...y8,...g8,...h8,...b8,"none"]),d8=Array.from(JH).join(", ");function YH($,Z){let J=$.slice(0,2),Y=Z.slice(0,2),Q=!0;if(J==="RS"||J==="PS")Q=Y==="RS"||J==="RS"&&Z==="ENCRYPTED";else if(J==="ES"||J==="Ed")Q=J===Y||J==="ES"&&Z==="ENCRYPTED";if(!Q)throw new l(l.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function QH($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?m8($):u8($)}function n8({key:$,algorithm:Z,noTimestamp:J,mutatePayload:Y,clockTimestamp:Q,expiresIn:X,notBefore:G,kid:U,typ:V,isAsync:A,additionalHeader:z,fixedPayload:M},j,C){let[S,w]=A?p8(C):[];if(typeof j!=="object")throw new l(l.codes.invalidType,"The payload must be an object.");if(j.exp&&(!Number.isInteger(j.exp)||j.exp<0))throw new l(l.codes.invalidClaimValue,"The exp claim must be a positive integer.");let k={alg:Z,typ:V||"JWT",kid:U,...z},N="",E=j.iat*1000||Q||Date.now(),v={...j,...M,iat:J?void 0:Math.floor(E/1000),exp:j.exp?j.exp:X?Math.floor((E+X)/1000):void 0,nbf:j.nbf?j.nbf:G?Math.floor((E+G)/1000):void 0};if(Y)Object.assign(j,v);if(N=Buffer.from(JSON.stringify(v),"utf-8").toString("base64").replace(EY,TY),!S){let f=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(EY,TY)+"."+N,d=Z==="none"?"":eG(Z,$,f);return f+"."+d}return c8($,{header:k,payload:j},(b,f)=>{if(b){let a=l.wrap(b,l.codes.keyFetchingError,"Cannot fetch key.");return S(a)}if(typeof f==="string")f=Buffer.from(f,"utf-8");else if(!(f instanceof Buffer))return S(new l(l.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a private key."));let d;try{let a=ZH(f,Z);if(Z)YH(Z,a);else k.alg=Z=a;f=QH(f,Z);let Z0=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(EY,TY)+"."+N;d=Z0+"."+eG(Z,f,Z0)}catch(a){return S(a)}S(null,d)}),w}XH.exports=function(Z){let{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,jti:A,aud:z,iss:M,sub:j,nonce:C,kid:S,typ:w,header:k}={clockTimestamp:0,...Z};if(Y&&!JH.has(Y))throw new l(l.codes.invalidOption,`The algorithm option must be one of the following values: ${d8}.`);let N=typeof J,E=N==="object"&&J&&J.key&&J.passphrase;if(Y==="none"){if(J)throw new l(l.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!J||N!=="string"&&!(J instanceof Buffer)&&N!=="function"&&!E)throw new l(l.codes.invalidOption,"The key option must be a string, a buffer, an object containing key/passphrase properties or a function returning the algorithm secret or private key.");else if(E&&!Y)throw new l(l.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(J&&N!=="function"){let f=ZH(E?J.key:J,Y);if(Y)YH(Y,f);else Y=f;J=QH(J,Y)}if(U){if(typeof U==="string")U=$H(U);if(typeof U!=="number")throw new l(l.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(V){if(typeof V==="string")V=$H(V);if(typeof V!=="number"||V<0)throw new l(l.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(G&&(typeof G!=="number"||G<0))throw new l(l.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(A&&typeof A!=="string")throw new l(l.codes.invalidOption,"The jti option must be a string.");if(z&&typeof z!=="string"&&!Array.isArray(z))throw new l(l.codes.invalidOption,"The aud option must be a string or an array of strings.");if(M&&typeof M!=="string")throw new l(l.codes.invalidOption,"The iss option must be a string.");if(j&&typeof j!=="string")throw new l(l.codes.invalidOption,"The sub option must be a string.");if(C&&typeof C!=="string")throw new l(l.codes.invalidOption,"The nonce option must be a string.");if(S&&typeof S!=="string")throw new l(l.codes.invalidOption,"The kid option must be a string.");if(k&&typeof k!=="object")throw new l(l.codes.invalidOption,"The header option must be a object.");let b=Object.entries({jti:A,aud:z,iss:M,sub:j,nonce:C}).reduce((f,[d,a])=>{if(a!==void 0)f[d]=a;return f},{});return n8.bind(null,{key:J,algorithm:Y,noTimestamp:Q,mutatePayload:X,clockTimestamp:G,expiresIn:U,notBefore:V,kid:S,typ:w,isAsync:N==="function",additionalHeader:k,fixedPayload:b})}});var WH=i((a7,HH)=>{var{TokenError:s8,TOKEN_ERROR_CODES:o8}=r$(),l8=$Y(),r8=tG(),i8=GH();HH.exports={TokenError:s8,TOKEN_ERROR_CODES:o8,createDecoder:l8,createVerifier:r8,createSigner:i8}});import{join as xJ}from"path";class T extends Error{kind;code;meta;noLog;logged;multiline;cause;constructor($){super($.message);this.name="CoreError",this.kind=$.kind,this.code=typeof $.code==="string"&&$.code.length>0?$.code:null,this.meta=$.meta?$.meta:null,this.noLog=$.noLog===!0,this.logged=$.logged===!0,this.multiline=$.multiline===!0,this.cause=$.cause}}function q$($){if(typeof $!=="object"||$===null)return!1;let Z=$;if(Z.name!=="CoreError")return!1;if(typeof Z.kind!=="string")return!1;return!0}SZ();u0();function W$($){if(Array.isArray($)){let Z=[];for(let J of $)Z.push(W$(J));return Z}if(m($)){let Z={},J=$;for(let Y of Object.keys(J))Z[Y]=W$(J[Y]);return Z}return $}function MQ($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let J=[];for(let Y of $)J.push(W$(Y));for(let Y of Z)J.push(W$(Y));return J}if(m($)&&m(Z)){let J=$,Y=Z,Q={};for(let X of Object.keys(J))Q[X]=W$(J[X]);for(let X of Object.keys(Y)){let G=Y[X];if(G===void 0)continue;let U=Q[X];if(Array.isArray(U)&&Array.isArray(G)){let V=[];for(let A of U)V.push(W$(A));for(let A of G)V.push(W$(A));Q[X]=V;continue}if(m(U)&&m(G)){Q[X]=MQ(W$(U),G);continue}Q[X]=W$(G)}return Q}return W$(Z)}function AQ(...$){let Z={};for(let J of $){if(J===void 0)continue;Z=MQ(Z,J)}return Z}var eH={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 OQ($){if($!=="development"&&$!=="production")throw new T({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=xJ(process.cwd(),"configs"),J=await B$(xJ(Z,"befly.common.json"),{}),Y=await B$(xJ(Z,`befly.${$}.json`),{}),Q=AQ(eH,J,Y);Q.nodeEnv=$;let X=Q.redis?.prefix;if(typeof X==="string"){if(X.trim().includes(":"))throw new T({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=${X}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}})}let G=Q.db?.idMode;if(G!==void 0&&G!=="timeId"&&G!=="autoId")throw new T({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(G)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let U=Q.strict;if(U!==void 0&&typeof U!=="boolean")throw new T({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(U)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});return Q}$0();u0();async function zQ($){let Z=!1,J=new Set;for(let Y of $)try{if(!m(Y)){I.warn({item:Y,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let Q=Y,X=Q.name;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 name \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32"})),Z=!0;continue}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let U=Q.path;if(typeof U!=="string"||U.trim()==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{let S=U.trim();if(J.has(S))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else J.add(S);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(S))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09"})),Z=!0;if(!S.startsWith("/api/"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(S.includes(" "))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(S.includes("/api//"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let V=Q.routePrefix,A=typeof V==="string"?V.trim():"";if(A==="")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5C5E\u6027\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;else{if(!(A==="/app"||A.startsWith("/addon/")))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 routePrefix \u5FC5\u987B\u662F /app \u6216 /addon/<name>\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;if(typeof U==="string"&&U.trim()!==""){let S=U.trim(),w=`/api${A}/`;if(!S.startsWith(w))I.warn(Object.assign({},u(Q,["handler"]),{expectedPrefix:w,msg:"\u63A5\u53E3\u7684 path \u4E0E routePrefix \u4E0D\u4E00\u81F4\uFF1A\u5E94\u4EE5 /api${routePrefix}/ \u5F00\u5934\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0}}let z=Q.method;if(z!==void 0&&!["GET","POST","GET,POST"].includes(String(z).toUpperCase()))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 method \u5C5E\u6027\u5FC5\u987B\u662F\u6709\u6548\u7684 HTTP \u65B9\u6CD5 (GET, POST, GET,POST)"})),Z=!0;let M=Q.auth;if(M!==void 0&&typeof M!=="boolean")I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let j=Q.fields;if(j!==void 0&&j!==null&&!m(j))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let C=Q.required;if(C!==void 0&&!Array.isArray(C))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(C)){if(C.some((S)=>typeof S!=="string"))I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(Q){I.error({err:Q,item:Y,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u63A5\u53E3\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkApi"}})}function p$($){return typeof $==="string"&&$.trim().length>0}function fJ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function $1($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function Z1($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function J1($){if(!p$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function Y1($){if(!$)throw new T({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!p$($.host))throw new T({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(!fJ($.port))throw new T({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(!p$($.username))throw new T({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 T({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(!p$($.database))throw new T({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 T({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 Q1($){if(!$)throw new T({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 T({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&&!fJ($.port))throw new T({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&&!$1($.db))throw new T({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 T({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 T({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 FQ($){if(!$||typeof $!=="object")throw new T({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 T({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(!p$($.appName))throw new T({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(!fJ($.appPort))throw new T({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(!p$($.appHost))throw new T({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 T({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 T({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 T({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(!Z1($.bodyLimit))throw new T({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(!J1($.tz))throw new T({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 T({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"}});Y1($.db),Q1($.redis)}$0();u0();var KQ=["name","enable","deps","handler"];async function RQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!m(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!KQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${KQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),A=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u94A9\u5B50\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 auth / rate_limit\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let M=Q.filePath;if(typeof M!=="string"||!M.startsWith(`core:hook:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:hook:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(A){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((M)=>typeof M!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}$0();bJ();function O1($){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 wQ=async($)=>{let Z=!1,J=await SQ($),Y=[];for(let X of J)Y.push({menu:X,depth:1});let Q=new Set;while(Y.length>0){let X=Y.pop(),G=X?.menu,U=typeof X?.depth==="number"?X.depth:0;if(G===null||typeof G!=="object"){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(U>3){Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let V=G.children;if(typeof V<"u"&&!Array.isArray(V)){Z=!0,I.warn({path:G?.path,childrenType:typeof V,msg:"\u83DC\u5355 children \u5FC5\u987B\u662F\u6570\u7EC4"});continue}if(Array.isArray(V)&&V.length>0)if(U>=3)Z=!0,I.warn({path:G?.path,depth:U,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let C of V)Y.push({menu:C,depth:U+1});let A=typeof G.path==="string"?G.path.trim():"",z=typeof G.name==="string"?G.name.trim():"",M=typeof G.sort==="number"?G.sort:999999;if(typeof G.path==="string")G.path=A;if(typeof G.name==="string")G.name=z;if(typeof G.sort>"u")G.sort=M;if(!A){Z=!0,I.warn({menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let j=O1(A);if(!j.ok)Z=!0,I.warn({path:A,reason:j.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!z)Z=!0,I.warn({path:A,menu:G,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof G.sort<"u"&&typeof G.sort!=="number")Z=!0,I.warn({path:A,sort:G.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof G.sort==="number"&&(!Number.isFinite(G.sort)||G.sort<1))Z=!0,I.warn({path:A,sort:G.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(Q.has(A)){Z=!0,I.warn({path:A,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}Q.add(A)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return J};$0();u0();var EQ=["name","enable","deps","handler"];async function TQ($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Y of $)try{if(!m(Y)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let Q=Y,X=Q.moduleName;if(typeof X!=="string"||X.trim()===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u7528\u4E8E deps \u4E0E\u8FD0\u884C\u65F6\u6302\u8F7D\uFF09"})),Z=!0;continue}let G=Q.customKeys;if(!Array.isArray(G)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u626B\u63CF\u7ED3\u679C\u7F3A\u5C11 customKeys\uFF08\u65E0\u6CD5\u5224\u65AD\u7528\u6237\u5BFC\u51FA\u7684\u5B57\u6BB5\u662F\u5426\u5408\u6CD5\uFF09"})),Z=!0;continue}if(G.some((z)=>typeof z!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let U=G.filter((z)=>!EQ.includes(z));if(U.length>0){I.warn(Object.assign({},u(Y,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${U.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${EQ.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${G.join(", ")}`})),Z=!0;continue}let V=G.includes("enable"),A=G.includes("deps");if(V){if(typeof Q.enable!=="boolean"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 enable \u5C5E\u6027\u5FC5\u987B\u662F boolean\uFF08true/false\uFF09\uFF0C\u4E0D\u5141\u8BB8 0/1 \u7B49\u5176\u4ED6\u7C7B\u578B"})),Z=!0;continue}}else Q.enable=!0;if(Q.source==="core"){let z=typeof Q.name==="string"?Q.name:"";if(z===""){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u63D2\u4EF6\u540D\u79F0"})),Z=!0;continue}if(!J.test(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 logger / redis_cache\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(Q.moduleName))){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 moduleName \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF0C\u4E14\u5FC5\u987B\u4E0E name \u4E00\u81F4\uFF09"})),Z=!0;continue}if(z!==String(Q.moduleName)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let M=Q.filePath;if(typeof M!=="string"||!M.startsWith(`core:plugin:${z}`)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u6765\u81EA\u9759\u6001\u6CE8\u518C\uFF08filePath \u5FC5\u987B\u4EE5 core:plugin:<name> \u5F00\u5934\uFF09\uFF0C\u4E0D\u5141\u8BB8\u901A\u8FC7\u626B\u63CF\u76EE\u5F55\u52A0\u8F7D"})),Z=!0;continue}}if(A){let z=Q.deps;if(!Array.isArray(z)){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(z.some((M)=>typeof M!=="string")){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let z=Q.deps;if(!Array.isArray(z))Q.deps=[]}if(typeof Q.handler!=="function"){I.warn(Object.assign({},u(Y,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(Q){I.error({err:Q,item:Y,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}$0();u0();var xQ=["id","created_at","updated_at","deleted_at","state"],DQ=new Set(xQ),fQ=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","tinytext","text","mediumtext","longtext","datetime","json"],z1=new Set(fQ),yQ=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],F1=new Set(yQ);function K1($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function R1($,Z){let J=String($||"").trim(),Y=String(Z||"").trim();return{type:J,input:Y||K1(J)}}var gQ=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],q1=new Set(gQ),I1=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,j1=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,NQ=16383,kQ=500,vQ=180;async function hQ($,Z){let J=!1;for(let Y of $){if(Y.type!=="table")continue;let Q=typeof Y.sourceName==="string"?Y.sourceName:"",X=Q?`${Q}\u8868 `:"\u8868 ";try{let G=Y.fileName;if(Y.source==="addon"&&String(Y.addonName).trim()===""){I.warn(`${X}${G} addon \u8868\u7F3A\u5C11 addonName`),J=!0;continue}let U=Y.content;if(typeof U!=="object"||U===null||Array.isArray(U)){I.warn(`${X}${G} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}if(!I1.test(G)){I.warn(`${X}${G} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),J=!0;continue}for(let[V,A]of Object.entries(U)){if(typeof A!=="object"||A===null||Array.isArray(A)){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}let z=c(V);if(DQ.has(V)||DQ.has(z))I.warn(`${X}${G} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${V}\uFF08\u6620\u5C04\u5217\u540D: ${z}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${xQ.join(", ")}`),J=!0;let M=A,C=Object.keys(M).filter((Z0)=>!q1.has(Z0));if(C.length>0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${C.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${gQ.join(", ")}`),J=!0;if(!M.name||typeof M.name!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(!M.type||typeof M.type!=="string"){I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(M.input!==void 0&&typeof M.input!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(M.min!==void 0&&!(M.min===null||typeof M.min==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(M.max!==void 0&&!(M.max===null||typeof M.max==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(M.detail!==void 0&&typeof M.detail!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(M.precision!==void 0&&!(M.precision===null||typeof M.precision==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(M.scale!==void 0&&!(M.scale===null||typeof M.scale==="number"))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(M.index!==void 0&&typeof M.index!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(M.unique!==void 0&&typeof M.unique!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(M.nullable!==void 0&&typeof M.nullable!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(M.unsigned!==void 0&&typeof M.unsigned!=="boolean")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;let S=R1(M.type,M.input||""),w=S.type,k=S.input;if(M.default!==void 0&&M.default!==null&&!KZ(M.default))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 default \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u53EF JSON \u5E8F\u5217\u5316\u7684\u503C\u6216 null`+`\uFF08typeof=${typeof M.default}\uFF0Cvalue=${D$(M.default)}\uFF09`),J=!0;if(Z.strict){if(!j1.test(M.name))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u540D\u79F0 "${M.name}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+"\u5FC5\u987B\u4E3A\u4E2D\u6587\u3001\u6570\u5B57\u3001\u5B57\u6BCD\u3001\u4E0B\u5212\u7EBF\u3001\u77ED\u6A2A\u7EBF\u3001\u7A7A\u683C"),J=!0}if(!z1.has(w))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B "${w}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${fQ.join("\u3001")}\u4E4B\u4E00`),J=!0;let N=k.trim();if(N==="")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),J=!0;else if(!F1.has(N)&&!g$(N)&&!h$(N)&&!BJ(N))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input "${N}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${yQ.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),J=!0;let E=["char","varchar","tinytext","text","mediumtext","longtext"].includes(w),v=["tinytext","text","mediumtext","longtext"].includes(w),b=["tinyint","smallint","mediumint","int","bigint"].includes(w),f=w==="decimal",d=w==="float"||w==="double",a=w==="json",r=b||f||d;if(g$(N)||h$(N)||BJ(N)){if(!E)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input \u4F7F\u7528\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D\uFF0C\u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="number"||N==="integer"){if(N==="integer"&&!b)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),J=!0;if(N==="number"&&!r)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),J=!0}if(N==="array"||N==="array_number"||N==="array_integer"){if(!E)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="json"||N==="json_number"||N==="json_integer"){if(!(a||v))I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),J=!0}if(!r&&M.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${w}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),J=!0;if(M.unique===!0&&M.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u540C\u65F6\u8BBE\u7F6E\u4E86 unique=true \u548C index=true\uFF0C`+"unique \u548C index \u4E0D\u80FD\u540C\u65F6\u8BBE\u7F6E\uFF0C\u8BF7\u5220\u9664\u5176\u4E00\uFF08\u5426\u5219\u4F1A\u521B\u5EFA\u91CD\u590D\u7D22\u5F15\uFF09"),J=!0;if(M.min!==void 0&&M.max!==void 0&&M.min!==null&&M.max!==null){if(M.min>M.max)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5C0F\u503C "${M.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${M.max}"`),J=!0}if(v||a){if(M.min!==void 0&&M.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${M.min}"`),J=!0;if(M.max!==void 0&&M.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u7684 ${w} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${M.max}"`),J=!0;if(M.default!==void 0&&M.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${M.default}"`),J=!0;if(M.index===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),J=!0;if(M.unique===!0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),J=!0}else if(w==="datetime"){if(M.min!==void 0&&M.min!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${M.min}"`),J=!0;if(M.max!==void 0&&M.max!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${M.max}"`),J=!0;if(M.default!==void 0&&M.default!==null)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF08\u5982\u9700\u5F53\u524D\u65F6\u95F4\uFF0C\u8BF7\u5728\u4E1A\u52A1\u5199\u5165\u65F6\u8D4B\u503C\uFF09\u3002\u5F53\u524D\u4E3A ${D$(M.default)}`),J=!0;if(M.unsigned!==void 0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A datetime \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),J=!0}else if(f){let{precision:Z0,scale:L}=M;if(typeof Z0!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),J=!0;else if(Z0<1||Z0>65)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${Z0}`),J=!0;if(typeof L!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),J=!0;else if(L<0||L>30)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${L}`),J=!0;if(typeof Z0==="number"&&typeof L==="number"&&L>Z0)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${Z0}, scale=${L}\uFF09`),J=!0;if(M.default!==void 0&&M.default!==null&&typeof M.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof M.default}\uFF0Cvalue=${D$(M.default)}\uFF09`),J=!0}else if(w==="char"||w==="varchar"){if(M.max===void 0||M.max===null||typeof M.max!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${M.max}"`),J=!0;else if(M.max>NQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u6700\u5927\u957F\u5EA6 ${M.max} \u8D8A\u754C\uFF0C`+`${w} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${NQ} \u8303\u56F4\u5185`),J=!0;else{if(M.index===!0&&M.max>kQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${M.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${kQ}\uFF09`),J=!0;if(M.unique===!0&&M.max>vQ)I.warn(`${X}${G} \u6587\u4EF6 ${V} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${M.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${vQ}\uFF09`),J=!0}if(N==="char"&&typeof M.max==="number"&&M.max>1)I.warn(`${X}${G} \u6587\u4EF6 ${V} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${M.max}`),J=!0;if(M.default!==void 0&&M.default!==null&&typeof M.default!=="string")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof M.default}\uFF0Cvalue=${D$(M.default)}\uFF09`),J=!0}else if(b){if(M.default!==void 0&&M.default!==null&&typeof M.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof M.default}\uFF0Cvalue=${D$(M.default)}\uFF09`),J=!0}else if(d){if(M.default!==void 0&&M.default!==null&&typeof M.default!=="number")I.warn(`${X}${G} \u6587\u4EF6 ${V} \u4E3A ${w} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof M.default}\uFF0Cvalue=${D$(M.default)}\uFF09`),J=!0}}}catch(G){I.error({msg:`${X}${Y.fileName} \u89E3\u6790\u5931\u8D25`,err:G}),J=!0}}if(J)throw new T({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:L1,RedisClient:B1}=globalThis.Bun;$0();class O${static sqlClient=null;static redisClient=null;static sqlConnectedAt=null;static redisConnectedAt=null;static sqlPoolMax=1;static mysqlVersionText=null;static mysqlVersionMajor=null;static async connectSql($){let Z=$||{},J=typeof Z.host==="string"?Z.host.trim():"",Y=typeof Z.port==="number"?Z.port:NaN,Q=typeof Z.username==="string"?Z.username.trim():"",X=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",G=typeof Z.database==="string"?Z.database.trim():"";if(!J)throw new T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(Y)||Y<1||Y>65535)throw new T({message:`\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.port \u975E\u6CD5\uFF08\u5F53\u524D\u503C\uFF1A${String(Z.port)}\uFF09`,kind:"validation"});if(!Q)throw new T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!G)throw new T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let U=encodeURIComponent(Q),V=encodeURIComponent(X),A=encodeURIComponent(G),z=`mysql://${U}:${V}@${J}:${Y}/${A}`,M=new L1({url:z,max:Z.poolMax??1,bigint:!1});try{let C=(async()=>{let w=await M`SELECT VERSION() AS version`,k=typeof w?.[0]?.version==="string"?w?.[0]?.version:String(w?.[0]?.version||""),N=k.split(".")[0],E=Number(N);if(!Number.isFinite(E))throw new T({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${k}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(E<8)throw new T({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${k}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=k,this.mysqlVersionMajor=E,k})(),S=new Promise((w,k)=>{setTimeout(()=>{k(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([C,S]),this.sqlClient=M,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,M}catch(j){I.error({err:j,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await M?.close()}catch{}if(q$(j))throw j.logged=!0,j;let C=`SQL \u8FDE\u63A5\u5931\u8D25: ${j&&typeof j.message==="string"?j.message:String(j)}`;throw new T({message:C,kind:"runtime",logged:!0,cause:j,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED SQL \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.sqlClient=null,this.sqlConnectedAt=null}}static getSql(){if(!this.sqlClient)throw Error("SQL \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectSql()");return this.sqlClient}static async connectRedis($){let Z=$||{};try{let J=Z.host||"127.0.0.1",Y=Z.port||6379,Q=Z.username||"",X=Z.password||"",G=Z.db||0,U="",V=Q?encodeURIComponent(Q):"",A=X?encodeURIComponent(X):"";if(V&&A)U=`${V}:${A}@`;else if(A)U=`:${A}@`;let z=`redis://${U}${J}:${Y}/${G}`,M=new B1(z,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await M.ping(),this.redisClient=M,this.redisConnectedAt=Date.now(),M}catch(J){I.error({err:J,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let Y=`Redis \u8FDE\u63A5\u5931\u8D25: ${J&&typeof J.message==="string"?J.message:String(J)}`;throw new T({message:Y,kind:"runtime",logged:!0,cause:J,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED Redis \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.redisClient=null}}static getRedis(){if(!this.redisClient)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");return this.redisClient}static async connect($){try{await this.connectSql($.db||{}),await this.connectRedis($.redis||{})}catch(Z){let J=typeof process?.env?.NODE_ENV==="string"?"development":"";if(I.error({env:J,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),q$(Z))throw Z.logged=!0,Z;let Y=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new T({message:Y,kind:"runtime",logged:!0,cause:Z,meta:{subsystem:"connect",operation:"connect"}})}}static async disconnect(){await this.disconnectSql(),await this.disconnectRedis()}static isConnected(){return{sql:this.sqlClient!==null,redis:this.redisClient!==null}}static getStatus(){let $=Date.now();return{sql:{connected:this.sqlClient!==null,connectedAt:this.sqlConnectedAt,uptime:this.sqlConnectedAt?$-this.sqlConnectedAt:null,poolMax:this.sqlPoolMax,mysqlVersionText:this.mysqlVersionText,mysqlVersionMajor:this.mysqlVersionMajor},redis:{connected:this.redisClient!==null,connectedAt:this.redisConnectedAt,uptime:this.redisConnectedAt?$-this.redisConnectedAt:null}}}static __setMockSql($){this.sqlClient=$}static __setMockRedis($){this.redisClient=$}static __reset(){this.sqlClient=null,this.redisClient=null,this.sqlConnectedAt=null,this.redisConnectedAt=null,this.sqlPoolMax=1,this.mysqlVersionText=null,this.mysqlVersionMajor=null}}$0();$0();async function bQ($){let Z=new Map;for(let J of $)try{if(J.type!=="api")continue;let Y=J,Q=Y.path,X={name:Y.name,handler:Y.handler,route:Q},G=Y.method;if(typeof G==="string"){let M=G.toUpperCase(),j=M==="POST,GET"?"GET,POST":M;X.method=["GET","POST","GET,POST"].includes(j)?j:"POST"}else X.method="POST";let U=Y.auth;if(U!==void 0)X.auth=U;let V=Y.fields;if(V!==void 0)X.fields=V;let A=Y.required;if(A!==void 0)X.required=A;let z=Y.rawBody;if(z!==void 0)X.rawBody=z;Z.set(Q,X)}catch(Y){throw I.error({err:Y,api:J.relativePath,file:J.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new T({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"api",operation:"load",relativePath:J.relativePath,filePath:J.filePath}})}return Z}$0();u0();function TZ($,Z={}){let J=Z.moduleLabel||"\u6A21\u5757",Y=Z.getName||((M)=>{let j=M.moduleName;if(typeof j==="string"&&j.trim()!=="")return j;return I$(M.fileName)}),Q=Z.getDeps||((M)=>{let j=M.deps;if(!Array.isArray(j))return[];return j.filter((C)=>typeof C==="string")}),X=[],G=new Set,U=new Set,V={},A=!0;for(let M of $){let j=Y(M);if(typeof j!=="string"||j.trim()===""){I.error({item:M,msg:`${J} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),A=!1;continue}if(V[j]){I.error({name:j,first:V[j],second:M,msg:`${J} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),A=!1;continue}V[j]=M}if(!A)return!1;for(let M of $){let j=Y(M),C=Q(M);if(!Array.isArray(C)){I.error({module:j,item:M,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),A=!1;continue}for(let S of C){if(typeof S!=="string"){I.error({module:j,dependency:S,item:M,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),A=!1;continue}if(!V[S])I.error({module:j,dependency:S,msg:`${J} \u4F9D\u8D56\u672A\u627E\u5230`}),A=!1}}if(!A)return!1;let z=(M)=>{if(G.has(M))return;if(U.has(M)){I.error({module:M,msg:`${J} \u5FAA\u73AF\u4F9D\u8D56`}),A=!1;return}let j=V[M];if(!j)return;let C=Q(j);U.add(M);for(let S of C)z(S);U.delete(M),G.add(M),X.push(j)};for(let M of $){let j=Y(M);z(j)}return A?X:!1}async function cQ($){let Z=[],J=$.filter((Q)=>{let X=Q.moduleName;if(typeof X!=="string"||X.trim()==="")return!1;if((Object.hasOwn(Q,"enable")?Q.enable:void 0)===!1)return!1;return!0}),Y=TZ(J,{moduleLabel:"\u94A9\u5B50"});if(Y===!1)throw new T({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let Q of Y){let X=Q.moduleName,G=Object.hasOwn(Q,"deps")?Q.deps:void 0,U=Array.isArray(G)?G.filter((z)=>typeof z==="string"):[],V=Object.hasOwn(Q,"handler")?Q.handler:void 0;if(typeof V!=="function")throw new T({kind:"validation",message:`Hook '${X}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"hook",operation:"load",hook:X}});let A=V;Z.push({name:X,enable:!0,deps:U,handler:A})}return Z}$0();async function pQ($,Z){let J=[],Y=$.filter((X)=>{let G=X.moduleName;if(typeof G!=="string"||G.trim()==="")return!1;if((Object.hasOwn(X,"enable")?X.enable:void 0)===!1)return!1;return!0}),Q=TZ(Y,{moduleLabel:"\u63D2\u4EF6"});if(Q===!1)throw new T({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let X of Q){let G=X.moduleName,U=Object.hasOwn(X,"deps")?X.deps:void 0,V=Array.isArray(U)?U.filter((M)=>typeof M==="string"):[],A=Object.hasOwn(X,"handler")?X.handler:void 0;if(typeof A!=="function")throw new T({kind:"validation",message:`\u63D2\u4EF6 '${G}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"plugin",operation:"load",plugin:G}});let z=A;try{let M=await z(Z);Z[G]=M,J.push({name:G,enable:!0,deps:V,handler:z})}catch(M){throw I.error({err:M,plugin:G,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${G}`,logged:!0,cause:M,meta:{subsystem:"plugin",operation:"init",plugin:G}})}}return J}LZ();$0();function uQ($,Z){let J=$.headers.get("x-forwarded-for");if(typeof J==="string"&&J.trim()){let U=J.split(",")[0];if(typeof U==="string"&&U.trim())return U.trim()}let Y=$.headers.get("x-real-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();let Q=$.headers.get("cf-connecting-ip");if(typeof Q==="string"&&Q.trim())return Q.trim();let X=$.headers.get("x-client-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("true-client-ip");if(typeof G==="string"&&G.trim())return G.trim();if(Z&&typeof Z.requestIP==="function"){let U=Z.requestIP($);if(U&&typeof U.address==="string"&&U.address.trim())return U.address.trim()}return"unknown"}$0();function C$($,Z,J=1,Y=null,Q=null,X=null){if($.requestId)I.info({event:"request_blocked",reason:Z,reasonCode:X,code:J,detail:Q,msg:"request blocked"});return Response.json({code:J,msg:Z,data:Y,detail:Q},{headers:$.corsHeaders})}function cJ($){if($.api&&$.requestId)I.info({event:"request_done",msg:"request done"});if($.response)return $.response;if($.result!==void 0){let Z=$.result;if(typeof Z==="string")Z={code:0,msg:Z};else if(Z&&typeof Z==="object"){if(!("code"in Z))Z={code:0,...Z}}if(Z&&typeof Z==="object"){let J=JSON.stringify(Z,(Y,Q)=>typeof Q==="bigint"?Q.toString():Q);return new Response(J,{headers:{...$.corsHeaders,"Content-Type":"application/json"}})}else return Response.json(Z,{headers:$.corsHeaders})}return Response.json({code:1,msg:"\u672A\u751F\u6210\u54CD\u5E94"},{headers:$.corsHeaders})}u0();function mQ($,Z,J){return async(Y,Q)=>{let X=eY(),U=new URL(Y.url).pathname||"/",V=uQ(Y,Q),A=Date.now(),z={method:Y.method,body:{},user:{},req:Y,now:A,ip:V,headers:Y.headers,route:U,requestId:X,corsHeaders:{"X-Request-ID":X}},M=$.get(U);if(M)z.api=M;return JQ({requestId:X,method:Y.method,route:U,ip:V,now:A},async()=>{try{for(let j of Z)if(await j.handler(J,z),z.response)return z.response;if(z.api&&Y.method!=="OPTIONS"){let j={event:"request",apiName:z.api.name};if(z.body&&Object.keys(z.body).length>0)j.body=z.body;j.msg="request",I.info(j)}if(!z.api){if(Y.method!=="OPTIONS")z.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:z.corsHeaders})}else if(z.api.handler){let j=await z.api.handler(J,z);if(j instanceof Response)z.response=j;else z.result=j}return cJ(z)}catch(j){let C=z.api?U:Y.url;return I.error({err:j,path:C,msg:"\u8BF7\u6C42\u9519\u8BEF"}),z.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},cJ(z)}})}}P$();$0();P$();import{fileURLToPath as P1}from"url";var C1=P1(import.meta.url),S$=wZ(C1);var r4=k$(S$).endsWith("/dist")?S$:o(S$,"dist"),i4=o(S$,"checks"),t4=o(S$,"plugins"),a4=o(S$,"hooks"),e4=o(S$,"apis"),$5=o(S$,"tables"),s0=process.cwd(),Z5=o(s0,"checks"),J5=o(s0,"plugins"),Y5=o(s0,"hooks"),Q5=o(s0,"apis"),X5=o(s0,"tables"),G5=o(s0,"addons");function DZ($,Z={}){let J=Z.origin||"*";return{"Access-Control-Allow-Origin":J==="*"?$.headers.get("origin")||"*":J,"Access-Control-Allow-Methods":Z.methods||"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":Z.allowedHeaders||"Content-Type, Authorization, authorization, token","Access-Control-Expose-Headers":Z.exposedHeaders||"Content-Range, X-Content-Range, Authorization, authorization, token","Access-Control-Max-Age":String(Z.maxAge||86400),"Access-Control-Allow-Credentials":Z.credentials||"true"}}function dQ($=void 0){return async(Z)=>{let J=DZ(Z,$),Y=new URL(Z.url),Q=o(s0,"public",Y.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:J});let X=Bun.file(Q);if(await X.exists())return new Response(X,{headers:{"Content-Type":X.type||"application/octet-stream",...J}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:J})}catch(X){return I.error({err:X,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:J})}}}$0();u0();var S1=($)=>{let Z=$.split("/").map((X)=>X.trim()).filter((X)=>X.length>0),Y=(Z[1]||"")==="addon"?4:3,Q=Z.slice(0,Math.min(Y,Z.length));if(Q.length===0)return"";return`/${Q.join("/")}`};async function nQ($,Z){if(!$.db)throw new T({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new T({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){I.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let Q=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],X=aY(Q,(z)=>z.path),G=[],U=[],V=[],A=new Set;for(let z of Z){if(z.type!=="api")continue;let M=z,j=M.path,C=M.name,S=M.addonName;if(typeof j!=="string"||j.trim()==="")continue;if(typeof C!=="string"||C.trim()==="")continue;let w=typeof S==="string"?S:"",k=M.auth,N=k===!1||k===0?0:1,E=S1(j);A.add(j);let v=X[j];if(v){if(C!==v.name||j!==v.path||w!==v.addonName||E!==v.parentPath||N!==v.auth)U.push({id:v.id,name:C,path:j,parentPath:E,addonName:w,auth:N})}else G.push({name:C,path:j,parentPath:E,addonName:w,auth:N})}for(let z of Q)if(!A.has(z.path))V.push(z.id);if(U.length>0)try{await $.db.updBatch("addon_admin_api",U.map((z)=>{return{id:z.id,data:{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(G.length>0)try{await $.db.insBatch("addon_admin_api",G.map((z)=>{return{name:z.name,path:z.path,parentPath:z.parentPath,addonName:z.addonName,auth:z.auth}}))}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(V.length>0)try{await $.db.delForceBatch("addon_admin_api",V)}catch(z){I.error({err:z,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function sQ($){if(!$.cache)throw new T({message:"\u540C\u6B65\u7F13\u5B58\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});await $.cache.cacheApis(),await $.cache.cacheMenus(),await $.cache.rebuildRoleApiPermissions()}import{createSign as w1}from"crypto";class d${static md5($,Z="hex"){let J=new Bun.CryptoHasher("md5");return J.update($),J.digest(Z)}static hmacMd5($,Z,J="hex"){let Y=new Bun.CryptoHasher("md5",$);return Y.update(Z),Y.digest(J)}static sha1($,Z="hex"){let J=new Bun.CryptoHasher("sha1");return J.update($),J.digest(Z)}static hmacSha1($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha1",$);return Y.update(Z),Y.digest(J)}static sha256($,Z="hex"){let J=new Bun.CryptoHasher("sha256");return J.update($),J.digest(Z)}static rsaSha256($,Z,J="hex"){let Y=w1("RSA-SHA256");return Y.update($),Y.sign(Z,J)}static hmacSha256($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha256",$);return Y.update(Z),Y.digest(J)}static sha512($,Z="hex"){let J=new Bun.CryptoHasher("sha512");return J.update($),J.digest(Z)}static hmacSha512($,Z,J="hex"){let Y=new Bun.CryptoHasher("sha512",$);return Y.update(Z),Y.digest(J)}static hash($,Z,J="hex"){let Y=new Bun.CryptoHasher($);return Y.update(Z),Y.digest(J)}static hmac($,Z,J,Y="hex"){let Q=new Bun.CryptoHasher($,Z);return Q.update(J),Q.digest(Y)}static async hashFile($,Z="sha256",J="hex"){let Y=Bun.file($),Q=new Bun.CryptoHasher(Z),G=Y.stream().getReader();try{while(!0){let{done:U,value:V}=await G.read();if(U)break;Q.update(V)}return Q.digest(J)}finally{G.releaseLock()}}static async hashPassword($,Z={}){let J=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,J)}static async verifyPassword($,Z){return await Bun.password.verify($,Z)}static base64Encode($){return Buffer.from($,"utf8").toString("base64")}static base64Decode($){return Buffer.from($,"base64").toString("utf8")}static randomString($){let Z=Math.ceil($/2),J=crypto.getRandomValues(new Uint8Array(Z)),Y="";for(let Q=0;Q<J.length;Q++)Y+=J[Q].toString(16).padStart(2,"0");return Y.slice(0,$)}static fastHash($,Z=0){let J=Bun.hash($,Z);return typeof J==="bigint"?Number(J):J}}$0();async function oQ($,Z={}){if(!Z.devPassword)return;if(!$.db)throw new T({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!$.cache)throw new T({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){I.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){I.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){I.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let J=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Y=await $.db.getAll({table:"addon_admin_api",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Q=await $.db.getOne({table:"addon_admin_role",where:{code:"dev"}}),X={code:"dev",name:"\u5F00\u53D1\u8005\u89D2\u8272",description:"\u62E5\u6709\u6240\u6709\u83DC\u5355\u548C\u63A5\u53E3\u6743\u9650\u7684\u5F00\u53D1\u8005\u89D2\u8272",menus:J.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),apis:Y.data.lists.map((A)=>A.path).filter((A)=>typeof A==="string"&&A.length>0),sort:0};if(typeof Q.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:X.name,description:X.description,menus:X.menus,apis:X.apis,sort:X.sort}});else await $.db.insData({table:"addon_admin_role",data:X});let G={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await d$.hashPassword(d$.sha256(Z.devPassword+"befly")),roleCode:"dev",roleType:"admin"};if(typeof(await $.db.getOne({table:"addon_admin_admin",where:{username:"dev"}})).data.id==="number")await $.db.updData({table:"addon_admin_admin",where:{username:"dev"},data:{nickname:G.nickname,email:G.email,username:G.username,password:G.password,roleCode:G.roleCode,roleType:G.roleType}});else await $.db.insData({table:"addon_admin_admin",data:G});let V=[{code:"user",name:"\u7528\u6237\u89D2\u8272",description:"\u666E\u901A\u7528\u6237\u89D2\u8272",sort:1},{code:"admin",name:"\u7BA1\u7406\u5458\u89D2\u8272",description:"\u7BA1\u7406\u5458\u89D2\u8272",sort:2},{code:"guest",name:"\u8BBF\u5BA2\u89D2\u8272",description:"\u8BBF\u5BA2\u89D2\u8272",sort:3}];for(let A of V)if((await $.db.getOne({table:"addon_admin_role",where:{code:A.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:A.code},data:{name:A.name,description:A.description,sort:A.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:A.code,name:A.name,description:A.description,menus:[],apis:[],sort:A.sort}})}$0();bJ();function E1($){let Z=$.config?.disableMenus,J=Array.isArray(Z)?Z:[],Y=[];for(let X of J){if(typeof X!=="string")continue;let G=X.trim();if(!G)continue;Y.push(G)}if(Y.length===0)return()=>!1;let Q=Y.map((X)=>new Bun.Glob(X));return(X)=>{if(typeof X!=="string")return!1;let G=X.trim();if(!G)return!1;let U=[];if(U.push(G),G.startsWith("/"))U.push(G.slice(1));else U.push(`/${G}`);for(let V of Q){let 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 z=A;for(let M of U)if(z.call(V,M))return!0}return!1}}function lQ($,Z){let J=[];for(let Y of $){if(Y===null||typeof Y!=="object")continue;let Q=typeof Y.path==="string"?String(Y.path).trim():"";if(Q&&Z(Q))continue;let X=Y.children,G=Array.isArray(X)&&X.length>0?lQ(X,Z):[],U={};if(typeof Y.name==="string")U.name=Y.name;if(typeof Y.path==="string")U.path=Y.path;if(typeof Y.sort==="number")U.sort=Y.sort;if(typeof Y.parentPath==="string")U.parentPath=Y.parentPath;if(G.length>0)U.children=G;J.push(U)}return J}function T1($){let Z=new Map,J=[];for(let Y of $)J.push({menu:Y,parentPathFromTree:""});while(J.length>0){let Y=J.pop(),Q=Y?Y.menu:null;if(!Q)continue;let X=typeof Q.path==="string"?Q.path:"",G=Q.children;if(G&&Array.isArray(G)&&G.length>0){let M=typeof X==="string"?X:"";for(let j of G)J.push({menu:j,parentPathFromTree:M})}if(!X)continue;let U=typeof Q.name==="string"?Q.name:"";if(!U)continue;let V=typeof Q.sort==="number"?Q.sort:999999,z=typeof Q.parentPath==="string"?Q.parentPath:typeof Y?.parentPathFromTree==="string"?Y.parentPathFromTree:CQ(X);Z.set(X,{path:X,name:U,sort:V,parentPath:z})}return Z}async function rQ($,Z){if(!$.db)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let J=E1($),Y=lQ(Z,J),Q=T1(Y),X=new Set;for(let U of Q.keys())X.add(U);let G="addon_admin_menu";await $.db.trans(async(U)=>{let A=(await U.getAll({table:G,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],z=A.filter((E)=>typeof E?.state==="number"&&E.state>=0),M=new Map,j=new Set,C=new Map;for(let E of z){if(typeof E?.path!=="string"||!E.path)continue;if(typeof E?.id!=="number")continue;if(J(E.path))continue;let v=M.get(E.path);if(!v){M.set(E.path,E);continue}let b=typeof v?.id==="number"?v.id:0,f=E.id;if(f>b){if(M.set(E.path,E),b>0)j.add(b);let d=C.get(E.path)||{keptId:f,removedIds:[]};if(d.keptId=f,b>0)d.removedIds.push(b);C.set(E.path,d)}else{if(f>0)j.add(f);let d=C.get(E.path)||{keptId:b,removedIds:[]};if(d.keptId=b,f>0)d.removedIds.push(f);C.set(E.path,d)}}if(C.size>0){let E=[];for(let v of C.entries()){let b=v[0],f=v[1];if(E.push({path:b,keptId:f.keptId,removedIds:f.removedIds}),E.length>=10)break}I.warn({table:G,duplicatePaths:C.size,duplicateIds:j.size,examples:E,msg:"addon_admin_menu \u68C0\u6D4B\u5230\u91CD\u590D path \u8BB0\u5F55\uFF1A\u5DF2\u4FDD\u7559 id \u6700\u5927\u7684\u4E00\u6761\u5E76\u5220\u9664\u5176\u4F59\u8BB0\u5F55"})}let S=[],w=[];for(let E of Q.values()){let v=M.get(E.path);if(v){let b=typeof v.parentPath==="string"?v.parentPath:"";if(v.name!==E.name||v.sort!==E.sort||b!==E.parentPath)S.push({id:v.id,data:{name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort}})}else w.push({name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort})}if(S.length>0)await U.updBatch(G,S);if(w.length>0)await U.insBatch(G,w);let k=new Set;for(let E of z){if(typeof E?.path!=="string"||!E.path)continue;if(!X.has(E.path)){if(typeof E?.id==="number")k.add(E.id)}}for(let E of j)if(typeof E==="number"&&E>0)k.add(E);for(let E of A){if(typeof E?.path!=="string"||!E.path)continue;if(!J(E.path))continue;if(typeof E?.id==="number"&&E.id>0)k.add(E.id)}let N=Array.from(k);if(N.length>0)await U.delForceBatch(G,N)})}$0();function D1($){switch($.toLowerCase()){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":return"integer";case"decimal":case"float":case"double":return"number";case"char":case"varchar":case"tinytext":case"text":case"mediumtext":case"longtext":return"string";case"datetime":return"string";case"json":return"json";default:return"string"}}function N1($){let Z=String($.type??"").trim(),Y=(typeof $.input==="string"?$.input.trim():"")||D1(Z);return{type:Z,input:Y}}function U$($){let Z=N1($),J=$.default??null;if(J===null){if(Z.input==="array"||Z.input==="array_number"||Z.input==="array_integer")J="[]"}return{name:$.name,type:Z.type,input:Z.input,detail:$.detail??"",min:$.min??null,max:$.max??null,precision:$.precision??null,scale:$.scale??null,default:J,index:$.index??!1,unique:$.unique??!1,nullable:$.nullable??!1,unsigned:$.unsigned??!1}}function uJ($){return String($).replace(/"/g,"\\\"")}function mJ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let J of $)Z.push(mJ(J));return Z}return String($)}function k1($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function v1($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function pJ($){if(k1($))return $;if(Array.isArray($)){let Z=[];for(let J of $){let Y=pJ(J);if(Y===null)return null;Z.push(Y)}return Z}if(v1($)){let Z={};for(let[J,Y]of Object.entries($)){if(Y===void 0)continue;let Q=pJ(Y);if(Q===null)return null;Z[J]=Q}return Z}return null}function iQ($){if(!Array.isArray($))return[];let Z=[];for(let J of $){if(J===null){Z.push(null);continue}if(typeof J==="string"||typeof J==="number"||typeof J==="boolean"){Z.push(J);continue}if(typeof J==="bigint"){Z.push(String(J));continue}if(J instanceof Date){Z.push(J);continue}let Y=pJ(J);if(Y!==null){Z.push(Y);continue}Z.push(String(J))}return Z}function w$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}u0();class D{static DB_VERSION_REQUIREMENTS={MYSQL_MIN_MAJOR:8};static MYSQL_TABLE_CONFIG={ENGINE:"InnoDB",CHARSET:"utf8mb4",COLLATE:"utf8mb4_0900_ai_ci"};static SYSTEM_FIELDS=[{name:"id",comment:"\u4E3B\u952EID",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT"},{name:"created_at",comment:"\u521B\u5EFA\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"updated_at",comment:"\u66F4\u65B0\u65F6\u95F4",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"deleted_at",comment:"\u5220\u9664\u65F6\u95F4",needsIndex:!1,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 0"},{name:"state",comment:"\u72B6\u6001\u5B57\u6BB5",needsIndex:!0,mysqlDdl:"BIGINT UNSIGNED NOT NULL DEFAULT 1"}];static SYSTEM_INDEX_FIELDS=["created_at","updated_at","state"];static TYPE_MAPPING={tinyint:"TINYINT",smallint:"SMALLINT",mediumint:"MEDIUMINT",int:"INT",bigint:"BIGINT",decimal:"DECIMAL",float:"FLOAT",double:"DOUBLE",char:"CHAR",varchar:"VARCHAR",datetime:"DATETIME",tinytext:"TINYTEXT",text:"MEDIUMTEXT",mediumtext:"MEDIUMTEXT",longtext:"LONGTEXT",json:"JSON"};static TEXT_FAMILY=new Set(["tinytext","text","mediumtext","longtext"]);static INT_TYPES=new Set(["tinyint","smallint","mediumint","int","bigint"]);static DECIMAL_TYPES=new Set(["decimal"]);static FLOAT_TYPES=new Set(["float","double"]);db;dbName;constructor($){if(!$?.db)throw new T({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});if(!$.config)throw new T({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 T({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 D.ensureDbVersion(this.db);let Z=[],J=[];for(let Y of $){if(!Y||Y.type!=="table")continue;let Q=Y.source==="addon"?`addon_${c(Y.addonName)}_${c(Y.fileName)}`:c(Y.fileName),X=Y.content;for(let V of Object.values(X))D.normalizeFieldDefinitionInPlace(V);let G=await D.tableExists(this.db,this.dbName,Q),U={item:Y,tableName:Q,tableFields:X,existsTable:G,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(G){let V=await D.getTableColumns(this.db,this.dbName,Q),A=await D.getTableIndexes(this.db,this.dbName,Q),z=D.collectIncompatibleTypeChanges(Q,V,X);for(let M of z)J.push(M);U.existingColumns=V,U.existingIndexes=A}Z.push(U)}D.throwIfIncompatibleTypeChanges(J);for(let Y of Z){if(!Y.existsTable)continue;if(!Y.existingColumns||!Y.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${Y.tableName}\uFF09`);let Q=D.buildTablePlan({tableName:Y.tableName,fields:Y.tableFields,existingColumns:Y.existingColumns,existingIndexes:Y.existingIndexes});Y.plan=Q.plan,Y.planSummary=Q.summary,Y.planDetails=Q.details;for(let X of Q.incompatibleTypeChanges)J.push(X)}D.throwIfIncompatibleTypeChanges(J);for(let Y of Z){let{item:Q,tableName:X,tableFields:G,existsTable:U}=Y;try{if(U){let{plan:V,planSummary:A,planDetails:z}=Y;if(V&&V.changed&&A&&z){let M=`[\u8868 ${X}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${A.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${A.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${A.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${A.indexChanges}`,j=z.fieldChanges.flatMap((w)=>w.changes.map((k)=>{let N=String(k.current??""),E=String(k.expected??"");return`- ${w.dbFieldName}.${k.type}: ${N} -> ${E}`})),C=z.indexChanges.map((w)=>{let k=`idx_${w.fieldName}`===w.indexName?w.indexName:w.indexName;if(w.action==="create")return`- index.${k}: \u65E0 -> ${w.indexName}(${w.fieldName})`;return`- index.${k}: ${w.indexName}(${w.fieldName}) -> \u65E0`}),S=[];for(let w of j)S.push(w);for(let w of C)S.push(w);I.debug(M);for(let w of S)I.debug(`[\u8868 ${X}] \u53D8\u66F4\u660E\u7EC6 ${w}`);await D.applyTablePlan(this.db,X,V)}}else await D.createTable(this.db,X,G)}catch(V){let A=String(V?.message||V),z=V?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:X,operation:U?"modifyTable":"createTable",source:Q.source,sourceName:Q.sourceName,addonName:Q.addonName,fileName:Q.fileName,filePath:Q.filePath,errorMessage:A,sqlInfo:z?{sql:z.sql,params:z.params,duration:z.duration}:null,err:V}),V.__syncTableLogged=!0,V}}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(q$(Z)&&Z.noLog===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let J=String(Z?.message||Z),Y=Z?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:J,sqlInfo:Y?{sql:Y.sql,params:Y.params,duration:Y.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,J){let Y=String(J?.message||J),Q=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${Y}`);if(J?.sqlInfo)Q.sqlInfo=J.sqlInfo;return Q}static normalizeFieldDefinitionInPlace($){let Z=U$($);$.detail=Z.detail,$.min=Z.min,$.max=Z.max,$.precision=Z.precision,$.scale=Z.scale,$.default=Z.default,$.index=Z.index,$.unique=Z.unique,$.nullable=Z.nullable,$.unsigned=Z.unsigned,$.input=Z.input}static isStringOrArrayType($){return $==="char"||$==="varchar"}static quoteIdentifier($){if(typeof $!=="string")throw Error(`quoteIdentifier \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`);let Z=$.trim();if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684 SQL \u6807\u8BC6\u7B26: ${Z}`);return`\`${Z}\``}static getSqlType($,Z,J=!1,Y=null,Q=null){let X=String($||"").toLowerCase(),G=D.TYPE_MAPPING;if(D.isStringOrArrayType(X)){if(typeof Z!=="number")throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A${X} \u7C7B\u578B\u7F3A\u5931 max\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09`);return`${G[X]}(${Z})`}if(D.DECIMAL_TYPES.has(X)){if(typeof Y!=="number"||typeof Q!=="number")throw Error("\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1Adecimal \u7C7B\u578B\u7F3A\u5931 precision/scale\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09");let V=`${G[X]}(${Y},${Q})`;return J?`${V} UNSIGNED`:V}let U=G[X]||"TEXT";if((D.INT_TYPES.has(X)||D.FLOAT_TYPES.has(X))&&J)return`${U} UNSIGNED`;return U}static resolveDefaultValue($,Z){let J=String(Z||"").toLowerCase();if($!==null&&$!=="null")return $;switch(J){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":case"decimal":case"float":case"double":return 0;case"char":case"varchar":return"";case"datetime":return"null";case"tinytext":case"text":case"mediumtext":case"longtext":case"json":return"null";default:return $}}static generateDefaultSql($,Z){let J=String(Z||"").toLowerCase();if(D.TEXT_FAMILY.has(J)||J==="json"||$==="null")return"";if(D.INT_TYPES.has(J)||D.DECIMAL_TYPES.has(J)||D.FLOAT_TYPES.has(J)||D.isStringOrArrayType(J))if(typeof $==="number"&&!Number.isNaN($))return` DEFAULT ${$}`;else return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(J==="datetime"){if(typeof $==="string"){let Y=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(Y))return` DEFAULT ${Y.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${Y.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let J=String(Z||"").toLowerCase(),Y=String($).trim();if(D.INT_TYPES.has(J)||D.DECIMAL_TYPES.has(J)||D.FLOAT_TYPES.has(J)){if(/^[+-]?\d+(?:\.\d+)?$/.test(Y)){let Q="",X=Y;if(X.startsWith("+")||X.startsWith("-"))Q=X.startsWith("-")?"-":"",X=X.slice(1);let G=X.split("."),U=G[0]||"0",V=G[1]||"",A=U.replace(/^0+(\d)/,"$1"),z=V.replace(/0+$/g,""),M=A===""?"0":A,j=z.length>0?`${M}.${z}`:M;return Q==="-"&&j!=="0"?`-${j}`:j}}return Y}static buildIndexClause($,Z,J){let Y=D.quoteIdentifier($);if(J==="create"){let Q=D.quoteIdentifier(Z);return`ADD INDEX ${Y} (${Q})`}return`DROP INDEX ${Y}`}static getSystemColumnDef($){let Z=null;for(let Y of D.SYSTEM_FIELDS)if(Y.name===$){Z=Y;break}if(!Z)return null;return`${D.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${uJ(Z.comment)}"`}static buildSystemColumnDefs(){let $=[];for(let Z of D.SYSTEM_FIELDS){let J=D.getSystemColumnDef(Z.name);if(J)$.push(J)}return $}static getSystemFieldNames(){return D.SYSTEM_FIELDS.filter(($)=>$.name!=="id").map(($)=>$.name)}static async runIndexBatch($,Z,J,Y){if(J.length===0)return;let X=`ALTER TABLE ${D.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.join(", ")}`;try{await D.executeDDLSafely($,X)}catch(G){throw I.error({err:G,table:Z,msg:Y}),G}}static buildBusinessColumnDefs($){let Z=[];for(let[J,Y]of Object.entries($))Z.push(D.buildColumnSql(J,Y));return Z}static buildColumnSql($,Z){let J=U$(Z),Y=c($),Q=D.quoteIdentifier(Y),X=D.getSqlType(J.type,J.max,J.unsigned,J.precision,J.scale),G=D.resolveDefaultValue(J.default,J.type),U=D.generateDefaultSql(G,J.type),V=J.unique?" UNIQUE":"",A=J.nullable?" NULL":" NOT NULL";return`${Q} ${X}${V}${A}${U} COMMENT "${uJ(J.name)}"`}static generateDDLClause($,Z,J=!1){return`${J?"ADD COLUMN":"MODIFY COLUMN"} ${D.buildColumnSql($,Z)}`}static buildTablePlan($){let Z=D.getSystemFieldNames(),J=D.buildFieldPlan({tableName:$.tableName,fields:$.fields,existingColumns:$.existingColumns}),Y=D.buildSystemFieldPlan({systemFieldNames:Z,existingColumns:$.existingColumns}),Q=D.buildIndexPlan({fields:$.fields,existingColumns:$.existingColumns,existingIndexes:$.existingIndexes,systemFieldNames:Z}),X=[...J.alterClauses,...Y.alterClauses],G=Q.indexActions,U=J.addedBusiness,V=J.modified,A=Y.addedSystem,z=J.incompatibleTypeChanges;return{plan:{changed:X.length>0||G.length>0,alterClauses:X,indexActions:G},summary:{addedBusiness:U,addedSystem:A,modified:V,indexChanges:G.length},details:{fieldChanges:J.changeDetails,indexChanges:Q.indexActions},incompatibleTypeChanges:z}}static buildFieldPlan($){let Z=[],J=0,Y=0,Q=[],X=[];for(let[G,U]of Object.entries($.fields)){let V=c(G);if($.existingColumns[V]){let A=D.compareFieldDefinition($.existingColumns[V],U);if(A.length>0){Y=Y+1,Q.push({fieldKey:G,dbFieldName:V,changes:A});let z=A.find((M)=>M.type==="datatype");if(z){let M=D.getSqlType(U.type,U.max??null,U.unsigned??!1,U.precision??null,U.scale??null),j=D.getIncompatibleTypeChange($.tableName,V,String(z.current??""),M);if(j)X.push(j)}Z.push(D.generateDDLClause(G,U,!1))}}else J=J+1,Z.push(D.generateDDLClause(G,U,!0))}return{alterClauses:Z,addedBusiness:J,modified:Y,changeDetails:Q,incompatibleTypeChanges:X}}static buildSystemFieldPlan($){let Z=[],J=0;for(let Y of $.systemFieldNames)if(!$.existingColumns[Y]){let Q=D.getSystemColumnDef(Y);if(Q)J=J+1,Z.push(`ADD COLUMN ${Q}`)}return{alterClauses:Z,addedSystem:J}}static buildIndexPlan($){let Z={};for(let Y of D.SYSTEM_INDEX_FIELDS)if($.existingColumns[Y]||$.systemFieldNames.includes(Y))Z[`idx_${Y}`]=Y;for(let[Y,Q]of Object.entries($.fields)){let X=c(Y);if(Q.index&&!Q.unique)Z[`idx_${X}`]=X}return{indexActions:[...Object.entries(Z).filter(([Y])=>!$.existingIndexes[Y]).map(([Y,Q])=>({action:"create",indexName:Y,fieldName:Q})),...Object.entries($.existingIndexes).filter(([Y,Q])=>!Z[Y]&&Y.startsWith("idx_")&&Array.isArray(Q)&&Q.length===1&&!D.SYSTEM_INDEX_FIELDS.includes(Q[0])).map(([Y,Q])=>({action:"drop",indexName:Y,fieldName:Q[0]}))]}}static getIncompatibleTypeChange($,Z,J,Y){let Q=String(J||"").toLowerCase(),X=String(Y||"").toLowerCase(),G=Q.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),U=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(G!==U&&!D.isCompatibleTypeChange(Q,X))return{tableName:$,dbFieldName:Z,currentType:String(J??""),expectedType:String(Y??"")};return null}static collectIncompatibleTypeChanges($,Z,J){let Y=[];for(let[Q,X]of Object.entries(J)){let G=c(Q),U=Z[G];if(!U)continue;let A=D.compareFieldDefinition(U,X).find((j)=>j.type==="datatype");if(!A)continue;let z=D.getSqlType(X.type,X.max??null,X.unsigned??!1,X.precision??null,X.scale??null),M=D.getIncompatibleTypeChange($,G,String(A.current??""),z);if(M)Y.push(M)}return Y}static throwIfIncompatibleTypeChanges($){if($.length===0)return;let Z=[];for(let Y of $)Z.push(`- ${Y.tableName}.${Y.dbFieldName}: ${Y.currentType} -> ${Y.expectedType}`);let J=[];J.push("\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4\uFF08\u68C0\u6D4B\u5230\u4E0D\u517C\u5BB9/\u6536\u7F29\u53D8\u66F4\uFF09:");for(let Y of Z)J.push(Y);throw J.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"),J.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 T({kind:"policy",message:J.join(`
|
|
7
|
-
`),noLog:!0,multiline:!0,meta:{subsystem:"syncTable",operation:"precheck"}})}static truncateForLog($,Z){let J=String($);if(Z<=0)return"";if(J.length<=Z)return J;let
|
|
8
|
-
SQL: ${
|
|
9
|
-
\u964D\u7EA7: ${
|
|
10
|
-
`),
|
|
11
|
-
${
|
|
12
|
-
) ENGINE=${
|
|
13
|
-
`&&$[
|
|
14
|
-
`||$==="\r"}function QX($,Z){let J=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let Y=$.substr(J,Z-J);if(Z>5&&Y==="xml")return H0("InvalidXml","XML declaration allowed only at the start of the document.",o0($,Z));else if($[Z]=="?"&&$[Z+1]==">"){Z++;break}else continue}return Z}function XX($,Z){if($.length>Z+5&&$[Z+1]==="-"&&$[Z+2]==="-"){for(Z+=3;Z<$.length;Z++)if($[Z]==="-"&&$[Z+1]==="-"&&$[Z+2]===">"){Z+=2;break}}else if($.length>Z+8&&$[Z+1]==="D"&&$[Z+2]==="O"&&$[Z+3]==="C"&&$[Z+4]==="T"&&$[Z+5]==="Y"&&$[Z+6]==="P"&&$[Z+7]==="E"){let J=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")J++;else if($[Z]===">"){if(J--,J===0)break}}else if($.length>Z+9&&$[Z+1]==="["&&$[Z+2]==="C"&&$[Z+3]==="D"&&$[Z+4]==="A"&&$[Z+5]==="T"&&$[Z+6]==="A"&&$[Z+7]==="["){for(Z+=8;Z<$.length;Z++)if($[Z]==="]"&&$[Z+1]==="]"&&$[Z+2]===">"){Z+=2;break}}return Z}var u1='"',m1="'";function d1($,Z){let J="",Y="",Q=!1;for(;Z<$.length;Z++){if($[Z]===u1||$[Z]===m1)if(Y==="")Y=$[Z];else if(Y!==$[Z]);else Y="";else if($[Z]===">"){if(Y===""){Q=!0;break}}J+=$[Z]}if(Y!=="")return!1;return{value:J,index:Z,tagClosed:Q}}var n1=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function GX($,Z){let J=NZ($,n1),Y={};for(let Q=0;Q<J.length;Q++){if(J[Q][1].length===0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' has no space in starting.",VZ(J[Q]));else if(J[Q][3]!==void 0&&J[Q][4]===void 0)return H0("InvalidAttr","Attribute '"+J[Q][2]+"' is without value.",VZ(J[Q]));else if(J[Q][3]===void 0&&!Z.allowBooleanAttributes)return H0("InvalidAttr","boolean attribute '"+J[Q][2]+"' is not allowed.",VZ(J[Q]));let X=J[Q][2];if(!l1(X))return H0("InvalidAttr","Attribute '"+X+"' is an invalid name.",VZ(J[Q]));if(!Y.hasOwnProperty(X))Y[X]=1;else return H0("InvalidAttr","Attribute '"+X+"' is repeated.",VZ(J[Q]))}return!0}function s1($,Z){let J=/\d/;if($[Z]==="x")Z++,J=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(J))break}return-1}function o1($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,s1($,Z);let J=0;for(;Z<$.length;Z++,J++){if($[Z].match(/\w/)&&J<20)continue;if($[Z]===";")break;return-1}return Z}function H0($,Z,J){return{err:{code:$,msg:Z,line:J.line||J,col:J.col}}}function l1($){return n$($)}function r1($){return n$($)}function o0($,Z){let J=$.substring(0,Z).split(/\r?\n/);return{line:J.length,col:J[J.length-1].length+1}}function VZ($){return $.startIndex+$[1].length}var i1={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function($,Z){return Z},attributeValueProcessor:function($,Z){return Z},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function($,Z,J){return $},captureMetaData:!1},WX=function($){return Object.assign({},i1,$)};var kZ;if(typeof Symbol!=="function")kZ="@@xmlMetadata";else kZ=Symbol("XML Node Metadata");class t0{constructor($){this.tagname=$,this.child=[],this[":@"]={}}add($,Z){if($==="__proto__")$="#__proto__";this.child.push({[$]:Z})}addChild($,Z){if($.tagname==="__proto__")$.tagname="#__proto__";if($[":@"]&&Object.keys($[":@"]).length>0)this.child.push({[$.tagname]:$.child,[":@"]:$[":@"]});else this.child.push({[$.tagname]:$.child});if(Z!==void 0)this.child[this.child.length-1][kZ]={startIndex:Z}}static getMetaDataSymbol(){return kZ}}class vZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let J={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let Y=1,Q=!1,X=!1,G="";for(;Z<$.length;Z++)if($[Z]==="<"&&!X){if(Q&&v$($,"!ENTITY",Z)){Z+=7;let U,V;if([U,V,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),V.indexOf("&")===-1)J[U]={regx:RegExp(`&${U};`,"g"),val:V}}else if(Q&&v$($,"!ELEMENT",Z)){Z+=8;let{index:U}=this.readElementExp($,Z+1);Z=U}else if(Q&&v$($,"!ATTLIST",Z))Z+=8;else if(Q&&v$($,"!NOTATION",Z)){Z+=9;let{index:U}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=U}else if(v$($,"!--",Z))X=!0;else throw Error("Invalid DOCTYPE");Y++,G=""}else if($[Z]===">"){if(X){if($[Z-1]==="-"&&$[Z-2]==="-")X=!1,Y--}else Y--;if(Y===0)break}else if($[Z]==="[")Q=!0;else G+=$[Z];if(Y!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:J,i:Z}}readEntityExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")J+=$[Z],Z++;if(_Z(J),Z=r0($,Z),!this.suppressValidationErr){if($.substring(Z,Z+6).toUpperCase()==="SYSTEM")throw Error("External entities are not supported");else if($[Z]==="%")throw Error("Parameter entities are not supported")}let Y="";return[Z,Y]=this.readIdentifierVal($,Z,"entity"),Z--,[J,Y,Z]}readNotationExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;!this.suppressValidationErr&&_Z(J),Z=r0($,Z);let Y=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&Y!=="SYSTEM"&&Y!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${Y}"`);Z+=Y.length,Z=r0($,Z);let Q=null,X=null;if(Y==="PUBLIC"){if([Z,Q]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,X]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(Y==="SYSTEM"){if([Z,X]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!X)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:J,publicIdentifier:Q,systemIdentifier:X,index:--Z}}readIdentifierVal($,Z,J){let Y="",Q=$[Z];if(Q!=='"'&&Q!=="'")throw Error(`Expected quoted string, found "${Q}"`);Z++;while(Z<$.length&&$[Z]!==Q)Y+=$[Z],Z++;if($[Z]!==Q)throw Error(`Unterminated ${J} value`);return Z++,[Z,Y]}readElementExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;if(!this.suppressValidationErr&&!n$(J))throw Error(`Invalid element name: "${J}"`);Z=r0($,Z);let Y="";if($[Z]==="E"&&v$($,"MPTY",Z))Z+=4;else if($[Z]==="A"&&v$($,"NY",Z))Z+=2;else if($[Z]==="("){Z++;while(Z<$.length&&$[Z]!==")")Y+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:J,contentModel:Y.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;_Z(J),Z=r0($,Z);let Y="";while(Z<$.length&&!/\s/.test($[Z]))Y+=$[Z],Z++;if(!_Z(Y))throw Error(`Invalid attribute name: "${Y}"`);Z=r0($,Z);let Q="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(Q="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let G=[];while(Z<$.length&&$[Z]!==")"){let U="";while(Z<$.length&&$[Z]!=="|"&&$[Z]!==")")U+=$[Z],Z++;if(U=U.trim(),!_Z(U))throw Error(`Invalid notation name: "${U}"`);if(G.push(U),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,Q+=" ("+G.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;let G=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!G.includes(Q.toUpperCase()))throw Error(`Invalid attribute type: "${Q}"`)}Z=r0($,Z);let X="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")X="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")X="#IMPLIED",Z+=7;else[Z,X]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:J,attributeName:Y,attributeType:Q,defaultValue:X,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function v$($,Z,J){for(let Y=0;Y<Z.length;Y++)if(Z[Y]!==$[J+Y+1])return!1;return!0}function _Z($){if(n$($))return $;else throw Error(`Invalid entity name ${$}`)}var t1=/^[-+]?0x[a-fA-F0-9]+$/,a1=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,e1={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function dJ($,Z={}){if(Z=Object.assign({},e1,Z),!$||typeof $!=="string")return $;let J=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(J))return $;else if($==="0")return 0;else if(Z.hex&&t1.test(J))return YW(J,16);else if(J.includes("e")||J.includes("E"))return ZW($,J,Z);else{let Y=a1.exec(J);if(Y){let Q=Y[1]||"",X=Y[2],G=JW(Y[3]),U=Q?$[X.length+1]===".":$[X.length]===".";if(!Z.leadingZeros&&(X.length>1||X.length===1&&!U))return $;else{let V=Number(J),A=String(V);if(V===0)return V;if(A.search(/[eE]/)!==-1)if(Z.eNotation)return V;else return $;else if(J.indexOf(".")!==-1)if(A==="0")return V;else if(A===G)return V;else if(A===`${Q}${G}`)return V;else return $;let z=X?G:J;if(X)return z===A||Q+z===A?V:$;else return z===A||z===Q+A?V:$}}else return $}}var $W=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function ZW($,Z,J){if(!J.eNotation)return $;let Y=Z.match($W);if(Y){let Q=Y[1]||"",X=Y[3].indexOf("e")===-1?"E":"e",G=Y[2],U=Q?$[G.length+1]===X:$[G.length]===X;if(G.length>1&&U)return $;else if(G.length===1&&(Y[3].startsWith(`.${X}`)||Y[3][0]===X))return Number(Z);else if(J.leadingZeros&&!U)return Z=(Y[1]||"")+Y[3],Number(Z);else return $}else return $}function JW($){if($&&$.indexOf(".")!==-1){if($=$.replace(/0+$/,""),$===".")$="0";else if($[0]===".")$="0"+$;else if($[$.length-1]===".")$=$.substring(0,$.length-1);return $}return $}function YW($,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 nJ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let J of $){if(typeof J==="string"&&Z===J)return!0;if(J instanceof RegExp&&J.test(Z))return!0}};return()=>!1}class xZ{constructor($){if(this.options=$,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xA2"},pound:{regex:/&(pound|#163);/g,val:"\xA3"},yen:{regex:/&(yen|#165);/g,val:"\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\xA9"},reg:{regex:/&(reg|#174);/g,val:"\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\u20B9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,16))}},this.addExternalEntities=QW,this.parseXml=UW,this.parseTextData=XW,this.resolveNameSpace=GW,this.buildAttributesMap=WW,this.isItStopNode=AW,this.replaceEntitiesValue=_W,this.readStopNodeData=zW,this.saveTextToParentTag=MW,this.addChild=VW,this.ignoreAttributesFn=nJ(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let Z=0;Z<this.options.stopNodes.length;Z++){let J=this.options.stopNodes[Z];if(typeof J!=="string")continue;if(J.startsWith("*."))this.stopNodesWildcard.add(J.substring(2));else this.stopNodesExact.add(J)}}}}function QW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];this.lastEntities[Y]={regex:new RegExp("&"+Y+";","g"),val:$[Y]}}}function XW($,Z,J,Y,Q,X,G){if($!==void 0){if(this.options.trimValues&&!Y)$=$.trim();if($.length>0){if(!G)$=this.replaceEntitiesValue($);let U=this.options.tagValueProcessor(Z,$,J,Q,X);if(U===null||U===void 0)return $;else if(typeof U!==typeof $||U!==$)return U;else if(this.options.trimValues)return oJ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return oJ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function GW($){if(this.options.removeNSPrefix){let Z=$.split(":"),J=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=J+Z[1]}return $}var HW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function WW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let J=NZ($,HW),Y=J.length,Q={};for(let X=0;X<Y;X++){let G=this.resolveNameSpace(J[X][1]);if(this.ignoreAttributesFn(G,Z))continue;let U=J[X][4],V=this.options.attributeNamePrefix+G;if(G.length){if(this.options.transformAttributeName)V=this.options.transformAttributeName(V);if(V==="__proto__")V="#__proto__";if(U!==void 0){if(this.options.trimValues)U=U.trim();U=this.replaceEntitiesValue(U);let A=this.options.attributeValueProcessor(G,U,Z);if(A===null||A===void 0)Q[V]=U;else if(typeof A!==typeof U||A!==U)Q[V]=A;else Q[V]=oJ(U,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)Q[V]=!0}}if(!Object.keys(Q).length)return;if(this.options.attributesGroupName){let X={};return X[this.options.attributesGroupName]=Q,X}return Q}}var UW=function($){$=$.replace(/\r\n?/g,`
|
|
15
|
-
`);let Z=new t0("!xml"),J=Z,Y="",Q="",X=new vZ(this.options.processEntities);for(let G=0;G<$.length;G++)if($[G]==="<")if($[G+1]==="/"){let V=x$($,">",G,"Closing Tag is not closed."),A=$.substring(G+2,V).trim();if(this.options.removeNSPrefix){let j=A.indexOf(":");if(j!==-1)A=A.substr(j+1)}if(this.options.transformTagName)A=this.options.transformTagName(A);if(J)Y=this.saveTextToParentTag(Y,J,Q);let z=Q.substring(Q.lastIndexOf(".")+1);if(A&&this.options.unpairedTags.indexOf(A)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${A}>`);let M=0;if(z&&this.options.unpairedTags.indexOf(z)!==-1)M=Q.lastIndexOf(".",Q.lastIndexOf(".")-1),this.tagsNodeStack.pop();else M=Q.lastIndexOf(".");Q=Q.substring(0,M),J=this.tagsNodeStack.pop(),Y="",G=V}else if($[G+1]==="?"){let V=sJ($,G,!1,"?>");if(!V)throw Error("Pi Tag is not closed.");if(Y=this.saveTextToParentTag(Y,J,Q),this.options.ignoreDeclaration&&V.tagName==="?xml"||this.options.ignorePiTags);else{let A=new t0(V.tagName);if(A.add(this.options.textNodeName,""),V.tagName!==V.tagExp&&V.attrExpPresent)A[":@"]=this.buildAttributesMap(V.tagExp,Q);this.addChild(J,A,Q,G)}G=V.closeIndex+1}else if($.substr(G+1,3)==="!--"){let V=x$($,"-->",G+4,"Comment is not closed.");if(this.options.commentPropName){let A=$.substring(G+4,V-2);Y=this.saveTextToParentTag(Y,J,Q),J.add(this.options.commentPropName,[{[this.options.textNodeName]:A}])}G=V}else if($.substr(G+1,2)==="!D"){let V=X.readDocType($,G);this.docTypeEntities=V.entities,G=V.i}else if($.substr(G+1,2)==="!["){let V=x$($,"]]>",G,"CDATA is not closed.")-2,A=$.substring(G+9,V);Y=this.saveTextToParentTag(Y,J,Q);let z=this.parseTextData(A,J.tagname,Q,!0,!1,!0,!0);if(z==null)z="";if(this.options.cdataPropName)J.add(this.options.cdataPropName,[{[this.options.textNodeName]:A}]);else J.add(this.options.textNodeName,z);G=V+2}else{let V=sJ($,G,this.options.removeNSPrefix),A=V.tagName,z=V.rawTagName,M=V.tagExp,j=V.attrExpPresent,C=V.closeIndex;if(this.options.transformTagName){let k=this.options.transformTagName(A);if(M===A)M=k;A=k}if(J&&Y){if(J.tagname!=="!xml")Y=this.saveTextToParentTag(Y,J,Q,!1)}let S=J;if(S&&this.options.unpairedTags.indexOf(S.tagname)!==-1)J=this.tagsNodeStack.pop(),Q=Q.substring(0,Q.lastIndexOf("."));if(A!==Z.tagname)Q+=Q?"."+A:A;let w=G;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,Q,A)){let k="";if(M.length>0&&M.lastIndexOf("/")===M.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),Q=Q.substr(0,Q.length-1),M=A;else M=M.substr(0,M.length-1);G=V.closeIndex}else if(this.options.unpairedTags.indexOf(A)!==-1)G=V.closeIndex;else{let E=this.readStopNodeData($,z,C+1);if(!E)throw Error(`Unexpected end of ${z}`);G=E.i,k=E.tagContent}let N=new t0(A);if(A!==M&&j)N[":@"]=this.buildAttributesMap(M,Q);if(k)k=this.parseTextData(k,A,Q,!0,j,!0,!0);Q=Q.substr(0,Q.lastIndexOf(".")),N.add(this.options.textNodeName,k),this.addChild(J,N,Q,w)}else{if(M.length>0&&M.lastIndexOf("/")===M.length-1){if(A[A.length-1]==="/")A=A.substr(0,A.length-1),Q=Q.substr(0,Q.length-1),M=A;else M=M.substr(0,M.length-1);if(this.options.transformTagName){let N=this.options.transformTagName(A);if(M===A)M=N;A=N}let k=new t0(A);if(A!==M&&j)k[":@"]=this.buildAttributesMap(M,Q);this.addChild(J,k,Q,w),Q=Q.substr(0,Q.lastIndexOf("."))}else{let k=new t0(A);if(this.tagsNodeStack.push(J),A!==M&&j)k[":@"]=this.buildAttributesMap(M,Q);this.addChild(J,k,Q,w),J=k}Y="",G=C}}else Y+=$[G];return Z.child};function VW($,Z,J,Y){if(!this.options.captureMetaData)Y=void 0;let Q=this.options.updateTag(Z.tagname,J,Z[":@"]);if(Q===!1);else if(typeof Q==="string")Z.tagname=Q,$.addChild(Z,Y);else $.addChild(Z,Y)}var _W=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let J=this.docTypeEntities[Z];$=$.replace(J.regx,J.val)}for(let Z in this.lastEntities){let J=this.lastEntities[Z];$=$.replace(J.regex,J.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let J=this.htmlEntities[Z];$=$.replace(J.regex,J.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function MW($,Z,J,Y){if($){if(Y===void 0)Y=Z.child.length===0;if($=this.parseTextData($,Z.tagname,J,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,Y),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function AW($,Z,J,Y){if(Z&&Z.has(Y))return!0;if($&&$.has(J))return!0;return!1}function OW($,Z,J=">"){let Y,Q="";for(let X=Z;X<$.length;X++){let G=$[X];if(Y){if(G===Y)Y=""}else if(G==='"'||G==="'")Y=G;else if(G===J[0])if(J[1]){if($[X+1]===J[1])return{data:Q,index:X}}else return{data:Q,index:X};else if(G==="\t")G=" ";Q+=G}}function x$($,Z,J,Y){let Q=$.indexOf(Z,J);if(Q===-1)throw Error(Y);else return Q+Z.length-1}function sJ($,Z,J,Y=">"){let Q=OW($,Z+1,Y);if(!Q)return;let{data:X,index:G}=Q,U=X.search(/\s/),V=X,A=!0;if(U!==-1)V=X.substring(0,U),X=X.substring(U+1).trimStart();let z=V;if(J){let M=V.indexOf(":");if(M!==-1)V=V.substr(M+1),A=V!==Q.data.substr(M+1)}return{tagName:V,tagExp:X,closeIndex:G,attrExpPresent:A,rawTagName:z}}function zW($,Z,J){let Y=J,Q=1;for(;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let X=x$($,">",J,`${Z} is not closed`);if($.substring(J+2,X).trim()===Z){if(Q--,Q===0)return{tagContent:$.substring(Y,J),i:X}}J=X}else if($[J+1]==="?")J=x$($,"?>",J+1,"StopNode is not closed.");else if($.substr(J+1,3)==="!--")J=x$($,"-->",J+3,"StopNode is not closed.");else if($.substr(J+1,2)==="![")J=x$($,"]]>",J,"StopNode is not closed.")-2;else{let X=sJ($,J,">");if(X){if((X&&X.tagName)===Z&&X.tagExp[X.tagExp.length-1]!=="/")Q++;J=X.closeIndex}}}function oJ($,Z,J){if(Z&&typeof $==="string"){let Y=$.trim();if(Y==="true")return!0;else if(Y==="false")return!1;else return dJ($,J)}else if(JX($))return $;else return""}var lJ=t0.getMetaDataSymbol();function rJ($,Z){return UX($,Z)}function UX($,Z,J){let Y,Q={};for(let X=0;X<$.length;X++){let G=$[X],U=FW(G),V="";if(J===void 0)V=U;else V=J+"."+U;if(U===Z.textNodeName)if(Y===void 0)Y=G[U];else Y+=""+G[U];else if(U===void 0)continue;else if(G[U]){let A=UX(G[U],Z,V),z=RW(A,Z);if(G[lJ]!==void 0)A[lJ]=G[lJ];if(G[":@"])KW(A,G[":@"],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(Q[U]!==void 0&&Q.hasOwnProperty(U)){if(!Array.isArray(Q[U]))Q[U]=[Q[U]];Q[U].push(A)}else if(Z.isArray(U,V,z))Q[U]=[A];else Q[U]=A}}if(typeof Y==="string"){if(Y.length>0)Q[Z.textNodeName]=Y}else if(Y!==void 0)Q[Z.textNodeName]=Y;return Q}function FW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Y=Z[J];if(Y!==":@")return Y}}function KW($,Z,J,Y){if(Z){let Q=Object.keys(Z),X=Q.length;for(let G=0;G<X;G++){let U=Q[G];if(Y.isArray(U,J+"."+U,!0,!0))$[U]=[Z[U]];else $[U]=Z[U]}}}function RW($,Z){let{textNodeName:J}=Z,Y=Object.keys($).length;if(Y===0)return!0;if(Y===1&&($[J]||typeof $[J]==="boolean"||$[J]===0))return!0;return!1}class MZ{constructor($){this.externalEntities={},this.options=WX($)}parse($,Z){if(typeof $!=="string"&&$.toString)$=$.toString();else if(typeof $!=="string")throw Error("XML data is accepted in String or Bytes[] form.");if(Z){if(Z===!0)Z={};let Q=HX($,Z);if(Q!==!0)throw Error(`${Q.err.msg}:${Q.err.line}:${Q.err.col}`)}let J=new xZ(this.options);J.addExternalEntities(this.externalEntities);let Y=J.parseXml($);if(this.options.preserveOrder||Y===void 0)return Y;else return rJ(Y,this.options)}addEntity($,Z){if(Z.indexOf("&")!==-1)throw Error("Entity value can't have '&'");else if($.indexOf("&")!==-1||$.indexOf(";")!==-1)throw Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");else if(Z==="&")throw Error("An entity with value '&' is not permitted");else this.externalEntities[$]=Z}static getMetaDataSymbol(){return t0.getMetaDataSymbol()}}var qW=new MZ,IW={name:"parser",enable:!0,deps:["auth"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.rawBody){Z.body={};return}if(Z.req.method==="GET"){let J=new URL(Z.req.url),Y=Object.fromEntries(J.searchParams);Z.body=Y}else if(Z.req.method==="POST"){let J=Z.req.headers.get("content-type")||"",Y=new URL(Z.req.url),Q=Object.fromEntries(Y.searchParams);try{if(J.includes("application/json")){let X=await Z.req.json(),G={...Q,...X};Z.body=G}else if(J.includes("application/xml")||J.includes("text/xml")){let X=await Z.req.text(),G=qW.parse(X),U=Object.keys(G)[0],V=U&&typeof G[U]==="object"?G[U]:G,A={...Q,...V};Z.body=A}else{Z.response=C$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:J},"parser");return}}catch{Z.response=C$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:J.includes("application/json")?"invalid_json":J.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},VX=IW;class m0{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleApis($){return`role:apis:${$}`}}$0();var jW={name:"permission",enable:!0,deps:["validator"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.auth===!1)return;if(typeof Z.user.id!=="number"){Z.response=C$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let J=Z.route,Y=Z.user.roleCode,Q=!1;if(Y&&$.redis)try{let X=m0.roleApis(Y);Q=await $.redis.sismember(X,J)}catch(X){I.error({event:"hook_permission_redis_error",apiPath:J,roleCode:Y,err:X,msg:"hook permission redis error"}),Q=!1}if(!Q){let X=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,G=typeof J==="string"&&J.length>0?J:null,U=X?X:G?G:"\u672A\u77E5\u63A5\u53E3";Z.response=C$(Z,`\u65E0\u6743\u8BBF\u95EE ${U} \u63A5\u53E3`,1,null,{apiLabel:U},"permission");return}}},_X=jW;var iJ={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:".+"},MX=new Map;function LW($){if($.startsWith("@")){let Z=$.slice(1);return iJ[Z]||$}return $}function BW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let J=Z.lastIndexOf("/");if(J<=0)return null;let Y=Z.slice(J+1);if(Y!==""&&!/^[gimsuy]+$/.test(Y))return null;return{source:Z.slice(1,J),flags:Y}}function AX($,Z){let J=BW($),Y=J?J.source:LW($),Q=J&&J.flags!==""?J.flags:Z||"",X=`${Y}:${Q}`,G=MX.get(X);if(!G)G=new RegExp(Y,Q),MX.set(X,G);return G}u0();var fZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function yZ($,Z){if(jJ($)){if(Z==="number")return qZ($);return IZ($)}if(Array.isArray($)){for(let J of $)if(!yZ(J,Z))return!1;return!0}if(RZ($)){for(let J of Object.values($)){if(J===void 0)continue;if(!yZ(J,Z))return!1}return!0}return!1}class tJ{static validate($,Z,J=[]){let Y={};if(!m($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!m(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let Q=$,X=Z;for(let G of J){let U=Q[G];if(U===void 0||U===null){let V=X[G],A=m(V)&&typeof V.name==="string"?V.name:G;Y[G]=`${A}\u4E3A\u5FC5\u586B\u9879`}}for(let[G,U]of Object.entries(X)){if(Y[G])continue;if(Q[G]===void 0&&!J.includes(G))continue;if(!m(U)){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:V,type:A}=U;if(typeof V!=="string"||typeof A!=="string"){Y[G]=`${G}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let z={name:V,type:A},M=U.input;if(typeof M==="string")z.input=M;let j=U.min;if(typeof j==="number"||j===null)z.min=j;let C=U.max;if(typeof C==="number"||C===null)z.max=C;let S=U.default;if(S===null||typeof S==="string"||typeof S==="number"||typeof S==="boolean"||Array.isArray(S)||m(S))z.default=S;let w=U.detail;if(typeof w==="string")z.detail=w;let k=U.index;if(typeof k==="boolean")z.index=k;let N=U.unique;if(typeof N==="boolean")z.unique=N;let E=U.nullable;if(typeof E==="boolean")z.nullable=E;let v=U.unsigned;if(typeof v==="boolean")z.unsigned=v;let b=this.checkField(Q[G],z,G);if(b)Y[G]=b}return this.buildResult(Y)}static single($,Z){let J=U$(Z),Y=J.type,Q=J.input,X=J.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(Y,Q,X),error:null};let G=this.convert($,Q,Y);if(G.error)return{value:null,error:G.error};let U=this.checkRule(G.value,Z);if(U)return{value:null,error:U};return{value:G.value,error:null}}static buildResult($){let Z=Object.values($),J=Object.keys($),Y=Z.length>0;return{code:Y?1:0,failed:Y,firstError:Y?Z[0]??null:null,errors:Z,errorFields:J,fieldErrors:$}}static checkField($,Z,J){let Y=Z.name||J,Q=U$(Z),X=this.convert($,Q.input,Q.type);if(X.error)return`${Y}${X.error}`;let G=this.checkRule(X.value,Z);return G?`${Y}${G}`:null}static convert($,Z,J){let Y=String(Z||"").trim(),Q=Y.toLowerCase();if(!fZ.has(Q)&&g$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!fZ.has(Q)&&h$(Y))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(Q){case"number":{if(qZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}return{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}case"integer":{if(IZ($))return{value:$,error:null};if(typeof $==="string"){let X=Number($);return Number.isFinite(X)&&Number.isInteger(X)?{value:X,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}return{value:null,error:"\u5FC5\u987B\u662F\u6574\u6570"}}case"string":{if(typeof $==="string"){if(String(J||"").toLowerCase()==="datetime")return{value:$.trim(),error:null};return{value:$,error:null}}if(String(J||"").toLowerCase()==="datetime")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"}}case"char":if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};return $.length===1?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5355\u5B57\u7B26"};case"array":return Array.isArray($)?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};case"array_number":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!qZ(X))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6570\u5B57"};return{value:$,error:null}}case"array_integer":{if(!Array.isArray($))return{value:null,error:"\u5FC5\u987B\u662F\u6570\u7EC4"};for(let X of $)if(!IZ(X))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 yZ($,"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 yZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{if(String(J||"").toLowerCase()==="datetime"){if(typeof $!=="string")return{value:null,error:"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32"};return{value:$.trim(),error:null}}return{value:$,error:null}}}}static checkRule($,Z){let J=U$(Z),Y=J.type,Q=J.input,X=J.min,G=J.max,U=String(Q||"").trim(),V=U.toLowerCase(),A=!fZ.has(V)&&g$(U),z=!fZ.has(V)&&h$(U);if(V==="number"||V==="integer"){if(typeof $!=="number")return V==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(X!==null&&$<X)return`\u4E0D\u80FD\u5C0F\u4E8E${X}`;if(G!==null&&G>0&&$>G)return`\u4E0D\u80FD\u5927\u4E8E${G}`}else if(V==="string"||V==="char"||A||z){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(V==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(X!==null&&$.length<X)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${X}\u4E2A\u5B57\u7B26`;if(G!==null&&G>0&&$.length>G)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${G}\u4E2A\u5B57\u7B26`;if(A){let M=this.resolveRegex(U);if(!this.testRegex(M,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(z){if(!U.split("|").map((j)=>j.trim()).filter((j)=>j!=="").includes($))return"\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185"}}else if(V==="array"||V==="array_number"||V==="array_integer"){if(!Array.isArray($))return"\u5FC5\u987B\u662F\u6570\u7EC4";if(X!==null&&$.length<X)return`\u81F3\u5C11\u9700\u8981${X}\u4E2A\u5143\u7D20`;if(G!==null&&G>0&&$.length>G)return`\u6700\u591A\u53EA\u80FD\u6709${G}\u4E2A\u5143\u7D20`}else if(V==="json"||V==="json_number"||V==="json_integer"){if(!XZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}if(String(Y||"").toLowerCase()==="datetime"){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u65F6\u95F4\u5B57\u7B26\u4E32";if(!/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test($))return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[M,j]=$.split(" ");if(typeof M!=="string"||typeof j!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[C,S,w]=M.split("-"),[k,N,E]=j.split(":"),v=Number(C),b=Number(S),f=Number(w),d=Number(k),a=Number(N),r=Number(E);if(!Number.isInteger(v)||v<1000||v>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(b)||b<1||b>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(f)||f<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(d)||d<0||d>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(a)||a<0||a>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(r)||r<0||r>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let H=[31,v%4===0&&v%100!==0||v%400===0?29:28,31,30,31,30,31,31,30,31,30,31][b-1]??0;if(f>H)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return iJ[Z]||$}return $}static testRegex($,Z){try{return AX($).test(Z)}catch{return!1}}static defaultFor($,Z,J){if(J!==null&&J!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof J==="string"){if(J==="[]")return[];try{let X=JSON.parse(J);return Array.isArray(X)?X:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof J==="string"){let X=Number(J);return isNaN(X)?0:X}return J}let Y=String($||"").toLowerCase();if(Y==="datetime"||Y==="json")return null;let Q=String(Z||"").toLowerCase();if(Q==="json"||Q==="json_number"||Q==="json_integer")return null;switch(String(Z||"").toLowerCase()){case"number":case"integer":return 0;case"array":case"array_number":case"array_integer":return[];default:return""}}}u0();var PW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(m(Z.api.fields)){let Y=m(Z.body)?Z.body:{},Q={};for(let[X,G]of Object.entries(Z.api.fields)){let U=U$(G),V=Y[X];if(V===void 0){let A=c(X);if(Y[A]!==void 0)V=Y[A]}if(V===void 0&&U.default!==null)V=U.default;if(V!==void 0)Q[X]=V}Z.body=Q}let J=tJ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(J.code!==0){Z.response=C$(Z,J.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,J.fieldErrors,"validator");return}}},OX=PW;$0();class aJ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let J=$.trim();if(!J)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(J))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!J.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(J.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return J}assertApiPathList($,Z){if($===null||$===void 0)return[];let J=$;if(typeof J==="string"){let Q=J.trim();if(Q===""||Q==="null")return[];if(Q.startsWith("[")&&Q.endsWith("]"))try{J=JSON.parse(Q)}catch{throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis JSON \u89E3\u6790\u5931\u8D25\uFF0CroleCode=${Z}`)}}if(!Array.isArray(J))throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u6216 JSON \u6570\u7EC4\u5B57\u7B26\u4E32\uFF0CroleCode=${Z}\uFF0Ctype=${typeof J}`);let Y=[];for(let Q of J)Y.push(this.assertApiPathname(Q,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return Y}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){I.warn("\u26A0\uFE0F \u63A5\u53E3\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u63A5\u53E3\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_api"});if(await this.redis.setObject(m0.apisAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){I.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){I.warn("\u26A0\uFE0F \u83DC\u5355\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u83DC\u5355\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_menu"});if(await this.redis.setObject(m0.menusAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){I.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){I.warn("\u26A0\uFE0F \u89D2\u8272\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u89D2\u8272\u6743\u9650\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_role",fields:["code","apis"]}),J=new Map;for(let G of Z.data.lists){if(!G?.code)continue;let U=this.assertApiPathList(G.apis,G.code);J.set(G.code,U)}let Y=Array.from(J.keys());if(Y.length===0){I.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let Q=Y.map((G)=>m0.roleApis(G));await this.redis.delBatch(Q);let X=[];for(let G of Y){let U=J.get(G)||[],V=Array.from(new Set(U)).sort();if(V.length>0)X.push({key:m0.roleApis(G),members:V})}if(X.length>0)await this.redis.saddBatch(X)}catch($){throw I.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new T({kind:"runtime",message:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09",logged:!0,cause:$,meta:{subsystem:"cache",operation:"rebuildRoleApiPermissions"}})}}async refreshRoleApiPermissions($,Z){if(!$||typeof $!=="string")throw Error("roleCode \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Array.isArray(Z))throw Error("apiPaths \u5FC5\u987B\u662F\u6570\u7EC4");let J=Z.map((X)=>this.assertApiPathname(X,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),Y=m0.roleApis($);if(J.length===0){await this.redis.del(Y);return}let Q=Array.from(new Set(J));if(await this.redis.del(Y),Q.length>0)await this.redis.sadd(Y,Q)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions()}async getApis(){try{return await this.redis.getObject(m0.apisAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(m0.menusAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(m0.roleApis($))||[]}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let J=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(m0.roleApis($),J)}catch(J){return I.error({err:J,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(m0.roleApis($))>0)return I.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var CW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new T({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new T({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new aJ({db:$.db,redis:$.redis})}},zX=CW;var SW={name:"cipher",enable:!0,deps:[],handler:()=>{return d$}},FX=SW;var wW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},KX=wW;function gZ($,Z=["id","pid","sort"]){if($===null||$===void 0)return $;let J=BigInt(Number.MAX_SAFE_INTEGER),Y=BigInt(Number.MIN_SAFE_INTEGER),Q=(X)=>{let G={};for(let[U,V]of Object.entries(X))G[U]=V;for(let[U,V]of Object.entries(G)){if(V===void 0||V===null)continue;if(!(Z.includes(U)||U.endsWith("Id")||U.endsWith("_id")||U.endsWith("At")||U.endsWith("_at")))continue;let z=null;if(typeof V==="bigint")z=V;else if(typeof V==="string"){if(!/^-?\d+$/.test(V))continue;try{z=BigInt(V)}catch{continue}}else continue;if(z>J||z<Y)throw Error(`BIGINT \u5B57\u6BB5\u8D85\u51FA JS \u5B89\u5168\u6574\u6570\u8303\u56F4\uFF0C\u8BF7\u6539\u7528 bigint/string \u6216\u8C03\u6574\u5B57\u6BB5\u8BBE\u8BA1 (field: ${U}, value: ${String(V)})`);G[U]=Number(z)}return G};if(Array.isArray($))return $.map((X)=>Q(X));if(typeof $==="object")return Q($);return $}function eJ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function EW($){return Array.isArray($)}function E$($,Z={}){let{pickKeys:J,omitKeys:Y,keepValues:Q,excludeValues:X,keepMap:G}=Z,U=(V)=>{let A={},z=Object.keys(V);if(J&&J.length)z=z.filter((M)=>J.includes(M));if(Y&&Y.length)z=z.filter((M)=>!Y.includes(M));for(let M of z){let j=V[M];if(G&&M in G){if(Object.is(G[M],j)){A[M]=j;continue}}if(Q&&Q.length&&!Q.includes(j))continue;if(X&&X.length&&X.includes(j))continue;A[M]=j}return A};if(EW($))return $.map((V)=>eJ(V)?U(V):V).filter((V)=>{if(eJ(V))return Object.keys(V).length>0;return!0});if(eJ($))return U($);return $}u0();u0();class Q0{static SAFE_IDENTIFIER_RE=/^[a-zA-Z_][a-zA-Z0-9_]*$/;static assertNonEmptyString($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (value: ${String($)})`);if(!$.trim())throw Error(`${Z} \u4E0D\u80FD\u4E3A\u7A7A`)}static assertNoUndefinedParam($,Z){if($===void 0)throw Error(`${Z} \u4E0D\u80FD\u4E3A undefined`)}static startsWithQuote($){let Z=$.trim();return Z.startsWith("`")||Z.startsWith('"')}static isQuotedIdentPaired($){let Z=$.trim();if(Z.length<2)return!1;let J=Z[0],Y=Z[Z.length-1];if(J==="`"&&Y==="`")return!0;if(J==='"'&&Y==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(Q0.startsWithQuote($)&&!Q0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(Q0.isQuotedIdentPaired($))return;if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u522B\u540D: ${$}`)}static assertNoExprField($){if(typeof $!=="string")return;let Z=$.trim();if(!Z)return;if(Z.includes("(")||Z.includes(")"))throw Error(`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${Z})`)}static assertNoUndefinedInRecord($,Z){for(let[J,Y]of Object.entries($))if(Y===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${J})`)}static assertBatchInsertRowsConsistent($,Z){if(!Array.isArray($))throw Error("\u6279\u91CF\u63D2\u5165 rows \u5FC5\u987B\u662F\u6570\u7EC4");if($.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A (table: ${Z.table})`);let J=$[0];if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let Y=Object.keys(J);if(Y.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let Q=new Set(Y);for(let X=0;X<$.length;X++){let G=$[X];if(!G||typeof G!=="object"||Array.isArray(G))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: ${X})`);let U=Object.keys(G);if(U.length!==Y.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X})`);for(let V of U)if(!Q.has(V))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${X}, extraField: ${V})`);for(let V of Y){if(!(V in G))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${X}, field: ${V})`);Q0.assertNoUndefinedParam(G[V],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${X}, field: ${V})`)}}return Y}}class h{static parseTableRef($){if(typeof $!=="string")throw Error(`tableRef \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (tableRef: ${String($)})`);let Z=$.trim();if(!Z)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");let J=Z.split(/\s+/).filter((U)=>U.length>0);if(J.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(J.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528\u6700\u7B80\u5F62\u5F0F\uFF1Atable \u6216 table alias \u6216 schema.table \u6216 schema.table alias (tableRef: ${Z})`);let Y=J[0];if(typeof Y!=="string"||Y.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let Q=null;if(J.length===2){let U=J[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);Q=U}let X=Y.split(".");if(X.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(X.length===2){let U=X[0],V=X[1];if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Aschema \u4E3A\u7A7A (tableRef: ${Z})`);if(typeof V!=="string"||V.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:U,table:V,alias:Q}}let G=X[0];if(typeof G!=="string"||G.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:G,alias:Q}}static normalizeTableRef($){let Z=h.parseTableRef($),J=Z.schema?c(Z.schema):null,Y=c(Z.table),Q=J?`${J}.${Y}`:Y;if(Z.alias)Q=`${Q} ${Z.alias}`;return Q}static getJoinMainQualifier($){let Z=h.parseTableRef($);if(Z.alias)return Z.alias;return c(Z.table)}static async fieldsToSnake($,Z,J){if(!Z||!Array.isArray(Z))return["*"];let Y=h.validateAndClassifyFields(Z);if(Y.type==="all")return["*"];if(Y.type==="include")return Y.fields.map((Q)=>{return h.processJoinField(Q)});if(Y.type==="exclude"){let Q=await J($),X=Y.fields.map((U)=>c(U)),G=Q.filter((U)=>!X.includes(U));if(G.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${X.join(", ")}`);return G}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((Y)=>Y==="*"))throw Error("fields \u4E0D\u652F\u6301 * \u661F\u53F7\uFF0C\u8BF7\u4F7F\u7528\u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\u53C2\u6570\u8868\u793A\u67E5\u8BE2\u6240\u6709\u5B57\u6BB5");if($.some((Y)=>!Y||typeof Y!=="string"||Y.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let Y of $){let Q=Y.startsWith("!")?Y.substring(1):Y;Q0.assertNoExprField(Q)}let Z=$.filter((Y)=>!Y.startsWith("!")),J=$.filter((Y)=>Y.startsWith("!"));if(Z.length>0&&J.length===0)return{type:"include",fields:Z};if(J.length>0&&Z.length===0)return{type:"exclude",fields:J.map((Q)=>Q.substring(1))};throw Error(`fields \u4E0D\u80FD\u540C\u65F6\u5305\u542B\u666E\u901A\u5B57\u6BB5\u548C\u6392\u9664\u5B57\u6BB5\uFF08! \u5F00\u5934\uFF09\u3002\u53EA\u80FD\u4F7F\u7528\u4EE5\u4E0B3\u79CD\u65B9\u5F0F\u4E4B\u4E00\uFF1A
|
|
2
|
+
var kH=Object.create;var{getPrototypeOf:vH,defineProperty:ZX,getOwnPropertyNames:xH}=Object;var fH=Object.prototype.hasOwnProperty;var gH=($,Z,J)=>{J=$!=null?kH(vH($)):{};let Q=Z||!$||!$.__esModule?ZX(J,"default",{value:$,enumerable:!0}):J;for(let X of xH($))if(!fH.call(Q,X))ZX(Q,X,{get:()=>$[X],enumerable:!0});return Q};var i=($,Z)=>()=>(Z||$((Z={exports:{}}).exports,Z),Z.exports);var _$=($,Z)=>()=>($&&(Z=$($=0)),Z);var I$=import.meta.require;function BJ($,Z="dateTime"){let J=$.getFullYear(),Q=$.getMonth()+1,X=$.getDate(),G=$.getHours(),Y=$.getMinutes(),V=$.getSeconds(),U=Q<10?`0${Q}`:String(Q),O=X<10?`0${X}`:String(X),_=G<10?`0${G}`:String(G),A=Y<10?`0${Y}`:String(Y),L=V<10?`0${V}`:String(V);if(Z==="date")return`${J}-${U}-${O}`;if(Z==="time")return`${_}:${A}:${L}`;return`${J}-${U}-${O} ${_}:${A}:${L}`}function m($){if(typeof $!=="object"||$===null)return!1;let Z=Object.getPrototypeOf($);return Z===Object.prototype||Z===null}function PJ($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function IZ($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function HZ($){return Array.isArray($)||IZ($)}function qZ($){if(PJ($))return!0;if(Array.isArray($)){for(let Z of $)if(!qZ(Z))return!1;return!0}if(IZ($)){for(let Z of Object.values($)){if(Z===void 0)continue;if(!qZ(Z))return!1}return!0}return!1}function jZ($){return typeof $==="number"&&Number.isFinite($)}function LZ($){return typeof $==="number"&&Number.isFinite($)&&Number.isInteger($)}function X$($){if($===null)return"null";if($===void 0)return"undefined";if(typeof $==="string"){let J=$.length>80?`${$.slice(0,80)}...`:$;return JSON.stringify(J)}if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return String($);if(typeof $==="function")return"[Function]";try{let J=JSON.stringify($);if(typeof J==="string")return J.length>120?`${J.slice(0,120)}...`:J}catch{}let Z=String($);return Z.length>120?`${Z.slice(0,120)}...`:Z}function CJ($){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 hH($){let Z=String($||"").trim();if(Z.length<2)return!1;if(!Z.startsWith("/"))return!1;let J=Z.lastIndexOf("/");if(J<=0)return!1;let Q=Z.slice(J+1);if(Q!==""&&!/^[gimsuy]+$/.test(Q))return!1;return!0}function b$($){let Z=String($||"").trim();return hH(Z)||Z.startsWith("@")}function k$($){let Z=String($||"").trim();if(Z.length===0)return!1;return!Z.startsWith("/")&&Z.includes("|")}function wJ($){return String($||"").trim().startsWith("@")}function c$($,Z,J,Q){if(typeof $!=="number")return Z;if(!Number.isFinite($))return Z;let X=Math.floor($);if(X<J)return Z;if(X>Q)return Q;return X}function JX($,Z){if(typeof Z!=="function")return;if(!m($))return;let J=$;for(let Q of Object.keys(J))Z(J[Q],Q)}function bH($){let Z=String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim();if(Z.length===0)return[];return Z.split(/\s+/).filter((J)=>J.length>0)}function cH($){if($.length===0)return $;return $.charAt(0).toUpperCase()+$.slice(1)}function L$($){let Z=bH($);if(Z.length===0)return"";let J=Z[0];if(!J)return"";let Q=J.toLowerCase(),X=Z.slice(1).map((G)=>cH(G.toLowerCase()));return[Q].concat(X).join("")}function pH($){return String($).replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim()}function c($){let Z=pH($);if(Z.length===0)return"";return Z.split(/\s+/).filter((J)=>J.length>0).map((J)=>J.toLowerCase()).join("_")}function u($,Z){if(!m($))return{};let J=new Set(Array.isArray(Z)?Z:[]),Q={};for(let[X,G]of Object.entries($)){if(J.has(X))continue;Q[X]=G}return Q}function XX($,Z){let J={};if(!Array.isArray($)||typeof Z!=="function")return J;for(let Q of $){let X=Z(Q);if(typeof X!=="string"||X==="")continue;J[X]=Q}return J}function GX(){let $=Date.now().toString(36),Z="";while(Z.length<10)Z=Z+Math.random().toString(36).slice(2);return $+Z.slice(0,10)}var SJ=($)=>{if(!$||!m($))return $;let Z={};for(let[J,Q]of Object.entries($)){let X=L$(J);Z[X]=Q}return Z},QX=($)=>{if(!$||!m($))return $;let Z={};for(let[J,Q]of Object.entries($)){let X=c(J);Z[X]=Q}return Z},EJ=($)=>{if(!$||!Array.isArray($))return $;return $.map((Z)=>SJ(Z))};var u0=()=>{};function NJ($){let Z=[];for(let X of $.builtinPatterns){let G=String(X).trim();if(G.length>0)Z.push(G.toLowerCase())}if(Array.isArray($.userPatterns))for(let X of $.userPatterns){let G=String(X).trim();if(G.length>0)Z.push(G.toLowerCase())}let J=new Set,Q=[];for(let X of Z){if(!X.includes("*")){J.add(X);continue}let G=X.replace(/\*+/g,"").trim();if(!G)continue;Q.push(G)}return{exactSet:J,contains:Q}}function kJ($,Z){let J=String($).toLowerCase();if(Z.exactSet.has(J))return!0;for(let Q of Z.contains)if(J.includes(Q))return!0;return!1}function BZ($,Z){if($.length<=Z)return $;return $.slice(0,Z)}function YX($,Z){let J={name:$.name||"Error",message:BZ($.message||"",Z.maxStringLen)};if(typeof $.stack==="string")J.stack=BZ($.stack,Z.maxStringLen);return J}function uH($,Z,J){if(typeof $==="string")return $;if($ instanceof Error)try{return JSON.stringify(YX($,Z))}catch{return`${$.name||"Error"}: ${$.message||""}`}if($&&typeof $==="object"){if(J.has($))return"[Circular]"}try{let Q=J;return JSON.stringify($,(G,Y)=>{if(G&&kJ(G,Z.sensitiveKeyMatcher))return"[MASKED]";if(Y&&typeof Y==="object"){if(Q.has(Y))return"[Circular]";Q.add(Y)}return Y})}catch{try{return String($)}catch{return"[Unserializable]"}}}function TJ($,Z,J){let Q=uH($,Z,J);return BZ(Q,Z.maxStringLen)}function DJ($,Z,J,Q,X){if($===null||$===void 0)return $;if(typeof $==="string")return BZ($,Z.maxStringLen);if(typeof $==="number"||typeof $==="boolean"||typeof $==="bigint")return $;if($ instanceof Error)return YX($,Z);let G=Array.isArray($),Y=m($);if(!G&&!Y)return TJ($,Z,X);if(X.has($))return"[Circular]";if(Q>=Z.sanitizeDepth)return TJ($,Z,X);if(J.nodes>=Z.sanitizeNodes)return TJ($,Z,X);if(X.add($),J.nodes=J.nodes+1,G){let A=$,L=[],C=A.length>Z.maxArrayItems?Z.maxArrayItems:A.length;for(let w=0;w<C;w++)L[w]=DJ(A[w],Z,J,Q+1,X);return L}let V=$,U={},O=Object.entries(V),_=O.length>Z.sanitizeObjectKeys?Z.sanitizeObjectKeys:O.length;for(let A=0;A<_;A++){let L=O[A];if(!L)continue;let C=L[0],w=L[1];if(kJ(C,Z.sensitiveKeyMatcher)){U[C]="[MASKED]";continue}U[C]=DJ(w,Z,J,Q+1,X)}return U}function vJ($,Z){let J=new WeakSet,Q={nodes:0},X={};for(let[G,Y]of Object.entries($)){if(kJ(G,Z.sensitiveKeyMatcher)){X[G]="[MASKED]";continue}X[G]=DJ(Y,Z,Q,0,J)}return X}var HX=_$(()=>{u0()});import{AsyncLocalStorage as mH}from"async_hooks";function WX($,Z){return xJ.run($,Z)}function UX(){let $=xJ.getStore();if(!$)return null;return $}function VX($,Z,J,Q){let X=xJ.getStore();if(!X)return;X.userId=$===void 0?null:$,X.roleCode=Z===void 0?null:Z,X.nickname=J===void 0?null:J,X.roleType=Q===void 0?null:Q}var xJ;var PZ=_$(()=>{xJ=new mH});import{createWriteStream as dH,existsSync as nH,mkdirSync as sH}from"fs";import{stat as oH}from"fs/promises";import{hostname as lH}from"os";import{isAbsolute as rH,join as iH,resolve as tH}from"path";function _X($){if(!$)return v$;if($.truncate!==!1)return v$;return{maxStringLen:200000,maxArrayItems:5000,sanitizeDepth:v$.sanitizeDepth,sanitizeNodes:v$.sanitizeNodes,sanitizeObjectKeys:v$.sanitizeObjectKeys,sensitiveKeyMatcher:v$.sensitiveKeyMatcher}}function SZ($){try{process.stderr.write(`${$}
|
|
3
|
+
`)}catch{}}function $1($,Z){let J=[],Q=0;while($.length>0){let X=$[0],G=Buffer.byteLength(X);if(J.length>0&&Q+G>Z)break;J.push(X),Q=Q+G,$.shift()}return{chunk:J.join(""),bytes:Q}}class gJ{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=$1(this.pending,this.maxBatchBytes).chunk,J=Buffer.byteLength(Z);if(this.pendingBytes=this.pendingBytes-J,!await this.writeChunk(Z,J)){this.pending=[],this.pendingBytes=0;break}}}finally{if(this.flushing=!1,this.pending.length>0)this.scheduleFlush()}}}function Z1($){let Z=()=>{return $==="stderr"?process.stderr:process.stdout},J=new gJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Q)=>{try{let X=Z();if(!X.write(Q))await new Promise((Y)=>{X.once("drain",()=>Y())});return!0}catch(X){return SZ(`[Logger] stream sink error: ${X?.message||X}`),!1}}});return{enqueue(Q){J.enqueue(Q)},async flushNow(){await J.flushNow()},async shutdown(){await J.shutdown()}}}class fJ{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 gJ({maxBufferBytes:10485760,flushDelayMs:10,maxBatchBytes:65536,writeChunk:async(Z,J)=>{if(this.disabled)return!1;try{if(await this.ensureStreamReady(J),!this.stream)return!1;if(!this.stream.write(Z))await new Promise((X)=>{let G=this.stream;if(!G){X();return}G.once("drain",()=>X())});return this.streamSizeBytes=this.streamSizeBytes+J,!0}catch(Q){return SZ(`[Logger] file sink flush error (${this.prefix}): ${Q?.message||Q}`),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=dH($,{flags:"a"}),this.stream.on("error",(Z)=>{SZ(`[Logger] file sink error (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.closeStream()})}catch(Z){SZ(`[Logger] createWriteStream failed (${this.prefix}): ${Z?.message||Z}`),this.disabled=!0,this.stream=null}}getFilePath($,Z){let J=Z>0?`.${Z}`:"",Q=`${this.prefix}.${$}${J}.log`;return iH(KX(),Q)}async ensureStreamReady($){let Z=BJ(new Date,"date");if(this.stream&&this.streamDate&&Z!==this.streamDate)await this.closeStream(),this.streamDate="",this.streamIndex=0,this.streamSizeBytes=0;if(!this.stream){let J=this.getFilePath(Z,0),Q=0;try{let X=await oH(J);Q=typeof X.size==="number"?X.size:0}catch{Q=0}if(this.streamDate=Z,this.streamIndex=0,this.streamSizeBytes=Q,this.openStream(J),!this.stream)return}if(this.stream&&this.maxFileBytes>0&&this.streamSizeBytes+$>this.maxFileBytes){await this.closeStream(),this.streamIndex=this.streamIndex+1;let J=this.getFilePath(Z,this.streamIndex);if(this.streamDate=Z,this.streamSizeBytes=0,this.openStream(J),!this.stream)return}}}async function J1(){if(G$)return;let $=[];if(H$)$.push({flush:()=>H$?H$.flushNow():Promise.resolve()});if(W$)$.push({flush:()=>W$?W$.flushNow():Promise.resolve()});if(U$)$.push({flush:()=>U$?U$.flushNow():Promise.resolve()});for(let Z of $)try{await Z.flush()}catch{}}async function FX(){if(G$)return;let $=B$,Z=P$,J=H$,Q=W$,X=U$,G=[];if(J)G.push({shutdown:()=>J.shutdown()});if(Q)G.push({shutdown:()=>Q.shutdown()});if(X)G.push({shutdown:()=>X.shutdown()});for(let Y of G)try{await Y.shutdown()}catch{}if(H$===J)H$=null;if(W$===Q)W$=null;if(U$===X)U$=null;if(B$===$)B$=null;if(P$===Z)P$=null}function KX(){let $=n0.dir||"./logs";if(rH($))return $;return tH(aH,$)}function Q1(){let $=KX();try{if(!nH($))sH($,{recursive:!0})}catch(Z){throw Error(`\u521B\u5EFA logs \u76EE\u5F55\u5931\u8D25: ${$}. ${Z?.message||Z}`)}}function X1($){FX(),n0=Object.assign({debug:0,dir:"./logs",console:1,maxSize:20},$);{let Z=n0.maxSize,J=typeof Z==="number"&&Number.isFinite(Z)?Z:20;if(J<10)J=10;if(J>100)J=100;n0.maxSize=J}B$=null,P$=null,H$=null,W$=null,U$=null,v$={maxStringLen:c$(n0.maxStringLen,200,20,200000),maxArrayItems:c$(n0.maxArrayItems,500,10,5000),sanitizeDepth:c$(n0.sanitizeDepth,5,1,10),sanitizeNodes:c$(n0.sanitizeNodes,5000,50,20000),sanitizeObjectKeys:c$(n0.sanitizeObjectKeys,500,10,5000),sensitiveKeyMatcher:NJ({builtinPatterns:OX,userPatterns:n0.excludeFields})}}function G1($){G$=$}function WZ($){if(G$)return G$;if($==="app"){if(B$)return B$}else if(P$)return P$;Q1();let Z=typeof n0.maxSize==="number"?n0.maxSize:20,J=Math.floor(Z*1024*1024);if($==="app"){if(!H$)H$=new fJ({prefix:"app",maxFileBytes:J});if(n0.console===1&&!U$)U$=Z1("stdout");return B$=AX({fileSink:H$,consoleSink:n0.console===1?U$:null}),B$}if(!W$)W$=new fJ({prefix:"error",maxFileBytes:J});return P$=AX({fileSink:W$,consoleSink:null}),P$}function Y1($,Z){return{level:$,time:Z,timeFormat:BJ(new Date(Z)),pid:process.pid,hostname:eH}}function H1($,Z){if(Z&&m(Z)){let J={};J.level=$.level,J.time=$.time,J.timeFormat=$.timeFormat,J.pid=$.pid,J.hostname=$.hostname;for(let Q of Object.keys(Z)){if(Q==="level")continue;if(Q==="time")continue;if(Q==="timeFormat")continue;if(Q==="pid")continue;if(Q==="hostname")continue;J[Q]=Z[Q]}if(Z.msg!==void 0)J.msg=Z.msg;else if(J.msg===void 0)J.msg="";return`${MX(J)}
|
|
4
|
+
`}if($.msg===void 0)$.msg="";return`${MX($)}
|
|
5
|
+
`}function MX($){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 AX($){let{fileSink:Z,consoleSink:J}=$,Q=(X,G)=>{if(X==="debug"&&n0.debug!==1)return;let Y=Date.now(),V=Y1(X,Y),U=m(G)?G:{value:G},O=null;if(U&&typeof U==="object"){if(O=p$.get(U)??null,O)p$.delete(U)}let _=_X(O),A=vJ(U,_),L=H1(V,A);if(Z.enqueue(L),J){if(!O||O.console!==!1)J.enqueue(L)}};return{info(X){Q("info",X)},warn(X){Q("warn",X)},error(X){Q("error",X)},debug(X){Q("debug",X)}}}function W1(){let $=UX();if(!$)return null;let Z=Date.now()-$.now,J={requestId:$.requestId,method:$.method,route:$.route,ip:$.ip,now:$.now,durationSinceNowMs:Z};return J.userId=$.userId,J.roleCode=$.roleCode,J.nickname=$.nickname,J.roleType=$.roleType,J}function U1($,Z){let J={};for(let X of Object.keys($))J[X]=$[X];let Q=["requestId","method","route","ip","now","durationSinceNowMs","userId","roleCode","nickname","roleType"];for(let X of Q)if(J[X]===void 0)J[X]=Z[X];return J}function CZ($){if(m($))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 wZ($){let Z=W1();if(!Z)return $;return U1($,Z)}class zX{maybeSanitizeForMock($,Z){if(!G$)return $;let J=_X(Z?Z:null);return vJ($,J)}info($,Z){let J=wZ(CZ($));if(!G$&&Z&&m(J))p$.set(J,Z);let Q=this.maybeSanitizeForMock(J,Z);WZ("app").info(Q)}warn($,Z){let J=wZ(CZ($));if(!G$&&Z&&m(J))p$.set(J,Z);let Q=this.maybeSanitizeForMock(J,Z);WZ("app").warn(Q)}error($,Z){let J=wZ(CZ($));if(!G$&&Z&&m(J))p$.set(J,Z);let Q=this.maybeSanitizeForMock(J,Z);if(WZ("app").error(Q),G$)return;WZ("error").error(Q)}debug($,Z){if(n0.debug!==1)return;let J=wZ(CZ($));if(!G$&&Z&&m(J))p$.set(J,Z);let Q=this.maybeSanitizeForMock(J,Z);WZ("app").debug(Q)}async flush(){await J1()}configure($){X1($)}setMock($){G1($)}async shutdown(){await FX()}}var aH,OX,v$,p$,eH,B$=null,P$=null,G$=null,H$=null,W$=null,U$=null,n0,I;var $0=_$(()=>{HX();u0();PZ();aH=process.cwd(),OX=["*password*","pass","pwd","*token*","access_token","refresh_token","accessToken","refreshToken","authorization","cookie","set-cookie","*secret*","apiKey","api_key","privateKey","private_key"],v$={maxStringLen:200,maxArrayItems:500,sanitizeDepth:5,sanitizeNodes:5000,sanitizeObjectKeys:500,sensitiveKeyMatcher:NJ({builtinPatterns:OX,userPatterns:[]})},p$=new WeakMap;eH=(()=>{try{return lH()}catch{return"unknown"}})(),n0={debug:0,dir:"./logs",console:1,maxSize:20};I=new zX});import{isAbsolute as V1}from"path";import{pathToFileURL as M1}from"url";function A1($){return/^[a-zA-Z]:[\\/]/.test($)}function O1($){if(V1($)||A1($))return M1($).href;return $}async function C$($,Z){try{let X=($.endsWith(".json")?await import(O1($),{with:{type:"json"}}):await import($))?.default;if(X===null||X===void 0)return Z;let G=CJ(Z),Y=CJ(X);if(G!==Y)return I.warn({file:$,msg:"importDefault \u5BFC\u5165\u7C7B\u578B\u4E0E\u9ED8\u8BA4\u503C\u4E0D\u4E00\u81F4\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C",expectedType:G,actualType:Y}),Z;return X}catch(J){return I.warn({err:J,file:$,msg:"importDefault \u5BFC\u5165\u5931\u8D25\uFF0C\u5DF2\u56DE\u9000\u5230\u9ED8\u8BA4\u503C"}),Z}}var EZ=_$(()=>{$0();u0()});function VZ($=""){if(!$)return $;return $.replace(/\\/g,"/").replace(I1,(Z)=>Z.toUpperCase())}function C1(){if(typeof process<"u"&&typeof process.cwd==="function")return process.cwd().replace(/\\/g,"/");return"/"}function bJ($,Z){let J="",Q=0,X=-1,G=0,Y=null;for(let V=0;V<=$.length;++V){if(V<$.length)Y=$[V];else if(Y==="/")break;else Y="/";if(Y==="/"){if(X===V-1||G===1);else if(G===2){if(J.length<2||Q!==2||J[J.length-1]!=="."||J[J.length-2]!=="."){if(J.length>2){let U=J.lastIndexOf("/");if(U===-1)J="",Q=0;else J=J.slice(0,U),Q=J.length-1-J.lastIndexOf("/");X=V,G=0;continue}else if(J.length>0){J="",Q=0,X=V,G=0;continue}}if(Z)J+=J.length>0?"/..":"..",Q=2}else{if(J.length>0)J+=`/${$.slice(X+1,V)}`;else J=$.slice(X+1,V);Q=V-X-1}X=V,G=0}else if(Y==="."&&G!==-1)++G;else G=-1}return J}var I1,j1,L1,wX,CX,B1,P1,x$=function($){if($.length===0)return".";$=VZ($);let Z=$.match(j1),J=m$($),Q=$[$.length-1]==="/";if($=bJ($,!J),$.length===0){if(J)return"/";return Q?"./":"."}if(Q)$+="/";if(wX.test($))$+="/";if(Z){if(!J)return`//./${$}`;return`//${$}`}return J&&!m$($)?`/${$}`:$},o=function(...$){let Z="";for(let J of $){if(!J)continue;if(Z.length>0){let Q=Z[Z.length-1]==="/",X=J[0]==="/";if(Q&&X)Z+=J.slice(1);else Z+=Q||X?J:`/${J}`}else Z+=J}return x$(Z)},UZ=function(...$){$=$.map((Q)=>VZ(Q));let Z="",J=!1;for(let Q=$.length-1;Q>=-1&&!J;Q--){let X=Q>=0?$[Q]:C1();if(!X||X.length===0)continue;Z=`${X}/${Z}`,J=m$(X)}if(Z=bJ(Z,!J),J&&!m$(Z))return`/${Z}`;return Z.length>0?Z:"."},m$=function($){return L1.test($)},SX=function($){if($==="..")return"";let Z=B1.exec(VZ($));return Z&&Z[1]||""},cJ=function($,Z){let J=UZ($).replace(CX,"$1").split("/"),Q=UZ(Z).replace(CX,"$1").split("/");if(Q[0][1]===":"&&J[0][1]===":"&&J[0]!==Q[0])return Q.join("/");let X=[...J];for(let G of X){if(Q[0]!==G)break;J.shift(),Q.shift()}return[...J.map(()=>".."),...Q].join("/")},TZ=function($){let Z=VZ($).replace(/\/$/,"").split("/").slice(0,-1);if(Z.length===1&&wX.test(Z[0]))Z[0]+="/";return Z.join("/")||(m$($)?"/":".")},EX=function($,Z){let J=VZ($).split("/"),Q="";for(let X=J.length-1;X>=0;X--){let G=J[X];if(G){Q=G;break}}return Z&&Q.endsWith(Z)?Q.slice(0,-Z.length):Q},MZ=function($){let Z=P1.exec($)?.[0]?.replace(/\\/g,"/")||"",J=EX($),Q=SX(J);return{root:Z,dir:TZ($),base:J,ext:Q,name:J.slice(0,J.length-Q.length)}};var TX=_$(()=>{I1=/^[A-Za-z]:\//;j1=/^[/\\]{2}/,L1=/^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^[A-Za-z]:[/\\]/,wX=/^[A-Za-z]:$/,CX=/^\/([A-Za-z]:)?$/,B1=/.(\.[^./]+|\.)$/,P1=/^[/\\]|^[a-zA-Z]:[/\\]/});var w$=_$(()=>{TX()});import{statSync as w1}from"fs";var DZ=($,Z)=>{if(Z.isDirectory())return!0;if(!Z.isSymbolicLink())return!1;try{return w1(o($,Z.name)).isDirectory()}catch{return!1}};var pJ=_$(()=>{w$()});import{existsSync as d$}from"fs";import{readdir as S1}from"fs/promises";function E1($){if(!$||typeof $!=="object")return null;let Z=$,J=Z.title;if(typeof J!=="string"||!J)return null;let Q=Z.order,X=typeof Q==="number"&&Number.isFinite(Q)&&Number.isInteger(Q)&&Q>=0?Q:void 0;if(X===void 0)return{title:J};return{title:J,order:X}}async function DX($,Z,J=""){if(!d$($))return[];let Q=[],X=await S1($,{withFileTypes:!0});for(let G of X){if(!DZ($,G)||G.name==="components")continue;let Y=o($,G.name),V=o(Y,"meta.json"),U=o(Y,"index.vue"),O=null;if(!d$(V))continue;if(!d$(U)){I.warn({path:Y,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 _=await C$(V,{});if(O=E1(_),!O?.title){I.warn({path:V,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(!O?.title)continue;let A=String(G.name).replace(/_\d+$/,""),L;if(A==="index")L=J;else L=J?`${J}/${A}`:`/${A}`;let C=Z?L?`${Z}${L}`:Z:L||"/",w={name:O.title,path:C,sort:O.order??999999},S=await DX(Y,Z,L);if(S.length>0)w.children=S;Q.push(w)}return Q.sort((G,Y)=>(G.sort??999999)-(Y.sort??999999)),Q}function NX($){let Z=$.split("/").filter((J)=>Boolean(J));if(Z.length<=1)return"";return`/${Z.slice(0,-1).join("/")}`}async function kX($){let Z=[];for(let Q of $){let X=o(Q.rootDir,"adminViews"),G=o(Q.rootDir,"views","admin"),Y=d$(X)?X:d$(G)?G:null;if(!Y)continue;try{let V=`/${Q.source}/${Q.name}`,U=await DX(Y,V);if(U.length>0)for(let O of U)Z.push(O)}catch(V){I.warn({err:V,addon:Q.name,addonSource:Q.source,dir:Y,msg:"\u626B\u63CF addon views \u76EE\u5F55\u5931\u8D25"})}}let J=o(process.cwd(),"menus.json");if(d$(J)){let Q=await C$(J,[]);if(Array.isArray(Q)&&Q.length>0)for(let X of Q)Z.push(X)}return Z}var uJ=_$(()=>{w$();$0();EZ();pJ()});var t$=i((b7,gG)=>{var fG={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 i$ extends Error{constructor($,Z,J){super(Z);if(Error.captureStackTrace(this,this.constructor),this.code=$,J)for(let Q in J)this[Q]=J[Q]}}i$.codes=fG;i$.wrap=function($,Z,J){if($ instanceof i$)return $;return new i$(Z,J,{originalError:$})};gG.exports={TokenError:i$,TOKEN_ERROR_CODES:fG}});var YQ=i((c7,yG)=>{var{TokenError:M$}=t$();function sW({complete:$,checkTyp:Z},J){if(J instanceof Buffer)J=J.toString("utf-8");else if(typeof J!=="string")throw new M$(M$.codes.invalidType,"The token must be a string or a buffer.");let Q=J.indexOf("."),X=J.lastIndexOf(".");if(Q===-1||Q>=X)throw new M$(M$.codes.malformed,"The token is malformed.");let G=!1;try{let Y=JSON.parse(Buffer.from(J.slice(0,Q),"base64").toString("utf-8"));if(Z&&Y.typ!==Z)throw new M$(M$.codes.invalidType,`The type must be "${Z}".`,{header:Y});G=!0;let V=Buffer.from(J.slice(Q+1,X),"base64").toString("utf-8");if(V=JSON.parse(V),!V||typeof V!=="object")throw new M$(M$.codes.invalidPayload,"The payload must be an object",{payload:V});return $?{header:Y,payload:V,signature:J.slice(X+1),input:J.slice(0,X)}:V}catch(Y){throw M$.wrap(Y,M$.codes.malformed,`The token ${G?"payload":"header"} is not a valid base64url serialized JSON.`)}}yG.exports=function(Z={}){let J=Z.complete||!1,Q=Z.checkTyp;return sW.bind(null,{complete:J,checkTyp:Q})}});var bG=i((p7,hG)=>{function A$($){if(typeof $!=="function")throw Error("obliterator/iterator: expecting a function!");this.next=$}if(typeof Symbol<"u")A$.prototype[Symbol.iterator]=function(){return this};A$.of=function(){var $=arguments,Z=$.length,J=0;return new A$(function(){if(J>=Z)return{done:!0};return{done:!1,value:$[J++]}})};A$.empty=function(){var $=new A$(function(){return{done:!0}});return $};A$.fromSequence=function($){var Z=0,J=$.length;return new A$(function(){if(Z>=J)return{done:!0};return{done:!1,value:$[Z++]}})};A$.is=function($){if($ instanceof A$)return!0;return typeof $==="object"&&$!==null&&typeof $.next==="function"};hG.exports=A$});var cG=i((oW)=>{oW.ARRAY_BUFFER_SUPPORT=typeof ArrayBuffer<"u";oW.SYMBOL_SUPPORT=typeof Symbol<"u"});var HQ=i((m7,uG)=>{var pG=cG(),iW=pG.ARRAY_BUFFER_SUPPORT,tW=pG.SYMBOL_SUPPORT;uG.exports=function(Z,J){var Q,X,G,Y,V;if(!Z)throw Error("obliterator/forEach: invalid iterable.");if(typeof J!=="function")throw Error("obliterator/forEach: expecting a callback.");if(Array.isArray(Z)||iW&&ArrayBuffer.isView(Z)||typeof Z==="string"||Z.toString()==="[object Arguments]"){for(G=0,Y=Z.length;G<Y;G++)J(Z[G],G);return}if(typeof Z.forEach==="function"){Z.forEach(J);return}if(tW&&Symbol.iterator in Z&&typeof Z.next!=="function")Z=Z[Symbol.iterator]();if(typeof Z.next==="function"){Q=Z,G=0;while(V=Q.next(),V.done!==!0)J(V.value,G),G++;return}for(X in Z)if(Z.hasOwnProperty(X))J(Z[X],X);return}});var WQ=i((G9)=>{var aW=Math.pow(2,8)-1,eW=Math.pow(2,16)-1,$9=Math.pow(2,32)-1,Z9=Math.pow(2,7)-1,J9=Math.pow(2,15)-1,Q9=Math.pow(2,31)-1;G9.getPointerArray=function($){var Z=$-1;if(Z<=aW)return Uint8Array;if(Z<=eW)return Uint16Array;if(Z<=$9)return Uint32Array;throw Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")};G9.getSignedPointerArray=function($){var Z=$-1;if(Z<=Z9)return Int8Array;if(Z<=J9)return Int16Array;if(Z<=Q9)return Int32Array;return Float64Array};G9.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 X9={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};G9.getMinimalRepresentation=function($,Z){var J=null,Q=0,X,G,Y,V,U;for(V=0,U=$.length;V<U;V++)if(Y=Z?Z($[V]):$[V],G=G9.getNumberType(Y),X=X9[G.name],X>Q)Q=X,J=G;return J};G9.isTypedArray=function($){return typeof ArrayBuffer<"u"&&ArrayBuffer.isView($)};G9.concat=function(){var $=0,Z,J,Q;for(Z=0,Q=arguments.length;Z<Q;Z++)$+=arguments[Z].length;var X=new arguments[0].constructor($);for(Z=0,J=0;Z<Q;Z++)X.set(arguments[Z],J),J+=arguments[Z].length;return X};G9.indices=function($){var Z=G9.getPointerArray($),J=new Z($);for(var Q=0;Q<$;Q++)J[Q]=Q;return J}});var oG=i((_9)=>{var nG=HQ(),sG=WQ();function M9($){return Array.isArray($)||sG.isTypedArray($)}function UQ($){if(typeof $.length==="number")return $.length;if(typeof $.size==="number")return $.size;return}function A9($){var Z=UQ($),J=typeof Z==="number"?Array(Z):[],Q=0;return nG($,function(X){J[Q++]=X}),J}function O9($){var Z=UQ($),J=typeof Z==="number"?sG.getPointerArray(Z):Array,Q=typeof Z==="number"?Array(Z):[],X=typeof Z==="number"?new J(Z):[],G=0;return nG($,function(Y){Q[G]=Y,X[G]=G++}),[Q,X]}_9.isArrayLike=M9;_9.guessLength=UQ;_9.toArray=A9;_9.toArrayWithIndices=O9});var MQ=i((s7,lG)=>{var VQ=bG(),q9=HQ(),I9=WQ(),j9=oG();function d0($,Z,J){if(arguments.length<2)J=$,$=null,Z=null;if(this.capacity=J,typeof this.capacity!=="number"||this.capacity<=0)throw Error("mnemonist/lru-cache: capacity should be positive number.");else if(!isFinite(this.capacity)||Math.floor(this.capacity)!==this.capacity)throw Error("mnemonist/lru-cache: capacity should be a finite positive integer.");var Q=I9.getPointerArray(J);this.forward=new Q(J),this.backward=new Q(J),this.K=typeof $==="function"?new $(J):Array(J),this.V=typeof Z==="function"?new Z(J):Array(J),this.size=0,this.head=0,this.tail=0,this.items={}}d0.prototype.clear=function(){this.size=0,this.head=0,this.tail=0,this.items={}};d0.prototype.splayOnTop=function($){var Z=this.head;if(this.head===$)return this;var J=this.backward[$],Q=this.forward[$];if(this.tail===$)this.tail=J;else this.backward[Q]=J;return this.forward[J]=Q,this.backward[Z]=$,this.head=$,this.forward[$]=Z,this};d0.prototype.set=function($,Z){var J=this.items[$];if(typeof J<"u"){this.splayOnTop(J),this.V[J]=Z;return}if(this.size<this.capacity)J=this.size++;else J=this.tail,this.tail=this.backward[J],delete this.items[this.K[J]];this.items[$]=J,this.K[J]=$,this.V[J]=Z,this.forward[J]=this.head,this.backward[this.head]=J,this.head=J};d0.prototype.setpop=function($,Z){var J=null,Q=null,X=this.items[$];if(typeof X<"u")return this.splayOnTop(X),J=this.V[X],this.V[X]=Z,{evicted:!1,key:$,value:J};if(this.size<this.capacity)X=this.size++;else X=this.tail,this.tail=this.backward[X],J=this.V[X],Q=this.K[X],delete this.items[Q];if(this.items[$]=X,this.K[X]=$,this.V[X]=Z,this.forward[X]=this.head,this.backward[this.head]=X,this.head=X,Q)return{evicted:!0,key:Q,value:J};else return null};d0.prototype.has=function($){return $ in this.items};d0.prototype.get=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.splayOnTop(Z),this.V[Z]};d0.prototype.peek=function($){var Z=this.items[$];if(typeof Z>"u")return;return this.V[Z]};d0.prototype.forEach=function($,Z){Z=arguments.length>1?Z:this;var J=0,Q=this.size,X=this.head,G=this.K,Y=this.V,V=this.forward;while(J<Q)$.call(Z,Y[X],G[X],this),X=V[X],J++};d0.prototype.keys=function(){var $=0,Z=this.size,J=this.head,Q=this.K,X=this.forward;return new VQ(function(){if($>=Z)return{done:!0};var G=Q[J];if($++,$<Z)J=X[J];return{done:!1,value:G}})};d0.prototype.values=function(){var $=0,Z=this.size,J=this.head,Q=this.V,X=this.forward;return new VQ(function(){if($>=Z)return{done:!0};var G=Q[J];if($++,$<Z)J=X[J];return{done:!1,value:G}})};d0.prototype.entries=function(){var $=0,Z=this.size,J=this.head,Q=this.K,X=this.V,G=this.forward;return new VQ(function(){if($>=Z)return{done:!0};var Y=Q[J],V=X[J];if($++,$<Z)J=G[J];return{done:!1,value:[Y,V]}})};if(typeof Symbol<"u")d0.prototype[Symbol.iterator]=d0.prototype.entries;d0.prototype.inspect=function(){var $=new Map,Z=this.entries(),J;while(J=Z.next(),!J.done)$.set(J.value[0],J.value[1]);return Object.defineProperty($,"constructor",{value:d0,enumerable:!1}),$};if(typeof Symbol<"u")d0.prototype[Symbol.for("nodejs.util.inspect.custom")]=d0.prototype.inspect;d0.from=function($,Z,J,Q){if(arguments.length<2){if(Q=j9.guessLength($),typeof Q!=="number")throw Error("mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.")}else if(arguments.length===2)Q=Z,Z=null,J=null;var X=new d0(Z,J,Q);return q9($,function(G,Y){X.set(Y,G)}),X};lG.exports=d0});var OQ=i((rG,AQ)=>{(function($,Z){function J(j,H){if(!j)throw Error(H||"Assertion failed")}function Q(j,H){j.super_=H;var M=function(){};M.prototype=H.prototype,j.prototype=new M,j.prototype.constructor=j}function X(j,H,M){if(X.isBN(j))return j;if(this.negative=0,this.words=null,this.length=0,this.red=null,j!==null){if(H==="le"||H==="be")M=H,H=10;this._init(j||0,H||10,M||"be")}}if(typeof $==="object")$.exports=X;else Z.BN=X;X.BN=X,X.wordSize=26;var G;try{if(typeof window<"u"&&typeof window.Buffer<"u")G=window.Buffer;else G=I$("buffer").Buffer}catch(j){}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,M){if(H.cmp(M)>0)return H;return M},X.min=function(H,M){if(H.cmp(M)<0)return H;return M},X.prototype._init=function(H,M,F){if(typeof H==="number")return this._initNumber(H,M,F);if(typeof H==="object")return this._initArray(H,M,F);if(M==="hex")M=16;J(M===(M|0)&&M>=2&&M<=36),H=H.toString().replace(/\s+/g,"");var K=0;if(H[0]==="-")K++,this.negative=1;if(K<H.length){if(M===16)this._parseHex(H,K,F);else if(this._parseBase(H,M,K),F==="le")this._initArray(this.toArray(),M,F)}},X.prototype._initNumber=function(H,M,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 J(H<9007199254740992),this.words=[H&67108863,H/67108864&67108863,1],this.length=3;if(F!=="le")return;this._initArray(this.toArray(),M,F)},X.prototype._initArray=function(H,M,F){if(J(typeof H.length==="number"),H.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(H.length/3),this.words=Array(this.length);for(var K=0;K<this.length;K++)this.words[K]=0;var q,B,P=0;if(F==="be"){for(K=H.length-1,q=0;K>=0;K-=3)if(B=H[K]|H[K-1]<<8|H[K-2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}else if(F==="le"){for(K=0,q=0;K<H.length;K+=3)if(B=H[K]|H[K+1]<<8|H[K+2]<<16,this.words[q]|=B<<P&67108863,this.words[q+1]=B>>>26-P&67108863,P+=24,P>=26)P-=26,q++}return this.strip()};function Y(j,H){var M=j.charCodeAt(H);if(M>=65&&M<=70)return M-55;else if(M>=97&&M<=102)return M-87;else return M-48&15}function V(j,H,M){var F=Y(j,M);if(M-1>=H)F|=Y(j,M-1)<<4;return F}X.prototype._parseHex=function(H,M,F){this.length=Math.ceil((H.length-M)/6),this.words=Array(this.length);for(var K=0;K<this.length;K++)this.words[K]=0;var q=0,B=0,P;if(F==="be")for(K=H.length-1;K>=M;K-=2)if(P=V(H,M,K)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8;else{var z=H.length-M;for(K=z%2===0?M+1:M;K<H.length;K+=2)if(P=V(H,M,K)<<q,this.words[B]|=P&67108863,q>=18)q-=18,B+=1,this.words[B]|=P>>>26;else q+=8}this.strip()};function U(j,H,M,F){var K=0,q=Math.min(j.length,M);for(var B=H;B<q;B++){var P=j.charCodeAt(B)-48;if(K*=F,P>=49)K+=P-49+10;else if(P>=17)K+=P-17+10;else K+=P}return K}X.prototype._parseBase=function(H,M,F){this.words=[0],this.length=1;for(var K=0,q=1;q<=67108863;q*=M)K++;K--,q=q/M|0;var B=H.length-F,P=B%K,z=Math.min(B,B-P)+F,W=0;for(var R=F;R<z;R+=K)if(W=U(H,R,R+K,M),this.imuln(q),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W);if(P!==0){var x=1;W=U(H,R,H.length,M);for(R=0;R<P;R++)x*=M;if(this.imuln(x),this.words[0]+W<67108864)this.words[0]+=W;else this._iaddn(W)}this.strip()},X.prototype.copy=function(H){H.words=Array(this.length);for(var M=0;M<this.length;M++)H.words[M]=this.words[M];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 O=["","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"],_=[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],A=[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,M){H=H||10,M=M|0||1;var F;if(H===16||H==="hex"){F="";var K=0,q=0;for(var B=0;B<this.length;B++){var P=this.words[B],z=((P<<K|q)&16777215).toString(16);if(q=P>>>24-K&16777215,K+=2,K>=26)K-=26,B--;if(q!==0||B!==this.length-1)F=O[6-z.length]+z+F;else F=z+F}if(q!==0)F=q.toString(16)+F;while(F.length%M!==0)F="0"+F;if(this.negative!==0)F="-"+F;return F}if(H===(H|0)&&H>=2&&H<=36){var W=_[H],R=A[H];F="";var x=this.clone();x.negative=0;while(!x.isZero()){var g=x.modn(R).toString(H);if(x=x.idivn(R),!x.isZero())F=O[W-g.length]+g+F;else F=g+F}if(this.isZero())F="0"+F;while(F.length%M!==0)F="0"+F;if(this.negative!==0)F="-"+F;return F}J(!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)J(!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,M){return J(typeof G<"u"),this.toArrayLike(G,H,M)},X.prototype.toArray=function(H,M){return this.toArrayLike(Array,H,M)},X.prototype.toArrayLike=function(H,M,F){var K=this.byteLength(),q=F||Math.max(1,K);J(K<=q,"byte array longer than desired length"),J(q>0,"Requested array length <= 0"),this.strip();var B=M==="le",P=new H(q),z,W,R=this.clone();if(!B){for(W=0;W<q-K;W++)P[W]=0;for(W=0;!R.isZero();W++)z=R.andln(255),R.iushrn(8),P[q-W-1]=z}else{for(W=0;!R.isZero();W++)z=R.andln(255),R.iushrn(8),P[W]=z;for(;W<q;W++)P[W]=0}return P},Math.clz32)X.prototype._countBits=function(H){return 32-Math.clz32(H)};else X.prototype._countBits=function(H){var M=H,F=0;if(M>=4096)F+=13,M>>>=13;if(M>=64)F+=7,M>>>=7;if(M>=8)F+=4,M>>>=4;if(M>=2)F+=2,M>>>=2;return F+M};X.prototype._zeroBits=function(H){if(H===0)return 26;var M=H,F=0;if((M&8191)===0)F+=13,M>>>=13;if((M&127)===0)F+=7,M>>>=7;if((M&15)===0)F+=4,M>>>=4;if((M&3)===0)F+=2,M>>>=2;if((M&1)===0)F++;return F},X.prototype.bitLength=function(){var H=this.words[this.length-1],M=this._countBits(H);return(this.length-1)*26+M};function L(j){var H=Array(j.bitLength());for(var M=0;M<H.length;M++){var F=M/26|0,K=M%26;H[M]=(j.words[F]&1<<K)>>>K}return H}X.prototype.zeroBits=function(){if(this.isZero())return 0;var H=0;for(var M=0;M<this.length;M++){var F=this._zeroBits(this.words[M]);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 M=0;M<H.length;M++)this.words[M]=this.words[M]|H.words[M];return this.strip()},X.prototype.ior=function(H){return J((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 M;if(this.length>H.length)M=H;else M=this;for(var F=0;F<M.length;F++)this.words[F]=this.words[F]&H.words[F];return this.length=M.length,this.strip()},X.prototype.iand=function(H){return J((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 M,F;if(this.length>H.length)M=this,F=H;else M=H,F=this;for(var K=0;K<F.length;K++)this.words[K]=M.words[K]^F.words[K];if(this!==M)for(;K<M.length;K++)this.words[K]=M.words[K];return this.length=M.length,this.strip()},X.prototype.ixor=function(H){return J((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){J(typeof H==="number"&&H>=0);var M=Math.ceil(H/26)|0,F=H%26;if(this._expand(M),F>0)M--;for(var K=0;K<M;K++)this.words[K]=~this.words[K]&67108863;if(F>0)this.words[K]=~this.words[K]&67108863>>26-F;return this.strip()},X.prototype.notn=function(H){return this.clone().inotn(H)},X.prototype.setn=function(H,M){J(typeof H==="number"&&H>=0);var F=H/26|0,K=H%26;if(this._expand(F+1),M)this.words[F]=this.words[F]|1<<K;else this.words[F]=this.words[F]&~(1<<K);return this.strip()},X.prototype.iadd=function(H){var M;if(this.negative!==0&&H.negative===0)return this.negative=0,M=this.isub(H),this.negative^=1,this._normSign();else if(this.negative===0&&H.negative!==0)return H.negative=0,M=this.isub(H),H.negative=1,M._normSign();var F,K;if(this.length>H.length)F=this,K=H;else F=H,K=this;var q=0;for(var B=0;B<K.length;B++)M=(F.words[B]|0)+(K.words[B]|0)+q,this.words[B]=M&67108863,q=M>>>26;for(;q!==0&&B<F.length;B++)M=(F.words[B]|0)+q,this.words[B]=M&67108863,q=M>>>26;if(this.length=F.length,q!==0)this.words[this.length]=q,this.length++;else if(F!==this)for(;B<F.length;B++)this.words[B]=F.words[B];return this},X.prototype.add=function(H){var M;if(H.negative!==0&&this.negative===0)return H.negative=0,M=this.sub(H),H.negative^=1,M;else if(H.negative===0&&this.negative!==0)return this.negative=0,M=H.sub(this),this.negative=1,M;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 M=this.iadd(H);return H.negative=1,M._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(H),this.negative=1,this._normSign();var F=this.cmp(H);if(F===0)return this.negative=0,this.length=1,this.words[0]=0,this;var K,q;if(F>0)K=this,q=H;else K=H,q=this;var B=0;for(var P=0;P<q.length;P++)M=(K.words[P]|0)-(q.words[P]|0)+B,B=M>>26,this.words[P]=M&67108863;for(;B!==0&&P<K.length;P++)M=(K.words[P]|0)+B,B=M>>26,this.words[P]=M&67108863;if(B===0&&P<K.length&&K!==this)for(;P<K.length;P++)this.words[P]=K.words[P];if(this.length=Math.max(this.length,P),K!==this)this.negative=1;return this.strip()},X.prototype.sub=function(H){return this.clone().isub(H)};function C(j,H,M){M.negative=H.negative^j.negative;var F=j.length+H.length|0;M.length=F,F=F-1|0;var K=j.words[0]|0,q=H.words[0]|0,B=K*q,P=B&67108863,z=B/67108864|0;M.words[0]=P;for(var W=1;W<F;W++){var R=z>>>26,x=z&67108863,g=Math.min(W,H.length-1);for(var y=Math.max(0,W-j.length+1);y<=g;y++){var n=W-y|0;K=j.words[n]|0,q=H.words[y]|0,B=K*q+x,R+=B/67108864|0,x=B&67108863}M.words[W]=x|0,z=R|0}if(z!==0)M.words[W]=z|0;else M.length--;return M.strip()}var w=function(H,M,F){var K=H.words,q=M.words,B=F.words,P=0,z,W,R,x=K[0]|0,g=x&8191,y=x>>>13,n=K[1]|0,t=n&8191,Z0=n>>>13,q$=K[2]|0,J0=q$&8191,G0=q$>>>13,hQ=K[3]|0,W0=hQ&8191,U0=hQ>>>13,bQ=K[4]|0,V0=bQ&8191,M0=bQ>>>13,cQ=K[5]|0,A0=cQ&8191,O0=cQ>>>13,pQ=K[6]|0,_0=pQ&8191,F0=pQ>>>13,uQ=K[7]|0,K0=uQ&8191,z0=uQ>>>13,mQ=K[8]|0,R0=mQ&8191,q0=mQ>>>13,dQ=K[9]|0,I0=dQ&8191,j0=dQ>>>13,nQ=q[0]|0,L0=nQ&8191,B0=nQ>>>13,sQ=q[1]|0,P0=sQ&8191,C0=sQ>>>13,oQ=q[2]|0,w0=oQ&8191,S0=oQ>>>13,lQ=q[3]|0,E0=lQ&8191,T0=lQ>>>13,rQ=q[4]|0,D0=rQ&8191,N0=rQ>>>13,iQ=q[5]|0,k0=iQ&8191,v0=iQ>>>13,tQ=q[6]|0,x0=tQ&8191,f0=tQ>>>13,aQ=q[7]|0,g0=aQ&8191,y0=aQ>>>13,eQ=q[8]|0,h0=eQ&8191,b0=eQ>>>13,$X=q[9]|0,c0=$X&8191,p0=$X>>>13;F.negative=H.negative^M.negative,F.length=19,z=Math.imul(g,L0),W=Math.imul(g,B0),W=W+Math.imul(y,L0)|0,R=Math.imul(y,B0);var XJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(XJ>>>26)|0,XJ&=67108863,z=Math.imul(t,L0),W=Math.imul(t,B0),W=W+Math.imul(Z0,L0)|0,R=Math.imul(Z0,B0),z=z+Math.imul(g,P0)|0,W=W+Math.imul(g,C0)|0,W=W+Math.imul(y,P0)|0,R=R+Math.imul(y,C0)|0;var GJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(GJ>>>26)|0,GJ&=67108863,z=Math.imul(J0,L0),W=Math.imul(J0,B0),W=W+Math.imul(G0,L0)|0,R=Math.imul(G0,B0),z=z+Math.imul(t,P0)|0,W=W+Math.imul(t,C0)|0,W=W+Math.imul(Z0,P0)|0,R=R+Math.imul(Z0,C0)|0,z=z+Math.imul(g,w0)|0,W=W+Math.imul(g,S0)|0,W=W+Math.imul(y,w0)|0,R=R+Math.imul(y,S0)|0;var YJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(YJ>>>26)|0,YJ&=67108863,z=Math.imul(W0,L0),W=Math.imul(W0,B0),W=W+Math.imul(U0,L0)|0,R=Math.imul(U0,B0),z=z+Math.imul(J0,P0)|0,W=W+Math.imul(J0,C0)|0,W=W+Math.imul(G0,P0)|0,R=R+Math.imul(G0,C0)|0,z=z+Math.imul(t,w0)|0,W=W+Math.imul(t,S0)|0,W=W+Math.imul(Z0,w0)|0,R=R+Math.imul(Z0,S0)|0,z=z+Math.imul(g,E0)|0,W=W+Math.imul(g,T0)|0,W=W+Math.imul(y,E0)|0,R=R+Math.imul(y,T0)|0;var HJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(HJ>>>26)|0,HJ&=67108863,z=Math.imul(V0,L0),W=Math.imul(V0,B0),W=W+Math.imul(M0,L0)|0,R=Math.imul(M0,B0),z=z+Math.imul(W0,P0)|0,W=W+Math.imul(W0,C0)|0,W=W+Math.imul(U0,P0)|0,R=R+Math.imul(U0,C0)|0,z=z+Math.imul(J0,w0)|0,W=W+Math.imul(J0,S0)|0,W=W+Math.imul(G0,w0)|0,R=R+Math.imul(G0,S0)|0,z=z+Math.imul(t,E0)|0,W=W+Math.imul(t,T0)|0,W=W+Math.imul(Z0,E0)|0,R=R+Math.imul(Z0,T0)|0,z=z+Math.imul(g,D0)|0,W=W+Math.imul(g,N0)|0,W=W+Math.imul(y,D0)|0,R=R+Math.imul(y,N0)|0;var WJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(WJ>>>26)|0,WJ&=67108863,z=Math.imul(A0,L0),W=Math.imul(A0,B0),W=W+Math.imul(O0,L0)|0,R=Math.imul(O0,B0),z=z+Math.imul(V0,P0)|0,W=W+Math.imul(V0,C0)|0,W=W+Math.imul(M0,P0)|0,R=R+Math.imul(M0,C0)|0,z=z+Math.imul(W0,w0)|0,W=W+Math.imul(W0,S0)|0,W=W+Math.imul(U0,w0)|0,R=R+Math.imul(U0,S0)|0,z=z+Math.imul(J0,E0)|0,W=W+Math.imul(J0,T0)|0,W=W+Math.imul(G0,E0)|0,R=R+Math.imul(G0,T0)|0,z=z+Math.imul(t,D0)|0,W=W+Math.imul(t,N0)|0,W=W+Math.imul(Z0,D0)|0,R=R+Math.imul(Z0,N0)|0,z=z+Math.imul(g,k0)|0,W=W+Math.imul(g,v0)|0,W=W+Math.imul(y,k0)|0,R=R+Math.imul(y,v0)|0;var UJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(UJ>>>26)|0,UJ&=67108863,z=Math.imul(_0,L0),W=Math.imul(_0,B0),W=W+Math.imul(F0,L0)|0,R=Math.imul(F0,B0),z=z+Math.imul(A0,P0)|0,W=W+Math.imul(A0,C0)|0,W=W+Math.imul(O0,P0)|0,R=R+Math.imul(O0,C0)|0,z=z+Math.imul(V0,w0)|0,W=W+Math.imul(V0,S0)|0,W=W+Math.imul(M0,w0)|0,R=R+Math.imul(M0,S0)|0,z=z+Math.imul(W0,E0)|0,W=W+Math.imul(W0,T0)|0,W=W+Math.imul(U0,E0)|0,R=R+Math.imul(U0,T0)|0,z=z+Math.imul(J0,D0)|0,W=W+Math.imul(J0,N0)|0,W=W+Math.imul(G0,D0)|0,R=R+Math.imul(G0,N0)|0,z=z+Math.imul(t,k0)|0,W=W+Math.imul(t,v0)|0,W=W+Math.imul(Z0,k0)|0,R=R+Math.imul(Z0,v0)|0,z=z+Math.imul(g,x0)|0,W=W+Math.imul(g,f0)|0,W=W+Math.imul(y,x0)|0,R=R+Math.imul(y,f0)|0;var VJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(VJ>>>26)|0,VJ&=67108863,z=Math.imul(K0,L0),W=Math.imul(K0,B0),W=W+Math.imul(z0,L0)|0,R=Math.imul(z0,B0),z=z+Math.imul(_0,P0)|0,W=W+Math.imul(_0,C0)|0,W=W+Math.imul(F0,P0)|0,R=R+Math.imul(F0,C0)|0,z=z+Math.imul(A0,w0)|0,W=W+Math.imul(A0,S0)|0,W=W+Math.imul(O0,w0)|0,R=R+Math.imul(O0,S0)|0,z=z+Math.imul(V0,E0)|0,W=W+Math.imul(V0,T0)|0,W=W+Math.imul(M0,E0)|0,R=R+Math.imul(M0,T0)|0,z=z+Math.imul(W0,D0)|0,W=W+Math.imul(W0,N0)|0,W=W+Math.imul(U0,D0)|0,R=R+Math.imul(U0,N0)|0,z=z+Math.imul(J0,k0)|0,W=W+Math.imul(J0,v0)|0,W=W+Math.imul(G0,k0)|0,R=R+Math.imul(G0,v0)|0,z=z+Math.imul(t,x0)|0,W=W+Math.imul(t,f0)|0,W=W+Math.imul(Z0,x0)|0,R=R+Math.imul(Z0,f0)|0,z=z+Math.imul(g,g0)|0,W=W+Math.imul(g,y0)|0,W=W+Math.imul(y,g0)|0,R=R+Math.imul(y,y0)|0;var MJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(MJ>>>26)|0,MJ&=67108863,z=Math.imul(R0,L0),W=Math.imul(R0,B0),W=W+Math.imul(q0,L0)|0,R=Math.imul(q0,B0),z=z+Math.imul(K0,P0)|0,W=W+Math.imul(K0,C0)|0,W=W+Math.imul(z0,P0)|0,R=R+Math.imul(z0,C0)|0,z=z+Math.imul(_0,w0)|0,W=W+Math.imul(_0,S0)|0,W=W+Math.imul(F0,w0)|0,R=R+Math.imul(F0,S0)|0,z=z+Math.imul(A0,E0)|0,W=W+Math.imul(A0,T0)|0,W=W+Math.imul(O0,E0)|0,R=R+Math.imul(O0,T0)|0,z=z+Math.imul(V0,D0)|0,W=W+Math.imul(V0,N0)|0,W=W+Math.imul(M0,D0)|0,R=R+Math.imul(M0,N0)|0,z=z+Math.imul(W0,k0)|0,W=W+Math.imul(W0,v0)|0,W=W+Math.imul(U0,k0)|0,R=R+Math.imul(U0,v0)|0,z=z+Math.imul(J0,x0)|0,W=W+Math.imul(J0,f0)|0,W=W+Math.imul(G0,x0)|0,R=R+Math.imul(G0,f0)|0,z=z+Math.imul(t,g0)|0,W=W+Math.imul(t,y0)|0,W=W+Math.imul(Z0,g0)|0,R=R+Math.imul(Z0,y0)|0,z=z+Math.imul(g,h0)|0,W=W+Math.imul(g,b0)|0,W=W+Math.imul(y,h0)|0,R=R+Math.imul(y,b0)|0;var AJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(AJ>>>26)|0,AJ&=67108863,z=Math.imul(I0,L0),W=Math.imul(I0,B0),W=W+Math.imul(j0,L0)|0,R=Math.imul(j0,B0),z=z+Math.imul(R0,P0)|0,W=W+Math.imul(R0,C0)|0,W=W+Math.imul(q0,P0)|0,R=R+Math.imul(q0,C0)|0,z=z+Math.imul(K0,w0)|0,W=W+Math.imul(K0,S0)|0,W=W+Math.imul(z0,w0)|0,R=R+Math.imul(z0,S0)|0,z=z+Math.imul(_0,E0)|0,W=W+Math.imul(_0,T0)|0,W=W+Math.imul(F0,E0)|0,R=R+Math.imul(F0,T0)|0,z=z+Math.imul(A0,D0)|0,W=W+Math.imul(A0,N0)|0,W=W+Math.imul(O0,D0)|0,R=R+Math.imul(O0,N0)|0,z=z+Math.imul(V0,k0)|0,W=W+Math.imul(V0,v0)|0,W=W+Math.imul(M0,k0)|0,R=R+Math.imul(M0,v0)|0,z=z+Math.imul(W0,x0)|0,W=W+Math.imul(W0,f0)|0,W=W+Math.imul(U0,x0)|0,R=R+Math.imul(U0,f0)|0,z=z+Math.imul(J0,g0)|0,W=W+Math.imul(J0,y0)|0,W=W+Math.imul(G0,g0)|0,R=R+Math.imul(G0,y0)|0,z=z+Math.imul(t,h0)|0,W=W+Math.imul(t,b0)|0,W=W+Math.imul(Z0,h0)|0,R=R+Math.imul(Z0,b0)|0,z=z+Math.imul(g,c0)|0,W=W+Math.imul(g,p0)|0,W=W+Math.imul(y,c0)|0,R=R+Math.imul(y,p0)|0;var OJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(OJ>>>26)|0,OJ&=67108863,z=Math.imul(I0,P0),W=Math.imul(I0,C0),W=W+Math.imul(j0,P0)|0,R=Math.imul(j0,C0),z=z+Math.imul(R0,w0)|0,W=W+Math.imul(R0,S0)|0,W=W+Math.imul(q0,w0)|0,R=R+Math.imul(q0,S0)|0,z=z+Math.imul(K0,E0)|0,W=W+Math.imul(K0,T0)|0,W=W+Math.imul(z0,E0)|0,R=R+Math.imul(z0,T0)|0,z=z+Math.imul(_0,D0)|0,W=W+Math.imul(_0,N0)|0,W=W+Math.imul(F0,D0)|0,R=R+Math.imul(F0,N0)|0,z=z+Math.imul(A0,k0)|0,W=W+Math.imul(A0,v0)|0,W=W+Math.imul(O0,k0)|0,R=R+Math.imul(O0,v0)|0,z=z+Math.imul(V0,x0)|0,W=W+Math.imul(V0,f0)|0,W=W+Math.imul(M0,x0)|0,R=R+Math.imul(M0,f0)|0,z=z+Math.imul(W0,g0)|0,W=W+Math.imul(W0,y0)|0,W=W+Math.imul(U0,g0)|0,R=R+Math.imul(U0,y0)|0,z=z+Math.imul(J0,h0)|0,W=W+Math.imul(J0,b0)|0,W=W+Math.imul(G0,h0)|0,R=R+Math.imul(G0,b0)|0,z=z+Math.imul(t,c0)|0,W=W+Math.imul(t,p0)|0,W=W+Math.imul(Z0,c0)|0,R=R+Math.imul(Z0,p0)|0;var _J=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(_J>>>26)|0,_J&=67108863,z=Math.imul(I0,w0),W=Math.imul(I0,S0),W=W+Math.imul(j0,w0)|0,R=Math.imul(j0,S0),z=z+Math.imul(R0,E0)|0,W=W+Math.imul(R0,T0)|0,W=W+Math.imul(q0,E0)|0,R=R+Math.imul(q0,T0)|0,z=z+Math.imul(K0,D0)|0,W=W+Math.imul(K0,N0)|0,W=W+Math.imul(z0,D0)|0,R=R+Math.imul(z0,N0)|0,z=z+Math.imul(_0,k0)|0,W=W+Math.imul(_0,v0)|0,W=W+Math.imul(F0,k0)|0,R=R+Math.imul(F0,v0)|0,z=z+Math.imul(A0,x0)|0,W=W+Math.imul(A0,f0)|0,W=W+Math.imul(O0,x0)|0,R=R+Math.imul(O0,f0)|0,z=z+Math.imul(V0,g0)|0,W=W+Math.imul(V0,y0)|0,W=W+Math.imul(M0,g0)|0,R=R+Math.imul(M0,y0)|0,z=z+Math.imul(W0,h0)|0,W=W+Math.imul(W0,b0)|0,W=W+Math.imul(U0,h0)|0,R=R+Math.imul(U0,b0)|0,z=z+Math.imul(J0,c0)|0,W=W+Math.imul(J0,p0)|0,W=W+Math.imul(G0,c0)|0,R=R+Math.imul(G0,p0)|0;var FJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(FJ>>>26)|0,FJ&=67108863,z=Math.imul(I0,E0),W=Math.imul(I0,T0),W=W+Math.imul(j0,E0)|0,R=Math.imul(j0,T0),z=z+Math.imul(R0,D0)|0,W=W+Math.imul(R0,N0)|0,W=W+Math.imul(q0,D0)|0,R=R+Math.imul(q0,N0)|0,z=z+Math.imul(K0,k0)|0,W=W+Math.imul(K0,v0)|0,W=W+Math.imul(z0,k0)|0,R=R+Math.imul(z0,v0)|0,z=z+Math.imul(_0,x0)|0,W=W+Math.imul(_0,f0)|0,W=W+Math.imul(F0,x0)|0,R=R+Math.imul(F0,f0)|0,z=z+Math.imul(A0,g0)|0,W=W+Math.imul(A0,y0)|0,W=W+Math.imul(O0,g0)|0,R=R+Math.imul(O0,y0)|0,z=z+Math.imul(V0,h0)|0,W=W+Math.imul(V0,b0)|0,W=W+Math.imul(M0,h0)|0,R=R+Math.imul(M0,b0)|0,z=z+Math.imul(W0,c0)|0,W=W+Math.imul(W0,p0)|0,W=W+Math.imul(U0,c0)|0,R=R+Math.imul(U0,p0)|0;var KJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(KJ>>>26)|0,KJ&=67108863,z=Math.imul(I0,D0),W=Math.imul(I0,N0),W=W+Math.imul(j0,D0)|0,R=Math.imul(j0,N0),z=z+Math.imul(R0,k0)|0,W=W+Math.imul(R0,v0)|0,W=W+Math.imul(q0,k0)|0,R=R+Math.imul(q0,v0)|0,z=z+Math.imul(K0,x0)|0,W=W+Math.imul(K0,f0)|0,W=W+Math.imul(z0,x0)|0,R=R+Math.imul(z0,f0)|0,z=z+Math.imul(_0,g0)|0,W=W+Math.imul(_0,y0)|0,W=W+Math.imul(F0,g0)|0,R=R+Math.imul(F0,y0)|0,z=z+Math.imul(A0,h0)|0,W=W+Math.imul(A0,b0)|0,W=W+Math.imul(O0,h0)|0,R=R+Math.imul(O0,b0)|0,z=z+Math.imul(V0,c0)|0,W=W+Math.imul(V0,p0)|0,W=W+Math.imul(M0,c0)|0,R=R+Math.imul(M0,p0)|0;var zJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(zJ>>>26)|0,zJ&=67108863,z=Math.imul(I0,k0),W=Math.imul(I0,v0),W=W+Math.imul(j0,k0)|0,R=Math.imul(j0,v0),z=z+Math.imul(R0,x0)|0,W=W+Math.imul(R0,f0)|0,W=W+Math.imul(q0,x0)|0,R=R+Math.imul(q0,f0)|0,z=z+Math.imul(K0,g0)|0,W=W+Math.imul(K0,y0)|0,W=W+Math.imul(z0,g0)|0,R=R+Math.imul(z0,y0)|0,z=z+Math.imul(_0,h0)|0,W=W+Math.imul(_0,b0)|0,W=W+Math.imul(F0,h0)|0,R=R+Math.imul(F0,b0)|0,z=z+Math.imul(A0,c0)|0,W=W+Math.imul(A0,p0)|0,W=W+Math.imul(O0,c0)|0,R=R+Math.imul(O0,p0)|0;var RJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(RJ>>>26)|0,RJ&=67108863,z=Math.imul(I0,x0),W=Math.imul(I0,f0),W=W+Math.imul(j0,x0)|0,R=Math.imul(j0,f0),z=z+Math.imul(R0,g0)|0,W=W+Math.imul(R0,y0)|0,W=W+Math.imul(q0,g0)|0,R=R+Math.imul(q0,y0)|0,z=z+Math.imul(K0,h0)|0,W=W+Math.imul(K0,b0)|0,W=W+Math.imul(z0,h0)|0,R=R+Math.imul(z0,b0)|0,z=z+Math.imul(_0,c0)|0,W=W+Math.imul(_0,p0)|0,W=W+Math.imul(F0,c0)|0,R=R+Math.imul(F0,p0)|0;var qJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(qJ>>>26)|0,qJ&=67108863,z=Math.imul(I0,g0),W=Math.imul(I0,y0),W=W+Math.imul(j0,g0)|0,R=Math.imul(j0,y0),z=z+Math.imul(R0,h0)|0,W=W+Math.imul(R0,b0)|0,W=W+Math.imul(q0,h0)|0,R=R+Math.imul(q0,b0)|0,z=z+Math.imul(K0,c0)|0,W=W+Math.imul(K0,p0)|0,W=W+Math.imul(z0,c0)|0,R=R+Math.imul(z0,p0)|0;var IJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(IJ>>>26)|0,IJ&=67108863,z=Math.imul(I0,h0),W=Math.imul(I0,b0),W=W+Math.imul(j0,h0)|0,R=Math.imul(j0,b0),z=z+Math.imul(R0,c0)|0,W=W+Math.imul(R0,p0)|0,W=W+Math.imul(q0,c0)|0,R=R+Math.imul(q0,p0)|0;var jJ=(P+z|0)+((W&8191)<<13)|0;P=(R+(W>>>13)|0)+(jJ>>>26)|0,jJ&=67108863,z=Math.imul(I0,c0),W=Math.imul(I0,p0),W=W+Math.imul(j0,c0)|0,R=Math.imul(j0,p0);var LJ=(P+z|0)+((W&8191)<<13)|0;if(P=(R+(W>>>13)|0)+(LJ>>>26)|0,LJ&=67108863,B[0]=XJ,B[1]=GJ,B[2]=YJ,B[3]=HJ,B[4]=WJ,B[5]=UJ,B[6]=VJ,B[7]=MJ,B[8]=AJ,B[9]=OJ,B[10]=_J,B[11]=FJ,B[12]=KJ,B[13]=zJ,B[14]=RJ,B[15]=qJ,B[16]=IJ,B[17]=jJ,B[18]=LJ,P!==0)B[19]=P,F.length++;return F};if(!Math.imul)w=C;function S(j,H,M){M.negative=H.negative^j.negative,M.length=j.length+H.length;var F=0,K=0;for(var q=0;q<M.length-1;q++){var B=K;K=0;var P=F&67108863,z=Math.min(q,H.length-1);for(var W=Math.max(0,q-j.length+1);W<=z;W++){var R=q-W,x=j.words[R]|0,g=H.words[W]|0,y=x*g,n=y&67108863;B=B+(y/67108864|0)|0,n=n+P|0,P=n&67108863,B=B+(n>>>26)|0,K+=B>>>26,B&=67108863}M.words[q]=P,F=B,B=K}if(F!==0)M.words[q]=F;else M.length--;return M.strip()}function k(j,H,M){var F=new N;return F.mulp(j,H,M)}X.prototype.mulTo=function(H,M){var F,K=this.length+H.length;if(this.length===10&&H.length===10)F=w(this,H,M);else if(K<63)F=C(this,H,M);else if(K<1024)F=S(this,H,M);else F=k(this,H,M);return F};function N(j,H){this.x=j,this.y=H}N.prototype.makeRBT=function(H){var M=Array(H),F=X.prototype._countBits(H)-1;for(var K=0;K<H;K++)M[K]=this.revBin(K,F,H);return M},N.prototype.revBin=function(H,M,F){if(H===0||H===F-1)return H;var K=0;for(var q=0;q<M;q++)K|=(H&1)<<M-q-1,H>>=1;return K},N.prototype.permute=function(H,M,F,K,q,B){for(var P=0;P<B;P++)K[P]=M[H[P]],q[P]=F[H[P]]},N.prototype.transform=function(H,M,F,K,q,B){this.permute(B,H,M,F,K,q);for(var P=1;P<q;P<<=1){var z=P<<1,W=Math.cos(2*Math.PI/z),R=Math.sin(2*Math.PI/z);for(var x=0;x<q;x+=z){var g=W,y=R;for(var n=0;n<P;n++){var t=F[x+n],Z0=K[x+n],q$=F[x+n+P],J0=K[x+n+P],G0=g*q$-y*J0;if(J0=g*J0+y*q$,q$=G0,F[x+n]=t+q$,K[x+n]=Z0+J0,F[x+n+P]=t-q$,K[x+n+P]=Z0-J0,n!==z)G0=W*g-R*y,y=W*y+R*g,g=G0}}}},N.prototype.guessLen13b=function(H,M){var F=Math.max(M,H)|1,K=F&1,q=0;for(F=F/2|0;F;F=F>>>1)q++;return 1<<q+1+K},N.prototype.conjugate=function(H,M,F){if(F<=1)return;for(var K=0;K<F/2;K++){var q=H[K];H[K]=H[F-K-1],H[F-K-1]=q,q=M[K],M[K]=-M[F-K-1],M[F-K-1]=-q}},N.prototype.normalize13b=function(H,M){var F=0;for(var K=0;K<M/2;K++){var q=Math.round(H[2*K+1]/M)*8192+Math.round(H[2*K]/M)+F;if(H[K]=q&67108863,q<67108864)F=0;else F=q/67108864|0}return H},N.prototype.convert13b=function(H,M,F,K){var q=0;for(var B=0;B<M;B++)q=q+(H[B]|0),F[2*B]=q&8191,q=q>>>13,F[2*B+1]=q&8191,q=q>>>13;for(B=2*M;B<K;++B)F[B]=0;J(q===0),J((q&-8192)===0)},N.prototype.stub=function(H){var M=Array(H);for(var F=0;F<H;F++)M[F]=0;return M},N.prototype.mulp=function(H,M,F){var K=2*this.guessLen13b(H.length,M.length),q=this.makeRBT(K),B=this.stub(K),P=Array(K),z=Array(K),W=Array(K),R=Array(K),x=Array(K),g=Array(K),y=F.words;y.length=K,this.convert13b(H.words,H.length,P,K),this.convert13b(M.words,M.length,R,K),this.transform(P,B,z,W,K,q),this.transform(R,B,x,g,K,q);for(var n=0;n<K;n++){var t=z[n]*x[n]-W[n]*g[n];W[n]=z[n]*g[n]+W[n]*x[n],z[n]=t}return this.conjugate(z,W,K),this.transform(z,W,y,B,K,q),this.conjugate(y,B,K),this.normalize13b(y,K),F.negative=H.negative^M.negative,F.length=H.length+M.length,F.strip()},X.prototype.mul=function(H){var M=new X(null);return M.words=Array(this.length+H.length),this.mulTo(H,M)},X.prototype.mulf=function(H){var M=new X(null);return M.words=Array(this.length+H.length),k(this,H,M)},X.prototype.imul=function(H){return this.clone().mulTo(H,this)},X.prototype.imuln=function(H){J(typeof H==="number"),J(H<67108864);var M=0;for(var F=0;F<this.length;F++){var K=(this.words[F]|0)*H,q=(K&67108863)+(M&67108863);M>>=26,M+=K/67108864|0,M+=q>>>26,this.words[F]=q&67108863}if(M!==0)this.words[F]=M,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 M=L(H);if(M.length===0)return new X(1);var F=this;for(var K=0;K<M.length;K++,F=F.sqr())if(M[K]!==0)break;if(++K<M.length)for(var q=F.sqr();K<M.length;K++,q=q.sqr()){if(M[K]===0)continue;F=F.mul(q)}return F},X.prototype.iushln=function(H){J(typeof H==="number"&&H>=0);var M=H%26,F=(H-M)/26,K=67108863>>>26-M<<26-M,q;if(M!==0){var B=0;for(q=0;q<this.length;q++){var P=this.words[q]&K,z=(this.words[q]|0)-P<<M;this.words[q]=z|B,B=P>>>26-M}if(B)this.words[q]=B,this.length++}if(F!==0){for(q=this.length-1;q>=0;q--)this.words[q+F]=this.words[q];for(q=0;q<F;q++)this.words[q]=0;this.length+=F}return this.strip()},X.prototype.ishln=function(H){return J(this.negative===0),this.iushln(H)},X.prototype.iushrn=function(H,M,F){J(typeof H==="number"&&H>=0);var K;if(M)K=(M-M%26)/26;else K=0;var q=H%26,B=Math.min((H-q)/26,this.length),P=67108863^67108863>>>q<<q,z=F;if(K-=B,K=Math.max(0,K),z){for(var W=0;W<B;W++)z.words[W]=this.words[W];z.length=B}if(B===0);else if(this.length>B){this.length-=B;for(W=0;W<this.length;W++)this.words[W]=this.words[W+B]}else this.words[0]=0,this.length=1;var R=0;for(W=this.length-1;W>=0&&(R!==0||W>=K);W--){var x=this.words[W]|0;this.words[W]=R<<26-q|x>>>q,R=x&P}if(z&&R!==0)z.words[z.length++]=R;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},X.prototype.ishrn=function(H,M,F){return J(this.negative===0),this.iushrn(H,M,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){J(typeof H==="number"&&H>=0);var M=H%26,F=(H-M)/26,K=1<<M;if(this.length<=F)return!1;var q=this.words[F];return!!(q&K)},X.prototype.imaskn=function(H){J(typeof H==="number"&&H>=0);var M=H%26,F=(H-M)/26;if(J(this.negative===0,"imaskn works only with positive numbers"),this.length<=F)return this;if(M!==0)F++;if(this.length=Math.min(F,this.length),M!==0){var K=67108863^67108863>>>M<<M;this.words[this.length-1]&=K}return this.strip()},X.prototype.maskn=function(H){return this.clone().imaskn(H)},X.prototype.iaddn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.isubn(-H);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<H)return this.words[0]=H-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(H),this.negative=1,this}return this._iaddn(H)},X.prototype._iaddn=function(H){this.words[0]+=H;for(var M=0;M<this.length&&this.words[M]>=67108864;M++)if(this.words[M]-=67108864,M===this.length-1)this.words[M+1]=1;else this.words[M+1]++;return this.length=Math.max(this.length,M+1),this},X.prototype.isubn=function(H){if(J(typeof H==="number"),J(H<67108864),H<0)return this.iaddn(-H);if(this.negative!==0)return this.negative=0,this.iaddn(H),this.negative=1,this;if(this.words[0]-=H,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var M=0;M<this.length&&this.words[M]<0;M++)this.words[M]+=67108864,this.words[M+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,M,F){var K=H.length+F,q;this._expand(K);var B,P=0;for(q=0;q<H.length;q++){B=(this.words[q+F]|0)+P;var z=(H.words[q]|0)*M;B-=z&67108863,P=(B>>26)-(z/67108864|0),this.words[q+F]=B&67108863}for(;q<this.length-F;q++)B=(this.words[q+F]|0)+P,P=B>>26,this.words[q+F]=B&67108863;if(P===0)return this.strip();J(P===-1),P=0;for(q=0;q<this.length;q++)B=-(this.words[q]|0)+P,P=B>>26,this.words[q]=B&67108863;return this.negative=1,this.strip()},X.prototype._wordDiv=function(H,M){var F=this.length-H.length,K=this.clone(),q=H,B=q.words[q.length-1]|0,P=this._countBits(B);if(F=26-P,F!==0)q=q.ushln(F),K.iushln(F),B=q.words[q.length-1]|0;var z=K.length-q.length,W;if(M!=="mod"){W=new X(null),W.length=z+1,W.words=Array(W.length);for(var R=0;R<W.length;R++)W.words[R]=0}var x=K.clone()._ishlnsubmul(q,1,z);if(x.negative===0){if(K=x,W)W.words[z]=1}for(var g=z-1;g>=0;g--){var y=(K.words[q.length+g]|0)*67108864+(K.words[q.length+g-1]|0);y=Math.min(y/B|0,67108863),K._ishlnsubmul(q,y,g);while(K.negative!==0)if(y--,K.negative=0,K._ishlnsubmul(q,1,g),!K.isZero())K.negative^=1;if(W)W.words[g]=y}if(W)W.strip();if(K.strip(),M!=="div"&&F!==0)K.iushrn(F);return{div:W||null,mod:K}},X.prototype.divmod=function(H,M,F){if(J(!H.isZero()),this.isZero())return{div:new X(0),mod:new X(0)};var K,q,B;if(this.negative!==0&&H.negative===0){if(B=this.neg().divmod(H,M),M!=="mod")K=B.div.neg();if(M!=="div"){if(q=B.mod.neg(),F&&q.negative!==0)q.iadd(H)}return{div:K,mod:q}}if(this.negative===0&&H.negative!==0){if(B=this.divmod(H.neg(),M),M!=="mod")K=B.div.neg();return{div:K,mod:B.mod}}if((this.negative&H.negative)!==0){if(B=this.neg().divmod(H.neg(),M),M!=="div"){if(q=B.mod.neg(),F&&q.negative!==0)q.isub(H)}return{div:B.div,mod:q}}if(H.length>this.length||this.cmp(H)<0)return{div:new X(0),mod:this};if(H.length===1){if(M==="div")return{div:this.divn(H.words[0]),mod:null};if(M==="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,M)},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 M=this.divmod(H);if(M.mod.isZero())return M.div;var F=M.div.negative!==0?M.mod.isub(H):M.mod,K=H.ushrn(1),q=H.andln(1),B=F.cmp(K);if(B<0||q===1&&B===0)return M.div;return M.div.negative!==0?M.div.isubn(1):M.div.iaddn(1)},X.prototype.modn=function(H){J(H<=67108863);var M=67108864%H,F=0;for(var K=this.length-1;K>=0;K--)F=(M*F+(this.words[K]|0))%H;return F},X.prototype.idivn=function(H){J(H<=67108863);var M=0;for(var F=this.length-1;F>=0;F--){var K=(this.words[F]|0)+M*67108864;this.words[F]=K/H|0,M=K%H}return this.strip()},X.prototype.divn=function(H){return this.clone().idivn(H)},X.prototype.egcd=function(H){J(H.negative===0),J(!H.isZero());var M=this,F=H.clone();if(M.negative!==0)M=M.umod(H);else M=M.clone();var K=new X(1),q=new X(0),B=new X(0),P=new X(1),z=0;while(M.isEven()&&F.isEven())M.iushrn(1),F.iushrn(1),++z;var W=F.clone(),R=M.clone();while(!M.isZero()){for(var x=0,g=1;(M.words[0]&g)===0&&x<26;++x,g<<=1);if(x>0){M.iushrn(x);while(x-- >0){if(K.isOdd()||q.isOdd())K.iadd(W),q.isub(R);K.iushrn(1),q.iushrn(1)}}for(var y=0,n=1;(F.words[0]&n)===0&&y<26;++y,n<<=1);if(y>0){F.iushrn(y);while(y-- >0){if(B.isOdd()||P.isOdd())B.iadd(W),P.isub(R);B.iushrn(1),P.iushrn(1)}}if(M.cmp(F)>=0)M.isub(F),K.isub(B),q.isub(P);else F.isub(M),B.isub(K),P.isub(q)}return{a:B,b:P,gcd:F.iushln(z)}},X.prototype._invmp=function(H){J(H.negative===0),J(!H.isZero());var M=this,F=H.clone();if(M.negative!==0)M=M.umod(H);else M=M.clone();var K=new X(1),q=new X(0),B=F.clone();while(M.cmpn(1)>0&&F.cmpn(1)>0){for(var P=0,z=1;(M.words[0]&z)===0&&P<26;++P,z<<=1);if(P>0){M.iushrn(P);while(P-- >0){if(K.isOdd())K.iadd(B);K.iushrn(1)}}for(var W=0,R=1;(F.words[0]&R)===0&&W<26;++W,R<<=1);if(W>0){F.iushrn(W);while(W-- >0){if(q.isOdd())q.iadd(B);q.iushrn(1)}}if(M.cmp(F)>=0)M.isub(F),K.isub(q);else F.isub(M),q.isub(K)}var x;if(M.cmpn(1)===0)x=K;else x=q;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 M=this.clone(),F=H.clone();M.negative=0,F.negative=0;for(var K=0;M.isEven()&&F.isEven();K++)M.iushrn(1),F.iushrn(1);do{while(M.isEven())M.iushrn(1);while(F.isEven())F.iushrn(1);var q=M.cmp(F);if(q<0){var B=M;M=F,F=B}else if(q===0||F.cmpn(1)===0)break;M.isub(F)}while(!0);return F.iushln(K)},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){J(typeof H==="number");var M=H%26,F=(H-M)/26,K=1<<M;if(this.length<=F)return this._expand(F+1),this.words[F]|=K,this;var q=K;for(var B=F;q!==0&&B<this.length;B++){var P=this.words[B]|0;P+=q,q=P>>>26,P&=67108863,this.words[B]=P}if(q!==0)this.words[B]=q,this.length++;return this},X.prototype.isZero=function(){return this.length===1&&this.words[0]===0},X.prototype.cmpn=function(H){var M=H<0;if(this.negative!==0&&!M)return-1;if(this.negative===0&&M)return 1;this.strip();var F;if(this.length>1)F=1;else{if(M)H=-H;J(H<=67108863,"Number is too big");var K=this.words[0]|0;F=K===H?0:K<H?-1:1}if(this.negative!==0)return-F|0;return F},X.prototype.cmp=function(H){if(this.negative!==0&&H.negative===0)return-1;if(this.negative===0&&H.negative!==0)return 1;var M=this.ucmp(H);if(this.negative!==0)return-M|0;return M},X.prototype.ucmp=function(H){if(this.length>H.length)return 1;if(this.length<H.length)return-1;var M=0;for(var F=this.length-1;F>=0;F--){var K=this.words[F]|0,q=H.words[F]|0;if(K===q)continue;if(K<q)M=-1;else if(K>q)M=1;break}return M},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 r(H)},X.prototype.toRed=function(H){return J(!this.red,"Already a number in reduction context"),J(this.negative===0,"red works only with positives"),H.convertTo(this)._forceRed(H)},X.prototype.fromRed=function(){return J(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 J(!this.red,"Already a number in reduction context"),this._forceRed(H)},X.prototype.redAdd=function(H){return J(this.red,"redAdd works only with red numbers"),this.red.add(this,H)},X.prototype.redIAdd=function(H){return J(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,H)},X.prototype.redSub=function(H){return J(this.red,"redSub works only with red numbers"),this.red.sub(this,H)},X.prototype.redISub=function(H){return J(this.red,"redISub works only with red numbers"),this.red.isub(this,H)},X.prototype.redShl=function(H){return J(this.red,"redShl works only with red numbers"),this.red.shl(this,H)},X.prototype.redMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.mul(this,H)},X.prototype.redIMul=function(H){return J(this.red,"redMul works only with red numbers"),this.red._verify2(this,H),this.red.imul(this,H)},X.prototype.redSqr=function(){return J(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},X.prototype.redISqr=function(){return J(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},X.prototype.redSqrt=function(){return J(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},X.prototype.redInvm=function(){return J(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},X.prototype.redNeg=function(){return J(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},X.prototype.redPow=function(H){return J(this.red&&!H.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,H)};var E={k256:null,p224:null,p192:null,p25519:null};function v(j,H){this.name=j,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 M=H,F;do this.split(M,this.tmp),M=this.imulK(M),M=M.iadd(this.tmp),F=M.bitLength();while(F>this.n);var K=F<this.n?-1:M.ucmp(this.p);if(K===0)M.words[0]=0,M.length=1;else if(K>0)M.isub(this.p);else if(M.strip!==void 0)M.strip();else M._strip();return M},v.prototype.split=function(H,M){H.iushrn(this.n,0,M)},v.prototype.imulK=function(H){return H.imul(this.k)};function h(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}Q(h,v),h.prototype.split=function(H,M){var F=4194303,K=Math.min(H.length,9);for(var q=0;q<K;q++)M.words[q]=H.words[q];if(M.length=K,H.length<=9){H.words[0]=0,H.length=1;return}var B=H.words[9];M.words[M.length++]=B&F;for(q=10;q<H.length;q++){var P=H.words[q]|0;H.words[q-10]=(P&F)<<4|B>>>22,B=P}if(B>>>=22,H.words[q-10]=B,B===0&&H.length>10)H.length-=10;else H.length-=9},h.prototype.imulK=function(H){H.words[H.length]=0,H.words[H.length+1]=0,H.length+=2;var M=0;for(var F=0;F<H.length;F++){var K=H.words[F]|0;M+=K*977,H.words[F]=M&67108863,M=K*64+(M/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")}Q(f,v);function d(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}Q(d,v);function a(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}Q(a,v),a.prototype.imulK=function(H){var M=0;for(var F=0;F<H.length;F++){var K=(H.words[F]|0)*19+M,q=K&67108863;K>>>=26,H.words[F]=q,M=K}if(M!==0)H.words[H.length++]=M;return H},X._prime=function(H){if(E[H])return E[H];var M;if(H==="k256")M=new h;else if(H==="p224")M=new f;else if(H==="p192")M=new d;else if(H==="p25519")M=new a;else throw Error("Unknown prime "+H);return E[H]=M,M};function r(j){if(typeof j==="string"){var H=X._prime(j);this.m=H.p,this.prime=H}else J(j.gtn(1),"modulus must be greater than 1"),this.m=j,this.prime=null}r.prototype._verify1=function(H){J(H.negative===0,"red works only with positives"),J(H.red,"red works only with red numbers")},r.prototype._verify2=function(H,M){J((H.negative|M.negative)===0,"red works only with positives"),J(H.red&&H.red===M.red,"red works only with red numbers")},r.prototype.imod=function(H){if(this.prime)return this.prime.ireduce(H)._forceRed(this);return H.umod(this.m)._forceRed(this)},r.prototype.neg=function(H){if(H.isZero())return H.clone();return this.m.sub(H)._forceRed(this)},r.prototype.add=function(H,M){this._verify2(H,M);var F=H.add(M);if(F.cmp(this.m)>=0)F.isub(this.m);return F._forceRed(this)},r.prototype.iadd=function(H,M){this._verify2(H,M);var F=H.iadd(M);if(F.cmp(this.m)>=0)F.isub(this.m);return F},r.prototype.sub=function(H,M){this._verify2(H,M);var F=H.sub(M);if(F.cmpn(0)<0)F.iadd(this.m);return F._forceRed(this)},r.prototype.isub=function(H,M){this._verify2(H,M);var F=H.isub(M);if(F.cmpn(0)<0)F.iadd(this.m);return F},r.prototype.shl=function(H,M){return this._verify1(H),this.imod(H.ushln(M))},r.prototype.imul=function(H,M){return this._verify2(H,M),this.imod(H.imul(M))},r.prototype.mul=function(H,M){return this._verify2(H,M),this.imod(H.mul(M))},r.prototype.isqr=function(H){return this.imul(H,H.clone())},r.prototype.sqr=function(H){return this.mul(H,H)},r.prototype.sqrt=function(H){if(H.isZero())return H.clone();var M=this.m.andln(3);if(J(M%2===1),M===3){var F=this.m.add(new X(1)).iushrn(2);return this.pow(H,F)}var K=this.m.subn(1),q=0;while(!K.isZero()&&K.andln(1)===0)q++,K.iushrn(1);J(!K.isZero());var B=new X(1).toRed(this),P=B.redNeg(),z=this.m.subn(1).iushrn(1),W=this.m.bitLength();W=new X(2*W*W).toRed(this);while(this.pow(W,z).cmp(P)!==0)W.redIAdd(P);var R=this.pow(W,K),x=this.pow(H,K.addn(1).iushrn(1)),g=this.pow(H,K),y=q;while(g.cmp(B)!==0){var n=g;for(var t=0;n.cmp(B)!==0;t++)n=n.redSqr();J(t<y);var Z0=this.pow(R,new X(1).iushln(y-t-1));x=x.redMul(Z0),R=Z0.redSqr(),g=g.redMul(R),y=t}return x},r.prototype.invm=function(H){var M=H._invmp(this.m);if(M.negative!==0)return M.negative=0,this.imod(M).redNeg();else return this.imod(M)},r.prototype.pow=function(H,M){if(M.isZero())return new X(1).toRed(this);if(M.cmpn(1)===0)return H.clone();var F=4,K=Array(1<<F);K[0]=new X(1).toRed(this),K[1]=H;for(var q=2;q<K.length;q++)K[q]=this.mul(K[q-1],H);var B=K[0],P=0,z=0,W=M.bitLength()%26;if(W===0)W=26;for(q=M.length-1;q>=0;q--){var R=M.words[q];for(var x=W-1;x>=0;x--){var g=R>>x&1;if(B!==K[0])B=this.sqr(B);if(g===0&&P===0){z=0;continue}if(P<<=1,P|=g,z++,z!==F&&(q!==0||x!==0))continue;B=this.mul(B,K[P]),z=0,P=0}W=26}return B},r.prototype.convertTo=function(H){var M=H.umod(this.m);return M===H?M.clone():M},r.prototype.convertFrom=function(H){var M=H.clone();return M.red=null,M},X.mont=function(H){return new Y0(H)};function Y0(j){if(r.call(this,j),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)}Q(Y0,r),Y0.prototype.convertTo=function(H){return this.imod(H.ushln(this.shift))},Y0.prototype.convertFrom=function(H){var M=this.imod(H.mul(this.rinv));return M.red=null,M},Y0.prototype.imul=function(H,M){if(H.isZero()||M.isZero())return H.words[0]=0,H.length=1,H;var F=H.imul(M),K=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=F.isub(K).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Y0.prototype.mul=function(H,M){if(H.isZero()||M.isZero())return new X(0)._forceRed(this);var F=H.mul(M),K=F.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),q=F.isub(K).iushrn(this.shift),B=q;if(q.cmp(this.m)>=0)B=q.isub(this.m);else if(q.cmpn(0)<0)B=q.iadd(this.m);return B._forceRed(this)},Y0.prototype.invm=function(H){var M=this.imod(H._invmp(this.m).mul(this.r2));return M._forceRed(this)}})(typeof AQ>"u"||AQ,rG)});var iG=i((o7,_Q)=>{if(typeof Object.create==="function")_Q.exports=function(Z,J){if(J)Z.super_=J,Z.prototype=Object.create(J.prototype,{constructor:{value:Z,enumerable:!1,writable:!0,configurable:!0}})};else _Q.exports=function(Z,J){if(J){Z.super_=J;var Q=function(){};Q.prototype=J.prototype,Z.prototype=new Q,Z.prototype.constructor=Z}}});var N$=i((l7,FQ)=>{try{if(uZ=I$("util"),typeof uZ.inherits!=="function")throw"";FQ.exports=uZ.inherits}catch($){FQ.exports=iG()}var uZ});var dZ=i((r7,tG)=>{var mZ=I$("buffer"),a$=mZ.Buffer,e0={},$$;for($$ in mZ){if(!mZ.hasOwnProperty($$))continue;if($$==="SlowBuffer"||$$==="Buffer")continue;e0[$$]=mZ[$$]}var e$=e0.Buffer={};for($$ in a$){if(!a$.hasOwnProperty($$))continue;if($$==="allocUnsafe"||$$==="allocUnsafeSlow")continue;e$[$$]=a$[$$]}e0.Buffer.prototype=a$.prototype;if(!e$.from||e$.from===Uint8Array.from)e$.from=function($,Z,J){if(typeof $==="number")throw TypeError('The "value" argument must not be of type number. Received type '+typeof $);if($&&typeof $.length>"u")throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof $);return a$($,Z,J)};if(!e$.alloc)e$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError('The "size" argument must be of type number. Received type '+typeof $);if($<0||$>=2147483648)throw RangeError('The value "'+$+'" is invalid for option "size"');var Q=a$($);if(!Z||Z.length===0)Q.fill(0);else if(typeof J==="string")Q.fill(Z,J);else Q.fill(Z);return Q};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}tG.exports=e0});var nZ=i((B9)=>{var L9=N$();function Z$($){this._reporterState={obj:null,path:[],options:$||{},errors:[]}}B9.Reporter=Z$;Z$.prototype.isError=function(Z){return Z instanceof $Z};Z$.prototype.save=function(){let Z=this._reporterState;return{obj:Z.obj,pathLen:Z.path.length}};Z$.prototype.restore=function(Z){let J=this._reporterState;J.obj=Z.obj,J.path=J.path.slice(0,Z.pathLen)};Z$.prototype.enterKey=function(Z){return this._reporterState.path.push(Z)};Z$.prototype.exitKey=function(Z){let J=this._reporterState;J.path=J.path.slice(0,Z-1)};Z$.prototype.leaveKey=function(Z,J,Q){let X=this._reporterState;if(this.exitKey(Z),X.obj!==null)X.obj[J]=Q};Z$.prototype.path=function(){return this._reporterState.path.join("/")};Z$.prototype.enterObject=function(){let Z=this._reporterState,J=Z.obj;return Z.obj={},J};Z$.prototype.leaveObject=function(Z){let J=this._reporterState,Q=J.obj;return J.obj=Z,Q};Z$.prototype.error=function(Z){let J,Q=this._reporterState,X=Z instanceof $Z;if(X)J=Z;else J=new $Z(Q.path.map(function(G){return"["+JSON.stringify(G)+"]"}).join(""),Z.message||Z,Z.stack);if(!Q.options.partial)throw J;if(!X)Q.errors.push(J);return J};Z$.prototype.wrapResult=function(Z){let J=this._reporterState;if(!J.options.partial)return Z;return{result:this.isError(Z)?null:Z,errors:J.errors}};function $Z($,Z){this.path=$,this.rethrow(Z)}L9($Z,Error);$Z.prototype.rethrow=function(Z){if(this.message=Z+" at: "+(this.path||"(shallow)"),Error.captureStackTrace)Error.captureStackTrace(this,$Z);if(!this.stack)try{throw Error(this.message)}catch(J){this.stack=J.stack}return this}});var QZ=i((w9)=>{var C9=N$(),sZ=nZ().Reporter,ZZ=dZ().Buffer;function J$($,Z){if(sZ.call(this,Z),!ZZ.isBuffer($)){this.error("Input not Buffer");return}this.base=$,this.offset=0,this.length=$.length}C9(J$,sZ);w9.DecoderBuffer=J$;J$.isDecoderBuffer=function(Z){if(Z instanceof J$)return!0;return typeof Z==="object"&&ZZ.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"};J$.prototype.save=function(){return{offset:this.offset,reporter:sZ.prototype.save.call(this)}};J$.prototype.restore=function(Z){let J=new J$(this.base);return J.offset=Z.offset,J.length=this.offset,this.offset=Z.offset,sZ.prototype.restore.call(this,Z.reporter),J};J$.prototype.isEmpty=function(){return this.offset===this.length};J$.prototype.readUInt8=function(Z){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(Z||"DecoderBuffer overrun")};J$.prototype.skip=function(Z,J){if(!(this.offset+Z<=this.length))return this.error(J||"DecoderBuffer overrun");let Q=new J$(this.base);return Q._reporterState=this._reporterState,Q.offset=this.offset,Q.length=this.offset+Z,this.offset+=Z,Q};J$.prototype.raw=function(Z){return this.base.slice(Z?Z.offset:this.offset,this.length)};function JZ($,Z){if(Array.isArray($))this.length=0,this.value=$.map(function(J){if(!JZ.isEncoderBuffer(J))J=new JZ(J,Z);return this.length+=J.length,J},this);else if(typeof $==="number"){if(!(0<=$&&$<=255))return Z.error("non-byte EncoderBuffer value");this.value=$,this.length=1}else if(typeof $==="string")this.value=$,this.length=ZZ.byteLength($);else if(ZZ.isBuffer($))this.value=$,this.length=$.length;else return Z.error("Unsupported type: "+typeof $)}w9.EncoderBuffer=JZ;JZ.isEncoderBuffer=function(Z){if(Z instanceof JZ)return!0;return typeof Z==="object"&&Z.constructor.name==="EncoderBuffer"&&typeof Z.length==="number"&&typeof Z.join==="function"};JZ.prototype.join=function(Z,J){if(!Z)Z=ZZ.alloc(this.length);if(!J)J=0;if(this.length===0)return Z;if(Array.isArray(this.value))this.value.forEach(function(Q){Q.join(Z,J),J+=Q.length});else{if(typeof this.value==="number")Z[J]=this.value;else if(typeof this.value==="string")Z.write(this.value,J);else if(ZZ.isBuffer(this.value))this.value.copy(Z,J);J+=this.length}return Z}});var $Y=i((a7,eG)=>{eG.exports=aG;function aG($,Z){if(!$)throw Error(Z||"Assertion failed")}aG.equal=function(Z,J,Q){if(Z!=J)throw Error(Q||"Assertion failed: "+Z+" != "+J)}});var oZ=i((e7,JY)=>{var T9=nZ().Reporter,D9=QZ().EncoderBuffer,N9=QZ().DecoderBuffer,l0=$Y(),ZY=["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"],k9=["key","obj","use","optional","explicit","implicit","def","choice","any","contains"].concat(ZY),v9=["_peekTag","_decodeTag","_use","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeInt","_decodeBool","_decodeList","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool"];function e($,Z,J){let Q={};if(this._baseState=Q,Q.name=J,Q.enc=$,Q.parent=Z||null,Q.children=null,Q.tag=null,Q.args=null,Q.reverseArgs=null,Q.choice=null,Q.optional=!1,Q.any=!1,Q.obj=!1,Q.use=null,Q.useDecoder=null,Q.key=null,Q.default=null,Q.explicit=null,Q.implicit=null,Q.contains=null,!Q.parent)Q.children=[],this._wrap()}JY.exports=e;var x9=["enc","parent","children","tag","args","reverseArgs","choice","optional","any","obj","use","alteredUse","key","default","explicit","implicit","contains"];e.prototype.clone=function(){let Z=this._baseState,J={};x9.forEach(function(X){J[X]=Z[X]});let Q=new this.constructor(J.parent);return Q._baseState=J,Q};e.prototype._wrap=function(){let Z=this._baseState;k9.forEach(function(J){this[J]=function(){let X=new this.constructor(this);return Z.children.push(X),X[J].apply(X,arguments)}},this)};e.prototype._init=function(Z){let J=this._baseState;l0(J.parent===null),Z.call(this),J.children=J.children.filter(function(Q){return Q._baseState.parent===this},this),l0.equal(J.children.length,1,"Root node can have only one child")};e.prototype._useArgs=function(Z){let J=this._baseState,Q=Z.filter(function(X){return X instanceof this.constructor},this);if(Z=Z.filter(function(X){return!(X instanceof this.constructor)},this),Q.length!==0)l0(J.children===null),J.children=Q,Q.forEach(function(X){X._baseState.parent=this},this);if(Z.length!==0)l0(J.args===null),J.args=Z,J.reverseArgs=Z.map(function(X){if(typeof X!=="object"||X.constructor!==Object)return X;let G={};return Object.keys(X).forEach(function(Y){if(Y==(Y|0))Y|=0;let V=X[Y];G[V]=Y}),G})};v9.forEach(function($){e.prototype[$]=function(){let J=this._baseState;throw Error($+" not implemented for encoding: "+J.enc)}});ZY.forEach(function($){e.prototype[$]=function(){let J=this._baseState,Q=Array.prototype.slice.call(arguments);return l0(J.tag===null),J.tag=$,this._useArgs(Q),this}});e.prototype.use=function(Z){l0(Z);let J=this._baseState;return l0(J.use===null),J.use=Z,this};e.prototype.optional=function(){let Z=this._baseState;return Z.optional=!0,this};e.prototype.def=function(Z){let J=this._baseState;return l0(J.default===null),J.default=Z,J.optional=!0,this};e.prototype.explicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.explicit=Z,this};e.prototype.implicit=function(Z){let J=this._baseState;return l0(J.explicit===null&&J.implicit===null),J.implicit=Z,this};e.prototype.obj=function(){let Z=this._baseState,J=Array.prototype.slice.call(arguments);if(Z.obj=!0,J.length!==0)this._useArgs(J);return this};e.prototype.key=function(Z){let J=this._baseState;return l0(J.key===null),J.key=Z,this};e.prototype.any=function(){let Z=this._baseState;return Z.any=!0,this};e.prototype.choice=function(Z){let J=this._baseState;return l0(J.choice===null),J.choice=Z,this._useArgs(Object.keys(Z).map(function(Q){return Z[Q]})),this};e.prototype.contains=function(Z){let J=this._baseState;return l0(J.use===null),J.contains=Z,this};e.prototype._decode=function(Z,J){let Q=this._baseState;if(Q.parent===null)return Z.wrapResult(Q.children[0]._decode(Z,J));let X=Q.default,G=!0,Y=null;if(Q.key!==null)Y=Z.enterKey(Q.key);if(Q.optional){let U=null;if(Q.explicit!==null)U=Q.explicit;else if(Q.implicit!==null)U=Q.implicit;else if(Q.tag!==null)U=Q.tag;if(U===null&&!Q.any){let O=Z.save();try{if(Q.choice===null)this._decodeGeneric(Q.tag,Z,J);else this._decodeChoice(Z,J);G=!0}catch(_){G=!1}Z.restore(O)}else if(G=this._peekTag(Z,U,Q.any),Z.isError(G))return G}let V;if(Q.obj&&G)V=Z.enterObject();if(G){if(Q.explicit!==null){let O=this._decodeTag(Z,Q.explicit);if(Z.isError(O))return O;Z=O}let U=Z.offset;if(Q.use===null&&Q.choice===null){let O;if(Q.any)O=Z.save();let _=this._decodeTag(Z,Q.implicit!==null?Q.implicit:Q.tag,Q.any);if(Z.isError(_))return _;if(Q.any)X=Z.raw(O);else Z=_}if(J&&J.track&&Q.tag!==null)J.track(Z.path(),U,Z.length,"tagged");if(J&&J.track&&Q.tag!==null)J.track(Z.path(),Z.offset,Z.length,"content");if(Q.any);else if(Q.choice===null)X=this._decodeGeneric(Q.tag,Z,J);else X=this._decodeChoice(Z,J);if(Z.isError(X))return X;if(!Q.any&&Q.choice===null&&Q.children!==null)Q.children.forEach(function(_){_._decode(Z,J)});if(Q.contains&&(Q.tag==="octstr"||Q.tag==="bitstr")){let O=new N9(X);X=this._getUse(Q.contains,Z._reporterState.obj)._decode(O,J)}}if(Q.obj&&G)X=Z.leaveObject(V);if(Q.key!==null&&(X!==null||G===!0))Z.leaveKey(Y,Q.key,X);else if(Y!==null)Z.exitKey(Y);return X};e.prototype._decodeGeneric=function(Z,J,Q){let X=this._baseState;if(Z==="seq"||Z==="set")return null;if(Z==="seqof"||Z==="setof")return this._decodeList(J,Z,X.args[0],Q);else if(/str$/.test(Z))return this._decodeStr(J,Z,Q);else if(Z==="objid"&&X.args)return this._decodeObjid(J,X.args[0],X.args[1],Q);else if(Z==="objid")return this._decodeObjid(J,null,null,Q);else if(Z==="gentime"||Z==="utctime")return this._decodeTime(J,Z,Q);else if(Z==="null_")return this._decodeNull(J,Q);else if(Z==="bool")return this._decodeBool(J,Q);else if(Z==="objDesc")return this._decodeStr(J,Z,Q);else if(Z==="int"||Z==="enum")return this._decodeInt(J,X.args&&X.args[0],Q);if(X.use!==null)return this._getUse(X.use,J._reporterState.obj)._decode(J,Q);else return J.error("unknown tag: "+Z)};e.prototype._getUse=function(Z,J){let Q=this._baseState;if(Q.useDecoder=this._use(Z,J),l0(Q.useDecoder._baseState.parent===null),Q.useDecoder=Q.useDecoder._baseState.children[0],Q.implicit!==Q.useDecoder._baseState.implicit)Q.useDecoder=Q.useDecoder.clone(),Q.useDecoder._baseState.implicit=Q.implicit;return Q.useDecoder};e.prototype._decodeChoice=function(Z,J){let Q=this._baseState,X=null,G=!1;if(Object.keys(Q.choice).some(function(Y){let V=Z.save(),U=Q.choice[Y];try{let O=U._decode(Z,J);if(Z.isError(O))return!1;X={type:Y,value:O},G=!0}catch(O){return Z.restore(V),!1}return!0},this),!G)return Z.error("Choice not matched");return X};e.prototype._createEncoderBuffer=function(Z){return new D9(Z,this.reporter)};e.prototype._encode=function(Z,J,Q){let X=this._baseState;if(X.default!==null&&X.default===Z)return;let G=this._encodeValue(Z,J,Q);if(G===void 0)return;if(this._skipDefault(G,J,Q))return;return G};e.prototype._encodeValue=function(Z,J,Q){let X=this._baseState;if(X.parent===null)return X.children[0]._encode(Z,J||new T9);let G=null;if(this.reporter=J,X.optional&&Z===void 0)if(X.default!==null)Z=X.default;else return;let Y=null,V=!1;if(X.any)G=this._createEncoderBuffer(Z);else if(X.choice)G=this._encodeChoice(Z,J);else if(X.contains)Y=this._getUse(X.contains,Q)._encode(Z,J),V=!0;else if(X.children)Y=X.children.map(function(U){if(U._baseState.tag==="null_")return U._encode(null,J,Z);if(U._baseState.key===null)return J.error("Child should have a key");let O=J.enterKey(U._baseState.key);if(typeof Z!=="object")return J.error("Child expected, but input is not object");let _=U._encode(Z[U._baseState.key],J,Z);return J.leaveKey(O),_},this).filter(function(U){return U}),Y=this._createEncoderBuffer(Y);else if(X.tag==="seqof"||X.tag==="setof"){if(!(X.args&&X.args.length===1))return J.error("Too many args for : "+X.tag);if(!Array.isArray(Z))return J.error("seqof/setof, but data is not Array");let U=this.clone();U._baseState.implicit=null,Y=this._createEncoderBuffer(Z.map(function(O){let _=this._baseState;return this._getUse(_.args[0],Z)._encode(O,J)},U))}else if(X.use!==null)G=this._getUse(X.use,Q)._encode(Z,J);else Y=this._encodePrimitive(X.tag,Z),V=!0;if(!X.any&&X.choice===null){let U=X.implicit!==null?X.implicit:X.tag,O=X.implicit===null?"universal":"context";if(U===null){if(X.use===null)J.error("Tag could be omitted only for .use()")}else if(X.use===null)G=this._encodeComposite(U,V,O,Y)}if(X.explicit!==null)G=this._encodeComposite(X.explicit,!1,"context",G);return G};e.prototype._encodeChoice=function(Z,J){let Q=this._baseState,X=Q.choice[Z.type];if(!X)l0(!1,Z.type+" not found in "+JSON.stringify(Object.keys(Q.choice)));return X._encode(Z.value,J)};e.prototype._encodePrimitive=function(Z,J){let Q=this._baseState;if(/str$/.test(Z))return this._encodeStr(J,Z);else if(Z==="objid"&&Q.args)return this._encodeObjid(J,Q.reverseArgs[0],Q.args[1]);else if(Z==="objid")return this._encodeObjid(J,null,null);else if(Z==="gentime"||Z==="utctime")return this._encodeTime(J,Z);else if(Z==="null_")return this._encodeNull();else if(Z==="int"||Z==="enum")return this._encodeInt(J,Q.args&&Q.reverseArgs[0]);else if(Z==="bool")return this._encodeBool(J);else if(Z==="objDesc")return this._encodeStr(J,Z);else throw Error("Unsupported tag: "+Z)};e.prototype._isNumstr=function(Z){return/^[0-9 ]*$/.test(Z)};e.prototype._isPrintstr=function(Z){return/^[A-Za-z0-9 '()+,-./:=?]*$/.test(Z)}});var lZ=i((f9)=>{function QY($){let Z={};return Object.keys($).forEach(function(J){if((J|0)==J)J=J|0;let Q=$[J];Z[Q]=J}),Z}f9.tagClass={0:"universal",1:"application",2:"context",3:"private"};f9.tagClassByName=QY(f9.tagClass);f9.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"};f9.tagByName=QY(f9.tag)});var zQ=i((Z3,WY)=>{var h9=N$(),z$=dZ().Buffer,YY=oZ(),KQ=lZ();function HY($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new Y$,this.tree._init($.body)}WY.exports=HY;HY.prototype.encode=function(Z,J){return this.tree._encode(Z,J).join()};function Y$($){YY.call(this,"der",$)}h9(Y$,YY);Y$.prototype._encodeComposite=function(Z,J,Q,X){let G=b9(Z,J,Q,this.reporter);if(X.length<128){let U=z$.alloc(2);return U[0]=G,U[1]=X.length,this._createEncoderBuffer([U,X])}let Y=1;for(let U=X.length;U>=256;U>>=8)Y++;let V=z$.alloc(2+Y);V[0]=G,V[1]=128|Y;for(let U=1+Y,O=X.length;O>0;U--,O>>=8)V[U]=O&255;return this._createEncoderBuffer([V,X])};Y$.prototype._encodeStr=function(Z,J){if(J==="bitstr")return this._createEncoderBuffer([Z.unused|0,Z.data]);else if(J==="bmpstr"){let Q=z$.alloc(Z.length*2);for(let X=0;X<Z.length;X++)Q.writeUInt16BE(Z.charCodeAt(X),X*2);return this._createEncoderBuffer(Q)}else if(J==="numstr"){if(!this._isNumstr(Z))return this.reporter.error("Encoding of string type: numstr supports only digits and space");return this._createEncoderBuffer(Z)}else if(J==="printstr"){if(!this._isPrintstr(Z))return this.reporter.error("Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark");return this._createEncoderBuffer(Z)}else if(/str$/.test(J))return this._createEncoderBuffer(Z);else if(J==="objDesc")return this._createEncoderBuffer(Z);else return this.reporter.error("Encoding of string type: "+J+" unsupported")};Y$.prototype._encodeObjid=function(Z,J,Q){if(typeof Z==="string"){if(!J)return this.reporter.error("string objid given, but no values map found");if(!J.hasOwnProperty(Z))return this.reporter.error("objid not found in values map");Z=J[Z].split(/[\s.]+/g);for(let V=0;V<Z.length;V++)Z[V]|=0}else if(Array.isArray(Z)){Z=Z.slice();for(let V=0;V<Z.length;V++)Z[V]|=0}if(!Array.isArray(Z))return this.reporter.error("objid() should be either array or string, got: "+JSON.stringify(Z));if(!Q){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 V=0;V<Z.length;V++){let U=Z[V];for(X++;U>=128;U>>=7)X++}let G=z$.alloc(X),Y=G.length-1;for(let V=Z.length-1;V>=0;V--){let U=Z[V];G[Y--]=U&127;while((U>>=7)>0)G[Y--]=128|U&127}return this._createEncoderBuffer(G)};function Q$($){if($<10)return"0"+$;else return $}Y$.prototype._encodeTime=function(Z,J){let Q,X=new Date(Z);if(J==="gentime")Q=[Q$(X.getUTCFullYear()),Q$(X.getUTCMonth()+1),Q$(X.getUTCDate()),Q$(X.getUTCHours()),Q$(X.getUTCMinutes()),Q$(X.getUTCSeconds()),"Z"].join("");else if(J==="utctime")Q=[Q$(X.getUTCFullYear()%100),Q$(X.getUTCMonth()+1),Q$(X.getUTCDate()),Q$(X.getUTCHours()),Q$(X.getUTCMinutes()),Q$(X.getUTCSeconds()),"Z"].join("");else this.reporter.error("Encoding "+J+" time is not supported yet");return this._encodeStr(Q,"octstr")};Y$.prototype._encodeNull=function(){return this._createEncoderBuffer("")};Y$.prototype._encodeInt=function(Z,J){if(typeof Z==="string"){if(!J)return this.reporter.error("String int or enum given, but no values map");if(!J.hasOwnProperty(Z))return this.reporter.error("Values map doesn't contain: "+JSON.stringify(Z));Z=J[Z]}if(typeof Z!=="number"&&!z$.isBuffer(Z)){let G=Z.toArray();if(!Z.sign&&G[0]&128)G.unshift(0);Z=z$.from(G)}if(z$.isBuffer(Z)){let G=Z.length;if(Z.length===0)G++;let Y=z$.alloc(G);if(Z.copy(Y),Z.length===0)Y[0]=0;return this._createEncoderBuffer(Y)}if(Z<128)return this._createEncoderBuffer(Z);if(Z<256)return this._createEncoderBuffer([0,Z]);let Q=1;for(let G=Z;G>=256;G>>=8)Q++;let X=Array(Q);for(let G=X.length-1;G>=0;G--)X[G]=Z&255,Z>>=8;if(X[0]&128)X.unshift(0);return this._createEncoderBuffer(z$.from(X))};Y$.prototype._encodeBool=function(Z){return this._createEncoderBuffer(Z?255:0)};Y$.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getEncoder("der").tree};Y$.prototype._skipDefault=function(Z,J,Q){let X=this._baseState,G;if(X.default===null)return!1;let Y=Z.join();if(X.defaultBuffer===void 0)X.defaultBuffer=this._encodeValue(X.default,J,Q).join();if(Y.length!==X.defaultBuffer.length)return!1;for(G=0;G<Y.length;G++)if(Y[G]!==X.defaultBuffer[G])return!1;return!0};function b9($,Z,J,Q){let X;if($==="seqof")$="seq";else if($==="setof")$="set";if(KQ.tagByName.hasOwnProperty($))X=KQ.tagByName[$];else if(typeof $==="number"&&($|0)===$)X=$;else return Q.error("Unknown tag: "+$);if(X>=31)return Q.error("Multi-octet tag encoding unsupported");if(!Z)X|=32;return X|=KQ.tagClassByName[J||"universal"]<<6,X}});var VY=i((J3,UY)=>{var c9=N$(),RQ=zQ();function qQ($){RQ.call(this,$),this.enc="pem"}c9(qQ,RQ);UY.exports=qQ;qQ.prototype.encode=function(Z,J){let X=RQ.prototype.encode.call(this,Z).toString("base64"),G=["-----BEGIN "+J.label+"-----"];for(let Y=0;Y<X.length;Y+=64)G.push(X.slice(Y,Y+64));return G.push("-----END "+J.label+"-----"),G.join(`
|
|
6
|
+
`)}});var IQ=i((AY)=>{var MY=AY;MY.der=zQ();MY.pem=VY()});var LQ=i((X3,RY)=>{var p9=N$(),u9=OQ(),OY=QZ().DecoderBuffer,FY=oZ(),_Y=lZ();function KY($){this.enc="der",this.name=$.name,this.entity=$,this.tree=new i0,this.tree._init($.body)}RY.exports=KY;KY.prototype.decode=function(Z,J){if(!OY.isDecoderBuffer(Z))Z=new OY(Z,J);return this.tree._decode(Z,J)};function i0($){FY.call(this,"der",$)}p9(i0,FY);i0.prototype._peekTag=function(Z,J,Q){if(Z.isEmpty())return!1;let X=Z.save(),G=jQ(Z,'Failed to peek tag: "'+J+'"');if(Z.isError(G))return G;return Z.restore(X),G.tag===J||G.tagStr===J||G.tagStr+"of"===J||Q};i0.prototype._decodeTag=function(Z,J,Q){let X=jQ(Z,'Failed to decode tag of "'+J+'"');if(Z.isError(X))return X;let G=zY(Z,X.primitive,'Failed to get length of "'+J+'"');if(Z.isError(G))return G;if(!Q&&X.tag!==J&&X.tagStr!==J&&X.tagStr+"of"!==J)return Z.error('Failed to match tag: "'+J+'"');if(X.primitive||G!==null)return Z.skip(G,'Failed to match body of: "'+J+'"');let Y=Z.save(),V=this._skipUntilEnd(Z,'Failed to skip indefinite length body: "'+this.tag+'"');if(Z.isError(V))return V;return G=Z.offset-Y.offset,Z.restore(Y),Z.skip(G,'Failed to match body of: "'+J+'"')};i0.prototype._skipUntilEnd=function(Z,J){for(;;){let Q=jQ(Z,J);if(Z.isError(Q))return Q;let X=zY(Z,Q.primitive,J);if(Z.isError(X))return X;let G;if(Q.primitive||X!==null)G=Z.skip(X);else G=this._skipUntilEnd(Z,J);if(Z.isError(G))return G;if(Q.tagStr==="end")break}};i0.prototype._decodeList=function(Z,J,Q,X){let G=[];while(!Z.isEmpty()){let Y=this._peekTag(Z,"end");if(Z.isError(Y))return Y;let V=Q.decode(Z,"der",X);if(Z.isError(V)&&Y)break;G.push(V)}return G};i0.prototype._decodeStr=function(Z,J){if(J==="bitstr"){let Q=Z.readUInt8();if(Z.isError(Q))return Q;return{unused:Q,data:Z.raw()}}else if(J==="bmpstr"){let Q=Z.raw();if(Q.length%2===1)return Z.error("Decoding of string type: bmpstr length mismatch");let X="";for(let G=0;G<Q.length/2;G++)X+=String.fromCharCode(Q.readUInt16BE(G*2));return X}else if(J==="numstr"){let Q=Z.raw().toString("ascii");if(!this._isNumstr(Q))return Z.error("Decoding of string type: numstr unsupported characters");return Q}else if(J==="octstr")return Z.raw();else if(J==="objDesc")return Z.raw();else if(J==="printstr"){let Q=Z.raw().toString("ascii");if(!this._isPrintstr(Q))return Z.error("Decoding of string type: printstr unsupported characters");return Q}else if(/str$/.test(J))return Z.raw().toString();else return Z.error("Decoding of string type: "+J+" unsupported")};i0.prototype._decodeObjid=function(Z,J,Q){let X,G=[],Y=0,V=0;while(!Z.isEmpty())if(V=Z.readUInt8(),Y<<=7,Y|=V&127,(V&128)===0)G.push(Y),Y=0;if(V&128)G.push(Y);let U=G[0]/40|0,O=G[0]%40;if(Q)X=G;else X=[U,O].concat(G.slice(1));if(J){let _=J[X.join(" ")];if(_===void 0)_=J[X.join(".")];if(_!==void 0)X=_}return X};i0.prototype._decodeTime=function(Z,J){let Q=Z.raw().toString(),X,G,Y,V,U,O;if(J==="gentime")X=Q.slice(0,4)|0,G=Q.slice(4,6)|0,Y=Q.slice(6,8)|0,V=Q.slice(8,10)|0,U=Q.slice(10,12)|0,O=Q.slice(12,14)|0;else if(J==="utctime")if(X=Q.slice(0,2)|0,G=Q.slice(2,4)|0,Y=Q.slice(4,6)|0,V=Q.slice(6,8)|0,U=Q.slice(8,10)|0,O=Q.slice(10,12)|0,X<70)X=2000+X;else X=1900+X;else return Z.error("Decoding "+J+" time is not supported yet");return Date.UTC(X,G-1,Y,V,U,O,0)};i0.prototype._decodeNull=function(){return null};i0.prototype._decodeBool=function(Z){let J=Z.readUInt8();if(Z.isError(J))return J;else return J!==0};i0.prototype._decodeInt=function(Z,J){let Q=Z.raw(),X=new u9(Q);if(J)X=J[X.toString(10)]||X;return X};i0.prototype._use=function(Z,J){if(typeof Z==="function")Z=Z(J);return Z._getDecoder("der").tree};function jQ($,Z){let J=$.readUInt8(Z);if($.isError(J))return J;let Q=_Y.tagClass[J>>6],X=(J&32)===0;if((J&31)===31){let Y=J;J=0;while((Y&128)===128){if(Y=$.readUInt8(Z),$.isError(Y))return Y;J<<=7,J|=Y&127}}else J&=31;let G=_Y.tag[J];return{cls:Q,primitive:X,tag:J,tagStr:G}}function zY($,Z,J){let Q=$.readUInt8(J);if($.isError(Q))return Q;if(!Z&&Q===128)return null;if((Q&128)===0)return Q;let X=Q&127;if(X>4)return $.error("length octect is too long");Q=0;for(let G=0;G<X;G++){Q<<=8;let Y=$.readUInt8(J);if($.isError(Y))return Y;Q|=Y}return Q}});var IY=i((G3,qY)=>{var m9=N$(),d9=dZ().Buffer,BQ=LQ();function PQ($){BQ.call(this,$),this.enc="pem"}m9(PQ,BQ);qY.exports=PQ;PQ.prototype.decode=function(Z,J){let Q=Z.toString().split(/[\r\n]+/g),X=J.label.toUpperCase(),G=/^-----(BEGIN|END) ([^-]+)-----$/,Y=-1,V=-1;for(let _=0;_<Q.length;_++){let A=Q[_].match(G);if(A===null)continue;if(A[2]!==X)continue;if(Y===-1){if(A[1]!=="BEGIN")break;Y=_}else{if(A[1]!=="END")break;V=_;break}}if(Y===-1||V===-1)throw Error("PEM section not found for: "+X);let U=Q.slice(Y+1,V).join("");U.replace(/[^a-z0-9+/=]+/gi,"");let O=d9.from(U,"base64");return BQ.prototype.decode.call(this,O,J)}});var CQ=i((LY)=>{var jY=LY;jY.der=LQ();jY.pem=IY()});var PY=i((BY)=>{var n9=IQ(),s9=CQ(),o9=N$(),l9=BY;l9.define=function(Z,J){return new XZ(Z,J)};function XZ($,Z){this.name=$,this.body=Z,this.decoders={},this.encoders={}}XZ.prototype._createNamed=function(Z){let J=this.name;function Q(X){this._initNamed(X,J)}return o9(Q,Z),Q.prototype._initNamed=function(G,Y){Z.call(this,G,Y)},new Q(this)};XZ.prototype._getDecoder=function(Z){if(Z=Z||"der",!this.decoders.hasOwnProperty(Z))this.decoders[Z]=this._createNamed(s9[Z]);return this.decoders[Z]};XZ.prototype.decode=function(Z,J,Q){return this._getDecoder(J).decode(Z,Q)};XZ.prototype._getEncoder=function(Z){if(Z=Z||"der",!this.encoders.hasOwnProperty(Z))this.encoders[Z]=this._createNamed(n9[Z]);return this.encoders[Z]};XZ.prototype.encode=function(Z,J,Q){return this._getEncoder(J).encode(Z,Q)}});var wY=i((CY)=>{var rZ=CY;rZ.Reporter=nZ().Reporter;rZ.DecoderBuffer=QZ().DecoderBuffer;rZ.EncoderBuffer=QZ().EncoderBuffer;rZ.Node=oZ()});var TY=i((EY)=>{var SY=EY;SY._reverse=function(Z){let J={};return Object.keys(Z).forEach(function(Q){if((Q|0)==Q)Q=Q|0;let X=Z[Q];J[X]=Q}),J};SY.der=lZ()});var NY=i((DY)=>{var GZ=DY;GZ.bignum=OQ();GZ.define=PY().define;GZ.base=wY();GZ.constants=TY();GZ.decoders=CQ();GZ.encoders=IQ()});var xY=i((wQ,vY)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var iZ=I$("buffer"),O$=iZ.Buffer;function kY($,Z){for(var J in $)Z[J]=$[J]}if(O$.from&&O$.alloc&&O$.allocUnsafe&&O$.allocUnsafeSlow)vY.exports=iZ;else kY(iZ,wQ),wQ.Buffer=y$;function y$($,Z,J){return O$($,Z,J)}y$.prototype=Object.create(O$.prototype);kY(O$,y$);y$.from=function($,Z,J){if(typeof $==="number")throw TypeError("Argument must not be a number");return O$($,Z,J)};y$.alloc=function($,Z,J){if(typeof $!=="number")throw TypeError("Argument must be a number");var Q=O$($);if(Z!==void 0)if(typeof J==="string")Q.fill(Z,J);else Q.fill(Z);else Q.fill(0);return Q};y$.allocUnsafe=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return O$($)};y$.allocUnsafeSlow=function($){if(typeof $!=="number")throw TypeError("Argument must be a number");return iZ.SlowBuffer($)}});var gY=i((M3,fY)=>{function SQ($){var Z=($/8|0)+($%8===0?0:1);return Z}var r9={ES256:SQ(256),ES384:SQ(384),ES512:SQ(521)};function i9($){var Z=r9[$];if(Z)return Z;throw Error('Unknown algorithm "'+$+'"')}fY.exports=i9});var mY=i((A3,uY)=>{var tZ=xY().Buffer,hY=gY(),aZ=128,bY=0,t9=32,a9=16,e9=2,cY=a9|t9|bY<<6,eZ=e9|bY<<6;function $8($){return $.replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function pY($){if(tZ.isBuffer($))return $;else if(typeof $==="string")return tZ.from($,"base64");throw TypeError("ECDSA signature must be a Base64 string or a Buffer")}function Z8($,Z){$=pY($);var J=hY(Z),Q=J+1,X=$.length,G=0;if($[G++]!==cY)throw Error('Could not find expected "seq"');var Y=$[G++];if(Y===(aZ|1))Y=$[G++];if(X-G<Y)throw Error('"seq" specified length of "'+Y+'", only "'+(X-G)+'" remaining');if($[G++]!==eZ)throw Error('Could not find expected "int" for "r"');var V=$[G++];if(X-G-2<V)throw Error('"r" specified length of "'+V+'", only "'+(X-G-2)+'" available');if(Q<V)throw Error('"r" specified length of "'+V+'", max of "'+Q+'" is acceptable');var U=G;if(G+=V,$[G++]!==eZ)throw Error('Could not find expected "int" for "s"');var O=$[G++];if(X-G!==O)throw Error('"s" specified length of "'+O+'", expected "'+(X-G)+'"');if(Q<O)throw Error('"s" specified length of "'+O+'", max of "'+Q+'" is acceptable');var _=G;if(G+=O,G!==X)throw Error('Expected to consume entire buffer, but "'+(X-G)+'" bytes remain');var A=J-V,L=J-O,C=tZ.allocUnsafe(A+V+L+O);for(G=0;G<A;++G)C[G]=0;$.copy(C,G,U+Math.max(-A,0),U+V),G=J;for(var w=G;G<w+L;++G)C[G]=0;return $.copy(C,G,_+Math.max(-L,0),_+O),C=C.toString("base64"),C=$8(C),C}function yY($,Z,J){var Q=0;while(Z+Q<J&&$[Z+Q]===0)++Q;var X=$[Z+Q]>=aZ;if(X)--Q;return Q}function J8($,Z){$=pY($);var J=hY(Z),Q=$.length;if(Q!==J*2)throw TypeError('"'+Z+'" signatures must be "'+J*2+'" bytes, saw "'+Q+'"');var X=yY($,0,J),G=yY($,J,$.length),Y=J-X,V=J-G,U=2+Y+1+1+V,O=U<aZ,_=tZ.allocUnsafe((O?2:3)+U),A=0;if(_[A++]=cY,O)_[A++]=U;else _[A++]=aZ|1,_[A++]=U&255;if(_[A++]=eZ,_[A++]=Y,X<0)_[A++]=0,A+=$.copy(_,A,0,J);else A+=$.copy(_,A,X,J);if(_[A++]=eZ,_[A++]=V,G<0)_[A++]=0,$.copy(_,A,J);else $.copy(_,A,J+G);return _}uY.exports={derToJose:Z8,joseToDer:J8}});var NQ=i((O3,QH)=>{var DQ=NY(),{createHmac:sY,createVerify:Q8,createSign:X8,timingSafeEqual:G8,createPublicKey:Y8,constants:{RSA_PKCS1_PSS_PADDING:oY,RSA_PSS_SALTLEN_DIGEST:lY,RSA_PKCS1_PADDING:rY,RSA_PSS_SALTLEN_MAX_SIGN:H8,RSA_PSS_SALTLEN_AUTO:W8},sign:dY,verify:nY}=I$("crypto"),{joseToDer:U8,derToJose:V8}=mY(),iY=MQ(),{TokenError:X0}=t$(),tY=/[=+/]/g,M8={"=":"","+":"-","/":"_"},aY=/^-----BEGIN(?: (RSA|EC|ENCRYPTED))? PRIVATE KEY-----/,eY=/^-----BEGIN(?: (RSA))? PUBLIC KEY-----/,$J=new iY(1000),EQ=new iY(1000),$H=["HS256","HS384","HS512"],A8=["ES256","ES384","ES512"],TQ=["RS256","RS384","RS512","PS256","PS384","PS512"],O8=["EdDSA"],ZH={"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"]}},_8=DQ.define("PrivateKey",function(){this.seq().obj(this.key("version").int(),this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),F8=DQ.define("PublicKey",function(){this.seq().obj(this.key("algorithm").seq().obj(this.key("algorithm").objid(),this.key("parameters").optional().objid()))}),K8=DQ.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 JH($){return M8[$]}function FZ($,Z,J,Q){return $.set(Z,[J,Q]),J||Q}function z8($){if($.match(eY)||$.includes("-----BEGIN CERTIFICATE-----"))throw new X0(X0.codes.invalidKey,"Public keys are not supported for signing.");let Z=$.trim().match(aY);if(!Z)return"HS256";let J,Q,X;switch(Z[1]){case"RSA":return"RS256";case"EC":J=K8.decode($,"pem",{label:"EC PRIVATE KEY"}),X=J.parameters.value.join(".");break;case"ENCRYPTED":return"ENCRYPTED";default:switch(J=_8.decode($,"pem",{label:"PRIVATE KEY"}),Q=J.algorithm.algorithm.join("."),Q){case"1.2.840.113549.1.1.1":return"RS256";case"1.2.840.10045.2.1":X=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return"EdDSA";default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 private key with OID ${Q}.`)}}let G=ZH[X];if(!G)throw new X0(X0.codes.invalidKey,`Unsupported EC private key with curve ${X}.`);return`ES${G.bits}`}function R8($){let Z=$.match(eY);if($.match(aY))throw new X0(X0.codes.invalidKey,"Private keys are not supported for verifying.");else if(Z&&Z[1]==="RSA")return TQ;else if(!Z&&!$.includes("-----BEGIN CERTIFICATE-----"))return $H;if($.includes("-----BEGIN CERTIFICATE-----"))$=Y8($).export({type:"spki",format:"pem"});let J=F8.decode($,"pem",{label:"PUBLIC KEY"}),Q=J.algorithm.algorithm.join("."),X;switch(Q){case"1.2.840.113549.1.1.1":return TQ;case"1.2.840.10045.2.1":X=J.algorithm.parameters.join(".");break;case"1.3.101.112":case"1.3.101.113":return["EdDSA"];default:throw new X0(X0.codes.invalidKey,`Unsupported PEM PCKS8 public key with OID ${Q}.`)}let G=ZH[X];if(!G)throw new X0(X0.codes.invalidKey,`Unsupported EC public key with curve ${X}.`);return[`ES${G.bits}`]}function q8($,Z){if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The private key must be a string or a buffer.");let[J,Q]=$J.get($)||[];if(J)return J;else if(Q)throw Q;try{let X=z8($);if(X==="ENCRYPTED")return FZ($J,$,Z);return FZ($J,$,X)}catch(X){throw FZ($J,$,null,X0.wrap(X,X0.codes.invalidKey,"Unsupported PEM private key."))}}function I8($){if(!$)return"none";let[Z,J]=EQ.get($)||[];if(Z)return Z;else if(J)throw J;try{if($ instanceof Buffer)$=$.toString("utf-8");else if(typeof $!=="string")throw new X0(X0.codes.invalidKey,"The public key must be a string or a buffer.");return FZ(EQ,$,R8($))}catch(Q){throw FZ(EQ,$,null,X0.wrap(Q,X0.codes.invalidKey,"Unsupported PEM public key."))}}function j8($,Z,J){try{let Q=$.slice(0,2),X=`sha${$.slice(2)}`,G,Y;switch(Q){case"HS":G=sY(X,Z).update(J).digest("base64");break;case"ES":G=V8(dY(X,Buffer.from(J,"utf-8"),Z),$).toString("base64");break;case"RS":case"PS":if(Y={key:Z,padding:rY,saltLength:H8},Q==="PS")Y.padding=oY,Y.saltLength=lY;G=X8(X).update(J).sign(Y).toString("base64");break;case"Ed":G=dY(void 0,Buffer.from(J,"utf-8"),Z).toString("base64")}return G.replace(tY,JH)}catch(Q){throw new X0(X0.codes.signError,"Cannot create the signature.",{originalError:Q})}}function L8($,Z,J,Q){try{let X=$.slice(0,2),G=`SHA${$.slice(2)}`;if(Q=Buffer.from(Q,"base64"),X==="HS")try{return G8(sY(G,Z).update(J).digest(),Q)}catch{return!1}else if(X==="Ed")if(typeof nY==="function")return nY(void 0,Buffer.from(J,"utf-8"),Z,Q);else throw new X0(X0.codes.signError,"EdDSA algorithms are not supported by your Node.js version.");let Y={key:Z,padding:rY,saltLength:W8};if(X==="PS")Y.padding=oY,Y.saltLength=lY;else if(X==="ES")Q=U8(Q,$);return Q8("RSA-"+G).update(J).verify(Y,Q)}catch(X){throw new X0(X0.codes.verifyError,"Cannot verify the signature.",{originalError:X})}}QH.exports={base64UrlMatcher:tY,base64UrlReplacer:JH,hsAlgorithms:$H,rsaAlgorithms:TQ,esAlgorithms:A8,edAlgorithms:O8,detectPrivateKeyAlgorithm:q8,detectPublicKeyAlgorithms:I8,createSignature:j8,verifySignature:L8}});var kQ=i((_3,GH)=>{var{createHash:XH}=I$("crypto"),B8=/"alg"\s*:\s*"[HERP]S(256|384)"/m,P8=/"alg"\s*:\s*"EdDSA"/m,C8=/"crv"\s*:\s*"Ed448"/m;function w8($,Z,J){let Q=$(Z,J);if(Q&&typeof Q.then==="function")Q.then((X)=>{process.nextTick(()=>J(null,X))}).catch(J)}function S8($){if(typeof $==="function")return[$];let Z,J,Q=new Promise((X,G)=>{Z=X,J=G});return[function(X,G){if(X)return J(X);return Z(G)},Q]}function E8($){let Z=$.split(".",1)[0],J=Buffer.from(Z,"base64").toString("utf-8"),Q=null;if(J.match(P8)&&J.match(C8))Q=XH("shake256",{outputLength:114});else{let X=J.match(B8);Q=XH(`sha${X?X[1]:"512"}`)}return Q.update($).digest("hex")}GH.exports={getAsyncKey:w8,ensurePromiseCallback:S8,hashToken:E8}});var AH=i((F3,MH)=>{var{createPublicKey:T8,createSecretKey:D8}=I$("crypto"),N8=MQ(),{hsAlgorithms:HH,verifySignature:k8,detectPublicKeyAlgorithms:WH}=NQ(),v8=YQ(),{TokenError:s}=t$(),{getAsyncKey:x8,ensurePromiseCallback:f8,hashToken:g8}=kQ();function y8($,Z){return $===Z}function UH($,Z){for(let J of $)if(Z.includes(J))return;throw new s(s.codes.invalidKey,`Invalid public key provided for algorithms ${$.join(", ")}.`)}function VH($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z?D8($):T8($)}function KZ($){if(!Array.isArray($))$=[$];return $.filter((Z)=>Z).map((Z)=>{if(Z&&typeof Z.test==="function")return Z;return{test:y8.bind(null,Z)}})}function h8($){let Z=parseInt($===!0?1000:$,10);return Z>0?new N8(Z):null}function YZ({cache:$,token:Z,cacheTTL:J,payload:Q,ignoreExpiration:X,ignoreNotBefore:G,maxAge:Y,clockTimestamp:V=Date.now(),clockTolerance:U,errorCacheTTL:O,cacheKeyBuilder:_},A){if(!$)return A;let L=[A,0,0];if(A instanceof s){let S=typeof O==="function"?O(A):O;return L[2]=V+U+S,$.set(_(Z),L),A}if(Q&&typeof Q.iat==="number"){if(L[1]=!G&&typeof Q.nbf==="number"?Q.nbf*1000-U:0,!X){if(typeof Q.exp==="number")L[2]=Q.exp*1000+U;else if(Y)L[2]=Q.iat*1000+Y+U}}let w=V+U+J;return L[2]=L[2]===0?w:Math.min(L[2],w),$.set(_(Z),L),A}function b8($,Z,J){if($ instanceof s){if(!Z)throw $;Z($)}else{if(!Z)return $;Z(null,$)}return J}function c8($,Z,J,Q,X){if(!X.includes(Z.alg))throw new s(s.codes.invalidAlgorithm,"The token algorithm is invalid.");if(J&&!k8(Z.alg,Q,$,J))throw new s(s.codes.invalidSignature,"The token signature is invalid.")}function p8($,Z,J,Q,X){let G=J?`The ${Z} claim must be a ${X} or an array of ${X}s.`:`The ${Z} claim must be a ${X}.`;if(Q&&!J)throw new s(s.codes.invalidClaimValue,G);if($.map((Y)=>typeof Y).some((Y)=>Y!==X))throw new s(s.codes.invalidClaimType,G)}function u8($,Z,J,Q){let X=Q?`None of ${Z} claim values are allowed.`:`The ${Z} claim value is not allowed.`;if(!$.some((G)=>J.some((Y)=>Y.test(G))))throw new s(s.codes.invalidClaimValue,X)}function m8($,Z,J,Q,X,G){let Y=$*1000+(Z||0);if(!(Q?J>=Y:J<=Y))throw new s(s.codes[X],`The token ${G} at ${new Date(Y).toISOString()}.`)}function YH($,{input:Z,header:J,payload:Q,signature:X},{validators:G,allowedAlgorithms:Y,checkTyp:V,clockTimestamp:U,requiredClaims:O}){let _=$ instanceof Buffer?$.length:!!$;if(_&&!X)throw new s(s.codes.missingSignature,"The token signature is missing.");else if(!_&&X)throw new s(s.codes.missingKey,"The key option is missing.");if(c8(Z,J,X,$,Y),V&&(typeof J.typ!=="string"||V!==J.typ.toLowerCase().replace(/^application\//,"")))throw new s(s.codes.invalidType,"Invalid typ.");if(O){for(let L of O)if(!(L in Q))throw new s(s.codes.missingRequiredClaim,`The ${L} claim is required.`)}let A=U||Date.now();for(let{type:L,claim:C,allowed:w,array:S,modifier:k,greater:N,errorCode:E,errorVerb:v}of G){let h=Q[C],f=Array.isArray(h),d=f?h:[h];if(!(C in Q))continue;if(p8(d,C,S,f,L==="date"?"number":"string"),L==="date")m8(h,k,A,N,E,v);else u8(d,C,w,f)}}function d8({key:$,allowedAlgorithms:Z,complete:J,cacheTTL:Q,checkTyp:X,clockTimestamp:G,clockTolerance:Y,ignoreExpiration:V,ignoreNotBefore:U,maxAge:O,isAsync:_,validators:A,decode:L,cache:C,requiredClaims:w,errorCacheTTL:S,cacheKeyBuilder:k},N,E){let[v,h]=_?f8(E):[];if(C){let[M,F,K]=C.get(k(N))||[void 0,0,0],q=G||Date.now();if(typeof M<"u"&&(F===0||q<F&&M.code==="FAST_JWT_INACTIVE"||q>=F&&M.code!=="FAST_JWT_INACTIVE")&&(K===0||q<=K))return b8(M,v,h)}let f;try{f=L(N)}catch(M){if(v)return v(M),h;throw M}let{header:d,payload:a,signature:r,input:Y0}=f,j={cache:C,token:N,cacheTTL:Q,errorCacheTTL:S,ignoreExpiration:V,ignoreNotBefore:U,maxAge:O,clockTimestamp:G,clockTolerance:Y,payload:a,cacheKeyBuilder:k},H={validators:A,allowedAlgorithms:Z,checkTyp:X,clockTimestamp:G,clockTolerance:Y,requiredClaims:w};if(!v)try{return YH($,f,H),YZ(j,J?{header:d,payload:a,signature:r,input:Y0}:a)}catch(M){throw YZ(j,M)}return x8($,{header:d,payload:a,signature:r},(M,F)=>{if(M)return v(YZ(j,s.wrap(M,s.codes.keyFetchingError,"Cannot fetch key.")));if(typeof F==="string")F=Buffer.from(F,"utf-8");else if(!(F instanceof Buffer))return v(YZ(j,new s(s.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a public key.")));try{let K=WH(F);if(H.allowedAlgorithms.length)UH(Z,K);else H.allowedAlgorithms=K;F=VH(F,K[0]===HH[0]),YH(F,f,H)}catch(K){return v(YZ(j,K))}v(null,YZ(j,J?{header:d,payload:a,signature:r,input:N}:a))}),h}MH.exports=function(Z){let{key:J,algorithms:Q,complete:X,cache:G,cacheTTL:Y,errorCacheTTL:V,checkTyp:U,clockTimestamp:O,clockTolerance:_,ignoreExpiration:A,ignoreNotBefore:L,maxAge:C,allowedJti:w,allowedAud:S,allowedIss:k,allowedSub:N,allowedNonce:E,requiredClaims:v,cacheKeyBuilder:h}={cacheTTL:600000,clockTolerance:0,errorCacheTTL:-1,cacheKeyBuilder:g8,...Z};if(!Array.isArray(Q))Q=[];let f=typeof J;if(f!=="string"&&f!=="object"&&f!=="function")throw new s(s.codes.INVALID_OPTION,"The key option must be a string, a buffer or a function returning the algorithm secret or public key.");if(J&&f!=="function"){let j=WH(J);if(Q.length)UH(Q,j);else Q=j;J=VH(J,j[0]===HH[0])}if(O&&(typeof O!=="number"||O<0))throw new s(s.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(_&&(typeof _!=="number"||_<0))throw new s(s.codes.invalidOption,"The clockTolerance option must be a positive number.");if(Y&&(typeof Y!=="number"||Y<0))throw new s(s.codes.invalidOption,"The cacheTTL option must be a positive number.");if(V&&typeof V!=="function"&&typeof V!=="number"||V<-1)throw new s(s.codes.invalidOption,"The errorCacheTTL option must be a number greater than -1 or a function.");if(v&&!Array.isArray(v))throw new s(s.codes.invalidOption,"The requiredClaims option must be an array.");let d=[];if(!L)d.push({type:"date",claim:"nbf",errorCode:"inactive",errorVerb:"will be active",greater:!0,modifier:-_});if(!A)d.push({type:"date",claim:"exp",errorCode:"expired",errorVerb:"has expired",modifier:+_});if(typeof C==="number")d.push({type:"date",claim:"iat",errorCode:"expired",errorVerb:"has expired",modifier:C});if(w)d.push({type:"string",claim:"jti",allowed:KZ(w)});if(S)d.push({type:"string",claim:"aud",allowed:KZ(S),array:!0});if(k)d.push({type:"string",claim:"iss",allowed:KZ(k)});if(N)d.push({type:"string",claim:"sub",allowed:KZ(N)});if(E)d.push({type:"string",claim:"nonce",allowed:KZ(E)});let a=U?U.toLowerCase().replace(/^application\//,""):null,r={key:J,allowedAlgorithms:Q,complete:X,cacheTTL:Y,errorCacheTTL:V,checkTyp:a,clockTimestamp:O,clockTolerance:_,ignoreExpiration:A,ignoreNotBefore:L,maxAge:C,isAsync:f==="function",validators:d,decode:v8({complete:!0}),cache:h8(G),requiredClaims:v,cacheKeyBuilder:h},Y0=d8.bind(null,r);return Y0.cache=r.cache,Y0}});var OH=i((l8)=>{var n8=/^(-?(?:\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?)?)?$/,ZJ=1000,JJ=ZJ*60,QJ=JJ*60,RZ=QJ*24,vQ=RZ*365.25;function s8($){var Z,J=$.toLowerCase().match(n8);if(J!=null&&(Z=parseFloat(J[1]))){if(J[3]!=null)return Z*ZJ;if(J[4]!=null)return Z*JJ;if(J[5]!=null)return Z*QJ;if(J[6]!=null)return Z*RZ;if(J[7]!=null)return Z*RZ*7;if(J[8]!=null)return Z*vQ;return Z}}function zZ($,Z,J,Q){var X=($|0)===$?$:~~($+0.5);return Z+X+(Q?" "+J+(X!=1?"s":""):J[0])}function o8($,Z){var J=$<0?"-":"",Q=$<0?-$:$;if(Q<ZJ)return $+(Z?" ms":"ms");if(Q<JJ)return zZ(Q/ZJ,J,"second",Z);if(Q<QJ)return zZ(Q/JJ,J,"minute",Z);if(Q<RZ)return zZ(Q/QJ,J,"hour",Z);if(Q<vQ)return zZ(Q/RZ,J,"day",Z);return zZ(Q/vQ,J,"year",Z)}l8.format=o8;l8.parse=s8});var jH=i((z3,IH)=>{var{base64UrlMatcher:xQ,base64UrlReplacer:fQ,hsAlgorithms:t8,esAlgorithms:a8,rsaAlgorithms:e8,edAlgorithms:$6,detectPrivateKeyAlgorithm:KH,createSignature:_H}=NQ(),{TokenError:l}=t$(),{getAsyncKey:Z6,ensurePromiseCallback:J6}=kQ(),{createPrivateKey:Q6,createSecretKey:X6}=I$("crypto"),{parse:FH}=OH(),zH=new Set([...t8,...a8,...e8,...$6,"none"]),G6=Array.from(zH).join(", ");function RH($,Z){let J=$.slice(0,2),Q=Z.slice(0,2),X=!0;if(J==="RS"||J==="PS")X=Q==="RS"||J==="RS"&&Z==="ENCRYPTED";else if(J==="ES"||J==="Ed")X=J===Q||J==="ES"&&Z==="ENCRYPTED";if(!X)throw new l(l.codes.invalidKey,`Invalid private key provided for algorithm ${$}.`)}function qH($,Z){if(typeof $==="string")$=Buffer.from($,"utf-8");return Z[0]==="H"?X6($):Q6($)}function Y6({key:$,algorithm:Z,noTimestamp:J,mutatePayload:Q,clockTimestamp:X,expiresIn:G,notBefore:Y,kid:V,typ:U,isAsync:O,additionalHeader:_,fixedPayload:A},L,C){let[w,S]=O?J6(C):[];if(typeof L!=="object")throw new l(l.codes.invalidType,"The payload must be an object.");if(L.exp&&(!Number.isInteger(L.exp)||L.exp<0))throw new l(l.codes.invalidClaimValue,"The exp claim must be a positive integer.");let k={alg:Z,typ:U||"JWT",kid:V,..._},N="",E=L.iat*1000||X||Date.now(),v={...L,...A,iat:J?void 0:Math.floor(E/1000),exp:L.exp?L.exp:G?Math.floor((E+G)/1000):void 0,nbf:L.nbf?L.nbf:Y?Math.floor((E+Y)/1000):void 0};if(Q)Object.assign(L,v);if(N=Buffer.from(JSON.stringify(v),"utf-8").toString("base64").replace(xQ,fQ),!w){let f=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(xQ,fQ)+"."+N,d=Z==="none"?"":_H(Z,$,f);return f+"."+d}return Z6($,{header:k,payload:L},(h,f)=>{if(h){let a=l.wrap(h,l.codes.keyFetchingError,"Cannot fetch key.");return w(a)}if(typeof f==="string")f=Buffer.from(f,"utf-8");else if(!(f instanceof Buffer))return w(new l(l.codes.keyFetchingError,"The key returned from the callback must be a string or a buffer containing a secret or a private key."));let d;try{let a=KH(f,Z);if(Z)RH(Z,a);else k.alg=Z=a;f=qH(f,Z);let Y0=Buffer.from(JSON.stringify(k),"utf-8").toString("base64").replace(xQ,fQ)+"."+N;d=Y0+"."+_H(Z,f,Y0)}catch(a){return w(a)}w(null,d)}),S}IH.exports=function(Z){let{key:J,algorithm:Q,noTimestamp:X,mutatePayload:G,clockTimestamp:Y,expiresIn:V,notBefore:U,jti:O,aud:_,iss:A,sub:L,nonce:C,kid:w,typ:S,header:k}={clockTimestamp:0,...Z};if(Q&&!zH.has(Q))throw new l(l.codes.invalidOption,`The algorithm option must be one of the following values: ${G6}.`);let N=typeof J,E=N==="object"&&J&&J.key&&J.passphrase;if(Q==="none"){if(J)throw new l(l.codes.invalidOption,'The key option must not be provided when the algorithm option is "none".')}else if(!J||N!=="string"&&!(J instanceof Buffer)&&N!=="function"&&!E)throw new l(l.codes.invalidOption,"The key option must be a string, a buffer, an object containing key/passphrase properties or a function returning the algorithm secret or private key.");else if(E&&!Q)throw new l(l.codes.invalidAlgorithm,"When using password protected key you must provide the algorithm option.");if(J&&N!=="function"){let f=KH(E?J.key:J,Q);if(Q)RH(Q,f);else Q=f;J=qH(J,Q)}if(V){if(typeof V==="string")V=FH(V);if(typeof V!=="number")throw new l(l.codes.invalidOption,"The expiresIn option must be a positive number or a valid string.")}if(U){if(typeof U==="string")U=FH(U);if(typeof U!=="number"||U<0)throw new l(l.codes.invalidOption,"The notBefore option must be a positive number or a valid string.")}if(Y&&(typeof Y!=="number"||Y<0))throw new l(l.codes.invalidOption,"The clockTimestamp option must be a positive number.");if(O&&typeof O!=="string")throw new l(l.codes.invalidOption,"The jti option must be a string.");if(_&&typeof _!=="string"&&!Array.isArray(_))throw new l(l.codes.invalidOption,"The aud option must be a string or an array of strings.");if(A&&typeof A!=="string")throw new l(l.codes.invalidOption,"The iss option must be a string.");if(L&&typeof L!=="string")throw new l(l.codes.invalidOption,"The sub option must be a string.");if(C&&typeof C!=="string")throw new l(l.codes.invalidOption,"The nonce option must be a string.");if(w&&typeof w!=="string")throw new l(l.codes.invalidOption,"The kid option must be a string.");if(k&&typeof k!=="object")throw new l(l.codes.invalidOption,"The header option must be a object.");let h=Object.entries({jti:O,aud:_,iss:A,sub:L,nonce:C}).reduce((f,[d,a])=>{if(a!==void 0)f[d]=a;return f},{});return Y6.bind(null,{key:J,algorithm:Q,noTimestamp:X,mutatePayload:G,clockTimestamp:Y,expiresIn:V,notBefore:U,kid:w,typ:S,isAsync:N==="function",additionalHeader:k,fixedPayload:h})}});var BH=i((R3,LH)=>{var{TokenError:H6,TOKEN_ERROR_CODES:W6}=t$(),U6=YQ(),V6=AH(),M6=jH();LH.exports={TokenError:H6,TOKEN_ERROR_CODES:W6,createDecoder:U6,createVerifier:V6,createSigner:M6}});import{join as yJ}from"path";class T 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}EZ();u0();function V$($){if(Array.isArray($)){let Z=[];for(let J of $)Z.push(V$(J));return Z}if(m($)){let Z={},J=$;for(let Q of Object.keys(J))Z[Q]=V$(J[Q]);return Z}return $}function RX($,Z){if(Z===void 0)return $;if(Array.isArray($)&&Array.isArray(Z)){let J=[];for(let Q of $)J.push(V$(Q));for(let Q of Z)J.push(V$(Q));return J}if(m($)&&m(Z)){let J=$,Q=Z,X={};for(let G of Object.keys(J))X[G]=V$(J[G]);for(let G of Object.keys(Q)){let Y=Q[G];if(Y===void 0)continue;let V=X[G];if(Array.isArray(V)&&Array.isArray(Y)){let U=[];for(let O of V)U.push(V$(O));for(let O of Y)U.push(V$(O));X[G]=U;continue}if(m(V)&&m(Y)){X[G]=RX(V$(V),Y);continue}X[G]=V$(Y)}return X}return V$(Z)}function qX(...$){let Z={};for(let J of $){if(J===void 0)continue;Z=RX(Z,J)}return Z}var _1={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 IX($){if($!=="development"&&$!=="production")throw new T({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=yJ(process.cwd(),"configs"),J=await C$(yJ(Z,"befly.common.json"),{}),Q=await C$(yJ(Z,`befly.${$}.json`),{}),X=qX(_1,J,Q);X.nodeEnv=$;let G=X.redis?.prefix;if(typeof G==="string"){if(G.trim().includes(":"))throw new T({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=${G}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}})}let Y=X.db?.idMode;if(Y!==void 0&&Y!=="timeId"&&Y!=="autoId")throw new T({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Adb.idMode \u53EA\u80FD\u662F 'timeId' \u6216 'autoId'\uFF0C\u5F53\u524D\u503C=${String(Y)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});let V=X.strict;if(V!==void 0&&typeof V!=="boolean")throw new T({message:`\u914D\u7F6E\u9519\u8BEF\uFF1Astrict \u5FC5\u987B\u4E3A boolean\uFF0C\u5F53\u524D\u503C=${String(V)}`,kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"loadBeflyConfig"}});return X}$0();u0();async function jX($){let Z=!1,J=new Set;for(let Q of $)try{if(!m(Q)){I.warn({item:Q,msg:"\u63A5\u53E3\u5FC5\u987B\u662F\u5BF9\u8C61"}),Z=!0;continue}let X=Q,G=X.name;if(typeof G!=="string"||G.trim()===""){I.warn(Object.assign({},u(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"){I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}let V=X.path;if(typeof V!=="string"||V.trim()==="")I.warn(Object.assign({},u(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 w=V.trim();if(J.has(w))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"})),Z=!0;else J.add(w);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(w))I.warn(Object.assign({},u(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(!w.startsWith("/api/"))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u5FC5\u987B\u4EE5 /api/ \u5F00\u5934"})),Z=!0;if(w.includes(" "))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C"})),Z=!0;if(w.includes("/api//"))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 path \u4E0D\u5141\u8BB8\u51FA\u73B0 /api//\uFF08\u91CD\u590D\u659C\u6760\uFF09"})),Z=!0}let U=X.routePrefix,O=typeof U==="string"?U.trim():"";if(O==="")I.warn(Object.assign({},u(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(!(O==="/app"||O.startsWith("/addon/")))I.warn(Object.assign({},u(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 V==="string"&&V.trim()!==""){let w=V.trim(),S=`/api${O}/`;if(!w.startsWith(S))I.warn(Object.assign({},u(X,["handler"]),{expectedPrefix:S,msg:"\u63A5\u53E3\u7684 path \u4E0E routePrefix \u4E0D\u4E00\u81F4\uFF1A\u5E94\u4EE5 /api${routePrefix}/ \u5F00\u5934\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0}}let _=X.method;if(_!==void 0&&!["GET","POST","GET,POST"].includes(String(_).toUpperCase()))I.warn(Object.assign({},u(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 A=X.auth;if(A!==void 0&&typeof A!=="boolean")I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 auth \u5C5E\u6027\u5FC5\u987B\u662F\u5E03\u5C14\u503C (true=\u9700\u767B\u5F55, false=\u516C\u5F00)"})),Z=!0;let L=X.fields;if(L!==void 0&&L!==null&&!m(L))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 fields \u5C5E\u6027\u5FC5\u987B\u662F\u5BF9\u8C61"})),Z=!0;let C=X.required;if(C!==void 0&&!Array.isArray(C))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u6570\u7EC4"})),Z=!0;if(Array.isArray(C)){if(C.some((w)=>typeof w!=="string"))I.warn(Object.assign({},u(X,["handler"]),{msg:"\u63A5\u53E3\u7684 required \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0}}catch(X){I.error({err:X,item:Q,msg:"\u63A5\u53E3\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u63A5\u53E3\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkApi"}})}function u$($){return typeof $==="string"&&$.trim().length>0}function hJ($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&$<=65535}function F1($){return typeof $==="number"&&Number.isFinite($)&&$>=0&&Math.floor($)===$}function K1($){return typeof $==="number"&&Number.isFinite($)&&$>=1&&Math.floor($)===$}function z1($){if(!u$($))return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:$}).format(0),!0}catch{return!1}}function R1($){if(!$)throw new T({message:"\u914D\u7F6E\u9519\u8BEF\uFF1A\u7F3A\u5C11 db \u914D\u7F6E\uFF08config.db\uFF09",kind:"validation",noLog:!0,meta:{subsystem:"config",operation:"checkConfig"}});if(!u$($.host))throw new T({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(!hJ($.port))throw new T({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(!u$($.username))throw new T({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 T({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(!u$($.database))throw new T({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 T({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 q1($){if(!$)throw new T({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 T({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&&!hJ($.port))throw new T({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&&!F1($.db))throw new T({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 T({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 T({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 LX($){if(!$||typeof $!=="object")throw new T({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 T({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(!u$($.appName))throw new T({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(!hJ($.appPort))throw new T({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(!u$($.appHost))throw new T({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 T({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 T({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 T({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(!K1($.bodyLimit))throw new T({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(!z1($.tz))throw new T({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 T({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"}});R1($.db),q1($.redis)}$0();u0();var BX=["name","enable","deps","handler"];async function PX($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Q of $)try{if(!m(Q)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u94A9\u5B50\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let X=Q,G=X.moduleName;if(typeof G!=="string"||G.trim()===""){I.warn(Object.assign({},u(Q,["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 Y=X.customKeys;if(!Array.isArray(Y)){I.warn(Object.assign({},u(Q,["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(Y.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u94A9\u5B50\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let V=Y.filter((_)=>!BX.includes(_));if(V.length>0){I.warn(Object.assign({},u(Q,["handler"]),{msg:`\u94A9\u5B50\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${V.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${BX.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${Y.join(", ")}`})),Z=!0;continue}let U=Y.includes("enable"),O=Y.includes("deps");if(U){if(typeof X.enable!=="boolean"){I.warn(Object.assign({},u(Q,["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 _=typeof X.name==="string"?X.name:"";if(_===""){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u94A9\u5B50\u540D\u79F0"})),Z=!0;continue}if(!J.test(_)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 auth / rate_limit\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(X.moduleName))){I.warn(Object.assign({},u(Q,["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(_!==String(X.moduleName)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u94A9\u5B50\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let A=X.filePath;if(typeof A!=="string"||!A.startsWith(`core:hook:${_}`)){I.warn(Object.assign({},u(Q,["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(O){let _=X.deps;if(!Array.isArray(_)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(_.some((A)=>typeof A!=="string")){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u94A9\u5B50\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let _=X.deps;if(!Array.isArray(_))X.deps=[]}if(typeof X.handler!=="function"){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u94A9\u5B50\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(X){I.error({err:X,item:Q,msg:"\u94A9\u5B50\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u94A9\u5B50\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkHook"}})}$0();uJ();function T1($){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 vX=async($)=>{let Z=!1,J=await kX($),Q=[];for(let G of J)Q.push({menu:G,depth:1});let X=new Set;while(Q.length>0){let G=Q.pop(),Y=G?.menu,V=typeof G?.depth==="number"?G.depth:0;if(Y===null||typeof Y!=="object"){Z=!0,I.warn({menu:Y,msg:"\u83DC\u5355\u8282\u70B9\u5FC5\u987B\u662F\u5BF9\u8C61"});continue}if(V>3){Z=!0,I.warn({path:Y?.path,depth:V,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});continue}let U=Y.children;if(typeof U<"u"&&!Array.isArray(U)){Z=!0,I.warn({path:Y?.path,childrenType:typeof U,msg:"\u83DC\u5355 children \u5FC5\u987B\u662F\u6570\u7EC4"});continue}if(Array.isArray(U)&&U.length>0)if(V>=3)Z=!0,I.warn({path:Y?.path,depth:V,msg:"\u83DC\u5355\u5C42\u7EA7\u8D85\u8FC7 3 \u7EA7\uFF08\u6700\u591A\u4E09\u7EA7\uFF09"});else for(let C of U)Q.push({menu:C,depth:V+1});let O=typeof Y.path==="string"?Y.path.trim():"",_=typeof Y.name==="string"?Y.name.trim():"",A=typeof Y.sort==="number"?Y.sort:999999;if(typeof Y.path==="string")Y.path=O;if(typeof Y.name==="string")Y.name=_;if(typeof Y.sort>"u")Y.sort=A;if(!O){Z=!0,I.warn({menu:Y,msg:"\u83DC\u5355\u7F3A\u5C11 path\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});continue}let L=T1(O);if(!L.ok)Z=!0,I.warn({path:O,reason:L.reason,msg:"\u83DC\u5355 path \u4E0D\u5408\u6CD5"});if(!_)Z=!0,I.warn({path:O,menu:Y,msg:"\u83DC\u5355\u7F3A\u5C11 name\uFF08\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32\uFF09"});if(typeof Y.sort<"u"&&typeof Y.sort!=="number")Z=!0,I.warn({path:O,sort:Y.sort,msg:"\u83DC\u5355 sort \u5FC5\u987B\u662F number"});if(typeof Y.sort==="number"&&(!Number.isFinite(Y.sort)||Y.sort<1))Z=!0,I.warn({path:O,sort:Y.sort,msg:"\u83DC\u5355 sort \u6700\u5C0F\u503C\u4E3A 1"});if(X.has(O)){Z=!0,I.warn({path:O,msg:"\u83DC\u5355 path \u91CD\u590D\uFF08\u4E25\u683C\u6A21\u5F0F\u7981\u6B62\u91CD\u590D path\uFF09"});continue}X.add(O)}if(Z)throw Error("\u83DC\u5355\u7ED3\u6784\u68C0\u67E5\u5931\u8D25");return J};$0();u0();var xX=["name","enable","deps","handler"];async function fX($){let Z=!1,J=/^[a-z]+(?:_[a-z]+)*$/;for(let Q of $)try{if(!m(Q)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63D2\u4EF6\u5BFC\u51FA\u5FC5\u987B\u662F\u5BF9\u8C61\uFF08export default { deps, handler }\uFF09"})),Z=!0;continue}let X=Q,G=X.moduleName;if(typeof G!=="string"||G.trim()===""){I.warn(Object.assign({},u(Q,["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 Y=X.customKeys;if(!Array.isArray(Y)){I.warn(Object.assign({},u(Q,["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(Y.some((_)=>typeof _!=="string")){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63D2\u4EF6\u7684 customKeys \u5FC5\u987B\u662F string[]\uFF08\u7531\u7CFB\u7EDF\u751F\u6210\uFF09"})),Z=!0;continue}let V=Y.filter((_)=>!xX.includes(_));if(V.length>0){I.warn(Object.assign({},u(Q,["handler"]),{msg:`\u63D2\u4EF6\u5BFC\u51FA\u5B58\u5728\u4E0D\u652F\u6301\u7684\u5C5E\u6027\uFF1A${V.join(", ")}\uFF1B\u4EC5\u5141\u8BB8\uFF1A${xX.join(", ")}\uFF1B\u5F53\u524D customKeys\uFF1A${Y.join(", ")}`})),Z=!0;continue}let U=Y.includes("enable"),O=Y.includes("deps");if(U){if(typeof X.enable!=="boolean"){I.warn(Object.assign({},u(Q,["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 _=typeof X.name==="string"?X.name:"";if(_===""){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u5FC5\u987B\u663E\u5F0F\u8BBE\u7F6E name\uFF08string\uFF09\uFF0C\u7528\u4E8E\u786E\u5B9A\u63D2\u4EF6\u540D\u79F0"})),Z=!0;continue}if(!J.test(_)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u6EE1\u8DB3\u5C0F\u5199\u5B57\u6BCD+\u4E0B\u5212\u7EBF\u683C\u5F0F\uFF08\u4F8B\u5982 logger / redis_cache\uFF09\uFF0C\u4E0D\u5141\u8BB8\u7A7A\u683C\u3001\u9A7C\u5CF0\u6216\u5176\u4ED6\u5B57\u7B26"})),Z=!0;continue}if(!J.test(String(X.moduleName))){I.warn(Object.assign({},u(Q,["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(_!==String(X.moduleName)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"core \u5185\u7F6E\u63D2\u4EF6\u7684 name \u5FC5\u987B\u4E0E moduleName \u5B8C\u5168\u4E00\u81F4"})),Z=!0;continue}let A=X.filePath;if(typeof A!=="string"||!A.startsWith(`core:plugin:${_}`)){I.warn(Object.assign({},u(Q,["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(O){let _=X.deps;if(!Array.isArray(_)){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}if(_.some((A)=>typeof A!=="string")){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63D2\u4EF6\u7684 deps \u5C5E\u6027\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4"})),Z=!0;continue}}else{let _=X.deps;if(!Array.isArray(_))X.deps=[]}if(typeof X.handler!=="function"){I.warn(Object.assign({},u(Q,["handler"]),{msg:"\u63D2\u4EF6\u7684 handler \u5C5E\u6027\u5FC5\u987B\u662F\u51FD\u6570"})),Z=!0;continue}}catch(X){I.error({err:X,item:Q,msg:"\u63D2\u4EF6\u89E3\u6790\u5931\u8D25"}),Z=!0}if(Z)throw new T({kind:"policy",message:"\u63D2\u4EF6\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkPlugin"}})}$0();var gX=new Set(["char","varchar","enum","tinytext","text","mediumtext","longtext"]),D1=new Set(["tinytext","text","mediumtext","longtext"]),mJ=new Set(["tinyint","smallint","mediumint","int","bigint"]),dJ=new Set(["decimal"]),nJ=new Set(["float","double"]),N1=new Set(["json"]),k1=new Set(["enum"]);function F$($){return String($||"").trim().toLowerCase()}function yX($){return gX.has(F$($))}function hX($){return D1.has(F$($))}function bX($){return mJ.has(F$($))}function cX($){return dJ.has(F$($))}function pX($){return nJ.has(F$($))}function uX($){return N1.has(F$($))}function mX($){return k1.has(F$($))}function dX($){let Z=F$($);return mJ.has(Z)||dJ.has(Z)||nJ.has(Z)}function v1($){let Z=F$($);if(mJ.has(Z))return"integer";if(dJ.has(Z)||nJ.has(Z))return"number";if(gX.has(Z)||Z==="datetime"||Z==="timestamp")return"string";if(Z==="json")return"json";return"string"}function NZ($,Z){let J=String($||"").trim(),Q=String(Z||"").trim();return{type:J,input:Q||v1(J)}}function n$($){let Z=String($||"").trim();if(Z==="")return[];let J=Z.split("|").map((X)=>X.trim()).filter((X)=>X!==""),Q=[];for(let X of J)if(!Q.includes(X))Q.push(X);return Q}u0();var rX=["id","created_at","updated_at","deleted_at","state"],nX=new Set(rX),iX=["tinyint","smallint","mediumint","int","bigint","decimal","float","double","char","varchar","enum","tinytext","text","mediumtext","longtext","datetime","timestamp","json"],x1=new Set(iX),tX=["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"],f1=new Set(tX),aX=["name","type","input","min","max","default","detail","precision","scale","index","unique","nullable","unsigned"],g1=new Set(aX),y1=/^_?[a-z][a-z0-9]*(?:[A-Z][a-z0-9]*)*$/,h1=/^[\u4e00-\u9fa5a-zA-Z0-9 _-]+$/,sX=16383,oX=500,lX=180;async function eX($,Z){let J=!1;for(let Q of $){if(Q.type!=="table")continue;let X=typeof Q.sourceName==="string"?Q.sourceName:"",G=X?`${X}\u8868 `:"\u8868 ";try{let Y=Q.fileName;if(Q.source==="addon"&&String(Q.addonName).trim()===""){I.warn(`${G}${Y} addon \u8868\u7F3A\u5C11 addonName`),J=!0;continue}let V=Q.content;if(typeof V!=="object"||V===null||Array.isArray(V)){I.warn(`${G}${Y} \u8868\u5B9A\u4E49\u65E0\u6548\uFF1A\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}if(!y1.test(Y)){I.warn(`${G}${Y} \u6587\u4EF6\u540D\u5FC5\u987B\u4F7F\u7528\u5C0F\u9A7C\u5CF0\u547D\u540D\uFF08\u4F8B\u5982 testCustomers.json\uFF09`),J=!0;continue}for(let[U,O]of Object.entries(V)){if(typeof O!=="object"||O===null||Array.isArray(O)){I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u89C4\u5219\u5FC5\u987B\u4E3A\u5BF9\u8C61`),J=!0;continue}let _=c(U);if(nX.has(U)||nX.has(_))I.warn(`${G}${Y} \u6587\u4EF6\u5305\u542B\u4FDD\u7559\u5B57\u6BB5 ${U}\uFF08\u6620\u5C04\u5217\u540D: ${_}\uFF09\uFF0C`+`\u4E0D\u80FD\u5728\u8868\u5B9A\u4E49\u4E2D\u4F7F\u7528\u4EE5\u4E0B\u5B57\u6BB5: ${rX.join(", ")}`),J=!0;let A=O,C=Object.keys(A).filter((j)=>!g1.has(j));if(C.length>0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5305\u542B\u975E\u6CD5\u5C5E\u6027: ${C.join(", ")}\uFF0C`+`\u5141\u8BB8\u7684\u5C5E\u6027\u4E3A: ${aX.join(", ")}`),J=!0;if(!A.name||typeof A.name!=="string"){I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 name \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(!A.type||typeof A.type!=="string"){I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u7F3A\u5C11\u5FC5\u586B\u5B57\u6BB5 type \u6216\u7C7B\u578B\u9519\u8BEF`),J=!0;continue}if(A.input!==void 0&&typeof A.input!=="string")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(A.min!==void 0&&!(A.min===null||typeof A.min==="number"))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 min \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(A.max!==void 0&&!(A.max===null||typeof A.max==="number"))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 max \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(A.detail!==void 0&&typeof A.detail!=="string")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 detail \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32`),J=!0;if(A.precision!==void 0&&!(A.precision===null||typeof A.precision==="number"))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 precision \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(A.scale!==void 0&&!(A.scale===null||typeof A.scale==="number"))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 scale \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A null \u6216\u6570\u5B57`),J=!0;if(A.index!==void 0&&typeof A.index!=="boolean")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 index \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(A.unique!==void 0&&typeof A.unique!=="boolean")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 unique \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(A.nullable!==void 0&&typeof A.nullable!=="boolean")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 nullable \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;if(A.unsigned!==void 0&&typeof A.unsigned!=="boolean")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 unsigned \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u5E03\u5C14\u503C`),J=!0;let w=NZ(A.type,A.input||""),S=w.type,k=w.input;if(A.default!==void 0&&A.default!==null&&!qZ(A.default))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 default \u7C7B\u578B\u9519\u8BEF\uFF0C\u5FC5\u987B\u4E3A\u53EF JSON \u5E8F\u5217\u5316\u7684\u503C\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0;if(Z.strict){if(!h1.test(A.name))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5\u540D\u79F0 "${A.name}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+"\u5FC5\u987B\u4E3A\u4E2D\u6587\u3001\u6570\u5B57\u3001\u5B57\u6BCD\u3001\u4E0B\u5212\u7EBF\u3001\u77ED\u6A2A\u7EBF\u3001\u7A7A\u683C"),J=!0}if(!x1.has(S))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5\u7C7B\u578B "${S}" \u683C\u5F0F\u9519\u8BEF\uFF0C`+`\u5FC5\u987B\u4E3A${iX.join("\u3001")}\u4E4B\u4E00`),J=!0;let N=k.trim();if(N==="")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input \u65E0\u6CD5\u63A8\u5BFC`),J=!0;else if(!f1.has(N)&&!b$(N)&&!k$(N)&&!wJ(N))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input "${N}" \u4E0D\u5408\u6CD5\uFF0C`+`\u5FC5\u987B\u4E3A${tX.join("\u3001")}\u4E4B\u4E00\uFF0C\u6216\u6B63\u5219/\u679A\u4E3E/\u6B63\u5219\u522B\u540D`),J=!0;let E=cX(S),v=pX(S),h=uX(S),f=mX(S),d=dX(S),a=yX(S),r=hX(S),Y0=bX(S);if(f){if(N.trim()==="")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E input \u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09`),J=!0;else if(!k$(N))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0Cinput \u5FC5\u987B\u4E3A\u679A\u4E3E\u89C4\u5219\uFF08\u4F8B\u5982 a|b|c\uFF09\uFF0C\u5F53\u524D\u4E3A ${X$(N)}`),J=!0}if(b$(N)||k$(N)||wJ(N)){if(!a)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \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`),J=!0}if(N==="number"||N==="integer"){if(N==="integer"&&!Y0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6574\u6570\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint\uFF09`),J=!0;if(N==="number"&&!d)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u6570\u503C\u7C7B\u5B57\u6BB5\uFF08tinyint/smallint/mediumint/int/bigint/decimal\uFF09`),J=!0}if(N==="array"||N==="array_number"||N==="array_integer"){if(!a)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8\u5B57\u7B26\u4E32\u7C7B\u5B57\u6BB5\uFF08char/varchar/text\uFF09`),J=!0}if(N==="json"||N==="json_number"||N==="json_integer"){if(!(h||r))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5 input=${N} \u4EC5\u5141\u8BB8 json \u6216 text \u7C7B\u5B57\u6BB5`),J=!0}if(!d&&A.unsigned!==void 0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u5B57\u6BB5\u7C7B\u578B\u4E3A ${S}\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned\uFF08\u4EC5\u6570\u503C\u7C7B\u578B\u6709\u6548\uFF09`),J=!0;if(A.unique===!0&&A.index===!0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u540C\u65F6\u8BBE\u7F6E\u4E86 unique=true \u548C index=true\uFF0C`+"unique \u548C index \u4E0D\u80FD\u540C\u65F6\u8BBE\u7F6E\uFF0C\u8BF7\u5220\u9664\u5176\u4E00\uFF08\u5426\u5219\u4F1A\u521B\u5EFA\u91CD\u590D\u7D22\u5F15\uFF09"),J=!0;if(A.min!==void 0&&A.max!==void 0&&A.min!==null&&A.max!==null){if(A.min>A.max)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u6700\u5C0F\u503C "${A.min}" \u4E0D\u80FD\u5927\u4E8E\u6700\u5927\u503C "${A.max}"`),J=!0}if(r||h){if(A.min!==void 0&&A.min!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u7684 ${S} \u7C7B\u578B\u6700\u5C0F\u503C\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.min}"`),J=!0;if(A.max!==void 0&&A.max!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u7684 ${S} \u7C7B\u578B\u6700\u5927\u957F\u5EA6\u5E94\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.max}"`),J=!0;if(A.default!==void 0&&A.default!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.default}"`),J=!0;if(A.index===!0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u521B\u5EFA\u7D22\u5F15\uFF08index=true \u65E0\u6548\uFF09`),J=!0;if(A.unique===!0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u652F\u6301\u552F\u4E00\u7EA6\u675F\uFF08unique=true \u65E0\u6548\uFF09`),J=!0}else if(S==="datetime"||S==="timestamp"){if(A.min!==void 0&&A.min!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.min}"`),J=!0;if(A.max!==void 0&&A.max!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.max}"`),J=!0;if(A.default!==void 0&&A.default!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \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$(A.default)}`),J=!0;if(A.unsigned!==void 0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),J=!0}else if(S==="enum"){if(A.min!==void 0&&A.min!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0Cmin \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.min}"`),J=!0;if(A.max!==void 0&&A.max!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0Cmax \u5FC5\u987B\u4E3A null\uFF0C\u5F53\u524D\u4E3A "${A.max}"`),J=!0;if(A.precision!==void 0&&A.precision!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E precision`),J=!0;if(A.scale!==void 0&&A.scale!==null)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E scale`),J=!0;if(A.unsigned!==void 0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u4E0D\u5141\u8BB8\u8BBE\u7F6E unsigned`),J=!0;let j=n$(N);if(A.default===void 0||A.default===null){if(A.nullable!==!0)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0Cnullable!=true \u65F6\u5FC5\u987B\u8BBE\u7F6E default\uFF08\u4E14 default \u5FC5\u987B\u4E3A\u679A\u4E3E\u503C\u4E4B\u4E00\uFF09`),J=!0}else if(typeof A.default!=="string")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0;else if(!j.includes(A.default))I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A enum \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185\uFF08default=${X$(A.default)}\uFF0Cenums=${X$(N)}\uFF09`),J=!0}else if(E){let{precision:j,scale:H}=A;if(typeof j!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E precision\uFF08\u603B\u4F4D\u6570\uFF09`),J=!0;else if(j<1||j>65)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0Cprecision \u5FC5\u987B\u5728 1..65 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${j}`),J=!0;if(typeof H!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0C\u5FC5\u987B\u8BBE\u7F6E scale\uFF08\u5C0F\u6570\u4F4D\u6570\uFF09`),J=!0;else if(H<0||H>30)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u5FC5\u987B\u5728 0..30 \u8303\u56F4\u5185\uFF0C\u5F53\u524D\u4E3A ${H}`),J=!0;if(typeof j==="number"&&typeof H==="number"&&H>j)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0Cscale \u4E0D\u80FD\u5927\u4E8E precision\uFF08precision=${j}, scale=${H}\uFF09`),J=!0;if(A.default!==void 0&&A.default!==null&&typeof A.default!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A decimal \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0}else if(S==="char"||S==="varchar"){if(A.max===void 0||A.max===null||typeof A.max!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C`+`\u5FC5\u987B\u8BBE\u7F6E max \u4E14\u7C7B\u578B\u4E3A\u6570\u5B57\uFF0C\u5F53\u524D\u4E3A "${A.max}"`),J=!0;else if(A.max>sX)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u6700\u5927\u957F\u5EA6 ${A.max} \u8D8A\u754C\uFF0C`+`${S} \u7C7B\u578B\u957F\u5EA6\u5FC5\u987B\u5728 1..${sX} \u8303\u56F4\u5185`),J=!0;else{if(A.index===!0&&A.max>oX)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u8BBE\u7F6E\u4E86 index=true\uFF0C`+`\u4F46 max=${A.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${oX}\uFF09`),J=!0;if(A.unique===!0&&A.max>lX)I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u8BBE\u7F6E\u4E86 unique=true\uFF0C`+`\u4F46 max=${A.max} \u8D85\u51FA\u5141\u8BB8\u8303\u56F4\uFF08\u8981\u6C42 <= ${lX}\uFF09`),J=!0}if(N==="char"&&typeof A.max==="number"&&A.max>1)I.warn(`${G}${Y} \u6587\u4EF6 ${U} input=char \u65F6 max \u5FC5\u987B\u4E3A 1\uFF0C\u5F53\u524D\u4E3A ${A.max}`),J=!0;if(A.default!==void 0&&A.default!==null&&typeof A.default!=="string")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u5B57\u7B26\u4E32\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0}else if(Y0){if(A.default!==void 0&&A.default!==null&&typeof A.default!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0}else if(v){if(A.default!==void 0&&A.default!==null&&typeof A.default!=="number")I.warn(`${G}${Y} \u6587\u4EF6 ${U} \u4E3A ${S} \u7C7B\u578B\uFF0C\u9ED8\u8BA4\u503C\u5FC5\u987B\u4E3A\u6570\u5B57\u6216 null`+`\uFF08typeof=${typeof A.default}\uFF0Cvalue=${X$(A.default)}\uFF09`),J=!0}}}catch(Y){I.error({msg:`${G}${Q.fileName} \u89E3\u6790\u5931\u8D25`,err:Y}),J=!0}}if(J)throw new T({kind:"policy",message:"\u8868\u7ED3\u6784\u68C0\u67E5\u5931\u8D25",logged:!0,meta:{subsystem:"checks",operation:"checkTable"}})}var{SQL:b1,RedisClient:c1}=globalThis.Bun;$0();class K${static sqlClient=null;static redisClient=null;static sqlConnectedAt=null;static redisConnectedAt=null;static sqlPoolMax=1;static mysqlVersionText=null;static mysqlVersionMajor=null;static async connectSql($){let Z=$||{},J=typeof Z.host==="string"?Z.host.trim():"",Q=typeof Z.port==="number"?Z.port:NaN,X=typeof Z.username==="string"?Z.username.trim():"",G=Z.password===void 0?"":typeof Z.password==="string"?Z.password:"",Y=typeof Z.database==="string"?Z.database.trim():"";if(!J)throw new T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.host \u7F3A\u5931",kind:"validation"});if(!Number.isFinite(Q)||Q<1||Q>65535)throw new T({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 T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.username \u7F3A\u5931",kind:"validation"});if(!Y)throw new T({message:"\u6570\u636E\u5E93\u914D\u7F6E\u4E0D\u5B8C\u6574\uFF1Adb.database \u7F3A\u5931",kind:"validation"});let V=encodeURIComponent(X),U=encodeURIComponent(G),O=encodeURIComponent(Y),_=`mysql://${V}:${U}@${J}:${Q}/${O}`,A=new b1({url:_,max:Z.poolMax??1,bigint:!1});try{let C=(async()=>{let S=await A`SELECT VERSION() AS version`,k=typeof S?.[0]?.version==="string"?S?.[0]?.version:String(S?.[0]?.version||""),N=k.split(".")[0],E=Number(N);if(!Number.isFinite(E))throw new T({message:`\u65E0\u6CD5\u89E3\u6790 MySQL \u7248\u672C\u4FE1\u606F: ${k}`,kind:"runtime",meta:{subsystem:"sql",operation:"version"}});if(E<8)throw new T({message:`\u4EC5\u652F\u6301 MySQL 8.0+\uFF0C\u5F53\u524D\u7248\u672C\uFF1A${k}`,kind:"policy",meta:{subsystem:"sql",operation:"version"}});return this.mysqlVersionText=k,this.mysqlVersionMajor=E,k})(),w=new Promise((S,k)=>{setTimeout(()=>{k(Error(`\u6570\u636E\u5E93\u8FDE\u63A5\u8D85\u65F6 (${30000}ms)`))},30000)});return await Promise.race([C,w]),this.sqlClient=A,this.sqlConnectedAt=Date.now(),this.sqlPoolMax=Z.poolMax??1,A}catch(L){I.error({err:L,msg:"[Connect] SQL \u8FDE\u63A5\u5931\u8D25"});try{await A?.close()}catch{}if(j$(L))throw L.logged=!0,L;let C=`SQL \u8FDE\u63A5\u5931\u8D25: ${L&&typeof L.message==="string"?L.message:String(L)}`;throw new T({message:C,kind:"runtime",logged:!0,cause:L,meta:{subsystem:"sql",operation:"connect"}})}}static async disconnectSql(){if(this.sqlClient){try{await this.sqlClient.close()}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED SQL \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.sqlClient=null,this.sqlConnectedAt=null}}static getSql(){if(!this.sqlClient)throw Error("SQL \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectSql()");return this.sqlClient}static async connectRedis($){let Z=$||{};try{let J=Z.host||"127.0.0.1",Q=Z.port||6379,X=Z.username||"",G=Z.password||"",Y=Z.db||0,V="",U=X?encodeURIComponent(X):"",O=G?encodeURIComponent(G):"";if(U&&O)V=`${U}:${O}@`;else if(O)V=`:${O}@`;let _=`redis://${V}${J}:${Q}/${Y}`,A=new c1(_,{connectionTimeout:30000,idleTimeout:0,autoReconnect:!0,maxRetries:3,enableOfflineQueue:!0,enableAutoPipelining:!0});return await A.ping(),this.redisClient=A,this.redisConnectedAt=Date.now(),A}catch(J){I.error({err:J,msg:"[Connect] Redis \u8FDE\u63A5\u5931\u8D25"});let Q=`Redis \u8FDE\u63A5\u5931\u8D25: ${J&&typeof J.message==="string"?J.message:String(J)}`;throw new T({message:Q,kind:"runtime",logged:!0,cause:J,meta:{subsystem:"redis",operation:"connect"}})}}static async disconnectRedis(){if(this.redisClient){try{this.redisClient.close(),this.redisConnectedAt=null}catch($){I.error({err:$,msg:"[Connect] \u5173\u95ED Redis \u8FDE\u63A5\u65F6\u51FA\u9519"})}this.redisClient=null}}static getRedis(){if(!this.redisClient)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u8FDE\u63A5\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");return this.redisClient}static async connect($){try{await this.connectSql($.db||{}),await this.connectRedis($.redis||{})}catch(Z){let J=typeof process?.env?.NODE_ENV==="string"?"development":"";if(I.error({env:J,err:Z,msg:"\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25"}),await this.disconnect(),j$(Z))throw Z.logged=!0,Z;let Q=`\u6570\u636E\u5E93\u8FDE\u63A5\u521D\u59CB\u5316\u5931\u8D25: ${Z&&typeof Z.message==="string"?Z.message:String(Z)}`;throw new T({message:Q,kind:"runtime",logged:!0,cause:Z,meta:{subsystem:"connect",operation:"connect"}})}}static async disconnect(){await this.disconnectSql(),await this.disconnectRedis()}static isConnected(){return{sql:this.sqlClient!==null,redis:this.redisClient!==null}}static getStatus(){let $=Date.now();return{sql:{connected:this.sqlClient!==null,connectedAt:this.sqlConnectedAt,uptime:this.sqlConnectedAt?$-this.sqlConnectedAt:null,poolMax:this.sqlPoolMax,mysqlVersionText:this.mysqlVersionText,mysqlVersionMajor:this.mysqlVersionMajor},redis:{connected:this.redisClient!==null,connectedAt:this.redisConnectedAt,uptime:this.redisConnectedAt?$-this.redisConnectedAt:null}}}static __setMockSql($){this.sqlClient=$}static __setMockRedis($){this.redisClient=$}static __reset(){this.sqlClient=null,this.redisClient=null,this.sqlConnectedAt=null,this.redisConnectedAt=null,this.sqlPoolMax=1,this.mysqlVersionText=null,this.mysqlVersionMajor=null}}$0();$0();async function $G($){let Z=new Map;for(let J of $)try{if(J.type!=="api")continue;let Q=J,X=Q.path,G={name:Q.name,handler:Q.handler,route:X},Y=Q.method;if(typeof Y==="string"){let A=Y.toUpperCase(),L=A==="POST,GET"?"GET,POST":A;G.method=["GET","POST","GET,POST"].includes(L)?L:"POST"}else G.method="POST";let V=Q.auth;if(V!==void 0)G.auth=V;let U=Q.fields;if(U!==void 0)G.fields=U;let O=Q.required;if(O!==void 0)G.required=O;let _=Q.rawBody;if(_!==void 0)G.rawBody=_;Z.set(X,G)}catch(Q){throw I.error({err:Q,api:J.relativePath,file:J.filePath,msg:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25"}),new T({kind:"runtime",message:"\u63A5\u53E3\u52A0\u8F7D\u5931\u8D25",logged:!0,cause:Q,meta:{subsystem:"api",operation:"load",relativePath:J.relativePath,filePath:J.filePath}})}return Z}$0();u0();function kZ($,Z={}){let J=Z.moduleLabel||"\u6A21\u5757",Q=Z.getName||((A)=>{let L=A.moduleName;if(typeof L==="string"&&L.trim()!=="")return L;return L$(A.fileName)}),X=Z.getDeps||((A)=>{let L=A.deps;if(!Array.isArray(L))return[];return L.filter((C)=>typeof C==="string")}),G=[],Y=new Set,V=new Set,U={},O=!0;for(let A of $){let L=Q(A);if(typeof L!=="string"||L.trim()===""){I.error({item:A,msg:`${J} \u540D\u79F0\u89E3\u6790\u5931\u8D25\uFF08getName \u8FD4\u56DE\u7A7A\u5B57\u7B26\u4E32\uFF09`}),O=!1;continue}if(U[L]){I.error({name:L,first:U[L],second:A,msg:`${J} \u540D\u79F0\u91CD\u590D\uFF0C\u65E0\u6CD5\u6839\u636E deps \u552F\u4E00\u5B9A\u4F4D`}),O=!1;continue}U[L]=A}if(!O)return!1;for(let A of $){let L=Q(A),C=X(A);if(!Array.isArray(C)){I.error({module:L,item:A,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u6570\u7EC4`}),O=!1;continue}for(let w of C){if(typeof w!=="string"){I.error({module:L,dependency:w,item:A,msg:`${J} \u7684 deps \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4`}),O=!1;continue}if(!U[w])I.error({module:L,dependency:w,msg:`${J} \u4F9D\u8D56\u672A\u627E\u5230`}),O=!1}}if(!O)return!1;let _=(A)=>{if(Y.has(A))return;if(V.has(A)){I.error({module:A,msg:`${J} \u5FAA\u73AF\u4F9D\u8D56`}),O=!1;return}let L=U[A];if(!L)return;let C=X(L);V.add(A);for(let w of C)_(w);V.delete(A),Y.add(A),G.push(L)};for(let A of $){let L=Q(A);_(L)}return O?G:!1}async function ZG($){let Z=[],J=$.filter((X)=>{let G=X.moduleName;if(typeof G!=="string"||G.trim()==="")return!1;if((Object.hasOwn(X,"enable")?X.enable:void 0)===!1)return!1;return!0}),Q=kZ(J,{moduleLabel:"\u94A9\u5B50"});if(Q===!1)throw new T({message:"\u94A9\u5B50\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let X of Q){let G=X.moduleName,Y=Object.hasOwn(X,"deps")?X.deps:void 0,V=Array.isArray(Y)?Y.filter((_)=>typeof _==="string"):[],U=Object.hasOwn(X,"handler")?X.handler:void 0;if(typeof U!=="function")throw new T({kind:"validation",message:`Hook '${G}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"hook",operation:"load",hook:G}});let O=U;Z.push({name:G,enable:!0,deps:V,handler:O})}return Z}$0();async function JG($,Z){let J=[],Q=$.filter((G)=>{let Y=G.moduleName;if(typeof Y!=="string"||Y.trim()==="")return!1;if((Object.hasOwn(G,"enable")?G.enable:void 0)===!1)return!1;return!0}),X=kZ(Q,{moduleLabel:"\u63D2\u4EF6"});if(X===!1)throw new T({message:"\u63D2\u4EF6\u4F9D\u8D56\u5173\u7CFB\u9519\u8BEF",kind:"policy",logged:!0});for(let G of X){let Y=G.moduleName,V=Object.hasOwn(G,"deps")?G.deps:void 0,U=Array.isArray(V)?V.filter((A)=>typeof A==="string"):[],O=Object.hasOwn(G,"handler")?G.handler:void 0;if(typeof O!=="function")throw new T({kind:"validation",message:`\u63D2\u4EF6 '${Y}' handler \u5FC5\u987B\u662F\u51FD\u6570`,noLog:!0,meta:{subsystem:"plugin",operation:"load",plugin:Y}});let _=O;try{let A=await _(Z);Z[Y]=A,J.push({name:Y,enable:!0,deps:U,handler:_})}catch(A){throw I.error({err:A,plugin:Y,msg:"\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:`\u63D2\u4EF6\u521D\u59CB\u5316\u5931\u8D25: ${Y}`,logged:!0,cause:A,meta:{subsystem:"plugin",operation:"init",plugin:Y}})}}return J}PZ();$0();function QG($,Z){let J=$.headers.get("x-forwarded-for");if(typeof J==="string"&&J.trim()){let V=J.split(",")[0];if(typeof V==="string"&&V.trim())return V.trim()}let Q=$.headers.get("x-real-ip");if(typeof Q==="string"&&Q.trim())return Q.trim();let X=$.headers.get("cf-connecting-ip");if(typeof X==="string"&&X.trim())return X.trim();let G=$.headers.get("x-client-ip");if(typeof G==="string"&&G.trim())return G.trim();let Y=$.headers.get("true-client-ip");if(typeof Y==="string"&&Y.trim())return Y.trim();if(Z&&typeof Z.requestIP==="function"){let V=Z.requestIP($);if(V&&typeof V.address==="string"&&V.address.trim())return V.address.trim()}return"unknown"}$0();function S$($,Z,J=1,Q=null,X=null,G=null){if($.requestId)I.info({event:"request_blocked",reason:Z,reasonCode:G,code:J,detail:X,msg:"request blocked"});return Response.json({code:J,msg:Z,data:Q,detail:X},{headers:$.corsHeaders})}function sJ($){if($.api&&$.requestId)I.info({event:"request_done",msg:"request done"});if($.response)return $.response;if($.result!==void 0){let Z=$.result;if(typeof Z==="string")Z={code:0,msg:Z};else if(Z&&typeof Z==="object"){if(!("code"in Z))Z={code:0,...Z}}if(Z&&typeof Z==="object"){let J=JSON.stringify(Z,(Q,X)=>typeof X==="bigint"?X.toString():X);return new Response(J,{headers:{...$.corsHeaders,"Content-Type":"application/json"}})}else return Response.json(Z,{headers:$.corsHeaders})}return Response.json({code:1,msg:"\u672A\u751F\u6210\u54CD\u5E94"},{headers:$.corsHeaders})}u0();function XG($,Z,J){return async(Q,X)=>{let G=GX(),V=new URL(Q.url).pathname||"/",U=QG(Q,X),O=Date.now(),_={method:Q.method,body:{},user:{},req:Q,now:O,ip:U,headers:Q.headers,route:V,requestId:G,corsHeaders:{"X-Request-ID":G}},A=$.get(V);if(A)_.api=A;return WX({requestId:G,method:Q.method,route:V,ip:U,now:O},async()=>{try{for(let L of Z)if(await L.handler(J,_),_.response)return _.response;if(_.api&&Q.method!=="OPTIONS"){let L={event:"request",apiName:_.api.name};if(_.body&&Object.keys(_.body).length>0)L.body=_.body;L.msg="request",I.info(L)}if(!_.api){if(Q.method!=="OPTIONS")_.response=Response.json({code:1,msg:"\u63A5\u53E3\u4E0D\u5B58\u5728"},{headers:_.corsHeaders})}else if(_.api.handler){let L=await _.api.handler(J,_);if(L instanceof Response)_.response=L;else _.result=L}return sJ(_)}catch(L){let C=_.api?V:Q.url;return I.error({err:L,path:C,msg:"\u8BF7\u6C42\u9519\u8BEF"}),_.result={code:1,msg:"\u5185\u90E8\u670D\u52A1\u9519\u8BEF"},sJ(_)}})}}w$();$0();w$();import{fileURLToPath as p1}from"url";var u1=p1(import.meta.url),E$=TZ(u1);var A5=x$(E$).endsWith("/dist")?E$:o(E$,"dist"),O5=o(E$,"checks"),_5=o(E$,"plugins"),F5=o(E$,"hooks"),K5=o(E$,"apis"),z5=o(E$,"tables"),s0=process.cwd(),R5=o(s0,"checks"),q5=o(s0,"plugins"),I5=o(s0,"hooks"),j5=o(s0,"apis"),L5=o(s0,"tables"),B5=o(s0,"addons");function vZ($,Z={}){let J=Z.origin||"*";return{"Access-Control-Allow-Origin":J==="*"?$.headers.get("origin")||"*":J,"Access-Control-Allow-Methods":Z.methods||"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":Z.allowedHeaders||"Content-Type, Authorization, authorization, token","Access-Control-Expose-Headers":Z.exposedHeaders||"Content-Range, X-Content-Range, Authorization, authorization, token","Access-Control-Max-Age":String(Z.maxAge||86400),"Access-Control-Allow-Credentials":Z.credentials||"true"}}function GG($=void 0){return async(Z)=>{let J=vZ(Z,$),Q=new URL(Z.url),X=o(s0,"public",Q.pathname);try{if(Z.method==="OPTIONS")return new Response(null,{status:204,headers:J});let G=Bun.file(X);if(await G.exists())return new Response(G,{headers:{"Content-Type":G.type||"application/octet-stream",...J}});else return Response.json({code:1,msg:"\u6587\u4EF6\u672A\u627E\u5230"},{headers:J})}catch(G){return I.error({err:G,msg:"\u9759\u6001\u6587\u4EF6\u5904\u7406\u5931\u8D25"}),Response.json({code:1,msg:"\u6587\u4EF6\u8BFB\u53D6\u5931\u8D25"},{headers:J})}}}$0();u0();var m1=($)=>{let Z=$.split("/").map((G)=>G.trim()).filter((G)=>G.length>0),Q=(Z[1]||"")==="addon"?4:3,X=Z.slice(0,Math.min(Q,Z.length));if(X.length===0)return"";return`/${X.join("/")}`};async function YG($,Z){if(!$.db)throw new T({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new T({message:"\u540C\u6B65\u63A5\u53E3\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_api")).data){I.debug(`${"addon_admin_api"} \u8868\u4E0D\u5B58\u5728`);return}let X=(await $.db.getAll({table:"addon_admin_api",fields:["id","path","parentPath","name","addonName","auth","state"],where:{state$gte:0}})).data.lists||[],G=XX(X,(_)=>_.path),Y=[],V=[],U=[],O=new Set;for(let _ of Z){if(_.type!=="api")continue;let A=_,L=A.path,C=A.name,w=A.addonName;if(typeof L!=="string"||L.trim()==="")continue;if(typeof C!=="string"||C.trim()==="")continue;let S=typeof w==="string"?w:"",k=A.auth,N=k===!1||k===0?0:1,E=m1(L);O.add(L);let v=G[L];if(v){if(C!==v.name||L!==v.path||S!==v.addonName||E!==v.parentPath||N!==v.auth)V.push({id:v.id,name:C,path:L,parentPath:E,addonName:S,auth:N})}else Y.push({name:C,path:L,parentPath:E,addonName:S,auth:N})}for(let _ of X)if(!O.has(_.path))U.push(_.id);if(V.length>0)try{await $.db.updBatch("addon_admin_api",V.map((_)=>{return{id:_.id,data:{name:_.name,path:_.path,parentPath:_.parentPath,addonName:_.addonName,auth:_.auth}}}))}catch(_){I.error({err:_,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u66F4\u65B0\u5931\u8D25"})}if(Y.length>0)try{await $.db.insBatch("addon_admin_api",Y.map((_)=>{return{name:_.name,path:_.path,parentPath:_.parentPath,addonName:_.addonName,auth:_.auth}}))}catch(_){I.error({err:_,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u65B0\u589E\u5931\u8D25"})}if(U.length>0)try{await $.db.delForceBatch("addon_admin_api",U)}catch(_){I.error({err:_,msg:"\u540C\u6B65\u63A5\u53E3\u6279\u91CF\u5220\u9664\u5931\u8D25"})}}async function HG($){if(!$.cache)throw new T({message:"\u540C\u6B65\u7F13\u5B58\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});await $.cache.cacheApis(),await $.cache.cacheMenus(),await $.cache.rebuildRoleApiPermissions()}import{createSign as d1}from"crypto";class s${static md5($,Z="hex"){let J=new Bun.CryptoHasher("md5");return J.update($),J.digest(Z)}static hmacMd5($,Z,J="hex"){let Q=new Bun.CryptoHasher("md5",$);return Q.update(Z),Q.digest(J)}static sha1($,Z="hex"){let J=new Bun.CryptoHasher("sha1");return J.update($),J.digest(Z)}static hmacSha1($,Z,J="hex"){let Q=new Bun.CryptoHasher("sha1",$);return Q.update(Z),Q.digest(J)}static sha256($,Z="hex"){let J=new Bun.CryptoHasher("sha256");return J.update($),J.digest(Z)}static rsaSha256($,Z,J="hex"){let Q=d1("RSA-SHA256");return Q.update($),Q.sign(Z,J)}static hmacSha256($,Z,J="hex"){let Q=new Bun.CryptoHasher("sha256",$);return Q.update(Z),Q.digest(J)}static sha512($,Z="hex"){let J=new Bun.CryptoHasher("sha512");return J.update($),J.digest(Z)}static hmacSha512($,Z,J="hex"){let Q=new Bun.CryptoHasher("sha512",$);return Q.update(Z),Q.digest(J)}static hash($,Z,J="hex"){let Q=new Bun.CryptoHasher($);return Q.update(Z),Q.digest(J)}static hmac($,Z,J,Q="hex"){let X=new Bun.CryptoHasher($,Z);return X.update(J),X.digest(Q)}static async hashFile($,Z="sha256",J="hex"){let Q=Bun.file($),X=new Bun.CryptoHasher(Z),Y=Q.stream().getReader();try{while(!0){let{done:V,value:U}=await Y.read();if(V)break;X.update(U)}return X.digest(J)}finally{Y.releaseLock()}}static async hashPassword($,Z={}){let J=Object.assign({},Z,{algorithm:"bcrypt"});return await Bun.password.hash($,J)}static async verifyPassword($,Z){return await Bun.password.verify($,Z)}static base64Encode($){return Buffer.from($,"utf8").toString("base64")}static base64Decode($){return Buffer.from($,"base64").toString("utf8")}static randomString($){let Z=Math.ceil($/2),J=crypto.getRandomValues(new Uint8Array(Z)),Q="";for(let X=0;X<J.length;X++)Q+=J[X].toString(16).padStart(2,"0");return Q.slice(0,$)}static fastHash($,Z=0){let J=Bun.hash($,Z);return typeof J==="bigint"?Number(J):J}}$0();async function WG($,Z={}){if(!Z.devPassword)return;if(!$.db)throw new T({message:"\u540C\u6B65\u5F00\u53D1\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation",noLog:!0,meta:{subsystem:"syncDev",operation:"precheck"}});if(!$.cache)throw new T({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){I.debug("addon_admin_admin \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_role")).data){I.debug("addon_admin_role \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}if(!(await $.db.tableExists("addon_admin_api")).data){I.debug("addon_admin_api \u8868\u4E0D\u5B58\u5728");return}let J=await $.db.getAll({table:"addon_admin_menu",fields:["path"],where:{state$gte:0},orderBy:["id#ASC"]}),Q=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"}}),G={code:"dev",name:"\u5F00\u53D1\u8005\u89D2\u8272",description:"\u62E5\u6709\u6240\u6709\u83DC\u5355\u548C\u63A5\u53E3\u6743\u9650\u7684\u5F00\u53D1\u8005\u89D2\u8272",menus:J.data.lists.map((O)=>O.path).filter((O)=>typeof O==="string"&&O.length>0),apis:Q.data.lists.map((O)=>O.path).filter((O)=>typeof O==="string"&&O.length>0),sort:0};if(typeof X.data.id==="number")await $.db.updData({table:"addon_admin_role",where:{code:"dev"},data:{name:G.name,description:G.description,menus:G.menus,apis:G.apis,sort:G.sort}});else await $.db.insData({table:"addon_admin_role",data:G});let Y={nickname:"\u5F00\u53D1\u8005",email:Z.devEmail||"dev@qq.com",username:"dev",password:await s$.hashPassword(s$.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:Y.nickname,email:Y.email,username:Y.username,password:Y.password,roleCode:Y.roleCode,roleType:Y.roleType}});else await $.db.insData({table:"addon_admin_admin",data:Y});let U=[{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 O of U)if((await $.db.getOne({table:"addon_admin_role",where:{code:O.code}})).data?.id)await $.db.updData({table:"addon_admin_role",where:{code:O.code},data:{name:O.name,description:O.description,sort:O.sort}});else await $.db.insData({table:"addon_admin_role",data:{code:O.code,name:O.name,description:O.description,menus:[],apis:[],sort:O.sort}})}$0();uJ();function n1($){let Z=$.config?.disableMenus,J=Array.isArray(Z)?Z:[],Q=[];for(let G of J){if(typeof G!=="string")continue;let Y=G.trim();if(!Y)continue;Q.push(Y)}if(Q.length===0)return()=>!1;let X=Q.map((G)=>new Bun.Glob(G));return(G)=>{if(typeof G!=="string")return!1;let Y=G.trim();if(!Y)return!1;let V=[];if(V.push(Y),Y.startsWith("/"))V.push(Y.slice(1));else V.push(`/${Y}`);for(let U of X){let O=typeof U==="object"&&U!==null&&"match"in U?U.match:void 0;if(typeof O!=="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 _=O;for(let A of V)if(_.call(U,A))return!0}return!1}}function UG($,Z){let J=[];for(let Q of $){if(Q===null||typeof Q!=="object")continue;let X=typeof Q.path==="string"?String(Q.path).trim():"";if(X&&Z(X))continue;let G=Q.children,Y=Array.isArray(G)&&G.length>0?UG(G,Z):[],V={};if(typeof Q.name==="string")V.name=Q.name;if(typeof Q.path==="string")V.path=Q.path;if(typeof Q.sort==="number")V.sort=Q.sort;if(typeof Q.parentPath==="string")V.parentPath=Q.parentPath;if(Y.length>0)V.children=Y;J.push(V)}return J}function s1($){let Z=new Map,J=[];for(let Q of $)J.push({menu:Q,parentPathFromTree:""});while(J.length>0){let Q=J.pop(),X=Q?Q.menu:null;if(!X)continue;let G=typeof X.path==="string"?X.path:"",Y=X.children;if(Y&&Array.isArray(Y)&&Y.length>0){let A=typeof G==="string"?G:"";for(let L of Y)J.push({menu:L,parentPathFromTree:A})}if(!G)continue;let V=typeof X.name==="string"?X.name:"";if(!V)continue;let U=typeof X.sort==="number"?X.sort:999999,_=typeof X.parentPath==="string"?X.parentPath:typeof Q?.parentPathFromTree==="string"?Q.parentPathFromTree:NX(G);Z.set(G,{path:G,name:V,sort:U,parentPath:_})}return Z}async function VG($,Z){if(!$.db)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.cache)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.cache \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.config)throw new T({message:"\u540C\u6B65\u83DC\u5355\uFF1Actx.config \u672A\u521D\u59CB\u5316",kind:"validation"});if(!(await $.db.tableExists("addon_admin_menu")).data){I.debug("addon_admin_menu \u8868\u4E0D\u5B58\u5728");return}let J=n1($),Q=UG(Z,J),X=s1(Q),G=new Set;for(let V of X.keys())G.add(V);let Y="addon_admin_menu";await $.db.trans(async(V)=>{let O=(await V.getAll({table:Y,fields:["id","name","path","parentPath","sort","state"]})).data.lists||[],_=O.filter((E)=>typeof E?.state==="number"&&E.state>=0),A=new Map,L=new Set,C=new Map;for(let E of _){if(typeof E?.path!=="string"||!E.path)continue;if(typeof E?.id!=="number")continue;if(J(E.path))continue;let v=A.get(E.path);if(!v){A.set(E.path,E);continue}let h=typeof v?.id==="number"?v.id:0,f=E.id;if(f>h){if(A.set(E.path,E),h>0)L.add(h);let d=C.get(E.path)||{keptId:f,removedIds:[]};if(d.keptId=f,h>0)d.removedIds.push(h);C.set(E.path,d)}else{if(f>0)L.add(f);let d=C.get(E.path)||{keptId:h,removedIds:[]};if(d.keptId=h,f>0)d.removedIds.push(f);C.set(E.path,d)}}if(C.size>0){let E=[];for(let v of C.entries()){let h=v[0],f=v[1];if(E.push({path:h,keptId:f.keptId,removedIds:f.removedIds}),E.length>=10)break}I.warn({table:Y,duplicatePaths:C.size,duplicateIds:L.size,examples:E,msg:"addon_admin_menu \u68C0\u6D4B\u5230\u91CD\u590D path \u8BB0\u5F55\uFF1A\u5DF2\u4FDD\u7559 id \u6700\u5927\u7684\u4E00\u6761\u5E76\u5220\u9664\u5176\u4F59\u8BB0\u5F55"})}let w=[],S=[];for(let E of X.values()){let v=A.get(E.path);if(v){let h=typeof v.parentPath==="string"?v.parentPath:"";if(v.name!==E.name||v.sort!==E.sort||h!==E.parentPath)w.push({id:v.id,data:{name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort}})}else S.push({name:E.name,path:E.path,parentPath:E.parentPath,sort:E.sort})}if(w.length>0)await V.updBatch(Y,w);if(S.length>0)await V.insBatch(Y,S);let k=new Set;for(let E of _){if(typeof E?.path!=="string"||!E.path)continue;if(!G.has(E.path)){if(typeof E?.id==="number")k.add(E.id)}}for(let E of L)if(typeof E==="number"&&E>0)k.add(E);for(let E of O){if(typeof E?.path!=="string"||!E.path)continue;if(!J(E.path))continue;if(typeof E?.id==="number"&&E.id>0)k.add(E.id)}let N=Array.from(k);if(N.length>0)await V.delForceBatch(Y,N)})}$0();function t0($){let Z=String($.type??"").trim(),J=typeof $.input==="string"?$.input.trim():"",Q=NZ(Z,J),X=$.default??null;if(X===null){if(Q.input==="array"||Q.input==="array_number"||Q.input==="array_integer")X="[]"}return{name:$.name,type:Q.type,input:Q.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 lJ($){return String($).replace(/"/g,"\\\"")}function rJ($){if($===null)return null;if(typeof $==="string"||typeof $==="number"||typeof $==="boolean")return $;if(Array.isArray($)){let Z=[];for(let J of $)Z.push(rJ(J));return Z}return String($)}function o1($){if($===null)return!0;return typeof $==="string"||typeof $==="number"||typeof $==="boolean"}function l1($){if(!$||typeof $!=="object")return!1;if($ instanceof Date)return!1;if(Array.isArray($))return!1;return!0}function oJ($){if(o1($))return $;if(Array.isArray($)){let Z=[];for(let J of $){let Q=oJ(J);if(Q===null)return null;Z.push(Q)}return Z}if(l1($)){let Z={};for(let[J,Q]of Object.entries($)){if(Q===void 0)continue;let X=oJ(Q);if(X===null)return null;Z[J]=X}return Z}return null}function MG($){if(!Array.isArray($))return[];let Z=[];for(let J of $){if(J===null){Z.push(null);continue}if(typeof J==="string"||typeof J==="number"||typeof J==="boolean"){Z.push(J);continue}if(typeof J==="bigint"){Z.push(String(J));continue}if(J instanceof Date){Z.push(J);continue}let Q=oJ(J);if(Q!==null){Z.push(Q);continue}Z.push(String(J))}return Z}function T$($){if(typeof $==="number")return $;if(typeof $==="bigint")return Number($);return 0}u0();class D{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 T({kind:"validation",message:"\u540C\u6B65\u8868\uFF1Actx.db \u672A\u521D\u59CB\u5316",noLog:!0,meta:{subsystem:"syncTable",operation:"init"}});if(!$.config)throw new T({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 T({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 D.ensureDbVersion(this.db);let Z=[],J=[];for(let Q of $){if(!Q||Q.type!=="table")continue;let X=Q.source==="addon"?`addon_${c(Q.addonName)}_${c(Q.fileName)}`:c(Q.fileName),G=Q.content;for(let U of Object.values(G))D.normalizeFieldDefinitionInPlace(U);let Y=await D.tableExists(this.db,this.dbName,X),V={item:Q,tableName:X,tableFields:G,existsTable:Y,existingColumns:null,existingIndexes:null,plan:null,planSummary:null,planDetails:null};if(Y){let U=await D.getTableColumns(this.db,this.dbName,X),O=await D.getTableIndexes(this.db,this.dbName,X),_=D.collectIncompatibleTypeChanges(X,U,G);for(let A of _)J.push(A);V.existingColumns=U,V.existingIndexes=O}Z.push(V)}D.throwIfIncompatibleTypeChanges(J);for(let Q of Z){if(!Q.existsTable)continue;if(!Q.existingColumns||!Q.existingIndexes)throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A\u9884\u68C0\u9636\u6BB5\u7F3A\u5931\u8868\u5143\u4FE1\u606F\uFF08\u8868=${Q.tableName}\uFF09`);let X=D.buildTablePlan({tableName:Q.tableName,fields:Q.tableFields,existingColumns:Q.existingColumns,existingIndexes:Q.existingIndexes});Q.plan=X.plan,Q.planSummary=X.summary,Q.planDetails=X.details;for(let G of X.incompatibleTypeChanges)J.push(G)}D.throwIfIncompatibleTypeChanges(J);for(let Q of Z){let{item:X,tableName:G,tableFields:Y,existsTable:V}=Q;try{if(V){let{plan:U,planSummary:O,planDetails:_}=Q;if(U&&U.changed&&O&&_){let A=`[\u8868 ${G}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${O.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${O.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${O.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${O.indexChanges}`,L=_.fieldChanges.flatMap((S)=>S.changes.map((k)=>{let N=String(k.current??""),E=String(k.expected??"");return`- ${S.dbFieldName}.${k.type}: ${N} -> ${E}`})),C=_.indexChanges.map((S)=>{let k=`idx_${S.fieldName}`===S.indexName?S.indexName:S.indexName;if(S.action==="create")return`- index.${k}: \u65E0 -> ${S.indexName}(${S.fieldName})`;return`- index.${k}: ${S.indexName}(${S.fieldName}) -> \u65E0`}),w=[];for(let S of L)w.push(S);for(let S of C)w.push(S);I.debug(A);for(let S of w)I.debug(`[\u8868 ${G}] \u53D8\u66F4\u660E\u7EC6 ${S}`);await D.applyTablePlan(this.db,G,U)}}else await D.createTable(this.db,G,Y)}catch(U){let O=String(U?.message||U),_=U?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25\uFF08\u8868\u7EA7\uFF09",dbName:this.dbName,table:G,operation:V?"modifyTable":"createTable",source:X.source,sourceName:X.sourceName,addonName:X.addonName,fileName:X.fileName,filePath:X.filePath,errorMessage:O,sqlInfo:_?{sql:_.sql,params:_.params,duration:_.duration}:null,err:U}),U.__syncTableLogged=!0,U}}}catch(Z){if(Z?.__syncTableLogged===!0)throw Z;if(j$(Z)&&Z.noLog===!0)throw Z;if(Z?.__syncTableNoLog===!0)throw Z;let J=String(Z?.message||Z),Q=Z?.sqlInfo;throw I.error({msg:"\u6570\u636E\u5E93\u540C\u6B65\u5931\u8D25",dbName:this.dbName,errorMessage:J,sqlInfo:Q?{sql:Q.sql,params:Q.params,duration:Q.duration}:null,err:Z}),Z}}static buildRuntimeIoError($,Z,J){let Q=String(J?.message||J),X=Error(`\u540C\u6B65\u8868\uFF1A\u8BFB\u53D6\u5143\u4FE1\u606F\u5931\u8D25\uFF0C\u64CD\u4F5C=${$}\uFF0C\u8868=${Z}\uFF0C\u9519\u8BEF=${Q}`);if(J?.sqlInfo)X.sqlInfo=J.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,J=!1,Q=null,X=null,G=null){let Y=String($||"").toLowerCase(),V=D.TYPE_MAPPING;if(Y==="enum"){let O=n$(String(G||""));if(O.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 _=[];for(let A of O){let L=String(A).replace(/'/g,"''");_.push(`'${L}'`)}return`${V[Y]}(${_.join(",")})`}if(D.isStringOrArrayType(Y)){if(typeof Z!=="number")throw Error(`\u540C\u6B65\u8868\uFF1A\u5185\u90E8\u9519\u8BEF\uFF1A${Y} \u7C7B\u578B\u7F3A\u5931 max\uFF08\u5E94\u7531 checkTable \u963B\u65AD\uFF09`);return`${V[Y]}(${Z})`}if(D.DECIMAL_TYPES.has(Y)){if(typeof Q!=="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 O=`${V[Y]}(${Q},${X})`;return J?`${O} UNSIGNED`:O}let U=V[Y]||"TEXT";if((D.INT_TYPES.has(Y)||D.FLOAT_TYPES.has(Y))&&J)return`${U} UNSIGNED`;return U}static resolveDefaultValue($,Z){let J=String(Z||"").toLowerCase();if($!==null&&$!=="null")return $;switch(J){case"tinyint":case"smallint":case"mediumint":case"int":case"bigint":case"decimal":case"float":case"double":return 0;case"char":case"varchar":return"";case"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 J=String(Z||"").toLowerCase();if(D.TEXT_FAMILY.has(J)||J==="json"||$==="null")return"";if(J==="enum")return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(D.INT_TYPES.has(J)||D.DECIMAL_TYPES.has(J)||D.FLOAT_TYPES.has(J)||D.isStringOrArrayType(J))if(typeof $==="number"&&!Number.isNaN($))return` DEFAULT ${$}`;else return` DEFAULT '${String($).replace(/'/g,"''")}'`;if(J==="datetime"||J==="timestamp"){if(typeof $==="string"){let Q=$.trim();if(/^current_timestamp(\(\s*\d+\s*\)|\(\s*\))?$/i.test(Q))return` DEFAULT ${Q.toUpperCase().replace(/\(\s*\)/g,"")}`;return` DEFAULT '${Q.replace(/'/g,"''")}'`}return""}return""}static normalizeDefaultForCompare($,Z){if($===null||$===void 0)return"null";let J=String(Z||"").toLowerCase(),Q=String($).trim();if(D.INT_TYPES.has(J)||D.DECIMAL_TYPES.has(J)||D.FLOAT_TYPES.has(J)){if(/^[+-]?\d+(?:\.\d+)?$/.test(Q)){let X="",G=Q;if(G.startsWith("+")||G.startsWith("-"))X=G.startsWith("-")?"-":"",G=G.slice(1);let Y=G.split("."),V=Y[0]||"0",U=Y[1]||"",O=V.replace(/^0+(\d)/,"$1"),_=U.replace(/0+$/g,""),A=O===""?"0":O,L=_.length>0?`${A}.${_}`:A;return X==="-"&&L!=="0"?`-${L}`:L}}return Q}static buildIndexClause($,Z,J){let Q=D.quoteIdentifier($);if(J==="create"){let X=D.quoteIdentifier(Z);return`ADD INDEX ${Q} (${X})`}return`DROP INDEX ${Q}`}static getSystemColumnDef($){let Z=null;for(let Q of D.SYSTEM_FIELDS)if(Q.name===$){Z=Q;break}if(!Z)return null;return`${D.quoteIdentifier(Z.name)} ${Z.mysqlDdl} COMMENT "${lJ(Z.comment)}"`}static buildSystemColumnDefs(){let $=[];for(let Z of D.SYSTEM_FIELDS){let J=D.getSystemColumnDef(Z.name);if(J)$.push(J)}return $}static getSystemFieldNames(){return D.SYSTEM_FIELDS.filter(($)=>$.name!=="id").map(($)=>$.name)}static async runIndexBatch($,Z,J,Q){if(J.length===0)return;let G=`ALTER TABLE ${D.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.join(", ")}`;try{await D.executeDDLSafely($,G)}catch(Y){throw I.error({err:Y,table:Z,msg:Q}),Y}}static buildBusinessColumnDefs($){let Z=[];for(let[J,Q]of Object.entries($))Z.push(D.buildColumnSql(J,Q));return Z}static buildColumnSql($,Z){let J=t0(Z),Q=c($),X=D.quoteIdentifier(Q),G=D.getSqlType(J.type,J.max,J.unsigned,J.precision,J.scale,J.input),Y=D.resolveDefaultValue(J.default,J.type),V=D.generateDefaultSql(Y,J.type),U=J.unique?" UNIQUE":"",O=J.nullable?" NULL":" NOT NULL";return`${X} ${G}${U}${O}${V} COMMENT "${lJ(J.name)}"`}static generateDDLClause($,Z,J=!1){return`${J?"ADD COLUMN":"MODIFY COLUMN"} ${D.buildColumnSql($,Z)}`}static buildTablePlan($){let Z=D.getSystemFieldNames(),J=D.buildFieldPlan({tableName:$.tableName,fields:$.fields,existingColumns:$.existingColumns}),Q=D.buildSystemFieldPlan({systemFieldNames:Z,existingColumns:$.existingColumns}),X=D.buildIndexPlan({fields:$.fields,existingColumns:$.existingColumns,existingIndexes:$.existingIndexes,systemFieldNames:Z}),G=[...J.alterClauses,...Q.alterClauses],Y=X.indexActions,V=J.addedBusiness,U=J.modified,O=Q.addedSystem,_=J.incompatibleTypeChanges;return{plan:{changed:G.length>0||Y.length>0,alterClauses:G,indexActions:Y},summary:{addedBusiness:V,addedSystem:O,modified:U,indexChanges:Y.length},details:{fieldChanges:J.changeDetails,indexChanges:X.indexActions},incompatibleTypeChanges:_}}static buildFieldPlan($){let Z=[],J=0,Q=0,X=[],G=[];for(let[Y,V]of Object.entries($.fields)){let U=c(Y);if($.existingColumns[U]){let O=D.compareFieldDefinition($.existingColumns[U],V);if(O.length>0){Q=Q+1,X.push({fieldKey:Y,dbFieldName:U,changes:O});let _=O.find((A)=>A.type==="datatype");if(_){let A=t0(V),L=D.getSqlType(A.type,A.max,A.unsigned,A.precision,A.scale,A.input),C=D.getIncompatibleTypeChange($.tableName,U,String(_.current??""),L);if(C)G.push(C)}Z.push(D.generateDDLClause(Y,V,!1))}}else J=J+1,Z.push(D.generateDDLClause(Y,V,!0))}return{alterClauses:Z,addedBusiness:J,modified:Q,changeDetails:X,incompatibleTypeChanges:G}}static buildSystemFieldPlan($){let Z=[],J=0;for(let Q of $.systemFieldNames)if(!$.existingColumns[Q]){let X=D.getSystemColumnDef(Q);if(X)J=J+1,Z.push(`ADD COLUMN ${X}`)}return{alterClauses:Z,addedSystem:J}}static buildIndexPlan($){let Z={};for(let Q of D.SYSTEM_INDEX_FIELDS)if($.existingColumns[Q]||$.systemFieldNames.includes(Q))Z[`idx_${Q}`]=Q;for(let[Q,X]of Object.entries($.fields)){let G=c(Q);if(X.index&&!X.unique)Z[`idx_${G}`]=G}return{indexActions:[...Object.entries(Z).filter(([Q])=>!$.existingIndexes[Q]).map(([Q,X])=>({action:"create",indexName:Q,fieldName:X})),...Object.entries($.existingIndexes).filter(([Q,X])=>!Z[Q]&&Q.startsWith("idx_")&&Array.isArray(X)&&X.length===1&&!D.SYSTEM_INDEX_FIELDS.includes(X[0])).map(([Q,X])=>({action:"drop",indexName:Q,fieldName:X[0]}))]}}static getIncompatibleTypeChange($,Z,J,Q){let X=String(J||"").toLowerCase(),G=String(Q||"").toLowerCase(),Y=X.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),V=G.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(Y!==V&&!D.isCompatibleTypeChange(X,G))return{tableName:$,dbFieldName:Z,currentType:String(J??""),expectedType:String(Q??"")};return null}static collectIncompatibleTypeChanges($,Z,J){let Q=[];for(let[X,G]of Object.entries(J)){let Y=c(X),V=Z[Y];if(!V)continue;let O=D.compareFieldDefinition(V,G).find((C)=>C.type==="datatype");if(!O)continue;let _=t0(G),A=D.getSqlType(_.type,_.max,_.unsigned,_.precision,_.scale,_.input),L=D.getIncompatibleTypeChange($,Y,String(O.current??""),A);if(L)Q.push(L)}return Q}static throwIfIncompatibleTypeChanges($){if($.length===0)return;let Z=[];for(let Q of $)Z.push(`- ${Q.tableName}.${Q.dbFieldName}: ${Q.currentType} -> ${Q.expectedType}`);let J=[];J.push("\u7981\u6B62\u5B57\u6BB5\u7C7B\u578B\u53D8\u66F4\uFF08\u68C0\u6D4B\u5230\u4E0D\u517C\u5BB9/\u6536\u7F29\u53D8\u66F4\uFF09:");for(let Q of Z)J.push(Q);throw J.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"),J.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 T({kind:"policy",message:J.join(`
|
|
7
|
+
`),noLog:!0,multiline:!0,meta:{subsystem:"syncTable",operation:"precheck"}})}static truncateForLog($,Z){let J=String($);if(Z<=0)return"";if(J.length<=Z)return J;let Q=Math.max(0,Math.floor(Z*0.6)),X=Math.max(0,Z-Q),G=J.slice(0,Q),Y=J.slice(Math.max(0,J.length-X));return`${G} \u2026(truncated, total=${J.length})\u2026 ${Y}`}static stripAlgorithmAndLock($){let Z=String($);return Z=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT|COPY)\b\s*,?\s*/gi,"").replace(/\bLOCK\s*=\s*(NONE|SHARED|EXCLUSIVE)\b\s*,?\s*/gi,""),Z=Z.replace(/^\s*(ALTER\s+TABLE\s+(?:`[^`]+`|[a-zA-Z_][a-zA-Z0-9_]*))\s*,\s*/i,"$1 "),Z=Z.replace(/,\s*,/g,", ").replace(/,\s*$/g,"").replace(/\s{2,}/g," ").trim(),Z}static buildDdlFallbackCandidates($){let Z=String($),J=[];if(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/i.test(Z)){let G=Z.replace(/\bALGORITHM\s*=\s*(INPLACE|INSTANT)\b/gi,"ALGORITHM=COPY");if(J.push({stmt:G,reason:"ALGORITHM \u2192 COPY"}),/\bLOCK\s*=\s*NONE\b/i.test(G))J.push({stmt:G.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=SHARED"),reason:"ALGORITHM \u2192 COPY, LOCK=SHARED"}),J.push({stmt:G.replace(/\bLOCK\s*=\s*NONE\b/gi,"LOCK=EXCLUSIVE"),reason:"ALGORITHM \u2192 COPY, LOCK=EXCLUSIVE"})}let Q=D.stripAlgorithmAndLock(Z);if(Q!==Z)J.push({stmt:Q,reason:"\u79FB\u9664 ALGORITHM/LOCK"});let X=[];for(let G of J){if(!G.stmt||G.stmt.trim()==="")continue;if(G.stmt===Z)continue;if(X.some((Y)=>Y.stmt===G.stmt))continue;X.push(G)}return X}static async executeDDLSafely($,Z){try{return await $.unsafe(Z),!0}catch(J){let Q=D.buildDdlFallbackCandidates(Z),X=[],G=J;for(let _ of Q)try{return await $.unsafe(_.stmt),I.debug(`[DDL\u964D\u7EA7] ${_.reason}\uFF08\u5DF2\u6210\u529F\uFF09`),!0}catch(A){G=A;let L=String(A?.message||A);X.push(`${_.reason}: ${L}`)}let Y=String(J?.message||J),V=D.truncateForLog(String(Z),2000),U=X.length>0?X.join(" | "):"(\u65E0)",O=Error(`SQL\u6267\u884C\u5931\u8D25: ${Y}
|
|
8
|
+
SQL: ${V}
|
|
9
|
+
\u964D\u7EA7: ${U}`);if(J?.sqlInfo)O.sqlInfo=J.sqlInfo;if(!O.sqlInfo&&G?.sqlInfo)O.sqlInfo=G.sqlInfo;throw O}}static isCompatibleTypeChange($,Z){let J=String($||"").toLowerCase(),Q=String(Z||"").toLowerCase();if(J===Q)return!1;let X=J.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),G=Q.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim();if(D.TEXT_FAMILY.has(X)&&D.TEXT_FAMILY.has(G))return!0;if(D.INT_TYPES.has(X)&&D.INT_TYPES.has(G)){let Y=["tinyint","smallint","mediumint","int","bigint"],V=Y.indexOf(X);if(Y.indexOf(G)>V)return!0}if(X==="float"&&G==="double")return!0;if(X==="varchar"&&(G==="text"||G==="mediumtext"||G==="longtext"))return!0;if(X==="char"&&G==="varchar"||X==="varchar"&&G==="char")return!0;if(X==="datetime"&&G==="bigint"||X==="bigint"&&G==="datetime")return!1;return!1}static compareFieldDefinition($,Z){let J=[],Q=t0(Z),X=D.getSqlType(Q.type,Q.max,Q.unsigned,Q.precision,Q.scale,Q.input).toLowerCase().replace(/\s+/g," ").trim(),G=(typeof $.columnType==="string"&&$.columnType.trim()!==""?$.columnType:typeof $.type==="string"&&$.type.trim()!==""?D.isStringOrArrayType(Q.type)&&typeof $.max==="number"?`${$.type.trim()}(${$.max})`:$.type.trim():String($.type??"")).toLowerCase().replace(/\s+/g," ").trim(),Y=G.replace(/\s*unsigned/gi,"").replace(/\([^)]*\)/g,"").trim(),V=D.INT_TYPES.has(Y)?G.replace(/\([^)]*\)/g,"").replace(/\s+/g," ").trim():G;if(V!==X)J.push({type:"datatype",current:V,expected:X});let U=Q.nullable;if($.nullable!==U)J.push({type:"nullable",current:$.nullable,expected:U});let O=String(Q.type||"").toLowerCase();if(!D.TEXT_FAMILY.has(O)&&O!=="json"){let L=D.resolveDefaultValue(Q.default,Q.type),C=D.normalizeDefaultForCompare($.defaultValue,Q.type),w=D.normalizeDefaultForCompare(L,Q.type);if(C!==w)J.push({type:"default",current:$.defaultValue,expected:L})}let _=String($.comment??""),A=String(Q.name??"");if(_!==A)J.push({type:"comment",current:_,expected:A});return J}static async tableExists($,Z,J){try{return((await $.unsafe("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?",[Z,J])).data?.[0]?.count||0)>0}catch(Q){throw D.buildRuntimeIoError("\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728",J,Q)}}static async getTableColumns($,Z,J){let Q={};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,J]);for(let G of X.data){let Y=rJ(G.COLUMN_DEFAULT);Q[G.COLUMN_NAME]={type:String(G.DATA_TYPE??""),columnType:String(G.COLUMN_TYPE??""),length:G.CHARACTER_MAXIMUM_LENGTH,max:G.CHARACTER_MAXIMUM_LENGTH,nullable:G.IS_NULLABLE==="YES",defaultValue:Y,comment:G.COLUMN_COMMENT===null?null:String(G.COLUMN_COMMENT)}}return Q}catch(X){throw D.buildRuntimeIoError("\u8BFB\u53D6\u5217\u4FE1\u606F",J,X)}}static async getTableIndexes($,Z,J){let Q={};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,J]);for(let G of X.data){let Y=G.INDEX_NAME,V=Q[Y];if(Array.isArray(V))V.push(G.COLUMN_NAME);else Q[Y]=[G.COLUMN_NAME]}return Q}catch(X){throw D.buildRuntimeIoError("\u8BFB\u53D6\u7D22\u5F15\u4FE1\u606F",J,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 T({kind:"runtime",message:"\u540C\u6B65\u8868\uFF1A\u65E0\u6CD5\u83B7\u53D6 MySQL \u7248\u672C\u4FE1\u606F",noLog:!0,meta:{subsystem:"syncTable",operation:"ensureDbVersion"}});let J=Z.data[0].version,Q=String(J).split(".")[0]||"0",X=parseInt(Q,10);if(!Number.isFinite(X)||X<D.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR)throw new T({kind:"policy",message:`\u540C\u6B65\u8868\uFF1A\u4EC5\u652F\u6301 MySQL ${D.DB_VERSION_REQUIREMENTS.MYSQL_MIN_MAJOR}.0+\uFF08\u5F53\u524D\u7248\u672C\uFF1A${J}\uFF09`,noLog:!0,meta:{subsystem:"syncTable",operation:"ensureDbVersion"}})}static async applyTablePlan($,Z,J){if(!J||!J.changed)return;if(await D.applyIndexPlan($,Z,J.indexActions,"drop"),J.alterClauses.length>0){let X=`ALTER TABLE ${D.quoteIdentifier(Z)} ALGORITHM=INPLACE, LOCK=NONE, ${J.alterClauses.join(", ")}`;await D.executeDDLSafely($,X)}await D.applyIndexPlan($,Z,J.indexActions,"create")}static async applyIndexPlan($,Z,J,Q){let X=J.filter((V)=>V.action===Q);if(X.length===0)return;let G=X.map((V)=>D.buildIndexClause(V.indexName,V.fieldName,Q)),Y=Q==="drop"?"\u6279\u91CF\u5220\u9664\u7D22\u5F15\u5931\u8D25":"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25";await D.runIndexBatch($,Z,G,Y)}static async createTable($,Z,J,Q=D.SYSTEM_INDEX_FIELDS){let G=[...D.buildSystemColumnDefs(),...D.buildBusinessColumnDefs(J)].join(`,
|
|
10
|
+
`),Y=D.quoteIdentifier(Z),{ENGINE:V,CHARSET:U,COLLATE:O}=D.MYSQL_TABLE_CONFIG,_=`CREATE TABLE ${Y} (
|
|
11
|
+
${G}
|
|
12
|
+
) ENGINE=${V} DEFAULT CHARSET=${U} COLLATE=${O}`;await $.unsafe(_),I.debug(`[\u8868 ${Z}] + \u521B\u5EFA\u8868\uFF08\u7CFB\u7EDF\u5B57\u6BB5 + \u4E1A\u52A1\u5B57\u6BB5\uFF09`);let A=[];for(let L of Q){let C=`idx_${L}`;A.push(D.buildIndexClause(C,L,"create"))}for(let[L,C]of Object.entries(J)){let w=c(L);if(C.index===!0&&C.unique!==!0){let S=`idx_${w}`;A.push(D.buildIndexClause(S,w,"create"))}}await D.runIndexBatch($,Z,A,"\u6279\u91CF\u521B\u5EFA\u7D22\u5F15\u5931\u8D25")}static async modifyTable($,Z,J,Q){let X=await D.getTableColumns($,Z,J),G=await D.getTableIndexes($,Z,J),{plan:Y,summary:V,details:U}=D.buildTablePlan({tableName:J,fields:Q,existingColumns:X,existingIndexes:G});if(Y.changed){let O=`[\u8868 ${J}] \u53D8\u66F4\u6C47\u603B\uFF0C\u65B0\u589E\u5B57\u6BB5=${V.addedBusiness}\uFF0C\u65B0\u589E\u7CFB\u7EDF\u5B57\u6BB5=${V.addedSystem}\uFF0C\u4FEE\u6539\u5B57\u6BB5=${V.modified}\uFF0C\u7D22\u5F15\u53D8\u66F4=${V.indexChanges}`,_=U.fieldChanges.flatMap((C)=>C.changes.map((w)=>{let S=String(w.current??""),k=String(w.expected??"");return`- ${C.dbFieldName}.${w.type}: ${S} -> ${k}`})),A=U.indexChanges.map((C)=>{let w=`idx_${C.fieldName}`===C.indexName?C.indexName:C.indexName;if(C.action==="create")return`- index.${w}: \u65E0 -> ${C.indexName}(${C.fieldName})`;return`- index.${w}: ${C.indexName}(${C.fieldName}) -> \u65E0`}),L=[..._,...A];I.debug(O);for(let C of L)I.debug(`[\u8868 ${J}] \u53D8\u66F4\u660E\u7EC6 ${C}`);await D.applyTablePlan($,J,Y)}return Y}}var AG=($,Z=Bun.nanoseconds())=>{let J=(Z-$)/1e6;if(J<1000)return`${J.toFixed(2)} \u6BEB\u79D2`;else return`${(J/1000).toFixed(2)} \u79D2`};function OG($){let Z=$||{},J=Z.BUN_WORKER_ID,Q=Z.PM2_INSTANCE_ID;if(J!==void 0)return{role:J===""?"primary":"worker",instanceId:J||"0",env:"bun-cluster"};if(Q!==void 0)return{role:Q==="0"?"primary":"worker",instanceId:Q,env:"pm2-cluster"};return{role:"primary",instanceId:null,env:"standalone"}}w$();w$();import{existsSync as r1,readdirSync as i1}from"fs";pJ();u0();var _G=()=>{let $=new Map;return((J,Q,X)=>{if(!r1(J))return;let G=i1(J,{withFileTypes:!0});for(let Y of G){if(Y.name.startsWith("_"))continue;if(!DZ(J,Y))continue;let V=UZ(J,Y.name),U={source:Q,sourceName:X,name:Y.name,camelName:L$(Y.name),rootDir:V};$.set(Y.name,U)}})(o(s0,"node_modules","@befly-addon"),"addon","\u7EC4\u4EF6"),Array.from($.values())};PZ();var t1={name:"auth",enable:!0,deps:["cors"],handler:async($,Z)=>{let J=Z.req.headers.get("authorization");if(J&&J.startsWith("Bearer ")){let Q=J.substring(7);try{let X=await $.jwt.verify(Q);Z.user=X,VX(X.id,X.roleCode,X.nickname,X.roleType)}catch{Z.user={}}}else Z.user={}}},FG=t1;var a1={name:"cors",enable:!0,deps:[],handler:async($,Z)=>{let J=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:{}),G=vZ(J,X);if(Z.corsHeaders=G,J.method==="OPTIONS"){Z.response=new Response(null,{status:204,headers:G});return}}},KG=a1;var e1=":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]["+e1+"]*",ZW=new RegExp("^"+$W+"$");function xZ($,Z){let J=[],Q=Z.exec($);while(Q){let X=[];X.startIndex=Z.lastIndex-Q[0].length;let G=Q.length;for(let Y=0;Y<G;Y++)X.push(Q[Y]);J.push(X),Q=Z.exec($)}return J}var o$=function($){let Z=ZW.exec($);return!(Z===null||typeof Z>"u")};function zG($){return typeof $<"u"}var JW={allowBooleanAttributes:!1,unpairedTags:[]};function LG($,Z){Z=Object.assign({},JW,Z);let J=[],Q=!1,X=!1;if($[0]==="\uFEFF")$=$.substr(1);for(let G=0;G<$.length;G++)if($[G]==="<"&&$[G+1]==="?"){if(G+=2,G=qG($,G),G.err)return G}else if($[G]==="<"){let Y=G;if(G++,$[G]==="!"){G=IG($,G);continue}else{let V=!1;if($[G]==="/")V=!0,G++;let U="";for(;G<$.length&&$[G]!==">"&&$[G]!==" "&&$[G]!=="\t"&&$[G]!==`
|
|
13
|
+
`&&$[G]!=="\r";G++)U+=$[G];if(U=U.trim(),U[U.length-1]==="/")U=U.substring(0,U.length-1),G--;if(!VW(U)){let A;if(U.trim().length===0)A="Invalid space after '<'.";else A="Tag '"+U+"' is an invalid name.";return H0("InvalidTag",A,o0($,G))}let O=GW($,G);if(O===!1)return H0("InvalidAttr","Attributes for '"+U+"' have open quote.",o0($,G));let _=O.value;if(G=O.index,_[_.length-1]==="/"){let A=G-_.length;_=_.substring(0,_.length-1);let L=jG(_,Z);if(L===!0)Q=!0;else return H0(L.err.code,L.err.msg,o0($,A+L.err.line))}else if(V)if(!O.tagClosed)return H0("InvalidTag","Closing tag '"+U+"' doesn't have proper closing.",o0($,G));else if(_.trim().length>0)return H0("InvalidTag","Closing tag '"+U+"' can't have attributes or invalid starting.",o0($,Y));else if(J.length===0)return H0("InvalidTag","Closing tag '"+U+"' has not been opened.",o0($,Y));else{let A=J.pop();if(U!==A.tagName){let L=o0($,A.tagStartPos);return H0("InvalidTag","Expected closing tag '"+A.tagName+"' (opened in line "+L.line+", col "+L.col+") instead of closing tag '"+U+"'.",o0($,Y))}if(J.length==0)X=!0}else{let A=jG(_,Z);if(A!==!0)return H0(A.err.code,A.err.msg,o0($,G-_.length+A.err.line));if(X===!0)return H0("InvalidXml","Multiple possible root nodes found.",o0($,G));else if(Z.unpairedTags.indexOf(U)!==-1);else J.push({tagName:U,tagStartPos:Y});Q=!0}for(G++;G<$.length;G++)if($[G]==="<")if($[G+1]==="!"){G++,G=IG($,G);continue}else if($[G+1]==="?"){if(G=qG($,++G),G.err)return G}else break;else if($[G]==="&"){let A=WW($,G);if(A==-1)return H0("InvalidChar","char '&' is not expected.",o0($,G));G=A}else if(X===!0&&!RG($[G]))return H0("InvalidXml","Extra text at the end",o0($,G));if($[G]==="<")G--}}else{if(RG($[G]))continue;return H0("InvalidChar","char '"+$[G]+"' is not expected.",o0($,G))}if(!Q)return H0("InvalidXml","Start tag expected.",1);else if(J.length==1)return H0("InvalidTag","Unclosed tag '"+J[0].tagName+"'.",o0($,J[0].tagStartPos));else if(J.length>0)return H0("InvalidXml","Invalid '"+JSON.stringify(J.map((G)=>G.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1});return!0}function RG($){return $===" "||$==="\t"||$===`
|
|
14
|
+
`||$==="\r"}function qG($,Z){let J=Z;for(;Z<$.length;Z++)if($[Z]=="?"||$[Z]==" "){let Q=$.substr(J,Z-J);if(Z>5&&Q==="xml")return H0("InvalidXml","XML declaration allowed only at the start of the document.",o0($,Z));else if($[Z]=="?"&&$[Z+1]==">"){Z++;break}else continue}return Z}function IG($,Z){if($.length>Z+5&&$[Z+1]==="-"&&$[Z+2]==="-"){for(Z+=3;Z<$.length;Z++)if($[Z]==="-"&&$[Z+1]==="-"&&$[Z+2]===">"){Z+=2;break}}else if($.length>Z+8&&$[Z+1]==="D"&&$[Z+2]==="O"&&$[Z+3]==="C"&&$[Z+4]==="T"&&$[Z+5]==="Y"&&$[Z+6]==="P"&&$[Z+7]==="E"){let J=1;for(Z+=8;Z<$.length;Z++)if($[Z]==="<")J++;else if($[Z]===">"){if(J--,J===0)break}}else if($.length>Z+9&&$[Z+1]==="["&&$[Z+2]==="C"&&$[Z+3]==="D"&&$[Z+4]==="A"&&$[Z+5]==="T"&&$[Z+6]==="A"&&$[Z+7]==="["){for(Z+=8;Z<$.length;Z++)if($[Z]==="]"&&$[Z+1]==="]"&&$[Z+2]===">"){Z+=2;break}}return Z}var QW='"',XW="'";function GW($,Z){let J="",Q="",X=!1;for(;Z<$.length;Z++){if($[Z]===QW||$[Z]===XW)if(Q==="")Q=$[Z];else if(Q!==$[Z]);else Q="";else if($[Z]===">"){if(Q===""){X=!0;break}}J+=$[Z]}if(Q!=="")return!1;return{value:J,index:Z,tagClosed:X}}var YW=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function jG($,Z){let J=xZ($,YW),Q={};for(let X=0;X<J.length;X++){if(J[X][1].length===0)return H0("InvalidAttr","Attribute '"+J[X][2]+"' has no space in starting.",AZ(J[X]));else if(J[X][3]!==void 0&&J[X][4]===void 0)return H0("InvalidAttr","Attribute '"+J[X][2]+"' is without value.",AZ(J[X]));else if(J[X][3]===void 0&&!Z.allowBooleanAttributes)return H0("InvalidAttr","boolean attribute '"+J[X][2]+"' is not allowed.",AZ(J[X]));let G=J[X][2];if(!UW(G))return H0("InvalidAttr","Attribute '"+G+"' is an invalid name.",AZ(J[X]));if(!Q.hasOwnProperty(G))Q[G]=1;else return H0("InvalidAttr","Attribute '"+G+"' is repeated.",AZ(J[X]))}return!0}function HW($,Z){let J=/\d/;if($[Z]==="x")Z++,J=/[\da-fA-F]/;for(;Z<$.length;Z++){if($[Z]===";")return Z;if(!$[Z].match(J))break}return-1}function WW($,Z){if(Z++,$[Z]===";")return-1;if($[Z]==="#")return Z++,HW($,Z);let J=0;for(;Z<$.length;Z++,J++){if($[Z].match(/\w/)&&J<20)continue;if($[Z]===";")break;return-1}return Z}function H0($,Z,J){return{err:{code:$,msg:Z,line:J.line||J,col:J.col}}}function UW($){return o$($)}function VW($){return o$($)}function o0($,Z){let J=$.substring(0,Z).split(/\r?\n/);return{line:J.length,col:J[J.length-1].length+1}}function AZ($){return $.startIndex+$[1].length}var MW={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function($,Z){return Z},attributeValueProcessor:function($,Z){return Z},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function($,Z,J){return $},captureMetaData:!1},BG=function($){return Object.assign({},MW,$)};var fZ;if(typeof Symbol!=="function")fZ="@@xmlMetadata";else fZ=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][fZ]={startIndex:Z}}static getMetaDataSymbol(){return fZ}}class gZ{constructor($){this.suppressValidationErr=!$}readDocType($,Z){let J={};if($[Z+3]==="O"&&$[Z+4]==="C"&&$[Z+5]==="T"&&$[Z+6]==="Y"&&$[Z+7]==="P"&&$[Z+8]==="E"){Z=Z+9;let Q=1,X=!1,G=!1,Y="";for(;Z<$.length;Z++)if($[Z]==="<"&&!G){if(X&&f$($,"!ENTITY",Z)){Z+=7;let V,U;if([V,U,Z]=this.readEntityExp($,Z+1,this.suppressValidationErr),U.indexOf("&")===-1)J[V]={regx:RegExp(`&${V};`,"g"),val:U}}else if(X&&f$($,"!ELEMENT",Z)){Z+=8;let{index:V}=this.readElementExp($,Z+1);Z=V}else if(X&&f$($,"!ATTLIST",Z))Z+=8;else if(X&&f$($,"!NOTATION",Z)){Z+=9;let{index:V}=this.readNotationExp($,Z+1,this.suppressValidationErr);Z=V}else if(f$($,"!--",Z))G=!0;else throw Error("Invalid DOCTYPE");Q++,Y=""}else if($[Z]===">"){if(G){if($[Z-1]==="-"&&$[Z-2]==="-")G=!1,Q--}else Q--;if(Q===0)break}else if($[Z]==="[")X=!0;else Y+=$[Z];if(Q!==0)throw Error("Unclosed DOCTYPE")}else throw Error("Invalid Tag instead of DOCTYPE");return{entities:J,i:Z}}readEntityExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z])&&$[Z]!=='"'&&$[Z]!=="'")J+=$[Z],Z++;if(OZ(J),Z=r0($,Z),!this.suppressValidationErr){if($.substring(Z,Z+6).toUpperCase()==="SYSTEM")throw Error("External entities are not supported");else if($[Z]==="%")throw Error("Parameter entities are not supported")}let Q="";return[Z,Q]=this.readIdentifierVal($,Z,"entity"),Z--,[J,Q,Z]}readNotationExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;!this.suppressValidationErr&&OZ(J),Z=r0($,Z);let Q=$.substring(Z,Z+6).toUpperCase();if(!this.suppressValidationErr&&Q!=="SYSTEM"&&Q!=="PUBLIC")throw Error(`Expected SYSTEM or PUBLIC, found "${Q}"`);Z+=Q.length,Z=r0($,Z);let X=null,G=null;if(Q==="PUBLIC"){if([Z,X]=this.readIdentifierVal($,Z,"publicIdentifier"),Z=r0($,Z),$[Z]==='"'||$[Z]==="'")[Z,G]=this.readIdentifierVal($,Z,"systemIdentifier")}else if(Q==="SYSTEM"){if([Z,G]=this.readIdentifierVal($,Z,"systemIdentifier"),!this.suppressValidationErr&&!G)throw Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:J,publicIdentifier:X,systemIdentifier:G,index:--Z}}readIdentifierVal($,Z,J){let Q="",X=$[Z];if(X!=='"'&&X!=="'")throw Error(`Expected quoted string, found "${X}"`);Z++;while(Z<$.length&&$[Z]!==X)Q+=$[Z],Z++;if($[Z]!==X)throw Error(`Unterminated ${J} value`);return Z++,[Z,Q]}readElementExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;if(!this.suppressValidationErr&&!o$(J))throw Error(`Invalid element name: "${J}"`);Z=r0($,Z);let Q="";if($[Z]==="E"&&f$($,"MPTY",Z))Z+=4;else if($[Z]==="A"&&f$($,"NY",Z))Z+=2;else if($[Z]==="("){Z++;while(Z<$.length&&$[Z]!==")")Q+=$[Z],Z++;if($[Z]!==")")throw Error("Unterminated content model")}else if(!this.suppressValidationErr)throw Error(`Invalid Element Expression, found "${$[Z]}"`);return{elementName:J,contentModel:Q.trim(),index:Z}}readAttlistExp($,Z){Z=r0($,Z);let J="";while(Z<$.length&&!/\s/.test($[Z]))J+=$[Z],Z++;OZ(J),Z=r0($,Z);let Q="";while(Z<$.length&&!/\s/.test($[Z]))Q+=$[Z],Z++;if(!OZ(Q))throw Error(`Invalid attribute name: "${Q}"`);Z=r0($,Z);let X="";if($.substring(Z,Z+8).toUpperCase()==="NOTATION"){if(X="NOTATION",Z+=8,Z=r0($,Z),$[Z]!=="(")throw Error(`Expected '(', found "${$[Z]}"`);Z++;let Y=[];while(Z<$.length&&$[Z]!==")"){let V="";while(Z<$.length&&$[Z]!=="|"&&$[Z]!==")")V+=$[Z],Z++;if(V=V.trim(),!OZ(V))throw Error(`Invalid notation name: "${V}"`);if(Y.push(V),$[Z]==="|")Z++,Z=r0($,Z)}if($[Z]!==")")throw Error("Unterminated list of notations");Z++,X+=" ("+Y.join("|")+")"}else{while(Z<$.length&&!/\s/.test($[Z]))X+=$[Z],Z++;let Y=["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"];if(!this.suppressValidationErr&&!Y.includes(X.toUpperCase()))throw Error(`Invalid attribute type: "${X}"`)}Z=r0($,Z);let G="";if($.substring(Z,Z+8).toUpperCase()==="#REQUIRED")G="#REQUIRED",Z+=8;else if($.substring(Z,Z+7).toUpperCase()==="#IMPLIED")G="#IMPLIED",Z+=7;else[Z,G]=this.readIdentifierVal($,Z,"ATTLIST");return{elementName:J,attributeName:Q,attributeType:X,defaultValue:G,index:Z}}}var r0=($,Z)=>{while(Z<$.length&&/\s/.test($[Z]))Z++;return Z};function f$($,Z,J){for(let Q=0;Q<Z.length;Q++)if(Z[Q]!==$[J+Q+1])return!1;return!0}function OZ($){if(o$($))return $;else throw Error(`Invalid entity name ${$}`)}var AW=/^[-+]?0x[a-fA-F0-9]+$/,OW=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,_W={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function iJ($,Z={}){if(Z=Object.assign({},_W,Z),!$||typeof $!=="string")return $;let J=$.trim();if(Z.skipLike!==void 0&&Z.skipLike.test(J))return $;else if($==="0")return 0;else if(Z.hex&&AW.test(J))return RW(J,16);else if(J.includes("e")||J.includes("E"))return KW($,J,Z);else{let Q=OW.exec(J);if(Q){let X=Q[1]||"",G=Q[2],Y=zW(Q[3]),V=X?$[G.length+1]===".":$[G.length]===".";if(!Z.leadingZeros&&(G.length>1||G.length===1&&!V))return $;else{let U=Number(J),O=String(U);if(U===0)return U;if(O.search(/[eE]/)!==-1)if(Z.eNotation)return U;else return $;else if(J.indexOf(".")!==-1)if(O==="0")return U;else if(O===Y)return U;else if(O===`${X}${Y}`)return U;else return $;let _=G?Y:J;if(G)return _===O||X+_===O?U:$;else return _===O||_===X+O?U:$}}else return $}}var FW=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function KW($,Z,J){if(!J.eNotation)return $;let Q=Z.match(FW);if(Q){let X=Q[1]||"",G=Q[3].indexOf("e")===-1?"E":"e",Y=Q[2],V=X?$[Y.length+1]===G:$[Y.length]===G;if(Y.length>1&&V)return $;else if(Y.length===1&&(Q[3].startsWith(`.${G}`)||Q[3][0]===G))return Number(Z);else if(J.leadingZeros&&!V)return Z=(Q[1]||"")+Q[3],Number(Z);else return $}else return $}function zW($){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 tJ($){if(typeof $==="function")return $;if(Array.isArray($))return(Z)=>{for(let J of $){if(typeof J==="string"&&Z===J)return!0;if(J instanceof RegExp&&J.test(Z))return!0}};return()=>!1}class yZ{constructor($){if(this.options=$,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xA2"},pound:{regex:/&(pound|#163);/g,val:"\xA3"},yen:{regex:/&(yen|#165);/g,val:"\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\xA9"},reg:{regex:/&(reg|#174);/g,val:"\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\u20B9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(Z,J)=>String.fromCodePoint(Number.parseInt(J,16))}},this.addExternalEntities=qW,this.parseXml=PW,this.parseTextData=IW,this.resolveNameSpace=jW,this.buildAttributesMap=BW,this.isItStopNode=EW,this.replaceEntitiesValue=wW,this.readStopNodeData=DW,this.saveTextToParentTag=SW,this.addChild=CW,this.ignoreAttributesFn=tJ(this.options.ignoreAttributes),this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(let Z=0;Z<this.options.stopNodes.length;Z++){let J=this.options.stopNodes[Z];if(typeof J!=="string")continue;if(J.startsWith("*."))this.stopNodesWildcard.add(J.substring(2));else this.stopNodesExact.add(J)}}}}function qW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Q=Z[J];this.lastEntities[Q]={regex:new RegExp("&"+Q+";","g"),val:$[Q]}}}function IW($,Z,J,Q,X,G,Y){if($!==void 0){if(this.options.trimValues&&!Q)$=$.trim();if($.length>0){if(!Y)$=this.replaceEntitiesValue($);let V=this.options.tagValueProcessor(Z,$,J,X,G);if(V===null||V===void 0)return $;else if(typeof V!==typeof $||V!==$)return V;else if(this.options.trimValues)return eJ($,this.options.parseTagValue,this.options.numberParseOptions);else if($.trim()===$)return eJ($,this.options.parseTagValue,this.options.numberParseOptions);else return $}}}function jW($){if(this.options.removeNSPrefix){let Z=$.split(":"),J=$.charAt(0)==="/"?"/":"";if(Z[0]==="xmlns")return"";if(Z.length===2)$=J+Z[1]}return $}var LW=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function BW($,Z){if(this.options.ignoreAttributes!==!0&&typeof $==="string"){let J=xZ($,LW),Q=J.length,X={};for(let G=0;G<Q;G++){let Y=this.resolveNameSpace(J[G][1]);if(this.ignoreAttributesFn(Y,Z))continue;let V=J[G][4],U=this.options.attributeNamePrefix+Y;if(Y.length){if(this.options.transformAttributeName)U=this.options.transformAttributeName(U);if(U==="__proto__")U="#__proto__";if(V!==void 0){if(this.options.trimValues)V=V.trim();V=this.replaceEntitiesValue(V);let O=this.options.attributeValueProcessor(Y,V,Z);if(O===null||O===void 0)X[U]=V;else if(typeof O!==typeof V||O!==V)X[U]=O;else X[U]=eJ(V,this.options.parseAttributeValue,this.options.numberParseOptions)}else if(this.options.allowBooleanAttributes)X[U]=!0}}if(!Object.keys(X).length)return;if(this.options.attributesGroupName){let G={};return G[this.options.attributesGroupName]=X,G}return X}}var PW=function($){$=$.replace(/\r\n?/g,`
|
|
15
|
+
`);let Z=new a0("!xml"),J=Z,Q="",X="",G=new gZ(this.options.processEntities);for(let Y=0;Y<$.length;Y++)if($[Y]==="<")if($[Y+1]==="/"){let U=g$($,">",Y,"Closing Tag is not closed."),O=$.substring(Y+2,U).trim();if(this.options.removeNSPrefix){let L=O.indexOf(":");if(L!==-1)O=O.substr(L+1)}if(this.options.transformTagName)O=this.options.transformTagName(O);if(J)Q=this.saveTextToParentTag(Q,J,X);let _=X.substring(X.lastIndexOf(".")+1);if(O&&this.options.unpairedTags.indexOf(O)!==-1)throw Error(`Unpaired tag can not be used as closing tag: </${O}>`);let A=0;if(_&&this.options.unpairedTags.indexOf(_)!==-1)A=X.lastIndexOf(".",X.lastIndexOf(".")-1),this.tagsNodeStack.pop();else A=X.lastIndexOf(".");X=X.substring(0,A),J=this.tagsNodeStack.pop(),Q="",Y=U}else if($[Y+1]==="?"){let U=aJ($,Y,!1,"?>");if(!U)throw Error("Pi Tag is not closed.");if(Q=this.saveTextToParentTag(Q,J,X),this.options.ignoreDeclaration&&U.tagName==="?xml"||this.options.ignorePiTags);else{let O=new a0(U.tagName);if(O.add(this.options.textNodeName,""),U.tagName!==U.tagExp&&U.attrExpPresent)O[":@"]=this.buildAttributesMap(U.tagExp,X);this.addChild(J,O,X,Y)}Y=U.closeIndex+1}else if($.substr(Y+1,3)==="!--"){let U=g$($,"-->",Y+4,"Comment is not closed.");if(this.options.commentPropName){let O=$.substring(Y+4,U-2);Q=this.saveTextToParentTag(Q,J,X),J.add(this.options.commentPropName,[{[this.options.textNodeName]:O}])}Y=U}else if($.substr(Y+1,2)==="!D"){let U=G.readDocType($,Y);this.docTypeEntities=U.entities,Y=U.i}else if($.substr(Y+1,2)==="!["){let U=g$($,"]]>",Y,"CDATA is not closed.")-2,O=$.substring(Y+9,U);Q=this.saveTextToParentTag(Q,J,X);let _=this.parseTextData(O,J.tagname,X,!0,!1,!0,!0);if(_==null)_="";if(this.options.cdataPropName)J.add(this.options.cdataPropName,[{[this.options.textNodeName]:O}]);else J.add(this.options.textNodeName,_);Y=U+2}else{let U=aJ($,Y,this.options.removeNSPrefix),O=U.tagName,_=U.rawTagName,A=U.tagExp,L=U.attrExpPresent,C=U.closeIndex;if(this.options.transformTagName){let k=this.options.transformTagName(O);if(A===O)A=k;O=k}if(J&&Q){if(J.tagname!=="!xml")Q=this.saveTextToParentTag(Q,J,X,!1)}let w=J;if(w&&this.options.unpairedTags.indexOf(w.tagname)!==-1)J=this.tagsNodeStack.pop(),X=X.substring(0,X.lastIndexOf("."));if(O!==Z.tagname)X+=X?"."+O:O;let S=Y;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,X,O)){let k="";if(A.length>0&&A.lastIndexOf("/")===A.length-1){if(O[O.length-1]==="/")O=O.substr(0,O.length-1),X=X.substr(0,X.length-1),A=O;else A=A.substr(0,A.length-1);Y=U.closeIndex}else if(this.options.unpairedTags.indexOf(O)!==-1)Y=U.closeIndex;else{let E=this.readStopNodeData($,_,C+1);if(!E)throw Error(`Unexpected end of ${_}`);Y=E.i,k=E.tagContent}let N=new a0(O);if(O!==A&&L)N[":@"]=this.buildAttributesMap(A,X);if(k)k=this.parseTextData(k,O,X,!0,L,!0,!0);X=X.substr(0,X.lastIndexOf(".")),N.add(this.options.textNodeName,k),this.addChild(J,N,X,S)}else{if(A.length>0&&A.lastIndexOf("/")===A.length-1){if(O[O.length-1]==="/")O=O.substr(0,O.length-1),X=X.substr(0,X.length-1),A=O;else A=A.substr(0,A.length-1);if(this.options.transformTagName){let N=this.options.transformTagName(O);if(A===O)A=N;O=N}let k=new a0(O);if(O!==A&&L)k[":@"]=this.buildAttributesMap(A,X);this.addChild(J,k,X,S),X=X.substr(0,X.lastIndexOf("."))}else{let k=new a0(O);if(this.tagsNodeStack.push(J),O!==A&&L)k[":@"]=this.buildAttributesMap(A,X);this.addChild(J,k,X,S),J=k}Q="",Y=C}}else Q+=$[Y];return Z.child};function CW($,Z,J,Q){if(!this.options.captureMetaData)Q=void 0;let X=this.options.updateTag(Z.tagname,J,Z[":@"]);if(X===!1);else if(typeof X==="string")Z.tagname=X,$.addChild(Z,Q);else $.addChild(Z,Q)}var wW=function($){if(this.options.processEntities){for(let Z in this.docTypeEntities){let J=this.docTypeEntities[Z];$=$.replace(J.regx,J.val)}for(let Z in this.lastEntities){let J=this.lastEntities[Z];$=$.replace(J.regex,J.val)}if(this.options.htmlEntities)for(let Z in this.htmlEntities){let J=this.htmlEntities[Z];$=$.replace(J.regex,J.val)}$=$.replace(this.ampEntity.regex,this.ampEntity.val)}return $};function SW($,Z,J,Q){if($){if(Q===void 0)Q=Z.child.length===0;if($=this.parseTextData($,Z.tagname,J,!1,Z[":@"]?Object.keys(Z[":@"]).length!==0:!1,Q),$!==void 0&&$!=="")Z.add(this.options.textNodeName,$);$=""}return $}function EW($,Z,J,Q){if(Z&&Z.has(Q))return!0;if($&&$.has(J))return!0;return!1}function TW($,Z,J=">"){let Q,X="";for(let G=Z;G<$.length;G++){let Y=$[G];if(Q){if(Y===Q)Q=""}else if(Y==='"'||Y==="'")Q=Y;else if(Y===J[0])if(J[1]){if($[G+1]===J[1])return{data:X,index:G}}else return{data:X,index:G};else if(Y==="\t")Y=" ";X+=Y}}function g$($,Z,J,Q){let X=$.indexOf(Z,J);if(X===-1)throw Error(Q);else return X+Z.length-1}function aJ($,Z,J,Q=">"){let X=TW($,Z+1,Q);if(!X)return;let{data:G,index:Y}=X,V=G.search(/\s/),U=G,O=!0;if(V!==-1)U=G.substring(0,V),G=G.substring(V+1).trimStart();let _=U;if(J){let A=U.indexOf(":");if(A!==-1)U=U.substr(A+1),O=U!==X.data.substr(A+1)}return{tagName:U,tagExp:G,closeIndex:Y,attrExpPresent:O,rawTagName:_}}function DW($,Z,J){let Q=J,X=1;for(;J<$.length;J++)if($[J]==="<")if($[J+1]==="/"){let G=g$($,">",J,`${Z} is not closed`);if($.substring(J+2,G).trim()===Z){if(X--,X===0)return{tagContent:$.substring(Q,J),i:G}}J=G}else if($[J+1]==="?")J=g$($,"?>",J+1,"StopNode is not closed.");else if($.substr(J+1,3)==="!--")J=g$($,"-->",J+3,"StopNode is not closed.");else if($.substr(J+1,2)==="![")J=g$($,"]]>",J,"StopNode is not closed.")-2;else{let G=aJ($,J,">");if(G){if((G&&G.tagName)===Z&&G.tagExp[G.tagExp.length-1]!=="/")X++;J=G.closeIndex}}}function eJ($,Z,J){if(Z&&typeof $==="string"){let Q=$.trim();if(Q==="true")return!0;else if(Q==="false")return!1;else return iJ($,J)}else if(zG($))return $;else return""}var $Q=a0.getMetaDataSymbol();function ZQ($,Z){return PG($,Z)}function PG($,Z,J){let Q,X={};for(let G=0;G<$.length;G++){let Y=$[G],V=NW(Y),U="";if(J===void 0)U=V;else U=J+"."+V;if(V===Z.textNodeName)if(Q===void 0)Q=Y[V];else Q+=""+Y[V];else if(V===void 0)continue;else if(Y[V]){let O=PG(Y[V],Z,U),_=vW(O,Z);if(Y[$Q]!==void 0)O[$Q]=Y[$Q];if(Y[":@"])kW(O,Y[":@"],U,Z);else if(Object.keys(O).length===1&&O[Z.textNodeName]!==void 0&&!Z.alwaysCreateTextNode)O=O[Z.textNodeName];else if(Object.keys(O).length===0)if(Z.alwaysCreateTextNode)O[Z.textNodeName]="";else O="";if(X[V]!==void 0&&X.hasOwnProperty(V)){if(!Array.isArray(X[V]))X[V]=[X[V]];X[V].push(O)}else if(Z.isArray(V,U,_))X[V]=[O];else X[V]=O}}if(typeof Q==="string"){if(Q.length>0)X[Z.textNodeName]=Q}else if(Q!==void 0)X[Z.textNodeName]=Q;return X}function NW($){let Z=Object.keys($);for(let J=0;J<Z.length;J++){let Q=Z[J];if(Q!==":@")return Q}}function kW($,Z,J,Q){if(Z){let X=Object.keys(Z),G=X.length;for(let Y=0;Y<G;Y++){let V=X[Y];if(Q.isArray(V,J+"."+V,!0,!0))$[V]=[Z[V]];else $[V]=Z[V]}}}function vW($,Z){let{textNodeName:J}=Z,Q=Object.keys($).length;if(Q===0)return!0;if(Q===1&&($[J]||typeof $[J]==="boolean"||$[J]===0))return!0;return!1}class _Z{constructor($){this.externalEntities={},this.options=BG($)}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=LG($,Z);if(X!==!0)throw Error(`${X.err.msg}:${X.err.line}:${X.err.col}`)}let J=new yZ(this.options);J.addExternalEntities(this.externalEntities);let Q=J.parseXml($);if(this.options.preserveOrder||Q===void 0)return Q;else return ZQ(Q,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 _Z,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 J=new URL(Z.req.url),Q=Object.fromEntries(J.searchParams);Z.body=Q}else if(Z.req.method==="POST"){let J=Z.req.headers.get("content-type")||"",Q=new URL(Z.req.url),X=Object.fromEntries(Q.searchParams);try{if(J.includes("application/json")){let G=await Z.req.json(),Y={...X,...G};Z.body=Y}else if(J.includes("application/xml")||J.includes("text/xml")){let G=await Z.req.text(),Y=xW.parse(G),V=Object.keys(Y)[0],U=V&&typeof Y[V]==="object"?Y[V]:Y,O={...X,...U};Z.body=O}else{Z.response=S$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"content-type",value:J},"parser");return}}catch{Z.response=S$(Z,"\u65E0\u6548\u7684\u8BF7\u6C42\u53C2\u6570\u683C\u5F0F",1,null,{location:"body",reason:J.includes("application/json")?"invalid_json":J.includes("xml")?"invalid_xml":"invalid_body"},"parser");return}}}},CG=fW;class m0{static apisAll(){return"apis:all"}static menusAll(){return"menus:all"}static roleInfo($){return`role:info:${$}`}static roleApis($){return`role:apis:${$}`}}$0();var gW={name:"permission",enable:!0,deps:["validator"],handler:async($,Z)=>{if(!Z.api)return;if(Z.api.auth===!1)return;if(typeof Z.user.id!=="number"){Z.response=S$(Z,"\u672A\u767B\u5F55",1,null,null,"auth");return}if(Z.user.roleCode==="dev")return;let J=Z.route,Q=Z.user.roleCode,X=!1;if(Q&&$.redis)try{let G=m0.roleApis(Q);X=await $.redis.sismember(G,J)}catch(G){I.error({event:"hook_permission_redis_error",apiPath:J,roleCode:Q,err:G,msg:"hook permission redis error"}),X=!1}if(!X){let G=typeof Z.api.name==="string"&&Z.api.name.length>0?Z.api.name:null,Y=typeof J==="string"&&J.length>0?J:null,V=G?G:Y?Y:"\u672A\u77E5\u63A5\u53E3";Z.response=S$(Z,`\u65E0\u6743\u8BBF\u95EE ${V} \u63A5\u53E3`,1,null,{apiLabel:V},"permission");return}}},wG=gW;var JQ={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:".+"},SG=new Map;function yW($){if($.startsWith("@")){let Z=$.slice(1);return JQ[Z]||$}return $}function hW($){let Z=String($||"").trim();if(Z.length<2)return null;if(!Z.startsWith("/"))return null;let J=Z.lastIndexOf("/");if(J<=0)return null;let Q=Z.slice(J+1);if(Q!==""&&!/^[gimsuy]+$/.test(Q))return null;return{source:Z.slice(1,J),flags:Q}}function EG($,Z){let J=hW($),Q=J?J.source:yW($),X=J&&J.flags!==""?J.flags:Z||"",G=`${Q}:${X}`,Y=SG.get(G);if(!Y)Y=new RegExp(Q,X),SG.set(G,Y);return Y}u0();var hZ=new Set(["number","integer","string","char","array","array_number","array_integer","json","json_number","json_integer"]);function bZ($,Z){if(PJ($)){if(Z==="number")return jZ($);return LZ($)}if(Array.isArray($)){for(let J of $)if(!bZ(J,Z))return!1;return!0}if(IZ($)){for(let J of Object.values($)){if(J===void 0)continue;if(!bZ(J,Z))return!1}return!0}return!1}class QQ{static validate($,Z,J=[]){let Q={};if(!m($))return this.buildResult({_error:"\u6570\u636E\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});if(!m(Z))return this.buildResult({_error:"\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F"});let X=$,G=Z;for(let Y of J){let V=X[Y];if(V===void 0||V===null){let U=G[Y],O=m(U)&&typeof U.name==="string"?U.name:Y;Q[Y]=`${O}\u4E3A\u5FC5\u586B\u9879`}}for(let[Y,V]of Object.entries(G)){if(Q[Y])continue;if(X[Y]===void 0&&!J.includes(Y))continue;if(!m(V)){Q[Y]=`${Y}\u9A8C\u8BC1\u89C4\u5219\u5FC5\u987B\u662F\u5BF9\u8C61\u683C\u5F0F`;continue}let{name:U,type:O}=V;if(typeof U!=="string"||typeof O!=="string"){Q[Y]=`${Y}\u9A8C\u8BC1\u89C4\u5219\u65E0\u6548`;continue}let _={name:U,type:O},A=V.input;if(typeof A==="string")_.input=A;let L=V.min;if(typeof L==="number"||L===null)_.min=L;let C=V.max;if(typeof C==="number"||C===null)_.max=C;let w=V.default;if(w===null||typeof w==="string"||typeof w==="number"||typeof w==="boolean"||Array.isArray(w)||m(w))_.default=w;let S=V.detail;if(typeof S==="string")_.detail=S;let k=V.index;if(typeof k==="boolean")_.index=k;let N=V.unique;if(typeof N==="boolean")_.unique=N;let E=V.nullable;if(typeof E==="boolean")_.nullable=E;let v=V.unsigned;if(typeof v==="boolean")_.unsigned=v;let h=this.checkField(X[Y],_,Y);if(h)Q[Y]=h}return this.buildResult(Q)}static single($,Z){let J=t0(Z),Q=J.type,X=J.input,G=J.default;if($===void 0||$===null||$==="")return{value:this.defaultFor(Q,X,G),error:null};let Y=this.convert($,X,Q);if(Y.error)return{value:null,error:Y.error};let V=this.checkRule(Y.value,Z);if(V)return{value:null,error:V};return{value:Y.value,error:null}}static buildResult($){let Z=Object.values($),J=Object.keys($),Q=Z.length>0;return{code:Q?1:0,failed:Q,firstError:Q?Z[0]??null:null,errors:Z,errorFields:J,fieldErrors:$}}static checkField($,Z,J){let Q=Z.name||J,X=t0(Z),G=this.convert($,X.input,X.type);if(G.error)return`${Q}${G.error}`;let Y=this.checkRule(G.value,Z);return Y?`${Q}${Y}`:null}static convert($,Z,J){let Q=String(Z||"").trim(),X=Q.toLowerCase();if(!hZ.has(X)&&b$(Q))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};if(!hZ.has(X)&&k$(Q))return typeof $==="string"?{value:$,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32"};switch(X){case"number":{if(jZ($))return{value:$,error:null};if(typeof $==="string"){let G=Number($);return Number.isFinite(G)?{value:G,error:null}:{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}return{value:null,error:"\u5FC5\u987B\u662F\u6570\u5B57"}}case"integer":{if(LZ($))return{value:$,error:null};if(typeof $==="string"){let G=Number($);return Number.isFinite(G)&&Number.isInteger(G)?{value:G,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 Y=String(J||"").toLowerCase();if(Y==="datetime"||Y==="timestamp")return{value:$.trim(),error:null};return{value:$,error:null}}let G=String(J||"").toLowerCase();if(G==="datetime"||G==="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 G of $)if(!jZ(G))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 G of $)if(!LZ(G))return{value:null,error:"\u6570\u7EC4\u5143\u7D20\u5FC5\u987B\u662F\u6574\u6570"};return{value:$,error:null}}case"json":if(!HZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return{value:$,error:null};case"json_number":if(!HZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return bZ($,"number")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6570\u5B57"};case"json_integer":if(!HZ($))return{value:null,error:"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"};return bZ($,"integer")?{value:$,error:null}:{value:null,error:"JSON\u503C\u5FC5\u987B\u662F\u6574\u6570"};default:{let G=String(J||"").toLowerCase();if(G==="datetime"||G==="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 J=t0(Z),Q=J.type,X=J.input,G=J.min,Y=J.max,V=String(X||"").trim(),U=V.toLowerCase(),O=!hZ.has(U)&&b$(V),_=!hZ.has(U)&&k$(V);if(U==="number"||U==="integer"){if(typeof $!=="number")return U==="integer"?"\u5FC5\u987B\u662F\u6574\u6570":"\u5FC5\u987B\u662F\u6570\u5B57";if(G!==null&&$<G)return`\u4E0D\u80FD\u5C0F\u4E8E${G}`;if(Y!==null&&Y>0&&$>Y)return`\u4E0D\u80FD\u5927\u4E8E${Y}`}else if(U==="string"||U==="char"||O||_){if(typeof $!=="string")return"\u5FC5\u987B\u662F\u5B57\u7B26\u4E32";if(U==="char"&&$.length!==1)return"\u5FC5\u987B\u662F\u5355\u5B57\u7B26";if(G!==null&&$.length<G)return`\u957F\u5EA6\u4E0D\u80FD\u5C11\u4E8E${G}\u4E2A\u5B57\u7B26`;if(Y!==null&&Y>0&&$.length>Y)return`\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC7${Y}\u4E2A\u5B57\u7B26`;if(O){let L=this.resolveRegex(V);if(!this.testRegex(L,$))return"\u683C\u5F0F\u4E0D\u6B63\u786E"}if(_){if(!n$(V).includes($))return"\u503C\u4E0D\u5728\u679A\u4E3E\u8303\u56F4\u5185"}}else if(U==="array"||U==="array_number"||U==="array_integer"){if(!Array.isArray($))return"\u5FC5\u987B\u662F\u6570\u7EC4";if(G!==null&&$.length<G)return`\u81F3\u5C11\u9700\u8981${G}\u4E2A\u5143\u7D20`;if(Y!==null&&Y>0&&$.length>Y)return`\u6700\u591A\u53EA\u80FD\u6709${Y}\u4E2A\u5143\u7D20`}else if(U==="json"||U==="json_number"||U==="json_integer"){if(!HZ($))return"\u5FC5\u987B\u662FJSON\u5BF9\u8C61\u6216\u6570\u7EC4"}let A=String(Q||"").toLowerCase();if(A==="datetime"||A==="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[L,C]=$.split(" ");if(typeof L!=="string"||typeof C!=="string")return"\u683C\u5F0F\u4E0D\u6B63\u786E";let[w,S,k]=L.split("-"),[N,E,v]=C.split(":"),h=Number(w),f=Number(S),d=Number(k),a=Number(N),r=Number(E),Y0=Number(v);if(!Number.isInteger(h)||h<1000||h>9999)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(f)||f<1||f>12)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(d)||d<1)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(a)||a<0||a>23)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(r)||r<0||r>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";if(!Number.isInteger(Y0)||Y0<0||Y0>59)return"\u683C\u5F0F\u4E0D\u6B63\u786E";let M=[31,h%4===0&&h%100!==0||h%400===0?29:28,31,30,31,30,31,31,30,31,30,31][f-1]??0;if(d>M)return"\u683C\u5F0F\u4E0D\u6B63\u786E"}return null}static resolveRegex($){if($.startsWith("@")){let Z=$.substring(1);return JQ[Z]||$}return $}static testRegex($,Z){try{return EG($).test(Z)}catch{return!1}}static defaultFor($,Z,J){if(J!==null&&J!==void 0){if((Z==="array"||Z==="array_number"||Z==="array_integer")&&typeof J==="string"){if(J==="[]")return[];try{let G=JSON.parse(J);return Array.isArray(G)?G:[]}catch{return[]}}if((Z==="number"||Z==="integer")&&typeof J==="string"){let G=Number(J);return isNaN(G)?0:G}return J}let Q=String($||"").toLowerCase();if(Q==="datetime"||Q==="timestamp"||Q==="json"||Q==="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""}}}u0();var bW={name:"validator",enable:!0,deps:["parser"],handler:async($,Z)=>{if(!Z.api)return;if(!Z.api.fields)return;if(m(Z.api.fields)){let Q=m(Z.body)?Z.body:{},X={};for(let[G,Y]of Object.entries(Z.api.fields)){let V=t0(Y),U=Q[G];if(U===void 0){let O=c(G);if(Q[O]!==void 0)U=Q[O]}if(U===void 0&&V.default!==null)U=V.default;if(U!==void 0)X[G]=U}Z.body=X}let J=QQ.validate(Z.body,Z.api.fields,Z.api.required||[]);if(J.code!==0){Z.response=S$(Z,J.firstError||"\u53C2\u6570\u9A8C\u8BC1\u5931\u8D25",1,null,J.fieldErrors,"validator");return}}},TG=bW;$0();class XQ{db;redis;constructor($){this.db=$.db,this.redis=$.redis}assertApiPathname($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32`);let J=$.trim();if(!J)throw Error(`${Z} \u4E0D\u5141\u8BB8\u4E3A\u7A7A\u5B57\u7B26\u4E32`);if(/^(GET|POST|PUT|PATCH|DELETE|OPTIONS|HEAD)\b/i.test(J))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B method \u524D\u7F00\uFF0C\u5E94\u4E3A url.pathname\uFF08\u4F8B\u5982 /api/app/xxx\uFF09`);if(!J.startsWith("/"))throw Error(`${Z} \u5FC5\u987B\u662F pathname\uFF08\u4EE5 / \u5F00\u5934\uFF09`);if(J.includes(" "))throw Error(`${Z} \u4E0D\u5141\u8BB8\u5305\u542B\u7A7A\u683C`);return J}assertApiPathList($,Z){if($===null||$===void 0)return[];let J=$;if(typeof J==="string"){let X=J.trim();if(X===""||X==="null")return[];if(X.startsWith("[")&&X.endsWith("]"))try{J=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(J))throw Error(`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\u6216 JSON \u6570\u7EC4\u5B57\u7B26\u4E32\uFF0CroleCode=${Z}\uFF0Ctype=${typeof J}`);let Q=[];for(let X of J)Q.push(this.assertApiPathname(X,`\u89D2\u8272\u6743\u9650\u6570\u636E\u4E0D\u5408\u6CD5\uFF1Aaddon_admin_role.apis \u5143\u7D20\uFF0CroleCode=${Z}`));return Q}async cacheApis(){try{if(!(await this.db.tableExists("addon_admin_api")).data){I.warn("\u26A0\uFE0F \u63A5\u53E3\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u63A5\u53E3\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_api"});if(await this.redis.setObject(m0.apisAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5931\u8D25")}catch($){I.error({err:$,msg:"\u26A0\uFE0F \u63A5\u53E3\u7F13\u5B58\u5F02\u5E38"})}}async cacheMenus(){try{if(!(await this.db.tableExists("addon_admin_menu")).data){I.warn("\u26A0\uFE0F \u83DC\u5355\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u83DC\u5355\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_menu"});if(await this.redis.setObject(m0.menusAll(),Z.data.lists)===null)I.warn("\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5931\u8D25")}catch($){I.warn({err:$,msg:"\u26A0\uFE0F \u83DC\u5355\u7F13\u5B58\u5F02\u5E38"})}}async rebuildRoleApiPermissions(){try{if(!(await this.db.tableExists("addon_admin_role")).data){I.warn("\u26A0\uFE0F \u89D2\u8272\u8868\u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u89D2\u8272\u6743\u9650\u7F13\u5B58");return}let Z=await this.db.getAll({table:"addon_admin_role",fields:["code","apis"]}),J=new Map;for(let Y of Z.data.lists){if(!Y?.code)continue;let V=this.assertApiPathList(Y.apis,Y.code);J.set(Y.code,V)}let Q=Array.from(J.keys());if(Q.length===0){I.info("\u2705 \u6CA1\u6709\u9700\u8981\u7F13\u5B58\u7684\u89D2\u8272\u6743\u9650");return}let X=Q.map((Y)=>m0.roleApis(Y));await this.redis.delBatch(X);let G=[];for(let Y of Q){let V=J.get(Y)||[],U=Array.from(new Set(V)).sort();if(U.length>0)G.push({key:m0.roleApis(Y),members:U})}if(G.length>0)await this.redis.saddBatch(G)}catch($){throw I.error({err:$,msg:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09"}),new T({kind:"runtime",message:"\u26A0\uFE0F \u89D2\u8272\u6743\u9650\u7F13\u5B58\u5F02\u5E38\uFF08\u5C06\u963B\u65AD\u542F\u52A8\uFF09",logged:!0,cause:$,meta:{subsystem:"cache",operation:"rebuildRoleApiPermissions"}})}}async refreshRoleApiPermissions($,Z){if(!$||typeof $!=="string")throw Error("roleCode \u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(!Array.isArray(Z))throw Error("apiPaths \u5FC5\u987B\u662F\u6570\u7EC4");let J=Z.map((G)=>this.assertApiPathname(G,`refreshRoleApiPermissions: apiPaths \u5143\u7D20\uFF0CroleCode=${$}`)),Q=m0.roleApis($);if(J.length===0){await this.redis.del(Q);return}let X=Array.from(new Set(J));if(await this.redis.del(Q),X.length>0)await this.redis.sadd(Q,X)}async cacheAll(){await this.cacheApis(),await this.cacheMenus(),await this.rebuildRoleApiPermissions()}async getApis(){try{return await this.redis.getObject(m0.apisAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u63A5\u53E3\u7F13\u5B58\u5931\u8D25"}),[]}}async getMenus(){try{return await this.redis.getObject(m0.menusAll())||[]}catch($){return I.error({err:$,msg:"\u83B7\u53D6\u83DC\u5355\u7F13\u5B58\u5931\u8D25"}),[]}}async getRolePermissions($){try{return await this.redis.smembers(m0.roleApis($))||[]}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u83B7\u53D6\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),[]}}async checkRolePermission($,Z){try{let J=this.assertApiPathname(Z,"checkRolePermission: apiPath");return await this.redis.sismember(m0.roleApis($),J)}catch(J){return I.error({err:J,roleCode:$,msg:"\u68C0\u67E5\u89D2\u8272\u6743\u9650\u5931\u8D25"}),!1}}async deleteRolePermissions($){try{if(await this.redis.del(m0.roleApis($))>0)return I.info(`\u2705 \u5DF2\u5220\u9664\u89D2\u8272 ${$} \u7684\u6743\u9650\u7F13\u5B58`),!0;return!1}catch(Z){return I.error({err:Z,roleCode:$,msg:"\u5220\u9664\u89D2\u8272\u6743\u9650\u7F13\u5B58\u5931\u8D25"}),!1}}}var cW={name:"cache",enable:!0,deps:["logger","redis","db"],async handler($){if(!$.db)throw new T({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.db \u672A\u521D\u59CB\u5316",kind:"validation"});if(!$.redis)throw new T({message:"\u7F13\u5B58\u521D\u59CB\u5316\u5931\u8D25\uFF1Actx.redis \u672A\u521D\u59CB\u5316",kind:"validation"});return new XQ({db:$.db,redis:$.redis})}},DG=cW;var pW={name:"cipher",enable:!0,deps:[],handler:()=>{return s$}},NG=pW;var uW={name:"config",enable:!0,deps:[],handler:($)=>{return $.config}},kG=uW;function cZ($,Z=["id","pid","sort"]){if($===null||$===void 0)return $;let J=BigInt(Number.MAX_SAFE_INTEGER),Q=BigInt(Number.MIN_SAFE_INTEGER),X=(G)=>{let Y={};for(let[V,U]of Object.entries(G))Y[V]=U;for(let[V,U]of Object.entries(Y)){if(U===void 0||U===null)continue;if(!(Z.includes(V)||V.endsWith("Id")||V.endsWith("_id")||V.endsWith("At")||V.endsWith("_at")))continue;let _=null;if(typeof U==="bigint")_=U;else if(typeof U==="string"){if(!/^-?\d+$/.test(U))continue;try{_=BigInt(U)}catch{continue}}else continue;if(_>J||_<Q)throw Error(`BIGINT \u5B57\u6BB5\u8D85\u51FA JS \u5B89\u5168\u6574\u6570\u8303\u56F4\uFF0C\u8BF7\u6539\u7528 bigint/string \u6216\u8C03\u6574\u5B57\u6BB5\u8BBE\u8BA1 (field: ${V}, value: ${String(U)})`);Y[V]=Number(_)}return Y};if(Array.isArray($))return $.map((G)=>X(G));if(typeof $==="object")return X($);return $}function GQ($){return $!==null&&typeof $==="object"&&!Array.isArray($)}function mW($){return Array.isArray($)}function D$($,Z={}){let{pickKeys:J,omitKeys:Q,keepValues:X,excludeValues:G,keepMap:Y}=Z,V=(U)=>{let O={},_=Object.keys(U);if(J&&J.length)_=_.filter((A)=>J.includes(A));if(Q&&Q.length)_=_.filter((A)=>!Q.includes(A));for(let A of _){let L=U[A];if(Y&&A in Y){if(Object.is(Y[A],L)){O[A]=L;continue}}if(X&&X.length&&!X.includes(L))continue;if(G&&G.length&&G.includes(L))continue;O[A]=L}return O};if(mW($))return $.map((U)=>GQ(U)?V(U):U).filter((U)=>{if(GQ(U))return Object.keys(U).length>0;return!0});if(GQ($))return V($);return $}u0();u0();class Q0{static SAFE_IDENTIFIER_RE=/^[a-zA-Z_][a-zA-Z0-9_]*$/;static assertNonEmptyString($,Z){if(typeof $!=="string")throw Error(`${Z} \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (value: ${String($)})`);if(!$.trim())throw Error(`${Z} \u4E0D\u80FD\u4E3A\u7A7A`)}static assertNoUndefinedParam($,Z){if($===void 0)throw Error(`${Z} \u4E0D\u80FD\u4E3A undefined`)}static startsWithQuote($){let Z=$.trim();return Z.startsWith("`")||Z.startsWith('"')}static isQuotedIdentPaired($){let Z=$.trim();if(Z.length<2)return!1;let J=Z[0],Q=Z[Z.length-1];if(J==="`"&&Q==="`")return!0;if(J==='"'&&Q==='"')return!0;return!1}static assertPairedQuotedIdentIfStartsWithQuote($,Z){if(Q0.startsWithQuote($)&&!Q0.isQuotedIdentPaired($))throw Error(`${Z} \u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (value: ${$})`)}static assertSafeIdentifierPart($,Z){if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684 ${Z} \u6807\u8BC6\u7B26: ${$}`)}static assertSafeAlias($){if(Q0.isQuotedIdentPaired($))return;if(!Q0.SAFE_IDENTIFIER_RE.test($))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u522B\u540D: ${$}`)}static assertNoExprField($){if(typeof $!=="string")return;let Z=$.trim();if(!Z)return;if(Z.includes("(")||Z.includes(")"))throw Error(`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${Z})`)}static assertNoUndefinedInRecord($,Z){for(let[J,Q]of Object.entries($))if(Q===void 0)throw Error(`${Z} \u5B58\u5728 undefined \u5B57\u6BB5\u503C (field: ${J})`)}static assertBatchInsertRowsConsistent($,Z){if(!Array.isArray($))throw Error("\u6279\u91CF\u63D2\u5165 rows \u5FC5\u987B\u662F\u6570\u7EC4");if($.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u4E0D\u80FD\u4E3A\u7A7A (table: ${Z.table})`);let J=$[0];if(!J||typeof J!=="object"||Array.isArray(J))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: 0)`);let Q=Object.keys(J);if(Q.length===0)throw Error(`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${Z.table})`);let X=new Set(Q);for(let G=0;G<$.length;G++){let Y=$[G];if(!Y||typeof Y!=="object"||Array.isArray(Y))throw Error(`\u6279\u91CF\u63D2\u5165\u7684\u6BCF\u4E00\u884C\u5FC5\u987B\u662F\u5BF9\u8C61 (table: ${Z.table}, rowIndex: ${G})`);let V=Object.keys(Y);if(V.length!==Q.length)throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${G})`);for(let U of V)if(!X.has(U))throw Error(`\u6279\u91CF\u63D2\u5165\u6BCF\u884C\u5B57\u6BB5\u5FC5\u987B\u4E00\u81F4 (table: ${Z.table}, rowIndex: ${G}, extraField: ${U})`);for(let U of Q){if(!(U in Y))throw Error(`\u6279\u91CF\u63D2\u5165\u7F3A\u5C11\u5B57\u6BB5 (table: ${Z.table}, rowIndex: ${G}, field: ${U})`);Q0.assertNoUndefinedParam(Y[U],`\u6279\u91CF\u63D2\u5165\u5B57\u6BB5\u503C (table: ${Z.table}, rowIndex: ${G}, field: ${U})`)}}return Q}}class b{static parseTableRef($){if(typeof $!=="string")throw Error(`tableRef \u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (tableRef: ${String($)})`);let Z=$.trim();if(!Z)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");let J=Z.split(/\s+/).filter((V)=>V.length>0);if(J.length===0)throw Error("tableRef \u4E0D\u80FD\u4E3A\u7A7A");if(J.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528\u6700\u7B80\u5F62\u5F0F\uFF1Atable \u6216 table alias \u6216 schema.table \u6216 schema.table alias (tableRef: ${Z})`);let Q=J[0];if(typeof Q!=="string"||Q.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11\u8868\u540D (tableRef: ${Z})`);let X=null;if(J.length===2){let V=J[1];if(typeof V!=="string"||V.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1A\u7F3A\u5C11 alias (tableRef: ${Z})`);X=V}let G=Q.split(".");if(G.length>2)throw Error(`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09 (tableRef: ${Z})`);if(G.length===2){let V=G[0],U=G[1];if(typeof V!=="string"||V.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Aschema \u4E3A\u7A7A (tableRef: ${Z})`);if(typeof U!=="string"||U.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:V,table:U,alias:X}}let Y=G[0];if(typeof Y!=="string"||Y.trim()==="")throw Error(`tableRef \u89E3\u6790\u5931\u8D25\uFF1Atable \u4E3A\u7A7A (tableRef: ${Z})`);return{schema:null,table:Y,alias:X}}static normalizeTableRef($){let Z=b.parseTableRef($),J=Z.schema?c(Z.schema):null,Q=c(Z.table),X=J?`${J}.${Q}`:Q;if(Z.alias)X=`${X} ${Z.alias}`;return X}static getJoinMainQualifier($){let Z=b.parseTableRef($);if(Z.alias)return Z.alias;return c(Z.table)}static async fieldsToSnake($,Z,J){if(!Z||!Array.isArray(Z))return["*"];let Q=b.validateAndClassifyFields(Z);if(Q.type==="all")return["*"];if(Q.type==="include")return Q.fields.map((X)=>{return b.processJoinField(X)});if(Q.type==="exclude"){let X=await J($),G=Q.fields.map((V)=>c(V)),Y=X.filter((V)=>!G.includes(V));if(Y.length===0)throw Error(`\u6392\u9664\u5B57\u6BB5\u540E\u6CA1\u6709\u5269\u4F59\u5B57\u6BB5\u53EF\u67E5\u8BE2\u3002\u8868: ${$}, \u6392\u9664: ${G.join(", ")}`);return Y}return["*"]}static validateAndClassifyFields($){if(!$||$.length===0)return{type:"all",fields:[]};if($.some((Q)=>Q==="*"))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((Q)=>!Q||typeof Q!=="string"||Q.trim()===""))throw Error("fields \u4E0D\u80FD\u5305\u542B\u7A7A\u5B57\u7B26\u4E32\u6216\u65E0\u6548\u503C");for(let Q of $){let X=Q.startsWith("!")?Q.substring(1):Q;Q0.assertNoExprField(X)}let Z=$.filter((Q)=>!Q.startsWith("!")),J=$.filter((Q)=>Q.startsWith("!"));if(Z.length>0&&J.length===0)return{type:"include",fields:Z};if(J.length>0&&Z.length===0)return{type:"exclude",fields:J.map((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
|
|
16
16
|
1. \u7A7A\u6570\u7EC4 [] \u6216\u4E0D\u4F20\uFF08\u67E5\u8BE2\u6240\u6709\uFF09
|
|
17
17
|
2. \u5168\u90E8\u6307\u5B9A\u5B57\u6BB5 ["id", "name"]
|
|
18
|
-
3. \u5168\u90E8\u6392\u9664\u5B57\u6BB5 ["!password", "!token"]`)}static orderByToSnake($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${c(Y.trim())}#${Q.trim()}`})}static processJoinField($){if(Q0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")return $;return`${h.processJoinField(J.trim())} AS ${Y.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((Q)=>Q.trim()===""))return $;let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return c($);return`${Y.trim()}.${c(J)}`}return c($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(Q0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),J=$.substring(0,Z),Y=$.substring(Z);if(J.includes(".")){let Q=J.split(".");if(Q.length<2)return`${c(J)}${Y}`;if(Q.some((U)=>U.trim()===""))return`${c(J)}${Y}`;let X=Q[Q.length-1],G=Q.slice(0,Q.length-1).join(".");if(typeof X!=="string"||typeof G!=="string")return`${c(J)}${Y}`;return`${G.trim()}.${c(X)}${Y}`}return`${c(J)}${Y}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((Q)=>Q.trim()===""))return c($);let J=Z[Z.length-1],Y=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Y!=="string")return c($);return`${Y.trim()}.${c(J)}`}return c($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>h.processJoinWhere(J));let Z={};for(let[J,Y]of Object.entries($)){let Q=h.processJoinWhereKey(J);if(J==="$or"||J==="$and")Z[Q]=Array.isArray(Y)?Y.map((X)=>h.processJoinWhere(X)):[];else if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=h.processJoinWhere(Y);else Z[Q]=Y}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")return Z;return`${h.processJoinField(Y.trim())}#${Q.trim()}`})}static addDefaultStateFilter($={},Z,J=!1){if(Object.keys($).some((X)=>X.startsWith("state")||X.includes(".state")))return $;if(J&&Z){let X={};for(let[G,U]of Object.entries($))X[G]=U;return X[`${Z}.state$gt`]=0,X}let Q={};for(let[X,G]of Object.entries($))Q[X]=G;return Q.state$gt=0,Q}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>h.whereKeysToSnake(J));let Z={};for(let[J,Y]of Object.entries($)){if(J==="$or"||J==="$and"){Z[J]=Array.isArray(Y)?Y.map((X)=>h.whereKeysToSnake(X)):[];continue}if(Q0.assertNoExprField(J),J.includes("$")){let X=J.lastIndexOf("$"),G=J.substring(0,X),U=J.substring(X),V=c(G)+U;Z[V]=Y;continue}let Q=c(J);if(typeof Y==="object"&&Y!==null&&!Array.isArray(Y))Z[Q]=h.whereKeysToSnake(Y);else Z[Q]=Y}return Z}static serializeArrayFields($){let Z={};for(let[J,Y]of Object.entries($)){if(Y===null||Y===void 0){Z[J]=Y;continue}if(Array.isArray(Y)){Z[J]=JSON.stringify(Y);continue}Z[J]=Y}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[J,Y]of Object.entries($))Z[J]=Y;for(let[J,Y]of Object.entries(Z)){if(typeof Y!=="string")continue;if(Y.startsWith("[")&&Y.endsWith("]"))try{let Q=JSON.parse(Y);if(Array.isArray(Q))Z[J]=Q}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let J=E$($,{excludeValues:Z}),Y=tY(J);return h.serializeArrayFields(Y)}static stripSystemFieldsForWrite($,Z){let J={};for(let[Y,Q]of Object.entries($)){if(Y==="id")continue;if(Y==="created_at")continue;if(Y==="updated_at")continue;if(Y==="deleted_at")continue;if(!Z.allowState&&Y==="state")continue;J[Y]=Q}return J}static buildInsertRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),J=h.stripSystemFieldsForWrite(Z,{allowState:!1}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;if($.idMode==="timeId"){if(!Number.isFinite($.id)||$.id<=0)throw Error(`buildInsertRow(timeId) \u5931\u8D25\uFF1Aid \u5FC5\u987B\u4E3A > 0 \u7684\u6709\u9650 number (id: ${String($.id)})`);Y.id=$.id}return Y.created_at=$.now,Y.updated_at=$.now,Y.state=1,Y}static buildUpdateRow($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data),J=h.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),Y={};for(let[Q,X]of Object.entries(J))Y[Q]=X;return Y.updated_at=$.now,Y}static buildPartialUpdateData($){let Z=h.cleanAndSnakeAndSerializeWriteData($.data);return h.stripSystemFieldsForWrite(Z,{allowState:$.allowState})}}$0();var p={QUOTE_IDENT_NEED_STRING:($)=>`quoteIdent \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`,IDENT_EMPTY:"SQL \u6807\u8BC6\u7B26\u4E0D\u80FD\u4E3A\u7A7A",FIELD_EXPR_NOT_ALLOWED:($)=>`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FIELD_INVALID:($)=>`\u5B57\u6BB5\u683C\u5F0F\u975E\u6CD5\uFF0C\u8BF7\u4F7F\u7528\u7B80\u5355\u5B57\u6BB5\u540D\u6216\u5B89\u5168\u5F15\u7528\uFF0C\u590D\u6742\u8868\u8FBE\u5F0F\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FROM_EMPTY:"FROM \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A",FROM_NEED_NON_EMPTY:($)=>`FROM \u8868\u540D\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32 (table: ${String($)})`,FROM_REQUIRED:"FROM \u8868\u540D\u662F\u5FC5\u9700\u7684",COUNT_NEED_FROM:"COUNT \u9700\u8981 FROM \u8868\u540D",TABLE_REF_TOO_MANY_PARTS:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw \u663E\u5F0F\u4F20\u5165\u590D\u6742\u8868\u8FBE\u5F0F (table: ${$})`,TABLE_REF_SCHEMA_TOO_DEEP:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw (table: ${$})`,SCHEMA_QUOTE_NOT_PAIRED:($)=>`schema \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (schema: ${$})`,TABLE_QUOTE_NOT_PAIRED:($)=>`table \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (table: ${$})`,SELECT_FIELDS_INVALID:"SELECT \u5B57\u6BB5\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6216\u6570\u7EC4",SELECT_RAW_NEED_NON_EMPTY:($)=>`selectRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (expr: ${String($)})`,FROM_RAW_NEED_NON_EMPTY:($)=>`fromRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (tableExpr: ${String($)})`,WHERE_RAW_NEED_NON_EMPTY:($)=>`whereRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (sql: ${String($)})`,WHERE_VALUE_REQUIRED:"where(field, value) \u4E0D\u5141\u8BB8\u7701\u7565 value\u3002\u82E5\u9700\u4F20\u5165\u539F\u59CB WHERE\uFF0C\u8BF7\u4F7F\u7528 whereRaw",JOIN_NEED_STRING:($,Z)=>`JOIN \u8868\u540D\u548C\u6761\u4EF6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (table: ${String($)}, on: ${String(Z)})`,ORDER_BY_NEED_ARRAY:'orderBy \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\uFF0C\u683C\u5F0F\u4E3A "\u5B57\u6BB5#\u65B9\u5411"',ORDER_BY_ITEM_NEED_HASH:($)=>`orderBy \u5B57\u6BB5\u5FC5\u987B\u662F "\u5B57\u6BB5#\u65B9\u5411" \u683C\u5F0F\u7684\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982\uFF1A"name#ASC", "id#DESC"\uFF09 (item: ${String($)})`,ORDER_BY_FIELD_EMPTY:($)=>`orderBy \u4E2D\u5B57\u6BB5\u540D\u4E0D\u80FD\u4E3A\u7A7A (item: ${$})`,ORDER_BY_DIR_INVALID:($)=>`ORDER BY \u65B9\u5411\u5FC5\u987B\u662F ASC \u6216 DESC (direction: ${$})`,LIMIT_MUST_NON_NEGATIVE:($)=>`LIMIT \u6570\u91CF\u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,OFFSET_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (offset: ${String($)})`,OFFSET_COUNT_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,INSERT_NEED_TABLE:($)=>`INSERT \u9700\u8981\u8868\u540D (table: ${String($)})`,INSERT_NEED_DATA:($,Z)=>`INSERT \u9700\u8981\u6570\u636E (table: ${String($)}, data: ${JSON.stringify(Z)})`,INSERT_NEED_AT_LEAST_ONE_FIELD:($)=>`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${$})`,UPDATE_NEED_TABLE:"UPDATE \u9700\u8981\u8868\u540D",UPDATE_NEED_OBJECT:"UPDATE \u9700\u8981\u6570\u636E\u5BF9\u8C61",UPDATE_NEED_AT_LEAST_ONE_FIELD:"\u66F4\u65B0\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5",UPDATE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CUPDATE \u9700\u8981 WHERE \u6761\u4EF6",DELETE_NEED_TABLE:"DELETE \u9700\u8981\u8868\u540D",DELETE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CDELETE \u9700\u8981 WHERE \u6761\u4EF6",TO_DELETE_IN_NEED_TABLE:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_DELETE_IN_NEED_ID_FIELD:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_DELETE_IN_NEED_IDS:"toDeleteInSql \u9700\u8981 ids \u6570\u7EC4",TO_UPDATE_CASE_NEED_TABLE:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_UPDATE_CASE_NEED_ID_FIELD:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_UPDATE_CASE_NEED_ROWS:"toUpdateCaseByIdSql \u9700\u8981 rows \u6570\u7EC4",TO_UPDATE_CASE_NEED_FIELDS:"toUpdateCaseByIdSql \u9700\u8981 fields \u6570\u7EC4"};class s${_select=[];_from="";_where=[];_joins=[];_orderBy=[];_groupBy=[];_having=[];_limit=null;_offset=null;_params=[];_quoteIdent;constructor($){if($&&$.quoteIdent)this._quoteIdent=$.quoteIdent;else this._quoteIdent=(Z)=>{if(typeof Z!=="string")throw Error(p.QUOTE_IDENT_NEED_STRING(Z));let J=Z.trim();if(!J)throw Error(p.IDENT_EMPTY);return`\`${J.replace(/`/g,"``")}\``}}_isQuotedIdent($){return Q0.isQuotedIdentPaired($)}_startsWithQuote($){return Q0.startsWithQuote($)}reset(){return this._select=[],this._from="",this._where=[],this._joins=[],this._orderBy=[],this._groupBy=[],this._having=[],this._limit=null,this._offset=null,this._params=[],this}_escapeField($){if(typeof $!=="string")return $;if($=$.trim(),Q0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{Q0.assertNoExprField($)}catch{throw Error(p.FIELD_EXPR_NOT_ALLOWED($))}if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i);if(Z.length!==2)throw Error(p.FIELD_INVALID($));let J=Z[0],Y=Z[1];if(typeof J!=="string"||typeof Y!=="string")throw Error(p.FIELD_INVALID($));let Q=J.trim(),X=Y.trim();return Q0.assertSafeAlias(X),`${this._escapeField(Q)} AS ${X}`}if($.includes("."))return $.split(".").map((J)=>{if(J=J.trim(),J==="*"||this._isQuotedIdent(J))return J;return Q0.assertPairedQuotedIdentIfStartsWithQuote(J,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(J)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){Q0.assertSafeIdentifierPart($,Z)}_escapeTable($){if(typeof $!=="string")return $;if($=$.trim(),this._startsWithQuote($)&&!this._isQuotedIdent($));if(this._isQuotedIdent($))return $;let Z=$.split(/\s+/).filter((V)=>V.length>0);if(Z.length===0)throw Error(p.FROM_EMPTY);if(Z.length>2)throw Error(p.TABLE_REF_TOO_MANY_PARTS($));let J=Z[0];if(typeof J!=="string"||J.trim()==="")throw Error(p.FROM_EMPTY);let Y=J.trim(),Q=Z.length===2?Z[1]:null,X=typeof Q==="string"?Q.trim():null,G=Y.split(".");if(G.length>2)throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let U="";if(G.length===2){let V=G[0],A=G[1];if(typeof V!=="string"||typeof A!=="string")throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let z=V.trim(),M=A.trim(),j=this._isQuotedIdent(z)?z:(()=>{if(this._startsWithQuote(z)&&!this._isQuotedIdent(z))throw Error(p.SCHEMA_QUOTE_NOT_PAIRED(z));return this._validateIdentifierPart(z,"schema"),this._quoteIdent(z)})(),C=this._isQuotedIdent(M)?M:(()=>{if(this._startsWithQuote(M)&&!this._isQuotedIdent(M))throw Error(p.TABLE_QUOTE_NOT_PAIRED(M));return this._validateIdentifierPart(M,"table"),this._quoteIdent(M)})();U=`${j}.${C}`}else{let V=G[0];if(typeof V!=="string")throw Error(p.FROM_EMPTY);let A=V.trim();if(this._isQuotedIdent(A))U=A;else{if(this._startsWithQuote(A)&&!this._isQuotedIdent(A))throw Error(p.TABLE_QUOTE_NOT_PAIRED(A));this._validateIdentifierPart(A,"table"),U=this._quoteIdent(A)}}if(X)return this._validateIdentifierPart(X,"alias"),`${U} ${X}`;return U}_validateParam($){Q0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,J){let Y=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(J),this._where.push(`${Y} != ?`),this._params.push(J);break;case"$in":if(!Array.isArray(J))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$in \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u6C38\u8FDC\u4E0D\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let Q=J.map(()=>"?").join(",");this._where.push(`${Y} IN (${Q})`),this._params.push(...J);break;case"$nin":case"$notIn":if(!Array.isArray(J))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u5339\u914D\u6240\u6709\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let X=J.map(()=>"?").join(",");this._where.push(`${Y} NOT IN (${X})`),this._params.push(...J);break;case"$like":this._validateParam(J),this._where.push(`${Y} LIKE ?`),this._params.push(J);break;case"$notLike":this._validateParam(J),this._where.push(`${Y} NOT LIKE ?`),this._params.push(J);break;case"$gt":this._validateParam(J),this._where.push(`${Y} > ?`),this._params.push(J);break;case"$gte":this._validateParam(J),this._where.push(`${Y} >= ?`),this._params.push(J);break;case"$lt":this._validateParam(J),this._where.push(`${Y} < ?`),this._params.push(J);break;case"$lte":this._validateParam(J),this._where.push(`${Y} <= ?`),this._params.push(J);break;case"$between":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$notBetween":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Y} NOT BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$null":if(J===!0)this._where.push(`${Y} IS NULL`);break;case"$notNull":if(J===!0)this._where.push(`${Y} IS NOT NULL`);break;default:this._validateParam(J),this._where.push(`${Y} = ?`),this._params.push(J)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,J])=>{if(J===void 0)return;if(Z==="$and"){if(Array.isArray(J))J.forEach((Y)=>{if(Y&&typeof Y==="object"&&!Array.isArray(Y))this._processWhereConditions(Y)})}else if(Z==="$or"){if(Array.isArray(J)){let Y=[],Q=[];if(J.forEach((X)=>{if(!X||typeof X!=="object"||Array.isArray(X))return;let G=new s$({quoteIdent:this._quoteIdent});if(G._processWhereConditions(X),G._where.length>0)Y.push(`(${G._where.join(" AND ")})`),Q.push(...G._params)}),Y.length>0)this._where.push(`(${Y.join(" OR ")})`),this._params.push(...Q)}}else if(Z.includes("$")){let Y=Z.lastIndexOf("$"),Q=Z.substring(0,Y),X="$"+Z.substring(Y+1);this._applyOperator(Q,X,J)}else if(typeof J==="object"&&J!==null&&!Array.isArray(J))for(let[Y,Q]of Object.entries(J))this._applyOperator(Z,Y,Q);else{this._validateParam(J);let Y=this._escapeField(Z);this._where.push(`${Y} = ?`),this._params.push(J)}})}getWhereConditions(){return{sql:this._where.length>0?this._where.join(" AND "):"",params:[...this._params]}}select($="*"){if(Array.isArray($))this._select=[...this._select,...$.map((Z)=>this._escapeField(Z))];else if(typeof $==="string")this._select.push(this._escapeField($));else throw Error(p.SELECT_FIELDS_INVALID);return this}selectRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.SELECT_RAW_NEED_NON_EMPTY($));return this._select.push($),this}from($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_NEED_NON_EMPTY($));return this._from=this._escapeTable($.trim()),this}fromRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_RAW_NEED_NON_EMPTY($));return this._from=$,this}where($,Z){if(typeof $==="object"&&$!==null)return this._processWhereConditions($),this;if(typeof $==="string"){if(Z===void 0)throw Error(p.WHERE_VALUE_REQUIRED);this._validateParam(Z);let J=this._escapeField($);return this._where.push(`${J} = ?`),this._params.push(Z),this}return this}whereRaw($,Z){if(typeof $!=="string"||!$.trim())throw Error(p.WHERE_RAW_NEED_NON_EMPTY($));if(this._where.push($),Z&&Z.length>0)this._params.push(...Z);return this}leftJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`LEFT JOIN ${J} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${J} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`INNER JOIN ${J} ON ${Z}`),this}orderBy($){if(!Array.isArray($))throw Error(p.ORDER_BY_NEED_ARRAY);return $.forEach((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let J=Z.split("#");if(J.length!==2)throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let Y=J[0],Q=J[1];if(typeof Y!=="string"||typeof Q!=="string")throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let X=Y.trim(),G=Q.trim().toUpperCase();if(!X)throw Error(p.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(G))throw Error(p.ORDER_BY_DIR_INVALID(G));let U=this._escapeField(X);this._orderBy.push(`${U} ${G}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((J)=>typeof J==="string").map((J)=>this._escapeField(J));this._groupBy=[...this._groupBy,...Z]}else if(typeof $==="string")this._groupBy.push(this._escapeField($));return this}having($){if(typeof $==="string")this._having.push($);return this}limit($,Z){if(typeof $!=="number"||$<0)throw Error(p.LIMIT_MUST_NON_NEGATIVE($));if(this._limit=Math.floor($),Z!==void 0&&Z!==null){if(typeof Z!=="number"||Z<0)throw Error(p.OFFSET_MUST_NON_NEGATIVE(Z));this._offset=Math.floor(Z)}return this}offset($){if(typeof $!=="number"||$<0)throw Error(p.OFFSET_COUNT_MUST_NON_NEGATIVE($));return this._offset=Math.floor($),this}toSelectSql(){let $="SELECT ";if($+=this._select.length>0?this._select.join(", "):"*",!this._from)throw Error(p.FROM_REQUIRED);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");if(this._groupBy.length>0)$+=" GROUP BY "+this._groupBy.join(", ");if(this._having.length>0)$+=" HAVING "+this._having.join(" AND ");if(this._orderBy.length>0)$+=" ORDER BY "+this._orderBy.join(", ");if(this._limit!==null){if($+=` LIMIT ${this._limit}`,this._offset!==null)$+=` OFFSET ${this._offset}`}return{sql:$,params:[...this._params]}}toInsertSql($,Z){if(!$||typeof $!=="string")throw Error(p.INSERT_NEED_TABLE($));if(!Z||typeof Z!=="object")throw Error(p.INSERT_NEED_DATA($,Z));let J=this._escapeTable($);if(Array.isArray(Z)){let Y=Q0.assertBatchInsertRowsConsistent(Z,{table:$}),Q=Y.map((A)=>this._escapeField(A)),X=Y.map(()=>"?").join(", "),G=Z.map(()=>`(${X})`).join(", "),U=`INSERT INTO ${J} (${Q.join(", ")}) VALUES ${G}`,V=[];for(let A=0;A<Z.length;A++){let z=Z[A];for(let M of Y){let j=z[M];this._validateParam(j),V.push(j)}}return{sql:U,params:V}}else{let Y=Object.keys(Z);if(Y.length===0)throw Error(p.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let V of Y){let A=Z;this._validateParam(A[V])}let Q=Y.map((V)=>this._escapeField(V)),X=Y.map(()=>"?").join(", "),G=`INSERT INTO ${J} (${Q.join(", ")}) VALUES (${X})`,U=[];for(let V of Y){let A=Z[V];this._validateParam(A),U.push(A)}return{sql:G,params:U}}}toUpdateSql($,Z){if(!$||typeof $!=="string")throw Error(p.UPDATE_NEED_TABLE);if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(p.UPDATE_NEED_OBJECT);let J=Object.keys(Z);if(J.length===0)throw Error(p.UPDATE_NEED_AT_LEAST_ONE_FIELD);let Y=this._escapeTable($),Q=J.map((U)=>`${this._escapeField(U)} = ?`),X=[...Object.values(Z),...this._params],G=`UPDATE ${Y} SET ${Q.join(", ")}`;if(this._where.length>0)G+=" WHERE "+this._where.join(" AND ");else throw Error(p.UPDATE_NEED_WHERE);return{sql:G,params:X}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(p.DELETE_NEED_TABLE);let J=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(p.DELETE_NEED_WHERE);return{sql:J,params:[...this._params]}}toCountSql(){let $="SELECT COUNT(*) as total";if(!this._from)throw Error(p.COUNT_NEED_FROM);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");return{sql:$,params:[...this._params]}}static toDeleteInSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_DELETE_IN_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_DELETE_IN_NEED_ID_FIELD($.idField));if(!Array.isArray($.ids))throw Error(p.TO_DELETE_IN_NEED_IDS);if($.ids.length===0)return{sql:"",params:[]};let Z=$.ids.map(()=>"?").join(",");return{sql:`DELETE FROM ${$.quoteIdent($.table)} WHERE ${$.quoteIdent($.idField)} IN (${Z})`,params:[...$.ids]}}static toUpdateCaseByIdSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_UPDATE_CASE_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_UPDATE_CASE_NEED_ID_FIELD($.idField));if(!Array.isArray($.rows))throw Error(p.TO_UPDATE_CASE_NEED_ROWS);if($.rows.length===0)return{sql:"",params:[]};if(!Array.isArray($.fields))throw Error(p.TO_UPDATE_CASE_NEED_FIELDS);if($.fields.length===0)return{sql:"",params:[]};let Z=$.rows.map((U)=>U.id),J=Z.map(()=>"?").join(","),Y=[],Q=[],X=$.quoteIdent($.idField);for(let U of $.fields){let V=[];for(let z of $.rows){if(!(U in z.data))continue;V.push("WHEN ? THEN ?"),Q.push(z.id);let M=z.data[U];Q0.assertNoUndefinedParam(M,"SQL \u53C2\u6570\u503C"),Q.push(M)}if(V.length===0)continue;let A=$.quoteIdent(U);Y.push(`${A} = CASE ${X} ${V.join(" ")} ELSE ${A} END`)}Y.push(`${$.quoteIdent($.updatedAtField)} = ?`),Q.push($.updatedAtValue);for(let U of Z)Q.push(U);let G=`UPDATE ${$.quoteIdent($.table)} SET ${Y.join(", ")} WHERE ${X} IN (${J})`;if($.stateGtZero&&$.stateField)G+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:G,params:Q}}}function o$($){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 TW($){return typeof $.begin==="function"}class RX 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 hZ{redis;dbName;sql=null;isTransaction=!1;idMode;constructor($){if(this.redis=$.redis,typeof $.dbName!=="string"||$.dbName.trim()==="")throw Error("DbHelper \u521D\u59CB\u5316\u5931\u8D25\uFF1AdbName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32");this.dbName=$.dbName,this.sql=$.sql||null,this.isTransaction=Boolean($.sql),this.idMode=$.idMode==="autoId"?"autoId":"timeId"}createSqlBuilder(){return new s$({quoteIdent:o$})}async getTableColumns($){let Z=o$($),Y=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!Y||Y.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let Q=[];for(let X of Y){let G=X.Field;if(typeof G==="string"&&G.length>0)Q.push(G)}return Q}async prepareQueryOptions($){let Z=E$($.where||{},{excludeValues:[null,void 0]});if($.joins&&$.joins.length>0){let Q=($.fields||[]).map((U)=>h.processJoinField(U)),X=h.normalizeTableRef($.table),G=h.getJoinMainQualifier($.table);return{table:X,tableQualifier:G,fields:Q.length>0?Q:["*"],where:h.processJoinWhere(Z),joins:$.joins,orderBy:h.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let Y=await h.fieldsToSnake(c($.table),$.fields||[],this.getTableColumns.bind(this));return{table:c($.table),tableQualifier:c($.table),fields:Y,where:h.whereKeysToSnake(Z),joins:void 0,orderBy:h.orderByToSnake($.orderBy||[]),page:$.page||1,limit:$.limit||10}}applyJoins($,Z){if(!Z||Z.length===0)return;for(let J of Z){let Y=h.normalizeTableRef(J.table);switch(J.type||"left"){case"inner":$.innerJoin(Y,J.on);break;case"right":$.rightJoin(Y,J.on);break;case"left":default:$.leftJoin(Y,J.on);break}}}async executeSelect($,Z){return await this.executeWithConn($,Z)}async executeRun($,Z){return await this.executeWithConn($,Z)}async executeWithConn($,Z){if(!this.sql)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(typeof $!=="string")throw Error(`executeWithConn \u53EA\u63A5\u53D7\u5B57\u7B26\u4E32\u7C7B\u578B\u7684 SQL\uFF0C\u6536\u5230\u7C7B\u578B: ${typeof $}\uFF0C\u503C: ${JSON.stringify($)}`);let J=Date.now(),Y=iQ(Z);try{let Q;if(Y.length>0)Q=await this.sql.unsafe($,Y);else Q=await this.sql.unsafe($);let X=Date.now()-J;return{data:Q,sql:{sql:$,params:Y,duration:X}}}catch(Q){let X=Date.now()-J,G=Q instanceof Error?Q.message:String(Q);throw new RX(`SQL\u6267\u884C\u5931\u8D25: ${G}`,{originalError:Q,params:Y,duration:X,sqlInfo:{sql:$,params:Y,duration:X}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=c($),J=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(J.data?.[0]?.count||0)>0,sql:J.sql}}async getCount($){let{table:Z,where:J,joins:Y,tableQualifier:Q}=await this.prepareQueryOptions($),X=Array.isArray(Y)&&Y.length>0,G=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(h.addDefaultStateFilter(J,Q,X));this.applyJoins(G,Y);let{sql:U,params:V}=G.toSelectSql(),A=await this.executeSelect(U,V);return{data:A.data?.[0]?.count||0,sql:A.sql}}async getOne($){let{table:Z,fields:J,where:Y,joins:Q,tableQualifier:X}=await this.prepareQueryOptions($),G=Array.isArray(Q)&&Q.length>0,U=this.createSqlBuilder().select(J).from(Z).where(h.addDefaultStateFilter(Y,X,G));this.applyJoins(U,Q);let{sql:V,params:A}=U.toSelectSql(),z=await this.executeSelect(V,A),j=z.data?.[0]||null;if(!j)return{data:{},sql:z.sql};let C=PJ(j),S=h.deserializeArrayFields(C);if(!S)return{data:{},sql:z.sql};return{data:gZ([S])[0]??S,sql:z.sql}}async getDetail($){return await this.getOne($)}async getList($){let Z=await this.prepareQueryOptions($);if(Z.page<1||Z.page>1e4)throw Error(`\u9875\u7801\u5FC5\u987B\u5728 1 \u5230 10000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);if(Z.limit<1||Z.limit>1000)throw Error(`\u6BCF\u9875\u6570\u91CF\u5FC5\u987B\u5728 1 \u5230 1000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);let J=h.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),Y=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(J);this.applyJoins(Y,Z.joins);let{sql:Q,params:X}=Y.toSelectSql(),G=await this.executeSelect(Q,X),U=G.data?.[0]?.total||0;if(U===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:G.sql}};let V=(Z.page-1)*Z.limit,A=this.createSqlBuilder().select(Z.fields).from(Z.table).where(J).limit(Z.limit).offset(V);if(this.applyJoins(A,Z.joins),Z.orderBy&&Z.orderBy.length>0)A.orderBy(Z.orderBy);let{sql:z,params:M}=A.toSelectSql(),j=await this.executeSelect(z,M),C=j.data||[],w=CJ(C).map((k)=>h.deserializeArrayFields(k)).filter((k)=>k!==null);return{data:{lists:gZ(w),total:U,page:Z.page,limit:Z.limit,pages:Math.ceil(U/Z.limit)},sql:{count:G.sql,data:j.sql}}}async getAll($){let Y={table:$.table,page:1,limit:10};if($.fields!==void 0)Y.fields=$.fields;if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;let Q=await this.prepareQueryOptions(Y),X=h.addDefaultStateFilter(Q.where,Q.tableQualifier,Array.isArray(Q.joins)&&Q.joins.length>0),G=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Q.table).where(X);this.applyJoins(G,Q.joins);let{sql:U,params:V}=G.toSelectSql(),A=await this.executeSelect(U,V),z=A.data?.[0]?.total||0;if(z===0)return{data:{lists:[],total:0},sql:{count:A.sql}};let M=this.createSqlBuilder().select(Q.fields).from(Q.table).where(X).limit(1e4);if(this.applyJoins(M,Q.joins),Q.orderBy&&Q.orderBy.length>0)M.orderBy(Q.orderBy);let{sql:j,params:C}=M.toSelectSql(),S=await this.executeSelect(j,C),w=S.data||[];if(w.length>=1000)I.warn({table:$.table,count:w.length,total:z,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(w.length>=1e4)I.warn({table:$.table,limit:1e4,total:z,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${z}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let N=CJ(w).map((v)=>h.deserializeArrayFields(v)).filter((v)=>v!==null);return{data:{lists:gZ(N),total:z},sql:{count:A.sql,data:S.sql}}}async insData($){let{table:Z,data:J}=$,Y=c(Z),Q=Date.now(),X;if(this.idMode==="autoId")X=h.buildInsertRow({idMode:"autoId",data:J,now:Q});else{let S;try{S=await this.redis.genTimeID()}catch(w){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:w})}X=h.buildInsertRow({idMode:"timeId",data:J,id:S,now:Q})}Q0.assertNoUndefinedInRecord(X,`insData \u63D2\u5165\u6570\u636E (table: ${Y})`);let G=this.createSqlBuilder(),{sql:U,params:V}=G.toInsertSql(Y,X),A=await this.executeRun(U,V),z=X.id,M=typeof z==="number"?z:0,j=w$(A.data?.lastInsertRowid),C=this.idMode==="autoId"?j||0:M||j||0;if(this.idMode==="autoId"&&C<=0)throw Error(`\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${Z})`);return{data:C,sql:A.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let J=1000;if(Z.length>J)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${J}`);let Y=c($),Q=Date.now(),X=[],G;if(this.idMode==="autoId")G=Z.map((M)=>{return h.buildInsertRow({idMode:"autoId",data:M,now:Q})});else{let M=[];for(let j=0;j<Z.length;j++)M.push(await this.redis.genTimeID());X=M,G=Z.map((j,C)=>{let S=M[C];if(typeof S!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${C}] \u4E0D\u662F number (table: ${Y})`);return h.buildInsertRow({idMode:"timeId",data:j,id:S,now:Q})})}let U=Q0.assertBatchInsertRowsConsistent(G,{table:Y}),V=this.createSqlBuilder(),{sql:A,params:z}=V.toInsertSql(Y,G);try{let M=await this.executeRun(A,z);if(this.idMode==="autoId"){let j=w$(M.data?.lastInsertRowid);if(j<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let C=[];for(let S=0;S<Z.length;S++)C.push(j+S);return{data:C,sql:M.sql}}return{data:X,sql:M.sql}}catch(M){throw I.error({err:M,table:$,snakeTable:Y,count:Z.length,fields:U,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new T({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:M,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:Y,count:Z.length,fields:U}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Y=s$.toDeleteInSql({table:J,idField:"id",ids:Z,quoteIdent:o$}),Q=await this.executeRun(Y.sql,Y.params);return{data:w$(Q.data?.changes),sql:Q.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Y=Date.now(),Q=[],X=new Set;for(let z of Z){let M=h.buildPartialUpdateData({data:z.data,allowState:!0});for(let j of Object.keys(M))X.add(j);Q.push({id:z.id,data:M})}let G=Array.from(X).sort();if(G.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let U=s$.toUpdateCaseByIdSql({table:J,idField:"id",rows:Q,fields:G,quoteIdent:o$,updatedAtField:"updated_at",updatedAtValue:Y,stateField:"state",stateGtZero:!0}),V=await this.executeRun(U.sql,U.params);return{data:w$(V.data?.changes),sql:V.sql}}async updData($){let{table:Z,data:J,where:Y}=$,Q=E$(Y,{excludeValues:[null,void 0]}),X=c(Z),G=h.whereKeysToSnake(Q),U=h.buildUpdateRow({data:J,now:Date.now(),allowState:!0}),V=h.addDefaultStateFilter(G,X,!1),A=this.createSqlBuilder().where(V),{sql:z,params:M}=A.toUpdateSql(X,U),j=await this.executeRun(z,M);return{data:w$(j.data?.changes),sql:j.sql}}async delData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:J})}async delForce($){let{table:Z,where:J}=$,Y=c(Z),Q=E$(J,{excludeValues:[null,void 0]}),X=h.whereKeysToSnake(Q),G=this.createSqlBuilder().where(X),{sql:U,params:V}=G.toDeleteSql(Y),A=await this.executeRun(U,V);return{data:w$(A.data?.changes),sql:A.sql}}async disableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:2},where:J})}async enableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:1},where:J})}async trans($){if(this.isTransaction)return await $(this);let Z=this.sql;if(!Z)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(!TW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(J)=>{let Y=new hZ({redis:this.redis,dbName:this.dbName,sql:J,idMode:this.idMode});return await $(Y)})}async query($,Z){return await this.executeWithConn($,Z)}async exists($){if(Array.isArray($.joins)&&$.joins.length>0)throw Error("exists \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528\u663E\u5F0F query \u6216\u62C6\u5206\u67E5\u8BE2\uFF09");let Z=typeof $.table==="string"?$.table.trim():"";if(!Z)throw Error("exists.table \u4E0D\u80FD\u4E3A\u7A7A");if(Z.includes(" "))throw Error(`exists \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${Z}\uFF09`);if(Z.includes("."))throw Error(`exists \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${Z}\uFF09`);let J=c(Z),Y=E$($.where||{},{excludeValues:[null,void 0]}),Q=h.whereKeysToSnake(Y),X=h.addDefaultStateFilter(Q,J,!1),G=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(J).where(X).limit(1),{sql:U,params:V}=G.toSelectSql(),A=await this.executeSelect(U,V);return{data:(A.data?.[0]?.cnt||0)>0,sql:A.sql}}async getFieldValue($){let Z=$.field;if(Array.isArray($.joins)&&$.joins.length>0)throw Error("getFieldValue \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528 getOne/getList \u5E76\u81EA\u884C\u53D6\u5B57\u6BB5\uFF09");let J=typeof $.table==="string"?$.table.trim():"";if(!J)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(J.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${J}\uFF09`);if(J.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${J}\uFF09`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}\uFF0C\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF`);let Y={table:$.table};if($.where!==void 0)Y.where=$.where;if($.joins!==void 0)Y.joins=$.joins;if($.orderBy!==void 0)Y.orderBy=$.orderBy;if($.page!==void 0)Y.page=$.page;if($.limit!==void 0)Y.limit=$.limit;Y.fields=[Z];let Q=await this.getOne(Y),X=Q.data;if(!m(X))return{data:null,sql:Q.sql};if(Object.hasOwn(X,Z))return{data:X[Z],sql:Q.sql};let G=Z.replace(/_([a-z])/g,(V,A)=>A.toUpperCase());if(G!==Z&&Object.hasOwn(X,G))return{data:X[G],sql:Q.sql};let U=Z.replace(/[A-Z]/g,(V)=>`_${V.toLowerCase()}`);if(U!==Z&&Object.hasOwn(X,U))return{data:X[U],sql:Q.sql};return{data:null,sql:Q.sql}}async increment($,Z,J,Y=1){let Q=c($),X=c(Z);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Q))throw Error(`\u65E0\u6548\u7684\u8868\u540D: ${Q}`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(X))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof Y!=="number"||isNaN(Y))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${Y})`);let G=E$(J,{excludeValues:[null,void 0]}),U=h.whereKeysToSnake(G),V=h.addDefaultStateFilter(U,Q,!1),A=this.createSqlBuilder().where(V),{sql:z,params:M}=A.getWhereConditions(),j=o$(Q),C=o$(X),S=z?`UPDATE ${j} SET ${C} = ${C} + ? WHERE ${z}`:`UPDATE ${j} SET ${C} = ${C} + ?`,w=await this.executeRun(S,[Y,...M]);return{data:w$(w.data?.changes),sql:w.sql}}async decrement($,Z,J,Y=1){return await this.increment($,Z,J,-Y)}}$0();var DW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,J=String($.config?.db?.database||"");if(!J)throw new T({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new T({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let Y=O$.getSql(),X=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new hZ({redis:$.redis,dbName:J,sql:Y,idMode:X})}catch(Y){throw I.error({env:Z,err:Y,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"db",operation:"init"}})}}},qX=DW;var y$=jH(WH(),1);class DY{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let J=Z.secret||this.config.secret,Y=Z.algorithm||this.config.algorithm||"HS256",Q={key:J,algorithm:Y,expiresIn:Z.expiresIn??this.config.expiresIn};if(Z.issuer!==void 0)Q.iss=Z.issuer;if(Z.audience!==void 0)Q.aud=Z.audience;if(Z.subject!==void 0)Q.sub=Z.subject;if(Z.jwtId!==void 0)Q.jti=Z.jwtId;if(typeof Z.notBefore==="number")Q.notBefore=Z.notBefore;return y$.createSigner(Q)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let J=Z.secret||this.config.secret,Y=this.config.algorithm||"HS256",Q=Z.algorithms?Z.algorithms:[Y],X={key:J,algorithms:Q,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)X.allowedIss=Z.issuer;if(Z.audience!==void 0)X.allowedAud=Z.audience;if(Z.subject!==void 0)X.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")X.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")X.ignoreNotBefore=Z.ignoreNotBefore;return y$.createVerifier(X)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let Q=y$.createDecoder({complete:!0})($);return{header:Q.header,payload:Q.payload,signature:Q.signature}}return y$.createDecoder()($)}}var t8={name:"jwt",enable:!0,deps:[],handler:($)=>{return new DY($.config?$.config.auth:void 0)}},UH=t8;$0();var a8={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)I.configure($.config.logger);return I}},VH=a8;$0();$0();class NY{client;prefix;slowThresholdMs=500;constructor($=""){let Z=O$.getRedis();if(!Z)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");this.client=Z,this.prefix=$?`${$}:`:""}logSlow($,Z,J,Y={}){if(J<=this.slowThresholdMs)return;I.warn({subsystem:"redis",event:"slow",duration:J,cmd:$,key:Z,extra:Y,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,J=null){try{let Y=JSON.stringify(Z),Q=`${this.prefix}${$}`,X=Date.now();if(J){let V=await this.client.setex(Q,J,Y),A=Date.now()-X;return this.logSlow("SETEX",Q,A,{ttl:J}),V}let G=await this.client.set(Q,Y),U=Date.now()-X;return this.logSlow("SET",Q,U),G}catch(Y){return I.error({err:Y,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y?JSON.parse(Y):null}catch(Z){return I.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,J=Date.now();await this.client.del(Z);let Y=Date.now()-J;this.logSlow("DEL",Z,Y)}catch(Z){I.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,J=Date.now(),Y=await this.client.incr(Z);if(Y===1)await this.client.expire(Z,1);let Q=Date.now()-J;this.logSlow("INCR",Z,Q,{expireSeconds:1});let X=100+($%900+Y-1)%900;return Number(`${$}${X}`)}async setString($,Z,J=null){try{let Y=`${this.prefix}${$}`,Q=Date.now();if(J){let U=await this.client.setex(Y,J,Z),V=Date.now()-Q;return this.logSlow("SETEX",Y,V,{ttl:J}),U}let X=await this.client.set(Y,Z),G=Date.now()-Q;return this.logSlow("SET",Y,G),X}catch(Y){return I.error({err:Y,msg:"Redis setString \u9519\u8BEF"}),null}}async getString($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.get(Z),Q=Date.now()-J;return this.logSlow("GET",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.exists(Z),Q=Date.now()-J;return this.logSlow("EXISTS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.incr(Z),Q=Date.now()-J;return this.logSlow("INCR",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.incr(J);if(Q===1)await this.client.expire(J,Z);let X=Date.now()-Y;return this.logSlow("INCR",J,X,{expireSeconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.expire(J,Z),X=Date.now()-Y;return this.logSlow("EXPIRE",J,X,{seconds:Z}),Q}catch(J){return I.error({err:J,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.ttl(Z),Q=Date.now()-J;return this.logSlow("TTL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.ttl(J)))}catch(Z){return I.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sadd(J,...Z),X=Date.now()-Y;return this.logSlow("SADD",J,X,{membersCount:Z.length}),Q}catch(J){return I.error({err:J,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let J=`${this.prefix}${$}`,Y=Date.now(),Q=await this.client.sismember(J,Z),X=Date.now()-Y;return this.logSlow("SISMEMBER",J,X),Q}catch(J){return I.error({err:J,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.scard(Z),Q=Date.now()-J;return this.logSlow("SCARD",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.smembers(Z),Q=Date.now()-J;return this.logSlow("SMEMBERS",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.sadd(J.key,J.members)))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis saddBatch \u9519\u8BEF"}),0}}async sismemberBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.sismember(Z.key,Z.member)))}catch(Z){return I.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Y=await this.client.del(Z),Q=Date.now()-J;return this.logSlow("DEL",Z,Q),Y}catch(Z){return I.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>{let Y=`${this.prefix}${J}`;return this.client.del(Y)}))).reduce((J,Y)=>J+Y,0)}catch(Z){return I.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.setObject(J.key,J.value,J.ttl??null)))).filter((J)=>J!==null).length}catch(Z){return I.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.getObject(J)))}catch(Z){return I.error({err:Z,msg:"Redis getBatch \u9519\u8BEF"}),$.map(()=>null)}}async existsBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.exists(Z)))}catch(Z){return I.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.expire(J.key,J.seconds)))).filter((J)=>J>0).length}catch(Z){return I.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),J=Date.now()-$;return this.logSlow("PING","(no-key)",J),Z}catch($){throw I.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new T({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var e8={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,J=$.config?.redis?.prefix;try{return O$.getRedis(),new NY(J)}catch(Y){throw I.error({env:Z,err:Y,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Y,meta:{subsystem:"redis",operation:"init"}})}}},_H=e8;function $6($,Z={},J={}){return{code:0,msg:$,data:Z,...J}}function Z6($,Z=null,J={}){return{code:1,msg:$,data:Z,...J}}function J6($,Z,J={}){let{status:Y=200,contentType:Q,headers:X={}}=J,G=Q,U;if(typeof Z==="string"){if(U=Z,!G)G=Z.trim().startsWith("<")?"application/xml":"text/plain"}else U=JSON.stringify(Z),G=G||"application/json";let V={...$.corsHeaders,"Content-Type":G,...X};return new Response(U,{status:Y,headers:V})}var Y6={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:$6,No:Z6,Raw:J6}}},MH=Y6;u0();function AH($,Z){let J=m(Z)?Z:{},Y=typeof J.name==="string"?String(J.name):"",Q=m(Z)?Object.keys(Z):[],X=J.deps,G=Array.isArray(X)?X.filter((V)=>typeof V==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${Y}`,relativePath:Y,fileName:Y,moduleName:Y,addonName:"",fileBaseName:Y,fileDir:"(builtin)",name:Y,enable:J.enable,deps:G,handler:J.handler??null,customKeys:Q}}function OH(){let $=[],Z=[VH,_H,qX,zX,MH,FX,UH,KX];for(let J of Z)$.push(AH("plugin",J));return $}function zH(){let $=[],Z=[$X,ZX,VX,OX,_X];for(let J of Z)$.push(AH("hook",J));return $}P$();SZ();u0();import{existsSync as Q6}from"fs";function X6($){let Z=$.split("/").filter(Boolean),J=Z.indexOf("@befly-addon");if(J<0)return null;let Y=Z[J+1];if(typeof Y!=="string"||Y.trim()==="")return null;return Y}async function F$($,Z,J,Y){if(!Q6($))return[];let Q=k$($),X=new Bun.Glob(Y),G=[];try{let U=await X.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let V of U){if(V.endsWith(".d.ts"))continue;let A=k$(V),z=UZ(A).name,M=gJ(Q,A),j=UZ(M),C=j.dir?o(j.dir,j.name):j.name;if(z.startsWith("_"))continue;if(C.split("/").some((v)=>v.startsWith("_")))continue;let S=await B$(A,{}),w=I$(z),k="",N="";if(Z==="core")k="",N=z;else if(Z==="app")N=`app_${w}`;else{let v=X6(A);if(!v)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${A}`);k=v,N=`addon_${I$(k)}_${w}`}let E={source:Z,type:J,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:A,relativePath:C,fileName:z,moduleName:N,addonName:k,fileBaseName:UZ(A).base,fileDir:$,customKeys:m(S)?Object.keys(S):[]};if(J==="table"){E.content=m(S)?S:{},G.push(E);continue}if(J==="api")E.auth=!0,E.rawBody=!1,E.method="POST",E.fields={},E.required=[];if(J==="plugin"||J==="hook")E.deps=[],E.name="",E.handler=null;if(iY(S,(v,b)=>{E[b]=v}),J==="api")E.routePrefix=Z==="app"?"/app":`/addon/${k}`,E.path=`/api${E.routePrefix}/${C}`;G.push(E)}}catch(U){let V=Error(`scanFiles failed: source=${Z} type=${J} dir=${Q} pattern=${Y}`);throw V.cause=U,V}return G}var FH=async()=>{let $=[],Z=[],J=[],Y=[],Q=await eQ();Y.push(...await F$(o(s0,"tables"),"app","table","*.json"));for(let X of Q)Y.push(...await F$(o(X.rootDir,"tables"),"addon","table","*.json"));Z.push(...OH()),Z.push(...await F$(o(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let X of Q)Z.push(...await F$(o(X.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));J.push(...zH()),J.push(...await F$(o(s0,"hooks"),"app","hook","*.{ts,js}"));for(let X of Q)J.push(...await F$(o(X.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await F$(o(s0,"apis"),"app","api","**/*.{ts,js}"));for(let X of Q)$.push(...await F$(o(X.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:J,plugins:Z,apis:$,tables:Y,addons:Q}};class G6{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 T({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 OQ($.NODE_ENV||"development"),await FQ(this.config),this.context.config=this.config,this.context.env=$;let{apis:J,tables:Y,plugins:Q,hooks:X,addons:G}=await FH();this.context.addons=G,await zQ(J),await hQ(Y,this.config),await TQ(Q),await RQ(X);let U=await wQ(G);await O$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await pQ(Q,this.context),this.assertStartContextReady(),await new D(this.context).run(Y),await nQ(this.context,J),await rQ(this.context,U);let V=this.config.devEmail,A=this.config.devPassword;if(typeof V==="string"&&V.length>0&&typeof A==="string"&&A.length>0)await oQ(this.context,{devEmail:V,devPassword:A});else I.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await sQ(this.context),this.hooks=await cQ(X),this.apis=await bQ(J);let z=mQ(this.apis,this.hooks,this.context),M=dQ(this.config.cors),j=typeof this.config.appPort==="number"?this.config.appPort:3000,C=typeof this.config.appHost==="string"&&this.config.appHost.length>0?this.config.appHost:"0.0.0.0",S=Bun.serve({port:j,hostname:C,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(v,b)=>{let f=new URL(v.url);if(f.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(f.pathname.startsWith("/api/"))return z(v,b);return M(v)},error:(v)=>{if(I.error({err:v,msg:"\u670D\u52A1\u542F\u52A8\u65F6\u53D1\u751F\u9519\u8BEF"}),this.config.nodeEnv==="development")return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",error:v.message,stack:v.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),w=tQ(Z),k=aQ($),N=k.role==="primary"?"\u4E3B\u8FDB\u7A0B":`\u5DE5\u4F5C\u8FDB\u7A0B #${k.instanceId}`,E=k.env==="standalone"?"":` [${k.env}]`;return I.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${N}${E})`),I.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${w}`),I.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${S.url}`),S}catch(Z){let J=Z instanceof Error?Z.message:String(Z),Y="runtime",Q=!1,X=!1,G=!1;if(q$(Z))Y=Z.kind,Q=Z.logged===!0,X=Z.noLog===!0,G=Z.multiline===!0;else{let V=Z;if(V&&V.__syncTableLogged===!0)Q=!0;if(V&&V.__syncTableNoLog===!0)Y="policy";if(V&&V.__coreLogged===!0)Q=!0;if(V&&V.__coreNoLog===!0)X=!0}let U=(V,A,z)=>{let j=String(z||"").split(`
|
|
19
|
-
`),C=
|
|
20
|
-
`);for(let
|
|
21
|
-
`)}catch{}};if(!
|
|
18
|
+
3. \u5168\u90E8\u6392\u9664\u5B57\u6BB5 ["!password", "!token"]`)}static orderByToSnake($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Q=J[0],X=J[1];if(typeof Q!=="string"||typeof X!=="string")return Z;return`${c(Q.trim())}#${X.trim()}`})}static processJoinField($){if(Q0.assertNoExprField($),$==="*"||$.startsWith("`"))return $;if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i),J=Z[0],Q=Z[1];if(typeof J!=="string"||typeof Q!=="string")return $;return`${b.processJoinField(J.trim())} AS ${Q.trim()}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((X)=>X.trim()===""))return $;let J=Z[Z.length-1],Q=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Q!=="string")return c($);return`${Q.trim()}.${c(J)}`}return c($)}static processJoinWhereKey($){if($==="$or"||$==="$and")return $;if(Q0.assertNoExprField($),$.includes("$")){let Z=$.lastIndexOf("$"),J=$.substring(0,Z),Q=$.substring(Z);if(J.includes(".")){let X=J.split(".");if(X.length<2)return`${c(J)}${Q}`;if(X.some((V)=>V.trim()===""))return`${c(J)}${Q}`;let G=X[X.length-1],Y=X.slice(0,X.length-1).join(".");if(typeof G!=="string"||typeof Y!=="string")return`${c(J)}${Q}`;return`${Y.trim()}.${c(G)}${Q}`}return`${c(J)}${Q}`}if($.includes(".")){let Z=$.split(".");if(Z.length<2)return c($);if(Z.some((X)=>X.trim()===""))return c($);let J=Z[Z.length-1],Q=Z.slice(0,Z.length-1).join(".");if(typeof J!=="string"||typeof Q!=="string")return c($);return`${Q.trim()}.${c(J)}`}return c($)}static processJoinWhere($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>b.processJoinWhere(J));let Z={};for(let[J,Q]of Object.entries($)){let X=b.processJoinWhereKey(J);if(J==="$or"||J==="$and")Z[X]=Array.isArray(Q)?Q.map((G)=>b.processJoinWhere(G)):[];else if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q))Z[X]=b.processJoinWhere(Q);else Z[X]=Q}return Z}static processJoinOrderBy($){if(!$||!Array.isArray($))return $;return $.map((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))return Z;let J=Z.split("#");if(J.length!==2)return Z;let Q=J[0],X=J[1];if(typeof Q!=="string"||typeof X!=="string")return Z;return`${b.processJoinField(Q.trim())}#${X.trim()}`})}static addDefaultStateFilter($={},Z,J=!1){if(Object.keys($).some((G)=>G.startsWith("state")||G.includes(".state")))return $;if(J&&Z){let G={};for(let[Y,V]of Object.entries($))G[Y]=V;return G[`${Z}.state$gt`]=0,G}let X={};for(let[G,Y]of Object.entries($))X[G]=Y;return X.state$gt=0,X}static whereKeysToSnake($){if(!$||typeof $!=="object")return $;if(Array.isArray($))return $.map((J)=>b.whereKeysToSnake(J));let Z={};for(let[J,Q]of Object.entries($)){if(J==="$or"||J==="$and"){Z[J]=Array.isArray(Q)?Q.map((G)=>b.whereKeysToSnake(G)):[];continue}if(Q0.assertNoExprField(J),J.includes("$")){let G=J.lastIndexOf("$"),Y=J.substring(0,G),V=J.substring(G),U=c(Y)+V;Z[U]=Q;continue}let X=c(J);if(typeof Q==="object"&&Q!==null&&!Array.isArray(Q))Z[X]=b.whereKeysToSnake(Q);else Z[X]=Q}return Z}static serializeArrayFields($){let Z={};for(let[J,Q]of Object.entries($)){if(Q===null||Q===void 0){Z[J]=Q;continue}if(Array.isArray(Q)){Z[J]=JSON.stringify(Q);continue}Z[J]=Q}return Z}static deserializeArrayFields($){if(!$)return null;let Z={};for(let[J,Q]of Object.entries($))Z[J]=Q;for(let[J,Q]of Object.entries(Z)){if(typeof Q!=="string")continue;if(Q.startsWith("[")&&Q.endsWith("]"))try{let X=JSON.parse(Q);if(Array.isArray(X))Z[J]=X}catch{}}return Z}static cleanAndSnakeAndSerializeWriteData($,Z=[null,void 0]){let J=D$($,{excludeValues:Z}),Q=QX(J);return b.serializeArrayFields(Q)}static stripSystemFieldsForWrite($,Z){let J={};for(let[Q,X]of Object.entries($)){if(Q==="id")continue;if(Q==="created_at")continue;if(Q==="updated_at")continue;if(Q==="deleted_at")continue;if(!Z.allowState&&Q==="state")continue;J[Q]=X}return J}static buildInsertRow($){let Z=b.cleanAndSnakeAndSerializeWriteData($.data),J=b.stripSystemFieldsForWrite(Z,{allowState:!1}),Q={};for(let[X,G]of Object.entries(J))Q[X]=G;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)})`);Q.id=$.id}return Q.created_at=$.now,Q.updated_at=$.now,Q.state=1,Q}static buildUpdateRow($){let Z=b.cleanAndSnakeAndSerializeWriteData($.data),J=b.stripSystemFieldsForWrite(Z,{allowState:$.allowState}),Q={};for(let[X,G]of Object.entries(J))Q[X]=G;return Q.updated_at=$.now,Q}static buildPartialUpdateData($){let Z=b.cleanAndSnakeAndSerializeWriteData($.data);return b.stripSystemFieldsForWrite(Z,{allowState:$.allowState})}}$0();var p={QUOTE_IDENT_NEED_STRING:($)=>`quoteIdent \u9700\u8981\u5B57\u7B26\u4E32\u7C7B\u578B\u6807\u8BC6\u7B26 (identifier: ${String($)})`,IDENT_EMPTY:"SQL \u6807\u8BC6\u7B26\u4E0D\u80FD\u4E3A\u7A7A",FIELD_EXPR_NOT_ALLOWED:($)=>`\u5B57\u6BB5\u5305\u542B\u51FD\u6570/\u8868\u8FBE\u5F0F\uFF0C\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FIELD_INVALID:($)=>`\u5B57\u6BB5\u683C\u5F0F\u975E\u6CD5\uFF0C\u8BF7\u4F7F\u7528\u7B80\u5355\u5B57\u6BB5\u540D\u6216\u5B89\u5168\u5F15\u7528\uFF0C\u590D\u6742\u8868\u8FBE\u5F0F\u8BF7\u4F7F\u7528 selectRaw/whereRaw (field: ${$})`,FROM_EMPTY:"FROM \u8868\u540D\u4E0D\u80FD\u4E3A\u7A7A",FROM_NEED_NON_EMPTY:($)=>`FROM \u8868\u540D\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32 (table: ${String($)})`,FROM_REQUIRED:"FROM \u8868\u540D\u662F\u5FC5\u9700\u7684",COUNT_NEED_FROM:"COUNT \u9700\u8981 FROM \u8868\u540D",TABLE_REF_TOO_MANY_PARTS:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08\u5305\u542B\u8FC7\u591A\u7247\u6BB5\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw \u663E\u5F0F\u4F20\u5165\u590D\u6742\u8868\u8FBE\u5F0F (table: ${$})`,TABLE_REF_SCHEMA_TOO_DEEP:($)=>`\u4E0D\u652F\u6301\u7684\u8868\u5F15\u7528\u683C\u5F0F\uFF08schema \u5C42\u7EA7\u8FC7\u6DF1\uFF09\u3002\u8BF7\u4F7F\u7528 fromRaw (table: ${$})`,SCHEMA_QUOTE_NOT_PAIRED:($)=>`schema \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (schema: ${$})`,TABLE_QUOTE_NOT_PAIRED:($)=>`table \u6807\u8BC6\u7B26\u5F15\u7528\u4E0D\u5B8C\u6574\uFF0C\u8BF7\u4F7F\u7528\u6210\u5BF9\u7684 \`...\` \u6216 "..." (table: ${$})`,SELECT_FIELDS_INVALID:"SELECT \u5B57\u6BB5\u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6216\u6570\u7EC4",SELECT_RAW_NEED_NON_EMPTY:($)=>`selectRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (expr: ${String($)})`,FROM_RAW_NEED_NON_EMPTY:($)=>`fromRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (tableExpr: ${String($)})`,WHERE_RAW_NEED_NON_EMPTY:($)=>`whereRaw \u9700\u8981\u975E\u7A7A\u5B57\u7B26\u4E32 (sql: ${String($)})`,WHERE_VALUE_REQUIRED:"where(field, value) \u4E0D\u5141\u8BB8\u7701\u7565 value\u3002\u82E5\u9700\u4F20\u5165\u539F\u59CB WHERE\uFF0C\u8BF7\u4F7F\u7528 whereRaw",JOIN_NEED_STRING:($,Z)=>`JOIN \u8868\u540D\u548C\u6761\u4EF6\u5FC5\u987B\u662F\u5B57\u7B26\u4E32 (table: ${String($)}, on: ${String(Z)})`,ORDER_BY_NEED_ARRAY:'orderBy \u5FC5\u987B\u662F\u5B57\u7B26\u4E32\u6570\u7EC4\uFF0C\u683C\u5F0F\u4E3A "\u5B57\u6BB5#\u65B9\u5411"',ORDER_BY_ITEM_NEED_HASH:($)=>`orderBy \u5B57\u6BB5\u5FC5\u987B\u662F "\u5B57\u6BB5#\u65B9\u5411" \u683C\u5F0F\u7684\u5B57\u7B26\u4E32\uFF08\u4F8B\u5982\uFF1A"name#ASC", "id#DESC"\uFF09 (item: ${String($)})`,ORDER_BY_FIELD_EMPTY:($)=>`orderBy \u4E2D\u5B57\u6BB5\u540D\u4E0D\u80FD\u4E3A\u7A7A (item: ${$})`,ORDER_BY_DIR_INVALID:($)=>`ORDER BY \u65B9\u5411\u5FC5\u987B\u662F ASC \u6216 DESC (direction: ${$})`,LIMIT_MUST_NON_NEGATIVE:($)=>`LIMIT \u6570\u91CF\u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,OFFSET_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (offset: ${String($)})`,OFFSET_COUNT_MUST_NON_NEGATIVE:($)=>`OFFSET \u5FC5\u987B\u662F\u975E\u8D1F\u6570 (count: ${String($)})`,INSERT_NEED_TABLE:($)=>`INSERT \u9700\u8981\u8868\u540D (table: ${String($)})`,INSERT_NEED_DATA:($,Z)=>`INSERT \u9700\u8981\u6570\u636E (table: ${String($)}, data: ${JSON.stringify(Z)})`,INSERT_NEED_AT_LEAST_ONE_FIELD:($)=>`\u63D2\u5165\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5 (table: ${$})`,UPDATE_NEED_TABLE:"UPDATE \u9700\u8981\u8868\u540D",UPDATE_NEED_OBJECT:"UPDATE \u9700\u8981\u6570\u636E\u5BF9\u8C61",UPDATE_NEED_AT_LEAST_ONE_FIELD:"\u66F4\u65B0\u6570\u636E\u5FC5\u987B\u81F3\u5C11\u6709\u4E00\u4E2A\u5B57\u6BB5",UPDATE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CUPDATE \u9700\u8981 WHERE \u6761\u4EF6",DELETE_NEED_TABLE:"DELETE \u9700\u8981\u8868\u540D",DELETE_NEED_WHERE:"\u4E3A\u5B89\u5168\u8D77\u89C1\uFF0CDELETE \u9700\u8981 WHERE \u6761\u4EF6",TO_DELETE_IN_NEED_TABLE:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_DELETE_IN_NEED_ID_FIELD:($)=>`toDeleteInSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_DELETE_IN_NEED_IDS:"toDeleteInSql \u9700\u8981 ids \u6570\u7EC4",TO_UPDATE_CASE_NEED_TABLE:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A\u8868\u540D (table: ${String($)})`,TO_UPDATE_CASE_NEED_ID_FIELD:($)=>`toUpdateCaseByIdSql \u9700\u8981\u975E\u7A7A idField (idField: ${String($)})`,TO_UPDATE_CASE_NEED_ROWS:"toUpdateCaseByIdSql \u9700\u8981 rows \u6570\u7EC4",TO_UPDATE_CASE_NEED_FIELDS:"toUpdateCaseByIdSql \u9700\u8981 fields \u6570\u7EC4"};class l${_select=[];_from="";_where=[];_joins=[];_orderBy=[];_groupBy=[];_having=[];_limit=null;_offset=null;_params=[];_quoteIdent;constructor($){if($&&$.quoteIdent)this._quoteIdent=$.quoteIdent;else this._quoteIdent=(Z)=>{if(typeof Z!=="string")throw Error(p.QUOTE_IDENT_NEED_STRING(Z));let J=Z.trim();if(!J)throw Error(p.IDENT_EMPTY);return`\`${J.replace(/`/g,"``")}\``}}_isQuotedIdent($){return Q0.isQuotedIdentPaired($)}_startsWithQuote($){return Q0.startsWithQuote($)}reset(){return this._select=[],this._from="",this._where=[],this._joins=[],this._orderBy=[],this._groupBy=[],this._having=[],this._limit=null,this._offset=null,this._params=[],this}_escapeField($){if(typeof $!=="string")return $;if($=$.trim(),Q0.assertPairedQuotedIdentIfStartsWithQuote($,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),$==="*"||this._isQuotedIdent($))return $;try{Q0.assertNoExprField($)}catch{throw Error(p.FIELD_EXPR_NOT_ALLOWED($))}if($.toUpperCase().includes(" AS ")){let Z=$.split(/\s+AS\s+/i);if(Z.length!==2)throw Error(p.FIELD_INVALID($));let J=Z[0],Q=Z[1];if(typeof J!=="string"||typeof Q!=="string")throw Error(p.FIELD_INVALID($));let X=J.trim(),G=Q.trim();return Q0.assertSafeAlias(G),`${this._escapeField(X)} AS ${G}`}if($.includes("."))return $.split(".").map((J)=>{if(J=J.trim(),J==="*"||this._isQuotedIdent(J))return J;return Q0.assertPairedQuotedIdentIfStartsWithQuote(J,"\u5B57\u6BB5\u6807\u8BC6\u7B26"),this._quoteIdent(J)}).join(".");return this._quoteIdent($)}_validateIdentifierPart($,Z){Q0.assertSafeIdentifierPart($,Z)}_escapeTable($){if(typeof $!=="string")return $;if($=$.trim(),this._startsWithQuote($)&&!this._isQuotedIdent($));if(this._isQuotedIdent($))return $;let Z=$.split(/\s+/).filter((U)=>U.length>0);if(Z.length===0)throw Error(p.FROM_EMPTY);if(Z.length>2)throw Error(p.TABLE_REF_TOO_MANY_PARTS($));let J=Z[0];if(typeof J!=="string"||J.trim()==="")throw Error(p.FROM_EMPTY);let Q=J.trim(),X=Z.length===2?Z[1]:null,G=typeof X==="string"?X.trim():null,Y=Q.split(".");if(Y.length>2)throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let V="";if(Y.length===2){let U=Y[0],O=Y[1];if(typeof U!=="string"||typeof O!=="string")throw Error(p.TABLE_REF_SCHEMA_TOO_DEEP($));let _=U.trim(),A=O.trim(),L=this._isQuotedIdent(_)?_:(()=>{if(this._startsWithQuote(_)&&!this._isQuotedIdent(_))throw Error(p.SCHEMA_QUOTE_NOT_PAIRED(_));return this._validateIdentifierPart(_,"schema"),this._quoteIdent(_)})(),C=this._isQuotedIdent(A)?A:(()=>{if(this._startsWithQuote(A)&&!this._isQuotedIdent(A))throw Error(p.TABLE_QUOTE_NOT_PAIRED(A));return this._validateIdentifierPart(A,"table"),this._quoteIdent(A)})();V=`${L}.${C}`}else{let U=Y[0];if(typeof U!=="string")throw Error(p.FROM_EMPTY);let O=U.trim();if(this._isQuotedIdent(O))V=O;else{if(this._startsWithQuote(O)&&!this._isQuotedIdent(O))throw Error(p.TABLE_QUOTE_NOT_PAIRED(O));this._validateIdentifierPart(O,"table"),V=this._quoteIdent(O)}}if(G)return this._validateIdentifierPart(G,"alias"),`${V} ${G}`;return V}_validateParam($){Q0.assertNoUndefinedParam($,"SQL \u53C2\u6570\u503C")}_applyOperator($,Z,J){let Q=this._escapeField($);switch(Z){case"$ne":case"$not":this._validateParam(J),this._where.push(`${Q} != ?`),this._params.push(J);break;case"$in":if(!Array.isArray(J))throw Error(`$in \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$in \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u6C38\u8FDC\u4E0D\u5339\u914D\u4EFB\u4F55\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let X=J.map(()=>"?").join(",");this._where.push(`${Q} IN (${X})`),this._params.push(...J);break;case"$nin":case"$notIn":if(!Array.isArray(J))throw Error(`$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u503C\u5FC5\u987B\u662F\u6570\u7EC4 (operator: ${Z})`);if(J.length===0)throw Error("$nin/$notIn \u64CD\u4F5C\u7B26\u7684\u6570\u7EC4\u4E0D\u80FD\u4E3A\u7A7A\u3002\u63D0\u793A\uFF1A\u7A7A\u6570\u7EC4\u4F1A\u5BFC\u81F4\u67E5\u8BE2\u5339\u914D\u6240\u6709\u8BB0\u5F55\uFF0C\u8FD9\u901A\u5E38\u4E0D\u662F\u9884\u671F\u884C\u4E3A\u3002\u8BF7\u68C0\u67E5\u67E5\u8BE2\u6761\u4EF6\u6216\u79FB\u9664\u8BE5\u5B57\u6BB5\u3002");let G=J.map(()=>"?").join(",");this._where.push(`${Q} NOT IN (${G})`),this._params.push(...J);break;case"$like":this._validateParam(J),this._where.push(`${Q} LIKE ?`),this._params.push(J);break;case"$notLike":this._validateParam(J),this._where.push(`${Q} NOT LIKE ?`),this._params.push(J);break;case"$gt":this._validateParam(J),this._where.push(`${Q} > ?`),this._params.push(J);break;case"$gte":this._validateParam(J),this._where.push(`${Q} >= ?`),this._params.push(J);break;case"$lt":this._validateParam(J),this._where.push(`${Q} < ?`),this._params.push(J);break;case"$lte":this._validateParam(J),this._where.push(`${Q} <= ?`),this._params.push(J);break;case"$between":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Q} BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$notBetween":if(Array.isArray(J)&&J.length===2)this._validateParam(J[0]),this._validateParam(J[1]),this._where.push(`${Q} NOT BETWEEN ? AND ?`),this._params.push(J[0],J[1]);break;case"$null":if(J===!0)this._where.push(`${Q} IS NULL`);break;case"$notNull":if(J===!0)this._where.push(`${Q} IS NOT NULL`);break;default:this._validateParam(J),this._where.push(`${Q} = ?`),this._params.push(J)}}_processWhereConditions($){if(!$||typeof $!=="object")return;Object.entries($).forEach(([Z,J])=>{if(J===void 0)return;if(Z==="$and"){if(Array.isArray(J))J.forEach((Q)=>{if(Q&&typeof Q==="object"&&!Array.isArray(Q))this._processWhereConditions(Q)})}else if(Z==="$or"){if(Array.isArray(J)){let Q=[],X=[];if(J.forEach((G)=>{if(!G||typeof G!=="object"||Array.isArray(G))return;let Y=new l$({quoteIdent:this._quoteIdent});if(Y._processWhereConditions(G),Y._where.length>0)Q.push(`(${Y._where.join(" AND ")})`),X.push(...Y._params)}),Q.length>0)this._where.push(`(${Q.join(" OR ")})`),this._params.push(...X)}}else if(Z.includes("$")){let Q=Z.lastIndexOf("$"),X=Z.substring(0,Q),G="$"+Z.substring(Q+1);this._applyOperator(X,G,J)}else if(typeof J==="object"&&J!==null&&!Array.isArray(J))for(let[Q,X]of Object.entries(J))this._applyOperator(Z,Q,X);else{this._validateParam(J);let Q=this._escapeField(Z);this._where.push(`${Q} = ?`),this._params.push(J)}})}getWhereConditions(){return{sql:this._where.length>0?this._where.join(" AND "):"",params:[...this._params]}}select($="*"){if(Array.isArray($))this._select=[...this._select,...$.map((Z)=>this._escapeField(Z))];else if(typeof $==="string")this._select.push(this._escapeField($));else throw Error(p.SELECT_FIELDS_INVALID);return this}selectRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.SELECT_RAW_NEED_NON_EMPTY($));return this._select.push($),this}from($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_NEED_NON_EMPTY($));return this._from=this._escapeTable($.trim()),this}fromRaw($){if(typeof $!=="string"||!$.trim())throw Error(p.FROM_RAW_NEED_NON_EMPTY($));return this._from=$,this}where($,Z){if(typeof $==="object"&&$!==null)return this._processWhereConditions($),this;if(typeof $==="string"){if(Z===void 0)throw Error(p.WHERE_VALUE_REQUIRED);this._validateParam(Z);let J=this._escapeField($);return this._where.push(`${J} = ?`),this._params.push(Z),this}return this}whereRaw($,Z){if(typeof $!=="string"||!$.trim())throw Error(p.WHERE_RAW_NEED_NON_EMPTY($));if(this._where.push($),Z&&Z.length>0)this._params.push(...Z);return this}leftJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`LEFT JOIN ${J} ON ${Z}`),this}rightJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`RIGHT JOIN ${J} ON ${Z}`),this}innerJoin($,Z){if(typeof $!=="string"||typeof Z!=="string")throw Error(p.JOIN_NEED_STRING($,Z));let J=this._escapeTable($);return this._joins.push(`INNER JOIN ${J} ON ${Z}`),this}orderBy($){if(!Array.isArray($))throw Error(p.ORDER_BY_NEED_ARRAY);return $.forEach((Z)=>{if(typeof Z!=="string"||!Z.includes("#"))throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let J=Z.split("#");if(J.length!==2)throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let Q=J[0],X=J[1];if(typeof Q!=="string"||typeof X!=="string")throw Error(p.ORDER_BY_ITEM_NEED_HASH(Z));let G=Q.trim(),Y=X.trim().toUpperCase();if(!G)throw Error(p.ORDER_BY_FIELD_EMPTY(Z));if(!["ASC","DESC"].includes(Y))throw Error(p.ORDER_BY_DIR_INVALID(Y));let V=this._escapeField(G);this._orderBy.push(`${V} ${Y}`)}),this}groupBy($){if(Array.isArray($)){let Z=$.filter((J)=>typeof J==="string").map((J)=>this._escapeField(J));this._groupBy=[...this._groupBy,...Z]}else if(typeof $==="string")this._groupBy.push(this._escapeField($));return this}having($){if(typeof $==="string")this._having.push($);return this}limit($,Z){if(typeof $!=="number"||$<0)throw Error(p.LIMIT_MUST_NON_NEGATIVE($));if(this._limit=Math.floor($),Z!==void 0&&Z!==null){if(typeof Z!=="number"||Z<0)throw Error(p.OFFSET_MUST_NON_NEGATIVE(Z));this._offset=Math.floor(Z)}return this}offset($){if(typeof $!=="number"||$<0)throw Error(p.OFFSET_COUNT_MUST_NON_NEGATIVE($));return this._offset=Math.floor($),this}toSelectSql(){let $="SELECT ";if($+=this._select.length>0?this._select.join(", "):"*",!this._from)throw Error(p.FROM_REQUIRED);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");if(this._groupBy.length>0)$+=" GROUP BY "+this._groupBy.join(", ");if(this._having.length>0)$+=" HAVING "+this._having.join(" AND ");if(this._orderBy.length>0)$+=" ORDER BY "+this._orderBy.join(", ");if(this._limit!==null){if($+=` LIMIT ${this._limit}`,this._offset!==null)$+=` OFFSET ${this._offset}`}return{sql:$,params:[...this._params]}}toInsertSql($,Z){if(!$||typeof $!=="string")throw Error(p.INSERT_NEED_TABLE($));if(!Z||typeof Z!=="object")throw Error(p.INSERT_NEED_DATA($,Z));let J=this._escapeTable($);if(Array.isArray(Z)){let Q=Q0.assertBatchInsertRowsConsistent(Z,{table:$}),X=Q.map((O)=>this._escapeField(O)),G=Q.map(()=>"?").join(", "),Y=Z.map(()=>`(${G})`).join(", "),V=`INSERT INTO ${J} (${X.join(", ")}) VALUES ${Y}`,U=[];for(let O=0;O<Z.length;O++){let _=Z[O];for(let A of Q){let L=_[A];this._validateParam(L),U.push(L)}}return{sql:V,params:U}}else{let Q=Object.keys(Z);if(Q.length===0)throw Error(p.INSERT_NEED_AT_LEAST_ONE_FIELD($));for(let U of Q){let O=Z;this._validateParam(O[U])}let X=Q.map((U)=>this._escapeField(U)),G=Q.map(()=>"?").join(", "),Y=`INSERT INTO ${J} (${X.join(", ")}) VALUES (${G})`,V=[];for(let U of Q){let O=Z[U];this._validateParam(O),V.push(O)}return{sql:Y,params:V}}}toUpdateSql($,Z){if(!$||typeof $!=="string")throw Error(p.UPDATE_NEED_TABLE);if(!Z||typeof Z!=="object"||Array.isArray(Z))throw Error(p.UPDATE_NEED_OBJECT);let J=Object.keys(Z);if(J.length===0)throw Error(p.UPDATE_NEED_AT_LEAST_ONE_FIELD);let Q=this._escapeTable($),X=J.map((V)=>`${this._escapeField(V)} = ?`),G=[...Object.values(Z),...this._params],Y=`UPDATE ${Q} SET ${X.join(", ")}`;if(this._where.length>0)Y+=" WHERE "+this._where.join(" AND ");else throw Error(p.UPDATE_NEED_WHERE);return{sql:Y,params:G}}toDeleteSql($){if(!$||typeof $!=="string")throw Error(p.DELETE_NEED_TABLE);let J=`DELETE FROM ${this._escapeTable($)}`;if(this._where.length>0)J+=" WHERE "+this._where.join(" AND ");else throw Error(p.DELETE_NEED_WHERE);return{sql:J,params:[...this._params]}}toCountSql(){let $="SELECT COUNT(*) as total";if(!this._from)throw Error(p.COUNT_NEED_FROM);if($+=` FROM ${this._from}`,this._joins.length>0)$+=" "+this._joins.join(" ");if(this._where.length>0)$+=" WHERE "+this._where.join(" AND ");return{sql:$,params:[...this._params]}}static toDeleteInSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_DELETE_IN_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_DELETE_IN_NEED_ID_FIELD($.idField));if(!Array.isArray($.ids))throw Error(p.TO_DELETE_IN_NEED_IDS);if($.ids.length===0)return{sql:"",params:[]};let Z=$.ids.map(()=>"?").join(",");return{sql:`DELETE FROM ${$.quoteIdent($.table)} WHERE ${$.quoteIdent($.idField)} IN (${Z})`,params:[...$.ids]}}static toUpdateCaseByIdSql($){if(typeof $.table!=="string"||!$.table.trim())throw Error(p.TO_UPDATE_CASE_NEED_TABLE($.table));if(typeof $.idField!=="string"||!$.idField.trim())throw Error(p.TO_UPDATE_CASE_NEED_ID_FIELD($.idField));if(!Array.isArray($.rows))throw Error(p.TO_UPDATE_CASE_NEED_ROWS);if($.rows.length===0)return{sql:"",params:[]};if(!Array.isArray($.fields))throw Error(p.TO_UPDATE_CASE_NEED_FIELDS);if($.fields.length===0)return{sql:"",params:[]};let Z=$.rows.map((V)=>V.id),J=Z.map(()=>"?").join(","),Q=[],X=[],G=$.quoteIdent($.idField);for(let V of $.fields){let U=[];for(let _ of $.rows){if(!(V in _.data))continue;U.push("WHEN ? THEN ?"),X.push(_.id);let A=_.data[V];Q0.assertNoUndefinedParam(A,"SQL \u53C2\u6570\u503C"),X.push(A)}if(U.length===0)continue;let O=$.quoteIdent(V);Q.push(`${O} = CASE ${G} ${U.join(" ")} ELSE ${O} END`)}Q.push(`${$.quoteIdent($.updatedAtField)} = ?`),X.push($.updatedAtValue);for(let V of Z)X.push(V);let Y=`UPDATE ${$.quoteIdent($.table)} SET ${Q.join(", ")} WHERE ${G} IN (${J})`;if($.stateGtZero&&$.stateField)Y+=` AND ${$.quoteIdent($.stateField)} > 0`;return{sql:Y,params:X}}}function r$($){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 vG 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 pZ{redis;dbName;sql=null;isTransaction=!1;idMode;constructor($){if(this.redis=$.redis,typeof $.dbName!=="string"||$.dbName.trim()==="")throw Error("DbHelper \u521D\u59CB\u5316\u5931\u8D25\uFF1AdbName \u5FC5\u987B\u4E3A\u975E\u7A7A\u5B57\u7B26\u4E32");this.dbName=$.dbName,this.sql=$.sql||null,this.isTransaction=Boolean($.sql),this.idMode=$.idMode==="autoId"?"autoId":"timeId"}createSqlBuilder(){return new l$({quoteIdent:r$})}async getTableColumns($){let Z=r$($),Q=(await this.executeSelect(`SHOW COLUMNS FROM ${Z}`,[])).data;if(!Q||Q.length===0)throw Error(`\u8868 ${$} \u4E0D\u5B58\u5728\u6216\u6CA1\u6709\u5B57\u6BB5`);let X=[];for(let G of Q){let Y=G.Field;if(typeof Y==="string"&&Y.length>0)X.push(Y)}return X}async prepareQueryOptions($){let Z=D$($.where||{},{excludeValues:[null,void 0]});if($.joins&&$.joins.length>0){let X=($.fields||[]).map((V)=>b.processJoinField(V)),G=b.normalizeTableRef($.table),Y=b.getJoinMainQualifier($.table);return{table:G,tableQualifier:Y,fields:X.length>0?X:["*"],where:b.processJoinWhere(Z),joins:$.joins,orderBy:b.processJoinOrderBy($.orderBy||[]),page:$.page||1,limit:$.limit||10}}let Q=await b.fieldsToSnake(c($.table),$.fields||[],this.getTableColumns.bind(this));return{table:c($.table),tableQualifier:c($.table),fields:Q,where:b.whereKeysToSnake(Z),joins:void 0,orderBy:b.orderByToSnake($.orderBy||[]),page:$.page||1,limit:$.limit||10}}applyJoins($,Z){if(!Z||Z.length===0)return;for(let J of Z){let Q=b.normalizeTableRef(J.table);switch(J.type||"left"){case"inner":$.innerJoin(Q,J.on);break;case"right":$.rightJoin(Q,J.on);break;case"left":default:$.leftJoin(Q,J.on);break}}}async executeSelect($,Z){return await this.executeWithConn($,Z)}async executeRun($,Z){return await this.executeWithConn($,Z)}async executeWithConn($,Z){if(!this.sql)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(typeof $!=="string")throw Error(`executeWithConn \u53EA\u63A5\u53D7\u5B57\u7B26\u4E32\u7C7B\u578B\u7684 SQL\uFF0C\u6536\u5230\u7C7B\u578B: ${typeof $}\uFF0C\u503C: ${JSON.stringify($)}`);let J=Date.now(),Q=MG(Z);try{let X;if(Q.length>0)X=await this.sql.unsafe($,Q);else X=await this.sql.unsafe($);let G=Date.now()-J;return{data:X,sql:{sql:$,params:Q,duration:G}}}catch(X){let G=Date.now()-J,Y=X instanceof Error?X.message:String(X);throw new vG(`SQL\u6267\u884C\u5931\u8D25: ${Y}`,{originalError:X,params:Q,duration:G,sqlInfo:{sql:$,params:Q,duration:G}})}}async unsafe($,Z){return await this.executeWithConn($,Z)}async tableExists($){let Z=c($),J=await this.executeSelect("SELECT COUNT(*) as count FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?",[Z]);return{data:(J.data?.[0]?.count||0)>0,sql:J.sql}}async getCount($){let{table:Z,where:J,joins:Q,tableQualifier:X}=await this.prepareQueryOptions($),G=Array.isArray(Q)&&Q.length>0,Y=this.createSqlBuilder().selectRaw("COUNT(*) as count").from(Z).where(b.addDefaultStateFilter(J,X,G));this.applyJoins(Y,Q);let{sql:V,params:U}=Y.toSelectSql(),O=await this.executeSelect(V,U);return{data:O.data?.[0]?.count||0,sql:O.sql}}async getOne($){let{table:Z,fields:J,where:Q,joins:X,tableQualifier:G}=await this.prepareQueryOptions($),Y=Array.isArray(X)&&X.length>0,V=this.createSqlBuilder().select(J).from(Z).where(b.addDefaultStateFilter(Q,G,Y));this.applyJoins(V,X);let{sql:U,params:O}=V.toSelectSql(),_=await this.executeSelect(U,O),L=_.data?.[0]||null;if(!L)return{data:{},sql:_.sql};let C=SJ(L),w=b.deserializeArrayFields(C);if(!w)return{data:{},sql:_.sql};return{data:cZ([w])[0]??w,sql:_.sql}}async getDetail($){return await this.getOne($)}async getList($){let Z=await this.prepareQueryOptions($);if(Z.page<1||Z.page>1e4)throw Error(`\u9875\u7801\u5FC5\u987B\u5728 1 \u5230 10000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);if(Z.limit<1||Z.limit>1000)throw Error(`\u6BCF\u9875\u6570\u91CF\u5FC5\u987B\u5728 1 \u5230 1000 \u4E4B\u95F4 (table: ${$.table}, page: ${Z.page}, limit: ${Z.limit})`);let J=b.addDefaultStateFilter(Z.where,Z.tableQualifier,Array.isArray(Z.joins)&&Z.joins.length>0),Q=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(Z.table).where(J);this.applyJoins(Q,Z.joins);let{sql:X,params:G}=Q.toSelectSql(),Y=await this.executeSelect(X,G),V=Y.data?.[0]?.total||0;if(V===0)return{data:{lists:[],total:0,page:Z.page,limit:Z.limit,pages:0},sql:{count:Y.sql}};let U=(Z.page-1)*Z.limit,O=this.createSqlBuilder().select(Z.fields).from(Z.table).where(J).limit(Z.limit).offset(U);if(this.applyJoins(O,Z.joins),Z.orderBy&&Z.orderBy.length>0)O.orderBy(Z.orderBy);let{sql:_,params:A}=O.toSelectSql(),L=await this.executeSelect(_,A),C=L.data||[],S=EJ(C).map((k)=>b.deserializeArrayFields(k)).filter((k)=>k!==null);return{data:{lists:cZ(S),total:V,page:Z.page,limit:Z.limit,pages:Math.ceil(V/Z.limit)},sql:{count:Y.sql,data:L.sql}}}async getAll($){let Q={table:$.table,page:1,limit:10};if($.fields!==void 0)Q.fields=$.fields;if($.where!==void 0)Q.where=$.where;if($.joins!==void 0)Q.joins=$.joins;if($.orderBy!==void 0)Q.orderBy=$.orderBy;let X=await this.prepareQueryOptions(Q),G=b.addDefaultStateFilter(X.where,X.tableQualifier,Array.isArray(X.joins)&&X.joins.length>0),Y=this.createSqlBuilder().selectRaw("COUNT(*) as total").from(X.table).where(G);this.applyJoins(Y,X.joins);let{sql:V,params:U}=Y.toSelectSql(),O=await this.executeSelect(V,U),_=O.data?.[0]?.total||0;if(_===0)return{data:{lists:[],total:0},sql:{count:O.sql}};let A=this.createSqlBuilder().select(X.fields).from(X.table).where(G).limit(1e4);if(this.applyJoins(A,X.joins),X.orderBy&&X.orderBy.length>0)A.orderBy(X.orderBy);let{sql:L,params:C}=A.toSelectSql(),w=await this.executeSelect(L,C),S=w.data||[];if(S.length>=1000)I.warn({table:$.table,count:S.length,total:_,msg:"getAll \u8FD4\u56DE\u6570\u636E\u8FC7\u591A\uFF0C\u5EFA\u8BAE\u4F7F\u7528 getList \u5206\u9875\u67E5\u8BE2"});if(S.length>=1e4)I.warn({table:$.table,limit:1e4,total:_,msg:`getAll \u8FBE\u5230\u6700\u5927\u9650\u5236 ${1e4}\uFF0C\u5B9E\u9645\u603B\u6570 ${_}\uFF0C\u53EA\u8FD4\u56DE\u524D ${1e4} \u6761`});let N=EJ(S).map((v)=>b.deserializeArrayFields(v)).filter((v)=>v!==null);return{data:{lists:cZ(N),total:_},sql:{count:O.sql,data:w.sql}}}async insData($){let{table:Z,data:J}=$,Q=c(Z),X=Date.now(),G;if(this.idMode==="autoId")G=b.buildInsertRow({idMode:"autoId",data:J,now:X});else{let w;try{w=await this.redis.genTimeID()}catch(S){throw Error(`\u751F\u6210 ID \u5931\u8D25\uFF0CRedis \u53EF\u80FD\u4E0D\u53EF\u7528 (table: ${Z})`,{cause:S})}G=b.buildInsertRow({idMode:"timeId",data:J,id:w,now:X})}Q0.assertNoUndefinedInRecord(G,`insData \u63D2\u5165\u6570\u636E (table: ${Q})`);let Y=this.createSqlBuilder(),{sql:V,params:U}=Y.toInsertSql(Q,G),O=await this.executeRun(V,U),_=G.id,A=typeof _==="number"?_:0,L=T$(O.data?.lastInsertRowid),C=this.idMode==="autoId"?L||0:A||L||0;if(this.idMode==="autoId"&&C<=0)throw Error(`\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${Z})`);return{data:C,sql:O.sql}}async insBatch($,Z){if(Z.length===0)return{data:[],sql:{sql:"",params:[],duration:0}};let J=1000;if(Z.length>J)throw Error(`\u6279\u91CF\u63D2\u5165\u6570\u91CF ${Z.length} \u8D85\u8FC7\u6700\u5927\u9650\u5236 ${J}`);let Q=c($),X=Date.now(),G=[],Y;if(this.idMode==="autoId")Y=Z.map((A)=>{return b.buildInsertRow({idMode:"autoId",data:A,now:X})});else{let A=[];for(let L=0;L<Z.length;L++)A.push(await this.redis.genTimeID());G=A,Y=Z.map((L,C)=>{let w=A[C];if(typeof w!=="number")throw Error(`\u6279\u91CF\u63D2\u5165\u751F\u6210 ID \u5931\u8D25\uFF1Aids[${C}] \u4E0D\u662F number (table: ${Q})`);return b.buildInsertRow({idMode:"timeId",data:L,id:w,now:X})})}let V=Q0.assertBatchInsertRowsConsistent(Y,{table:Q}),U=this.createSqlBuilder(),{sql:O,params:_}=U.toInsertSql(Q,Y);try{let A=await this.executeRun(O,_);if(this.idMode==="autoId"){let L=T$(A.data?.lastInsertRowid);if(L<=0)throw Error(`\u6279\u91CF\u63D2\u5165\u5931\u8D25\uFF1AautoId \u6A21\u5F0F\u4E0B\u65E0\u6CD5\u83B7\u53D6 lastInsertRowid (table: ${$})`);let C=[];for(let w=0;w<Z.length;w++)C.push(L+w);return{data:C,sql:A.sql}}return{data:G,sql:A.sql}}catch(A){throw I.error({err:A,table:$,snakeTable:Q,count:Z.length,fields:V,msg:"\u6279\u91CF\u63D2\u5165\u5931\u8D25"}),new T({kind:"runtime",message:"\u6279\u91CF\u63D2\u5165\u5931\u8D25",logged:!0,cause:A,meta:{subsystem:"sql",operation:"insBatch",table:$,snakeTable:Q,count:Z.length,fields:V}})}}async delForceBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Q=l$.toDeleteInSql({table:J,idField:"id",ids:Z,quoteIdent:r$}),X=await this.executeRun(Q.sql,Q.params);return{data:T$(X.data?.changes),sql:X.sql}}async updBatch($,Z){if(Z.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let J=c($),Q=Date.now(),X=[],G=new Set;for(let _ of Z){let A=b.buildPartialUpdateData({data:_.data,allowState:!0});for(let L of Object.keys(A))G.add(L);X.push({id:_.id,data:A})}let Y=Array.from(G).sort();if(Y.length===0)return{data:0,sql:{sql:"",params:[],duration:0}};let V=l$.toUpdateCaseByIdSql({table:J,idField:"id",rows:X,fields:Y,quoteIdent:r$,updatedAtField:"updated_at",updatedAtValue:Q,stateField:"state",stateGtZero:!0}),U=await this.executeRun(V.sql,V.params);return{data:T$(U.data?.changes),sql:U.sql}}async updData($){let{table:Z,data:J,where:Q}=$,X=D$(Q,{excludeValues:[null,void 0]}),G=c(Z),Y=b.whereKeysToSnake(X),V=b.buildUpdateRow({data:J,now:Date.now(),allowState:!0}),U=b.addDefaultStateFilter(Y,G,!1),O=this.createSqlBuilder().where(U),{sql:_,params:A}=O.toUpdateSql(G,V),L=await this.executeRun(_,A);return{data:T$(L.data?.changes),sql:L.sql}}async delData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:0,deleted_at:Date.now()},where:J})}async delForce($){let{table:Z,where:J}=$,Q=c(Z),X=D$(J,{excludeValues:[null,void 0]}),G=b.whereKeysToSnake(X),Y=this.createSqlBuilder().where(G),{sql:V,params:U}=Y.toDeleteSql(Q),O=await this.executeRun(V,U);return{data:T$(O.data?.changes),sql:O.sql}}async disableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:2},where:J})}async enableData($){let{table:Z,where:J}=$;return await this.updData({table:Z,data:{state:1},where:J})}async trans($){if(this.isTransaction)return await $(this);let Z=this.sql;if(!Z)throw Error("\u6570\u636E\u5E93\u8FDE\u63A5\u672A\u521D\u59CB\u5316");if(!dW(Z))throw Error("\u5F53\u524D SQL \u5BA2\u6237\u7AEF\u4E0D\u652F\u6301\u4E8B\u52A1 begin() \u65B9\u6CD5");return await Z.begin(async(J)=>{let Q=new pZ({redis:this.redis,dbName:this.dbName,sql:J,idMode:this.idMode});return await $(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 J=c(Z),Q=D$($.where||{},{excludeValues:[null,void 0]}),X=b.whereKeysToSnake(Q),G=b.addDefaultStateFilter(X,J,!1),Y=this.createSqlBuilder().selectRaw("COUNT(1) as cnt").from(J).where(G).limit(1),{sql:V,params:U}=Y.toSelectSql(),O=await this.executeSelect(V,U);return{data:(O.data?.[0]?.cnt||0)>0,sql:O.sql}}async getFieldValue($){let Z=$.field;if(Array.isArray($.joins)&&$.joins.length>0)throw Error("getFieldValue \u4E0D\u652F\u6301 joins\uFF08\u8BF7\u4F7F\u7528 getOne/getList \u5E76\u81EA\u884C\u53D6\u5B57\u6BB5\uFF09");let J=typeof $.table==="string"?$.table.trim():"";if(!J)throw Error("getFieldValue.table \u4E0D\u80FD\u4E3A\u7A7A");if(J.includes(" "))throw Error(`getFieldValue \u4E0D\u652F\u6301\u522B\u540D\u8868\u5199\u6CD5\uFF08table: ${J}\uFF09`);if(J.includes("."))throw Error(`getFieldValue \u4E0D\u652F\u6301 schema.table \u5199\u6CD5\uFF08table: ${J}\uFF09`);if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(Z))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}\uFF0C\u53EA\u5141\u8BB8\u5B57\u6BCD\u3001\u6570\u5B57\u548C\u4E0B\u5212\u7EBF`);let Q={table:$.table};if($.where!==void 0)Q.where=$.where;if($.joins!==void 0)Q.joins=$.joins;if($.orderBy!==void 0)Q.orderBy=$.orderBy;if($.page!==void 0)Q.page=$.page;if($.limit!==void 0)Q.limit=$.limit;Q.fields=[Z];let X=await this.getOne(Q),G=X.data;if(!m(G))return{data:null,sql:X.sql};if(Object.hasOwn(G,Z))return{data:G[Z],sql:X.sql};let Y=Z.replace(/_([a-z])/g,(U,O)=>O.toUpperCase());if(Y!==Z&&Object.hasOwn(G,Y))return{data:G[Y],sql:X.sql};let V=Z.replace(/[A-Z]/g,(U)=>`_${U.toLowerCase()}`);if(V!==Z&&Object.hasOwn(G,V))return{data:G[V],sql:X.sql};return{data:null,sql:X.sql}}async increment($,Z,J,Q=1){let X=c($),G=c(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(G))throw Error(`\u65E0\u6548\u7684\u5B57\u6BB5\u540D: ${Z}`);if(typeof Q!=="number"||isNaN(Q))throw Error(`\u81EA\u589E\u503C\u5FC5\u987B\u662F\u6709\u6548\u7684\u6570\u5B57 (table: ${$}, field: ${Z}, value: ${Q})`);let Y=D$(J,{excludeValues:[null,void 0]}),V=b.whereKeysToSnake(Y),U=b.addDefaultStateFilter(V,X,!1),O=this.createSqlBuilder().where(U),{sql:_,params:A}=O.getWhereConditions(),L=r$(X),C=r$(G),w=_?`UPDATE ${L} SET ${C} = ${C} + ? WHERE ${_}`:`UPDATE ${L} SET ${C} = ${C} + ?`,S=await this.executeRun(w,[Q,...A]);return{data:T$(S.data?.changes),sql:S.sql}}async decrement($,Z,J,Q=1){return await this.increment($,Z,J,-Q)}}$0();var nW={name:"db",enable:!0,deps:["logger","redis"],async handler($){let Z=$.config?.nodeEnv,J=String($.config?.db?.database||"");if(!J)throw new T({message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25\uFF1Abefly.config.db.database \u7F3A\u5931",kind:"validation"});if(!$.redis)throw new T({message:"Redis \u672A\u521D\u59CB\u5316",kind:"validation"});try{let Q=K$.getSql(),G=$.config?.db?.idMode==="autoId"?"autoId":"timeId";return new pZ({redis:$.redis,dbName:J,sql:Q,idMode:G})}catch(Q){throw I.error({env:Z,err:Q,msg:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:"\u6570\u636E\u5E93\u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Q,meta:{subsystem:"db",operation:"init"}})}}},xG=nW;var h$=gH(BH(),1);class gQ{config;constructor($={}){this.config={secret:$.secret||"befly-secret",expiresIn:$.expiresIn||"7d",algorithm:$.algorithm||"HS256"}}sign($,Z={}){let J=Z.secret||this.config.secret,Q=Z.algorithm||this.config.algorithm||"HS256",X={key:J,algorithm:Q,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 h$.createSigner(X)($)}verify($,Z={}){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");let J=Z.secret||this.config.secret,Q=this.config.algorithm||"HS256",X=Z.algorithms?Z.algorithms:[Q],G={key:J,algorithms:X,cache:!0,cacheTTL:600000};if(Z.issuer!==void 0)G.allowedIss=Z.issuer;if(Z.audience!==void 0)G.allowedAud=Z.audience;if(Z.subject!==void 0)G.allowedSub=Z.subject;if(typeof Z.ignoreExpiration==="boolean")G.ignoreExpiration=Z.ignoreExpiration;if(typeof Z.ignoreNotBefore==="boolean")G.ignoreNotBefore=Z.ignoreNotBefore;return h$.createVerifier(G)($)}decode($,Z=!1){if(!$||typeof $!=="string")throw Error("Token\u5FC5\u987B\u662F\u975E\u7A7A\u5B57\u7B26\u4E32");if(Z){let X=h$.createDecoder({complete:!0})($);return{header:X.header,payload:X.payload,signature:X.signature}}return h$.createDecoder()($)}}var A6={name:"jwt",enable:!0,deps:[],handler:($)=>{return new gQ($.config?$.config.auth:void 0)}},PH=A6;$0();var O6={name:"logger",enable:!0,deps:[],async handler($){if($.config&&$.config.logger)I.configure($.config.logger);return I}},CH=O6;$0();$0();class yQ{client;prefix;slowThresholdMs=500;constructor($=""){let Z=K$.getRedis();if(!Z)throw Error("Redis \u5BA2\u6237\u7AEF\u672A\u521D\u59CB\u5316\uFF0C\u8BF7\u5148\u8C03\u7528 Connect.connectRedis()");this.client=Z,this.prefix=$?`${$}:`:""}logSlow($,Z,J,Q={}){if(J<=this.slowThresholdMs)return;I.warn({subsystem:"redis",event:"slow",duration:J,cmd:$,key:Z,extra:Q,msg:"\uD83D\uDC0C Redis \u6162\u64CD\u4F5C"})}async setObject($,Z,J=null){try{let Q=JSON.stringify(Z),X=`${this.prefix}${$}`,G=Date.now();if(J){let U=await this.client.setex(X,J,Q),O=Date.now()-G;return this.logSlow("SETEX",X,O,{ttl:J}),U}let Y=await this.client.set(X,Q),V=Date.now()-G;return this.logSlow("SET",X,V),Y}catch(Q){return I.error({err:Q,msg:"Redis setObject \u9519\u8BEF"}),null}}async getObject($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.get(Z),X=Date.now()-J;return this.logSlow("GET",Z,X),Q?JSON.parse(Q):null}catch(Z){return I.error({err:Z,msg:"Redis getObject \u9519\u8BEF"}),null}}async delObject($){try{let Z=`${this.prefix}${$}`,J=Date.now();await this.client.del(Z);let Q=Date.now()-J;this.logSlow("DEL",Z,Q)}catch(Z){I.error({err:Z,msg:"Redis delObject \u9519\u8BEF"})}}async genTimeID(){let $=Date.now(),Z=`${this.prefix}time_id:${$}`,J=Date.now(),Q=await this.client.incr(Z);if(Q===1)await this.client.expire(Z,1);let X=Date.now()-J;this.logSlow("INCR",Z,X,{expireSeconds:1});let G=100+($%900+Q-1)%900;return Number(`${$}${G}`)}async setString($,Z,J=null){try{let Q=`${this.prefix}${$}`,X=Date.now();if(J){let V=await this.client.setex(Q,J,Z),U=Date.now()-X;return this.logSlow("SETEX",Q,U,{ttl:J}),V}let G=await this.client.set(Q,Z),Y=Date.now()-X;return this.logSlow("SET",Q,Y),G}catch(Q){return I.error({err:Q,msg:"Redis setString \u9519\u8BEF"}),null}}async getString($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.get(Z),X=Date.now()-J;return this.logSlow("GET",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis getString \u9519\u8BEF"}),null}}async exists($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.exists(Z),X=Date.now()-J;return this.logSlow("EXISTS",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis exists \u9519\u8BEF"}),!1}}async incr($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.incr(Z),X=Date.now()-J;return this.logSlow("INCR",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis incr \u9519\u8BEF"}),0}}async incrWithExpire($,Z){try{let J=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.incr(J);if(X===1)await this.client.expire(J,Z);let G=Date.now()-Q;return this.logSlow("INCR",J,G,{expireSeconds:Z}),X}catch(J){return I.error({err:J,msg:"Redis incrWithExpire \u9519\u8BEF"}),0}}async expire($,Z){try{let J=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.expire(J,Z),G=Date.now()-Q;return this.logSlow("EXPIRE",J,G,{seconds:Z}),X}catch(J){return I.error({err:J,msg:"Redis expire \u9519\u8BEF"}),0}}async ttl($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.ttl(Z),X=Date.now()-J;return this.logSlow("TTL",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis ttl \u9519\u8BEF"}),-1}}async ttlBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.ttl(J)))}catch(Z){return I.error({err:Z,msg:"Redis ttlBatch \u9519\u8BEF"}),$.map(()=>-1)}}async sadd($,Z){try{if(Z.length===0)return 0;let J=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.sadd(J,...Z),G=Date.now()-Q;return this.logSlow("SADD",J,G,{membersCount:Z.length}),X}catch(J){return I.error({err:J,msg:"Redis sadd \u9519\u8BEF"}),0}}async sismember($,Z){try{let J=`${this.prefix}${$}`,Q=Date.now(),X=await this.client.sismember(J,Z),G=Date.now()-Q;return this.logSlow("SISMEMBER",J,G),X}catch(J){return I.error({err:J,msg:"Redis sismember \u9519\u8BEF"}),!1}}async scard($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.scard(Z),X=Date.now()-J;return this.logSlow("SCARD",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis scard \u9519\u8BEF"}),0}}async smembers($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.smembers(Z),X=Date.now()-J;return this.logSlow("SMEMBERS",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis smembers \u9519\u8BEF"}),[]}}async saddBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.sadd(J.key,J.members)))).reduce((J,Q)=>J+Q,0)}catch(Z){return I.error({err:Z,msg:"Redis saddBatch \u9519\u8BEF"}),0}}async sismemberBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.sismember(Z.key,Z.member)))}catch(Z){return I.error({err:Z,msg:"Redis sismemberBatch \u9519\u8BEF"}),$.map(()=>!1)}}async del($){try{let Z=`${this.prefix}${$}`,J=Date.now(),Q=await this.client.del(Z),X=Date.now()-J;return this.logSlow("DEL",Z,X),Q}catch(Z){return I.error({err:Z,msg:"Redis del \u9519\u8BEF"}),0}}async delBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>{let Q=`${this.prefix}${J}`;return this.client.del(Q)}))).reduce((J,Q)=>J+Q,0)}catch(Z){return I.error({err:Z,msg:"Redis delBatch \u9519\u8BEF"}),0}}async setBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.setObject(J.key,J.value,J.ttl??null)))).filter((J)=>J!==null).length}catch(Z){return I.error({err:Z,msg:"Redis setBatch \u9519\u8BEF"}),0}}async getBatch($){if($.length===0)return[];try{return await Promise.all($.map((J)=>this.getObject(J)))}catch(Z){return I.error({err:Z,msg:"Redis getBatch \u9519\u8BEF"}),$.map(()=>null)}}async existsBatch($){if($.length===0)return[];try{return await Promise.all($.map((Z)=>this.exists(Z)))}catch(Z){return I.error({err:Z,msg:"Redis existsBatch \u9519\u8BEF"}),$.map(()=>!1)}}async expireBatch($){if($.length===0)return 0;try{return(await Promise.all($.map((J)=>this.expire(J.key,J.seconds)))).filter((J)=>J>0).length}catch(Z){return I.error({err:Z,msg:"Redis expireBatch \u9519\u8BEF"}),0}}async ping(){try{let $=Date.now(),Z=await this.client.ping(),J=Date.now()-$;return this.logSlow("PING","(no-key)",J),Z}catch($){throw I.error({err:$,msg:"Redis ping \u9519\u8BEF"}),new T({kind:"runtime",message:"Redis ping \u9519\u8BEF",logged:!0,cause:$,meta:{subsystem:"redis",operation:"ping"}})}}}var _6={name:"redis",enable:!0,deps:["logger"],async handler($){let Z=$.config?.nodeEnv,J=$.config?.redis?.prefix;try{return K$.getRedis(),new yQ(J)}catch(Q){throw I.error({env:Z,err:Q,msg:"Redis \u521D\u59CB\u5316\u5931\u8D25"}),new T({kind:"runtime",message:"Redis \u521D\u59CB\u5316\u5931\u8D25",logged:!0,cause:Q,meta:{subsystem:"redis",operation:"init"}})}}},wH=_6;function F6($,Z={},J={}){return{code:0,msg:$,data:Z,...J}}function K6($,Z=null,J={}){return{code:1,msg:$,data:Z,...J}}function z6($,Z,J={}){let{status:Q=200,contentType:X,headers:G={}}=J,Y=X,V;if(typeof Z==="string"){if(V=Z,!Y)Y=Z.trim().startsWith("<")?"application/xml":"text/plain"}else V=JSON.stringify(Z),Y=Y||"application/json";let U={...$.corsHeaders,"Content-Type":Y,...G};return new Response(V,{status:Q,headers:U})}var R6={name:"tool",enable:!0,deps:[],handler:()=>{return{Yes:F6,No:K6,Raw:z6}}},SH=R6;u0();function EH($,Z){let J=m(Z)?Z:{},Q=typeof J.name==="string"?String(J.name):"",X=m(Z)?Object.keys(Z):[],G=J.deps,Y=Array.isArray(G)?G.filter((U)=>typeof U==="string"):[];return{source:"core",type:$,sourceName:"\u6838\u5FC3",filePath:`core:${$}:${Q}`,relativePath:Q,fileName:Q,moduleName:Q,addonName:"",fileBaseName:Q,fileDir:"(builtin)",name:Q,enable:J.enable,deps:Y,handler:J.handler??null,customKeys:X}}function TH(){let $=[],Z=[CH,wH,xG,DG,SH,NG,PH,kG];for(let J of Z)$.push(EH("plugin",J));return $}function DH(){let $=[],Z=[FG,KG,CG,TG,wG];for(let J of Z)$.push(EH("hook",J));return $}w$();EZ();u0();import{existsSync as q6}from"fs";function I6($){let Z=$.split("/").filter(Boolean),J=Z.indexOf("@befly-addon");if(J<0)return null;let Q=Z[J+1];if(typeof Q!=="string"||Q.trim()==="")return null;return Q}async function R$($,Z,J,Q){if(!q6($))return[];let X=x$($),G=new Bun.Glob(Q),Y=[];try{let V=await G.scan({cwd:$,onlyFiles:!0,absolute:!0,followSymlinks:!0});for await(let U of V){if(U.endsWith(".d.ts"))continue;let O=x$(U),_=MZ(O).name,A=cJ(X,O),L=MZ(A),C=L.dir?o(L.dir,L.name):L.name;if(_.startsWith("_"))continue;if(C.split("/").some((v)=>v.startsWith("_")))continue;let w=await C$(O,{}),S=L$(_),k="",N="";if(Z==="core")k="",N=_;else if(Z==="app")N=`app_${S}`;else{let v=I6(O);if(!v)throw Error(`scanFiles addon moduleName \u89E3\u6790\u5931\u8D25\uFF1A\u672A\u627E\u5230 @befly-addon/<addon>/ \u6BB5\u843D\uFF1A${O}`);k=v,N=`addon_${L$(k)}_${S}`}let E={source:Z,type:J,sourceName:Z==="core"?"\u6838\u5FC3":Z==="addon"?"\u7EC4\u4EF6":"\u9879\u76EE",filePath:O,relativePath:C,fileName:_,moduleName:N,addonName:k,fileBaseName:MZ(O).base,fileDir:$,customKeys:m(w)?Object.keys(w):[]};if(J==="table"){E.content=m(w)?w:{},Y.push(E);continue}if(J==="api")E.auth=!0,E.rawBody=!1,E.method="POST",E.fields={},E.required=[];if(J==="plugin"||J==="hook")E.deps=[],E.name="",E.handler=null;if(JX(w,(v,h)=>{E[h]=v}),J==="api")E.routePrefix=Z==="app"?"/app":`/addon/${k}`,E.path=`/api${E.routePrefix}/${C}`;Y.push(E)}}catch(V){let U=Error(`scanFiles failed: source=${Z} type=${J} dir=${X} pattern=${Q}`);throw U.cause=V,U}return Y}var NH=async()=>{let $=[],Z=[],J=[],Q=[],X=await _G();Q.push(...await R$(o(s0,"tables"),"app","table","*.json"));for(let G of X)Q.push(...await R$(o(G.rootDir,"tables"),"addon","table","*.json"));Z.push(...TH()),Z.push(...await R$(o(s0,"plugins"),"app","plugin","*.{ts,js}"));for(let G of X)Z.push(...await R$(o(G.rootDir,"plugins"),"addon","plugin","*.{ts,js}"));J.push(...DH()),J.push(...await R$(o(s0,"hooks"),"app","hook","*.{ts,js}"));for(let G of X)J.push(...await R$(o(G.rootDir,"hooks"),"addon","hook","*.{ts,js}"));$.push(...await R$(o(s0,"apis"),"app","api","**/*.{ts,js}"));for(let G of X)$.push(...await R$(o(G.rootDir,"apis"),"addon","api","**/*.{ts,js}"));return{hooks:J,plugins:Z,apis:$,tables:Q,addons:X}};class j6{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 T({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 IX($.NODE_ENV||"development"),await LX(this.config),this.context.config=this.config,this.context.env=$;let{apis:J,tables:Q,plugins:X,hooks:G,addons:Y}=await NH();this.context.addons=Y,await jX(J),await eX(Q,this.config),await fX(X),await PX(G);let V=await vX(Y);await K$.connect({db:this.config.db||{},redis:this.config.redis||{}}),this.plugins=await JG(X,this.context),this.assertStartContextReady(),await new D(this.context).run(Q),await YG(this.context,J),await VG(this.context,V);let U=this.config.devEmail,O=this.config.devPassword;if(typeof U==="string"&&U.length>0&&typeof O==="string"&&O.length>0)await WG(this.context,{devEmail:U,devPassword:O});else I.debug("\u8DF3\u8FC7 syncDev\uFF1A\u672A\u914D\u7F6E devEmail/devPassword");await HG(this.context),this.hooks=await ZG(G),this.apis=await $G(J);let _=XG(this.apis,this.hooks,this.context),A=GG(this.config.cors),L=typeof this.config.appPort==="number"?this.config.appPort:3000,C=typeof this.config.appHost==="string"&&this.config.appHost.length>0?this.config.appHost:"0.0.0.0",w=Bun.serve({port:L,hostname:C,development:this.config.nodeEnv==="development",idleTimeout:30,fetch:async(v,h)=>{let f=new URL(v.url);if(f.pathname==="/")return Response.json({code:0,msg:`${this.config.appName} \u63A5\u53E3\u670D\u52A1\u5DF2\u542F\u52A8`});if(f.pathname.startsWith("/api/"))return _(v,h);return A(v)},error:(v)=>{if(I.error({err:v,msg:"\u670D\u52A1\u542F\u52A8\u65F6\u53D1\u751F\u9519\u8BEF"}),this.config.nodeEnv==="development")return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF",error:v.message,stack:v.stack},{status:200});return Response.json({code:1,msg:"\u5185\u90E8\u670D\u52A1\u5668\u9519\u8BEF"},{status:200})}}),S=AG(Z),k=OG($),N=k.role==="primary"?"\u4E3B\u8FDB\u7A0B":`\u5DE5\u4F5C\u8FDB\u7A0B #${k.instanceId}`,E=k.env==="standalone"?"":` [${k.env}]`;return I.info(`${this.config.appName} \u542F\u52A8\u6210\u529F! (${N}${E})`),I.info(`\u670D\u52A1\u5668\u542F\u52A8\u8017\u65F6: ${S}`),I.info(`\u670D\u52A1\u5668\u76D1\u542C\u5730\u5740: ${w.url}`),w}catch(Z){let J=Z instanceof Error?Z.message:String(Z),Q="runtime",X=!1,G=!1,Y=!1;if(j$(Z))Q=Z.kind,X=Z.logged===!0,G=Z.noLog===!0,Y=Z.multiline===!0;else{let U=Z;if(U&&U.__syncTableLogged===!0)X=!0;if(U&&U.__syncTableNoLog===!0)Q="policy";if(U&&U.__coreLogged===!0)X=!0;if(U&&U.__coreNoLog===!0)G=!0}let V=(U,O,_)=>{let L=String(_||"").split(`
|
|
19
|
+
`),C=L.length>0?String(L[0]||""):"",w=`[${U}] \u542F\u52A8\u5931\u8D25: ${O}: ${C}`;try{process.stderr.write(`${w}
|
|
20
|
+
`);for(let S=1;S<L.length;S=S+1)process.stderr.write(`${L[S]}
|
|
21
|
+
`)}catch{}};if(!X&&Y){let U=String(this.config?.appName||"\u9879\u76EE"),O=Z instanceof Error&&Z.name?Z.name:"Error";I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Q,errorMessage:J},{truncate:!1,console:!1}),V(U,O,J)}else if(X)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25\uFF08\u4E0B\u5C42\u5DF2\u8BB0\u5F55\uFF09",errorKind:Q,errorMessage:J},{truncate:!1});else if(G)I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Q,errorMessage:J},{truncate:!1});else I.error({msg:"\u9879\u76EE\u542F\u52A8\u5931\u8D25",errorKind:Q,errorMessage:J,err:Z},{truncate:!1});try{await I.flush()}catch{}try{await I.shutdown()}catch{}if(j$(Z))throw Z.logged=!0,Z;throw new T({kind:Q,message:J,logged:!0,noLog:G,meta:{subsystem:"start",operation:"start"},cause:Z})}}}export{j6 as Befly};
|