@isdk/ai-tool 0.0.8 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.cn.md +49 -15
- package/README.md +245 -2
- package/dist/chunk-VNNDL7E2.mjs +1 -0
- package/dist/funcs.js +1 -1
- package/dist/funcs.mjs +1 -1
- package/dist/index.d.mts +17 -3
- package/dist/index.d.ts +17 -3
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/docs/README.md +245 -2
- package/docs/classes/AbortError.md +8 -8
- package/docs/classes/AlreadyExistsError.md +8 -8
- package/docs/classes/BaseError.md +8 -8
- package/docs/classes/CancelableAbility.md +20 -20
- package/docs/classes/ClientTools.md +53 -53
- package/docs/classes/CommonError.md +8 -8
- package/docs/classes/EventClient.md +75 -75
- package/docs/classes/EventServer.md +73 -73
- package/docs/classes/EventToolFunc.md +43 -43
- package/docs/classes/FStringPromptTemplate.md +18 -18
- package/docs/classes/FewShotPromptTemplate.md +22 -22
- package/docs/classes/GolangPromptTemplate.md +18 -18
- package/docs/classes/HFEnvironment.md +9 -9
- package/docs/classes/HFInterpreter.md +63 -17
- package/docs/classes/HFTemplate.md +4 -4
- package/docs/classes/HfPromptTemplate.md +18 -18
- package/docs/classes/IntSet.md +12 -12
- package/docs/classes/NotFoundError.md +8 -8
- package/docs/classes/NotImplementationError.md +8 -8
- package/docs/classes/PromptExampleSelector.md +8 -8
- package/docs/classes/PromptTemplate.md +17 -17
- package/docs/classes/ReadableStreamError.md +8 -8
- package/docs/classes/ResClientTools.md +59 -59
- package/docs/classes/ResServerTools.md +57 -57
- package/docs/classes/SSEChannel.md +15 -15
- package/docs/classes/Semaphore.md +14 -14
- package/docs/classes/ServerTools.md +50 -50
- package/docs/classes/TaskAbortController.md +7 -7
- package/docs/classes/ToolFunc.md +40 -40
- package/docs/enums/AsyncFeatureBits.md +3 -3
- package/docs/enums/AsyncFeatures.md +3 -3
- package/docs/enums/ErrorCode.md +21 -21
- package/docs/enums/XXHashAlgorithm.md +2 -2
- package/docs/interfaces/AIChatAssistantMessageParam.md +6 -6
- package/docs/interfaces/AIChatContentPartImage.md +2 -2
- package/docs/interfaces/AIChatContentPartText.md +2 -2
- package/docs/interfaces/AIChatMessageParamBase.md +1 -1
- package/docs/interfaces/AIChatMessageToolCall.md +3 -3
- package/docs/interfaces/AIChatSystemMessageParam.md +3 -3
- package/docs/interfaces/AIChatToolMessageParam.md +4 -4
- package/docs/interfaces/AIChatUserMessageParam.md +7 -7
- package/docs/interfaces/AIResult.md +5 -5
- package/docs/interfaces/AIStreamParser.md +1 -1
- package/docs/interfaces/AIStreamParserOptions.md +1 -1
- package/docs/interfaces/BaseFunc.md +7 -7
- package/docs/interfaces/BaseFuncItem.md +6 -6
- package/docs/interfaces/CancelableAbilityOptions.md +2 -2
- package/docs/interfaces/ClientFuncItem.md +10 -10
- package/docs/interfaces/DotenvExpandOptions.md +3 -3
- package/docs/interfaces/DotenvExpandOutput.md +2 -2
- package/docs/interfaces/EventClientFuncParams.md +4 -4
- package/docs/interfaces/EventServerFuncParams.md +5 -5
- package/docs/interfaces/FewShotPromptTemplateOptions.md +11 -11
- package/docs/interfaces/FuncItem.md +7 -7
- package/docs/interfaces/FuncParam.md +6 -6
- package/docs/interfaces/PromptExampleSelectorOptions.md +2 -2
- package/docs/interfaces/PromptTemplateOptions.md +6 -6
- package/docs/interfaces/RemoteFuncItem.md +10 -10
- package/docs/interfaces/ResClientFuncParams.md +2 -2
- package/docs/interfaces/ResServerFuncParams.md +5 -5
- package/docs/interfaces/SanitizeFilenameOptions.md +2 -2
- package/docs/interfaces/ServerFuncItem.md +11 -11
- package/docs/interfaces/ServerFuncParams.md +2 -2
- package/docs/interfaces/StreamCallbacksAndOptions.md +4 -4
- package/docs/interfaces/TaskPromise.md +1 -1
- package/docs/interfaces/ToolFuncPackage.md +3 -3
- package/docs/modules.md +127 -124
- package/package.json +1 -1
- package/dist/chunk-B7IE5ATQ.mjs +0 -1
package/dist/funcs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t,e=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,a=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},c=(t,e,i,a)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of s(e))o.call(t,c)||c===i||r(t,c,{get:()=>e[c],enumerable:!(a=n(e,c))||a.enumerable});return t},u=(t,e,r)=>(c(t,e,"default"),r&&c(r,e,"default")),h=(t,n,s)=>(s=null!=t?e(i(t)):{},c(!n&&t&&t.__esModule?s:r(s,"default",{value:t,enumerable:!0}),t)),l={};a(l,{EventClient:()=>Bn,EventServer:()=>Jn,EventToolFunc:()=>An,_lrucache:()=>Nn,createLRUCache:()=>Fn,event:()=>Cn,eventClient:()=>Un,eventServer:()=>Wn,lrucache:()=>In,registerCoreTools:()=>Hn}),module.exports=(t=l,c(r({},"__esModule",{value:!0}),t));var f=require("events-ex"),p=require("property-manager"),w=require("util-ex"),d=require("abstract-error"),m=(t=>(t[t.OK=200]="OK",t[t.Accepted=202]="Accepted",t[t.BadRequest=400]="BadRequest",t[t.InvalidArgument=400]="InvalidArgument",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Corruption=409]="Corruption",t[t.TooManyRequests=429]="TooManyRequests",t[t.Aborted=499]="Aborted",t[t.InternalError=500]="InternalError",t[t.NotImplemented=501]="NotImplemented",t[t.NotSupported=501]="NotSupported",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t))(m||{}),y=500,b=404,g=409,v=499,x=class t extends d.AbstractError{static createErrorClass(e,r,n=t){return(0,d.createErrorClass)(e,r,n)}constructor(t,e,r){super(t,e);const n=this.constructor;null!=e?this.code=e:n.code?this.code=n.code:this.code=n.name,r?"string"==typeof r?this.name=r:Object.assign(this,r):"string"==typeof this.code?this.name=this.code:this.name=n.name}toJSON(){const t={name:this.name,code:this.code,data:this.data,caller:this.caller,error:this.message,stack:this.stack};return Object.keys(t).forEach((e=>void 0===t[e]&&delete t[e])),t}fromJSON(e){const r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.message=e.error,r.stack=e.stack,r}},E=class extends x{constructor(t,e,r=y){super(t,r,e)}},S=class extends E{constructor(t,e){t||(t="Not Implementation."),super(t,e,501)}};E[501]=S;var $=class extends E{static{this.code=b}constructor(t,e){super(`Could not find ${t}.`,e,b),this.data={what:t}}};E[404]=$;var k=class extends E{static{this.code=g}constructor(t,e){super(`The ${t} already exists.`,e,g),this.data={what:t}}};E[409]=k;var O=class extends E{static{this.code=v}constructor(t,e){e||(e="AbortError"),super(t?`The operation was aborted for ${t}.`:"The operation was aborted.",e,v),t&&(this.data={what:t})}};function T(t,e,r=y){const n=new(E[r]||E)(t,e,r);return"number"!=typeof n.code&&(n.code=r),n}function A(t,e,r=y){throw T(t,e,r)}E[499]=O;var C={};a(C,{AIChatRoles:()=>L,AIMessageTypes:()=>_,AIStream:()=>_e,AITextGenerationFinishReasons:()=>V,AbortError:()=>O,AbortErrorCode:()=>v,ActionNames:()=>F,AlreadyExistsError:()=>k,AlreadyExistsErrorCode:()=>g,BaseError:()=>x,CancelableAbility:()=>xn,CommonError:()=>E,ConfigFile:()=>_r.Config,DefaultAsyncSemaphoreCapacity:()=>hn,ErrorCode:()=>m,EventBusName:()=>Te,EventName:()=>Oe,FStringPromptTemplate:()=>se,FewShotPromptTemplate:()=>ue,FilenameReservedRegex:()=>hr,GolangPromptTemplate:()=>ae,HFBuiltins:()=>Ht,HFEnvironment:()=>Gt,HFInterpreter:()=>zt,HFTemplate:()=>Kt,HfPromptTemplate:()=>Qt,IntSet:()=>cn,InternalErrorCode:()=>y,NotFoundError:()=>$,NotFoundErrorCode:()=>b,NotImplementationError:()=>S,NotImplementedErrorCode:()=>501,PASSING_SCORE:()=>N,PromptExampleSelector:()=>Z,PromptTemplate:()=>G,PromptTemplateTypes:()=>J,PromptTypes:()=>D,RStreamErrCode:()=>Ie,RateLimit:()=>yn,ReadableStreamError:()=>Re,RemoteToolFuncSchema:()=>I,ResponseRStreamErrCode:()=>Me,SSEChannel:()=>Ne,SSEChannelAlreadyClosedErrCode:()=>je,Semaphore:()=>mn,TaskAbortController:()=>vn,WindowsReservedNameRegex:()=>lr,XXHashAlgorithm:()=>or,backendEventable:()=>Ae,base32768:()=>tr,createAbilityInjector:()=>j.createAbilityInjector,createCallbacksTransformer:()=>ze,createEmptyReadableStream:()=>qe,createEndWithRepetitionDetector:()=>Nr,createError:()=>T,createEventStreamTransformer:()=>Ue,createHfValueFunc:()=>te,dateToText:()=>U,defaultTemplateFormat:()=>H,expandEnv:()=>pe,expandObjEnv:()=>we,extNameLevel:()=>Sr,filenameReservedRegex:()=>mr,formatISO:()=>R.formatISO,getAllEnumKeys:()=>Or,getConfigFileNames:()=>Kr,getConfigs:()=>Xr,getKeysPath:()=>Cr,getMultiLevelExtname:()=>Er,getRealFilepath:()=>Br,getResponseErrorReadableStream:()=>Pe,hfParse:()=>At,hfTokenize:()=>it,interpolateEnv:()=>fe,interpolateFString:()=>re,interpolateGolangTemplate:()=>oe,isModelNameMatched:()=>kr,isValidFilename:()=>br,isValidFilepath:()=>gr,isWebStream:()=>Fe,jsonFilterToWhere:()=>rn,jsonToMarkdownStr:()=>an,loadFileFromPaths:()=>Mr,loadTextFromPaths:()=>Pr,makeToolFuncCancelable:()=>Sn,matchUrlProtocol:()=>nn,messagesToText:()=>z,mimeType:()=>Dr.mimeType,paramsSizeToScaleStr:()=>sn,parseDateFormat:()=>M.parse,parseFString:()=>ee,parseISO:()=>R.parseISO,parseJsJson:()=>Ar,parseYaml:()=>Gr,reControlCharsRegex:()=>yr,readFilenamesRecursiveSync:()=>qr,readableFromAsyncIterable:()=>Le,registerYamlTag:()=>Hr,sanitizeFilename:()=>vr,sanitizeFilepath:()=>xr,saveConfigFile:()=>Zr,scaleStrToParamsSize:()=>on,sortedValues:()=>ce,splitSentence:()=>Ee,stringifyYaml:()=>Jr.stringify,textToDate:()=>B,throwError:()=>A,toDate:()=>R.toDate,toDateTime:()=>q,trimStartOfStreamHelper:()=>Ve,truncTo:()=>Se,uuid:()=>Ke,uuidNIL:()=>He.NIL,uuidParse:()=>He.parse,uuidStringify:()=>He.stringify,uuidValidate:()=>He.validate,uuidVersion:()=>He.version,uuidv1:()=>He.v1,uuidv4:()=>He.v4,uuidv5:()=>He.v5,wait:()=>$e,xxhash:()=>ar,xxhash32:()=>sr,xxhash64:()=>ir,xxhashAsStr:()=>cr});var j=require("custom-ability"),N=.618,F=["get","post","put","delete","patch","list","res"],I={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,r,n,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"},stream:{type:"boolean"}},M=require("date-fns"),R=require("date-fns"),P="MMMM d, y 'at' h:m:s b 'GMT'x";function q(t){let e;try{"string"==typeof t?e=(0,M.parseISO)(t):"number"==typeof t?e=new Date(t):t instanceof Date&&(e=t)}catch(t){console.error(t)}return e}function B(t,e=P){return(0,M.parse)(t,e,new Date)}function U(t,e=P){return(0,M.format)(t,e)}var V=["stop","length","content-filter","tool-calls","abort","error","other",null],_=["human","ai","generic","system","tool"],L=["user","assistant","system","tool","tool_calls"];function z(t){let e="";for(const r of t)if(r.content){e+=r.role.toLowerCase()+":";let t=r.createdAt;if(t){const r=q(t);r&&(e+=" ["+U(r)+"]")}e+=" "+r.content+"\n"}return e}var D=["chat","char","plan"],J=["internal","hf","fill"],W=require("custom-factory");var H="default",G=class t extends W.BaseFactory{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const r=e.templateFormat||H,n=t.get(r);return n.isTemplate!==t.isTemplate&&n.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,r){"string"==typeof e?(r||(r={}),r.template=e):e&&(e=(r=e).template);const{templateFormat:n}=r||{};if(super(r),this.constructor===t){const e=t.get(n||H);if(e)return Reflect.construct(e,arguments);throw new E(`Prompt template type ${n} not found`,"PromptTemplate",400)}}_initialize(t){throw new S("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new S("Not implemented","PromptTemplate")}async format(e){const r=this.data;if(e={...r,...e},r)for(const[t,n]of Object.entries(r))e[t]===n&&"function"==typeof n&&(delete e[t],e[t]=await n(e));for(const[r,n]of Object.entries(e))n instanceof t&&(delete e[r],e[r]=await n.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let r={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var n;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(r.templateFormat=e.templateFormat),n=r,r=Object.keys(n).reduce(((t,e)=>{const r=n[e];return null!=r&&(t[e]=r),t}),{}),r}};function K(t){return(e=t)&&"function"==typeof e[Symbol.iterator]?async function*(t){const e=t[Symbol.iterator]();let r;try{for(;;){r=!1;const t=e.next();if(r=!0,t.done)return r=!1,await t.value;yield await t.value}}finally{r&&await(e.return?.().value)}}(t):t;var e}var X=!1;(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{X=t}));var Z=class{constructor(t,e){this.initialize(t,e)}initialize(t,e){const r=e?.maxLength;var n;r>0&&(this.maxLength=r),void 0!==e?.threshold&&(!0===e.threshold?this.threshold=.5:!1!==e.threshold&&(this.threshold=e.threshold)),this.examples=(n=t,X?n:K(n))}selectExample(t,e){if(void 0===e||e<=this.threshold)return t}async*selectExamples(t=this.examples){let e=this.maxLength||1/0;for await(const r of t){const t="number"==typeof this.threshold?Math.random():void 0;if(this.selectExample(r,t)){if(--e<0)break;yield r}}}async*[Symbol.asyncIterator](){yield*this.selectExamples()}},Y=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator"}),Q=Object.freeze({set:Y.Set,for:Y.For,in:Y.In,is:Y.Is,if:Y.If,else:Y.Else,endif:Y.EndIf,elif:Y.ElseIf,endfor:Y.EndFor,and:Y.And,or:Y.Or,not:Y.Not,"not in":Y.NotIn,true:Y.BooleanLiteral,false:Y.BooleanLiteral}),tt=class{constructor(t,e){this.value=t,this.type=e}};function et(t){return/\w/.test(t)}function rt(t){return/[0-9]/.test(t)}var nt=[["{%",Y.OpenStatement],["%}",Y.CloseStatement],["{{",Y.OpenExpression],["}}",Y.CloseExpression],["(",Y.OpenParen],[")",Y.CloseParen],["{",Y.OpenCurlyBracket],["}",Y.CloseCurlyBracket],["[",Y.OpenSquareBracket],["]",Y.CloseSquareBracket],[",",Y.Comma],[".",Y.Dot],[":",Y.Colon],["|",Y.Pipe],["<=",Y.ComparisonBinaryOperator],[">=",Y.ComparisonBinaryOperator],["==",Y.ComparisonBinaryOperator],["!=",Y.ComparisonBinaryOperator],["<",Y.ComparisonBinaryOperator],[">",Y.ComparisonBinaryOperator],["+",Y.AdditiveBinaryOperator],["-",Y.AdditiveBinaryOperator],["*",Y.MultiplicativeBinaryOperator],["/",Y.MultiplicativeBinaryOperator],["%",Y.MultiplicativeBinaryOperator],["=",Y.Equals]],st=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function it(t,e={}){const r=[],n=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(n[s]);)if("\\"!==n[s]){if(e+=n[s++],s>=n.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=n.length)throw new SyntaxError("Unexpected end of input");const t=n[s++],r=st.get(t);if(void 0===r)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=r}return e};t:for(;s<n.length;){const t=r.at(-1)?.type;if(void 0===t||t===Y.CloseStatement||t===Y.CloseExpression){let t="";for(;s<n.length&&("{"!==n[s]||"%"!==n[s+1]&&"{"!==n[s+1]);)t+=n[s++];if(t.length>0){r.push(new tt(t,Y.Text));continue}}i((t=>/\s/.test(t)));const e=n[s];if("-"===e||"+"===e){const t=r.at(-1)?.type;if(t===Y.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case Y.Identifier:case Y.NumericLiteral:case Y.BooleanLiteral:case Y.StringLiteral:case Y.CloseParen:case Y.CloseSquareBracket:break;default:{++s;const t=i(rt);r.push(new tt(`${e}${t}`,t.length>0?Y.NumericLiteral:Y.UnaryOperator));continue}}}for(const[t,e]of nt){if(n.slice(s,s+t.length)===t){r.push(new tt(t,e)),s+=t.length;continue t}}if("'"!==e&&'"'!==e)if(rt(e)){const t=i(rt);r.push(new tt(t,Y.NumericLiteral))}else{if(!et(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(et),e=Object.hasOwn(Q,t)?Q[t]:Y.Identifier;e===Y.In&&r.at(-1)?.type===Y.Not?(r.pop(),r.push(new tt("not in",Y.NotIn))):r.push(new tt(t,e))}}else{++s;const t=i((t=>t!==e));r.push(new tt(t,Y.StringLiteral)),++s}}return r}var ot=class{constructor(){this.type="Statement"}},at=class extends ot{constructor(t){super(),this.body=t,this.type="Program"}},ct=class extends ot{constructor(t,e,r){super(),this.test=t,this.body=e,this.alternate=r,this.type="If"}},ut=class extends ot{constructor(t,e,r){super(),this.loopvar=t,this.iterable=e,this.body=r,this.type="For"}},ht=class extends ot{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},lt=class extends ot{constructor(){super(...arguments),this.type="Expression"}},ft=class extends lt{constructor(t,e,r){super(),this.object=t,this.property=e,this.computed=r,this.type="MemberExpression"}},pt=class extends lt{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},wt=class extends lt{constructor(t){super(),this.value=t,this.type="Identifier"}},dt=class extends lt{constructor(t){super(),this.value=t,this.type="Literal"}},mt=class extends dt{constructor(){super(...arguments),this.type="NumericLiteral"}},yt=class extends dt{constructor(){super(...arguments),this.type="StringLiteral"}},bt=class extends dt{constructor(){super(...arguments),this.type="BooleanLiteral"}},gt=class extends dt{constructor(){super(...arguments),this.type="ArrayLiteral"}},vt=class extends dt{constructor(){super(...arguments),this.type="TupleLiteral"}},xt=class extends dt{constructor(){super(...arguments),this.type="ObjectLiteral"}},Et=class extends lt{constructor(t,e,r){super(),this.operator=t,this.left=e,this.right=r,this.type="BinaryExpression"}},St=class extends lt{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},$t=class extends lt{constructor(t,e,r){super(),this.operand=t,this.negate=e,this.test=r,this.type="TestExpression"}},kt=class extends lt{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},Ot=class extends lt{constructor(t=void 0,e=void 0,r=void 0){super(),this.start=t,this.stop=e,this.step=r,this.type="SliceExpression"}},Tt=class extends lt{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function At(t){const e=new at([]);let r=0;function n(e,n){const s=t[r++];if(!s||s.type!==e)throw new Error(`Parser Error: ${n}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[r].type){case Y.Text:e=new yt(n(Y.Text,"Expected text token").value);break;case Y.OpenStatement:e=function(){let e;switch(n(Y.OpenStatement,"Expected opening statement token"),t[r].type){case Y.Set:++r,e=a(),n(Y.CloseStatement,"Expected closing statement token");break;case Y.If:++r,e=c(),n(Y.OpenStatement,"Expected {% token"),n(Y.EndIf,"Expected endif token"),n(Y.CloseStatement,"Expected %} token");break;case Y.For:++r,e=function(){const t=u(!0);if(!(t instanceof wt||t instanceof vt))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);n(Y.In,"Expected `in` keyword following loop variable");const e=h();n(Y.CloseStatement,"Expected closing statement token");const r=[];for(;i(Y.OpenStatement,Y.EndFor);)r.push(s());return new ut(t,e,r)}(),n(Y.OpenStatement,"Expected {% token"),n(Y.EndFor,"Expected endfor token"),n(Y.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[r].type} ${t[r].value}`)}return e}(),e.isStatement=!0;break;case Y.OpenExpression:e=function(){n(Y.OpenExpression,"Expected opening expression token");const t=h();return n(Y.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[r].type}`)}return e}function i(...e){return r+e.length<=t.length&&e.some(((e,n)=>e!==t[r+n].type))}function o(...e){return r+e.length<=t.length&&e.every(((e,n)=>e===t[r+n].type))}function a(){const t=h();if(o(Y.Equals)){++r;const e=a();return new ht(t,e)}return t}function c(){const e=h();n(Y.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[r]?.type!==Y.OpenStatement||t[r+1]?.type!==Y.ElseIf&&t[r+1]?.type!==Y.Else&&t[r+1]?.type!==Y.EndIf;)i.push(s());if(t[r]?.type===Y.OpenStatement&&t[r+1]?.type!==Y.EndIf)if(++r,o(Y.ElseIf))n(Y.ElseIf,"Expected elseif token"),a.push(c());else for(n(Y.Else,"Expected else token"),n(Y.CloseStatement,"Expected closing statement token");t[r]?.type!==Y.OpenStatement||t[r+1]?.type!==Y.EndIf;)a.push(s());return new ct(e,i,a)}function u(t=!1){const e=t?v:h,n=[e()],s=o(Y.Comma);for(;s&&(++r,n.push(e()),o(Y.Comma)););return s?new vt(n):n[0]}function h(){return function(){const t=l();if(o(Y.If)){++r;const e=l();n(Y.Else,"Expected else token");const s=l();return new ct(e,[t],[s])}return t}()}function l(){let e=f();for(;o(Y.Or);){const n=t[r];++r;const s=f();e=new Et(n,e,s)}return e}function f(){let e=p();for(;o(Y.And);){const n=t[r];++r;const s=p();e=new Et(n,e,s)}return e}function p(){let e;for(;o(Y.Not);){const n=t[r];++r;const s=p();e=new kt(n,s)}return e??function(){let e=w();for(;o(Y.ComparisonBinaryOperator)||o(Y.In)||o(Y.NotIn);){const n=t[r];++r;const s=w();e=new Et(n,e,s)}return e}()}function w(){let e=b();for(;o(Y.AdditiveBinaryOperator);){const n=t[r];++r;const s=b();e=new Et(n,e,s)}return e}function d(){const e=function(){let e=v();for(;o(Y.Dot)||o(Y.OpenSquareBracket);){const s=t[r];let i;++r;const o=s.type!==Y.Dot;if(o)i=y(),n(Y.CloseSquareBracket,"Expected closing square bracket");else if(i=v(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new ft(e,i,o)}return e}();return o(Y.OpenParen)?m(e):e}function m(t){let e=new pt(t,function(){n(Y.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(Y.CloseParen);){let e=h();if(o(Y.Equals)){if(++r,!(e instanceof wt))throw new SyntaxError("Expected identifier for keyword argument");const t=h();e=new Tt(e,t)}t.push(e),o(Y.Comma)&&++r}return t}();return n(Y.CloseParen,"Expected closing parenthesis for arguments list"),t}());return o(Y.OpenParen)&&(e=m(e)),e}function y(){const t=[];let e=!1;for(;!o(Y.CloseSquareBracket);)o(Y.Colon)?(t.push(void 0),++r,e=!0):(t.push(h()),o(Y.Colon)&&(++r,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new Ot(...t)}return t[0]}function b(){let e=g();for(;o(Y.MultiplicativeBinaryOperator);){const n=t[r];++r;const s=g();e=new Et(n,e,s)}return e}function g(){let t=function(){let t=d();for(;o(Y.Pipe);){++r;let e=v();if(!(e instanceof wt))throw new SyntaxError("Expected identifier for the filter");o(Y.OpenParen)&&(e=m(e)),t=new St(t,e)}return t}();for(;o(Y.Is);){++r;const e=o(Y.Not);e&&++r;let n=v();if(n instanceof bt&&(n=new wt(n.value.toString())),!(n instanceof wt))throw new SyntaxError("Expected identifier for the test");t=new $t(t,e,n)}return t}function v(){const e=t[r];switch(e.type){case Y.NumericLiteral:return++r,new mt(Number(e.value));case Y.StringLiteral:return++r,new yt(e.value);case Y.BooleanLiteral:return++r,new bt("true"===e.value);case Y.Identifier:return++r,new wt(e.value);case Y.OpenParen:{++r;const e=u();if(t[r].type!==Y.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[r].type} instead`);return++r,e}case Y.OpenSquareBracket:{++r;const t=[];for(;!o(Y.CloseSquareBracket);)t.push(h()),o(Y.Comma)&&++r;return++r,new gt(t)}case Y.OpenCurlyBracket:{++r;const t=new Map;for(;!o(Y.CloseCurlyBracket);){const e=h();n(Y.Colon,"Expected colon between key and value in object literal");const s=h();t.set(e,s),o(Y.Comma)&&++r}return++r,new xt(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;r<t.length;)e.body.push(s());return e}function Ct(t,e,r=1){void 0===e&&(e=t,t=0);const n=[];for(let s=t;s<e;s+=r)n.push(s);return n}function jt(t,e,r,n=1){const s=Math.sign(n);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),r=(r??=t.length)<0?Math.max(t.length+r,0):Math.min(r,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),r=(r??=-1)<-1?Math.max(t.length+r,-1):Math.min(r,t.length-1));const i=[];for(let o=e;s*o<s*r;o+=n)i.push(t[o]);return i}function Nt(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var Ft=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new Rt(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},It=class extends Ft{constructor(){super(...arguments),this.type="NumericValue"}},Mt=class t extends Ft{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new Ut((()=>new t(this.value.toUpperCase())))],["lower",new Ut((()=>new t(this.value.toLowerCase())))],["strip",new Ut((()=>new t(this.value.trim())))],["title",new Ut((()=>new t(Nt(this.value))))],["length",new It(this.value.length)],["rstrip",new Ut((()=>new t(this.value.trimEnd())))],["lstrip",new Ut((()=>new t(this.value.trimStart())))]])}},Rt=class extends Ft{constructor(){super(...arguments),this.type="BooleanValue"}},Pt=class extends Ft{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new Ut((([t,e])=>{if(!(t instanceof Mt))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new Vt}))],["items",new Ut((()=>new qt(Array.from(this.value.entries()).map((([t,e])=>new qt([new Mt(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new Rt(this.value.size>0)}},qt=class extends Ft{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new It(this.value.length)]])}__bool__(){return new Rt(this.value.length>0)}},Bt=class extends qt{constructor(){super(...arguments),this.type="TupleValue"}},Ut=class extends Ft{constructor(){super(...arguments),this.type="FunctionValue"}},Vt=class extends Ft{constructor(){super(...arguments),this.type="NullValue"}},_t=class extends Ft{constructor(){super(...arguments),this.type="UndefinedValue"}},Lt=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new Ut((t=>{if(0===t.length)return new Pt(new Map);if(1!==t.length||!(t[0]instanceof Pt))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof Ut],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof qt||t instanceof Mt],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,Dt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new _t}catch{return new _t}}},zt=class{constructor(t){this.global=t??new Lt}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const r=this.evaluate(t.left,e);switch(t.operator.value){case"and":return r.__bool__().value?this.evaluate(t.right,e):r;case"or":return r.__bool__().value?r:this.evaluate(t.right,e)}const n=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new Rt(r.value==n.value);case"!=":return new Rt(r.value!=n.value)}if(r instanceof _t||n instanceof _t)throw new Error("Cannot perform operation on undefined values");if(r instanceof Vt||n instanceof Vt)throw new Error("Cannot perform operation on null values");if(r instanceof It&&n instanceof It)switch(t.operator.value){case"+":return new It(r.value+n.value);case"-":return new It(r.value-n.value);case"*":return new It(r.value*n.value);case"/":return new It(r.value/n.value);case"%":return new It(r.value%n.value);case"<":return new Rt(r.value<n.value);case">":return new Rt(r.value>n.value);case">=":return new Rt(r.value>=n.value);case"<=":return new Rt(r.value<=n.value)}else if(r instanceof qt&&n instanceof qt){if("+"===t.operator.value)return new qt(r.value.concat(n.value))}else if(n instanceof qt){const e=void 0!==n.value.find((t=>t.value===r.value));switch(t.operator.value){case"in":return new Rt(e);case"not in":return new Rt(!e)}}if((r instanceof Mt||n instanceof Mt)&&"+"===t.operator.value)return new Mt(r.toString()+n.toString());if(r instanceof Mt&&n instanceof Mt)switch(t.operator.value){case"in":return new Rt(n.value.includes(r.value));case"not in":return new Rt(!n.value.includes(r.value))}if(r instanceof Mt&&n instanceof Pt)switch(t.operator.value){case"in":return new Rt(n.value.has(r.value));case"not in":return new Rt(!n.value.has(r.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${r.type} and ${n.type}`)}evaluateFilterExpression(t,e){const r=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const e=t.filter;if(r instanceof qt)switch(e.value){case"list":return r;case"first":return r.value[0];case"last":return r.value[r.value.length-1];case"length":return new It(r.value.length);case"reverse":return new qt(r.value.reverse());case"sort":return new qt(r.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));case"tojson":return new Mt(JSON.stringify(r.value));default:throw new Error(`Unknown ArrayValue filter: ${e.value}`)}else if(r instanceof Mt)switch(e.value){case"length":return new It(r.value.length);case"upper":return new Mt(r.value.toUpperCase());case"lower":return new Mt(r.value.toLowerCase());case"title":return new Mt(Nt(r.value));case"capitalize":return new Mt(r.value.charAt(0).toUpperCase()+r.value.slice(1));case"trim":return new Mt(r.value.trim());case"trimStart":return new Mt(r.value.trimStart());case"trimEnd":return new Mt(r.value.trimEnd());default:throw new Error(`Unknown StringValue filter: ${e.value}`)}else{if(r instanceof It){if("abs"===e.value)return new It(Math.abs(r.value));throw new Error(`Unknown NumericValue filter: ${e.value}`)}if(r instanceof Pt)switch(e.value){case"items":return new qt(Array.from(r.value.entries()).map((([t,e])=>new qt([new Mt(t),e]))));case"length":return new It(r.value.size);case"tojson":return new Mt(JSON.stringify(r));case"string":return new Mt(r.toString());default:throw new Error(`Unknown ObjectValue filter: ${e.value}`)}}throw new Error(`Cannot apply filter "${e.value}" to type: ${r.type}`)}if("CallExpression"===t.filter.type){const n=t.filter;if("Identifier"!==n.callee.type)throw new Error(`Unknown filter: ${n.callee.type}`);const s=n.callee.value,i=e.lookupVariable(s);if(i instanceof Ut)return i.value([r,...n.args.map((t=>this.evaluate(t,e)))],e);if(r instanceof qt){if("selectattr"===s){if(r.value.some((t=>!(t instanceof Pt))))throw new Error("`selectattr` can only be applied to array of objects");if(n.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=n.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=r.value.filter((e=>{const r=e.value.get(t.value);return!!r&&o(r,i)}));return new qt(a)}throw new Error(`Unknown ArrayValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${r.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const r=this.evaluate(t.operand,e),n=e.tests.get(t.test.value);if(!n)throw new Error(`Unknown test: ${t.test.value}`);const s=n(r);return new Rt(t.negate?!s:s)}evaluateUnaryExpression(t,e){const r=this.evaluate(t.argument,e);if("not"===t.operator.value)return new Rt(!r.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let r="";for(const n of t){const t=this.evaluate(n,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(r+=t)}return new Mt(r)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const r=[],n=new Map;for(const s of t.args)if("KeywordArgumentExpression"===s.type){const t=s;n.set(t.key.value,this.evaluate(t.value,e))}else r.push(this.evaluate(s,e));n.size>0&&r.push(new Pt(n));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(r,e)}evaluateSliceExpression(t,e,r){if(!(t instanceof qt||t instanceof Mt))throw new Error("Slice object must be an array or string");const n=this.evaluate(e.start,r),s=this.evaluate(e.stop,r),i=this.evaluate(e.step,r);if(!(n instanceof It||n instanceof _t))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof It||s instanceof _t))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof It||i instanceof _t))throw new Error("Slice step must be numeric or undefined");return t instanceof qt?new qt(jt(t.value,n.value,s.value,i.value)):new Mt(jt(Array.from(t.value),n.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const r=this.evaluate(t.object,e);let n,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(r,t.property,e);n=this.evaluate(t.property,e)}else n=new Mt(t.property.value);if(r instanceof Pt){if(!(n instanceof Mt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.value.get(n.value)??r.builtins.get(n.value)}else if(r instanceof qt||r instanceof Mt)if(n instanceof It)s=r.value.at(n.value),r instanceof Mt&&(s=new Mt(r.value.at(n.value)));else{if(!(n instanceof Mt))throw new Error(`Cannot access property with non-string/non-number: got ${n.type}`);s=r.builtins.get(n.value)}else{if(!(n instanceof Mt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.builtins.get(n.value)}return s instanceof Ft?s:new _t}evaluateSet(t,e){const r=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const n=t.assignee.value;e.setVariable(n,r)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const n=t.assignee,s=this.evaluate(n.object,e);if(!(s instanceof Pt))throw new Error("Cannot assign to member of non-object");if("Identifier"!==n.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(n.property.value,r)}}return new Vt}evaluateIf(t,e){const r=this.evaluate(t.test,e);return this.evaluateBlock(r.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const r=new Lt(e),n=this.evaluate(t.iterable,r);if(!(n instanceof qt))throw new Error(`Expected iterable type in for loop: got ${n.type}`);let s="";for(let e=0;e<n.value.length;++e){const i=new Map([["index",new It(e+1)],["index0",new It(e)],["revindex",new It(n.value.length-e)],["revindex0",new It(n.value.length-e-1)],["first",new Rt(0===e)],["last",new Rt(e===n.value.length-1)],["length",new It(n.value.length)],["previtem",e>0?n.value[e-1]:new _t],["nextitem",e<n.value.length-1?n.value[e+1]:new _t]]);r.setVariable("loop",new Pt(i));const o=n.value[e];if("Identifier"===t.loopvar.type)r.setVariable(t.loopvar.value,o);else if("TupleLiteral"===t.loopvar.type){const e=t.loopvar;if("ArrayValue"!==o.type)throw new Error(`Cannot unpack non-iterable type: ${o.type}`);const n=o;if(e.value.length!==n.value.length)throw new Error(`Too ${e.value.length>n.value.length?"few":"many"} items to unpack`);for(let t=0;t<e.value.length;++t){if("Identifier"!==e.value[t].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[t].type}`);r.setVariable(e.value[t].value,n.value[t])}}s+=this.evaluateBlock(t.body,r).value}return new Mt(s)}evaluate(t,e){if(void 0===t)return new _t;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"NumericLiteral":return new It(Number(t.value));case"StringLiteral":return new Mt(t.value);case"BooleanLiteral":return new Rt(t.value);case"ArrayLiteral":return new qt(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new Bt(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const r=new Map;for(const[n,s]of t.value){const t=this.evaluate(n,e);if(!(t instanceof Mt))throw new Error(`Object keys must be strings: got ${t.type}`);r.set(t.value,this.evaluate(s,e))}return new Pt(r,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function Dt(t){switch(typeof t){case"number":return new It(t);case"string":return new Mt(t);case"boolean":return new Rt(t);case"object":return null===t?new Vt:Array.isArray(t)?new qt(t.map(Dt)):new Pt(new Map(Object.entries(t).map((([t,e])=>[t,Dt(e)]))),t);case"function":return new Ut(((e,r)=>{const n=e.map((t=>Jt(t)));return Dt(t(...n)??null)}));case"undefined":return new Vt;default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function Jt(t){let e=t;return Array.isArray(t)?e=t.map((t=>Jt(t))):t instanceof Map?(e={},t.forEach(((t,r)=>{e[r]=Jt(t)}))):"ObjectValue"===t.type?t.orgValue?e=t.orgValue:(e={},t.forEach(((t,r)=>{e[r]=Jt(t)}))):"ArrayValue"===t.type?e=t.value.map((t=>Jt(t))):t.type&&(e=t.value),e}function Wt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var Ht={randomInt:Wt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=Wt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const r=Object.keys(t);e=r[Wt(r.length-1)]}return t[e]}}},Gt=class extends Lt{constructor(t){super(t),this.parent=t}assign(t){for(const[e,r]of Object.entries(t))this.set(e,r)}clear(){this.variables.clear()}},Kt=class t{static{this.global=new Gt}constructor(t,e={}){const r=it(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=At(r)}render(e){const r=new Lt(t.global);r.set("false",!1),r.set("true",!0),r.set("raise_exception",(t=>{throw new Error(t)})),r.set("range",Ct);for(const[t,n]of Object.entries(e))r.set(t,n);return new zt(r).run(this.parsed).toString()}};function Xt(t,e){let r;switch(t.type){case"Identifier":r=t.value;break;case"MemberExpression":r=Xt(t.object,e);break;case"FilterExpression":r=Xt(t.operand,e);break;case"Set":{e||(e=[]);const n=Xt(t.assignee);n&&e.push(n),r=Xt(t.value,e);break}}return r&&e?.includes(r)&&(r=void 0),r}function Zt(t){let e;if("Program"===t.type)e=t.body.some((t=>Zt(t)));else e=t.isStatement;return e}function Yt(t,e){let r=[];if(Array.isArray(t))r=t.map((t=>Yt(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":r=t.body.map((t=>Yt(t,e))).filter(Boolean).flat();break;case"If":r=[Xt(t.test,e),...Yt(t.body,e),...Yt(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":r=[Xt(t.left,e),Xt(t.right,e)].filter(Boolean);break;case"For":{const n=Xt(t.loopvar);n&&(e||(e=[]),e.push(n)),r=[Xt(t.iterable,e),...Yt(t.body,e)].filter(Boolean);break}case"CallExpression":r=[Xt(t.callee,e),...Yt(t.args,e)].filter(Boolean);break;default:r=[Xt(t,e)].filter(Boolean)}return r}Kt.global.assign(Ht);var Qt=class extends G{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=new Kt(r)}catch(t){}return e&&(n=Zt(e.parsed)),n}getVariables(t=this.compiledTemplate){return Yt(t.parsed,[]).filter(((t,e,r)=>r.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=new Kt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}};function te(t){return function(e){return t}}function ee(t){const e=t.split(""),r=[],n=(t,r)=>{for(let n=r;n<e.length;n+=1)if(t.includes(e[n]))return n;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])r.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])r.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=n("}",s);if(t<0)throw new Error("Unclosed '{' in template.");r.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=n("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");r.push({type:"literal",text:i}),s=t<0?e.length:t}}return r}function re(t,e){return t.reduce(((t,r)=>{let n;return n="variable"===r.type?r.name in e?t+e[r.name]:t:t+r.text,n}),"")}function ne(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}G.register(Qt,{name:"hf",aliases:["huggingface","internal","default"]});var se=class extends G{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=ee(r)}catch(t){}if(e){n=ne(e).length>0}return n}getVariables(t=this.compiledTemplate){return ne(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=ee(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return re(this.compiledTemplate,t)}};function ie(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function oe(t,e,r){let n=function(t,e,r){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])([^\2]*?)\2\s+(["'])([^\4]*?)\4\s*}}/g,((t,n,s,i,o,a)=>{if(r)return e[n]=null,t;const c=new RegExp(i,"g");return ie(e,n).replace(c,a)}))}(t,e,r);return n=function(t,e,r){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])([^\2]*?)\2\s*}}/g,((t,n,s,i)=>r?(e[n]=null,t):ie(e,n).join(i)))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,n,s,i,o)=>{if(r)return n.startsWith(".")&&(n=n.substring(1)),e[n]=null,t;let a;if(!n.startsWith("."))throw new Error("Functionality not implemented");{const t=ie(e,n.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${n}: ${typeof t}`);a=t?s:o??""}}return a}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,n,s,i)=>{if(r)return e[n]=null,t;const o=ie(e,n);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,n)=>r?(e[n]=null,t):ie(e,n)||""))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,n,s)=>{if(r)return e[n]=null,t;const i=ie(e,n);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(n,e,r),n}G.register(se,{name:"fstring",aliases:["python","f-string","langchain"]});var ae=class extends G{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return oe(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return oe(this.template,t)}};function ce(t){return Object.keys(t).sort().map((e=>t[e]))}G.register(ae,{name:"golang",aliases:["localai","ollama"]});var ue=class extends G{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof G?t.examplePrompt:G.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const r=await this.examplePrompt.format(t);e.push(r)}else if("string"==typeof t)e.push(t);else if(t){const r=ce(t);r.length>0&&e.push(...r)}const r=[this.prefix,...e,this.suffix].join(this.exampleSeparator),n=this.templateFormat;return await G.format({template:r,data:t,templateFormat:n})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}};G.register(ue,{name:"fewshot",aliases:["few_shot"]});var he=/(\\)?(\$)(?!\()(\{?)([\w.]+)(?::?-((?:\$\{(?:\$\{(?:\$\{[^}]*\}|[^}])*}|[^}])*}|[^}])+))?(\}?)/gi;function le(t){return t.replace(/\\\$/g,"$")}function fe(t,e,r){return t.replace(he,((n,s,i,o,a,c,u)=>"\\"===s?n.slice(1):e[a]?e[a]===r[a]?e[a]:fe(e[a],e,r):r[a]?r[a]===t?r[a]:fe(r[a],e,r):c?c.startsWith("$")?fe(c,e,r):c:""))}function pe(t){let e=process.env;t&&null!=t.processEnv&&(e=t.processEnv);for(const r in t.parsed){let n=t.parsed[r];if(!n)continue;n=Object.prototype.hasOwnProperty.call(e,r)?e[r]===t.parsed[r]?fe(n,e,t.parsed):e[r]:fe(n,e,t.parsed),t.parsed[r]=n?le(n):n}for(const r in t.parsed)e[r]=t.parsed[r];return t}function we(t,e={},r){switch(r||(r=new WeakSet),e.processEnv||(e.processEnv={...process.env}),e.parsed||(e.parsed=e.processEnv),typeof t){case"string":t=fe(t,e.processEnv,e.parsed);break;case"object":if(r.has(t))return t;if(r.add(t),Array.isArray(t))for(let n=0;n<t.length;n++){const s=t[n];"string"!=typeof s&&"object"!=typeof s||(t[n]=we(t[n],e,r))}else for(const[n,s]of Object.entries(t))"string"!=typeof s&&"object"!=typeof s||(t[n]=we(s,e,r))}return t}var de="@",me=/(\S.+?[.!?])(?=\s+|$)|(\S.+?)(?=[\n]|$)/g,ye=/([A-Z][a-z]{1,2}\.)\s(\w)/g,be=/(\.[a-zA-Z]\.)\s(\w)/g,ge=new RegExp("([A-Z][a-z]{1,2}\\.)"+de+"(\\w)","g"),ve=new RegExp("(\\.[a-zA-Z]\\.)"+de+"(\\w)","g");function xe(t,e,r){const n="$1"+e+"$2";let s=t;for(let t=0;t<r.length;t++)s=s.replace(r[t],n);return s}function Ee(t,e=!0){const r=(t=(t=(t=(t=(t=t.replace(/([。!??])\1+/g,"$1")).replace(/([。!??])([^”’])/g,"$1\n$2")).replace(/(\.{6})([^”’])/g,"$1\n$2")).replace(/(…{2})([^”’])/g,"$1\n$2")).replace(/([。!??][”’])([^,。!??])/g,"$1\n$2")).split("\n");let n=[];for(let t=0;t<r.length;t++){let s=r[t].trim();if(!s)continue;if(!e){n.push(s);continue}let i=xe(s,de,[ye,be]),o=Array.from(i.matchAll(me));if(o.length)for(let t=0;t<o.length;t++){let e=xe(o[t][0]," ",[ge,ve]);n.push(e)}else n.push(s)}return n}function Se(t,e=2,r=.5){const n=10**e;return Math.trunc((t+Number.EPSILON+r/n)*n)/n}async function $e(t){return new Promise((e=>setTimeout(e,t)))}var ke=require("custom-ability"),Oe="event",Te="event-bus";var Ae=(0,ke.createAbilityInjector)((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(Te)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.on(e,r)}once(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.once(e,r)}off(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.off(e,r)}emit(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,r):n.emit.call(this,e,this.name,...r)}emitError(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emit.call(this,"error",e,this.name,...r)}async emitAsync(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emitAsync.call(this,e,this.name,...r)}}}),!0);function Ce(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var je=498,Ne=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let r,n;this.active||A("Channel closed","SSEChannel",je);let s=e;if(t||e)n=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",r="id: "+n+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:n,_eventName:s,output:r});else{if(!this.clients.size)return;r="data: \n\n"}for([...this.clients].filter((t=>!s||Ce(t.events,s))).forEach(((t,e)=>{t.res.write(r)}));this.messages.length>this.options.historySize;)this.messages.shift();return n}subscribe(t,e,r){this.active||A("Channel closed","SSEChannel",je);const n={req:t,res:e,events:r},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),n.req.socket.setNoDelay(!0),n.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>Ce(n.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),n.res.write(a),this.clients.add(n),s>0&&setTimeout((()=>{n.res.writableEnded||this.unsubscribe(n)}),s),n.res.on("close",(()=>this.unsubscribe(n))),n}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const r=e.req.socket.remoteAddress??"";r in t||(t[r]=0),t[r]++})),t}getSubscriberCount(){return this.clients.size}};function Fe(t){return t instanceof ReadableStream||t instanceof WritableStream}var Ie=600,Me=601,Re=class extends x{constructor(t,e=Ie){super(t,500)}};function Pe(t){if(t){const e=t.getReader();return new ReadableStream({async start(t){const{done:r,value:n}=await e.read();if(!r){const e=(new TextDecoder).decode(n);t.error(new Re(`Response error: ${e}`,Me))}}})}return new ReadableStream({start(t){t.error(new Re("Response error: No response body",Me))}})}function qe(){return new ReadableStream({start(t){t.close()}})}var Be=require("eventsource-parser");function Ue(t){const e=new TextDecoder;let r;return new TransformStream({async start(e){r=(0,Be.createParser)((r=>{if("data"in r&&"event"===r.type&&"[DONE]"===r.data||"done"===r.event)e.terminate();else if("data"in r){const n=t?t(r.data,{event:r.event}):r.data;n&&e.enqueue(n)}}))},transform(t){r.feed(e.decode(t))}})}function Ve(){let t=!0;return e=>(t&&(e=e.trimStart())&&(t=!1),e)}function _e(t,e){if(!t.ok)return Pe(t.body);let r=t.body||new ReadableStream({start(t){t.close()}});return r instanceof ReadableStream||(r=ReadableStream.from(r)),r.pipeThrough(Ue(e))}function Le(t){let e=t[Symbol.asyncIterator]();return new ReadableStream({async pull(t){const{done:r,value:n}=await e.next();r?t.close():t.enqueue(n)},async cancel(t){await(e.return?.(t))}})}function ze(t){const e=t||{};return new TransformStream({async start(t){const r=t.error;if(t.error=n=>{r.call(t,n),e.onError&&e.onError(n)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,r){try{let n;e.onTransform&&(n=await e.onTransform(t,r)),n||(n=t),r.enqueue(n)}catch(t){r.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}var De={};a(De,{XXHashAlgorithm:()=>or,base32768:()=>tr,uuid:()=>Ke,uuidNIL:()=>He.NIL,uuidParse:()=>He.parse,uuidStringify:()=>He.stringify,uuidValidate:()=>He.validate,uuidVersion:()=>He.version,uuidv1:()=>He.v1,uuidv4:()=>He.v4,uuidv5:()=>He.v5,xxhash:()=>ar,xxhash32:()=>sr,xxhash64:()=>ir,xxhashAsStr:()=>cr});var Je=require("uuid"),We=h(require("base32768")),He=require("uuid"),Ge={1:Je.v1,4:Je.v4,5:Je.v5};function Ke(t=1,e){const r=Ge[t];return e?We.encode(r(null,[])):r()}var Xe={};a(Xe,{XXHashAlgorithm:()=>or,base32768:()=>tr,xxhash:()=>ar,xxhash32:()=>sr,xxhash64:()=>ir,xxhashAsStr:()=>cr});var Ze=h(require("xxhashjs")),Ye=h(require("base32768")),Qe=require("json-canonicalize");u(Xe,require("json-canonicalize"));var tr=Ye,{h32:er,h64:rr}=Ze.default,nr=588213;function sr(t,e=16){return"object"==typeof t&&(t=(0,Qe.canonicalize)(t)),er(t,nr).toString(e)}function ir(t,e=16){return"object"==typeof t&&(t=(0,Qe.canonicalize)(t)),rr(t,nr).toString(e)}var or=(t=>(t[t.xxhash64=111]="xxhash64",t[t.xxhash32=112]="xxhash32",t))(or||{});function ar(t,e=111,r=nr){let n;return t.buffer&&(t=t.buffer),112!==e?(n=rr(t,r),n=new Uint16Array([n._a00,n._a16,n._a32,n._a48]),n=new Uint8Array(n.buffer)):(n=er(t,r),n=new Uint16Array([n._low,n._high]),n=new Uint8Array(n.buffer)),n}function cr(t,e=111,r=nr){return Ye.encode(ar(t,e,r))}u(De,Xe),u(C,De);var ur=h(require("path")),hr=/[<>:"/\\|?*\u0000-\u001F]/,lr=/^(con|prn|aux|nul|com\d|lpt\d)$/i,fr=100,pr=/^\.+(\\|\/)|^\.+$/,wr=/\.+$/,dr=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function mr(){return new RegExp(hr.source,"g")}function yr(){return new RegExp(dr.source,"g")}function br(t){return t&&!(hr.test(t)||yr().test(t)||pr.test(t)||wr.test(t))}function gr(t){const e=t.split(ur.default.sep);return("/"===t[0]||e[0]&&ur.default.dirname(e[0])===e[0])&&e.shift(),e.every(br)}function vr(t,e={}){const r=e.replacement||"!";if((hr.test(r)||dr.test(r))&&A("Replacement string cannot contain reserved filename characters","sanitizeFilename",400),r.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(pr,r)).replace(mr(),r)).replace(yr(),r)).replace(wr,""),r.length>0){"."===t[0]||"."!==t[0]||(t=r+t),"."===t[t.length-1]&&(t+=r)}t=lr.test(t)?t+r:t;const n="number"==typeof e.maxLength?e.maxLength:fr;if(t.length>n){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,n);else{const r=t.slice(0,e),s=t.slice(e);t=r.slice(0,Math.max(1,n-s.length))+s}}return t}function xr(t,e={}){const r=t.split(ur.default.sep);let n;("/"===t[0]||r[0]&&ur.default.dirname(r[0])===r[0])&&(n=r.shift());const s=r.map((t=>vr(t,e)));return void 0!==n&&s.unshift(n),s.join(ur.default.sep)}function Er(t,e=1){let r="";for(;e--;){const e=ur.default.extname(t);if(!e)break;r=e+r,t=ur.default.basename(t,e)}return r}function Sr(t){return t.split(".").length-1}var $r=require("util-ex");function kr(t,e){if("string"!=typeof t)throw new E("modelName must be a string","isModelNameMatched",400);switch(typeof e){case"string":if((0,$r.isRegExpStr)(e)){const r=(e=(0,$r.toRegExp)(e)).exec(t);if(r)return r}else if(t.toLowerCase()===e.toLowerCase())return e;break;case"object":if(Array.isArray(e)){for(const r of e)if("string"==typeof r){if((0,$r.isRegExpStr)(r)){const n=(e=(0,$r.toRegExp)(r)).exec(t);if(n)return n}else if(t.toLowerCase()===r.toLowerCase())return r}else if(r instanceof RegExp){const e=r.exec(t);if(e)return e}else if("function"==typeof r){const e=r.call(this,t);if(e)return e}}else if(e instanceof RegExp){const r=e.exec(t);if(r)return r}break;case"function":const r=e.call(this,t);if(r)return r}}function Or(t){return Object.keys(t).filter((t=>Number.isNaN(Number(t))))}var Tr=require("util-ex");function Ar(t,e){if(e){const r=Object.keys(e);if(r.length){const n=Object.values(e);return(0,Tr.newFunction)("expression",r,`return ${t}`)(...n)}}return(0,Tr.newFunction)("expression",[],`return ${t}`)()}function Cr(t){return t?jr(t,[],""):[]}function jr(t,e,r="."){return Array.isArray(t)?t.flatMap(((t,r)=>jr(t,[...e,`[${r}]`]))):(n=t)&&n.constructor===Object?Object.entries(t).flatMap((([t,n])=>jr(n,[...e,r+t]))):[e.join("")];var n}function Nr(t){if(t<2)throw new E("repetitionThreshold must be greater than 1","createEndWithRepetitionDetector",400);const e=new RegExp(`([\\S\\s]+)(\\1{${t-1},})$`);return function(t){return e.exec(t)}}var Fr=h(require("path")),Ir=h(require("fs"));function Mr(t,e,r,n){let s;if(Fr.default.isAbsolute(t)?s=Ir.existsSync(t)?t:Rr(Fr.default.basename(t),[Fr.default.dirname(t)],r,n?.exclude):(e||(e=["."]),s=Rr(t,e,r,n?.exclude)),!s)throw new $(t,"loadFileFromPaths");{const t=s;s=Ir.readFileSync(s),n&&(n.filepath=t)}return s}function Rr(t,e,r,n=[]){let s;const i=r?r.map((e=>Er(t,Sr(e)))):void 0;"string"==typeof n&&(n=[n]);for(const o of e){const e=Fr.default.resolve(o,t);if(i)for(let t=0;t<i.length;t++){const o=e+(i[t]!==r[t]?r[t]:"");if(!n.includes(o)&&Ir.existsSync(o)){s=o;break}}else if(!n.includes(e)&&Ir.existsSync(e)){s=e;break}}return s}function Pr(t,e,r,n,s){let i;"string"==typeof n?(i=n,n=void 0):i=n?.encoding??"utf8";return Mr(t,e,r,n).toString(i)}function qr(t,e){const r=[],n="string"==typeof t?[t]:[...t],s=new Set;for(;n.length>0;){const t=Br(n.pop()),i=Fr.default.resolve(t);if(s.has(i))continue;s.add(i);const o=Ir.statSync(t,{throwIfNoEntry:!1});if(o?.isDirectory()){const s=Ir.readdirSync(t,{withFileTypes:!0});for(let i=0;i<s.length;i++){const o=s[i],a=Fr.default.join(t,o.name);o.isDirectory()?n.push(a):!o.isFile()||e&&!e(a)||r.push(a)}}}return r}function Br(t){const e=Ir.lstatSync(t,{throwIfNoEntry:!1});return e?.isSymbolicLink()&&(t=Ir.readlinkSync(t)),t}var Ur=require("fs"),Vr=h(require("path")),_r=require("load-config-file"),Lr=require("yaml"),zr=require("yaml-types"),Dr=require("mime-type/with-db"),Jr=require("yaml"),Wr=[zr.regexp];function Hr(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===Wr.indexOf(e)&&Wr.push(e)}}function Gr(t){return(0,Lr.parse)(t,{customTags:Wr})}function Kr(t,e){const r=[],n=e?.after,s=e?.exclude?"string"==typeof e.exclude?[e.exclude]:e.exclude:void 0,i=e?.extensions?"string"==typeof e.extensions?[e.extensions]:e.extensions.map((t=>t.startsWith(".")?t:"."+t)):[".yml",".yaml",".json"];return function(t,e){const r=(0,Ur.readdirSync)(t,{withFileTypes:!0,recursive:!0});for(const n of r){const r=Vr.default.join(t,n.name);n.isFile()&&e(r,n)}}(t,((t,e)=>{if(s?.includes(t))return;const o=Vr.default.extname(t),a=(0,Ur.statSync)(t);if(i.includes(o)){if(n?.hasOwnProperty(t)&&a.mtimeMs<=n[t])return;r.push(t)}})),r}function Xr(t,e){return Kr(t,e).map((t=>_r.Config.loadSync(t))).filter((t=>void 0!==t))}function Zr(t,e,r=1){"."===t[0]&&r++;const n=Er(t,r);(!n||n.split(".").length<=1)&&(t+=".yaml");const s=Dr.mimeType.lookup(t);if("application/json"===s)e=JSON.stringify(e,null,2);else{if("text/yaml"!==s)throw new Error(`${t} unsupported mime type: ${s}`);e=(0,Lr.stringify)(e)}const i=Vr.default.dirname(t);(0,Ur.existsSync)(i)||(0,Ur.mkdirSync)(i,{recursive:!0}),(0,Ur.writeFileSync)(t,e,{encoding:"utf8"})}function Yr(t){t instanceof Date&&(t=t.toISOString());return function(t,e){return t?`'${e}'`:String(e)}("string"==typeof t,t)}function Qr(t,e){return t.map((t=>rn(t,e))).join(" AND ")}function tn(t,e){return t.map((t=>rn(t,e))).join(" OR ")}function en(t,e){const r=[];return Object.keys(e).forEach((n=>{const s=e[n];switch(n){case"$lt":case"<":r.push(`${t} < ${Yr(s)}`);break;case"<=":case"$lte":r.push(`${t} <= ${Yr(s)}`);break;case"$gt":case">":r.push(`${t} > ${Yr(s)}`);break;case"$gte":case">=":r.push(`${t} >= ${Yr(s)}`);break;case"$ne":case"!=":r.push(`${t} != ${Yr(s)}`);break;case"=":case"$eq":r.push(`${t} = ${Yr(s)}`);break;case"$in":r.push(`${t} IN (${s.map((t=>Yr(t))).join(", ")})`);break;case"$nin":r.push(`${t} NOT IN (${s.map((t=>Yr(t))).join(", ")})`);break;case"$regex":r.push(`${t} REGEXP '${s.source}'`);break;case"$like":r.push(`${t} LIKE '${s}'`);break;case"$nlike":r.push(`${t} NOT LIKE '${s}'`);break;case"$glob":r.push(`${t} GLOB '${s}'`);break;case"$nglob":r.push(`${t} NOT GLOB '${s}'`);break;default:throw new Error(`Unsupported condition operator: ${n}`)}})),r.join(" AND ")}function rn(t,e){const r=[];if("function"!=typeof e&&(e=t=>t),Array.isArray(t))r.push(Qr(t,e));else for(const[n,s]of Object.entries(t))if("$and"===n)r.push(`(${Qr(t[n],e)})`);else if("$or"===n)r.push(`(${tn(t[n],e)})`);else{const t=typeof s;if(null==s)r.push(`${e(n)} IS NULL`);else if(s instanceof Date)r.push(`${e(n)}='${s.toISOString()}'`);else if("object"!==t||Array.isArray(s))if("string"===t)r.push(`${e(n)}='${s}'`);else{if("number"!==t&&"boolean"!==t)throw new Error(`Unsupported value type for key ${n}`);r.push(`${e(n)}=${s}`)}else r.push(en(e(n),s))}return r.length>1?r.join(" AND "):r[0]}function nn(t){const e=t.indexOf("://");if(e>0)return t.substring(0,e)}function sn(t,e=0){let r,n=t*10**e;return t>=1e12?(n=Math.round(n/1e12),r="T"):t>=1e9?(n=Math.round(n/1e9),r="B"):t>=1e6?(n=Math.round(n/1e6),r="M"):t>=1e3?(n=Math.round(n/1e3),r="K"):(n=Math.round(n),r=""),n/=10**e,n.toFixed(e)+r}function on(t){const e=t.match(/^\s*[+]?(\d+(?:[.]\d+)?)\s*([TBMK])?\s*$/i);if(!e)throw new E("Invalid formatted parameter size string.","scaleToSize",400);const r=parseFloat(e[1]),n=e[2]?.toLowerCase();switch(n){case"t":return 1e12*r;case"b":return 1e9*r;case"m":return 1e6*r;case"k":return 1e3*r;default:return r}}function an(t,e){const r=e?.level||0,n=e?.visiting||new Set,s=e?.objectTag||"*",i=e?.arrayTag||"-";let o=[];const a=" ".repeat(2*r);if(null!=t)switch(typeof t){case"object":n.has(t)?o=["[Circular]"]:(n.add(t),o=Array.isArray(t)?t.map((t=>i+c(t))):Object.entries(t).map((([t,e])=>s+" `"+t+"`:"+c(e))));break;case"string":return t;default:return JSON.stringify(t)}else o=["null"];return o.length?a+o.join("\n"+a):"";function c(t){return(null!=t&&"object"==typeof t?"\n":" ")+an(t,{level:r+1,visiting:n})}}_r.Config.register([".yml",".yaml"],Gr),_r.Config.register([".json"],(function(t){return JSON.parse(t)}));var cn=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}},un=require("events-ex"),hn=32;function ln(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var fn=class{constructor(t){this._capacity=ln(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const r=this._front+e&this._capacity-1;return this.arr[r]=t,this._length=e+1,r}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,r=this.arr[e];return this.arr[e]=void 0,this._length=t-1,r}shift(){const t=this._length;if(0===t)return;const e=this._front,r=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,r}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(ln(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const r=this._front,n=this._length;if(r+n>e){const t=r+n&e-1;!function(t,e,r,n,s){for(let i=0;i<s;++i)r[i+n]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},pn=class extends un.EventEmitter{};function wn(t){return"function"==typeof t}function dn(){return"1"}var mn=class{constructor(t,{initFn:e=dn,pauseFn:r,resumeFn:n,capacity:s=hn}={}){if(wn(r)!==wn(n))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new fn(t),this.waiting=new fn(s),this.releaseEmitter=new pn,this.useDefaultTokens=e===dn,this.pauseFn=r,this.resumeFn=n,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let r=0;r<t;r++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,r)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push({resolve:e,reject:r});return t&&t.addEventListener("abort",(()=>{this.waiting[n]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,r(e)})),n}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}};function yn(t,{timeUnit:e=1e3,uniformDistribution:r=!1}={}){const n=new mn(r?1:t),s=r?e/t:e;return async function(){await n.acquire(),setTimeout((()=>n.release()),s)}}var bn=require("custom-ability"),gn=require("util-ex"),vn=class extends AbortController{constructor(t){super(),(0,gn.defineProperty)(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new O(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new O(e.reason||"aborted")}}},xn=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new mn(t-1)),e}isAborted(t){const e=this.hasAsyncFeature($n);let r=this.__task_aborter;if(r&&e){if(null==t)throw new E("Missing taskId",this.name+".isAborted",400);r=r[t]}return!r||r.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature($n);let r=this.__task_aborter;if(r&&e){if(null==t)throw new E("Missing taskId",this.name+".getRunningTask",400);r=r[t]}return r?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,r=void 0),r}getRunningTaskCount(){let t;if(this.hasAsyncFeature($n)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,r])=>{if(!r?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const r=this.super,n=this.self||this;return t=r?r.call(n,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,r=!0){const n=this.hasAsyncFeature($n);if(!n&&r&&this.getRunningTask())throw new E("The task is running",this.name,429);const s=t?.aborter||new vn(this);if(!(s instanceof vn)){if(!(s instanceof AbortController))throw new E("aborter should be an AbortController",this.name,400);Object.setPrototypeOf(s,new vn(this))}if(n){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const r=this.super,n=this.self||this;r?r.call(n,t,e):n._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature($n)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,r){const n=this.createAborter(e,r?.taskId,r?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=n);let s=t(e,n).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(n)},r=ze({onStart:t=>{(0,gn.defineProperty)(n,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=n.id),t)});t=t.pipeThrough(r)}else this.cleanTaskAborter(n);return t})).catch((t=>{throw this.cleanTaskAborter(n),t})).finally((()=>{n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=void 0)}));return s.task=n,s}runAsyncCancelableTask(t={},e,r){let n=this.createTaskPromise(e,t,r);const s=this.semaphore;if(s){const t=n,e=t.task;n=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),n.task=e}return n}abort(t,e){let r=this.__task_aborter;if(r){const n=r;if(this.hasAsyncFeature($n)){const t=e?.taskId;if(null==t)throw new E("Missing data.taskId",this.name+".abort",400);r=r[t],this.cleanMultiTaskAborter(t,n)}else this.__task_aborter=void 0;r&&!r.signal.aborted&&r.abort(t,e)}}};xn.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},xn.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};var En,Sn=(0,bn.createAbilityInjector)(xn,"abort",{afterInjection:function(t,e){let r=t.prototype._asyncFeatures||0;r|=kn.Cancelable,e&&(e.asyncFeatures&&(r|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=r}}),$n=0,kn=((En=kn||{})[En.MultiTask=1<<$n]="MultiTask",En[En.Cancelable=2]="Cancelable",En[En.Priority=4]="Priority",En),On=class t extends p.AdvancePropertyManager{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const r in this.list()){const n=this.get(r);let s=n.tags;if("string"==typeof s){if(s===t){e=n;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=n;break}}return e}static getAllByTag(t){let e=[];for(const r in this.list()){const n=this.get(r);let s=n.tags;"string"==typeof s?s===t&&e.push(n):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(n)}return e}static hasAsyncFeature(t){const e=this.prototype;let r=e.asyncFeatures;return e._asyncFeatures&&(r|=e._asyncFeatures),cn.has(r,t)}static run(t,e){const r=this.get(t);if(r)return r.run(e);throw new $(`${t} to run`,this.name)}static runSync(t,e){const r=this.get(t);if(r)return r.runSync(e);throw new $(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const r=this.get(t);if(r)return r.runWithPos(...e);throw new $(`${t} to run`,this.name)}static runWithPosSync(t,...e){const r=this.get(t);if(r)return r.runWithPosSync(...e);throw new $(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,r={}){switch(typeof e){case"string":r.name=e;break;case"function":r.func=e;break;case"object":r=e}e=r.name;let n=!!this.get(e);if(n)n=!1;else{if(!(r instanceof t))return n=new this(r),n.register();this.items[e]=r,n=r}return n}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,r=this.depends;if(r){const e=Object.keys(r);for(const n of e){const e=r[n];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},r=Object.keys(this.params);let n=Math.min(r.length,t.length);for(let s=0;s<n;s++)e[r[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const r=Object.keys(t);let n=Math.min(r.length,this.params.length);for(let s=0;s<n;s++)e.push(t[r[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);A("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),cn.has(e,t)}},Tn={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,n,s){let i=t;const o=typeof t;return s.isExported?i="function"===o?t.toString():t:t&&("string"!==o&&(t=t.toString()),i=(0,w._createFunction)(t,e.scope)),i}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},asyncFeatures:{type:"number"}};On.defineProperties(On,Tn);var An=class extends On{constructor(){super(...arguments),this._emitter=new f.EventEmitter,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},Cn=new An(Te),jn=require("secondary-cache");function Nn({key:t,value:e,options:r}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,r):this.cache.get(t):(r&&this.cache.setDefaultOptions(r),this.cache)}function Fn(t,e){let r=On.get(t);return r||(r=new On(t,{func:Nn,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),r.cache=new jn.Cache(e)),r}var In=Fn("lrucache"),Mn=class t extends On{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else A("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const r in e){const n=this.get(r),s=e[r];n?n instanceof t?n.assign(s):A(`${r} already registered as ${n.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const r=this.get(t);if(r&&r.fetch)return r.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,r){const n={...this.fetchOptions};let s;n.headers&&n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",...n.headers}),t?.stream&&!n.headers.Connection&&(n.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),r?("string"!=typeof r&&(r=JSON.stringify(r)),r=this.name+"/"+r):r=this.name,n.method=e.toUpperCase(),"get"===e||"delete"===e?s=r+this.getUrlParams(t):(n.body=JSON.stringify(t),s=r);const i=await fetch(`${this.apiRoot}/${s}`,n);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,r=t.status,n=t.statusText,s=this.name;if(t.body){const r=await t.text();try{const t=JSON.parse(r);t&&(t.error&&(n=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=n,n=e.what)),t.message&&(n=n+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return T(n,s,r)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},Rn={...I};Mn.defineProperties(Mn,Rn);var Pn=class extends Mn{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let r=t.id;return r||A("id is required"),"string"==typeof r&&(r=encodeURIComponent(r)),delete t.id,super.fetch(t,e,r)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}async _func(t,e){const r=await this.fetch(e,t);if(e?.stream)return r;return await r.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},qn={methods:{type:"array",assign(t,e,r,n,s){s?.isExported||e.assignMethods(t)}}};Pn.defineProperties(Pn,qn);var Bn=class extends Pn{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=Oe,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",r=`${this.apiRoot}/${this.name}${e}`,n=this._es=new EventSource(r);return Object.entries(this._sseEvents).forEach((([t,e])=>{n.addEventListener(t,e)})),this._esEvents=t,n}esListener(t){const e=t.data?JSON.parse(t.data):void 0,r=t.type;if(!this._forwardEvents.has(r)){const t=this.emitter;t&&e&&r&&(Array.isArray(e)?t.emit(r,...e):t.emit(r,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const r=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);r.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},Un=new Bn(Oe),Vn=require("util-ex"),_n=class t extends On{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static toJSON(){const e={};for(const r in this.items){let n=this.items[r];n instanceof t&&(n.allowExportFunc||(n=n.toJSON(),delete n.func),e[r]=n)}return e}isStream(t){return this.stream}func({}){}},Ln={...I};_n.defineProperties(_n,Ln);var zn=class extends _n{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}};const r=this.methods=[];for(const t of F)"function"==typeof this[t]&&r.push(t);(0,Vn.getAllNames)(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((t=>{r.push(t);const e=t.slice(1);void 0===this[e]&&(this[e]=this[t])}))}cast(t,e){let r=this.params[t];return r&&("string"!=typeof r&&(r=r.type),"number"===r&&(e=Number(e))),e}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return void 0!==t.id&&(t.id=this.cast("id",t.id)),this[e](t);throw new $(e,this.name)}};zn.defineProperties(zn,{methods:{type:"array"}});var Dn=Cn.runSync(),Jn=class t extends zn{constructor(){super(...arguments),this.name=Oe,this.description="subscribe server sent event",this.result="event",this.depends={[Te]:Cn}}static get sse(){return this._sse||(this._sse=new Ne),this._sse}get sse(){return this.constructor.sse}static publish(e,r){return t.sse.publish(e,r)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,r,n){return t.sse.subscribe(e,r,n)}static alreadyForward(e){const r=Dn.listeners(e);for(const e of r)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,r){return"string"==typeof r&&(r=[r]),this.constructor.subscribe(t,e,r)}forward(e){Array.isArray(e)||(e=[e]);for(const r of e)t.alreadyForward(r)||Dn.on(r,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const r of e)Dn.off(r,t.ebListener)}list({_req:t,_res:e,event:r}){t&&e&&this.subscribeSSE(t,e,r)}$sub({event:t}){if(t)return this.forward(t),{event:t};A("event is required","sub",400)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};A("event is required","unsub",400)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const r of t)this.publishSSE(e,r);return{event:t}}A("event or data is required","pub",400)}isStream(t){return"list"===this.getMethodFromParams(t)}},Wn=new Jn(Oe);function Hn(){Cn.register(),In.register()}
|
|
1
|
+
"use strict";var t,e=Object.create,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.getPrototypeOf,o=Object.prototype.hasOwnProperty,a=(t,e)=>{for(var n in e)r(t,n,{get:e[n],enumerable:!0})},c=(t,e,i,a)=>{if(e&&"object"==typeof e||"function"==typeof e)for(let c of s(e))o.call(t,c)||c===i||r(t,c,{get:()=>e[c],enumerable:!(a=n(e,c))||a.enumerable});return t},u=(t,e,r)=>(c(t,e,"default"),r&&c(r,e,"default")),l=(t,n,s)=>(s=null!=t?e(i(t)):{},c(!n&&t&&t.__esModule?s:r(s,"default",{value:t,enumerable:!0}),t)),h={};a(h,{EventClient:()=>Ln,EventServer:()=>Gn,EventToolFunc:()=>Fn,_lrucache:()=>Rn,createLRUCache:()=>Pn,event:()=>In,eventClient:()=>zn,eventServer:()=>Xn,lrucache:()=>qn,registerCoreTools:()=>Zn}),module.exports=(t=h,c(r({},"__esModule",{value:!0}),t));var f=require("events-ex"),p=require("property-manager"),w=require("util-ex"),d=require("abstract-error"),m=(t=>(t[t.OK=200]="OK",t[t.Accepted=202]="Accepted",t[t.BadRequest=400]="BadRequest",t[t.InvalidArgument=400]="InvalidArgument",t[t.Unauthorized=401]="Unauthorized",t[t.PaymentRequired=402]="PaymentRequired",t[t.Forbidden=403]="Forbidden",t[t.NotFound=404]="NotFound",t[t.MethodNotAllowed=405]="MethodNotAllowed",t[t.NotAcceptable=406]="NotAcceptable",t[t.RequestTimeout=408]="RequestTimeout",t[t.Conflict=409]="Conflict",t[t.Corruption=409]="Corruption",t[t.TooManyRequests=429]="TooManyRequests",t[t.Aborted=499]="Aborted",t[t.InternalError=500]="InternalError",t[t.NotImplemented=501]="NotImplemented",t[t.NotSupported=501]="NotSupported",t[t.BadGateway=502]="BadGateway",t[t.ServiceUnavailable=503]="ServiceUnavailable",t[t.GatewayTimeout=504]="GatewayTimeout",t))(m||{}),y=500,b=404,g=409,x=499,v=class t extends d.AbstractError{static createErrorClass(e,r,n=t){return(0,d.createErrorClass)(e,r,n)}constructor(t,e,r){super(t,e);const n=this.constructor;null!=e?this.code=e:n.code?this.code=n.code:this.code=n.name,r?"string"==typeof r?this.name=r:Object.assign(this,r):"string"==typeof this.code?this.name=this.code:this.name=n.name}toJSON(){const t={name:this.name,code:this.code,data:this.data,caller:this.caller,error:this.message,stack:this.stack};return Object.keys(t).forEach((e=>void 0===t[e]&&delete t[e])),t}fromJSON(e){const r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.message=e.error,r.stack=e.stack,r}},E=class extends v{constructor(t,e,r=y){super(t,r,e)}},S=class extends E{constructor(t,e){t||(t="Not Implementation."),super(t,e,501)}};E[501]=S;var $=class extends E{static{this.code=b}constructor(t,e){super(`Could not find ${t}.`,e,b),this.data={what:t}}};E[404]=$;var k=class extends E{static{this.code=g}constructor(t,e){super(`The ${t} already exists.`,e,g),this.data={what:t}}};E[409]=k;var A=class extends E{static{this.code=x}constructor(t,e){e||(e="AbortError"),super(t?`The operation was aborted for ${t}.`:"The operation was aborted.",e,x),t&&(this.data={what:t})}};function O(t,e,r=y){const n=new(E[r]||E)(t,e,r);return"number"!=typeof n.code&&(n.code=r),n}function T(t,e,r=y){throw O(t,e,r)}E[499]=A;var j={};a(j,{AIChatRoles:()=>L,AIMessageTypes:()=>_,AIStream:()=>Je,AITextGenerationFinishReasons:()=>B,AbortError:()=>A,AbortErrorCode:()=>x,ActionNames:()=>F,AlreadyExistsError:()=>k,AlreadyExistsErrorCode:()=>g,BaseError:()=>v,CancelableAbility:()=>kn,CommonError:()=>E,ConfigFile:()=>Jr.Config,DefaultAsyncSemaphoreCapacity:()=>wn,ErrorCode:()=>m,EventBusName:()=>Ne,EventName:()=>Ce,FStringPromptTemplate:()=>ce,FewShotPromptTemplate:()=>pe,FilenameReservedRegex:()=>wr,GolangPromptTemplate:()=>he,HFBuiltins:()=>Xt,HFEnvironment:()=>Yt,HFInterpreter:()=>Wt,HFTemplate:()=>Qt,HfPromptTemplate:()=>ne,IntSet:()=>fn,InternalErrorCode:()=>y,NotFoundError:()=>$,NotFoundErrorCode:()=>b,NotImplementationError:()=>S,NotImplementedErrorCode:()=>501,PASSING_SCORE:()=>N,PromptExampleSelector:()=>Z,PromptTemplate:()=>H,PromptTemplateTypes:()=>J,PromptTypes:()=>D,RStreamErrCode:()=>qe,RateLimit:()=>vn,ReadableStreamError:()=>Ue,RemoteToolFuncSchema:()=>I,ResponseRStreamErrCode:()=>Ve,SSEChannel:()=>Re,SSEChannelAlreadyClosedErrCode:()=>Me,Semaphore:()=>xn,TaskAbortController:()=>$n,WindowsReservedNameRegex:()=>dr,XXHashAlgorithm:()=>lr,backendEventable:()=>Fe,base32768:()=>sr,createAbilityInjector:()=>C.createAbilityInjector,createCallbacksTransformer:()=>Ke,createEmptyReadableStream:()=>_e,createEndWithRepetitionDetector:()=>Rr,createError:()=>O,createEventStreamTransformer:()=>ze,createHfValueFunc:()=>se,dateToText:()=>U,defaultTemplateFormat:()=>K,expandEnv:()=>ye,expandObjEnv:()=>be,extNameLevel:()=>Or,filenameReservedRegex:()=>xr,formatISO:()=>R.formatISO,getAllEnumKeys:()=>Cr,getConfigFileNames:()=>Qr,getConfigs:()=>tn,getKeysPath:()=>Ir,getMultiLevelExtname:()=>Ar,getRealFilepath:()=>Lr,getResponseErrorReadableStream:()=>Be,hfParse:()=>Ct,hfTokenize:()=>it,interpolateEnv:()=>me,interpolateFString:()=>oe,interpolateGolangTemplate:()=>le,isModelNameMatched:()=>jr,isValidFilename:()=>Er,isValidFilepath:()=>Sr,isWebStream:()=>Pe,jsonFilterToWhere:()=>an,jsonToMarkdownStr:()=>hn,loadFileFromPaths:()=>Vr,loadTextFromPaths:()=>Br,makeToolFuncCancelable:()=>On,matchUrlProtocol:()=>cn,messagesToText:()=>z,mimeType:()=>Hr.mimeType,paramsSizeToScaleStr:()=>un,parseDateFormat:()=>M.parse,parseFString:()=>ie,parseISO:()=>R.parseISO,parseJsJson:()=>Fr,parseYaml:()=>Yr,reControlCharsRegex:()=>vr,readFilenamesRecursiveSync:()=>_r,readableFromAsyncIterable:()=>We,registerYamlTag:()=>Zr,sanitizeFilename:()=>$r,sanitizeFilepath:()=>kr,saveConfigFile:()=>en,scaleStrToParamsSize:()=>ln,sortedValues:()=>fe,splitSentence:()=>Ae,stringifyYaml:()=>Gr.stringify,textToDate:()=>V,throwError:()=>T,toDate:()=>R.toDate,toDateTime:()=>q,trimStartOfStreamHelper:()=>De,truncTo:()=>Oe,uuid:()=>Qe,uuidNIL:()=>Ze.NIL,uuidParse:()=>Ze.parse,uuidStringify:()=>Ze.stringify,uuidValidate:()=>Ze.validate,uuidVersion:()=>Ze.version,uuidv1:()=>Ze.v1,uuidv4:()=>Ze.v4,uuidv5:()=>Ze.v5,wait:()=>Te,xxhash:()=>hr,xxhash32:()=>cr,xxhash64:()=>ur,xxhashAsStr:()=>fr});var C=require("custom-ability"),N=.618,F=["get","post","put","delete","patch","list","res"],I={apiRoot:{type:"string",get(){return this._apiRoot??this.constructor.apiRoot},set(t){this._apiRoot=t}},action:{type:"string",assign:(t,e,r,n,s)=>t||"post"},fetchOptions:{type:"object"},allowExportFunc:{type:"boolean"},stream:{type:"boolean"}},M=require("date-fns"),R=require("date-fns"),P="MMMM d, y 'at' h:m:s b 'GMT'x";function q(t){let e;try{"string"==typeof t?e=(0,M.parseISO)(t):"number"==typeof t?e=new Date(t):t instanceof Date&&(e=t)}catch(t){console.error(t)}return e}function V(t,e=P){return(0,M.parse)(t,e,new Date)}function U(t,e=P){return(0,M.format)(t,e)}var B=["stop","length","content-filter","tool-calls","abort","error","other",null],_=["human","ai","generic","system","tool"],L=["user","assistant","system","tool","tool_calls"];function z(t){let e="";for(const r of t)if(r.content){e+=r.role.toLowerCase()+":";let t=r.createdAt;if(t){const r=q(t);r&&(e+=" ["+U(r)+"]")}e+=" "+r.content+"\n"}return e}var D=["chat","char","plan"],J=["internal","hf","fill"],W=require("custom-factory");var K="default",H=class t extends W.BaseFactory{static from(t,e){return new this(t,e)}static async format(t){return new this(t).format()}static async formatIf(t){if(this.isTemplate(t)){return new this(t).format()}}static isTemplate(e){if(e?.template){const r=e.templateFormat||K,n=t.get(r);return n.isTemplate!==t.isTemplate&&n.isTemplate(e)}}filterData(t){return Array.isArray(this.inputVariables)&&(t=Object.fromEntries(Object.entries(t).filter((([t])=>this.inputVariables.includes(t))))),t}constructor(e,r){"string"==typeof e?(r||(r={}),r.template=e):e&&(e=(r=e).template);const{templateFormat:n}=r||{};if(super(r),this.constructor===t){const e=t.get(n||K);if(e)return Reflect.construct(e,arguments);throw new E(`Prompt template type ${n} not found`,"PromptTemplate",400)}}_initialize(t){throw new S("Not implemented","PromptTemplate")}initialize(e){this.constructor!==t&&(Object.assign(this,this.toJSON(e)),e?.ignoreInitialize||this._initialize(e))}_format(t){throw new S("Not implemented","PromptTemplate")}async format(e){const r=this.data;if(e={...r,...e},r)for(const[t,n]of Object.entries(r))e[t]===n&&"function"==typeof n&&(delete e[t],e[t]=await n(e));for(const[r,n]of Object.entries(e))n instanceof t&&(delete e[r],e[r]=await n.format(e));return this._format(e)}partial(t){t={...this.data,...t};const e=this.toJSON();return e.data=t,e.ignoreInitialize=!0,new this.constructor(e)}toJSON(e=this){let r={template:e.template,data:e.data,inputVariables:e.inputVariables,compiledTemplate:e.compiledTemplate};var n;return e.templateFormat&&t.get(e.templateFormat)!==this.constructor&&(r.templateFormat=e.templateFormat),n=r,r=Object.keys(n).reduce(((t,e)=>{const r=n[e];return null!=r&&(t[e]=r),t}),{}),r}};function G(t){return(e=t)&&"function"==typeof e[Symbol.iterator]?async function*(t){const e=t[Symbol.iterator]();let r;try{for(;;){r=!1;const t=e.next();if(r=!0,t.done)return r=!1,await t.value;yield await t.value}}finally{r&&await(e.return?.().value)}}(t):t;var e}var X=!1;(async function(){let t=!1,e=!1;try{for await(const e of function*(){try{yield Promise.reject()}finally{t=!0}}())throw new Error("impossible")}catch{e=!0}return e&&t})().then((t=>{X=t}));var Z=class{constructor(t,e){this.initialize(t,e)}initialize(t,e){const r=e?.maxLength;var n;r>0&&(this.maxLength=r),void 0!==e?.threshold&&(!0===e.threshold?this.threshold=.5:!1!==e.threshold&&(this.threshold=e.threshold)),this.examples=(n=t,X?n:G(n))}selectExample(t,e){if(void 0===e||e<=this.threshold)return t}async*selectExamples(t=this.examples){let e=this.maxLength||1/0;for await(const r of t){const t="number"==typeof this.threshold?Math.random():void 0;if(this.selectExample(r,t)){if(--e<0)break;yield r}}}async*[Symbol.asyncIterator](){yield*this.selectExamples()}},Y=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator",Macro:"Macro",EndMacro:"EndMacro"}),Q=Object.freeze({set:Y.Set,for:Y.For,in:Y.In,is:Y.Is,if:Y.If,else:Y.Else,endif:Y.EndIf,elif:Y.ElseIf,endfor:Y.EndFor,and:Y.And,or:Y.Or,not:Y.Not,"not in":Y.NotIn,macro:Y.Macro,endmacro:Y.EndMacro,true:Y.BooleanLiteral,false:Y.BooleanLiteral,True:Y.BooleanLiteral,False:Y.BooleanLiteral}),tt=class{constructor(t,e){this.value=t,this.type=e}};function et(t){return/\w/.test(t)}function rt(t){return/[0-9]/.test(t)}var nt=[["{%",Y.OpenStatement],["%}",Y.CloseStatement],["{{",Y.OpenExpression],["}}",Y.CloseExpression],["(",Y.OpenParen],[")",Y.CloseParen],["{",Y.OpenCurlyBracket],["}",Y.CloseCurlyBracket],["[",Y.OpenSquareBracket],["]",Y.CloseSquareBracket],[",",Y.Comma],[".",Y.Dot],[":",Y.Colon],["|",Y.Pipe],["<=",Y.ComparisonBinaryOperator],[">=",Y.ComparisonBinaryOperator],["==",Y.ComparisonBinaryOperator],["!=",Y.ComparisonBinaryOperator],["<",Y.ComparisonBinaryOperator],[">",Y.ComparisonBinaryOperator],["+",Y.AdditiveBinaryOperator],["-",Y.AdditiveBinaryOperator],["*",Y.MultiplicativeBinaryOperator],["/",Y.MultiplicativeBinaryOperator],["%",Y.MultiplicativeBinaryOperator],["=",Y.Equals]],st=new Map([["n","\n"],["t","\t"],["r","\r"],["b","\b"],["f","\f"],["v","\v"],["'","'"],['"','"'],["\\","\\"]]);function it(t,e={}){const r=[],n=function(t,e={}){return t.endsWith("\n")&&(t=t.slice(0,-1)),t=t.replace(/{#.*?#}/gs,"{##}"),e.lstrip_blocks&&(t=t.replace(/^[ \t]*({[#%])/gm,"$1")),e.trim_blocks&&(t=t.replace(/([#%]})\n/g,"$1")),t.replace(/{##}/g,"").replace(/-%}\s*/g,"%}").replace(/\s*{%-/g,"{%").replace(/-}}\s*/g,"}}").replace(/\s*{{-/g,"{{")}(t,e);let s=0;const i=t=>{let e="";for(;t(n[s]);)if("\\"!==n[s]){if(e+=n[s++],s>=n.length)throw new SyntaxError("Unexpected end of input")}else{if(++s,s>=n.length)throw new SyntaxError("Unexpected end of input");const t=n[s++],r=st.get(t);if(void 0===r)throw new SyntaxError(`Unexpected escaped character: ${t}`);e+=r}return e};t:for(;s<n.length;){const t=r.at(-1)?.type;if(void 0===t||t===Y.CloseStatement||t===Y.CloseExpression){let t="";for(;s<n.length&&("{"!==n[s]||"%"!==n[s+1]&&"{"!==n[s+1]);)t+=n[s++];if(t.length>0){r.push(new tt(t,Y.Text));continue}}i((t=>/\s/.test(t)));const e=n[s];if("-"===e||"+"===e){const t=r.at(-1)?.type;if(t===Y.Text||void 0===t)throw new SyntaxError(`Unexpected character: ${e}`);switch(t){case Y.Identifier:case Y.NumericLiteral:case Y.BooleanLiteral:case Y.StringLiteral:case Y.CloseParen:case Y.CloseSquareBracket:break;default:{++s;const t=i(rt);r.push(new tt(`${e}${t}`,t.length>0?Y.NumericLiteral:Y.UnaryOperator));continue}}}for(const[t,e]of nt){if(n.slice(s,s+t.length)===t){r.push(new tt(t,e)),s+=t.length;continue t}}if("'"!==e&&'"'!==e)if(rt(e)){const t=i(rt);r.push(new tt(t,Y.NumericLiteral))}else{if(!et(e))throw new SyntaxError(`Unexpected character: ${e}`);{const t=i(et),e=Object.hasOwn(Q,t)?Q[t]:Y.Identifier;e===Y.In&&r.at(-1)?.type===Y.Not?(r.pop(),r.push(new tt("not in",Y.NotIn))):r.push(new tt(t,e))}}else{++s;const t=i((t=>t!==e));r.push(new tt(t,Y.StringLiteral)),++s}}return r}var ot=class{constructor(){this.type="Statement"}},at=class extends ot{constructor(t){super(),this.body=t,this.type="Program"}},ct=class extends ot{constructor(t,e,r){super(),this.test=t,this.body=e,this.alternate=r,this.type="If"}},ut=class extends ot{constructor(t,e,r,n){super(),this.loopvar=t,this.iterable=e,this.body=r,this.defaultBlock=n,this.type="For"}},lt=class extends ot{constructor(t,e){super(),this.assignee=t,this.value=e,this.type="Set"}},ht=class extends ot{constructor(t,e,r){super(),this.name=t,this.args=e,this.body=r,this.type="Macro"}},ft=class extends ot{constructor(){super(...arguments),this.type="Expression"}},pt=class extends ft{constructor(t,e,r){super(),this.object=t,this.property=e,this.computed=r,this.type="MemberExpression"}},wt=class extends ft{constructor(t,e){super(),this.callee=t,this.args=e,this.type="CallExpression"}},dt=class extends ft{constructor(t){super(),this.value=t,this.type="Identifier"}},mt=class extends ft{constructor(t){super(),this.value=t,this.type="Literal"}},yt=class extends mt{constructor(){super(...arguments),this.type="NumericLiteral"}},bt=class extends mt{constructor(){super(...arguments),this.type="StringLiteral"}},gt=class extends mt{constructor(){super(...arguments),this.type="BooleanLiteral"}},xt=class extends mt{constructor(){super(...arguments),this.type="ArrayLiteral"}},vt=class extends mt{constructor(){super(...arguments),this.type="TupleLiteral"}},Et=class extends mt{constructor(){super(...arguments),this.type="ObjectLiteral"}},St=class extends ft{constructor(t,e,r){super(),this.operator=t,this.left=e,this.right=r,this.type="BinaryExpression"}},$t=class extends ft{constructor(t,e){super(),this.operand=t,this.filter=e,this.type="FilterExpression"}},kt=class extends ft{constructor(t,e){super(),this.iterable=t,this.test=e,this.type="SelectExpression"}},At=class extends ft{constructor(t,e,r){super(),this.operand=t,this.negate=e,this.test=r,this.type="TestExpression"}},Ot=class extends ft{constructor(t,e){super(),this.operator=t,this.argument=e,this.type="UnaryExpression"}},Tt=class extends ft{constructor(t=void 0,e=void 0,r=void 0){super(),this.start=t,this.stop=e,this.step=r,this.type="SliceExpression"}},jt=class extends ft{constructor(t,e){super(),this.key=t,this.value=e,this.type="KeywordArgumentExpression"}};function Ct(t){const e=new at([]);let r=0;function n(e,n){const s=t[r++];if(!s||s.type!==e)throw new Error(`Parser Error: ${n}. ${s.type} !== ${e}.`);return s}function s(){let e;switch(t[r].type){case Y.Text:e=new bt(n(Y.Text,"Expected text token").value);break;case Y.OpenStatement:e=function(){let e;switch(n(Y.OpenStatement,"Expected opening statement token"),t[r].type){case Y.Set:++r,e=a(),n(Y.CloseStatement,"Expected closing statement token");break;case Y.If:++r,e=c(),n(Y.OpenStatement,"Expected {% token"),n(Y.EndIf,"Expected endif token"),n(Y.CloseStatement,"Expected %} token");break;case Y.Macro:++r,e=function(){const t=v();if("Identifier"!==t.type)throw new SyntaxError("Expected identifier following macro statement");const e=y();n(Y.CloseStatement,"Expected closing statement token");const r=[];for(;i(Y.OpenStatement,Y.EndMacro);)r.push(s());return new ht(t,e,r)}(),n(Y.OpenStatement,"Expected {% token"),n(Y.EndMacro,"Expected endmacro token"),n(Y.CloseStatement,"Expected %} token");break;case Y.For:++r,e=function(){const t=u(!0);if(!(t instanceof dt||t instanceof vt))throw new SyntaxError(`Expected identifier/tuple for the loop variable, got ${t.type} instead`);n(Y.In,"Expected `in` keyword following loop variable");const e=l();n(Y.CloseStatement,"Expected closing statement token");const a=[];for(;i(Y.OpenStatement,Y.EndFor)&&i(Y.OpenStatement,Y.Else);)a.push(s());const c=[];if(o(Y.OpenStatement,Y.Else))for(++r,++r,n(Y.CloseStatement,"Expected closing statement token");i(Y.OpenStatement,Y.EndFor);)c.push(s());return new ut(t,e,a,c)}(),n(Y.OpenStatement,"Expected {% token"),n(Y.EndFor,"Expected endfor token"),n(Y.CloseStatement,"Expected %} token");break;default:throw new SyntaxError(`Unknown statement type: ${t[r].type} ${t[r].value}`)}return e}(),e.isStatement=!0;break;case Y.OpenExpression:e=function(){n(Y.OpenExpression,"Expected opening expression token");const t=l();return n(Y.CloseExpression,"Expected closing expression token"),t}(),e.isStatement=!0;break;default:throw new SyntaxError(`Unexpected token type: ${t[r].type}`)}return e}function i(...e){return r+e.length<=t.length&&e.some(((e,n)=>e!==t[r+n].type))}function o(...e){return r+e.length<=t.length&&e.every(((e,n)=>e===t[r+n].type))}function a(){const t=l();if(o(Y.Equals)){++r;const e=a();return new lt(t,e)}return t}function c(){const e=l();n(Y.CloseStatement,"Expected closing statement token");const i=[],a=[];for(;t[r]?.type!==Y.OpenStatement||t[r+1]?.type!==Y.ElseIf&&t[r+1]?.type!==Y.Else&&t[r+1]?.type!==Y.EndIf;)i.push(s());if(t[r]?.type===Y.OpenStatement&&t[r+1]?.type!==Y.EndIf)if(++r,o(Y.ElseIf))n(Y.ElseIf,"Expected elseif token"),a.push(c());else for(n(Y.Else,"Expected else token"),n(Y.CloseStatement,"Expected closing statement token");t[r]?.type!==Y.OpenStatement||t[r+1]?.type!==Y.EndIf;)a.push(s());return new ct(e,i,a)}function u(t=!1){const e=t?v:l,n=[e()],s=o(Y.Comma);for(;s&&(++r,n.push(e()),o(Y.Comma)););return s?new vt(n):n[0]}function l(){return function(){const t=h();if(o(Y.If)){++r;const e=h();if(o(Y.Else)){++r;const n=h();return new ct(e,[t],[n])}return new kt(t,e)}return t}()}function h(){let e=f();for(;o(Y.Or);){const n=t[r];++r;const s=f();e=new St(n,e,s)}return e}function f(){let e=p();for(;o(Y.And);){const n=t[r];++r;const s=p();e=new St(n,e,s)}return e}function p(){let e;for(;o(Y.Not);){const n=t[r];++r;const s=p();e=new Ot(n,s)}return e??function(){let e=w();for(;o(Y.ComparisonBinaryOperator)||o(Y.In)||o(Y.NotIn);){const n=t[r];++r;const s=w();e=new St(n,e,s)}return e}()}function w(){let e=g();for(;o(Y.AdditiveBinaryOperator);){const n=t[r];++r;const s=g();e=new St(n,e,s)}return e}function d(){const e=function(){let e=v();for(;o(Y.Dot)||o(Y.OpenSquareBracket);){const s=t[r];let i;++r;const o=s.type!==Y.Dot;if(o)i=b(),n(Y.CloseSquareBracket,"Expected closing square bracket");else if(i=v(),"Identifier"!==i.type)throw new SyntaxError("Expected identifier following dot operator");e=new pt(e,i,o)}return e}();return o(Y.OpenParen)?m(e):e}function m(t){let e=new wt(t,y());return o(Y.OpenParen)&&(e=m(e)),e}function y(){n(Y.OpenParen,"Expected opening parenthesis for arguments list");const t=function(){const t=[];for(;!o(Y.CloseParen);){let e=l();if(o(Y.Equals)){if(++r,!(e instanceof dt))throw new SyntaxError("Expected identifier for keyword argument");const t=l();e=new jt(e,t)}t.push(e),o(Y.Comma)&&++r}return t}();return n(Y.CloseParen,"Expected closing parenthesis for arguments list"),t}function b(){const t=[];let e=!1;for(;!o(Y.CloseSquareBracket);)o(Y.Colon)?(t.push(void 0),++r,e=!0):(t.push(l()),o(Y.Colon)&&(++r,e=!0));if(0===t.length)throw new SyntaxError("Expected at least one argument for member/slice expression");if(e){if(t.length>3)throw new SyntaxError("Expected 0-3 arguments for slice expression");return new Tt(...t)}return t[0]}function g(){let e=x();for(;o(Y.MultiplicativeBinaryOperator);){const n=t[r];++r;const s=x();e=new St(n,e,s)}return e}function x(){let t=function(){let t=d();for(;o(Y.Pipe);){++r;let e=v();if(!(e instanceof dt))throw new SyntaxError("Expected identifier for the filter");o(Y.OpenParen)&&(e=m(e)),t=new $t(t,e)}return t}();for(;o(Y.Is);){++r;const e=o(Y.Not);e&&++r;let n=v();if(n instanceof gt&&(n=new dt(n.value.toString())),!(n instanceof dt))throw new SyntaxError("Expected identifier for the test");t=new At(t,e,n)}return t}function v(){const e=t[r];switch(e.type){case Y.NumericLiteral:return++r,new yt(Number(e.value));case Y.StringLiteral:return++r,new bt(e.value);case Y.BooleanLiteral:return++r,new gt("true"===e.value.toLowerCase());case Y.Identifier:return++r,new dt(e.value);case Y.OpenParen:{++r;const e=u();if(t[r].type!==Y.CloseParen)throw new SyntaxError(`Expected closing parenthesis, got ${t[r].type} instead`);return++r,e}case Y.OpenSquareBracket:{++r;const t=[];for(;!o(Y.CloseSquareBracket);)t.push(l()),o(Y.Comma)&&++r;return++r,new xt(t)}case Y.OpenCurlyBracket:{++r;const t=new Map;for(;!o(Y.CloseCurlyBracket);){const e=l();n(Y.Colon,"Expected colon between key and value in object literal");const s=l();t.set(e,s),o(Y.Comma)&&++r}return++r,new Et(t)}default:throw new SyntaxError(`Unexpected token: ${e.type}`)}}for(;r<t.length;)e.body.push(s());return e}function Nt(t,e,r=1){void 0===e&&(e=t,t=0);const n=[];for(let s=t;s<e;s+=r)n.push(s);return n}function Ft(t,e,r,n=1){const s=Math.sign(n);s>=0?(e=(e??=0)<0?Math.max(t.length+e,0):Math.min(e,t.length),r=(r??=t.length)<0?Math.max(t.length+r,0):Math.min(r,t.length)):(e=(e??=t.length-1)<0?Math.max(t.length+e,-1):Math.min(e,t.length-1),r=(r??=-1)<-1?Math.max(t.length+r,-1):Math.min(r,t.length-1));const i=[];for(let o=e;s*o<s*r;o+=n)i.push(t[o]);return i}function It(t){return t.replace(/\b\w/g,(t=>t.toUpperCase()))}var Mt=class{constructor(t=void 0){this.type="RuntimeValue",this.builtins=new Map,this.value=t}__bool__(){return new qt(!!this.value)}toString(){return""+this.value}toJSON(){return this.value}},Rt=class extends Mt{constructor(){super(...arguments),this.type="NumericValue"}},Pt=class t extends Mt{constructor(){super(...arguments),this.type="StringValue",this.builtins=new Map([["upper",new Lt((()=>new t(this.value.toUpperCase())))],["lower",new Lt((()=>new t(this.value.toLowerCase())))],["strip",new Lt((()=>new t(this.value.trim())))],["title",new Lt((()=>new t(It(this.value))))],["length",new Rt(this.value.length)],["rstrip",new Lt((()=>new t(this.value.trimEnd())))],["lstrip",new Lt((()=>new t(this.value.trimStart())))]])}},qt=class extends Mt{constructor(){super(...arguments),this.type="BooleanValue"}},Vt=class extends Mt{constructor(t,e){super(t),this.orgValue=e,this.type="ObjectValue",this.builtins=new Map([["get",new Lt((([t,e])=>{if(!(t instanceof Pt))throw new Error(`Object key must be a string: got ${t.type}`);return this.value.get(t.value)??e??new zt}))],["items",new Lt((()=>new Bt(Array.from(this.value.entries()).map((([t,e])=>new Bt([new Pt(t),e]))))))]])}toString(){let t;return t=this.orgValue&&this.orgValue.toString!==Object.prototype.toString?this.orgValue.toString():JSON.stringify(Object.fromEntries(this.value.entries())),t}toJSON(){return this.orgValue?this.orgValue:Object.fromEntries(this.value.entries())}__bool__(){return new qt(this.value.size>0)}},Ut=class extends Vt{constructor(){super(...arguments),this.type="KeywordArgumentsValue"}},Bt=class extends Mt{constructor(){super(...arguments),this.type="ArrayValue",this.builtins=new Map([["length",new Rt(this.value.length)]])}__bool__(){return new qt(this.value.length>0)}},_t=class extends Bt{constructor(){super(...arguments),this.type="TupleValue"}},Lt=class extends Mt{constructor(){super(...arguments),this.type="FunctionValue"}},zt=class extends Mt{constructor(){super(...arguments),this.type="NullValue"}},Dt=class extends Mt{constructor(){super(...arguments),this.type="UndefinedValue"}},Jt=class{constructor(t){this.parent=t,this.variables=new Map([["namespace",new Lt((t=>{if(0===t.length)return new Vt(new Map);if(1!==t.length||!(t[0]instanceof Vt))throw new Error("`namespace` expects either zero arguments or a single object argument");return t[0]}))]]),this.tests=new Map([["boolean",t=>"BooleanValue"===t.type],["callable",t=>t instanceof Lt],["odd",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "odd" to type: ${t.type}`);return t.value%2!=0}],["even",t=>{if("NumericValue"!==t.type)throw new Error(`Cannot apply test "even" to type: ${t.type}`);return t.value%2==0}],["false",t=>"BooleanValue"===t.type&&!t.value],["true",t=>"BooleanValue"===t.type&&t.value],["string",t=>"StringValue"===t.type],["number",t=>"NumericValue"===t.type],["integer",t=>"NumericValue"===t.type&&Number.isInteger(t.value)],["iterable",t=>t instanceof Bt||t instanceof Pt],["lower",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toLowerCase()}],["upper",t=>{const e=t.value;return"StringValue"===t.type&&e===e.toUpperCase()}],["none",t=>"NullValue"===t.type],["defined",t=>"UndefinedValue"!==t.type],["undefined",t=>"UndefinedValue"===t.type],["equalto",(t,e)=>t.value===e.value],["eq",(t,e)=>t.value===e.value]])}set(t,e){return this.declareVariable(t,Kt(e))}declareVariable(t,e){if(this.variables.has(t))throw new SyntaxError(`Variable already declared: ${t}`);return this.variables.set(t,e),e}setVariable(t,e){return this.variables.set(t,e),e}resolve(t){if(this.variables.has(t))return this;if(this.parent)return this.parent.resolve(t);throw new Error(`Unknown variable: ${t}`)}lookupVariable(t){try{return this.resolve(t).variables.get(t)??new Dt}catch{return new Dt}}},Wt=class{constructor(t){this.global=t??new Jt}run(t){return this.evaluate(t,this.global)}evaluateBinaryExpression(t,e){const r=this.evaluate(t.left,e);switch(t.operator.value){case"and":return r.__bool__().value?this.evaluate(t.right,e):r;case"or":return r.__bool__().value?r:this.evaluate(t.right,e)}const n=this.evaluate(t.right,e);switch(t.operator.value){case"==":return new qt(r.value==n.value);case"!=":return new qt(r.value!=n.value)}if(r instanceof Dt||n instanceof Dt)throw new Error("Cannot perform operation on undefined values");if(r instanceof zt||n instanceof zt)throw new Error("Cannot perform operation on null values");if(r instanceof Rt&&n instanceof Rt)switch(t.operator.value){case"+":return new Rt(r.value+n.value);case"-":return new Rt(r.value-n.value);case"*":return new Rt(r.value*n.value);case"/":return new Rt(r.value/n.value);case"%":return new Rt(r.value%n.value);case"<":return new qt(r.value<n.value);case">":return new qt(r.value>n.value);case">=":return new qt(r.value>=n.value);case"<=":return new qt(r.value<=n.value)}else if(r instanceof Bt&&n instanceof Bt){if("+"===t.operator.value)return new Bt(r.value.concat(n.value))}else if(n instanceof Bt){const e=void 0!==n.value.find((t=>t.value===r.value));switch(t.operator.value){case"in":return new qt(e);case"not in":return new qt(!e)}}if((r instanceof Pt||n instanceof Pt)&&"+"===t.operator.value)return new Pt(r.toString()+n.toString());if(r instanceof Pt&&n instanceof Pt)switch(t.operator.value){case"in":return new qt(n.value.includes(r.value));case"not in":return new qt(!n.value.includes(r.value))}if(r instanceof Pt&&n instanceof Vt)switch(t.operator.value){case"in":return new qt(n.value.has(r.value));case"not in":return new qt(!n.value.has(r.value))}throw new SyntaxError(`Unknown operator "${t.operator.value}" between ${r.type} and ${n.type}`)}evaluateArguments(t,e){const r=[],n=new Map;for(const s of t)if("KeywordArgumentExpression"===s.type){const t=s;n.set(t.key.value,this.evaluate(t.value,e))}else{if(n.size>0)throw new Error("Positional arguments must come before keyword arguments");r.push(this.evaluate(s,e))}return[r,n]}evaluateFilterExpression(t,e){const r=this.evaluate(t.operand,e);if("Identifier"===t.filter.type){const n=t.filter,s=e.lookupVariable(n.value);if(s instanceof Lt)return s.value([r],e);if(r instanceof Bt)switch(n.value){case"list":return r;case"first":return r.value[0];case"last":return r.value[r.value.length-1];case"length":return new Rt(r.value.length);case"reverse":return new Bt(r.value.reverse());case"sort":return new Bt(r.value.sort(((t,e)=>{if(t.type!==e.type)throw new Error(`Cannot compare different types: ${t.type} and ${e.type}`);switch(t.type){case"NumericValue":return t.value-e.value;case"StringValue":return t.value.localeCompare(e.value);default:throw new Error(`Cannot compare type: ${t.type}`)}})));default:throw new Error(`Unknown ArrayValue filter: ${n.value}`)}else if(r instanceof Pt)switch(n.value){case"length":return new Rt(r.value.length);case"upper":return new Pt(r.value.toUpperCase());case"lower":return new Pt(r.value.toLowerCase());case"title":return new Pt(It(r.value));case"capitalize":return new Pt(r.value.charAt(0).toUpperCase()+r.value.slice(1));case"trim":return new Pt(r.value.trim());case"trimStart":return new Pt(r.value.trimStart());case"trimEnd":return new Pt(r.value.trimEnd());case"indent":return new Pt(r.value.split("\n").map(((t,e)=>0===e||0===t.length?t:" "+t)).join("\n"));case"string":return r;default:throw new Error(`Unknown StringValue filter: ${n.value}`)}else{if(r instanceof Rt){if("abs"===n.value)return new Rt(Math.abs(r.value));throw new Error(`Unknown NumericValue filter: ${n.value}`)}if(r instanceof Vt)switch(n.value){case"items":return new Bt(Array.from(r.value.entries()).map((([t,e])=>new Bt([new Pt(t),e]))));case"length":return new Rt(r.value.size);case"string":return new Pt(r.toString());default:throw new Error(`Unknown ObjectValue filter: ${n.value}`)}}throw new Error(`Cannot apply filter "${n.value}" to type: ${r.type}`)}if("CallExpression"===t.filter.type){const n=t.filter;if("Identifier"!==n.callee.type)throw new Error(`Unknown filter: ${n.callee.type}`);const s=n.callee.value,i=e.lookupVariable(s);if(i instanceof Lt){const[t,s]=this.evaluateArguments(n.args,e);return s.size>0&&t.push(new Ut(s)),i.value([r,...t],e)}if(r instanceof Bt){switch(s){case"selectattr":{if(r.value.some((t=>!(t instanceof Vt))))throw new Error("`selectattr` can only be applied to array of objects");if(n.args.some((t=>"StringLiteral"!==t.type)))throw new Error("arguments of `selectattr` must be strings");const[t,s,i]=n.args.map((t=>this.evaluate(t,e)));let o;if(s){const t=e.tests.get(s.value);if(!t)throw new Error(`Unknown test: ${s.value}`);o=t}else o=(...t)=>t[0].__bool__().value;const a=r.value.filter((e=>{const r=e.value.get(t.value);return!!r&&o(r,i)}));return new Bt(a)}case"map":{const[,t]=this.evaluateArguments(n.args,e);if(t.has("attribute")){const e=t.get("attribute");if(!(e instanceof Pt))throw new Error("attribute must be a string");const n=t.get("default"),s=r.value.map((t=>{if(!(t instanceof Vt))throw new Error("items in map must be an object");return t.value.get(e.value)??n??new Dt}));return new Bt(s)}throw new Error("`map` expressions without `attribute` set are not currently supported.")}}throw new Error(`Unknown ArrayValue filter: ${s}`)}if(r instanceof Pt){if("indent"===s){const[t,s]=this.evaluateArguments(n.args,e),i=t.at(0)??s.get("width")??new Rt(4);if(!(i instanceof Rt))throw new Error("width must be a number");const o=t.at(1)??s.get("first")??new qt(!1),a=t.at(2)??s.get("blank")??new qt(!1),c=r.value.split("\n"),u=" ".repeat(i.value),l=c.map(((t,e)=>!o.value&&0===e||!a.value&&0===t.length?t:u+t));return new Pt(l.join("\n"))}throw new Error(`Unknown StringValue filter: ${s}`)}throw new Error(`Cannot apply filter "${s}" to type: ${r.type}`)}throw new Error(`Unknown filter: ${t.filter.type}`)}evaluateTestExpression(t,e){const r=this.evaluate(t.operand,e),n=e.tests.get(t.test.value);if(!n)throw new Error(`Unknown test: ${t.test.value}`);const s=n(r);return new qt(t.negate?!s:s)}evaluateUnaryExpression(t,e){const r=this.evaluate(t.argument,e);if("not"===t.operator.value)return new qt(!r.value);throw new SyntaxError(`Unknown operator: ${t.operator.value}`)}evalProgram(t,e){return this.evaluateBlock(t.body,e)}evaluateBlock(t,e){let r="";for(const n of t){const t=this.evaluate(n,e);"NullValue"!==t.type&&"UndefinedValue"!==t.type&&(r+=t)}return new Pt(r)}evaluateIdentifier(t,e){return e.lookupVariable(t.value)}evaluateCallExpression(t,e){const[r,n]=this.evaluateArguments(t.args,e);n.size>0&&r.push(new Ut(n));const s=this.evaluate(t.callee,e);if("FunctionValue"!==s.type)throw new Error(`Cannot call something that is not a function: got ${s.type}`);return s.value(r,e)}evaluateSliceExpression(t,e,r){if(!(t instanceof Bt||t instanceof Pt))throw new Error("Slice object must be an array or string");const n=this.evaluate(e.start,r),s=this.evaluate(e.stop,r),i=this.evaluate(e.step,r);if(!(n instanceof Rt||n instanceof Dt))throw new Error("Slice start must be numeric or undefined");if(!(s instanceof Rt||s instanceof Dt))throw new Error("Slice stop must be numeric or undefined");if(!(i instanceof Rt||i instanceof Dt))throw new Error("Slice step must be numeric or undefined");return t instanceof Bt?new Bt(Ft(t.value,n.value,s.value,i.value)):new Pt(Ft(Array.from(t.value),n.value,s.value,i.value).join(""))}evaluateMemberExpression(t,e){const r=this.evaluate(t.object,e);let n,s;if(t.computed){if("SliceExpression"===t.property.type)return this.evaluateSliceExpression(r,t.property,e);n=this.evaluate(t.property,e)}else n=new Pt(t.property.value);if(r instanceof Vt){if(!(n instanceof Pt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.value.get(n.value)??r.builtins.get(n.value)}else if(r instanceof Bt||r instanceof Pt)if(n instanceof Rt)s=r.value.at(n.value),r instanceof Pt&&(s=new Pt(r.value.at(n.value)));else{if(!(n instanceof Pt))throw new Error(`Cannot access property with non-string/non-number: got ${n.type}`);s=r.builtins.get(n.value)}else{if(!(n instanceof Pt))throw new Error(`Cannot access property with non-string: got ${n.type}`);s=r.builtins.get(n.value)}return s instanceof Mt?s:new Dt}evaluateSet(t,e){const r=this.evaluate(t.value,e);if("Identifier"===t.assignee.type){const n=t.assignee.value;e.setVariable(n,r)}else{if("MemberExpression"!==t.assignee.type)throw new Error(`Invalid LHS inside assignment expression: ${JSON.stringify(t.assignee)}`);{const n=t.assignee,s=this.evaluate(n.object,e);if(!(s instanceof Vt))throw new Error("Cannot assign to member of non-object");if("Identifier"!==n.property.type)throw new Error("Cannot assign to member with non-identifier property");s.value.set(n.property.value,r)}}return new zt}evaluateIf(t,e){const r=this.evaluate(t.test,e);return this.evaluateBlock(r.__bool__().value?t.body:t.alternate,e)}evaluateFor(t,e){const r=new Jt(e);let n,s;if("SelectExpression"===t.iterable.type){const e=t.iterable;s=this.evaluate(e.iterable,r),n=e.test}else s=this.evaluate(t.iterable,r);if(!(s instanceof Bt))throw new Error(`Expected iterable type in for loop: got ${s.type}`);const i=[],o=[];for(let e=0;e<s.value.length;++e){const a=new Jt(r),c=s.value[e];let u;if("Identifier"===t.loopvar.type)u=e=>e.setVariable(t.loopvar.value,c);else{if("TupleLiteral"!==t.loopvar.type)throw new Error(`Invalid loop variable(s): ${t.loopvar.type}`);{const e=t.loopvar;if("ArrayValue"!==c.type)throw new Error(`Cannot unpack non-iterable type: ${c.type}`);const r=c;if(e.value.length!==r.value.length)throw new Error(`Too ${e.value.length>r.value.length?"few":"many"} items to unpack`);u=t=>{for(let n=0;n<e.value.length;++n){if("Identifier"!==e.value[n].type)throw new Error(`Cannot unpack non-identifier type: ${e.value[n].type}`);t.setVariable(e.value[n].value,r.value[n])}}}}if(n){u(a);if(!this.evaluate(n,a).__bool__().value)continue}i.push(c),o.push(u)}let a="",c=!0;for(let e=0;e<i.length;++e){const n=new Map([["index",new Rt(e+1)],["index0",new Rt(e)],["revindex",new Rt(i.length-e)],["revindex0",new Rt(i.length-e-1)],["first",new qt(0===e)],["last",new qt(e===i.length-1)],["length",new Rt(i.length)],["previtem",e>0?i[e-1]:new Dt],["nextitem",e<i.length-1?i[e+1]:new Dt]]);r.setVariable("loop",new Vt(n)),o[e](r);a+=this.evaluateBlock(t.body,r).value,c=!1}if(c){a+=this.evaluateBlock(t.defaultBlock,r).value}return new Pt(a)}evaluateMacro(t,e){return e.setVariable(t.name.value,new Lt(((e,r)=>{const n=new Jt(r);let s;e=e.slice(),"KeywordArgumentsValue"===e.at(-1)?.type&&(s=e.pop());for(let r=0;r<t.args.length;++r){const i=t.args[r],o=e[r];if("Identifier"===i.type){const t=i;if(!o)throw new Error(`Missing positional argument: ${t.value}`);n.setVariable(t.value,o)}else{if("KeywordArgumentExpression"!==i.type)throw new Error(`Unknown argument type: ${i.type}`);{const t=i,e=o??s?.value.get(t.key.value)??this.evaluate(t.value,n);n.setVariable(t.key.value,e)}}}return this.evaluateBlock(t.body,n)}))),new zt}evaluate(t,e){if(void 0===t)return new Dt;switch(t.type){case"Program":return this.evalProgram(t,e);case"Set":return this.evaluateSet(t,e);case"If":return this.evaluateIf(t,e);case"For":return this.evaluateFor(t,e);case"Macro":return this.evaluateMacro(t,e);case"NumericLiteral":return new Rt(Number(t.value));case"StringLiteral":return new Pt(t.value);case"BooleanLiteral":return new qt(t.value);case"ArrayLiteral":return new Bt(t.value.map((t=>this.evaluate(t,e))));case"TupleLiteral":return new _t(t.value.map((t=>this.evaluate(t,e))));case"ObjectLiteral":{const r=new Map;for(const[n,s]of t.value){const t=this.evaluate(n,e);if(!(t instanceof Pt))throw new Error(`Object keys must be strings: got ${t.type}`);r.set(t.value,this.evaluate(s,e))}return new Vt(r,t.value)}case"Identifier":return this.evaluateIdentifier(t,e);case"CallExpression":return this.evaluateCallExpression(t,e);case"MemberExpression":return this.evaluateMemberExpression(t,e);case"UnaryExpression":return this.evaluateUnaryExpression(t,e);case"BinaryExpression":return this.evaluateBinaryExpression(t,e);case"FilterExpression":return this.evaluateFilterExpression(t,e);case"TestExpression":return this.evaluateTestExpression(t,e);default:throw new SyntaxError(`Unknown node type: ${t.type}`)}}};function Kt(t){switch(typeof t){case"number":return new Rt(t);case"string":return new Pt(t);case"boolean":return new qt(t);case"undefined":return new Dt;case"object":return null===t?new zt:Array.isArray(t)?new Bt(t.map(Kt)):new Vt(new Map(Object.entries(t).map((([t,e])=>[t,Kt(e)]))),t);case"function":return new Lt(((e,r)=>{const n=e.map((t=>Ht(t)));return Kt(t(...n)??null)}));default:throw new Error(`Cannot convert to runtime value: ${t}`)}}function Ht(t){let e=t;if(Array.isArray(t))e=t.map((t=>Ht(t)));else if(t instanceof Map)e={},t.forEach(((t,r)=>{e[r]=Ht(t)}));else switch(t.type){case"NullValue":e=null;break;case"UndefinedValue":e=void 0;break;case"ArrayValue":e=t.value.map((t=>Ht(t)));break;case"KeywordArgumentsValue":case"ObjectValue":e=t.orgValue?t.orgValue:Ht(t.value),"KeywordArgumentsValue"===t.type&&Object.setPrototypeOf(e,{jinja_kargs:!0});break;default:t.type&&(e=t.value)}return e}function Gt(t,e=0){return Math.floor(Math.random()*(t-e+1))+e}var Xt={randomInt:Gt,select:function(t,e){if(Array.isArray(t)||"string"==typeof t)return void 0===e?e=Gt(t.length-1):"string"==typeof e&&(e=parseInt(e)),e<0&&(e=t.length+e),t[e];if(t&&"object"==typeof t){if(void 0===e){const r=Object.keys(t);e=r[Gt(r.length-1)]}return t[e]}},tojson:function(t,e,r){return e&&"object"==typeof e&&(e.depth&&(r=e.depth),e=e.indent),Zt(t,e,r)}};function Zt(t,e,r){let n="";const s=r??0;if(null===t)n="null";else{const r=typeof t;switch(r){case"undefined":n="null";case"number":case"string":case"boolean":return JSON.stringify(t);case"object":{const r=e?" ".repeat(e):"",n="\n"+r.repeat(s),i=n+r;if(Array.isArray(t)){const r=t.map((t=>Zt(t,e,s+1)));return e?`[${i}${r.join(`,${i}`)}${n}]`:`[${r.join(", ")}]`}{const r=Array.from(Object.entries(t)).map((([t,r])=>{const n=`"${t}": ${Zt(r,e,s+1)}`;return e?`${i}${n}`:n}));return e?`{${r.join(",")}${n}}`:`{${r.join(", ")}}`}}default:throw new Error(`Cannot convert to JSON: ${r}`)}}return n}var Yt=class extends Jt{constructor(t){super(t),this.parent=t}assign(t){for(const[e,r]of Object.entries(t))this.set(e,r)}clear(){this.variables.clear()}},Qt=class t{static{this.global=new Yt}constructor(t,e={}){const r=it(t,e={lstrip_blocks:!0,trim_blocks:!0,...e});this.parsed=Ct(r)}render(e){const r=new Jt(t.global);r.set("false",!1),r.set("true",!0),r.set("raise_exception",(t=>{throw new Error(t)})),r.set("range",Nt);for(const[t,n]of Object.entries(e))r.set(t,n);return new Wt(r).run(this.parsed).toString()}};function te(t,e){let r;switch(t.type){case"Identifier":r=t.value;break;case"MemberExpression":r=te(t.object,e);break;case"FilterExpression":r=te(t.operand,e);break;case"Set":{e||(e=[]);const n=te(t.assignee);n&&e.push(n),r=te(t.value,e);break}}return r&&e?.includes(r)&&(r=void 0),r}function ee(t){let e;if("Program"===t.type)e=t.body.some((t=>ee(t)));else e=t.isStatement;return e}function re(t,e){let r=[];if(Array.isArray(t))r=t.map((t=>re(t,e))).filter(Boolean).flat();else switch(t.type){case"Program":r=t.body.map((t=>re(t,e))).filter(Boolean).flat();break;case"If":r=[te(t.test,e),...re(t.body,e),...re(t.alternate,e)].filter(Boolean);break;case"BinaryExpression":r=[te(t.left,e),te(t.right,e)].filter(Boolean);break;case"For":{const n=te(t.loopvar);n&&(e||(e=[]),e.push(n)),r=[te(t.iterable,e),...re(t.body,e)].filter(Boolean);break}case"CallExpression":r=[te(t.callee,e),...re(t.args,e)].filter(Boolean);break;default:r=[te(t,e)].filter(Boolean)}return r}Qt.global.assign(Xt);var ne=class extends H{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=new Qt(r)}catch(t){}return e&&(n=ee(e.parsed)),n}getVariables(t=this.compiledTemplate){return re(t.parsed,[]).filter(((t,e,r)=>r.indexOf(t)===e))}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=new Qt(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return this.compiledTemplate.render(t)}};function se(t){return function(e){return t}}function ie(t){const e=t.split(""),r=[],n=(t,r)=>{for(let n=r;n<e.length;n+=1)if(t.includes(e[n]))return n;return-1};let s=0;for(;s<e.length;)if("{"===e[s]&&s+1<e.length&&"{"===e[s+1])r.push({type:"literal",text:"{"}),s+=2;else if("}"===e[s]&&s+1<e.length&&"}"===e[s+1])r.push({type:"literal",text:"}"}),s+=2;else if("{"===e[s]){const t=n("}",s);if(t<0)throw new Error("Unclosed '{' in template.");r.push({type:"variable",name:e.slice(s+1,t).join("")}),s=t+1}else{if("}"===e[s])throw new Error("Single '}' in template.");{const t=n("{}",s),i=(t<0?e.slice(s):e.slice(s,t)).join("");r.push({type:"literal",text:i}),s=t<0?e.length:t}}return r}function oe(t,e){return t.reduce(((t,r)=>{let n;return n="variable"===r.type?r.name in e?t+e[r.name]:t:t+r.text,n}),"")}function ae(t){const e=new Set;return t.forEach((t=>{"variable"===t.type&&e.add(t.name)})),[...e]}H.register(ne,{name:"hf",aliases:["huggingface","internal","default"]});var ce=class extends H{static isTemplate(t){let e,r,n=!1;if("object"==typeof t?(r=t.template,e=t.compiledTemplate):r=t,!e&&r)try{e=ie(r)}catch(t){}if(e){n=ae(e).length>0}return n}getVariables(t=this.compiledTemplate){return ae(t)}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.compiledTemplate=ie(e),this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables()}_format(t){return oe(this.compiledTemplate,t)}};function ue(t,e){return"string"==typeof e&&(e=e.split(".").filter((t=>t.length))),e.reduce(((t,e)=>t?.[e]),t)}function le(t,e,r){let n=function(t,e,r){return t.replace(/{{\s*re_replace\s+\.(.+?)\s+(["'])([^\2]*?)\2\s+(["'])([^\4]*?)\4\s*}}/g,((t,n,s,i,o,a)=>{if(r)return e[n]=null,t;const c=new RegExp(i,"g");return ue(e,n).replace(c,a)}))}(t,e,r);return n=function(t,e,r){return t.replace(/{{\s*join\s+\.(.+?)\s+(["'])([^\2]*?)\2\s*}}/g,((t,n,s,i)=>r?(e[n]=null,t):ue(e,n).join(i)))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*if\s*(\S+?)\s*}}([^{]*)({{\s*else\s*}}([^{]*))?{{\s*end\s*}}/g,((t,n,s,i,o)=>{if(r)return n.startsWith(".")&&(n=n.substring(1)),e[n]=null,t;let a;if(!n.startsWith("."))throw new Error("Functionality not implemented");{const t=ue(e,n.substring(1));if(null==t)a=o??"";else if("string"==typeof t)a=t.length>0?s:o??"";else if(Array.isArray(t))a=t.length>0?s:o??"";else{if("boolean"!=typeof t)throw new Error(`Unexpected type for variable ${n}: ${typeof t}`);a=t?s:o??""}}return a}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*range\s*[.$]([^{}\s]+?)\s*}}([^{]*?){{\.}}([^{]*?){{\s*end\s*}}/g,((t,n,s,i)=>{if(r)return e[n]=null,t;const o=ue(e,n);if(Array.isArray(o)){let t="";for(const e of o)t+=`${s}${e}${i}`;return t}return t}))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*\.([^{}\s]+?)\s*}}/g,((t,n)=>r?(e[n]=null,t):ue(e,n)||""))}(n,e,r),n=function(t,e,r){return t.replace(/{{\s*index\s*\.(.+?)\s+(.+?)\s*}}/g,((t,n,s)=>{if(r)return e[n]=null,t;const i=ue(e,n);let o;return o=isNaN(s)?i[s.substring(1,s.length-1)]:i[parseInt(s,10)],o||""}))}(n,e,r),n}H.register(ce,{name:"fstring",aliases:["python","f-string","langchain"]});var he=class extends H{static isTemplate(t){const e="string"==typeof t?t:t.template;return e?.includes("{{")&&e.includes("}}")}getVariables(t){const e={};return le(t,e,!0),[...Object.keys(e)]}_initialize(t){const e=t?.template;if("string"!=typeof e)throw new E("Prompt template must be a string","PromptTemplate",400);this.inputVariables=Array.isArray(t?.inputVariables)?t.inputVariables:this.getVariables(e)}_format(t){return le(this.template,t)}};function fe(t){return Object.keys(t).sort().map((e=>t[e]))}H.register(he,{name:"golang",aliases:["localai","ollama"]});var pe=class extends H{static from(t){return new this(t)}constructor(t){super(t)}_initialize(t){t&&(t.suffix&&(this.suffix=t.suffix),t.exampleSeparator&&(this.exampleSeparator=t.exampleSeparator),t.prefix&&(this.prefix=t.prefix),t.examplePrompt&&(this.examplePrompt=t.examplePrompt instanceof H?t.examplePrompt:H.from(t.examplePrompt)),t.examples&&(this.examples=t.examples)),this.prefix||(this.prefix=""),this.exampleSeparator||(this.exampleSeparator="\n\n"),this.suffix||(this.suffix="")}async _format(t){const e=[];for await(const t of this.examples)if(this.examplePrompt){const r=await this.examplePrompt.format(t);e.push(r)}else if("string"==typeof t)e.push(t);else if(t){const r=fe(t);r.length>0&&e.push(...r)}const r=[this.prefix,...e,this.suffix].join(this.exampleSeparator),n=this.templateFormat;return await H.format({template:r,data:t,templateFormat:n})}toJSON(t=this){const e=super.toJSON(t);return t.suffix&&(e.suffix=t.suffix),t.exampleSeparator&&(e.exampleSeparator=t.exampleSeparator),t.prefix&&(e.prefix=t.prefix),t.examplePrompt&&(e.examplePrompt=t.examplePrompt),t.examples&&(e.examples=t.examples),e}};H.register(pe,{name:"fewshot",aliases:["few_shot"]});var we=/(\\)?(\$)(?!\()(\{?)([\w.]+)(?::?-((?:\$\{(?:\$\{(?:\$\{[^}]*\}|[^}])*}|[^}])*}|[^}])+))?(\}?)/gi;function de(t){return t.replace(/\\\$/g,"$")}function me(t,e,r){return t.replace(we,((n,s,i,o,a,c,u)=>"\\"===s?n.slice(1):e[a]?e[a]===r[a]?e[a]:me(e[a],e,r):r[a]?r[a]===t?r[a]:me(r[a],e,r):c?c.startsWith("$")?me(c,e,r):c:""))}function ye(t){let e=process.env;t&&null!=t.processEnv&&(e=t.processEnv);for(const r in t.parsed){let n=t.parsed[r];if(!n)continue;n=Object.prototype.hasOwnProperty.call(e,r)?e[r]===t.parsed[r]?me(n,e,t.parsed):e[r]:me(n,e,t.parsed),t.parsed[r]=n?de(n):n}for(const r in t.parsed)e[r]=t.parsed[r];return t}function be(t,e={},r){switch(r||(r=new WeakSet),e.processEnv||(e.processEnv={...process.env}),e.parsed||(e.parsed=e.processEnv),typeof t){case"string":t=me(t,e.processEnv,e.parsed);break;case"object":if(r.has(t))return t;if(r.add(t),Array.isArray(t))for(let n=0;n<t.length;n++){const s=t[n];"string"!=typeof s&&"object"!=typeof s||(t[n]=be(t[n],e,r))}else for(const[n,s]of Object.entries(t))"string"!=typeof s&&"object"!=typeof s||(t[n]=be(s,e,r))}return t}var ge="@",xe=/(\S.+?[.!?])(?=\s+|$)|(\S.+?)(?=[\n]|$)/g,ve=/([A-Z][a-z]{1,2}\.)\s(\w)/g,Ee=/(\.[a-zA-Z]\.)\s(\w)/g,Se=new RegExp("([A-Z][a-z]{1,2}\\.)"+ge+"(\\w)","g"),$e=new RegExp("(\\.[a-zA-Z]\\.)"+ge+"(\\w)","g");function ke(t,e,r){const n="$1"+e+"$2";let s=t;for(let t=0;t<r.length;t++)s=s.replace(r[t],n);return s}function Ae(t,e=!0){const r=(t=(t=(t=(t=(t=t.replace(/([。!??])\1+/g,"$1")).replace(/([。!??])([^”’])/g,"$1\n$2")).replace(/(\.{6})([^”’])/g,"$1\n$2")).replace(/(…{2})([^”’])/g,"$1\n$2")).replace(/([。!??][”’])([^,。!??])/g,"$1\n$2")).split("\n");let n=[];for(let t=0;t<r.length;t++){let s=r[t].trim();if(!s)continue;if(!e){n.push(s);continue}let i=ke(s,ge,[ve,Ee]),o=Array.from(i.matchAll(xe));if(o.length)for(let t=0;t<o.length;t++){let e=ke(o[t][0]," ",[Se,$e]);n.push(e)}else n.push(s)}return n}function Oe(t,e=2,r=.5){const n=10**e;return Math.trunc((t+Number.EPSILON+r/n)*n)/n}async function Te(t){return new Promise((e=>setTimeout(e,t)))}var je=require("custom-ability"),Ce="event",Ne="event-bus";var Fe=(0,je.createAbilityInjector)((function(t){return class{static get emitter(){if(!this._emitter){const t=this.get(Ne)?.emitter;t&&(this._emitter=t,this.prototype._events=t._events)}return this._emitter}get emitter(){return this.constructor._emitter}on(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.on(e,r)}once(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.once(e,r)}off(e,r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.off(e,r)}emit(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return"error"===e?this.emitError.apply(this,r):n.emit.call(this,e,this.name,...r)}emitError(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emit.call(this,"error",e,this.name,...r)}async emitAsync(e,...r){const n=t.emitter;if(!n)throw new TypeError("EventBackend required");return n.emitAsync.call(this,e,this.name,...r)}}}),!0);function Ie(t,e){return!t||t.some((t=>t instanceof RegExp?t.test(e):t===e))}var Me=498,Re=class{get active(){return this._active}set active(t){t!==this._active&&(t?(this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0),this.options.pingInterval>0&&(this.pingTimer=setInterval((()=>this.publish()),this.options.pingInterval))):(this.clients.size&&this.clearClients(),this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0)),this._active=t)}constructor(t){this.options=Object.assign({},{pingInterval:3e3,maxStreamDuration:3e4,clientRetryInterval:1e3,startId:1,historySize:100,rewind:0,cors:!1},t),this.nextID=this.options.startId,this.clients=new Set,this.messages=[],this.active=!0}publish(t,e){let r,n;this.active||T("Channel closed","SSEChannel",Me);let s=e;if(t||e)n=this.nextID++,"object"==typeof t&&(t.event?(s=t.event,void 0!==t.data&&(t=JSON.stringify(t.data))):t=JSON.stringify(t)),t=t?t.split(/[\r\n]+/).map((t=>"data: "+t)).join("\n"):"",r="id: "+n+"\n"+(e?"event: "+e+"\n":"")+(t||"data: ")+"\n\n",this.messages.push({id:n,_eventName:s,output:r});else{if(!this.clients.size)return;r="data: \n\n"}for([...this.clients].filter((t=>!s||Ie(t.events,s))).forEach(((t,e)=>{t.res.write(r)}));this.messages.length>this.options.historySize;)this.messages.shift();return n}subscribe(t,e,r){this.active||T("Channel closed","SSEChannel",Me);const n={req:t,res:e,events:r},s=this.options.maxStreamDuration;let i="max-age=0, stale-while-revalidate=0, stale-if-error=0, no-transform";s>0&&(i+=", s-maxage="+(Math.floor(s/1e3)-1));const o={"Content-Type":"text/event-stream","Cache-Control":i,Connection:"keep-alive"};this.options.cors&&(o["access-control-allow-origin"]="*"),n.req.socket.setNoDelay(!0),n.res.writeHead(200,o);let a="retry: "+this.options.clientRetryInterval+"\n\n";const c=Number.parseInt(t.headers["last-event-id"],10),u=Number.isNaN(c)?this.options.rewind:this.nextID-1-c;return u&&this.messages.filter((t=>Ie(n.events,t.eventName))).slice(0-u).forEach((t=>{a+=t.output})),n.res.write(a),this.clients.add(n),s>0&&setTimeout((()=>{n.res.writableEnded||this.unsubscribe(n)}),s),n.res.on("close",(()=>this.unsubscribe(n))),n}unsubscribe(t){t.res.end(),this.clients.delete(t)}clearClients(){this.clients.forEach((t=>t.res.end())),this.clients.clear()}listClients(){const t={};return this.clients.forEach((e=>{const r=e.req.socket.remoteAddress??"";r in t||(t[r]=0),t[r]++})),t}getSubscriberCount(){return this.clients.size}};function Pe(t){return t instanceof ReadableStream||t instanceof WritableStream}var qe=600,Ve=601,Ue=class extends v{constructor(t,e=qe){super(t,500)}};function Be(t){if(t){const e=t.getReader();return new ReadableStream({async start(t){const{done:r,value:n}=await e.read();if(!r){const e=(new TextDecoder).decode(n);t.error(new Ue(`Response error: ${e}`,Ve))}}})}return new ReadableStream({start(t){t.error(new Ue("Response error: No response body",Ve))}})}function _e(){return new ReadableStream({start(t){t.close()}})}var Le=require("eventsource-parser");function ze(t){const e=new TextDecoder;let r;return new TransformStream({async start(e){r=(0,Le.createParser)((r=>{if("data"in r&&"event"===r.type&&"[DONE]"===r.data||"done"===r.event)e.terminate();else if("data"in r){const n=t?t(r.data,{event:r.event}):r.data;n&&e.enqueue(n)}}))},transform(t){r.feed(e.decode(t))}})}function De(){let t=!0;return e=>(t&&(e=e.trimStart())&&(t=!1),e)}function Je(t,e){if(!t.ok)return Be(t.body);let r=t.body||new ReadableStream({start(t){t.close()}});return r instanceof ReadableStream||(r=ReadableStream.from(r)),r.pipeThrough(ze(e))}function We(t){let e=t[Symbol.asyncIterator]();return new ReadableStream({async pull(t){const{done:r,value:n}=await e.next();r?t.close():t.enqueue(n)},async cancel(t){await(e.return?.(t))}})}function Ke(t){const e=t||{};return new TransformStream({async start(t){const r=t.error;if(t.error=n=>{r.call(t,n),e.onError&&e.onError(n)},e.onStart)try{await e.onStart(t)}catch(e){t.error(e)}},async transform(t,r){try{let n;e.onTransform&&(n=await e.onTransform(t,r)),n||(n=t),r.enqueue(n)}catch(t){r.error(t)}},async flush(t){if(e.onFinal)try{await e.onFinal(t)}catch(e){return t.error(e)}t.terminate()}})}var He={};a(He,{XXHashAlgorithm:()=>lr,base32768:()=>sr,uuid:()=>Qe,uuidNIL:()=>Ze.NIL,uuidParse:()=>Ze.parse,uuidStringify:()=>Ze.stringify,uuidValidate:()=>Ze.validate,uuidVersion:()=>Ze.version,uuidv1:()=>Ze.v1,uuidv4:()=>Ze.v4,uuidv5:()=>Ze.v5,xxhash:()=>hr,xxhash32:()=>cr,xxhash64:()=>ur,xxhashAsStr:()=>fr});var Ge=require("uuid"),Xe=l(require("base32768")),Ze=require("uuid"),Ye={1:Ge.v1,4:Ge.v4,5:Ge.v5};function Qe(t=1,e){const r=Ye[t];return e?Xe.encode(r(null,[])):r()}var tr={};a(tr,{XXHashAlgorithm:()=>lr,base32768:()=>sr,xxhash:()=>hr,xxhash32:()=>cr,xxhash64:()=>ur,xxhashAsStr:()=>fr});var er=l(require("xxhashjs")),rr=l(require("base32768")),nr=require("json-canonicalize");u(tr,require("json-canonicalize"));var sr=rr,{h32:ir,h64:or}=er.default,ar=588213;function cr(t,e=16){return"object"==typeof t&&(t=(0,nr.canonicalize)(t)),ir(t,ar).toString(e)}function ur(t,e=16){return"object"==typeof t&&(t=(0,nr.canonicalize)(t)),or(t,ar).toString(e)}var lr=(t=>(t[t.xxhash64=111]="xxhash64",t[t.xxhash32=112]="xxhash32",t))(lr||{});function hr(t,e=111,r=ar){let n;return t.buffer&&(t=t.buffer),112!==e?(n=or(t,r),n=new Uint16Array([n._a00,n._a16,n._a32,n._a48]),n=new Uint8Array(n.buffer)):(n=ir(t,r),n=new Uint16Array([n._low,n._high]),n=new Uint8Array(n.buffer)),n}function fr(t,e=111,r=ar){return rr.encode(hr(t,e,r))}u(He,tr),u(j,He);var pr=l(require("path")),wr=/[<>:"/\\|?*\u0000-\u001F]/,dr=/^(con|prn|aux|nul|com\d|lpt\d)$/i,mr=100,yr=/^\.+(\\|\/)|^\.+$/,br=/\.+$/,gr=/[\u0000-\u001F\u0080-\u009F\u200E\u200F\u202A-\u202E\u2066-\u2069]/;function xr(){return new RegExp(wr.source,"g")}function vr(){return new RegExp(gr.source,"g")}function Er(t){return t&&!(wr.test(t)||vr().test(t)||yr.test(t)||br.test(t))}function Sr(t){const e=t.split(pr.default.sep);return("/"===t[0]||e[0]&&pr.default.dirname(e[0])===e[0])&&e.shift(),e.every(Er)}function $r(t,e={}){const r=e.replacement||"!";if((wr.test(r)||gr.test(r))&&T("Replacement string cannot contain reserved filename characters","sanitizeFilename",400),r.length>0){const e=/([<>:"/\\|?*\u0000-\u001F]){2,}/;t=t.replace(e,"$1")}if(t=(t=(t=(t=(t=t.normalize("NFD")).replace(yr,r)).replace(xr(),r)).replace(vr(),r)).replace(br,""),r.length>0){"."===t[0]||"."!==t[0]||(t=r+t),"."===t[t.length-1]&&(t+=r)}t=dr.test(t)?t+r:t;const n="number"==typeof e.maxLength?e.maxLength:mr;if(t.length>n){const e=t.lastIndexOf(".");if(-1===e)t=t.slice(0,n);else{const r=t.slice(0,e),s=t.slice(e);t=r.slice(0,Math.max(1,n-s.length))+s}}return t}function kr(t,e={}){const r=t.split(pr.default.sep);let n;("/"===t[0]||r[0]&&pr.default.dirname(r[0])===r[0])&&(n=r.shift());const s=r.map((t=>$r(t,e)));return void 0!==n&&s.unshift(n),s.join(pr.default.sep)}function Ar(t,e=1){let r="";for(;e--;){const e=pr.default.extname(t);if(!e)break;r=e+r,t=pr.default.basename(t,e)}return r}function Or(t){return t.split(".").length-1}var Tr=require("util-ex");function jr(t,e){if("string"!=typeof t)throw new E("modelName must be a string","isModelNameMatched",400);switch(typeof e){case"string":if((0,Tr.isRegExpStr)(e)){const r=(e=(0,Tr.toRegExp)(e)).exec(t);if(r)return r}else if(t.toLowerCase()===e.toLowerCase())return e;break;case"object":if(Array.isArray(e)){for(const r of e)if("string"==typeof r){if((0,Tr.isRegExpStr)(r)){const n=(e=(0,Tr.toRegExp)(r)).exec(t);if(n)return n}else if(t.toLowerCase()===r.toLowerCase())return r}else if(r instanceof RegExp){const e=r.exec(t);if(e)return e}else if("function"==typeof r){const e=r.call(this,t);if(e)return e}}else if(e instanceof RegExp){const r=e.exec(t);if(r)return r}break;case"function":const r=e.call(this,t);if(r)return r}}function Cr(t){return Object.keys(t).filter((t=>Number.isNaN(Number(t))))}var Nr=require("util-ex");function Fr(t,e){if(e){const r=Object.keys(e);if(r.length){const n=Object.values(e);return(0,Nr.newFunction)("expression",r,`return ${t}`)(...n)}}return(0,Nr.newFunction)("expression",[],`return ${t}`)()}function Ir(t){return t?Mr(t,[],""):[]}function Mr(t,e,r="."){return Array.isArray(t)?t.flatMap(((t,r)=>Mr(t,[...e,`[${r}]`]))):(n=t)&&n.constructor===Object?Object.entries(t).flatMap((([t,n])=>Mr(n,[...e,r+t]))):[e.join("")];var n}function Rr(t){if(t<2)throw new E("repetitionThreshold must be greater than 1","createEndWithRepetitionDetector",400);const e=new RegExp(`([\\S\\s]+)(\\1{${t-1},})$`);return function(t){return e.exec(t)}}var Pr=l(require("path")),qr=l(require("fs"));function Vr(t,e,r,n){const s=n?.signal,i=n?.exclude;let o;if(Pr.default.isAbsolute(t)?o=qr.existsSync(t)?t:Ur(Pr.default.basename(t),[Pr.default.dirname(t)],{extNames:r,exclude:i,signal:s}):(e||(e=["."]),o=Ur(t,e,{extNames:r,exclude:i,signal:s})),!o)throw new $(t,"loadFileFromPaths");{const t=o;o=qr.readFileSync(o),n&&(n.filepath=t)}return o}function Ur(t,e,{extNames:r,signal:n,exclude:s=[]}){let i;const o=r?r.map((e=>Ar(t,Or(e)))):void 0;"string"==typeof s&&(s=[s]);for(const a of e){if(n?.aborted)throw n.reason;const e=Pr.default.resolve(a,t);if(o)for(let t=0;t<o.length;t++){const n=e+(o[t]!==r[t]?r[t]:"");if(!s.includes(n)&&qr.existsSync(n)){i=n;break}}else if(!s.includes(e)&&qr.existsSync(e)){i=e;break}}return i}function Br(t,e,r,n,s){let i;"string"==typeof n?(i=n,n=void 0):i=n?.encoding??"utf8";return Vr(t,e,r,n).toString(i)}function _r(t,e,r){const n=[],s="string"==typeof t?[t]:[...t],i=new Set;for(;s.length>0;){if(r?.aborted)throw r.reason;const t=Lr(s.pop()),o=Pr.default.resolve(t);if(i.has(o))continue;i.add(o);const a=qr.statSync(t,{throwIfNoEntry:!1});if(a?.isDirectory()){const r=qr.readdirSync(t,{withFileTypes:!0});for(let i=0;i<r.length;i++){const o=r[i],a=Pr.default.join(t,o.name);o.isDirectory()?s.push(a):!o.isFile()||e&&!e(a)||n.push(a)}}}return n}function Lr(t){const e=qr.lstatSync(t,{throwIfNoEntry:!1});return e?.isSymbolicLink()&&(t=qr.readlinkSync(t)),t}var zr=require("fs"),Dr=l(require("path")),Jr=require("load-config-file"),Wr=require("yaml"),Kr=require("yaml-types"),Hr=require("mime-type/with-db"),Gr=require("yaml"),Xr=[Kr.regexp];function Zr(t){Array.isArray(t)||(t=[t]);for(const e of t){-1===Xr.indexOf(e)&&Xr.push(e)}}function Yr(t){return(0,Wr.parse)(t,{customTags:Xr})}function Qr(t,e){const r=[],n=e?.after,s=e?.exclude?"string"==typeof e.exclude?[e.exclude]:e.exclude:void 0,i=e?.extensions?"string"==typeof e.extensions?[e.extensions]:e.extensions.map((t=>t.startsWith(".")?t:"."+t)):[".yml",".yaml",".json"];return function(t,e){const r=(0,zr.readdirSync)(t,{withFileTypes:!0,recursive:!0});for(const n of r){const r=Dr.default.join(t,n.name);n.isFile()&&e(r,n)}}(t,((t,e)=>{if(s?.includes(t))return;const o=Dr.default.extname(t),a=(0,zr.statSync)(t);if(i.includes(o)){if(n?.hasOwnProperty(t)&&a.mtimeMs<=n[t])return;r.push(t)}})),r}function tn(t,e){return Qr(t,e).map((t=>Jr.Config.loadSync(t))).filter((t=>void 0!==t))}function en(t,e,r=1){"."===t[0]&&r++;const n=Ar(t,r);(!n||n.split(".").length<=1)&&(t+=".yaml");const s=Hr.mimeType.lookup(t);if("application/json"===s)e=JSON.stringify(e,null,2);else{if("text/yaml"!==s)throw new Error(`${t} unsupported mime type: ${s}`);e=(0,Wr.stringify)(e)}const i=Dr.default.dirname(t);return(0,zr.existsSync)(i)||(0,zr.mkdirSync)(i,{recursive:!0}),(0,zr.writeFileSync)(t,e,{encoding:"utf8"}),t}function rn(t){t instanceof Date&&(t=t.toISOString());return function(t,e){return t?`'${e}'`:String(e)}("string"==typeof t,t)}function nn(t,e){return t.map((t=>an(t,e))).join(" AND ")}function sn(t,e){return t.map((t=>an(t,e))).join(" OR ")}function on(t,e){const r=[];return Object.keys(e).forEach((n=>{const s=e[n];switch(n){case"$lt":case"<":r.push(`${t} < ${rn(s)}`);break;case"<=":case"$lte":r.push(`${t} <= ${rn(s)}`);break;case"$gt":case">":r.push(`${t} > ${rn(s)}`);break;case"$gte":case">=":r.push(`${t} >= ${rn(s)}`);break;case"$ne":case"!=":r.push(`${t} != ${rn(s)}`);break;case"=":case"$eq":r.push(`${t} = ${rn(s)}`);break;case"$in":r.push(`${t} IN (${s.map((t=>rn(t))).join(", ")})`);break;case"$nin":r.push(`${t} NOT IN (${s.map((t=>rn(t))).join(", ")})`);break;case"$regex":r.push(`${t} REGEXP '${s.source}'`);break;case"$like":r.push(`${t} LIKE '${s}'`);break;case"$nlike":r.push(`${t} NOT LIKE '${s}'`);break;case"$glob":r.push(`${t} GLOB '${s}'`);break;case"$nglob":r.push(`${t} NOT GLOB '${s}'`);break;default:throw new Error(`Unsupported condition operator: ${n}`)}})),r.join(" AND ")}function an(t,e){const r=[];if("function"!=typeof e&&(e=t=>t),Array.isArray(t))r.push(nn(t,e));else for(const[n,s]of Object.entries(t))if("$and"===n)r.push(`(${nn(t[n],e)})`);else if("$or"===n)r.push(`(${sn(t[n],e)})`);else{const t=typeof s;if(null==s)r.push(`${e(n)} IS NULL`);else if(s instanceof Date)r.push(`${e(n)}='${s.toISOString()}'`);else if("object"!==t||Array.isArray(s))if("string"===t)r.push(`${e(n)}='${s}'`);else{if("number"!==t&&"boolean"!==t)throw new Error(`Unsupported value type for key ${n}`);r.push(`${e(n)}=${s}`)}else r.push(on(e(n),s))}return r.length>1?r.join(" AND "):r[0]}function cn(t){const e=t.indexOf("://");if(e>0)return t.substring(0,e)}function un(t,e=0){let r,n=t*10**e;return t>=1e12?(n=Math.round(n/1e12),r="T"):t>=1e9?(n=Math.round(n/1e9),r="B"):t>=1e6?(n=Math.round(n/1e6),r="M"):t>=1e3?(n=Math.round(n/1e3),r="K"):(n=Math.round(n),r=""),n/=10**e,n.toFixed(e)+r}function ln(t){const e=t.match(/^\s*[+]?(\d+(?:[.]\d+)?)\s*([TBMK])?\s*$/i);if(!e)throw new E("Invalid formatted parameter size string.","scaleToSize",400);const r=parseFloat(e[1]),n=e[2]?.toLowerCase();switch(n){case"t":return 1e12*r;case"b":return 1e9*r;case"m":return 1e6*r;case"k":return 1e3*r;default:return r}}function hn(t,e){const r=e?.level||0,n=e?.visiting||new Set,s=e?.objectTag||"*",i=e?.arrayTag||"-";let o=[];const a=" ".repeat(2*r);if(null!=t)switch(typeof t){case"object":n.has(t)?o=["[Circular]"]:(n.add(t),o=Array.isArray(t)?t.map((t=>i+c(t))):Object.entries(t).map((([t,e])=>s+" `"+t+"`:"+c(e))));break;case"string":return t;default:return JSON.stringify(t)}else o=["null"];return o.length?a+o.join("\n"+a):"";function c(t){return(null!=t&&"object"==typeof t?"\n":" ")+hn(t,{level:r+1,visiting:n})}}Jr.Config.register([".yml",".yaml"],Yr),Jr.Config.register([".json"],(function(t){return JSON.parse(t)}));var fn=class t{constructor(t=0){this.bitField=t}static has(t,e){return!!(t&1<<e)}static add(t,e){return t|1<<e}static delete(t,e){return t&~(1<<e)}add(t){return this.bitField|=1<<t,this}delete(t){return this.bitField&=~(1<<t),this}has(e){return t.has(this.bitField,e)}clear(){return this.bitField=0,this}valueOf(){return this.bitField}toString(){return this.bitField.toString()}toJSON(){return this.bitField}},pn=require("events-ex"),wn=32;function dn(t){return e=Math.min(Math.max(16,t),1073741824),e>>>=0,e-=1,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,1+(e|=e>>16);var e}var mn=class{constructor(t){this._capacity=dn(t),this._length=0,this._front=0,this.arr=[]}push(t){const e=this._length;this.checkCapacity(e+1);const r=this._front+e&this._capacity-1;return this.arr[r]=t,this._length=e+1,r}pop(){const t=this._length;if(0===t)return;const e=this._front+t-1&this._capacity-1,r=this.arr[e];return this.arr[e]=void 0,this._length=t-1,r}shift(){const t=this._length;if(0===t)return;const e=this._front,r=this.arr[e];return this.arr[e]=void 0,this._front=e+1&this._capacity-1,this._length=t-1,r}get length(){return this._length}checkCapacity(t){this._capacity<t&&this.resizeTo(dn(1.5*this._capacity+16))}resizeTo(t){const e=this._capacity;this._capacity=t;const r=this._front,n=this._length;if(r+n>e){const t=r+n&e-1;!function(t,e,r,n,s){for(let i=0;i<s;++i)r[i+n]=t[i+e],t[i+e]=void 0}(this.arr,0,this.arr,e,t)}}},yn=class extends pn.EventEmitter{};function bn(t){return"function"==typeof t}function gn(){return"1"}var xn=class{constructor(t,{initFn:e=gn,pauseFn:r,resumeFn:n,capacity:s=wn}={}){if(bn(r)!==bn(n))throw new Error("pauseFn and resumeFn must be both set for pausing");this.maxConcurrency=t,this.free=new mn(t),this.waiting=new mn(s),this.releaseEmitter=new yn,this.useDefaultTokens=e===gn,this.pauseFn=r,this.resumeFn=n,this.paused=!1,this.releaseEmitter.on("release",(t=>{const e=this.waiting.shift();e?e.resolve(t):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(t))}));for(let r=0;r<t;r++)this.free.push(e())}tryAcquire(){return this.free.pop()}acquire(t){let e=this.tryAcquire();return void 0!==e?Promise.resolve(e):new Promise(((e,r)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn());const n=this.waiting.push({resolve:e,reject:r});return t&&t.addEventListener("abort",(()=>{this.waiting[n]=void 0;const e=t.reason instanceof Error?t.reason:new Error(t.reason||"aborted");t.alreadyRejected=!0,r(e)})),n}))}release(t){this.releaseEmitter.emit("release",this.useDefaultTokens?"1":t)}drain(){const t=new Array(this.maxConcurrency);for(let e=0;e<this.maxConcurrency;e++)t[e]=this.acquire();return Promise.all(t)}pendingCount(){return this.waiting.length}};function vn(t,{timeUnit:e=1e3,uniformDistribution:r=!1}={}){const n=new xn(r?1:t),s=r?e/t:e;return async function(){await n.acquire(),setTimeout((()=>n.release()),s)}}var En=require("custom-ability"),Sn=require("util-ex"),$n=class extends AbortController{constructor(t){super(),(0,Sn.defineProperty)(this,"parent",t)}abort(t,e){this.signal.aborted||("string"==typeof t&&(t=new A(t)),t&&e&&"object"==typeof t&&Object.assign(t.data,e),super.abort(t))}throwRejected(t){const e=this.signal;if(e.aborted){if(void 0===t&&(t=e.alreadyRejected),t)return!0;throw e.reason instanceof Error?e.reason:new A(e.reason||"aborted")}}},kn=class{get maxTaskConcurrency(){return this._maxTaskConcurrency}get semaphore(){const t=this._maxTaskConcurrency;let e=this.__task_semaphore;return t>0&&!e&&(e=this.__task_semaphore=new xn(t-1)),e}isAborted(t){const e=this.hasAsyncFeature(Tn);let r=this.__task_aborter;if(r&&e){if(null==t)throw new E("Missing taskId",this.name+".isAborted",400);r=r[t]}return!r||r.signal.aborted}getRunningTask(t){const e=this.hasAsyncFeature(Tn);let r=this.__task_aborter;if(r&&e){if(null==t)throw new E("Missing taskId",this.name+".getRunningTask",400);r=r[t]}return r?.signal.aborted&&(e?this.__task_aborter[t]=void 0:this.__task_aborter=void 0,r=void 0),r}getRunningTaskCount(){let t;if(this.hasAsyncFeature(Tn)){const e=this.__task_aborter;t=e&&Object.entries(e).filter((([t,r])=>{if(!r?.signal.aborted)return!0;e[t]=void 0})).length}else{const e=this.__task_aborter;t=e?.signal.aborted?0:1}return t}_generateAsyncTaskId(t,e){if(e||(e=this.__task_aborter),null==t&&(t=0,e))for(;e[t];)t++;return t}$generateAsyncTaskId(t,e){const r=this.super,n=this.self||this;return t=r?r.call(n,t):this._generateAsyncTaskId(t,e)}createAborter(t,e,r=!0){const n=this.hasAsyncFeature(Tn);if(!n&&r&&this.getRunningTask())throw new E("The task is running",this.name,429);const s=t?.aborter||new $n(this);if(!(s instanceof $n)){if(!(s instanceof AbortController))throw new E("aborter should be an AbortController",this.name,400);Object.setPrototypeOf(s,new $n(this))}if(n){null==this.__task_aborter&&(this.__task_aborter={});const t=this.__task_aborter;null==e&&(e=this.generateAsyncTaskId(e,t)),s.id=e,t[e]=s}else this.__task_aborter=s;const i=t?.timeout;return i>0&&(s.timeoutId=setTimeout((()=>{s.timeoutId=void 0,this.abort("timeout",{timeout:i})}),i)),s.signal.addEventListener("abort",(()=>{const t=s.timeoutId;t&&(s.timeoutId=void 0,clearTimeout(t));const e=s.signal;try{this.emit&&this.emit("aborting",e.reason,e.reason?.data)}finally{s.streamController?.error(e.reason)}})),s}$cleanMultiTaskAborter(t,e){const r=this.super,n=this.self||this;r?r.call(n,t,e):n._cleanMultiTaskAborter(t,e)}cleanTaskAborter(t){if(this.hasAsyncFeature(Tn)){const e=this.__task_aborter;this.cleanMultiTaskAborter(t.id,e)}else this.__task_aborter=void 0}_cleanMultiTaskAborter(t,e){"number"==typeof t?e[t]=void 0:delete e[t]}createTaskPromise(t,e,r){const n=this.createAborter(e,r?.taskId,r?.raiseError);void 0===e&&(e={}),"object"==typeof e&&(e.aborter=n);let s=t(e,n).then((t=>{if(t&&t instanceof ReadableStream){const e=()=>{this.cleanTaskAborter(n)},r=Ke({onStart:t=>{(0,Sn.defineProperty)(n,"streamController",t)},onFinal:e,onError:e,onTransform:(t,e)=>(t&&"object"==typeof t&&(t.taskId=n.id),t)});t=t.pipeThrough(r)}else this.cleanTaskAborter(n);return t})).catch((t=>{throw this.cleanTaskAborter(n),t})).finally((()=>{n.timeoutId&&(clearTimeout(n.timeoutId),n.timeoutId=void 0)}));return s.task=n,s}runAsyncCancelableTask(t={},e,r){let n=this.createTaskPromise(e,t,r);const s=this.semaphore;if(s){const t=n,e=t.task;n=s.acquire(e.signal).then((()=>t)).finally((()=>{s.release()})),n.task=e}return n}abort(t,e){let r=this.__task_aborter;if(r){const n=r;if(this.hasAsyncFeature(Tn)){const t=e?.taskId;if(null==t)throw new E("Missing data.taskId",this.name+".abort",400);r=r[t],this.cleanMultiTaskAborter(t,n)}else this.__task_aborter=void 0;r&&!r.signal.aborted&&r.abort(t,e)}}};kn.prototype.generateAsyncTaskId=function(t,e){return this._generateAsyncTaskId(t,e)},kn.prototype.cleanMultiTaskAborter=function(t,e){return this._cleanMultiTaskAborter(t,e)};var An,On=(0,En.createAbilityInjector)(kn,"abort",{afterInjection:function(t,e){let r=t.prototype._asyncFeatures||0;r|=jn.Cancelable,e&&(e.asyncFeatures&&(r|=e.asyncFeatures),e.maxTaskConcurrency>0&&(t.prototype._maxTaskConcurrency=e.maxTaskConcurrency)),t.prototype._asyncFeatures=r}}),Tn=0,jn=((An=jn||{})[An.MultiTask=1<<Tn]="MultiTask",An[An.Cancelable=2]="Cancelable",An[An.Priority=4]="Priority",An),Cn=class t extends p.AdvancePropertyManager{static{this.items={}}static get(t){return this.items[t]}static list(){return this.items}static getByTag(t){let e;for(const r in this.list()){const n=this.get(r);let s=n.tags;if("string"==typeof s){if(s===t){e=n;break}}else if(Array.isArray(s)&&s.indexOf(t)>=0){e=n;break}}return e}static getAllByTag(t){let e=[];for(const r in this.list()){const n=this.get(r);let s=n.tags;"string"==typeof s?s===t&&e.push(n):Array.isArray(s)&&s.indexOf(t)>=0&&e.push(n)}return e}static hasAsyncFeature(t){const e=this.prototype;let r=e.asyncFeatures;return e._asyncFeatures&&(r|=e._asyncFeatures),fn.has(r,t)}static run(t,e){const r=this.get(t);if(r)return r.run(e);throw new $(`${t} to run`,this.name)}static runSync(t,e){const r=this.get(t);if(r)return r.runSync(e);throw new $(`${t} to run`,this.name)}static getFunc(t){const e=this.get(t);return e?.getFunc()}static runWithPos(t,...e){const r=this.get(t);if(r)return r.runWithPos(...e);throw new $(`${t} to run`,this.name)}static runWithPosSync(t,...e){const r=this.get(t);if(r)return r.runWithPosSync(...e);throw new $(`${t} to run`,this.name)}static getFuncWithPos(t){const e=this.get(t);return e?.getFuncWithPos()}static register(e,r={}){switch(typeof e){case"string":r.name=e;break;case"function":r.func=e;break;case"object":r=e}e=r.name;let n=!!this.get(e);if(n)n=!1;else{if(!(r instanceof t))return n=new this(r),n.register();this.items[e]=r,n=r}return n}static unregister(t){const e=this.items[t];return e&&delete this.items[t],e}constructor(t,e={}){switch(super(),typeof t){case"string":e.name=t;break;case"function":e.func=t;break;case"object":e=t}this.name=t=e.name,e.scope&&(this.scope=e.scope),"function"==typeof e.setup&&e.setup.call(this,e),this.initialize(e)}register(){const e=this.constructor,r=this.depends;if(r){const e=Object.keys(r);for(const n of e){const e=r[n];e instanceof t&&e.register()}}return e.register(this)}unregister(){return this.constructor.unregister(this.name)}arr2ObjParams(t){if(this.params&&(t.length>1||Array.isArray(t[0])||t[0]&&"object"!=typeof t[0])){const e={},r=Object.keys(this.params);let n=Math.min(r.length,t.length);for(let s=0;s<n;s++)e[r[s]]=t[s];t=[e]}return t}obj2ArrParams(t){const e=[];if(t&&this.params&&Array.isArray(this.params)){const r=Object.keys(t);let n=Math.min(r.length,this.params.length);for(let s=0;s<n;s++)e.push(t[r[s]])}return e}runSync(t){const e=this.params&&Array.isArray(this.params);if(Array.isArray(t)){if(e)return this.func(...t);T("the function is not support array params, the params must be object!",this.name)}return e?(t=this.obj2ArrParams(t),console.warn('Warning:Use runWithPos() instead of run() for the "'+this.name+'" is function with position params'),this.func(...t)):this.func(t)}run(t){return this.runSync(t)}runAs(t,e){return this.runAsSync(t,e)}runAsSync(t,e){return this.constructor.runSync(t,e)}getFunc(t){return t?this.constructor.getFunc(t):this.runSync.bind(this)}runWithPosSync(...t){return this.params&&!Array.isArray(this.params)&&(t=this.arr2ObjParams(t)),this.func(...t)}runWithPosAsSync(t,...e){return this.constructor.runWithPosSync(t,...e)}runWithPos(...t){return this.runWithPosSync(...t)}runWithPosAs(t,...e){return this.runWithPosAsSync(t,...e)}getFuncWithPos(t){return t?this.constructor.getFuncWithPos(t):this.runWithPosSync.bind(this)}hasAsyncFeature(t){let e=this.asyncFeatures;return this._asyncFeatures&&(e|=this._asyncFeatures),fn.has(e,t)}},Nn={name:{type:"string"},description:{type:"string"},func:{type:"function",assign(t,e,r,n,s){let i=t;const o=typeof t;return s.isExported?i="function"===o?t.toString():t:t&&("string"!==o&&(t=t.toString()),i=(0,w._createFunction)(t,e.scope)),i}},params:{type:"object"},result:{type:"any"},setup:{type:"function"},depends:{type:"object",exported:!1},tags:{type:["array","string"]},asyncFeatures:{type:"number"}};Cn.defineProperties(Cn,Nn);var Fn=class extends Cn{constructor(){super(...arguments),this._emitter=new f.EventEmitter,this.description="Return event bus",this.result="event"}get emitter(){return this._emitter}func(){return this.emitter}},In=new Fn(Ne),Mn=require("secondary-cache");function Rn({key:t,value:e,options:r}={}){return void 0!==t?null===e?this.cache.del(t):void 0!==e?this.cache.set(t,e,r):this.cache.get(t):(r&&this.cache.setDefaultOptions(r),this.cache)}function Pn(t,e){let r=Cn.get(t);return r||(r=new Cn(t,{func:Rn,description:"get/set LRU cache or return the LRUCache object",params:{key:{name:"key",type:"string",description:"the key is undefined means change the default cache options"},value:{name:"value",type:"any",description:"the value to store, if value is null means remove the key"},options:{name:"options",type:"object|number",description:"the optional cache options:{capacity,expires,cleanInterval} or expires"}},result:"any"}),r.cache=new Mn.Cache(e)),r}var qn=Pn("lrucache"),Vn=class t extends Cn{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static async loadFrom(){if(this._apiRoot){const t=await fetch(this._apiRoot,{headers:{"Content-Type":"application/json"}}),e=await t.json();e&&this.loadFromSync(e)}else T("missing apiRoot to load tools","ClientTools")}static loadFromSync(e){for(const r in e){const n=this.get(r),s=e[r];n?n instanceof t?n.assign(s):T(`${r} already registered as ${n.constructor.name}`,"ClientTools"):this.register(s)}}static async fetch(t,e){const r=this.get(t);if(r&&r.fetch)return r.fetch(e)}getUrlParams(t){if(void 0!==t){const e=JSON.stringify(t);if("{}"!==e&&"[]"!==e&&'""'!==e)return"?p="+encodeURIComponent(e)}return""}async fetch(t,e,r){const n={...this.fetchOptions};let s;n.headers&&n.headers["Content-Type"]||(n.headers={"Content-Type":"application/json",...n.headers}),t?.stream&&!n.headers.Connection&&(n.headers.Connection="keep-alive"),e||(e=this.action||"post"),"res"===e&&(e="get"),r?("string"!=typeof r&&(r=JSON.stringify(r)),r=this.name+"/"+r):r=this.name,n.method=e.toUpperCase(),"get"===e||"delete"===e?s=r+this.getUrlParams(t):(n.body=JSON.stringify(t),s=r);const i=await fetch(`${this.apiRoot}/${s}`,n);if(!i.ok){throw await this.errorFrom(i)}return i}async errorFrom(t){let e,r=t.status,n=t.statusText,s=this.name;if(t.body){const r=await t.text();try{const t=JSON.parse(r);t&&(t.error&&(n=t.error),t.name&&(s=t.name),t.data&&(e=t.data,e.name=s,e.what&&(e.msg=n,n=e.what)),t.message&&(n=n+":"+t.message))}catch(t){console.warn("🚀 ~ parse error body to json:",t)}}return O(n,s,r)}async func(t){const e=await this.fetch(t);if(t?.stream)return e;return await e.json()}},Un={...I};Vn.defineProperties(Vn,Un);var Bn=class extends Vn{async fetch(t,e){if(t||(t={}),e&&"res"===this.action){if("get"===e||"delete"===e){let r=t.id;return r||T("id is required"),"string"==typeof r&&(r=encodeURIComponent(r)),delete t.id,super.fetch(t,e,r)}"list"===e?e="get":e.startsWith("$")&&(t.act=e,e="post")}return await super.fetch(t,e)}async _func(t,e){const r=await this.fetch(e,t);if(e?.stream)return r;return await r.json()}async func(t){const e=t.action;return e&&delete t.action,this._func(e,t)}assignMethods(t){if(Array.isArray(t))for(const e of t){const t=e.startsWith("$")?e.slice(1):e;this[t]||(this[t]=(t=>this._func.bind(this,t))(e))}}},_n={methods:{type:"array",assign(t,e,r,n,s){s?.isExported||e.assignMethods(t)}}};Bn.defineProperties(Bn,_n);var Ln=class extends Bn{constructor(){super(...arguments),this._sseEvents={},this._forwardEvents=new Set,this.name=Ce,this.description="subscribe server sent event",this.ebListener=async function(...t){const e=this.type;this.target.publish&&await this.target.publish({data:t,event:e})}}get evtSource(){let t=this._es;return t&&t.readyState!==EventSource.CLOSED||(t=this.initEventSource(this._esEvents)),t}get active(){return!!this._es&&this._es.readyState!==EventSource.CLOSED}set active(t){t!==this.active&&(t?this.initEventSource(this._esEvents):this._es&&(this._es.close(),this._es=void 0))}initEventSource(t){if("string"==typeof t&&(t=[t]),this._es&&this._es.readyState!==EventSource.CLOSED){if(!this._esEvents||t&&t.every((t=>this._esEvents.includes(t))))return this._es;this._es.close()}const e=t?this.getUrlParams({event:t}):"",r=`${this.apiRoot}/${this.name}${e}`,n=this._es=new EventSource(r);return Object.entries(this._sseEvents).forEach((([t,e])=>{n.addEventListener(t,e)})),this._esEvents=t,n}esListener(t){const e=t.data?JSON.parse(t.data):void 0,r=t.type;if(!this._forwardEvents.has(r)){const t=this.emitter;t&&e&&r&&(Array.isArray(e)?t.emit(r,...e):t.emit(r,e))}}async subscribe(t){const e=await this.sub({event:t});"string"==typeof t&&(t=[t]);const r=this.evtSource;for(const e of t)if(!this._sseEvents[e]){const t=this._sseEvents[e]=this.esListener.bind(this);r.addEventListener(e,t)}return e}async unsubscribe(t){const e=await this.unsub({event:t});"string"==typeof t&&(t=[t]);for(const e of t){const t=this._sseEvents[e];t&&(delete this._sseEvents[e],this.evtSource.removeEventListener(e,t))}return e}forwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)||(this._forwardEvents.add(e),this.on&&this.on(e,this.ebListener))}unforwardEvent(t){"string"==typeof t&&(t=[t]);for(const e of t)this._forwardEvents.has(e)&&(this._forwardEvents.delete(e),this.off&&this.off(e,this.ebListener))}async init(t){if(this.active=!1,this.initEventSource(t),t)return await this.subscribe(t)}},zn=new Ln(Ce),Dn=require("util-ex"),Jn=class t extends Cn{static get apiRoot(){return t._apiRoot}static setApiRoot(e){t._apiRoot=e}static toJSON(){const e={};for(const r in this.items){let n=this.items[r];n instanceof t&&(n.allowExportFunc||(n=n.toJSON(),delete n.func),e[r]=n)}return e}isStream(t){return this.stream}func({}){}},Wn={...I};Jn.defineProperties(Jn,Wn);var Kn=class extends Jn{constructor(t,e={}){super(t,e),this.action="res",this.params={id:{type:"string"},val:{type:"any"}};const r=this.methods=[];for(const t of F)"function"==typeof this[t]&&r.push(t);(0,Dn.getAllNames)(Object.getPrototypeOf(this)).filter((t=>t.startsWith("$")&&"function"==typeof this[t])).forEach((t=>{r.push(t);const e=t.slice(1);void 0===this[e]&&(this[e]=this[t])}))}cast(t,e){let r=this.params[t];return r&&("string"!=typeof r&&(r=r.type),"number"===r&&(e=Number(e))),e}getMethodFromParams(t){let e=t?._req?.method?.toLowerCase();return"get"===e&&void 0===t.id&&(e="list"),"post"===e&&t.act&&(e=t.act),e}func(t){const e=this.getMethodFromParams(t);if(e&&"function"==typeof this[e])return void 0!==t.id&&(t.id=this.cast("id",t.id)),this[e](t);throw new $(e,this.name)}};Kn.defineProperties(Kn,{methods:{type:"array"}});var Hn=In.runSync(),Gn=class t extends Kn{constructor(){super(...arguments),this.name=Ce,this.description="subscribe server sent event",this.result="event",this.depends={[Ne]:In}}static get sse(){return this._sse||(this._sse=new Re),this._sse}get sse(){return this.constructor.sse}static publish(e,r){return t.sse.publish(e,r)}static{this.ebListener=function(...e){t.sse.publish(e,this.type)}}static subscribe(e,r,n){return t.sse.subscribe(e,r,n)}static alreadyForward(e){const r=Hn.listeners(e);for(const e of r)if(e===t.ebListener)return!0}publishSSE(t,e){return this.constructor.publish(t,e)}subscribeSSE(t,e,r){return"string"==typeof r&&(r=[r]),this.constructor.subscribe(t,e,r)}forward(e){Array.isArray(e)||(e=[e]);for(const r of e)t.alreadyForward(r)||Hn.on(r,t.ebListener)}unforward(e){"string"==typeof e&&(e=[e]);for(const r of e)Hn.off(r,t.ebListener)}list({_req:t,_res:e,event:r}){t&&e&&this.subscribeSSE(t,e,r)}$sub({event:t}){if(t)return this.forward(t),{event:t};T("event is required","sub",400)}$unsub({event:t}){if(t)return this.unforward(t),{event:t};T("event is required","unsub",400)}$publish({event:t,data:e}){if(t&&e){"string"==typeof t&&(t=[t]);for(const r of t)this.publishSSE(e,r);return{event:t}}T("event or data is required","pub",400)}isStream(t){return"list"===this.getMethodFromParams(t)}},Xn=new Gn(Ce);function Zn(){In.register(),qn.register()}
|
package/dist/funcs.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{EventClient as m,EventServer as o,EventToolFunc as r,_lrucache as p,createLRUCache as t,event as
|
|
1
|
+
import{EventClient as m,EventServer as o,EventToolFunc as r,_lrucache as p,createLRUCache as t,event as D,eventClient as c,eventServer as h,lrucache as i,registerCoreTools as j}from"./chunk-VNNDL7E2.mjs";import"./chunk-U5DDQYSF.mjs";export{m as EventClient,o as EventServer,r as EventToolFunc,p as _lrucache,t as createLRUCache,D as event,c as eventClient,h as eventServer,i as lrucache,j as registerCoreTools};
|
package/dist/index.d.mts
CHANGED
|
@@ -487,6 +487,8 @@ declare const TOKEN_TYPES: Readonly<{
|
|
|
487
487
|
And: "And";
|
|
488
488
|
Or: "Or";
|
|
489
489
|
Not: "UnaryOperator";
|
|
490
|
+
Macro: "Macro";
|
|
491
|
+
EndMacro: "EndMacro";
|
|
490
492
|
}>;
|
|
491
493
|
type TokenType = keyof typeof TOKEN_TYPES;
|
|
492
494
|
/**
|
|
@@ -515,7 +517,7 @@ declare function tokenize(source: string, options?: PreprocessOptions): Token[];
|
|
|
515
517
|
* Statements do not result in a value at runtime. They contain one or more expressions internally.
|
|
516
518
|
*/
|
|
517
519
|
declare class Statement {
|
|
518
|
-
isStatement
|
|
520
|
+
isStatement?: boolean;
|
|
519
521
|
type: string;
|
|
520
522
|
}
|
|
521
523
|
/**
|
|
@@ -674,6 +676,7 @@ declare class Interpreter {
|
|
|
674
676
|
* Evaluates expressions following the binary operation type.
|
|
675
677
|
*/
|
|
676
678
|
private evaluateBinaryExpression;
|
|
679
|
+
private evaluateArguments;
|
|
677
680
|
/**
|
|
678
681
|
* Evaluates expressions following the filter operation type.
|
|
679
682
|
*/
|
|
@@ -695,6 +698,10 @@ declare class Interpreter {
|
|
|
695
698
|
private evaluateSet;
|
|
696
699
|
private evaluateIf;
|
|
697
700
|
private evaluateFor;
|
|
701
|
+
/**
|
|
702
|
+
* See https://jinja.palletsprojects.com/en/3.1.x/templates/#macros for more information.
|
|
703
|
+
*/
|
|
704
|
+
private evaluateMacro;
|
|
698
705
|
evaluate(statement: Statement | undefined, environment: Environment): AnyRuntimeValue;
|
|
699
706
|
}
|
|
700
707
|
|
|
@@ -726,9 +733,14 @@ declare function randomInt(to: number, from?: number): number;
|
|
|
726
733
|
* console.log(select(str, -1)) // Last character
|
|
727
734
|
*/
|
|
728
735
|
declare function select(obj: any | any[], index?: number | string): any;
|
|
736
|
+
declare function tojson(value: any, indent?: number | {
|
|
737
|
+
indent?: number;
|
|
738
|
+
depth?: number;
|
|
739
|
+
}, depth?: number): string;
|
|
729
740
|
declare const builtins: {
|
|
730
741
|
randomInt: typeof randomInt;
|
|
731
742
|
select: typeof select;
|
|
743
|
+
tojson: typeof tojson;
|
|
732
744
|
};
|
|
733
745
|
|
|
734
746
|
/**
|
|
@@ -1277,10 +1289,12 @@ declare function createEndWithRepetitionDetector(repetitionThreshold: number): (
|
|
|
1277
1289
|
declare function loadFileFromPaths(filename: string, searchPaths?: string[], extNames?: string[], options?: {
|
|
1278
1290
|
filepath?: string;
|
|
1279
1291
|
exclude?: string[] | string;
|
|
1292
|
+
signal?: AbortSignal;
|
|
1280
1293
|
}): Buffer;
|
|
1281
1294
|
declare function loadTextFromPaths(filename: string, searchPaths?: string[], extNames?: string[], options?: {
|
|
1282
1295
|
encoding?: BufferEncoding;
|
|
1283
1296
|
filepath?: string;
|
|
1297
|
+
signal?: AbortSignal;
|
|
1284
1298
|
} | BufferEncoding, exclude?: string[] | string): string;
|
|
1285
1299
|
/**
|
|
1286
1300
|
* Recursively reads all filenames in the given directory or directories.
|
|
@@ -1296,7 +1310,7 @@ declare function loadTextFromPaths(filename: string, searchPaths?: string[], ext
|
|
|
1296
1310
|
* console.log(files); // Outputs an array of JavaScript file paths.
|
|
1297
1311
|
* ```
|
|
1298
1312
|
*/
|
|
1299
|
-
declare function readFilenamesRecursiveSync(dir: string | string[], isFileMatched?: (filepath: string) => boolean): string[];
|
|
1313
|
+
declare function readFilenamesRecursiveSync(dir: string | string[], isFileMatched?: (filepath: string) => boolean, signal?: AbortSignal): string[];
|
|
1300
1314
|
/**
|
|
1301
1315
|
* Resolves the real file path, handling symbolic links.
|
|
1302
1316
|
*
|
|
@@ -1323,7 +1337,7 @@ interface ConfigFilesFilter {
|
|
|
1323
1337
|
}
|
|
1324
1338
|
declare function getConfigFileNames(directoryPath: string, filter?: ConfigFilesFilter): string[];
|
|
1325
1339
|
declare function getConfigs(directoryPath: string, filter?: ConfigFilesFilter): any[];
|
|
1326
|
-
declare function saveConfigFile(filename: string, config: any, extLevel?: number):
|
|
1340
|
+
declare function saveConfigFile(filename: string, config: any, extLevel?: number): string;
|
|
1327
1341
|
|
|
1328
1342
|
interface JsonFilter {
|
|
1329
1343
|
[key: string]: any;
|
package/dist/index.d.ts
CHANGED
|
@@ -487,6 +487,8 @@ declare const TOKEN_TYPES: Readonly<{
|
|
|
487
487
|
And: "And";
|
|
488
488
|
Or: "Or";
|
|
489
489
|
Not: "UnaryOperator";
|
|
490
|
+
Macro: "Macro";
|
|
491
|
+
EndMacro: "EndMacro";
|
|
490
492
|
}>;
|
|
491
493
|
type TokenType = keyof typeof TOKEN_TYPES;
|
|
492
494
|
/**
|
|
@@ -515,7 +517,7 @@ declare function tokenize(source: string, options?: PreprocessOptions): Token[];
|
|
|
515
517
|
* Statements do not result in a value at runtime. They contain one or more expressions internally.
|
|
516
518
|
*/
|
|
517
519
|
declare class Statement {
|
|
518
|
-
isStatement
|
|
520
|
+
isStatement?: boolean;
|
|
519
521
|
type: string;
|
|
520
522
|
}
|
|
521
523
|
/**
|
|
@@ -674,6 +676,7 @@ declare class Interpreter {
|
|
|
674
676
|
* Evaluates expressions following the binary operation type.
|
|
675
677
|
*/
|
|
676
678
|
private evaluateBinaryExpression;
|
|
679
|
+
private evaluateArguments;
|
|
677
680
|
/**
|
|
678
681
|
* Evaluates expressions following the filter operation type.
|
|
679
682
|
*/
|
|
@@ -695,6 +698,10 @@ declare class Interpreter {
|
|
|
695
698
|
private evaluateSet;
|
|
696
699
|
private evaluateIf;
|
|
697
700
|
private evaluateFor;
|
|
701
|
+
/**
|
|
702
|
+
* See https://jinja.palletsprojects.com/en/3.1.x/templates/#macros for more information.
|
|
703
|
+
*/
|
|
704
|
+
private evaluateMacro;
|
|
698
705
|
evaluate(statement: Statement | undefined, environment: Environment): AnyRuntimeValue;
|
|
699
706
|
}
|
|
700
707
|
|
|
@@ -726,9 +733,14 @@ declare function randomInt(to: number, from?: number): number;
|
|
|
726
733
|
* console.log(select(str, -1)) // Last character
|
|
727
734
|
*/
|
|
728
735
|
declare function select(obj: any | any[], index?: number | string): any;
|
|
736
|
+
declare function tojson(value: any, indent?: number | {
|
|
737
|
+
indent?: number;
|
|
738
|
+
depth?: number;
|
|
739
|
+
}, depth?: number): string;
|
|
729
740
|
declare const builtins: {
|
|
730
741
|
randomInt: typeof randomInt;
|
|
731
742
|
select: typeof select;
|
|
743
|
+
tojson: typeof tojson;
|
|
732
744
|
};
|
|
733
745
|
|
|
734
746
|
/**
|
|
@@ -1277,10 +1289,12 @@ declare function createEndWithRepetitionDetector(repetitionThreshold: number): (
|
|
|
1277
1289
|
declare function loadFileFromPaths(filename: string, searchPaths?: string[], extNames?: string[], options?: {
|
|
1278
1290
|
filepath?: string;
|
|
1279
1291
|
exclude?: string[] | string;
|
|
1292
|
+
signal?: AbortSignal;
|
|
1280
1293
|
}): Buffer;
|
|
1281
1294
|
declare function loadTextFromPaths(filename: string, searchPaths?: string[], extNames?: string[], options?: {
|
|
1282
1295
|
encoding?: BufferEncoding;
|
|
1283
1296
|
filepath?: string;
|
|
1297
|
+
signal?: AbortSignal;
|
|
1284
1298
|
} | BufferEncoding, exclude?: string[] | string): string;
|
|
1285
1299
|
/**
|
|
1286
1300
|
* Recursively reads all filenames in the given directory or directories.
|
|
@@ -1296,7 +1310,7 @@ declare function loadTextFromPaths(filename: string, searchPaths?: string[], ext
|
|
|
1296
1310
|
* console.log(files); // Outputs an array of JavaScript file paths.
|
|
1297
1311
|
* ```
|
|
1298
1312
|
*/
|
|
1299
|
-
declare function readFilenamesRecursiveSync(dir: string | string[], isFileMatched?: (filepath: string) => boolean): string[];
|
|
1313
|
+
declare function readFilenamesRecursiveSync(dir: string | string[], isFileMatched?: (filepath: string) => boolean, signal?: AbortSignal): string[];
|
|
1300
1314
|
/**
|
|
1301
1315
|
* Resolves the real file path, handling symbolic links.
|
|
1302
1316
|
*
|
|
@@ -1323,7 +1337,7 @@ interface ConfigFilesFilter {
|
|
|
1323
1337
|
}
|
|
1324
1338
|
declare function getConfigFileNames(directoryPath: string, filter?: ConfigFilesFilter): string[];
|
|
1325
1339
|
declare function getConfigs(directoryPath: string, filter?: ConfigFilesFilter): any[];
|
|
1326
|
-
declare function saveConfigFile(filename: string, config: any, extLevel?: number):
|
|
1340
|
+
declare function saveConfigFile(filename: string, config: any, extLevel?: number): string;
|
|
1327
1341
|
|
|
1328
1342
|
interface JsonFilter {
|
|
1329
1343
|
[key: string]: any;
|