nemar-cli 0.8.70-PR845.bd2d5d2 → 0.8.70-PR846.3ccc429
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +18 -18
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -85,7 +85,7 @@ ${F}`,w70,j70,T70=(D,F,$)=>{let J=$===""?"":`with ${$.trim()}() `,Q=O70.bind(nul
|
|
|
85
85
|
`:""},this._extScope=D,this._scope=new f1.Scope({parent:D}),this._nodes=[new LI]}toString(){return this._root.render(this.opts)}name(D){return this._scope.name(D)}scopeName(D){return this._extScope.name(D)}scopeValue(D,F){let $=this._extScope.value(D,F);return(this._values[$.prefix]||(this._values[$.prefix]=new Set)).add($),$}getScopeValue(D,F){return this._extScope.getValue(D,F)}scopeRefs(D){return this._extScope.scopeRefs(D,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(D,F,$,J){let Q=this._scope.toName(F);if($!==void 0&&J)this._constants[Q.str]=$;return this._leafNode(new KI(D,Q,$)),Q}const(D,F,$){return this._def(f1.varKinds.const,D,F,$)}let(D,F,$){return this._def(f1.varKinds.let,D,F,$)}var(D,F,$){return this._def(f1.varKinds.var,D,F,$)}assign(D,F,$){return this._leafNode(new eX(D,F,$))}add(D,F){return this._leafNode(new zI(D,cD.operators.ADD,F))}code(D){if(typeof D=="function")D();else if(D!==U0.nil)this._leafNode(new UI(D));return this}object(...D){let F=["{"];for(let[$,J]of D){if(F.length>1)F.push(",");if(F.push($),$!==J||this.opts.es5)F.push(":"),(0,U0.addCodeArg)(F,J)}return F.push("}"),new U0._Code(F)}if(D,F,$){if(this._blockNode(new h8(D)),F&&$)this.code(F).else().code($).endIf();else if(F)this.code(F).endIf();else if($)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(D){return this._elseNode(new h8(D))}else(){return this._elseNode(new c5)}endIf(){return this._endBlockNode(h8,c5)}_for(D,F){if(this._blockNode(D),F)this.code(F).endFor();return this}for(D,F){return this._for(new AI(D),F)}forRange(D,F,$,J,Q=this.opts.es5?f1.varKinds.var:f1.varKinds.let){let Y=this._scope.toName(D);return this._for(new MI(Q,Y,F,$),()=>J(Y))}forOf(D,F,$,J=f1.varKinds.const){let Q=this._scope.toName(D);if(this.opts.es5){let Y=F instanceof U0.Name?F:this.var("_arr",F);return this.forRange("_i",0,U0._`${Y}.length`,(B)=>{this.var(Q,U0._`${Y}[${B}]`),$(Q)})}return this._for(new rX("of",J,Q,F),()=>$(Q))}forIn(D,F,$,J=this.opts.es5?f1.varKinds.var:f1.varKinds.const){if(this.opts.ownProperties)return this.forOf(D,U0._`Object.keys(${F})`,$);let Q=this._scope.toName(D);return this._for(new rX("in",J,Q,F),()=>$(Q))}endFor(){return this._endBlockNode(o3)}label(D){return this._leafNode(new EI(D))}break(D){return this._leafNode(new VI(D))}return(D){let F=new i$;if(this._blockNode(F),this.code(D),F.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(i$)}try(D,F,$){if(!F&&!$)throw Error('CodeGen: "try" without "catch" and "finally"');let J=new NI;if(this._blockNode(J),this.code(D),F){let Q=this.name("e");this._currNode=J.catch=new a$(Q),F(Q)}if($)this._currNode=J.finally=new o$,this.code($);return this._endBlockNode(a$,o$)}throw(D){return this._leafNode(new ZI(D))}block(D,F){if(this._blockStarts.push(this._nodes.length),D)this.code(D).endBlock(F);return this}endBlock(D){let F=this._blockStarts.pop();if(F===void 0)throw Error("CodeGen: not in self-balancing block");let $=this._nodes.length-F;if($<0||D!==void 0&&$!==D)throw Error(`CodeGen: wrong number of nodes: ${$} vs ${D} expected`);return this._nodes.length=F,this}func(D,F=U0.nil,$,J){if(this._blockNode(new n$(D,F,$)),J)this.code(J).endFunc();return this}endFunc(){return this._endBlockNode(n$)}optimize(D=1){while(D-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(D){return this._currNode.nodes.push(D),this}_blockNode(D){this._currNode.nodes.push(D),this._nodes.push(D)}_endBlockNode(D,F){let $=this._currNode;if($ instanceof D||F&&$ instanceof F)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${F?`${D.kind}/${F.kind}`:D.kind}"`)}_elseNode(D){let F=this._currNode;if(!(F instanceof h8))throw Error('CodeGen: "else" without "if"');return this._currNode=F.else=D,this}get _root(){return this._nodes[0]}get _currNode(){let D=this._nodes;return D[D.length-1]}set _currNode(D){let F=this._nodes;F[F.length-1]=D}}cD.CodeGen=RI;function L4(D,F){for(let $ in F)D[$]=(D[$]||0)+(F[$]||0);return D}function s$(D,F){return F instanceof U0._CodeOrName?L4(D,F.names):D}function s3(D,F,$){if(D instanceof U0.Name)return J(D);if(!Q(D))return D;return new U0._Code(D._items.reduce((Y,B)=>{if(B instanceof U0.Name)B=J(B);if(B instanceof U0._Code)Y.push(...B._items);else Y.push(B);return Y},[]));function J(Y){let B=$[Y.str];if(B===void 0||F[Y.str]!==1)return Y;return delete F[Y.str],B}function Q(Y){return Y instanceof U0._Code&&Y._items.some((B)=>B instanceof U0.Name&&F[B.str]===1&&$[B.str]!==void 0)}}function C$0(D,F){for(let $ in F)D[$]=(D[$]||0)-(F[$]||0)}function CI(D){return typeof D=="boolean"||typeof D=="number"||D===null?!D:U0._`!${tX(D)}`}cD.not=CI;var O$0=OI(cD.operators.AND);function w$0(...D){return D.reduce(O$0)}cD.and=w$0;var j$0=OI(cD.operators.OR);function T$0(...D){return D.reduce(j$0)}cD.or=T$0;function OI(D){return(F,$)=>F===U0.nil?$:$===U0.nil?F:U0._`${tX(F)} ${D} ${tX($)}`}function tX(D){return D instanceof U0.Name?D:U0._`(${D})`}});var E0=E((yI)=>{Object.defineProperty(yI,"__esModule",{value:!0});yI.checkStrictMode=yI.getErrorPath=yI.Type=yI.useFunc=yI.setEvaluated=yI.evaluatedPropsToName=yI.mergeEvaluated=yI.eachItem=yI.unescapeJsonPointer=yI.escapeJsonPointer=yI.escapeFragment=yI.unescapeFragment=yI.schemaRefOrVal=yI.schemaHasRulesButRef=yI.schemaHasRules=yI.checkUnknownRules=yI.alwaysValidSchema=yI.toHash=void 0;var f0=F0(),k$0=d5();function v$0(D){let F={};for(let $ of D)F[$]=!0;return F}yI.toHash=v$0;function y$0(D,F){if(typeof F=="boolean")return F;if(Object.keys(F).length===0)return!0;return PI(D,F),!II(F,D.self.RULES.all)}yI.alwaysValidSchema=y$0;function PI(D,F=D.schema){let{opts:$,self:J}=D;if(!$.strictSchema)return;if(typeof F==="boolean")return;let Q=J.RULES.keywords;for(let Y in F)if(!Q[Y])vI(D,`unknown keyword: "${Y}"`)}yI.checkUnknownRules=PI;function II(D,F){if(typeof D=="boolean")return!D;for(let $ in D)if(F[$])return!0;return!1}yI.schemaHasRules=II;function x$0(D,F){if(typeof D=="boolean")return!D;for(let $ in D)if($!=="$ref"&&F.all[$])return!0;return!1}yI.schemaHasRulesButRef=x$0;function _$0({topSchemaRef:D,schemaPath:F},$,J,Q){if(!Q){if(typeof $=="number"||typeof $=="boolean")return $;if(typeof $=="string")return f0._`${$}`}return f0._`${D}${F}${(0,f0.getProperty)(J)}`}yI.schemaRefOrVal=_$0;function f$0(D){return SI(decodeURIComponent(D))}yI.unescapeFragment=f$0;function g$0(D){return encodeURIComponent(FG(D))}yI.escapeFragment=g$0;function FG(D){if(typeof D=="number")return`${D}`;return D.replace(/~/g,"~0").replace(/\//g,"~1")}yI.escapeJsonPointer=FG;function SI(D){return D.replace(/~1/g,"/").replace(/~0/g,"~")}yI.unescapeJsonPointer=SI;function h$0(D,F){if(Array.isArray(D))for(let $ of D)F($);else F(D)}yI.eachItem=h$0;function jI({mergeNames:D,mergeToName:F,mergeValues:$,resultToName:J}){return(Q,Y,B,X)=>{let G=B===void 0?Y:B instanceof f0.Name?(Y instanceof f0.Name?D(Q,Y,B):F(Q,Y,B),B):Y instanceof f0.Name?(F(Q,B,Y),Y):$(Y,B);return X===f0.Name&&!(G instanceof f0.Name)?J(Q,G):G}}yI.mergeEvaluated={props:jI({mergeNames:(D,F,$)=>D.if(f0._`${$} !== true && ${F} !== undefined`,()=>{D.if(f0._`${F} === true`,()=>D.assign($,!0),()=>D.assign($,f0._`${$} || {}`).code(f0._`Object.assign(${$}, ${F})`))}),mergeToName:(D,F,$)=>D.if(f0._`${$} !== true`,()=>{if(F===!0)D.assign($,!0);else D.assign($,f0._`${$} || {}`),$G(D,$,F)}),mergeValues:(D,F)=>D===!0?!0:{...D,...F},resultToName:kI}),items:jI({mergeNames:(D,F,$)=>D.if(f0._`${$} !== true && ${F} !== undefined`,()=>D.assign($,f0._`${F} === true ? true : ${$} > ${F} ? ${$} : ${F}`)),mergeToName:(D,F,$)=>D.if(f0._`${$} !== true`,()=>D.assign($,F===!0?!0:f0._`${$} > ${F} ? ${$} : ${F}`)),mergeValues:(D,F)=>D===!0?!0:Math.max(D,F),resultToName:(D,F)=>D.var("items",F)})};function kI(D,F){if(F===!0)return D.var("props",!0);let $=D.var("props",f0._`{}`);if(F!==void 0)$G(D,$,F);return $}yI.evaluatedPropsToName=kI;function $G(D,F,$){Object.keys($).forEach((J)=>D.assign(f0._`${F}${(0,f0.getProperty)(J)}`,!0))}yI.setEvaluated=$G;var TI={};function b$0(D,F){return D.scopeValue("func",{ref:F,code:TI[F.code]||(TI[F.code]=new k$0._Code(F.code))})}yI.useFunc=b$0;var DG;(function(D){D[D.Num=0]="Num",D[D.Str=1]="Str"})(DG||(yI.Type=DG={}));function u$0(D,F,$){if(D instanceof f0.Name){let J=F===DG.Num;return $?J?f0._`"[" + ${D} + "]"`:f0._`"['" + ${D} + "']"`:J?f0._`"/" + ${D}`:f0._`"/" + ${D}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return $?(0,f0.getProperty)(D).toString():"/"+FG(D)}yI.getErrorPath=u$0;function vI(D,F,$=D.opts.strictSchema){if(!$)return;if(F=`strict mode: ${F}`,$===!0)throw Error(F);D.self.logger.warn(F)}yI.checkStrictMode=vI});var U1=E((_I)=>{Object.defineProperty(_I,"__esModule",{value:!0});var OD=F0(),QJ0={data:new OD.Name("data"),valCxt:new OD.Name("valCxt"),instancePath:new OD.Name("instancePath"),parentData:new OD.Name("parentData"),parentDataProperty:new OD.Name("parentDataProperty"),rootData:new OD.Name("rootData"),dynamicAnchors:new OD.Name("dynamicAnchors"),vErrors:new OD.Name("vErrors"),errors:new OD.Name("errors"),this:new OD.Name("this"),self:new OD.Name("self"),scope:new OD.Name("scope"),json:new OD.Name("json"),jsonPos:new OD.Name("jsonPos"),jsonLen:new OD.Name("jsonLen"),jsonPart:new OD.Name("jsonPart")};_I.default=QJ0});var n5=E((bI)=>{Object.defineProperty(bI,"__esModule",{value:!0});bI.extendErrors=bI.resetErrorsCount=bI.reportExtraError=bI.reportError=bI.keyword$DataError=bI.keywordError=void 0;var M0=F0(),DJ=E0(),yD=U1();bI.keywordError={message:({keyword:D})=>M0.str`must pass "${D}" keyword validation`};bI.keyword$DataError={message:({keyword:D,schemaType:F})=>F?M0.str`"${D}" keyword must be ${F} ($data)`:M0.str`"${D}" keyword is invalid ($data)`};function BJ0(D,F=bI.keywordError,$,J){let{it:Q}=D,{gen:Y,compositeRule:B,allErrors:X}=Q,G=hI(D,F,$);if(J!==null&&J!==void 0?J:B||X)fI(Y,G);else gI(Q,M0._`[${G}]`)}bI.reportError=BJ0;function XJ0(D,F=bI.keywordError,$){let{it:J}=D,{gen:Q,compositeRule:Y,allErrors:B}=J,X=hI(D,F,$);if(fI(Q,X),!(Y||B))gI(J,yD.default.vErrors)}bI.reportExtraError=XJ0;function GJ0(D,F){D.assign(yD.default.errors,F),D.if(M0._`${yD.default.vErrors} !== null`,()=>D.if(F,()=>D.assign(M0._`${yD.default.vErrors}.length`,F),()=>D.assign(yD.default.vErrors,null)))}bI.resetErrorsCount=GJ0;function WJ0({gen:D,keyword:F,schemaValue:$,data:J,errsCount:Q,it:Y}){if(Q===void 0)throw Error("ajv implementation error");let B=D.name("err");D.forRange("i",Q,yD.default.errors,(X)=>{if(D.const(B,M0._`${yD.default.vErrors}[${X}]`),D.if(M0._`${B}.instancePath === undefined`,()=>D.assign(M0._`${B}.instancePath`,(0,M0.strConcat)(yD.default.instancePath,Y.errorPath))),D.assign(M0._`${B}.schemaPath`,M0.str`${Y.errSchemaPath}/${F}`),Y.opts.verbose)D.assign(M0._`${B}.schema`,$),D.assign(M0._`${B}.data`,J)})}bI.extendErrors=WJ0;function fI(D,F){let $=D.const("err",F);D.if(M0._`${yD.default.vErrors} === null`,()=>D.assign(yD.default.vErrors,M0._`[${$}]`),M0._`${yD.default.vErrors}.push(${$})`),D.code(M0._`${yD.default.errors}++`)}function gI(D,F){let{gen:$,validateName:J,schemaEnv:Q}=D;if(Q.$async)$.throw(M0._`new ${D.ValidationError}(${F})`);else $.assign(M0._`${J}.errors`,F),$.return(!1)}var A4={keyword:new M0.Name("keyword"),schemaPath:new M0.Name("schemaPath"),params:new M0.Name("params"),propertyName:new M0.Name("propertyName"),message:new M0.Name("message"),schema:new M0.Name("schema"),parentSchema:new M0.Name("parentSchema")};function hI(D,F,$){let{createErrors:J}=D.it;if(J===!1)return M0._`{}`;return HJ0(D,F,$)}function HJ0(D,F,$={}){let{gen:J,it:Q}=D,Y=[qJ0(Q,$),KJ0(D,$)];return zJ0(D,F,Y),J.object(...Y)}function qJ0({errorPath:D},{instancePath:F}){let $=F?M0.str`${D}${(0,DJ.getErrorPath)(F,DJ.Type.Str)}`:D;return[yD.default.instancePath,(0,M0.strConcat)(yD.default.instancePath,$)]}function KJ0({keyword:D,it:{errSchemaPath:F}},{schemaPath:$,parentSchema:J}){let Q=J?F:M0.str`${F}/${D}`;if($)Q=M0.str`${Q}${(0,DJ.getErrorPath)($,DJ.Type.Str)}`;return[A4.schemaPath,Q]}function zJ0(D,{params:F,message:$},J){let{keyword:Q,data:Y,schemaValue:B,it:X}=D,{opts:G,propertyName:H,topSchemaRef:q,schemaPath:K}=X;if(J.push([A4.keyword,Q],[A4.params,typeof F=="function"?F(D):F||M0._`{}`]),G.messages)J.push([A4.message,typeof $=="function"?$(D):$]);if(G.verbose)J.push([A4.schema,B],[A4.parentSchema,M0._`${q}${K}`],[yD.default.data,Y]);if(H)J.push([A4.propertyName,H])}});var dI=E((lI)=>{Object.defineProperty(lI,"__esModule",{value:!0});lI.boolOrEmptySchema=lI.topBoolOrEmptySchema=void 0;var LJ0=n5(),AJ0=F0(),MJ0=U1(),NJ0={message:"boolean schema is false"};function RJ0(D){let{gen:F,schema:$,validateName:J}=D;if($===!1)mI(D,!1);else if(typeof $=="object"&&$.$async===!0)F.return(MJ0.default.data);else F.assign(AJ0._`${J}.errors`,null),F.return(!0)}lI.topBoolOrEmptySchema=RJ0;function CJ0(D,F){let{gen:$,schema:J}=D;if(J===!1)$.var(F,!1),mI(D);else $.var(F,!0)}lI.boolOrEmptySchema=CJ0;function mI(D,F){let{gen:$,data:J}=D,Q={gen:$,keyword:"false schema",data:J,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:D};(0,LJ0.reportError)(Q,NJ0,void 0,F)}});var QG=E((cI)=>{Object.defineProperty(cI,"__esModule",{value:!0});cI.getRules=cI.isJSONType=void 0;var wJ0=["string","number","integer","boolean","null","object","array"],jJ0=new Set(wJ0);function TJ0(D){return typeof D=="string"&&jJ0.has(D)}cI.isJSONType=TJ0;function PJ0(){let D={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...D,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},D.number,D.string,D.array,D.object],post:{rules:[]},all:{},keywords:{}}}cI.getRules=PJ0});var YG=E((oI)=>{Object.defineProperty(oI,"__esModule",{value:!0});oI.shouldUseRule=oI.shouldUseGroup=oI.schemaHasRulesForType=void 0;function SJ0({schema:D,self:F},$){let J=F.RULES.types[$];return J&&J!==!0&&iI(D,J)}oI.schemaHasRulesForType=SJ0;function iI(D,F){return F.rules.some(($)=>aI(D,$))}oI.shouldUseGroup=iI;function aI(D,F){var $;return D[F.keyword]!==void 0||(($=F.definition.implements)===null||$===void 0?void 0:$.some((J)=>D[J]!==void 0))}oI.shouldUseRule=aI});var i5=E((DS)=>{Object.defineProperty(DS,"__esModule",{value:!0});DS.reportTypeError=DS.checkDataTypes=DS.checkDataType=DS.coerceAndCheckDataType=DS.getJSONTypes=DS.getSchemaTypes=DS.DataType=void 0;var yJ0=QG(),xJ0=YG(),_J0=n5(),W0=F0(),rI=E0(),r3;(function(D){D[D.Correct=0]="Correct",D[D.Wrong=1]="Wrong"})(r3||(DS.DataType=r3={}));function fJ0(D){let F=tI(D.type);if(F.includes("null")){if(D.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!F.length&&D.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(D.nullable===!0)F.push("null")}return F}DS.getSchemaTypes=fJ0;function tI(D){let F=Array.isArray(D)?D:D?[D]:[];if(F.every(yJ0.isJSONType))return F;throw Error("type must be JSONType or JSONType[]: "+F.join(","))}DS.getJSONTypes=tI;function gJ0(D,F){let{gen:$,data:J,opts:Q}=D,Y=hJ0(F,Q.coerceTypes),B=F.length>0&&!(Y.length===0&&F.length===1&&(0,xJ0.schemaHasRulesForType)(D,F[0]));if(B){let X=XG(F,J,Q.strictNumbers,r3.Wrong);$.if(X,()=>{if(Y.length)bJ0(D,F,Y);else GG(D)})}return B}DS.coerceAndCheckDataType=gJ0;var eI=new Set(["string","number","integer","boolean","null"]);function hJ0(D,F){return F?D.filter(($)=>eI.has($)||F==="array"&&$==="array"):[]}function bJ0(D,F,$){let{gen:J,data:Q,opts:Y}=D,B=J.let("dataType",W0._`typeof ${Q}`),X=J.let("coerced",W0._`undefined`);if(Y.coerceTypes==="array")J.if(W0._`${B} == 'object' && Array.isArray(${Q}) && ${Q}.length == 1`,()=>J.assign(Q,W0._`${Q}[0]`).assign(B,W0._`typeof ${Q}`).if(XG(F,Q,Y.strictNumbers),()=>J.assign(X,Q)));J.if(W0._`${X} !== undefined`);for(let H of $)if(eI.has(H)||H==="array"&&Y.coerceTypes==="array")G(H);J.else(),GG(D),J.endIf(),J.if(W0._`${X} !== undefined`,()=>{J.assign(Q,X),uJ0(D,X)});function G(H){switch(H){case"string":J.elseIf(W0._`${B} == "number" || ${B} == "boolean"`).assign(X,W0._`"" + ${Q}`).elseIf(W0._`${Q} === null`).assign(X,W0._`""`);return;case"number":J.elseIf(W0._`${B} == "boolean" || ${Q} === null
|
|
86
86
|
|| (${B} == "string" && ${Q} && ${Q} == +${Q})`).assign(X,W0._`+${Q}`);return;case"integer":J.elseIf(W0._`${B} === "boolean" || ${Q} === null
|
|
87
87
|
|| (${B} === "string" && ${Q} && ${Q} == +${Q} && !(${Q} % 1))`).assign(X,W0._`+${Q}`);return;case"boolean":J.elseIf(W0._`${Q} === "false" || ${Q} === 0 || ${Q} === null`).assign(X,!1).elseIf(W0._`${Q} === "true" || ${Q} === 1`).assign(X,!0);return;case"null":J.elseIf(W0._`${Q} === "" || ${Q} === 0 || ${Q} === false`),J.assign(X,null);return;case"array":J.elseIf(W0._`${B} === "string" || ${B} === "number"
|
|
88
|
-
|| ${B} === "boolean" || ${Q} === null`).assign(X,W0._`[${Q}]`)}}}function uJ0({gen:D,parentData:F,parentDataProperty:$},J){D.if(W0._`${F} !== undefined`,()=>D.assign(W0._`${F}[${$}]`,J))}function BG(D,F,$,J=r3.Correct){let Q=J===r3.Correct?W0.operators.EQ:W0.operators.NEQ,Y;switch(D){case"null":return W0._`${F} ${Q} null`;case"array":Y=W0._`Array.isArray(${F})`;break;case"object":Y=W0._`${F} && typeof ${F} == "object" && !Array.isArray(${F})`;break;case"integer":Y=B(W0._`!(${F} % 1) && !isNaN(${F})`);break;case"number":Y=B();break;default:return W0._`typeof ${F} ${Q} ${D}`}return J===r3.Correct?Y:(0,W0.not)(Y);function B(X=W0.nil){return(0,W0.and)(W0._`typeof ${F} == "number"`,X,$?W0._`isFinite(${F})`:W0.nil)}}DS.checkDataType=BG;function XG(D,F,$,J){if(D.length===1)return BG(D[0],F,$,J);let Q,Y=(0,rI.toHash)(D);if(Y.array&&Y.object){let B=W0._`typeof ${F} != "object"`;Q=Y.null?B:W0._`!${F} || ${B}`,delete Y.null,delete Y.array,delete Y.object}else Q=W0.nil;if(Y.number)delete Y.integer;for(let B in Y)Q=(0,W0.and)(Q,BG(B,F,$,J));return Q}DS.checkDataTypes=XG;var mJ0={message:({schema:D})=>`must be ${D}`,params:({schema:D,schemaValue:F})=>typeof D=="string"?W0._`{type: ${D}}`:W0._`{type: ${F}}`};function GG(D){let F=lJ0(D);(0,_J0.reportError)(F,mJ0)}DS.reportTypeError=GG;function lJ0(D){let{gen:F,data:$,schema:J}=D,Q=(0,rI.schemaRefOrVal)(D,J,"type");return{gen:F,keyword:"type",data:$,schema:J.type,schemaCode:Q,schemaValue:Q,parentSchema:J,params:{},it:D}}});var YS=E((JS)=>{Object.defineProperty(JS,"__esModule",{value:!0});JS.assignDefaults=void 0;var t3=F0(),oJ0=E0();function sJ0(D,F){let{properties:$,items:J}=D.schema;if(F==="object"&&$)for(let Q in $)$S(D,Q,$[Q].default);else if(F==="array"&&Array.isArray(J))J.forEach((Q,Y)=>$S(D,Y,Q.default))}JS.assignDefaults=sJ0;function $S(D,F,$){let{gen:J,compositeRule:Q,data:Y,opts:B}=D;if($===void 0)return;let X=t3._`${Y}${(0,t3.getProperty)(F)}`;if(Q){(0,oJ0.checkStrictMode)(D,`default is ignored for: ${X}`);return}let G=t3._`${X} === undefined`;if(B.useDefaults==="empty")G=t3._`${G} || ${X} === null || ${X} === ""`;J.if(G,t3._`${X} = ${(0,t3.stringify)($)}`)}});var L1=E((GS)=>{Object.defineProperty(GS,"__esModule",{value:!0});GS.validateUnion=GS.validateArray=GS.usePattern=GS.callValidateCode=GS.schemaProperties=GS.allSchemaProperties=GS.noPropertyInData=GS.propertyInData=GS.isOwnProperty=GS.hasPropFunc=GS.reportMissingProp=GS.checkMissingProp=GS.checkReportMissingProp=void 0;var b0=F0(),WG=E0(),f6=U1(),rJ0=E0();function tJ0(D,F){let{gen:$,data:J,it:Q}=D;$.if(qG($,J,F,Q.opts.ownProperties),()=>{D.setParams({missingProperty:b0._`${F}`},!0),D.error()})}GS.checkReportMissingProp=tJ0;function eJ0({gen:D,data:F,it:{opts:$}},J,Q){return(0,b0.or)(...J.map((Y)=>(0,b0.and)(qG(D,F,Y,$.ownProperties),b0._`${Q} = ${Y}`)))}GS.checkMissingProp=eJ0;function DQ0(D,F){D.setParams({missingProperty:F},!0),D.error()}GS.reportMissingProp=DQ0;function BS(D){return D.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:b0._`Object.prototype.hasOwnProperty`})}GS.hasPropFunc=BS;function HG(D,F,$){return b0._`${BS(D)}.call(${F}, ${$})`}GS.isOwnProperty=HG;function FQ0(D,F,$,J){let Q=b0._`${F}${(0,b0.getProperty)($)} !== undefined`;return J?b0._`${Q} && ${HG(D,F,$)}`:Q}GS.propertyInData=FQ0;function qG(D,F,$,J){let Q=b0._`${F}${(0,b0.getProperty)($)} === undefined`;return J?(0,b0.or)(Q,(0,b0.not)(HG(D,F,$))):Q}GS.noPropertyInData=qG;function XS(D){return D?Object.keys(D).filter((F)=>F!=="__proto__"):[]}GS.allSchemaProperties=XS;function $Q0(D,F){return XS(F).filter(($)=>!(0,WG.alwaysValidSchema)(D,F[$]))}GS.schemaProperties=$Q0;function JQ0({schemaCode:D,data:F,it:{gen:$,topSchemaRef:J,schemaPath:Q,errorPath:Y},it:B},X,G,H){let q=H?b0._`${D}, ${F}, ${J}${Q}`:F,K=[[f6.default.instancePath,(0,b0.strConcat)(f6.default.instancePath,Y)],[f6.default.parentData,B.parentData],[f6.default.parentDataProperty,B.parentDataProperty],[f6.default.rootData,f6.default.rootData]];if(B.opts.dynamicRef)K.push([f6.default.dynamicAnchors,f6.default.dynamicAnchors]);let V=b0._`${q}, ${$.object(...K)}`;return G!==b0.nil?b0._`${X}.call(${G}, ${V})`:b0._`${X}(${V})`}GS.callValidateCode=JQ0;var QQ0=b0._`new RegExp`;function YQ0({gen:D,it:{opts:F}},$){let J=F.unicodeRegExp?"u":"",{regExp:Q}=F.code,Y=Q($,J);return D.scopeValue("pattern",{key:Y.toString(),ref:Y,code:b0._`${Q.code==="new RegExp"?QQ0:(0,rJ0.useFunc)(D,Q)}(${$}, ${J})`})}GS.usePattern=YQ0;function BQ0(D){let{gen:F,data:$,keyword:J,it:Q}=D,Y=F.name("valid");if(Q.allErrors){let X=F.let("valid",!0);return B(()=>F.assign(X,!1)),X}return F.var(Y,!0),B(()=>F.break()),Y;function B(X){let G=F.const("len",b0._`${$}.length`);F.forRange("i",0,G,(H)=>{D.subschema({keyword:J,dataProp:H,dataPropType:WG.Type.Num},Y),F.if((0,b0.not)(Y),X)})}}GS.validateArray=BQ0;function XQ0(D){let{gen:F,schema:$,keyword:J,it:Q}=D;if(!Array.isArray($))throw Error("ajv implementation error");if($.some((G)=>(0,WG.alwaysValidSchema)(Q,G))&&!Q.opts.unevaluated)return;let B=F.let("valid",!1),X=F.name("_valid");F.block(()=>$.forEach((G,H)=>{let q=D.subschema({keyword:J,schemaProp:H,compositeRule:!0},X);if(F.assign(B,b0._`${B} || ${X}`),!D.mergeValidEvaluated(q,X))F.if((0,b0.not)(B))})),D.result(B,()=>D.reset(),()=>D.error(!0))}GS.validateUnion=XQ0});var ES=E((KS)=>{Object.defineProperty(KS,"__esModule",{value:!0});KS.validateKeywordUsage=KS.validSchemaType=KS.funcKeywordCode=KS.macroKeywordCode=void 0;var xD=F0(),M4=U1(),MQ0=L1(),NQ0=n5();function RQ0(D,F){let{gen:$,keyword:J,schema:Q,parentSchema:Y,it:B}=D,X=F.macro.call(B.self,Q,Y,B),G=qS($,J,X);if(B.opts.validateSchema!==!1)B.self.validateSchema(X,!0);let H=$.name("valid");D.subschema({schema:X,schemaPath:xD.nil,errSchemaPath:`${B.errSchemaPath}/${J}`,topSchemaRef:G,compositeRule:!0},H),D.pass(H,()=>D.error(!0))}KS.macroKeywordCode=RQ0;function CQ0(D,F){var $;let{gen:J,keyword:Q,schema:Y,parentSchema:B,$data:X,it:G}=D;wQ0(G,F);let H=!X&&F.compile?F.compile.call(G.self,Y,B,G):F.validate,q=qS(J,Q,H),K=J.let("valid");D.block$data(K,V),D.ok(($=F.valid)!==null&&$!==void 0?$:K);function V(){if(F.errors===!1){if(U(),F.modifying)HS(D);M(()=>D.error())}else{let A=F.async?z():Z();if(F.modifying)HS(D);M(()=>OQ0(D,A))}}function z(){let A=J.let("ruleErrs",null);return J.try(()=>U(xD._`await `),(C)=>J.assign(K,!1).if(xD._`${C} instanceof ${G.ValidationError}`,()=>J.assign(A,xD._`${C}.errors`),()=>J.throw(C))),A}function Z(){let A=xD._`${q}.errors`;return J.assign(A,null),U(xD.nil),A}function U(A=F.async?xD._`await `:xD.nil){let C=G.opts.passContext?M4.default.this:M4.default.self,w=!(("compile"in F)&&!X||F.schema===!1);J.assign(K,xD._`${A}${(0,MQ0.callValidateCode)(D,q,C,w)}`,F.modifying)}function M(A){var C;J.if((0,xD.not)((C=F.valid)!==null&&C!==void 0?C:K),A)}}KS.funcKeywordCode=CQ0;function HS(D){let{gen:F,data:$,it:J}=D;F.if(J.parentData,()=>F.assign($,xD._`${J.parentData}[${J.parentDataProperty}]`))}function OQ0(D,F){let{gen:$}=D;$.if(xD._`Array.isArray(${F})`,()=>{$.assign(M4.default.vErrors,xD._`${M4.default.vErrors} === null ? ${F} : ${M4.default.vErrors}.concat(${F})`).assign(M4.default.errors,xD._`${M4.default.vErrors}.length`),(0,NQ0.extendErrors)(D)},()=>D.error())}function wQ0({schemaEnv:D},F){if(F.async&&!D.$async)throw Error("async keyword in sync schema")}function qS(D,F,$){if($===void 0)throw Error(`keyword "${F}" failed to compile`);return D.scopeValue("keyword",typeof $=="function"?{ref:$}:{ref:$,code:(0,xD.stringify)($)})}function jQ0(D,F,$=!1){return!F.length||F.some((J)=>J==="array"?Array.isArray(D):J==="object"?D&&typeof D=="object"&&!Array.isArray(D):typeof D==J||$&&typeof D>"u")}KS.validSchemaType=jQ0;function TQ0({schema:D,opts:F,self:$,errSchemaPath:J},Q,Y){if(Array.isArray(Q.keyword)?!Q.keyword.includes(Y):Q.keyword!==Y)throw Error("ajv implementation error");let B=Q.dependencies;if(B===null||B===void 0?void 0:B.some((X)=>!Object.prototype.hasOwnProperty.call(D,X)))throw Error(`parent schema must have dependencies of ${Y}: ${B.join(",")}`);if(Q.validateSchema){if(!Q.validateSchema(D[Y])){let G=`keyword "${Y}" value is invalid at path "${J}": `+$.errorsText(Q.validateSchema.errors);if(F.validateSchema==="log")$.logger.error(G);else throw Error(G)}}}KS.validateKeywordUsage=TQ0});var LS=E((ZS)=>{Object.defineProperty(ZS,"__esModule",{value:!0});ZS.extendSubschemaMode=ZS.extendSubschemaData=ZS.getSubschema=void 0;var Z8=F0(),VS=E0();function kQ0(D,{keyword:F,schemaProp:$,schema:J,schemaPath:Q,errSchemaPath:Y,topSchemaRef:B}){if(F!==void 0&&J!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(F!==void 0){let X=D.schema[F];return $===void 0?{schema:X,schemaPath:Z8._`${D.schemaPath}${(0,Z8.getProperty)(F)}`,errSchemaPath:`${D.errSchemaPath}/${F}`}:{schema:X[$],schemaPath:Z8._`${D.schemaPath}${(0,Z8.getProperty)(F)}${(0,Z8.getProperty)($)}`,errSchemaPath:`${D.errSchemaPath}/${F}/${(0,VS.escapeFragment)($)}`}}if(J!==void 0){if(Q===void 0||Y===void 0||B===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:J,schemaPath:Q,topSchemaRef:B,errSchemaPath:Y}}throw Error('either "keyword" or "schema" must be passed')}ZS.getSubschema=kQ0;function vQ0(D,F,{dataProp:$,dataPropType:J,data:Q,dataTypes:Y,propertyName:B}){if(Q!==void 0&&$!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:X}=F;if($!==void 0){let{errorPath:H,dataPathArr:q,opts:K}=F,V=X.let("data",Z8._`${F.data}${(0,Z8.getProperty)($)}`,!0);G(V),D.errorPath=Z8.str`${H}${(0,VS.getErrorPath)($,J,K.jsPropertySyntax)}`,D.parentDataProperty=Z8._`${$}`,D.dataPathArr=[...q,D.parentDataProperty]}if(Q!==void 0){let H=Q instanceof Z8.Name?Q:X.let("data",Q,!0);if(G(H),B!==void 0)D.propertyName=B}if(Y)D.dataTypes=Y;function G(H){D.data=H,D.dataLevel=F.dataLevel+1,D.dataTypes=[],F.definedProperties=new Set,D.parentData=F.data,D.dataNames=[...F.dataNames,H]}}ZS.extendSubschemaData=vQ0;function yQ0(D,{jtdDiscriminator:F,jtdMetadata:$,compositeRule:J,createErrors:Q,allErrors:Y}){if(J!==void 0)D.compositeRule=J;if(Q!==void 0)D.createErrors=Q;if(Y!==void 0)D.allErrors=Y;D.jtdDiscriminator=F,D.jtdMetadata=$}ZS.extendSubschemaMode=yQ0});var KG=E((GP0,AS)=>{AS.exports=function D(F,$){if(F===$)return!0;if(F&&$&&typeof F=="object"&&typeof $=="object"){if(F.constructor!==$.constructor)return!1;var J,Q,Y;if(Array.isArray(F)){if(J=F.length,J!=$.length)return!1;for(Q=J;Q--!==0;)if(!D(F[Q],$[Q]))return!1;return!0}if(F.constructor===RegExp)return F.source===$.source&&F.flags===$.flags;if(F.valueOf!==Object.prototype.valueOf)return F.valueOf()===$.valueOf();if(F.toString!==Object.prototype.toString)return F.toString()===$.toString();if(Y=Object.keys(F),J=Y.length,J!==Object.keys($).length)return!1;for(Q=J;Q--!==0;)if(!Object.prototype.hasOwnProperty.call($,Y[Q]))return!1;for(Q=J;Q--!==0;){var B=Y[Q];if(!D(F[B],$[B]))return!1}return!0}return F!==F&&$!==$}});var NS=E((WP0,MS)=>{var g6=MS.exports=function(D,F,$){if(typeof F=="function")$=F,F={};$=F.cb||$;var J=typeof $=="function"?$:$.pre||function(){},Q=$.post||function(){};FJ(F,J,Q,D,"",D)};g6.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};g6.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};g6.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};g6.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function FJ(D,F,$,J,Q,Y,B,X,G,H){if(J&&typeof J=="object"&&!Array.isArray(J)){F(J,Q,Y,B,X,G,H);for(var q in J){var K=J[q];if(Array.isArray(K)){if(q in g6.arrayKeywords)for(var V=0;V<K.length;V++)FJ(D,F,$,K[V],Q+"/"+q+"/"+V,Y,Q,q,J,V)}else if(q in g6.propsKeywords){if(K&&typeof K=="object")for(var z in K)FJ(D,F,$,K[z],Q+"/"+q+"/"+fQ0(z),Y,Q,q,J,z)}else if(q in g6.keywords||D.allKeys&&!(q in g6.skipKeywords))FJ(D,F,$,K,Q+"/"+q,Y,Q,q,J)}$(J,Q,Y,B,X,G,H)}}function fQ0(D){return D.replace(/~/g,"~0").replace(/\//g,"~1")}});var a5=E((wS)=>{Object.defineProperty(wS,"__esModule",{value:!0});wS.getSchemaRefs=wS.resolveUrl=wS.normalizeId=wS._getFullPath=wS.getFullPath=wS.inlineRef=void 0;var gQ0=E0(),hQ0=KG(),bQ0=NS(),uQ0=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function mQ0(D,F=!0){if(typeof D=="boolean")return!0;if(F===!0)return!zG(D);if(!F)return!1;return RS(D)<=F}wS.inlineRef=mQ0;var lQ0=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function zG(D){for(let F in D){if(lQ0.has(F))return!0;let $=D[F];if(Array.isArray($)&&$.some(zG))return!0;if(typeof $=="object"&&zG($))return!0}return!1}function RS(D){let F=0;for(let $ in D){if($==="$ref")return 1/0;if(F++,uQ0.has($))continue;if(typeof D[$]=="object")(0,gQ0.eachItem)(D[$],(J)=>F+=RS(J));if(F===1/0)return 1/0}return F}function CS(D,F="",$){if($!==!1)F=e3(F);let J=D.parse(F);return OS(D,J)}wS.getFullPath=CS;function OS(D,F){return D.serialize(F).split("#")[0]+"#"}wS._getFullPath=OS;var pQ0=/#\/?$/;function e3(D){return D?D.replace(pQ0,""):""}wS.normalizeId=e3;function dQ0(D,F,$){return $=e3($),D.resolve(F,$)}wS.resolveUrl=dQ0;var cQ0=/^[a-z_][-a-z0-9._]*$/i;function nQ0(D,F){if(typeof D=="boolean")return{};let{schemaId:$,uriResolver:J}=this.opts,Q=e3(D[$]||F),Y={"":Q},B=CS(J,Q,!1),X={},G=new Set;return bQ0(D,{allKeys:!0},(K,V,z,Z)=>{if(Z===void 0)return;let U=B+V,M=Y[Z];if(typeof K[$]=="string")M=A.call(this,K[$]);C.call(this,K.$anchor),C.call(this,K.$dynamicAnchor),Y[V]=M;function A(w){let I=this.opts.uriResolver.resolve;if(w=e3(M?I(M,w):w),G.has(w))throw q(w);G.add(w);let R=this.refs[w];if(typeof R=="string")R=this.refs[R];if(typeof R=="object")H(K,R.schema,w);else if(w!==e3(U))if(w[0]==="#")H(K,X[w],w),X[w]=K;else this.refs[w]=U;return w}function C(w){if(typeof w=="string"){if(!cQ0.test(w))throw Error(`invalid anchor "${w}"`);A.call(this,`#${w}`)}}}),X;function H(K,V,z){if(V!==void 0&&!hQ0(K,V))throw q(z)}function q(K){return Error(`reference "${K}" resolves to more than one schema`)}}wS.getSchemaRefs=nQ0});var DF=E((mS)=>{Object.defineProperty(mS,"__esModule",{value:!0});mS.getData=mS.KeywordCxt=mS.validateFunctionCode=void 0;var kS=dI(),TS=i5(),VG=YG(),$J=i5(),tQ0=YS(),s5=ES(),EG=LS(),d=F0(),s=U1(),eQ0=a5(),b8=E0(),o5=n5();function DY0(D){if(xS(D)){if(_S(D),yS(D)){JY0(D);return}}vS(D,()=>(0,kS.topBoolOrEmptySchema)(D))}mS.validateFunctionCode=DY0;function vS({gen:D,validateName:F,schema:$,schemaEnv:J,opts:Q},Y){if(Q.code.es5)D.func(F,d._`${s.default.data}, ${s.default.valCxt}`,J.$async,()=>{D.code(d._`"use strict"; ${PS($,Q)}`),$Y0(D,Q),D.code(Y)});else D.func(F,d._`${s.default.data}, ${FY0(Q)}`,J.$async,()=>D.code(PS($,Q)).code(Y))}function FY0(D){return d._`{${s.default.instancePath}="", ${s.default.parentData}, ${s.default.parentDataProperty}, ${s.default.rootData}=${s.default.data}${D.dynamicRef?d._`, ${s.default.dynamicAnchors}={}`:d.nil}}={}`}function $Y0(D,F){D.if(s.default.valCxt,()=>{if(D.var(s.default.instancePath,d._`${s.default.valCxt}.${s.default.instancePath}`),D.var(s.default.parentData,d._`${s.default.valCxt}.${s.default.parentData}`),D.var(s.default.parentDataProperty,d._`${s.default.valCxt}.${s.default.parentDataProperty}`),D.var(s.default.rootData,d._`${s.default.valCxt}.${s.default.rootData}`),F.dynamicRef)D.var(s.default.dynamicAnchors,d._`${s.default.valCxt}.${s.default.dynamicAnchors}`)},()=>{if(D.var(s.default.instancePath,d._`""`),D.var(s.default.parentData,d._`undefined`),D.var(s.default.parentDataProperty,d._`undefined`),D.var(s.default.rootData,s.default.data),F.dynamicRef)D.var(s.default.dynamicAnchors,d._`{}`)})}function JY0(D){let{schema:F,opts:$,gen:J}=D;vS(D,()=>{if($.$comment&&F.$comment)gS(D);if(GY0(D),J.let(s.default.vErrors,null),J.let(s.default.errors,0),$.unevaluated)QY0(D);fS(D),qY0(D)});return}function QY0(D){let{gen:F,validateName:$}=D;D.evaluated=F.const("evaluated",d._`${$}.evaluated`),F.if(d._`${D.evaluated}.dynamicProps`,()=>F.assign(d._`${D.evaluated}.props`,d._`undefined`)),F.if(d._`${D.evaluated}.dynamicItems`,()=>F.assign(d._`${D.evaluated}.items`,d._`undefined`))}function PS(D,F){let $=typeof D=="object"&&D[F.schemaId];return $&&(F.code.source||F.code.process)?d._`/*# sourceURL=${$} */`:d.nil}function YY0(D,F){if(xS(D)){if(_S(D),yS(D)){BY0(D,F);return}}(0,kS.boolOrEmptySchema)(D,F)}function yS({schema:D,self:F}){if(typeof D=="boolean")return!D;for(let $ in D)if(F.RULES.all[$])return!0;return!1}function xS(D){return typeof D.schema!="boolean"}function BY0(D,F){let{schema:$,gen:J,opts:Q}=D;if(Q.$comment&&$.$comment)gS(D);WY0(D),HY0(D);let Y=J.const("_errs",s.default.errors);fS(D,Y),J.var(F,d._`${Y} === ${s.default.errors}`)}function _S(D){(0,b8.checkUnknownRules)(D),XY0(D)}function fS(D,F){if(D.opts.jtd)return IS(D,[],!1,F);let $=(0,TS.getSchemaTypes)(D.schema),J=(0,TS.coerceAndCheckDataType)(D,$);IS(D,$,!J,F)}function XY0(D){let{schema:F,errSchemaPath:$,opts:J,self:Q}=D;if(F.$ref&&J.ignoreKeywordsWithRef&&(0,b8.schemaHasRulesButRef)(F,Q.RULES))Q.logger.warn(`$ref: keywords ignored in schema at path "${$}"`)}function GY0(D){let{schema:F,opts:$}=D;if(F.default!==void 0&&$.useDefaults&&$.strictSchema)(0,b8.checkStrictMode)(D,"default is ignored in the schema root")}function WY0(D){let F=D.schema[D.opts.schemaId];if(F)D.baseId=(0,eQ0.resolveUrl)(D.opts.uriResolver,D.baseId,F)}function HY0(D){if(D.schema.$async&&!D.schemaEnv.$async)throw Error("async schema in sync schema")}function gS({gen:D,schemaEnv:F,schema:$,errSchemaPath:J,opts:Q}){let Y=$.$comment;if(Q.$comment===!0)D.code(d._`${s.default.self}.logger.log(${Y})`);else if(typeof Q.$comment=="function"){let B=d.str`${J}/$comment`,X=D.scopeValue("root",{ref:F.root});D.code(d._`${s.default.self}.opts.$comment(${Y}, ${B}, ${X}.schema)`)}}function qY0(D){let{gen:F,schemaEnv:$,validateName:J,ValidationError:Q,opts:Y}=D;if($.$async)F.if(d._`${s.default.errors} === 0`,()=>F.return(s.default.data),()=>F.throw(d._`new ${Q}(${s.default.vErrors})`));else{if(F.assign(d._`${J}.errors`,s.default.vErrors),Y.unevaluated)KY0(D);F.return(d._`${s.default.errors} === 0`)}}function KY0({gen:D,evaluated:F,props:$,items:J}){if($ instanceof d.Name)D.assign(d._`${F}.props`,$);if(J instanceof d.Name)D.assign(d._`${F}.items`,J)}function IS(D,F,$,J){let{gen:Q,schema:Y,data:B,allErrors:X,opts:G,self:H}=D,{RULES:q}=H;if(Y.$ref&&(G.ignoreKeywordsWithRef||!(0,b8.schemaHasRulesButRef)(Y,q))){Q.block(()=>bS(D,"$ref",q.all.$ref.definition));return}if(!G.jtd)zY0(D,F);Q.block(()=>{for(let V of q.rules)K(V);K(q.post)});function K(V){if(!(0,VG.shouldUseGroup)(Y,V))return;if(V.type){if(Q.if((0,$J.checkDataType)(V.type,B,G.strictNumbers)),SS(D,V),F.length===1&&F[0]===V.type&&$)Q.else(),(0,$J.reportTypeError)(D);Q.endIf()}else SS(D,V);if(!X)Q.if(d._`${s.default.errors} === ${J||0}`)}}function SS(D,F){let{gen:$,schema:J,opts:{useDefaults:Q}}=D;if(Q)(0,tQ0.assignDefaults)(D,F.type);$.block(()=>{for(let Y of F.rules)if((0,VG.shouldUseRule)(J,Y))bS(D,Y.keyword,Y.definition,F.type)})}function zY0(D,F){if(D.schemaEnv.meta||!D.opts.strictTypes)return;if(EY0(D,F),!D.opts.allowUnionTypes)VY0(D,F);ZY0(D,D.dataTypes)}function EY0(D,F){if(!F.length)return;if(!D.dataTypes.length){D.dataTypes=F;return}F.forEach(($)=>{if(!hS(D.dataTypes,$))ZG(D,`type "${$}" not allowed by context "${D.dataTypes.join(",")}"`)}),LY0(D,F)}function VY0(D,F){if(F.length>1&&!(F.length===2&&F.includes("null")))ZG(D,"use allowUnionTypes to allow union type keyword")}function ZY0(D,F){let $=D.self.RULES.all;for(let J in $){let Q=$[J];if(typeof Q=="object"&&(0,VG.shouldUseRule)(D.schema,Q)){let{type:Y}=Q.definition;if(Y.length&&!Y.some((B)=>UY0(F,B)))ZG(D,`missing type "${Y.join(",")}" for keyword "${J}"`)}}}function UY0(D,F){return D.includes(F)||F==="number"&&D.includes("integer")}function hS(D,F){return D.includes(F)||F==="integer"&&D.includes("number")}function LY0(D,F){let $=[];for(let J of D.dataTypes)if(hS(F,J))$.push(J);else if(F.includes("integer")&&J==="number")$.push("integer");D.dataTypes=$}function ZG(D,F){let $=D.schemaEnv.baseId+D.errSchemaPath;F+=` at "${$}" (strictTypes)`,(0,b8.checkStrictMode)(D,F,D.opts.strictTypes)}class UG{constructor(D,F,$){if((0,s5.validateKeywordUsage)(D,F,$),this.gen=D.gen,this.allErrors=D.allErrors,this.keyword=$,this.data=D.data,this.schema=D.schema[$],this.$data=F.$data&&D.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,b8.schemaRefOrVal)(D,this.schema,$,this.$data),this.schemaType=F.schemaType,this.parentSchema=D.schema,this.params={},this.it=D,this.def=F,this.$data)this.schemaCode=D.gen.const("vSchema",uS(this.$data,D));else if(this.schemaCode=this.schemaValue,!(0,s5.validSchemaType)(this.schema,F.schemaType,F.allowUndefined))throw Error(`${$} value must be ${JSON.stringify(F.schemaType)}`);if("code"in F?F.trackErrors:F.errors!==!1)this.errsCount=D.gen.const("_errs",s.default.errors)}result(D,F,$){this.failResult((0,d.not)(D),F,$)}failResult(D,F,$){if(this.gen.if(D),$)$();else this.error();if(F){if(this.gen.else(),F(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(D,F){this.failResult((0,d.not)(D),void 0,F)}fail(D){if(D===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(D),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(D){if(!this.$data)return this.fail(D);let{schemaCode:F}=this;this.fail(d._`${F} !== undefined && (${(0,d.or)(this.invalid$data(),D)})`)}error(D,F,$){if(F){this.setParams(F),this._error(D,$),this.setParams({});return}this._error(D,$)}_error(D,F){(D?o5.reportExtraError:o5.reportError)(this,this.def.error,F)}$dataError(){(0,o5.reportError)(this,this.def.$dataError||o5.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,o5.resetErrorsCount)(this.gen,this.errsCount)}ok(D){if(!this.allErrors)this.gen.if(D)}setParams(D,F){if(F)Object.assign(this.params,D);else this.params=D}block$data(D,F,$=d.nil){this.gen.block(()=>{this.check$data(D,$),F()})}check$data(D=d.nil,F=d.nil){if(!this.$data)return;let{gen:$,schemaCode:J,schemaType:Q,def:Y}=this;if($.if((0,d.or)(d._`${J} === undefined`,F)),D!==d.nil)$.assign(D,!0);if(Q.length||Y.validateSchema){if($.elseIf(this.invalid$data()),this.$dataError(),D!==d.nil)$.assign(D,!1)}$.else()}invalid$data(){let{gen:D,schemaCode:F,schemaType:$,def:J,it:Q}=this;return(0,d.or)(Y(),B());function Y(){if($.length){if(!(F instanceof d.Name))throw Error("ajv implementation error");let X=Array.isArray($)?$:[$];return d._`${(0,$J.checkDataTypes)(X,F,Q.opts.strictNumbers,$J.DataType.Wrong)}`}return d.nil}function B(){if(J.validateSchema){let X=D.scopeValue("validate$data",{ref:J.validateSchema});return d._`!${X}(${F})`}return d.nil}}subschema(D,F){let $=(0,EG.getSubschema)(this.it,D);(0,EG.extendSubschemaData)($,this.it,D),(0,EG.extendSubschemaMode)($,D);let J={...this.it,...$,items:void 0,props:void 0};return YY0(J,F),J}mergeEvaluated(D,F){let{it:$,gen:J}=this;if(!$.opts.unevaluated)return;if($.props!==!0&&D.props!==void 0)$.props=b8.mergeEvaluated.props(J,D.props,$.props,F);if($.items!==!0&&D.items!==void 0)$.items=b8.mergeEvaluated.items(J,D.items,$.items,F)}mergeValidEvaluated(D,F){let{it:$,gen:J}=this;if($.opts.unevaluated&&($.props!==!0||$.items!==!0))return J.if(F,()=>this.mergeEvaluated(D,d.Name)),!0}}mS.KeywordCxt=UG;function bS(D,F,$,J){let Q=new UG(D,$,F);if("code"in $)$.code(Q,J);else if(Q.$data&&$.validate)(0,s5.funcKeywordCode)(Q,$);else if("macro"in $)(0,s5.macroKeywordCode)(Q,$);else if($.compile||$.validate)(0,s5.funcKeywordCode)(Q,$)}var AY0=/^\/(?:[^~]|~0|~1)*$/,MY0=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function uS(D,{dataLevel:F,dataNames:$,dataPathArr:J}){let Q,Y;if(D==="")return s.default.rootData;if(D[0]==="/"){if(!AY0.test(D))throw Error(`Invalid JSON-pointer: ${D}`);Q=D,Y=s.default.rootData}else{let H=MY0.exec(D);if(!H)throw Error(`Invalid JSON-pointer: ${D}`);let q=+H[1];if(Q=H[2],Q==="#"){if(q>=F)throw Error(G("property/index",q));return J[F-q]}if(q>F)throw Error(G("data",q));if(Y=$[F-q],!Q)return Y}let B=Y,X=Q.split("/");for(let H of X)if(H)Y=d._`${Y}${(0,d.getProperty)((0,b8.unescapeJsonPointer)(H))}`,B=d._`${B} && ${Y}`;return B;function G(H,q){return`Cannot access ${H} ${q} levels up, current level is ${F}`}}mS.getData=uS});var r5=E((dS)=>{Object.defineProperty(dS,"__esModule",{value:!0});class pS extends Error{constructor(D){super("validation failed");this.errors=D,this.ajv=this.validation=!0}}dS.default=pS});var FF=E((nS)=>{Object.defineProperty(nS,"__esModule",{value:!0});var LG=a5();class cS extends Error{constructor(D,F,$,J){super(J||`can't resolve reference ${$} from id ${F}`);this.missingRef=(0,LG.resolveUrl)(D,F,$),this.missingSchema=(0,LG.normalizeId)((0,LG.getFullPath)(D,this.missingRef))}}nS.default=cS});var e5=E((oS)=>{Object.defineProperty(oS,"__esModule",{value:!0});oS.resolveSchema=oS.getCompilingSchema=oS.resolveRef=oS.compileSchema=oS.SchemaEnv=void 0;var g1=F0(),wY0=r5(),N4=U1(),h1=a5(),iS=E0(),jY0=DF();class t5{constructor(D){var F;this.refs={},this.dynamicAnchors={};let $;if(typeof D.schema=="object")$=D.schema;this.schema=D.schema,this.schemaId=D.schemaId,this.root=D.root||this,this.baseId=(F=D.baseId)!==null&&F!==void 0?F:(0,h1.normalizeId)($===null||$===void 0?void 0:$[D.schemaId||"$id"]),this.schemaPath=D.schemaPath,this.localRefs=D.localRefs,this.meta=D.meta,this.$async=$===null||$===void 0?void 0:$.$async,this.refs={}}}oS.SchemaEnv=t5;function MG(D){let F=aS.call(this,D);if(F)return F;let $=(0,h1.getFullPath)(this.opts.uriResolver,D.root.baseId),{es5:J,lines:Q}=this.opts.code,{ownProperties:Y}=this.opts,B=new g1.CodeGen(this.scope,{es5:J,lines:Q,ownProperties:Y}),X;if(D.$async)X=B.scopeValue("Error",{ref:wY0.default,code:g1._`require("ajv/dist/runtime/validation_error").default`});let G=B.scopeName("validate");D.validateName=G;let H={gen:B,allErrors:this.opts.allErrors,data:N4.default.data,parentData:N4.default.parentData,parentDataProperty:N4.default.parentDataProperty,dataNames:[N4.default.data],dataPathArr:[g1.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:B.scopeValue("schema",this.opts.code.source===!0?{ref:D.schema,code:(0,g1.stringify)(D.schema)}:{ref:D.schema}),validateName:G,ValidationError:X,schema:D.schema,schemaEnv:D,rootId:$,baseId:D.baseId||$,schemaPath:g1.nil,errSchemaPath:D.schemaPath||(this.opts.jtd?"":"#"),errorPath:g1._`""`,opts:this.opts,self:this},q;try{this._compilations.add(D),(0,jY0.validateFunctionCode)(H),B.optimize(this.opts.code.optimize);let K=B.toString();if(q=`${B.scopeRefs(N4.default.scope)}return ${K}`,this.opts.code.process)q=this.opts.code.process(q,D);let z=Function(`${N4.default.self}`,`${N4.default.scope}`,q)(this,this.scope.get());if(this.scope.value(G,{ref:z}),z.errors=null,z.schema=D.schema,z.schemaEnv=D,D.$async)z.$async=!0;if(this.opts.code.source===!0)z.source={validateName:G,validateCode:K,scopeValues:B._values};if(this.opts.unevaluated){let{props:Z,items:U}=H;if(z.evaluated={props:Z instanceof g1.Name?void 0:Z,items:U instanceof g1.Name?void 0:U,dynamicProps:Z instanceof g1.Name,dynamicItems:U instanceof g1.Name},z.source)z.source.evaluated=(0,g1.stringify)(z.evaluated)}return D.validate=z,D}catch(K){if(delete D.validate,delete D.validateName,q)this.logger.error("Error compiling schema, function code:",q);throw K}finally{this._compilations.delete(D)}}oS.compileSchema=MG;function TY0(D,F,$){var J;$=(0,h1.resolveUrl)(this.opts.uriResolver,F,$);let Q=D.refs[$];if(Q)return Q;let Y=SY0.call(this,D,$);if(Y===void 0){let B=(J=D.localRefs)===null||J===void 0?void 0:J[$],{schemaId:X}=this.opts;if(B)Y=new t5({schema:B,schemaId:X,root:D,baseId:F})}if(Y===void 0)return;return D.refs[$]=PY0.call(this,Y)}oS.resolveRef=TY0;function PY0(D){if((0,h1.inlineRef)(D.schema,this.opts.inlineRefs))return D.schema;return D.validate?D:MG.call(this,D)}function aS(D){for(let F of this._compilations)if(IY0(F,D))return F}oS.getCompilingSchema=aS;function IY0(D,F){return D.schema===F.schema&&D.root===F.root&&D.baseId===F.baseId}function SY0(D,F){let $;while(typeof($=this.refs[F])=="string")F=$;return $||this.schemas[F]||JJ.call(this,D,F)}function JJ(D,F){let $=this.opts.uriResolver.parse(F),J=(0,h1._getFullPath)(this.opts.uriResolver,$),Q=(0,h1.getFullPath)(this.opts.uriResolver,D.baseId,void 0);if(Object.keys(D.schema).length>0&&J===Q)return AG.call(this,$,D);let Y=(0,h1.normalizeId)(J),B=this.refs[Y]||this.schemas[Y];if(typeof B=="string"){let X=JJ.call(this,D,B);if(typeof(X===null||X===void 0?void 0:X.schema)!=="object")return;return AG.call(this,$,X)}if(typeof(B===null||B===void 0?void 0:B.schema)!=="object")return;if(!B.validate)MG.call(this,B);if(Y===(0,h1.normalizeId)(F)){let{schema:X}=B,{schemaId:G}=this.opts,H=X[G];if(H)Q=(0,h1.resolveUrl)(this.opts.uriResolver,Q,H);return new t5({schema:X,schemaId:G,root:D,baseId:Q})}return AG.call(this,$,B)}oS.resolveSchema=JJ;var kY0=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function AG(D,{baseId:F,schema:$,root:J}){var Q;if(((Q=D.fragment)===null||Q===void 0?void 0:Q[0])!=="/")return;for(let X of D.fragment.slice(1).split("/")){if(typeof $==="boolean")return;let G=$[(0,iS.unescapeFragment)(X)];if(G===void 0)return;$=G;let H=typeof $==="object"&&$[this.opts.schemaId];if(!kY0.has(X)&&H)F=(0,h1.resolveUrl)(this.opts.uriResolver,F,H)}let Y;if(typeof $!="boolean"&&$.$ref&&!(0,iS.schemaHasRulesButRef)($,this.RULES)){let X=(0,h1.resolveUrl)(this.opts.uriResolver,F,$.$ref);Y=JJ.call(this,J,X)}let{schemaId:B}=this.opts;if(Y=Y||new t5({schema:$,schemaId:B,root:J,baseId:F}),Y.schema!==Y.root.schema)return Y;return}});var rS=E((VP0,fY0)=>{fY0.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var RG=E((ZP0,Fk)=>{var gY0=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),eS=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function NG(D){let F="",$=0,J=0;for(J=0;J<D.length;J++){if($=D[J].charCodeAt(0),$===48)continue;if(!($>=48&&$<=57||$>=65&&$<=70||$>=97&&$<=102))return"";F+=D[J];break}for(J+=1;J<D.length;J++){if($=D[J].charCodeAt(0),!($>=48&&$<=57||$>=65&&$<=70||$>=97&&$<=102))return"";F+=D[J]}return F}var hY0=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function tS(D){return D.length=0,!0}function bY0(D,F,$){if(D.length){let J=NG(D);if(J!=="")F.push(J);else return $.error=!0,!1;D.length=0}return!0}function uY0(D){let F=0,$={error:!1,address:"",zone:""},J=[],Q=[],Y=!1,B=!1,X=bY0;for(let G=0;G<D.length;G++){let H=D[G];if(H==="["||H==="]")continue;if(H===":"){if(Y===!0)B=!0;if(!X(Q,J,$))break;if(++F>7){$.error=!0;break}if(G>0&&D[G-1]===":")Y=!0;J.push(":");continue}else if(H==="%"){if(!X(Q,J,$))break;X=tS}else{Q.push(H);continue}}if(Q.length)if(X===tS)$.zone=Q.join("");else if(B)J.push(Q.join(""));else J.push(NG(Q));return $.address=J.join(""),$}function Dk(D){if(mY0(D,":")<2)return{host:D,isIPV6:!1};let F=uY0(D);if(!F.error){let{address:$,address:J}=F;if(F.zone)$+="%"+F.zone,J+="%25"+F.zone;return{host:$,isIPV6:!0,escapedHost:J}}else return{host:D,isIPV6:!1}}function mY0(D,F){let $=0;for(let J=0;J<D.length;J++)if(D[J]===F)$++;return $}function lY0(D){let F=D,$=[],J=-1,Q=0;while(Q=F.length){if(Q===1)if(F===".")break;else if(F==="/"){$.push("/");break}else{$.push(F);break}else if(Q===2){if(F[0]==="."){if(F[1]===".")break;else if(F[1]==="/"){F=F.slice(2);continue}}else if(F[0]==="/"){if(F[1]==="."||F[1]==="/"){$.push("/");break}}}else if(Q===3){if(F==="/.."){if($.length!==0)$.pop();$.push("/");break}}if(F[0]==="."){if(F[1]==="."){if(F[2]==="/"){F=F.slice(3);continue}}else if(F[1]==="/"){F=F.slice(2);continue}}else if(F[0]==="/"){if(F[1]==="."){if(F[2]==="/"){F=F.slice(2);continue}else if(F[2]==="."){if(F[3]==="/"){if(F=F.slice(3),$.length!==0)$.pop();continue}}}}if((J=F.indexOf("/",1))===-1){$.push(F);break}else $.push(F.slice(0,J)),F=F.slice(J)}return $.join("")}function pY0(D,F){let $=F!==!0?escape:unescape;if(D.scheme!==void 0)D.scheme=$(D.scheme);if(D.userinfo!==void 0)D.userinfo=$(D.userinfo);if(D.host!==void 0)D.host=$(D.host);if(D.path!==void 0)D.path=$(D.path);if(D.query!==void 0)D.query=$(D.query);if(D.fragment!==void 0)D.fragment=$(D.fragment);return D}function dY0(D){let F=[];if(D.userinfo!==void 0)F.push(D.userinfo),F.push("@");if(D.host!==void 0){let $=unescape(D.host);if(!eS($)){let J=Dk($);if(J.isIPV6===!0)$=`[${J.escapedHost}]`;else $=D.host}F.push($)}if(typeof D.port==="number"||typeof D.port==="string")F.push(":"),F.push(String(D.port));return F.length?F.join(""):void 0}Fk.exports={nonSimpleDomain:hY0,recomposeAuthority:dY0,normalizeComponentEncoding:pY0,removeDotSegments:lY0,isIPv4:eS,isUUID:gY0,normalizeIPv6:Dk,stringArrayToHexStripped:NG}});var Bk=E((UP0,Yk)=>{var{isUUID:cY0}=RG(),nY0=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,iY0=["http","https","ws","wss","urn","urn:uuid"];function aY0(D){return iY0.indexOf(D)!==-1}function CG(D){if(D.secure===!0)return!0;else if(D.secure===!1)return!1;else if(D.scheme)return D.scheme.length===3&&(D.scheme[0]==="w"||D.scheme[0]==="W")&&(D.scheme[1]==="s"||D.scheme[1]==="S")&&(D.scheme[2]==="s"||D.scheme[2]==="S");else return!1}function $k(D){if(!D.host)D.error=D.error||"HTTP URIs must have a host.";return D}function Jk(D){let F=String(D.scheme).toLowerCase()==="https";if(D.port===(F?443:80)||D.port==="")D.port=void 0;if(!D.path)D.path="/";return D}function oY0(D){return D.secure=CG(D),D.resourceName=(D.path||"/")+(D.query?"?"+D.query:""),D.path=void 0,D.query=void 0,D}function sY0(D){if(D.port===(CG(D)?443:80)||D.port==="")D.port=void 0;if(typeof D.secure==="boolean")D.scheme=D.secure?"wss":"ws",D.secure=void 0;if(D.resourceName){let[F,$]=D.resourceName.split("?");D.path=F&&F!=="/"?F:void 0,D.query=$,D.resourceName=void 0}return D.fragment=void 0,D}function rY0(D,F){if(!D.path)return D.error="URN can not be parsed",D;let $=D.path.match(nY0);if($){let J=F.scheme||D.scheme||"urn";D.nid=$[1].toLowerCase(),D.nss=$[2];let Q=`${J}:${F.nid||D.nid}`,Y=OG(Q);if(D.path=void 0,Y)D=Y.parse(D,F)}else D.error=D.error||"URN can not be parsed.";return D}function tY0(D,F){if(D.nid===void 0)throw Error("URN without nid cannot be serialized");let $=F.scheme||D.scheme||"urn",J=D.nid.toLowerCase(),Q=`${$}:${F.nid||J}`,Y=OG(Q);if(Y)D=Y.serialize(D,F);let B=D,X=D.nss;return B.path=`${J||F.nid}:${X}`,F.skipEscape=!0,B}function eY0(D,F){let $=D;if($.uuid=$.nss,$.nss=void 0,!F.tolerant&&(!$.uuid||!cY0($.uuid)))$.error=$.error||"UUID is not valid.";return $}function DB0(D){let F=D;return F.nss=(D.uuid||"").toLowerCase(),F}var Qk={scheme:"http",domainHost:!0,parse:$k,serialize:Jk},FB0={scheme:"https",domainHost:Qk.domainHost,parse:$k,serialize:Jk},QJ={scheme:"ws",domainHost:!0,parse:oY0,serialize:sY0},$B0={scheme:"wss",domainHost:QJ.domainHost,parse:QJ.parse,serialize:QJ.serialize},JB0={scheme:"urn",parse:rY0,serialize:tY0,skipNormalize:!0},QB0={scheme:"urn:uuid",parse:eY0,serialize:DB0,skipNormalize:!0},YJ={http:Qk,https:FB0,ws:QJ,wss:$B0,urn:JB0,"urn:uuid":QB0};Object.setPrototypeOf(YJ,null);function OG(D){return D&&(YJ[D]||YJ[D.toLowerCase()])||void 0}Yk.exports={wsIsSecure:CG,SCHEMES:YJ,isValidSchemeName:aY0,getSchemeHandler:OG}});var Wk=E((LP0,XJ)=>{var{normalizeIPv6:YB0,removeDotSegments:D9,recomposeAuthority:BB0,normalizeComponentEncoding:BJ,isIPv4:XB0,nonSimpleDomain:GB0}=RG(),{SCHEMES:WB0,getSchemeHandler:Xk}=Bk();function HB0(D,F){if(typeof D==="string")D=U8(u8(D,F),F);else if(typeof D==="object")D=u8(U8(D,F),F);return D}function qB0(D,F,$){let J=$?Object.assign({scheme:"null"},$):{scheme:"null"},Q=Gk(u8(D,J),u8(F,J),J,!0);return J.skipEscape=!0,U8(Q,J)}function Gk(D,F,$,J){let Q={};if(!J)D=u8(U8(D,$),$),F=u8(U8(F,$),$);if($=$||{},!$.tolerant&&F.scheme)Q.scheme=F.scheme,Q.userinfo=F.userinfo,Q.host=F.host,Q.port=F.port,Q.path=D9(F.path||""),Q.query=F.query;else{if(F.userinfo!==void 0||F.host!==void 0||F.port!==void 0)Q.userinfo=F.userinfo,Q.host=F.host,Q.port=F.port,Q.path=D9(F.path||""),Q.query=F.query;else{if(!F.path)if(Q.path=D.path,F.query!==void 0)Q.query=F.query;else Q.query=D.query;else{if(F.path[0]==="/")Q.path=D9(F.path);else{if((D.userinfo!==void 0||D.host!==void 0||D.port!==void 0)&&!D.path)Q.path="/"+F.path;else if(!D.path)Q.path=F.path;else Q.path=D.path.slice(0,D.path.lastIndexOf("/")+1)+F.path;Q.path=D9(Q.path)}Q.query=F.query}Q.userinfo=D.userinfo,Q.host=D.host,Q.port=D.port}Q.scheme=D.scheme}return Q.fragment=F.fragment,Q}function KB0(D,F,$){if(typeof D==="string")D=unescape(D),D=U8(BJ(u8(D,$),!0),{...$,skipEscape:!0});else if(typeof D==="object")D=U8(BJ(D,!0),{...$,skipEscape:!0});if(typeof F==="string")F=unescape(F),F=U8(BJ(u8(F,$),!0),{...$,skipEscape:!0});else if(typeof F==="object")F=U8(BJ(F,!0),{...$,skipEscape:!0});return D.toLowerCase()===F.toLowerCase()}function U8(D,F){let $={host:D.host,scheme:D.scheme,userinfo:D.userinfo,port:D.port,path:D.path,query:D.query,nid:D.nid,nss:D.nss,uuid:D.uuid,fragment:D.fragment,reference:D.reference,resourceName:D.resourceName,secure:D.secure,error:""},J=Object.assign({},F),Q=[],Y=Xk(J.scheme||$.scheme);if(Y&&Y.serialize)Y.serialize($,J);if($.path!==void 0)if(!J.skipEscape){if($.path=escape($.path),$.scheme!==void 0)$.path=$.path.split("%3A").join(":")}else $.path=unescape($.path);if(J.reference!=="suffix"&&$.scheme)Q.push($.scheme,":");let B=BB0($);if(B!==void 0){if(J.reference!=="suffix")Q.push("//");if(Q.push(B),$.path&&$.path[0]!=="/")Q.push("/")}if($.path!==void 0){let X=$.path;if(!J.absolutePath&&(!Y||!Y.absolutePath))X=D9(X);if(B===void 0&&X[0]==="/"&&X[1]==="/")X="/%2F"+X.slice(2);Q.push(X)}if($.query!==void 0)Q.push("?",$.query);if($.fragment!==void 0)Q.push("#",$.fragment);return Q.join("")}var zB0=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function u8(D,F){let $=Object.assign({},F),J={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},Q=!1;if($.reference==="suffix")if($.scheme)D=$.scheme+":"+D;else D="//"+D;let Y=D.match(zB0);if(Y){if(J.scheme=Y[1],J.userinfo=Y[3],J.host=Y[4],J.port=parseInt(Y[5],10),J.path=Y[6]||"",J.query=Y[7],J.fragment=Y[8],isNaN(J.port))J.port=Y[5];if(J.host)if(XB0(J.host)===!1){let G=YB0(J.host);J.host=G.host.toLowerCase(),Q=G.isIPV6}else Q=!0;if(J.scheme===void 0&&J.userinfo===void 0&&J.host===void 0&&J.port===void 0&&J.query===void 0&&!J.path)J.reference="same-document";else if(J.scheme===void 0)J.reference="relative";else if(J.fragment===void 0)J.reference="absolute";else J.reference="uri";if($.reference&&$.reference!=="suffix"&&$.reference!==J.reference)J.error=J.error||"URI is not a "+$.reference+" reference.";let B=Xk($.scheme||J.scheme);if(!$.unicodeSupport&&(!B||!B.unicodeSupport)){if(J.host&&($.domainHost||B&&B.domainHost)&&Q===!1&&GB0(J.host))try{J.host=URL.domainToASCII(J.host.toLowerCase())}catch(X){J.error=J.error||"Host's domain name can not be converted to ASCII: "+X}}if(!B||B&&!B.skipNormalize){if(D.indexOf("%")!==-1){if(J.scheme!==void 0)J.scheme=unescape(J.scheme);if(J.host!==void 0)J.host=unescape(J.host)}if(J.path)J.path=escape(unescape(J.path));if(J.fragment)J.fragment=encodeURI(decodeURIComponent(J.fragment))}if(B&&B.parse)B.parse(J,$)}else J.error=J.error||"URI can not be parsed.";return J}var wG={SCHEMES:WB0,normalize:HB0,resolve:qB0,resolveComponent:Gk,equal:KB0,serialize:U8,parse:u8};XJ.exports=wG;XJ.exports.default=wG;XJ.exports.fastUri=wG});var Kk=E((qk)=>{Object.defineProperty(qk,"__esModule",{value:!0});var Hk=Wk();Hk.code='require("ajv/dist/runtime/uri").default';qk.default=Hk});var PG=E((m8)=>{Object.defineProperty(m8,"__esModule",{value:!0});m8.CodeGen=m8.Name=m8.nil=m8.stringify=m8.str=m8._=m8.KeywordCxt=void 0;var VB0=DF();Object.defineProperty(m8,"KeywordCxt",{enumerable:!0,get:function(){return VB0.KeywordCxt}});var $F=F0();Object.defineProperty(m8,"_",{enumerable:!0,get:function(){return $F._}});Object.defineProperty(m8,"str",{enumerable:!0,get:function(){return $F.str}});Object.defineProperty(m8,"stringify",{enumerable:!0,get:function(){return $F.stringify}});Object.defineProperty(m8,"nil",{enumerable:!0,get:function(){return $F.nil}});Object.defineProperty(m8,"Name",{enumerable:!0,get:function(){return $F.Name}});Object.defineProperty(m8,"CodeGen",{enumerable:!0,get:function(){return $F.CodeGen}});var ZB0=r5(),Uk=FF(),UB0=QG(),F9=e5(),LB0=F0(),$9=a5(),GJ=i5(),TG=E0(),zk=rS(),AB0=Kk(),Lk=(D,F)=>new RegExp(D,F);Lk.code="new RegExp";var MB0=["removeAdditional","useDefaults","coerceTypes"],NB0=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),RB0={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},CB0={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},Ek=200;function OB0(D){var F,$,J,Q,Y,B,X,G,H,q,K,V,z,Z,U,M,A,C,w,I,R,j,v,c,r;let a=D.strict,Q0=(F=D.code)===null||F===void 0?void 0:F.optimize,$0=Q0===!0||Q0===void 0?1:Q0||0,N0=(J=($=D.code)===null||$===void 0?void 0:$.regExp)!==null&&J!==void 0?J:Lk,n=(Q=D.uriResolver)!==null&&Q!==void 0?Q:AB0.default;return{strictSchema:(B=(Y=D.strictSchema)!==null&&Y!==void 0?Y:a)!==null&&B!==void 0?B:!0,strictNumbers:(G=(X=D.strictNumbers)!==null&&X!==void 0?X:a)!==null&&G!==void 0?G:!0,strictTypes:(q=(H=D.strictTypes)!==null&&H!==void 0?H:a)!==null&&q!==void 0?q:"log",strictTuples:(V=(K=D.strictTuples)!==null&&K!==void 0?K:a)!==null&&V!==void 0?V:"log",strictRequired:(Z=(z=D.strictRequired)!==null&&z!==void 0?z:a)!==null&&Z!==void 0?Z:!1,code:D.code?{...D.code,optimize:$0,regExp:N0}:{optimize:$0,regExp:N0},loopRequired:(U=D.loopRequired)!==null&&U!==void 0?U:Ek,loopEnum:(M=D.loopEnum)!==null&&M!==void 0?M:Ek,meta:(A=D.meta)!==null&&A!==void 0?A:!0,messages:(C=D.messages)!==null&&C!==void 0?C:!0,inlineRefs:(w=D.inlineRefs)!==null&&w!==void 0?w:!0,schemaId:(I=D.schemaId)!==null&&I!==void 0?I:"$id",addUsedSchema:(R=D.addUsedSchema)!==null&&R!==void 0?R:!0,validateSchema:(j=D.validateSchema)!==null&&j!==void 0?j:!0,validateFormats:(v=D.validateFormats)!==null&&v!==void 0?v:!0,unicodeRegExp:(c=D.unicodeRegExp)!==null&&c!==void 0?c:!0,int32range:(r=D.int32range)!==null&&r!==void 0?r:!0,uriResolver:n}}class WJ{constructor(D={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,D=this.opts={...D,...OB0(D)};let{es5:F,lines:$}=this.opts.code;this.scope=new LB0.ValueScope({scope:{},prefixes:NB0,es5:F,lines:$}),this.logger=SB0(D.logger);let J=D.validateFormats;if(D.validateFormats=!1,this.RULES=(0,UB0.getRules)(),Vk.call(this,RB0,D,"NOT SUPPORTED"),Vk.call(this,CB0,D,"DEPRECATED","warn"),this._metaOpts=PB0.call(this),D.formats)jB0.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),D.keywords)TB0.call(this,D.keywords);if(typeof D.meta=="object")this.addMetaSchema(D.meta);wB0.call(this),D.validateFormats=J}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:D,meta:F,schemaId:$}=this.opts,J=zk;if($==="id")J={...zk},J.id=J.$id,delete J.$id;if(F&&D)this.addMetaSchema(J,J[$],!1)}defaultMeta(){let{meta:D,schemaId:F}=this.opts;return this.opts.defaultMeta=typeof D=="object"?D[F]||D:void 0}validate(D,F){let $;if(typeof D=="string"){if($=this.getSchema(D),!$)throw Error(`no schema with key or ref "${D}"`)}else $=this.compile(D);let J=$(F);if(!("$async"in $))this.errors=$.errors;return J}compile(D,F){let $=this._addSchema(D,F);return $.validate||this._compileSchemaEnv($)}compileAsync(D,F){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:$}=this.opts;return J.call(this,D,F);async function J(H,q){await Q.call(this,H.$schema);let K=this._addSchema(H,q);return K.validate||Y.call(this,K)}async function Q(H){if(H&&!this.getSchema(H))await J.call(this,{$ref:H},!0)}async function Y(H){try{return this._compileSchemaEnv(H)}catch(q){if(!(q instanceof Uk.default))throw q;return B.call(this,q),await X.call(this,q.missingSchema),Y.call(this,H)}}function B({missingSchema:H,missingRef:q}){if(this.refs[H])throw Error(`AnySchema ${H} is loaded but ${q} cannot be resolved`)}async function X(H){let q=await G.call(this,H);if(!this.refs[H])await Q.call(this,q.$schema);if(!this.refs[H])this.addSchema(q,H,F)}async function G(H){let q=this._loading[H];if(q)return q;try{return await(this._loading[H]=$(H))}finally{delete this._loading[H]}}}addSchema(D,F,$,J=this.opts.validateSchema){if(Array.isArray(D)){for(let Y of D)this.addSchema(Y,void 0,$,J);return this}let Q;if(typeof D==="object"){let{schemaId:Y}=this.opts;if(Q=D[Y],Q!==void 0&&typeof Q!="string")throw Error(`schema ${Y} must be string`)}return F=(0,$9.normalizeId)(F||Q),this._checkUnique(F),this.schemas[F]=this._addSchema(D,$,F,J,!0),this}addMetaSchema(D,F,$=this.opts.validateSchema){return this.addSchema(D,F,!0,$),this}validateSchema(D,F){if(typeof D=="boolean")return!0;let $;if($=D.$schema,$!==void 0&&typeof $!="string")throw Error("$schema must be a string");if($=$||this.opts.defaultMeta||this.defaultMeta(),!$)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let J=this.validate($,D);if(!J&&F){let Q="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(Q);else throw Error(Q)}return J}getSchema(D){let F;while(typeof(F=Zk.call(this,D))=="string")D=F;if(F===void 0){let{schemaId:$}=this.opts,J=new F9.SchemaEnv({schema:{},schemaId:$});if(F=F9.resolveSchema.call(this,J,D),!F)return;this.refs[D]=F}return F.validate||this._compileSchemaEnv(F)}removeSchema(D){if(D instanceof RegExp)return this._removeAllSchemas(this.schemas,D),this._removeAllSchemas(this.refs,D),this;switch(typeof D){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let F=Zk.call(this,D);if(typeof F=="object")this._cache.delete(F.schema);return delete this.schemas[D],delete this.refs[D],this}case"object":{let F=D;this._cache.delete(F);let $=D[this.opts.schemaId];if($)$=(0,$9.normalizeId)($),delete this.schemas[$],delete this.refs[$];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(D){for(let F of D)this.addKeyword(F);return this}addKeyword(D,F){let $;if(typeof D=="string"){if($=D,typeof F=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),F.keyword=$}else if(typeof D=="object"&&F===void 0){if(F=D,$=F.keyword,Array.isArray($)&&!$.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(vB0.call(this,$,F),!F)return(0,TG.eachItem)($,(Q)=>jG.call(this,Q)),this;xB0.call(this,F);let J={...F,type:(0,GJ.getJSONTypes)(F.type),schemaType:(0,GJ.getJSONTypes)(F.schemaType)};return(0,TG.eachItem)($,J.type.length===0?(Q)=>jG.call(this,Q,J):(Q)=>J.type.forEach((Y)=>jG.call(this,Q,J,Y))),this}getKeyword(D){let F=this.RULES.all[D];return typeof F=="object"?F.definition:!!F}removeKeyword(D){let{RULES:F}=this;delete F.keywords[D],delete F.all[D];for(let $ of F.rules){let J=$.rules.findIndex((Q)=>Q.keyword===D);if(J>=0)$.rules.splice(J,1)}return this}addFormat(D,F){if(typeof F=="string")F=new RegExp(F);return this.formats[D]=F,this}errorsText(D=this.errors,{separator:F=", ",dataVar:$="data"}={}){if(!D||D.length===0)return"No errors";return D.map((J)=>`${$}${J.instancePath} ${J.message}`).reduce((J,Q)=>J+F+Q)}$dataMetaSchema(D,F){let $=this.RULES.all;D=JSON.parse(JSON.stringify(D));for(let J of F){let Q=J.split("/").slice(1),Y=D;for(let B of Q)Y=Y[B];for(let B in $){let X=$[B];if(typeof X!="object")continue;let{$data:G}=X.definition,H=Y[B];if(G&&H)Y[B]=Ak(H)}}return D}_removeAllSchemas(D,F){for(let $ in D){let J=D[$];if(!F||F.test($)){if(typeof J=="string")delete D[$];else if(J&&!J.meta)this._cache.delete(J.schema),delete D[$]}}}_addSchema(D,F,$,J=this.opts.validateSchema,Q=this.opts.addUsedSchema){let Y,{schemaId:B}=this.opts;if(typeof D=="object")Y=D[B];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof D!="boolean")throw Error("schema must be object or boolean");let X=this._cache.get(D);if(X!==void 0)return X;$=(0,$9.normalizeId)(Y||$);let G=$9.getSchemaRefs.call(this,D,$);if(X=new F9.SchemaEnv({schema:D,schemaId:B,meta:F,baseId:$,localRefs:G}),this._cache.set(X.schema,X),Q&&!$.startsWith("#")){if($)this._checkUnique($);this.refs[$]=X}if(J)this.validateSchema(D,!0);return X}_checkUnique(D){if(this.schemas[D]||this.refs[D])throw Error(`schema with key or id "${D}" already exists`)}_compileSchemaEnv(D){if(D.meta)this._compileMetaSchema(D);else F9.compileSchema.call(this,D);if(!D.validate)throw Error("ajv implementation error");return D.validate}_compileMetaSchema(D){let F=this.opts;this.opts=this._metaOpts;try{F9.compileSchema.call(this,D)}finally{this.opts=F}}}WJ.ValidationError=ZB0.default;WJ.MissingRefError=Uk.default;m8.default=WJ;function Vk(D,F,$,J="error"){for(let Q in D){let Y=Q;if(Y in F)this.logger[J](`${$}: option ${Q}. ${D[Y]}`)}}function Zk(D){return D=(0,$9.normalizeId)(D),this.schemas[D]||this.refs[D]}function wB0(){let D=this.opts.schemas;if(!D)return;if(Array.isArray(D))this.addSchema(D);else for(let F in D)this.addSchema(D[F],F)}function jB0(){for(let D in this.opts.formats){let F=this.opts.formats[D];if(F)this.addFormat(D,F)}}function TB0(D){if(Array.isArray(D)){this.addVocabulary(D);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let F in D){let $=D[F];if(!$.keyword)$.keyword=F;this.addKeyword($)}}function PB0(){let D={...this.opts};for(let F of MB0)delete D[F];return D}var IB0={log(){},warn(){},error(){}};function SB0(D){if(D===!1)return IB0;if(D===void 0)return console;if(D.log&&D.warn&&D.error)return D;throw Error("logger must implement log, warn and error methods")}var kB0=/^[a-z_$][a-z0-9_$:-]*$/i;function vB0(D,F){let{RULES:$}=this;if((0,TG.eachItem)(D,(J)=>{if($.keywords[J])throw Error(`Keyword ${J} is already defined`);if(!kB0.test(J))throw Error(`Keyword ${J} has invalid name`)}),!F)return;if(F.$data&&!(("code"in F)||("validate"in F)))throw Error('$data keyword must have "code" or "validate" function')}function jG(D,F,$){var J;let Q=F===null||F===void 0?void 0:F.post;if($&&Q)throw Error('keyword with "post" flag cannot have "type"');let{RULES:Y}=this,B=Q?Y.post:Y.rules.find(({type:G})=>G===$);if(!B)B={type:$,rules:[]},Y.rules.push(B);if(Y.keywords[D]=!0,!F)return;let X={keyword:D,definition:{...F,type:(0,GJ.getJSONTypes)(F.type),schemaType:(0,GJ.getJSONTypes)(F.schemaType)}};if(F.before)yB0.call(this,B,X,F.before);else B.rules.push(X);Y.all[D]=X,(J=F.implements)===null||J===void 0||J.forEach((G)=>this.addKeyword(G))}function yB0(D,F,$){let J=D.rules.findIndex((Q)=>Q.keyword===$);if(J>=0)D.rules.splice(J,0,F);else D.rules.push(F),this.logger.warn(`rule ${$} is not defined`)}function xB0(D){let{metaSchema:F}=D;if(F===void 0)return;if(D.$data&&this.opts.$data)F=Ak(F);D.validateSchema=this.compile(F,!0)}var _B0={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Ak(D){return{anyOf:[D,_B0]}}});var Nk=E((Mk)=>{Object.defineProperty(Mk,"__esModule",{value:!0});var hB0={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Mk.default=hB0});var KJ=E((wk)=>{Object.defineProperty(wk,"__esModule",{value:!0});wk.callRef=wk.getValidate=void 0;var uB0=FF(),Rk=L1(),nD=F0(),JF=U1(),Ck=e5(),HJ=E0(),mB0={keyword:"$ref",schemaType:"string",code(D){let{gen:F,schema:$,it:J}=D,{baseId:Q,schemaEnv:Y,validateName:B,opts:X,self:G}=J,{root:H}=Y;if(($==="#"||$==="#/")&&Q===H.baseId)return K();let q=Ck.resolveRef.call(G,H,Q,$);if(q===void 0)throw new uB0.default(J.opts.uriResolver,Q,$);if(q instanceof Ck.SchemaEnv)return V(q);return z(q);function K(){if(Y===H)return qJ(D,B,Y,Y.$async);let Z=F.scopeValue("root",{ref:H});return qJ(D,nD._`${Z}.validate`,H,H.$async)}function V(Z){let U=Ok(D,Z);qJ(D,U,Z,Z.$async)}function z(Z){let U=F.scopeValue("schema",X.code.source===!0?{ref:Z,code:(0,nD.stringify)(Z)}:{ref:Z}),M=F.name("valid"),A=D.subschema({schema:Z,dataTypes:[],schemaPath:nD.nil,topSchemaRef:U,errSchemaPath:$},M);D.mergeEvaluated(A),D.ok(M)}}};function Ok(D,F){let{gen:$}=D;return F.validate?$.scopeValue("validate",{ref:F.validate}):nD._`${$.scopeValue("wrapper",{ref:F})}.validate`}wk.getValidate=Ok;function qJ(D,F,$,J){let{gen:Q,it:Y}=D,{allErrors:B,schemaEnv:X,opts:G}=Y,H=G.passContext?JF.default.this:nD.nil;if(J)q();else K();function q(){if(!X.$async)throw Error("async schema referenced by sync schema");let Z=Q.let("valid");Q.try(()=>{if(Q.code(nD._`await ${(0,Rk.callValidateCode)(D,F,H)}`),z(F),!B)Q.assign(Z,!0)},(U)=>{if(Q.if(nD._`!(${U} instanceof ${Y.ValidationError})`,()=>Q.throw(U)),V(U),!B)Q.assign(Z,!1)}),D.ok(Z)}function K(){D.result((0,Rk.callValidateCode)(D,F,H),()=>z(F),()=>V(F))}function V(Z){let U=nD._`${Z}.errors`;Q.assign(JF.default.vErrors,nD._`${JF.default.vErrors} === null ? ${U} : ${JF.default.vErrors}.concat(${U})`),Q.assign(JF.default.errors,nD._`${JF.default.vErrors}.length`)}function z(Z){var U;if(!Y.opts.unevaluated)return;let M=(U=$===null||$===void 0?void 0:$.validate)===null||U===void 0?void 0:U.evaluated;if(Y.props!==!0)if(M&&!M.dynamicProps){if(M.props!==void 0)Y.props=HJ.mergeEvaluated.props(Q,M.props,Y.props)}else{let A=Q.var("props",nD._`${Z}.evaluated.props`);Y.props=HJ.mergeEvaluated.props(Q,A,Y.props,nD.Name)}if(Y.items!==!0)if(M&&!M.dynamicItems){if(M.items!==void 0)Y.items=HJ.mergeEvaluated.items(Q,M.items,Y.items)}else{let A=Q.var("items",nD._`${Z}.evaluated.items`);Y.items=HJ.mergeEvaluated.items(Q,A,Y.items,nD.Name)}}}wk.callRef=qJ;wk.default=mB0});var IG=E((Tk)=>{Object.defineProperty(Tk,"__esModule",{value:!0});var dB0=Nk(),cB0=KJ(),nB0=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",dB0.default,cB0.default];Tk.default=nB0});var Ik=E((Pk)=>{Object.defineProperty(Pk,"__esModule",{value:!0});var zJ=F0(),h6=zJ.operators,EJ={maximum:{okStr:"<=",ok:h6.LTE,fail:h6.GT},minimum:{okStr:">=",ok:h6.GTE,fail:h6.LT},exclusiveMaximum:{okStr:"<",ok:h6.LT,fail:h6.GTE},exclusiveMinimum:{okStr:">",ok:h6.GT,fail:h6.LTE}},aB0={message:({keyword:D,schemaCode:F})=>zJ.str`must be ${EJ[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>zJ._`{comparison: ${EJ[D].okStr}, limit: ${F}}`},oB0={keyword:Object.keys(EJ),type:"number",schemaType:"number",$data:!0,error:aB0,code(D){let{keyword:F,data:$,schemaCode:J}=D;D.fail$data(zJ._`${$} ${EJ[F].fail} ${J} || isNaN(${$})`)}};Pk.default=oB0});var kk=E((Sk)=>{Object.defineProperty(Sk,"__esModule",{value:!0});var J9=F0(),rB0={message:({schemaCode:D})=>J9.str`must be multiple of ${D}`,params:({schemaCode:D})=>J9._`{multipleOf: ${D}}`},tB0={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:rB0,code(D){let{gen:F,data:$,schemaCode:J,it:Q}=D,Y=Q.opts.multipleOfPrecision,B=F.let("res"),X=Y?J9._`Math.abs(Math.round(${B}) - ${B}) > 1e-${Y}`:J9._`${B} !== parseInt(${B})`;D.fail$data(J9._`(${J} === 0 || (${B} = ${$}/${J}, ${X}))`)}};Sk.default=tB0});var xk=E((yk)=>{Object.defineProperty(yk,"__esModule",{value:!0});function vk(D){let F=D.length,$=0,J=0,Q;while(J<F)if($++,Q=D.charCodeAt(J++),Q>=55296&&Q<=56319&&J<F){if(Q=D.charCodeAt(J),(Q&64512)===56320)J++}return $}yk.default=vk;vk.code='require("ajv/dist/runtime/ucs2length").default'});var fk=E((_k)=>{Object.defineProperty(_k,"__esModule",{value:!0});var R4=F0(),F20=E0(),$20=xk(),J20={message({keyword:D,schemaCode:F}){let $=D==="maxLength"?"more":"fewer";return R4.str`must NOT have ${$} than ${F} characters`},params:({schemaCode:D})=>R4._`{limit: ${D}}`},Q20={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:J20,code(D){let{keyword:F,data:$,schemaCode:J,it:Q}=D,Y=F==="maxLength"?R4.operators.GT:R4.operators.LT,B=Q.opts.unicode===!1?R4._`${$}.length`:R4._`${(0,F20.useFunc)(D.gen,$20.default)}(${$})`;D.fail$data(R4._`${B} ${Y} ${J}`)}};_k.default=Q20});var hk=E((gk)=>{Object.defineProperty(gk,"__esModule",{value:!0});var B20=L1(),VJ=F0(),X20={message:({schemaCode:D})=>VJ.str`must match pattern "${D}"`,params:({schemaCode:D})=>VJ._`{pattern: ${D}}`},G20={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:X20,code(D){let{data:F,$data:$,schema:J,schemaCode:Q,it:Y}=D,B=Y.opts.unicodeRegExp?"u":"",X=$?VJ._`(new RegExp(${Q}, ${B}))`:(0,B20.usePattern)(D,J);D.fail$data(VJ._`!${X}.test(${F})`)}};gk.default=G20});var uk=E((bk)=>{Object.defineProperty(bk,"__esModule",{value:!0});var Q9=F0(),H20={message({keyword:D,schemaCode:F}){let $=D==="maxProperties"?"more":"fewer";return Q9.str`must NOT have ${$} than ${F} properties`},params:({schemaCode:D})=>Q9._`{limit: ${D}}`},q20={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:H20,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxProperties"?Q9.operators.GT:Q9.operators.LT;D.fail$data(Q9._`Object.keys(${$}).length ${Q} ${J}`)}};bk.default=q20});var lk=E((mk)=>{Object.defineProperty(mk,"__esModule",{value:!0});var Y9=L1(),B9=F0(),z20=E0(),E20={message:({params:{missingProperty:D}})=>B9.str`must have required property '${D}'`,params:({params:{missingProperty:D}})=>B9._`{missingProperty: ${D}}`},V20={keyword:"required",type:"object",schemaType:"array",$data:!0,error:E20,code(D){let{gen:F,schema:$,schemaCode:J,data:Q,$data:Y,it:B}=D,{opts:X}=B;if(!Y&&$.length===0)return;let G=$.length>=X.loopRequired;if(B.allErrors)H();else q();if(X.strictRequired){let z=D.parentSchema.properties,{definedProperties:Z}=D.it;for(let U of $)if((z===null||z===void 0?void 0:z[U])===void 0&&!Z.has(U)){let M=B.schemaEnv.baseId+B.errSchemaPath,A=`required property "${U}" is not defined at "${M}" (strictRequired)`;(0,z20.checkStrictMode)(B,A,B.opts.strictRequired)}}function H(){if(G||Y)D.block$data(B9.nil,K);else for(let z of $)(0,Y9.checkReportMissingProp)(D,z)}function q(){let z=F.let("missing");if(G||Y){let Z=F.let("valid",!0);D.block$data(Z,()=>V(z,Z)),D.ok(Z)}else F.if((0,Y9.checkMissingProp)(D,$,z)),(0,Y9.reportMissingProp)(D,z),F.else()}function K(){F.forOf("prop",J,(z)=>{D.setParams({missingProperty:z}),F.if((0,Y9.noPropertyInData)(F,Q,z,X.ownProperties),()=>D.error())})}function V(z,Z){D.setParams({missingProperty:z}),F.forOf(z,J,()=>{F.assign(Z,(0,Y9.propertyInData)(F,Q,z,X.ownProperties)),F.if((0,B9.not)(Z),()=>{D.error(),F.break()})},B9.nil)}}};mk.default=V20});var dk=E((pk)=>{Object.defineProperty(pk,"__esModule",{value:!0});var X9=F0(),U20={message({keyword:D,schemaCode:F}){let $=D==="maxItems"?"more":"fewer";return X9.str`must NOT have ${$} than ${F} items`},params:({schemaCode:D})=>X9._`{limit: ${D}}`},L20={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:U20,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxItems"?X9.operators.GT:X9.operators.LT;D.fail$data(X9._`${$}.length ${Q} ${J}`)}};pk.default=L20});var ZJ=E((nk)=>{Object.defineProperty(nk,"__esModule",{value:!0});var ck=KG();ck.code='require("ajv/dist/runtime/equal").default';nk.default=ck});var ak=E((ik)=>{Object.defineProperty(ik,"__esModule",{value:!0});var SG=i5(),LD=F0(),N20=E0(),R20=ZJ(),C20={message:({params:{i:D,j:F}})=>LD.str`must NOT have duplicate items (items ## ${F} and ${D} are identical)`,params:({params:{i:D,j:F}})=>LD._`{i: ${D}, j: ${F}}`},O20={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:C20,code(D){let{gen:F,data:$,$data:J,schema:Q,parentSchema:Y,schemaCode:B,it:X}=D;if(!J&&!Q)return;let G=F.let("valid"),H=Y.items?(0,SG.getSchemaTypes)(Y.items):[];D.block$data(G,q,LD._`${B} === false`),D.ok(G);function q(){let Z=F.let("i",LD._`${$}.length`),U=F.let("j");D.setParams({i:Z,j:U}),F.assign(G,!0),F.if(LD._`${Z} > 1`,()=>(K()?V:z)(Z,U))}function K(){return H.length>0&&!H.some((Z)=>Z==="object"||Z==="array")}function V(Z,U){let M=F.name("item"),A=(0,SG.checkDataTypes)(H,M,X.opts.strictNumbers,SG.DataType.Wrong),C=F.const("indices",LD._`{}`);F.for(LD._`;${Z}--;`,()=>{if(F.let(M,LD._`${$}[${Z}]`),F.if(A,LD._`continue`),H.length>1)F.if(LD._`typeof ${M} == "string"`,LD._`${M} += "_"`);F.if(LD._`typeof ${C}[${M}] == "number"`,()=>{F.assign(U,LD._`${C}[${M}]`),D.error(),F.assign(G,!1).break()}).code(LD._`${C}[${M}] = ${Z}`)})}function z(Z,U){let M=(0,N20.useFunc)(F,R20.default),A=F.name("outer");F.label(A).for(LD._`;${Z}--;`,()=>F.for(LD._`${U} = ${Z}; ${U}--;`,()=>F.if(LD._`${M}(${$}[${Z}], ${$}[${U}])`,()=>{D.error(),F.assign(G,!1).break(A)})))}}};ik.default=O20});var sk=E((ok)=>{Object.defineProperty(ok,"__esModule",{value:!0});var kG=F0(),j20=E0(),T20=ZJ(),P20={message:"must be equal to constant",params:({schemaCode:D})=>kG._`{allowedValue: ${D}}`},I20={keyword:"const",$data:!0,error:P20,code(D){let{gen:F,data:$,$data:J,schemaCode:Q,schema:Y}=D;if(J||Y&&typeof Y=="object")D.fail$data(kG._`!${(0,j20.useFunc)(F,T20.default)}(${$}, ${Q})`);else D.fail(kG._`${Y} !== ${$}`)}};ok.default=I20});var tk=E((rk)=>{Object.defineProperty(rk,"__esModule",{value:!0});var G9=F0(),k20=E0(),v20=ZJ(),y20={message:"must be equal to one of the allowed values",params:({schemaCode:D})=>G9._`{allowedValues: ${D}}`},x20={keyword:"enum",schemaType:"array",$data:!0,error:y20,code(D){let{gen:F,data:$,$data:J,schema:Q,schemaCode:Y,it:B}=D;if(!J&&Q.length===0)throw Error("enum must have non-empty array");let X=Q.length>=B.opts.loopEnum,G,H=()=>G!==null&&G!==void 0?G:G=(0,k20.useFunc)(F,v20.default),q;if(X||J)q=F.let("valid"),D.block$data(q,K);else{if(!Array.isArray(Q))throw Error("ajv implementation error");let z=F.const("vSchema",Y);q=(0,G9.or)(...Q.map((Z,U)=>V(z,U)))}D.pass(q);function K(){F.assign(q,!1),F.forOf("v",Y,(z)=>F.if(G9._`${H()}(${$}, ${z})`,()=>F.assign(q,!0).break()))}function V(z,Z){let U=Q[Z];return typeof U==="object"&&U!==null?G9._`${H()}(${$}, ${z}[${Z}])`:G9._`${$} === ${U}`}}};rk.default=x20});var vG=E((ek)=>{Object.defineProperty(ek,"__esModule",{value:!0});var f20=Ik(),g20=kk(),h20=fk(),b20=hk(),u20=uk(),m20=lk(),l20=dk(),p20=ak(),d20=sk(),c20=tk(),n20=[f20.default,g20.default,h20.default,b20.default,u20.default,m20.default,l20.default,p20.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},d20.default,c20.default];ek.default=n20});var xG=E((Fv)=>{Object.defineProperty(Fv,"__esModule",{value:!0});Fv.validateAdditionalItems=void 0;var C4=F0(),yG=E0(),a20={message:({params:{len:D}})=>C4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>C4._`{limit: ${D}}`},o20={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:a20,code(D){let{parentSchema:F,it:$}=D,{items:J}=F;if(!Array.isArray(J)){(0,yG.checkStrictMode)($,'"additionalItems" is ignored when "items" is not an array of schemas');return}Dv(D,J)}};function Dv(D,F){let{gen:$,schema:J,data:Q,keyword:Y,it:B}=D;B.items=!0;let X=$.const("len",C4._`${Q}.length`);if(J===!1)D.setParams({len:F.length}),D.pass(C4._`${X} <= ${F.length}`);else if(typeof J=="object"&&!(0,yG.alwaysValidSchema)(B,J)){let H=$.var("valid",C4._`${X} <= ${F.length}`);$.if((0,C4.not)(H),()=>G(H)),D.ok(H)}function G(H){$.forRange("i",F.length,X,(q)=>{if(D.subschema({keyword:Y,dataProp:q,dataPropType:yG.Type.Num},H),!B.allErrors)$.if((0,C4.not)(H),()=>$.break())})}}Fv.validateAdditionalItems=Dv;Fv.default=o20});var _G=E((Yv)=>{Object.defineProperty(Yv,"__esModule",{value:!0});Yv.validateTuple=void 0;var Jv=F0(),UJ=E0(),r20=L1(),t20={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(D){let{schema:F,it:$}=D;if(Array.isArray(F))return Qv(D,"additionalItems",F);if($.items=!0,(0,UJ.alwaysValidSchema)($,F))return;D.ok((0,r20.validateArray)(D))}};function Qv(D,F,$=D.schema){let{gen:J,parentSchema:Q,data:Y,keyword:B,it:X}=D;if(q(Q),X.opts.unevaluated&&$.length&&X.items!==!0)X.items=UJ.mergeEvaluated.items(J,$.length,X.items);let G=J.name("valid"),H=J.const("len",Jv._`${Y}.length`);$.forEach((K,V)=>{if((0,UJ.alwaysValidSchema)(X,K))return;J.if(Jv._`${H} > ${V}`,()=>D.subschema({keyword:B,schemaProp:V,dataProp:V},G)),D.ok(G)});function q(K){let{opts:V,errSchemaPath:z}=X,Z=$.length,U=Z===K.minItems&&(Z===K.maxItems||K[F]===!1);if(V.strictTuples&&!U){let M=`"${B}" is ${Z}-tuple, but minItems or maxItems/${F} are not specified or different at path "${z}"`;(0,UJ.checkStrictMode)(X,M,V.strictTuples)}}}Yv.validateTuple=Qv;Yv.default=t20});var Gv=E((Xv)=>{Object.defineProperty(Xv,"__esModule",{value:!0});var DX0=_G(),FX0={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(D)=>(0,DX0.validateTuple)(D,"items")};Xv.default=FX0});var qv=E((Hv)=>{Object.defineProperty(Hv,"__esModule",{value:!0});var Wv=F0(),JX0=E0(),QX0=L1(),YX0=xG(),BX0={message:({params:{len:D}})=>Wv.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>Wv._`{limit: ${D}}`},XX0={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:BX0,code(D){let{schema:F,parentSchema:$,it:J}=D,{prefixItems:Q}=$;if(J.items=!0,(0,JX0.alwaysValidSchema)(J,F))return;if(Q)(0,YX0.validateAdditionalItems)(D,Q);else D.ok((0,QX0.validateArray)(D))}};Hv.default=XX0});var zv=E((Kv)=>{Object.defineProperty(Kv,"__esModule",{value:!0});var A1=F0(),LJ=E0(),WX0={message:({params:{min:D,max:F}})=>F===void 0?A1.str`must contain at least ${D} valid item(s)`:A1.str`must contain at least ${D} and no more than ${F} valid item(s)`,params:({params:{min:D,max:F}})=>F===void 0?A1._`{minContains: ${D}}`:A1._`{minContains: ${D}, maxContains: ${F}}`},HX0={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:WX0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:Y}=D,B,X,{minContains:G,maxContains:H}=J;if(Y.opts.next)B=G===void 0?1:G,X=H;else B=1;let q=F.const("len",A1._`${Q}.length`);if(D.setParams({min:B,max:X}),X===void 0&&B===0){(0,LJ.checkStrictMode)(Y,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(X!==void 0&&B>X){(0,LJ.checkStrictMode)(Y,'"minContains" > "maxContains" is always invalid'),D.fail();return}if((0,LJ.alwaysValidSchema)(Y,$)){let U=A1._`${q} >= ${B}`;if(X!==void 0)U=A1._`${U} && ${q} <= ${X}`;D.pass(U);return}Y.items=!0;let K=F.name("valid");if(X===void 0&&B===1)z(K,()=>F.if(K,()=>F.break()));else if(B===0){if(F.let(K,!0),X!==void 0)F.if(A1._`${Q}.length > 0`,V)}else F.let(K,!1),V();D.result(K,()=>D.reset());function V(){let U=F.name("_valid"),M=F.let("count",0);z(U,()=>F.if(U,()=>Z(M)))}function z(U,M){F.forRange("i",0,q,(A)=>{D.subschema({keyword:"contains",dataProp:A,dataPropType:LJ.Type.Num,compositeRule:!0},U),M()})}function Z(U){if(F.code(A1._`${U}++`),X===void 0)F.if(A1._`${U} >= ${B}`,()=>F.assign(K,!0).break());else if(F.if(A1._`${U} > ${X}`,()=>F.assign(K,!1).break()),B===1)F.assign(K,!0);else F.if(A1._`${U} >= ${B}`,()=>F.assign(K,!0))}}};Kv.default=HX0});var AJ=E((Zv)=>{Object.defineProperty(Zv,"__esModule",{value:!0});Zv.validateSchemaDeps=Zv.validatePropertyDeps=Zv.error=void 0;var fG=F0(),KX0=E0(),W9=L1();Zv.error={message:({params:{property:D,depsCount:F,deps:$}})=>{let J=F===1?"property":"properties";return fG.str`must have ${J} ${$} when property ${D} is present`},params:({params:{property:D,depsCount:F,deps:$,missingProperty:J}})=>fG._`{property: ${D},
|
|
88
|
+
|| ${B} === "boolean" || ${Q} === null`).assign(X,W0._`[${Q}]`)}}}function uJ0({gen:D,parentData:F,parentDataProperty:$},J){D.if(W0._`${F} !== undefined`,()=>D.assign(W0._`${F}[${$}]`,J))}function BG(D,F,$,J=r3.Correct){let Q=J===r3.Correct?W0.operators.EQ:W0.operators.NEQ,Y;switch(D){case"null":return W0._`${F} ${Q} null`;case"array":Y=W0._`Array.isArray(${F})`;break;case"object":Y=W0._`${F} && typeof ${F} == "object" && !Array.isArray(${F})`;break;case"integer":Y=B(W0._`!(${F} % 1) && !isNaN(${F})`);break;case"number":Y=B();break;default:return W0._`typeof ${F} ${Q} ${D}`}return J===r3.Correct?Y:(0,W0.not)(Y);function B(X=W0.nil){return(0,W0.and)(W0._`typeof ${F} == "number"`,X,$?W0._`isFinite(${F})`:W0.nil)}}DS.checkDataType=BG;function XG(D,F,$,J){if(D.length===1)return BG(D[0],F,$,J);let Q,Y=(0,rI.toHash)(D);if(Y.array&&Y.object){let B=W0._`typeof ${F} != "object"`;Q=Y.null?B:W0._`!${F} || ${B}`,delete Y.null,delete Y.array,delete Y.object}else Q=W0.nil;if(Y.number)delete Y.integer;for(let B in Y)Q=(0,W0.and)(Q,BG(B,F,$,J));return Q}DS.checkDataTypes=XG;var mJ0={message:({schema:D})=>`must be ${D}`,params:({schema:D,schemaValue:F})=>typeof D=="string"?W0._`{type: ${D}}`:W0._`{type: ${F}}`};function GG(D){let F=lJ0(D);(0,_J0.reportError)(F,mJ0)}DS.reportTypeError=GG;function lJ0(D){let{gen:F,data:$,schema:J}=D,Q=(0,rI.schemaRefOrVal)(D,J,"type");return{gen:F,keyword:"type",data:$,schema:J.type,schemaCode:Q,schemaValue:Q,parentSchema:J,params:{},it:D}}});var YS=E((JS)=>{Object.defineProperty(JS,"__esModule",{value:!0});JS.assignDefaults=void 0;var t3=F0(),oJ0=E0();function sJ0(D,F){let{properties:$,items:J}=D.schema;if(F==="object"&&$)for(let Q in $)$S(D,Q,$[Q].default);else if(F==="array"&&Array.isArray(J))J.forEach((Q,Y)=>$S(D,Y,Q.default))}JS.assignDefaults=sJ0;function $S(D,F,$){let{gen:J,compositeRule:Q,data:Y,opts:B}=D;if($===void 0)return;let X=t3._`${Y}${(0,t3.getProperty)(F)}`;if(Q){(0,oJ0.checkStrictMode)(D,`default is ignored for: ${X}`);return}let G=t3._`${X} === undefined`;if(B.useDefaults==="empty")G=t3._`${G} || ${X} === null || ${X} === ""`;J.if(G,t3._`${X} = ${(0,t3.stringify)($)}`)}});var L1=E((GS)=>{Object.defineProperty(GS,"__esModule",{value:!0});GS.validateUnion=GS.validateArray=GS.usePattern=GS.callValidateCode=GS.schemaProperties=GS.allSchemaProperties=GS.noPropertyInData=GS.propertyInData=GS.isOwnProperty=GS.hasPropFunc=GS.reportMissingProp=GS.checkMissingProp=GS.checkReportMissingProp=void 0;var b0=F0(),WG=E0(),f6=U1(),rJ0=E0();function tJ0(D,F){let{gen:$,data:J,it:Q}=D;$.if(qG($,J,F,Q.opts.ownProperties),()=>{D.setParams({missingProperty:b0._`${F}`},!0),D.error()})}GS.checkReportMissingProp=tJ0;function eJ0({gen:D,data:F,it:{opts:$}},J,Q){return(0,b0.or)(...J.map((Y)=>(0,b0.and)(qG(D,F,Y,$.ownProperties),b0._`${Q} = ${Y}`)))}GS.checkMissingProp=eJ0;function DQ0(D,F){D.setParams({missingProperty:F},!0),D.error()}GS.reportMissingProp=DQ0;function BS(D){return D.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:b0._`Object.prototype.hasOwnProperty`})}GS.hasPropFunc=BS;function HG(D,F,$){return b0._`${BS(D)}.call(${F}, ${$})`}GS.isOwnProperty=HG;function FQ0(D,F,$,J){let Q=b0._`${F}${(0,b0.getProperty)($)} !== undefined`;return J?b0._`${Q} && ${HG(D,F,$)}`:Q}GS.propertyInData=FQ0;function qG(D,F,$,J){let Q=b0._`${F}${(0,b0.getProperty)($)} === undefined`;return J?(0,b0.or)(Q,(0,b0.not)(HG(D,F,$))):Q}GS.noPropertyInData=qG;function XS(D){return D?Object.keys(D).filter((F)=>F!=="__proto__"):[]}GS.allSchemaProperties=XS;function $Q0(D,F){return XS(F).filter(($)=>!(0,WG.alwaysValidSchema)(D,F[$]))}GS.schemaProperties=$Q0;function JQ0({schemaCode:D,data:F,it:{gen:$,topSchemaRef:J,schemaPath:Q,errorPath:Y},it:B},X,G,H){let q=H?b0._`${D}, ${F}, ${J}${Q}`:F,K=[[f6.default.instancePath,(0,b0.strConcat)(f6.default.instancePath,Y)],[f6.default.parentData,B.parentData],[f6.default.parentDataProperty,B.parentDataProperty],[f6.default.rootData,f6.default.rootData]];if(B.opts.dynamicRef)K.push([f6.default.dynamicAnchors,f6.default.dynamicAnchors]);let V=b0._`${q}, ${$.object(...K)}`;return G!==b0.nil?b0._`${X}.call(${G}, ${V})`:b0._`${X}(${V})`}GS.callValidateCode=JQ0;var QQ0=b0._`new RegExp`;function YQ0({gen:D,it:{opts:F}},$){let J=F.unicodeRegExp?"u":"",{regExp:Q}=F.code,Y=Q($,J);return D.scopeValue("pattern",{key:Y.toString(),ref:Y,code:b0._`${Q.code==="new RegExp"?QQ0:(0,rJ0.useFunc)(D,Q)}(${$}, ${J})`})}GS.usePattern=YQ0;function BQ0(D){let{gen:F,data:$,keyword:J,it:Q}=D,Y=F.name("valid");if(Q.allErrors){let X=F.let("valid",!0);return B(()=>F.assign(X,!1)),X}return F.var(Y,!0),B(()=>F.break()),Y;function B(X){let G=F.const("len",b0._`${$}.length`);F.forRange("i",0,G,(H)=>{D.subschema({keyword:J,dataProp:H,dataPropType:WG.Type.Num},Y),F.if((0,b0.not)(Y),X)})}}GS.validateArray=BQ0;function XQ0(D){let{gen:F,schema:$,keyword:J,it:Q}=D;if(!Array.isArray($))throw Error("ajv implementation error");if($.some((G)=>(0,WG.alwaysValidSchema)(Q,G))&&!Q.opts.unevaluated)return;let B=F.let("valid",!1),X=F.name("_valid");F.block(()=>$.forEach((G,H)=>{let q=D.subschema({keyword:J,schemaProp:H,compositeRule:!0},X);if(F.assign(B,b0._`${B} || ${X}`),!D.mergeValidEvaluated(q,X))F.if((0,b0.not)(B))})),D.result(B,()=>D.reset(),()=>D.error(!0))}GS.validateUnion=XQ0});var ES=E((KS)=>{Object.defineProperty(KS,"__esModule",{value:!0});KS.validateKeywordUsage=KS.validSchemaType=KS.funcKeywordCode=KS.macroKeywordCode=void 0;var xD=F0(),M4=U1(),MQ0=L1(),NQ0=n5();function RQ0(D,F){let{gen:$,keyword:J,schema:Q,parentSchema:Y,it:B}=D,X=F.macro.call(B.self,Q,Y,B),G=qS($,J,X);if(B.opts.validateSchema!==!1)B.self.validateSchema(X,!0);let H=$.name("valid");D.subschema({schema:X,schemaPath:xD.nil,errSchemaPath:`${B.errSchemaPath}/${J}`,topSchemaRef:G,compositeRule:!0},H),D.pass(H,()=>D.error(!0))}KS.macroKeywordCode=RQ0;function CQ0(D,F){var $;let{gen:J,keyword:Q,schema:Y,parentSchema:B,$data:X,it:G}=D;wQ0(G,F);let H=!X&&F.compile?F.compile.call(G.self,Y,B,G):F.validate,q=qS(J,Q,H),K=J.let("valid");D.block$data(K,V),D.ok(($=F.valid)!==null&&$!==void 0?$:K);function V(){if(F.errors===!1){if(U(),F.modifying)HS(D);M(()=>D.error())}else{let A=F.async?z():Z();if(F.modifying)HS(D);M(()=>OQ0(D,A))}}function z(){let A=J.let("ruleErrs",null);return J.try(()=>U(xD._`await `),(C)=>J.assign(K,!1).if(xD._`${C} instanceof ${G.ValidationError}`,()=>J.assign(A,xD._`${C}.errors`),()=>J.throw(C))),A}function Z(){let A=xD._`${q}.errors`;return J.assign(A,null),U(xD.nil),A}function U(A=F.async?xD._`await `:xD.nil){let C=G.opts.passContext?M4.default.this:M4.default.self,w=!(("compile"in F)&&!X||F.schema===!1);J.assign(K,xD._`${A}${(0,MQ0.callValidateCode)(D,q,C,w)}`,F.modifying)}function M(A){var C;J.if((0,xD.not)((C=F.valid)!==null&&C!==void 0?C:K),A)}}KS.funcKeywordCode=CQ0;function HS(D){let{gen:F,data:$,it:J}=D;F.if(J.parentData,()=>F.assign($,xD._`${J.parentData}[${J.parentDataProperty}]`))}function OQ0(D,F){let{gen:$}=D;$.if(xD._`Array.isArray(${F})`,()=>{$.assign(M4.default.vErrors,xD._`${M4.default.vErrors} === null ? ${F} : ${M4.default.vErrors}.concat(${F})`).assign(M4.default.errors,xD._`${M4.default.vErrors}.length`),(0,NQ0.extendErrors)(D)},()=>D.error())}function wQ0({schemaEnv:D},F){if(F.async&&!D.$async)throw Error("async keyword in sync schema")}function qS(D,F,$){if($===void 0)throw Error(`keyword "${F}" failed to compile`);return D.scopeValue("keyword",typeof $=="function"?{ref:$}:{ref:$,code:(0,xD.stringify)($)})}function jQ0(D,F,$=!1){return!F.length||F.some((J)=>J==="array"?Array.isArray(D):J==="object"?D&&typeof D=="object"&&!Array.isArray(D):typeof D==J||$&&typeof D>"u")}KS.validSchemaType=jQ0;function TQ0({schema:D,opts:F,self:$,errSchemaPath:J},Q,Y){if(Array.isArray(Q.keyword)?!Q.keyword.includes(Y):Q.keyword!==Y)throw Error("ajv implementation error");let B=Q.dependencies;if(B===null||B===void 0?void 0:B.some((X)=>!Object.prototype.hasOwnProperty.call(D,X)))throw Error(`parent schema must have dependencies of ${Y}: ${B.join(",")}`);if(Q.validateSchema){if(!Q.validateSchema(D[Y])){let G=`keyword "${Y}" value is invalid at path "${J}": `+$.errorsText(Q.validateSchema.errors);if(F.validateSchema==="log")$.logger.error(G);else throw Error(G)}}}KS.validateKeywordUsage=TQ0});var LS=E((ZS)=>{Object.defineProperty(ZS,"__esModule",{value:!0});ZS.extendSubschemaMode=ZS.extendSubschemaData=ZS.getSubschema=void 0;var Z8=F0(),VS=E0();function kQ0(D,{keyword:F,schemaProp:$,schema:J,schemaPath:Q,errSchemaPath:Y,topSchemaRef:B}){if(F!==void 0&&J!==void 0)throw Error('both "keyword" and "schema" passed, only one allowed');if(F!==void 0){let X=D.schema[F];return $===void 0?{schema:X,schemaPath:Z8._`${D.schemaPath}${(0,Z8.getProperty)(F)}`,errSchemaPath:`${D.errSchemaPath}/${F}`}:{schema:X[$],schemaPath:Z8._`${D.schemaPath}${(0,Z8.getProperty)(F)}${(0,Z8.getProperty)($)}`,errSchemaPath:`${D.errSchemaPath}/${F}/${(0,VS.escapeFragment)($)}`}}if(J!==void 0){if(Q===void 0||Y===void 0||B===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:J,schemaPath:Q,topSchemaRef:B,errSchemaPath:Y}}throw Error('either "keyword" or "schema" must be passed')}ZS.getSubschema=kQ0;function vQ0(D,F,{dataProp:$,dataPropType:J,data:Q,dataTypes:Y,propertyName:B}){if(Q!==void 0&&$!==void 0)throw Error('both "data" and "dataProp" passed, only one allowed');let{gen:X}=F;if($!==void 0){let{errorPath:H,dataPathArr:q,opts:K}=F,V=X.let("data",Z8._`${F.data}${(0,Z8.getProperty)($)}`,!0);G(V),D.errorPath=Z8.str`${H}${(0,VS.getErrorPath)($,J,K.jsPropertySyntax)}`,D.parentDataProperty=Z8._`${$}`,D.dataPathArr=[...q,D.parentDataProperty]}if(Q!==void 0){let H=Q instanceof Z8.Name?Q:X.let("data",Q,!0);if(G(H),B!==void 0)D.propertyName=B}if(Y)D.dataTypes=Y;function G(H){D.data=H,D.dataLevel=F.dataLevel+1,D.dataTypes=[],F.definedProperties=new Set,D.parentData=F.data,D.dataNames=[...F.dataNames,H]}}ZS.extendSubschemaData=vQ0;function yQ0(D,{jtdDiscriminator:F,jtdMetadata:$,compositeRule:J,createErrors:Q,allErrors:Y}){if(J!==void 0)D.compositeRule=J;if(Q!==void 0)D.createErrors=Q;if(Y!==void 0)D.allErrors=Y;D.jtdDiscriminator=F,D.jtdMetadata=$}ZS.extendSubschemaMode=yQ0});var KG=E((GP0,AS)=>{AS.exports=function D(F,$){if(F===$)return!0;if(F&&$&&typeof F=="object"&&typeof $=="object"){if(F.constructor!==$.constructor)return!1;var J,Q,Y;if(Array.isArray(F)){if(J=F.length,J!=$.length)return!1;for(Q=J;Q--!==0;)if(!D(F[Q],$[Q]))return!1;return!0}if(F.constructor===RegExp)return F.source===$.source&&F.flags===$.flags;if(F.valueOf!==Object.prototype.valueOf)return F.valueOf()===$.valueOf();if(F.toString!==Object.prototype.toString)return F.toString()===$.toString();if(Y=Object.keys(F),J=Y.length,J!==Object.keys($).length)return!1;for(Q=J;Q--!==0;)if(!Object.prototype.hasOwnProperty.call($,Y[Q]))return!1;for(Q=J;Q--!==0;){var B=Y[Q];if(!D(F[B],$[B]))return!1}return!0}return F!==F&&$!==$}});var NS=E((WP0,MS)=>{var g6=MS.exports=function(D,F,$){if(typeof F=="function")$=F,F={};$=F.cb||$;var J=typeof $=="function"?$:$.pre||function(){},Q=$.post||function(){};FJ(F,J,Q,D,"",D)};g6.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};g6.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};g6.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};g6.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function FJ(D,F,$,J,Q,Y,B,X,G,H){if(J&&typeof J=="object"&&!Array.isArray(J)){F(J,Q,Y,B,X,G,H);for(var q in J){var K=J[q];if(Array.isArray(K)){if(q in g6.arrayKeywords)for(var V=0;V<K.length;V++)FJ(D,F,$,K[V],Q+"/"+q+"/"+V,Y,Q,q,J,V)}else if(q in g6.propsKeywords){if(K&&typeof K=="object")for(var z in K)FJ(D,F,$,K[z],Q+"/"+q+"/"+fQ0(z),Y,Q,q,J,z)}else if(q in g6.keywords||D.allKeys&&!(q in g6.skipKeywords))FJ(D,F,$,K,Q+"/"+q,Y,Q,q,J)}$(J,Q,Y,B,X,G,H)}}function fQ0(D){return D.replace(/~/g,"~0").replace(/\//g,"~1")}});var a5=E((wS)=>{Object.defineProperty(wS,"__esModule",{value:!0});wS.getSchemaRefs=wS.resolveUrl=wS.normalizeId=wS._getFullPath=wS.getFullPath=wS.inlineRef=void 0;var gQ0=E0(),hQ0=KG(),bQ0=NS(),uQ0=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function mQ0(D,F=!0){if(typeof D=="boolean")return!0;if(F===!0)return!zG(D);if(!F)return!1;return RS(D)<=F}wS.inlineRef=mQ0;var lQ0=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function zG(D){for(let F in D){if(lQ0.has(F))return!0;let $=D[F];if(Array.isArray($)&&$.some(zG))return!0;if(typeof $=="object"&&zG($))return!0}return!1}function RS(D){let F=0;for(let $ in D){if($==="$ref")return 1/0;if(F++,uQ0.has($))continue;if(typeof D[$]=="object")(0,gQ0.eachItem)(D[$],(J)=>F+=RS(J));if(F===1/0)return 1/0}return F}function CS(D,F="",$){if($!==!1)F=e3(F);let J=D.parse(F);return OS(D,J)}wS.getFullPath=CS;function OS(D,F){return D.serialize(F).split("#")[0]+"#"}wS._getFullPath=OS;var pQ0=/#\/?$/;function e3(D){return D?D.replace(pQ0,""):""}wS.normalizeId=e3;function dQ0(D,F,$){return $=e3($),D.resolve(F,$)}wS.resolveUrl=dQ0;var cQ0=/^[a-z_][-a-z0-9._]*$/i;function nQ0(D,F){if(typeof D=="boolean")return{};let{schemaId:$,uriResolver:J}=this.opts,Q=e3(D[$]||F),Y={"":Q},B=CS(J,Q,!1),X={},G=new Set;return bQ0(D,{allKeys:!0},(K,V,z,Z)=>{if(Z===void 0)return;let U=B+V,M=Y[Z];if(typeof K[$]=="string")M=A.call(this,K[$]);C.call(this,K.$anchor),C.call(this,K.$dynamicAnchor),Y[V]=M;function A(w){let I=this.opts.uriResolver.resolve;if(w=e3(M?I(M,w):w),G.has(w))throw q(w);G.add(w);let R=this.refs[w];if(typeof R=="string")R=this.refs[R];if(typeof R=="object")H(K,R.schema,w);else if(w!==e3(U))if(w[0]==="#")H(K,X[w],w),X[w]=K;else this.refs[w]=U;return w}function C(w){if(typeof w=="string"){if(!cQ0.test(w))throw Error(`invalid anchor "${w}"`);A.call(this,`#${w}`)}}}),X;function H(K,V,z){if(V!==void 0&&!hQ0(K,V))throw q(z)}function q(K){return Error(`reference "${K}" resolves to more than one schema`)}}wS.getSchemaRefs=nQ0});var DF=E((mS)=>{Object.defineProperty(mS,"__esModule",{value:!0});mS.getData=mS.KeywordCxt=mS.validateFunctionCode=void 0;var kS=dI(),TS=i5(),VG=YG(),$J=i5(),tQ0=YS(),s5=ES(),EG=LS(),d=F0(),s=U1(),eQ0=a5(),b8=E0(),o5=n5();function DY0(D){if(xS(D)){if(_S(D),yS(D)){JY0(D);return}}vS(D,()=>(0,kS.topBoolOrEmptySchema)(D))}mS.validateFunctionCode=DY0;function vS({gen:D,validateName:F,schema:$,schemaEnv:J,opts:Q},Y){if(Q.code.es5)D.func(F,d._`${s.default.data}, ${s.default.valCxt}`,J.$async,()=>{D.code(d._`"use strict"; ${PS($,Q)}`),$Y0(D,Q),D.code(Y)});else D.func(F,d._`${s.default.data}, ${FY0(Q)}`,J.$async,()=>D.code(PS($,Q)).code(Y))}function FY0(D){return d._`{${s.default.instancePath}="", ${s.default.parentData}, ${s.default.parentDataProperty}, ${s.default.rootData}=${s.default.data}${D.dynamicRef?d._`, ${s.default.dynamicAnchors}={}`:d.nil}}={}`}function $Y0(D,F){D.if(s.default.valCxt,()=>{if(D.var(s.default.instancePath,d._`${s.default.valCxt}.${s.default.instancePath}`),D.var(s.default.parentData,d._`${s.default.valCxt}.${s.default.parentData}`),D.var(s.default.parentDataProperty,d._`${s.default.valCxt}.${s.default.parentDataProperty}`),D.var(s.default.rootData,d._`${s.default.valCxt}.${s.default.rootData}`),F.dynamicRef)D.var(s.default.dynamicAnchors,d._`${s.default.valCxt}.${s.default.dynamicAnchors}`)},()=>{if(D.var(s.default.instancePath,d._`""`),D.var(s.default.parentData,d._`undefined`),D.var(s.default.parentDataProperty,d._`undefined`),D.var(s.default.rootData,s.default.data),F.dynamicRef)D.var(s.default.dynamicAnchors,d._`{}`)})}function JY0(D){let{schema:F,opts:$,gen:J}=D;vS(D,()=>{if($.$comment&&F.$comment)gS(D);if(GY0(D),J.let(s.default.vErrors,null),J.let(s.default.errors,0),$.unevaluated)QY0(D);fS(D),qY0(D)});return}function QY0(D){let{gen:F,validateName:$}=D;D.evaluated=F.const("evaluated",d._`${$}.evaluated`),F.if(d._`${D.evaluated}.dynamicProps`,()=>F.assign(d._`${D.evaluated}.props`,d._`undefined`)),F.if(d._`${D.evaluated}.dynamicItems`,()=>F.assign(d._`${D.evaluated}.items`,d._`undefined`))}function PS(D,F){let $=typeof D=="object"&&D[F.schemaId];return $&&(F.code.source||F.code.process)?d._`/*# sourceURL=${$} */`:d.nil}function YY0(D,F){if(xS(D)){if(_S(D),yS(D)){BY0(D,F);return}}(0,kS.boolOrEmptySchema)(D,F)}function yS({schema:D,self:F}){if(typeof D=="boolean")return!D;for(let $ in D)if(F.RULES.all[$])return!0;return!1}function xS(D){return typeof D.schema!="boolean"}function BY0(D,F){let{schema:$,gen:J,opts:Q}=D;if(Q.$comment&&$.$comment)gS(D);WY0(D),HY0(D);let Y=J.const("_errs",s.default.errors);fS(D,Y),J.var(F,d._`${Y} === ${s.default.errors}`)}function _S(D){(0,b8.checkUnknownRules)(D),XY0(D)}function fS(D,F){if(D.opts.jtd)return IS(D,[],!1,F);let $=(0,TS.getSchemaTypes)(D.schema),J=(0,TS.coerceAndCheckDataType)(D,$);IS(D,$,!J,F)}function XY0(D){let{schema:F,errSchemaPath:$,opts:J,self:Q}=D;if(F.$ref&&J.ignoreKeywordsWithRef&&(0,b8.schemaHasRulesButRef)(F,Q.RULES))Q.logger.warn(`$ref: keywords ignored in schema at path "${$}"`)}function GY0(D){let{schema:F,opts:$}=D;if(F.default!==void 0&&$.useDefaults&&$.strictSchema)(0,b8.checkStrictMode)(D,"default is ignored in the schema root")}function WY0(D){let F=D.schema[D.opts.schemaId];if(F)D.baseId=(0,eQ0.resolveUrl)(D.opts.uriResolver,D.baseId,F)}function HY0(D){if(D.schema.$async&&!D.schemaEnv.$async)throw Error("async schema in sync schema")}function gS({gen:D,schemaEnv:F,schema:$,errSchemaPath:J,opts:Q}){let Y=$.$comment;if(Q.$comment===!0)D.code(d._`${s.default.self}.logger.log(${Y})`);else if(typeof Q.$comment=="function"){let B=d.str`${J}/$comment`,X=D.scopeValue("root",{ref:F.root});D.code(d._`${s.default.self}.opts.$comment(${Y}, ${B}, ${X}.schema)`)}}function qY0(D){let{gen:F,schemaEnv:$,validateName:J,ValidationError:Q,opts:Y}=D;if($.$async)F.if(d._`${s.default.errors} === 0`,()=>F.return(s.default.data),()=>F.throw(d._`new ${Q}(${s.default.vErrors})`));else{if(F.assign(d._`${J}.errors`,s.default.vErrors),Y.unevaluated)KY0(D);F.return(d._`${s.default.errors} === 0`)}}function KY0({gen:D,evaluated:F,props:$,items:J}){if($ instanceof d.Name)D.assign(d._`${F}.props`,$);if(J instanceof d.Name)D.assign(d._`${F}.items`,J)}function IS(D,F,$,J){let{gen:Q,schema:Y,data:B,allErrors:X,opts:G,self:H}=D,{RULES:q}=H;if(Y.$ref&&(G.ignoreKeywordsWithRef||!(0,b8.schemaHasRulesButRef)(Y,q))){Q.block(()=>bS(D,"$ref",q.all.$ref.definition));return}if(!G.jtd)zY0(D,F);Q.block(()=>{for(let V of q.rules)K(V);K(q.post)});function K(V){if(!(0,VG.shouldUseGroup)(Y,V))return;if(V.type){if(Q.if((0,$J.checkDataType)(V.type,B,G.strictNumbers)),SS(D,V),F.length===1&&F[0]===V.type&&$)Q.else(),(0,$J.reportTypeError)(D);Q.endIf()}else SS(D,V);if(!X)Q.if(d._`${s.default.errors} === ${J||0}`)}}function SS(D,F){let{gen:$,schema:J,opts:{useDefaults:Q}}=D;if(Q)(0,tQ0.assignDefaults)(D,F.type);$.block(()=>{for(let Y of F.rules)if((0,VG.shouldUseRule)(J,Y))bS(D,Y.keyword,Y.definition,F.type)})}function zY0(D,F){if(D.schemaEnv.meta||!D.opts.strictTypes)return;if(EY0(D,F),!D.opts.allowUnionTypes)VY0(D,F);ZY0(D,D.dataTypes)}function EY0(D,F){if(!F.length)return;if(!D.dataTypes.length){D.dataTypes=F;return}F.forEach(($)=>{if(!hS(D.dataTypes,$))ZG(D,`type "${$}" not allowed by context "${D.dataTypes.join(",")}"`)}),LY0(D,F)}function VY0(D,F){if(F.length>1&&!(F.length===2&&F.includes("null")))ZG(D,"use allowUnionTypes to allow union type keyword")}function ZY0(D,F){let $=D.self.RULES.all;for(let J in $){let Q=$[J];if(typeof Q=="object"&&(0,VG.shouldUseRule)(D.schema,Q)){let{type:Y}=Q.definition;if(Y.length&&!Y.some((B)=>UY0(F,B)))ZG(D,`missing type "${Y.join(",")}" for keyword "${J}"`)}}}function UY0(D,F){return D.includes(F)||F==="number"&&D.includes("integer")}function hS(D,F){return D.includes(F)||F==="integer"&&D.includes("number")}function LY0(D,F){let $=[];for(let J of D.dataTypes)if(hS(F,J))$.push(J);else if(F.includes("integer")&&J==="number")$.push("integer");D.dataTypes=$}function ZG(D,F){let $=D.schemaEnv.baseId+D.errSchemaPath;F+=` at "${$}" (strictTypes)`,(0,b8.checkStrictMode)(D,F,D.opts.strictTypes)}class UG{constructor(D,F,$){if((0,s5.validateKeywordUsage)(D,F,$),this.gen=D.gen,this.allErrors=D.allErrors,this.keyword=$,this.data=D.data,this.schema=D.schema[$],this.$data=F.$data&&D.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,b8.schemaRefOrVal)(D,this.schema,$,this.$data),this.schemaType=F.schemaType,this.parentSchema=D.schema,this.params={},this.it=D,this.def=F,this.$data)this.schemaCode=D.gen.const("vSchema",uS(this.$data,D));else if(this.schemaCode=this.schemaValue,!(0,s5.validSchemaType)(this.schema,F.schemaType,F.allowUndefined))throw Error(`${$} value must be ${JSON.stringify(F.schemaType)}`);if("code"in F?F.trackErrors:F.errors!==!1)this.errsCount=D.gen.const("_errs",s.default.errors)}result(D,F,$){this.failResult((0,d.not)(D),F,$)}failResult(D,F,$){if(this.gen.if(D),$)$();else this.error();if(F){if(this.gen.else(),F(),this.allErrors)this.gen.endIf()}else if(this.allErrors)this.gen.endIf();else this.gen.else()}pass(D,F){this.failResult((0,d.not)(D),void 0,F)}fail(D){if(D===void 0){if(this.error(),!this.allErrors)this.gen.if(!1);return}if(this.gen.if(D),this.error(),this.allErrors)this.gen.endIf();else this.gen.else()}fail$data(D){if(!this.$data)return this.fail(D);let{schemaCode:F}=this;this.fail(d._`${F} !== undefined && (${(0,d.or)(this.invalid$data(),D)})`)}error(D,F,$){if(F){this.setParams(F),this._error(D,$),this.setParams({});return}this._error(D,$)}_error(D,F){(D?o5.reportExtraError:o5.reportError)(this,this.def.error,F)}$dataError(){(0,o5.reportError)(this,this.def.$dataError||o5.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,o5.resetErrorsCount)(this.gen,this.errsCount)}ok(D){if(!this.allErrors)this.gen.if(D)}setParams(D,F){if(F)Object.assign(this.params,D);else this.params=D}block$data(D,F,$=d.nil){this.gen.block(()=>{this.check$data(D,$),F()})}check$data(D=d.nil,F=d.nil){if(!this.$data)return;let{gen:$,schemaCode:J,schemaType:Q,def:Y}=this;if($.if((0,d.or)(d._`${J} === undefined`,F)),D!==d.nil)$.assign(D,!0);if(Q.length||Y.validateSchema){if($.elseIf(this.invalid$data()),this.$dataError(),D!==d.nil)$.assign(D,!1)}$.else()}invalid$data(){let{gen:D,schemaCode:F,schemaType:$,def:J,it:Q}=this;return(0,d.or)(Y(),B());function Y(){if($.length){if(!(F instanceof d.Name))throw Error("ajv implementation error");let X=Array.isArray($)?$:[$];return d._`${(0,$J.checkDataTypes)(X,F,Q.opts.strictNumbers,$J.DataType.Wrong)}`}return d.nil}function B(){if(J.validateSchema){let X=D.scopeValue("validate$data",{ref:J.validateSchema});return d._`!${X}(${F})`}return d.nil}}subschema(D,F){let $=(0,EG.getSubschema)(this.it,D);(0,EG.extendSubschemaData)($,this.it,D),(0,EG.extendSubschemaMode)($,D);let J={...this.it,...$,items:void 0,props:void 0};return YY0(J,F),J}mergeEvaluated(D,F){let{it:$,gen:J}=this;if(!$.opts.unevaluated)return;if($.props!==!0&&D.props!==void 0)$.props=b8.mergeEvaluated.props(J,D.props,$.props,F);if($.items!==!0&&D.items!==void 0)$.items=b8.mergeEvaluated.items(J,D.items,$.items,F)}mergeValidEvaluated(D,F){let{it:$,gen:J}=this;if($.opts.unevaluated&&($.props!==!0||$.items!==!0))return J.if(F,()=>this.mergeEvaluated(D,d.Name)),!0}}mS.KeywordCxt=UG;function bS(D,F,$,J){let Q=new UG(D,$,F);if("code"in $)$.code(Q,J);else if(Q.$data&&$.validate)(0,s5.funcKeywordCode)(Q,$);else if("macro"in $)(0,s5.macroKeywordCode)(Q,$);else if($.compile||$.validate)(0,s5.funcKeywordCode)(Q,$)}var AY0=/^\/(?:[^~]|~0|~1)*$/,MY0=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function uS(D,{dataLevel:F,dataNames:$,dataPathArr:J}){let Q,Y;if(D==="")return s.default.rootData;if(D[0]==="/"){if(!AY0.test(D))throw Error(`Invalid JSON-pointer: ${D}`);Q=D,Y=s.default.rootData}else{let H=MY0.exec(D);if(!H)throw Error(`Invalid JSON-pointer: ${D}`);let q=+H[1];if(Q=H[2],Q==="#"){if(q>=F)throw Error(G("property/index",q));return J[F-q]}if(q>F)throw Error(G("data",q));if(Y=$[F-q],!Q)return Y}let B=Y,X=Q.split("/");for(let H of X)if(H)Y=d._`${Y}${(0,d.getProperty)((0,b8.unescapeJsonPointer)(H))}`,B=d._`${B} && ${Y}`;return B;function G(H,q){return`Cannot access ${H} ${q} levels up, current level is ${F}`}}mS.getData=uS});var r5=E((dS)=>{Object.defineProperty(dS,"__esModule",{value:!0});class pS extends Error{constructor(D){super("validation failed");this.errors=D,this.ajv=this.validation=!0}}dS.default=pS});var FF=E((nS)=>{Object.defineProperty(nS,"__esModule",{value:!0});var LG=a5();class cS extends Error{constructor(D,F,$,J){super(J||`can't resolve reference ${$} from id ${F}`);this.missingRef=(0,LG.resolveUrl)(D,F,$),this.missingSchema=(0,LG.normalizeId)((0,LG.getFullPath)(D,this.missingRef))}}nS.default=cS});var e5=E((oS)=>{Object.defineProperty(oS,"__esModule",{value:!0});oS.resolveSchema=oS.getCompilingSchema=oS.resolveRef=oS.compileSchema=oS.SchemaEnv=void 0;var g1=F0(),wY0=r5(),N4=U1(),h1=a5(),iS=E0(),jY0=DF();class t5{constructor(D){var F;this.refs={},this.dynamicAnchors={};let $;if(typeof D.schema=="object")$=D.schema;this.schema=D.schema,this.schemaId=D.schemaId,this.root=D.root||this,this.baseId=(F=D.baseId)!==null&&F!==void 0?F:(0,h1.normalizeId)($===null||$===void 0?void 0:$[D.schemaId||"$id"]),this.schemaPath=D.schemaPath,this.localRefs=D.localRefs,this.meta=D.meta,this.$async=$===null||$===void 0?void 0:$.$async,this.refs={}}}oS.SchemaEnv=t5;function MG(D){let F=aS.call(this,D);if(F)return F;let $=(0,h1.getFullPath)(this.opts.uriResolver,D.root.baseId),{es5:J,lines:Q}=this.opts.code,{ownProperties:Y}=this.opts,B=new g1.CodeGen(this.scope,{es5:J,lines:Q,ownProperties:Y}),X;if(D.$async)X=B.scopeValue("Error",{ref:wY0.default,code:g1._`require("ajv/dist/runtime/validation_error").default`});let G=B.scopeName("validate");D.validateName=G;let H={gen:B,allErrors:this.opts.allErrors,data:N4.default.data,parentData:N4.default.parentData,parentDataProperty:N4.default.parentDataProperty,dataNames:[N4.default.data],dataPathArr:[g1.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:B.scopeValue("schema",this.opts.code.source===!0?{ref:D.schema,code:(0,g1.stringify)(D.schema)}:{ref:D.schema}),validateName:G,ValidationError:X,schema:D.schema,schemaEnv:D,rootId:$,baseId:D.baseId||$,schemaPath:g1.nil,errSchemaPath:D.schemaPath||(this.opts.jtd?"":"#"),errorPath:g1._`""`,opts:this.opts,self:this},q;try{this._compilations.add(D),(0,jY0.validateFunctionCode)(H),B.optimize(this.opts.code.optimize);let K=B.toString();if(q=`${B.scopeRefs(N4.default.scope)}return ${K}`,this.opts.code.process)q=this.opts.code.process(q,D);let z=Function(`${N4.default.self}`,`${N4.default.scope}`,q)(this,this.scope.get());if(this.scope.value(G,{ref:z}),z.errors=null,z.schema=D.schema,z.schemaEnv=D,D.$async)z.$async=!0;if(this.opts.code.source===!0)z.source={validateName:G,validateCode:K,scopeValues:B._values};if(this.opts.unevaluated){let{props:Z,items:U}=H;if(z.evaluated={props:Z instanceof g1.Name?void 0:Z,items:U instanceof g1.Name?void 0:U,dynamicProps:Z instanceof g1.Name,dynamicItems:U instanceof g1.Name},z.source)z.source.evaluated=(0,g1.stringify)(z.evaluated)}return D.validate=z,D}catch(K){if(delete D.validate,delete D.validateName,q)this.logger.error("Error compiling schema, function code:",q);throw K}finally{this._compilations.delete(D)}}oS.compileSchema=MG;function TY0(D,F,$){var J;$=(0,h1.resolveUrl)(this.opts.uriResolver,F,$);let Q=D.refs[$];if(Q)return Q;let Y=SY0.call(this,D,$);if(Y===void 0){let B=(J=D.localRefs)===null||J===void 0?void 0:J[$],{schemaId:X}=this.opts;if(B)Y=new t5({schema:B,schemaId:X,root:D,baseId:F})}if(Y===void 0)return;return D.refs[$]=PY0.call(this,Y)}oS.resolveRef=TY0;function PY0(D){if((0,h1.inlineRef)(D.schema,this.opts.inlineRefs))return D.schema;return D.validate?D:MG.call(this,D)}function aS(D){for(let F of this._compilations)if(IY0(F,D))return F}oS.getCompilingSchema=aS;function IY0(D,F){return D.schema===F.schema&&D.root===F.root&&D.baseId===F.baseId}function SY0(D,F){let $;while(typeof($=this.refs[F])=="string")F=$;return $||this.schemas[F]||JJ.call(this,D,F)}function JJ(D,F){let $=this.opts.uriResolver.parse(F),J=(0,h1._getFullPath)(this.opts.uriResolver,$),Q=(0,h1.getFullPath)(this.opts.uriResolver,D.baseId,void 0);if(Object.keys(D.schema).length>0&&J===Q)return AG.call(this,$,D);let Y=(0,h1.normalizeId)(J),B=this.refs[Y]||this.schemas[Y];if(typeof B=="string"){let X=JJ.call(this,D,B);if(typeof(X===null||X===void 0?void 0:X.schema)!=="object")return;return AG.call(this,$,X)}if(typeof(B===null||B===void 0?void 0:B.schema)!=="object")return;if(!B.validate)MG.call(this,B);if(Y===(0,h1.normalizeId)(F)){let{schema:X}=B,{schemaId:G}=this.opts,H=X[G];if(H)Q=(0,h1.resolveUrl)(this.opts.uriResolver,Q,H);return new t5({schema:X,schemaId:G,root:D,baseId:Q})}return AG.call(this,$,B)}oS.resolveSchema=JJ;var kY0=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function AG(D,{baseId:F,schema:$,root:J}){var Q;if(((Q=D.fragment)===null||Q===void 0?void 0:Q[0])!=="/")return;for(let X of D.fragment.slice(1).split("/")){if(typeof $==="boolean")return;let G=$[(0,iS.unescapeFragment)(X)];if(G===void 0)return;$=G;let H=typeof $==="object"&&$[this.opts.schemaId];if(!kY0.has(X)&&H)F=(0,h1.resolveUrl)(this.opts.uriResolver,F,H)}let Y;if(typeof $!="boolean"&&$.$ref&&!(0,iS.schemaHasRulesButRef)($,this.RULES)){let X=(0,h1.resolveUrl)(this.opts.uriResolver,F,$.$ref);Y=JJ.call(this,J,X)}let{schemaId:B}=this.opts;if(Y=Y||new t5({schema:$,schemaId:B,root:J,baseId:F}),Y.schema!==Y.root.schema)return Y;return}});var rS=E((VP0,fY0)=>{fY0.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var RG=E((ZP0,Fk)=>{var gY0=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),eS=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);function NG(D){let F="",$=0,J=0;for(J=0;J<D.length;J++){if($=D[J].charCodeAt(0),$===48)continue;if(!($>=48&&$<=57||$>=65&&$<=70||$>=97&&$<=102))return"";F+=D[J];break}for(J+=1;J<D.length;J++){if($=D[J].charCodeAt(0),!($>=48&&$<=57||$>=65&&$<=70||$>=97&&$<=102))return"";F+=D[J]}return F}var hY0=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function tS(D){return D.length=0,!0}function bY0(D,F,$){if(D.length){let J=NG(D);if(J!=="")F.push(J);else return $.error=!0,!1;D.length=0}return!0}function uY0(D){let F=0,$={error:!1,address:"",zone:""},J=[],Q=[],Y=!1,B=!1,X=bY0;for(let G=0;G<D.length;G++){let H=D[G];if(H==="["||H==="]")continue;if(H===":"){if(Y===!0)B=!0;if(!X(Q,J,$))break;if(++F>7){$.error=!0;break}if(G>0&&D[G-1]===":")Y=!0;J.push(":");continue}else if(H==="%"){if(!X(Q,J,$))break;X=tS}else{Q.push(H);continue}}if(Q.length)if(X===tS)$.zone=Q.join("");else if(B)J.push(Q.join(""));else J.push(NG(Q));return $.address=J.join(""),$}function Dk(D){if(mY0(D,":")<2)return{host:D,isIPV6:!1};let F=uY0(D);if(!F.error){let{address:$,address:J}=F;if(F.zone)$+="%"+F.zone,J+="%25"+F.zone;return{host:$,isIPV6:!0,escapedHost:J}}else return{host:D,isIPV6:!1}}function mY0(D,F){let $=0;for(let J=0;J<D.length;J++)if(D[J]===F)$++;return $}function lY0(D){let F=D,$=[],J=-1,Q=0;while(Q=F.length){if(Q===1)if(F===".")break;else if(F==="/"){$.push("/");break}else{$.push(F);break}else if(Q===2){if(F[0]==="."){if(F[1]===".")break;else if(F[1]==="/"){F=F.slice(2);continue}}else if(F[0]==="/"){if(F[1]==="."||F[1]==="/"){$.push("/");break}}}else if(Q===3){if(F==="/.."){if($.length!==0)$.pop();$.push("/");break}}if(F[0]==="."){if(F[1]==="."){if(F[2]==="/"){F=F.slice(3);continue}}else if(F[1]==="/"){F=F.slice(2);continue}}else if(F[0]==="/"){if(F[1]==="."){if(F[2]==="/"){F=F.slice(2);continue}else if(F[2]==="."){if(F[3]==="/"){if(F=F.slice(3),$.length!==0)$.pop();continue}}}}if((J=F.indexOf("/",1))===-1){$.push(F);break}else $.push(F.slice(0,J)),F=F.slice(J)}return $.join("")}function pY0(D,F){let $=F!==!0?escape:unescape;if(D.scheme!==void 0)D.scheme=$(D.scheme);if(D.userinfo!==void 0)D.userinfo=$(D.userinfo);if(D.host!==void 0)D.host=$(D.host);if(D.path!==void 0)D.path=$(D.path);if(D.query!==void 0)D.query=$(D.query);if(D.fragment!==void 0)D.fragment=$(D.fragment);return D}function dY0(D){let F=[];if(D.userinfo!==void 0)F.push(D.userinfo),F.push("@");if(D.host!==void 0){let $=unescape(D.host);if(!eS($)){let J=Dk($);if(J.isIPV6===!0)$=`[${J.escapedHost}]`;else $=D.host}F.push($)}if(typeof D.port==="number"||typeof D.port==="string")F.push(":"),F.push(String(D.port));return F.length?F.join(""):void 0}Fk.exports={nonSimpleDomain:hY0,recomposeAuthority:dY0,normalizeComponentEncoding:pY0,removeDotSegments:lY0,isIPv4:eS,isUUID:gY0,normalizeIPv6:Dk,stringArrayToHexStripped:NG}});var Bk=E((UP0,Yk)=>{var{isUUID:cY0}=RG(),nY0=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,iY0=["http","https","ws","wss","urn","urn:uuid"];function aY0(D){return iY0.indexOf(D)!==-1}function CG(D){if(D.secure===!0)return!0;else if(D.secure===!1)return!1;else if(D.scheme)return D.scheme.length===3&&(D.scheme[0]==="w"||D.scheme[0]==="W")&&(D.scheme[1]==="s"||D.scheme[1]==="S")&&(D.scheme[2]==="s"||D.scheme[2]==="S");else return!1}function $k(D){if(!D.host)D.error=D.error||"HTTP URIs must have a host.";return D}function Jk(D){let F=String(D.scheme).toLowerCase()==="https";if(D.port===(F?443:80)||D.port==="")D.port=void 0;if(!D.path)D.path="/";return D}function oY0(D){return D.secure=CG(D),D.resourceName=(D.path||"/")+(D.query?"?"+D.query:""),D.path=void 0,D.query=void 0,D}function sY0(D){if(D.port===(CG(D)?443:80)||D.port==="")D.port=void 0;if(typeof D.secure==="boolean")D.scheme=D.secure?"wss":"ws",D.secure=void 0;if(D.resourceName){let[F,$]=D.resourceName.split("?");D.path=F&&F!=="/"?F:void 0,D.query=$,D.resourceName=void 0}return D.fragment=void 0,D}function rY0(D,F){if(!D.path)return D.error="URN can not be parsed",D;let $=D.path.match(nY0);if($){let J=F.scheme||D.scheme||"urn";D.nid=$[1].toLowerCase(),D.nss=$[2];let Q=`${J}:${F.nid||D.nid}`,Y=OG(Q);if(D.path=void 0,Y)D=Y.parse(D,F)}else D.error=D.error||"URN can not be parsed.";return D}function tY0(D,F){if(D.nid===void 0)throw Error("URN without nid cannot be serialized");let $=F.scheme||D.scheme||"urn",J=D.nid.toLowerCase(),Q=`${$}:${F.nid||J}`,Y=OG(Q);if(Y)D=Y.serialize(D,F);let B=D,X=D.nss;return B.path=`${J||F.nid}:${X}`,F.skipEscape=!0,B}function eY0(D,F){let $=D;if($.uuid=$.nss,$.nss=void 0,!F.tolerant&&(!$.uuid||!cY0($.uuid)))$.error=$.error||"UUID is not valid.";return $}function DB0(D){let F=D;return F.nss=(D.uuid||"").toLowerCase(),F}var Qk={scheme:"http",domainHost:!0,parse:$k,serialize:Jk},FB0={scheme:"https",domainHost:Qk.domainHost,parse:$k,serialize:Jk},QJ={scheme:"ws",domainHost:!0,parse:oY0,serialize:sY0},$B0={scheme:"wss",domainHost:QJ.domainHost,parse:QJ.parse,serialize:QJ.serialize},JB0={scheme:"urn",parse:rY0,serialize:tY0,skipNormalize:!0},QB0={scheme:"urn:uuid",parse:eY0,serialize:DB0,skipNormalize:!0},YJ={http:Qk,https:FB0,ws:QJ,wss:$B0,urn:JB0,"urn:uuid":QB0};Object.setPrototypeOf(YJ,null);function OG(D){return D&&(YJ[D]||YJ[D.toLowerCase()])||void 0}Yk.exports={wsIsSecure:CG,SCHEMES:YJ,isValidSchemeName:aY0,getSchemeHandler:OG}});var Wk=E((LP0,XJ)=>{var{normalizeIPv6:YB0,removeDotSegments:D9,recomposeAuthority:BB0,normalizeComponentEncoding:BJ,isIPv4:XB0,nonSimpleDomain:GB0}=RG(),{SCHEMES:WB0,getSchemeHandler:Xk}=Bk();function HB0(D,F){if(typeof D==="string")D=U8(u8(D,F),F);else if(typeof D==="object")D=u8(U8(D,F),F);return D}function qB0(D,F,$){let J=$?Object.assign({scheme:"null"},$):{scheme:"null"},Q=Gk(u8(D,J),u8(F,J),J,!0);return J.skipEscape=!0,U8(Q,J)}function Gk(D,F,$,J){let Q={};if(!J)D=u8(U8(D,$),$),F=u8(U8(F,$),$);if($=$||{},!$.tolerant&&F.scheme)Q.scheme=F.scheme,Q.userinfo=F.userinfo,Q.host=F.host,Q.port=F.port,Q.path=D9(F.path||""),Q.query=F.query;else{if(F.userinfo!==void 0||F.host!==void 0||F.port!==void 0)Q.userinfo=F.userinfo,Q.host=F.host,Q.port=F.port,Q.path=D9(F.path||""),Q.query=F.query;else{if(!F.path)if(Q.path=D.path,F.query!==void 0)Q.query=F.query;else Q.query=D.query;else{if(F.path[0]==="/")Q.path=D9(F.path);else{if((D.userinfo!==void 0||D.host!==void 0||D.port!==void 0)&&!D.path)Q.path="/"+F.path;else if(!D.path)Q.path=F.path;else Q.path=D.path.slice(0,D.path.lastIndexOf("/")+1)+F.path;Q.path=D9(Q.path)}Q.query=F.query}Q.userinfo=D.userinfo,Q.host=D.host,Q.port=D.port}Q.scheme=D.scheme}return Q.fragment=F.fragment,Q}function KB0(D,F,$){if(typeof D==="string")D=unescape(D),D=U8(BJ(u8(D,$),!0),{...$,skipEscape:!0});else if(typeof D==="object")D=U8(BJ(D,!0),{...$,skipEscape:!0});if(typeof F==="string")F=unescape(F),F=U8(BJ(u8(F,$),!0),{...$,skipEscape:!0});else if(typeof F==="object")F=U8(BJ(F,!0),{...$,skipEscape:!0});return D.toLowerCase()===F.toLowerCase()}function U8(D,F){let $={host:D.host,scheme:D.scheme,userinfo:D.userinfo,port:D.port,path:D.path,query:D.query,nid:D.nid,nss:D.nss,uuid:D.uuid,fragment:D.fragment,reference:D.reference,resourceName:D.resourceName,secure:D.secure,error:""},J=Object.assign({},F),Q=[],Y=Xk(J.scheme||$.scheme);if(Y&&Y.serialize)Y.serialize($,J);if($.path!==void 0)if(!J.skipEscape){if($.path=escape($.path),$.scheme!==void 0)$.path=$.path.split("%3A").join(":")}else $.path=unescape($.path);if(J.reference!=="suffix"&&$.scheme)Q.push($.scheme,":");let B=BB0($);if(B!==void 0){if(J.reference!=="suffix")Q.push("//");if(Q.push(B),$.path&&$.path[0]!=="/")Q.push("/")}if($.path!==void 0){let X=$.path;if(!J.absolutePath&&(!Y||!Y.absolutePath))X=D9(X);if(B===void 0&&X[0]==="/"&&X[1]==="/")X="/%2F"+X.slice(2);Q.push(X)}if($.query!==void 0)Q.push("?",$.query);if($.fragment!==void 0)Q.push("#",$.fragment);return Q.join("")}var zB0=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function u8(D,F){let $=Object.assign({},F),J={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},Q=!1;if($.reference==="suffix")if($.scheme)D=$.scheme+":"+D;else D="//"+D;let Y=D.match(zB0);if(Y){if(J.scheme=Y[1],J.userinfo=Y[3],J.host=Y[4],J.port=parseInt(Y[5],10),J.path=Y[6]||"",J.query=Y[7],J.fragment=Y[8],isNaN(J.port))J.port=Y[5];if(J.host)if(XB0(J.host)===!1){let G=YB0(J.host);J.host=G.host.toLowerCase(),Q=G.isIPV6}else Q=!0;if(J.scheme===void 0&&J.userinfo===void 0&&J.host===void 0&&J.port===void 0&&J.query===void 0&&!J.path)J.reference="same-document";else if(J.scheme===void 0)J.reference="relative";else if(J.fragment===void 0)J.reference="absolute";else J.reference="uri";if($.reference&&$.reference!=="suffix"&&$.reference!==J.reference)J.error=J.error||"URI is not a "+$.reference+" reference.";let B=Xk($.scheme||J.scheme);if(!$.unicodeSupport&&(!B||!B.unicodeSupport)){if(J.host&&($.domainHost||B&&B.domainHost)&&Q===!1&&GB0(J.host))try{J.host=URL.domainToASCII(J.host.toLowerCase())}catch(X){J.error=J.error||"Host's domain name can not be converted to ASCII: "+X}}if(!B||B&&!B.skipNormalize){if(D.indexOf("%")!==-1){if(J.scheme!==void 0)J.scheme=unescape(J.scheme);if(J.host!==void 0)J.host=unescape(J.host)}if(J.path)J.path=escape(unescape(J.path));if(J.fragment)J.fragment=encodeURI(decodeURIComponent(J.fragment))}if(B&&B.parse)B.parse(J,$)}else J.error=J.error||"URI can not be parsed.";return J}var wG={SCHEMES:WB0,normalize:HB0,resolve:qB0,resolveComponent:Gk,equal:KB0,serialize:U8,parse:u8};XJ.exports=wG;XJ.exports.default=wG;XJ.exports.fastUri=wG});var Kk=E((qk)=>{Object.defineProperty(qk,"__esModule",{value:!0});var Hk=Wk();Hk.code='require("ajv/dist/runtime/uri").default';qk.default=Hk});var PG=E((m8)=>{Object.defineProperty(m8,"__esModule",{value:!0});m8.CodeGen=m8.Name=m8.nil=m8.stringify=m8.str=m8._=m8.KeywordCxt=void 0;var VB0=DF();Object.defineProperty(m8,"KeywordCxt",{enumerable:!0,get:function(){return VB0.KeywordCxt}});var $F=F0();Object.defineProperty(m8,"_",{enumerable:!0,get:function(){return $F._}});Object.defineProperty(m8,"str",{enumerable:!0,get:function(){return $F.str}});Object.defineProperty(m8,"stringify",{enumerable:!0,get:function(){return $F.stringify}});Object.defineProperty(m8,"nil",{enumerable:!0,get:function(){return $F.nil}});Object.defineProperty(m8,"Name",{enumerable:!0,get:function(){return $F.Name}});Object.defineProperty(m8,"CodeGen",{enumerable:!0,get:function(){return $F.CodeGen}});var ZB0=r5(),Uk=FF(),UB0=QG(),F9=e5(),LB0=F0(),$9=a5(),GJ=i5(),TG=E0(),zk=rS(),AB0=Kk(),Lk=(D,F)=>new RegExp(D,F);Lk.code="new RegExp";var MB0=["removeAdditional","useDefaults","coerceTypes"],NB0=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),RB0={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},CB0={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},Ek=200;function OB0(D){var F,$,J,Q,Y,B,X,G,H,q,K,V,z,Z,U,M,A,C,w,I,R,j,v,n,r;let a=D.strict,Q0=(F=D.code)===null||F===void 0?void 0:F.optimize,$0=Q0===!0||Q0===void 0?1:Q0||0,N0=(J=($=D.code)===null||$===void 0?void 0:$.regExp)!==null&&J!==void 0?J:Lk,c=(Q=D.uriResolver)!==null&&Q!==void 0?Q:AB0.default;return{strictSchema:(B=(Y=D.strictSchema)!==null&&Y!==void 0?Y:a)!==null&&B!==void 0?B:!0,strictNumbers:(G=(X=D.strictNumbers)!==null&&X!==void 0?X:a)!==null&&G!==void 0?G:!0,strictTypes:(q=(H=D.strictTypes)!==null&&H!==void 0?H:a)!==null&&q!==void 0?q:"log",strictTuples:(V=(K=D.strictTuples)!==null&&K!==void 0?K:a)!==null&&V!==void 0?V:"log",strictRequired:(Z=(z=D.strictRequired)!==null&&z!==void 0?z:a)!==null&&Z!==void 0?Z:!1,code:D.code?{...D.code,optimize:$0,regExp:N0}:{optimize:$0,regExp:N0},loopRequired:(U=D.loopRequired)!==null&&U!==void 0?U:Ek,loopEnum:(M=D.loopEnum)!==null&&M!==void 0?M:Ek,meta:(A=D.meta)!==null&&A!==void 0?A:!0,messages:(C=D.messages)!==null&&C!==void 0?C:!0,inlineRefs:(w=D.inlineRefs)!==null&&w!==void 0?w:!0,schemaId:(I=D.schemaId)!==null&&I!==void 0?I:"$id",addUsedSchema:(R=D.addUsedSchema)!==null&&R!==void 0?R:!0,validateSchema:(j=D.validateSchema)!==null&&j!==void 0?j:!0,validateFormats:(v=D.validateFormats)!==null&&v!==void 0?v:!0,unicodeRegExp:(n=D.unicodeRegExp)!==null&&n!==void 0?n:!0,int32range:(r=D.int32range)!==null&&r!==void 0?r:!0,uriResolver:c}}class WJ{constructor(D={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,D=this.opts={...D,...OB0(D)};let{es5:F,lines:$}=this.opts.code;this.scope=new LB0.ValueScope({scope:{},prefixes:NB0,es5:F,lines:$}),this.logger=SB0(D.logger);let J=D.validateFormats;if(D.validateFormats=!1,this.RULES=(0,UB0.getRules)(),Vk.call(this,RB0,D,"NOT SUPPORTED"),Vk.call(this,CB0,D,"DEPRECATED","warn"),this._metaOpts=PB0.call(this),D.formats)jB0.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),D.keywords)TB0.call(this,D.keywords);if(typeof D.meta=="object")this.addMetaSchema(D.meta);wB0.call(this),D.validateFormats=J}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:D,meta:F,schemaId:$}=this.opts,J=zk;if($==="id")J={...zk},J.id=J.$id,delete J.$id;if(F&&D)this.addMetaSchema(J,J[$],!1)}defaultMeta(){let{meta:D,schemaId:F}=this.opts;return this.opts.defaultMeta=typeof D=="object"?D[F]||D:void 0}validate(D,F){let $;if(typeof D=="string"){if($=this.getSchema(D),!$)throw Error(`no schema with key or ref "${D}"`)}else $=this.compile(D);let J=$(F);if(!("$async"in $))this.errors=$.errors;return J}compile(D,F){let $=this._addSchema(D,F);return $.validate||this._compileSchemaEnv($)}compileAsync(D,F){if(typeof this.opts.loadSchema!="function")throw Error("options.loadSchema should be a function");let{loadSchema:$}=this.opts;return J.call(this,D,F);async function J(H,q){await Q.call(this,H.$schema);let K=this._addSchema(H,q);return K.validate||Y.call(this,K)}async function Q(H){if(H&&!this.getSchema(H))await J.call(this,{$ref:H},!0)}async function Y(H){try{return this._compileSchemaEnv(H)}catch(q){if(!(q instanceof Uk.default))throw q;return B.call(this,q),await X.call(this,q.missingSchema),Y.call(this,H)}}function B({missingSchema:H,missingRef:q}){if(this.refs[H])throw Error(`AnySchema ${H} is loaded but ${q} cannot be resolved`)}async function X(H){let q=await G.call(this,H);if(!this.refs[H])await Q.call(this,q.$schema);if(!this.refs[H])this.addSchema(q,H,F)}async function G(H){let q=this._loading[H];if(q)return q;try{return await(this._loading[H]=$(H))}finally{delete this._loading[H]}}}addSchema(D,F,$,J=this.opts.validateSchema){if(Array.isArray(D)){for(let Y of D)this.addSchema(Y,void 0,$,J);return this}let Q;if(typeof D==="object"){let{schemaId:Y}=this.opts;if(Q=D[Y],Q!==void 0&&typeof Q!="string")throw Error(`schema ${Y} must be string`)}return F=(0,$9.normalizeId)(F||Q),this._checkUnique(F),this.schemas[F]=this._addSchema(D,$,F,J,!0),this}addMetaSchema(D,F,$=this.opts.validateSchema){return this.addSchema(D,F,!0,$),this}validateSchema(D,F){if(typeof D=="boolean")return!0;let $;if($=D.$schema,$!==void 0&&typeof $!="string")throw Error("$schema must be a string");if($=$||this.opts.defaultMeta||this.defaultMeta(),!$)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let J=this.validate($,D);if(!J&&F){let Q="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(Q);else throw Error(Q)}return J}getSchema(D){let F;while(typeof(F=Zk.call(this,D))=="string")D=F;if(F===void 0){let{schemaId:$}=this.opts,J=new F9.SchemaEnv({schema:{},schemaId:$});if(F=F9.resolveSchema.call(this,J,D),!F)return;this.refs[D]=F}return F.validate||this._compileSchemaEnv(F)}removeSchema(D){if(D instanceof RegExp)return this._removeAllSchemas(this.schemas,D),this._removeAllSchemas(this.refs,D),this;switch(typeof D){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let F=Zk.call(this,D);if(typeof F=="object")this._cache.delete(F.schema);return delete this.schemas[D],delete this.refs[D],this}case"object":{let F=D;this._cache.delete(F);let $=D[this.opts.schemaId];if($)$=(0,$9.normalizeId)($),delete this.schemas[$],delete this.refs[$];return this}default:throw Error("ajv.removeSchema: invalid parameter")}}addVocabulary(D){for(let F of D)this.addKeyword(F);return this}addKeyword(D,F){let $;if(typeof D=="string"){if($=D,typeof F=="object")this.logger.warn("these parameters are deprecated, see docs for addKeyword"),F.keyword=$}else if(typeof D=="object"&&F===void 0){if(F=D,$=F.keyword,Array.isArray($)&&!$.length)throw Error("addKeywords: keyword must be string or non-empty array")}else throw Error("invalid addKeywords parameters");if(vB0.call(this,$,F),!F)return(0,TG.eachItem)($,(Q)=>jG.call(this,Q)),this;xB0.call(this,F);let J={...F,type:(0,GJ.getJSONTypes)(F.type),schemaType:(0,GJ.getJSONTypes)(F.schemaType)};return(0,TG.eachItem)($,J.type.length===0?(Q)=>jG.call(this,Q,J):(Q)=>J.type.forEach((Y)=>jG.call(this,Q,J,Y))),this}getKeyword(D){let F=this.RULES.all[D];return typeof F=="object"?F.definition:!!F}removeKeyword(D){let{RULES:F}=this;delete F.keywords[D],delete F.all[D];for(let $ of F.rules){let J=$.rules.findIndex((Q)=>Q.keyword===D);if(J>=0)$.rules.splice(J,1)}return this}addFormat(D,F){if(typeof F=="string")F=new RegExp(F);return this.formats[D]=F,this}errorsText(D=this.errors,{separator:F=", ",dataVar:$="data"}={}){if(!D||D.length===0)return"No errors";return D.map((J)=>`${$}${J.instancePath} ${J.message}`).reduce((J,Q)=>J+F+Q)}$dataMetaSchema(D,F){let $=this.RULES.all;D=JSON.parse(JSON.stringify(D));for(let J of F){let Q=J.split("/").slice(1),Y=D;for(let B of Q)Y=Y[B];for(let B in $){let X=$[B];if(typeof X!="object")continue;let{$data:G}=X.definition,H=Y[B];if(G&&H)Y[B]=Ak(H)}}return D}_removeAllSchemas(D,F){for(let $ in D){let J=D[$];if(!F||F.test($)){if(typeof J=="string")delete D[$];else if(J&&!J.meta)this._cache.delete(J.schema),delete D[$]}}}_addSchema(D,F,$,J=this.opts.validateSchema,Q=this.opts.addUsedSchema){let Y,{schemaId:B}=this.opts;if(typeof D=="object")Y=D[B];else if(this.opts.jtd)throw Error("schema must be object");else if(typeof D!="boolean")throw Error("schema must be object or boolean");let X=this._cache.get(D);if(X!==void 0)return X;$=(0,$9.normalizeId)(Y||$);let G=$9.getSchemaRefs.call(this,D,$);if(X=new F9.SchemaEnv({schema:D,schemaId:B,meta:F,baseId:$,localRefs:G}),this._cache.set(X.schema,X),Q&&!$.startsWith("#")){if($)this._checkUnique($);this.refs[$]=X}if(J)this.validateSchema(D,!0);return X}_checkUnique(D){if(this.schemas[D]||this.refs[D])throw Error(`schema with key or id "${D}" already exists`)}_compileSchemaEnv(D){if(D.meta)this._compileMetaSchema(D);else F9.compileSchema.call(this,D);if(!D.validate)throw Error("ajv implementation error");return D.validate}_compileMetaSchema(D){let F=this.opts;this.opts=this._metaOpts;try{F9.compileSchema.call(this,D)}finally{this.opts=F}}}WJ.ValidationError=ZB0.default;WJ.MissingRefError=Uk.default;m8.default=WJ;function Vk(D,F,$,J="error"){for(let Q in D){let Y=Q;if(Y in F)this.logger[J](`${$}: option ${Q}. ${D[Y]}`)}}function Zk(D){return D=(0,$9.normalizeId)(D),this.schemas[D]||this.refs[D]}function wB0(){let D=this.opts.schemas;if(!D)return;if(Array.isArray(D))this.addSchema(D);else for(let F in D)this.addSchema(D[F],F)}function jB0(){for(let D in this.opts.formats){let F=this.opts.formats[D];if(F)this.addFormat(D,F)}}function TB0(D){if(Array.isArray(D)){this.addVocabulary(D);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let F in D){let $=D[F];if(!$.keyword)$.keyword=F;this.addKeyword($)}}function PB0(){let D={...this.opts};for(let F of MB0)delete D[F];return D}var IB0={log(){},warn(){},error(){}};function SB0(D){if(D===!1)return IB0;if(D===void 0)return console;if(D.log&&D.warn&&D.error)return D;throw Error("logger must implement log, warn and error methods")}var kB0=/^[a-z_$][a-z0-9_$:-]*$/i;function vB0(D,F){let{RULES:$}=this;if((0,TG.eachItem)(D,(J)=>{if($.keywords[J])throw Error(`Keyword ${J} is already defined`);if(!kB0.test(J))throw Error(`Keyword ${J} has invalid name`)}),!F)return;if(F.$data&&!(("code"in F)||("validate"in F)))throw Error('$data keyword must have "code" or "validate" function')}function jG(D,F,$){var J;let Q=F===null||F===void 0?void 0:F.post;if($&&Q)throw Error('keyword with "post" flag cannot have "type"');let{RULES:Y}=this,B=Q?Y.post:Y.rules.find(({type:G})=>G===$);if(!B)B={type:$,rules:[]},Y.rules.push(B);if(Y.keywords[D]=!0,!F)return;let X={keyword:D,definition:{...F,type:(0,GJ.getJSONTypes)(F.type),schemaType:(0,GJ.getJSONTypes)(F.schemaType)}};if(F.before)yB0.call(this,B,X,F.before);else B.rules.push(X);Y.all[D]=X,(J=F.implements)===null||J===void 0||J.forEach((G)=>this.addKeyword(G))}function yB0(D,F,$){let J=D.rules.findIndex((Q)=>Q.keyword===$);if(J>=0)D.rules.splice(J,0,F);else D.rules.push(F),this.logger.warn(`rule ${$} is not defined`)}function xB0(D){let{metaSchema:F}=D;if(F===void 0)return;if(D.$data&&this.opts.$data)F=Ak(F);D.validateSchema=this.compile(F,!0)}var _B0={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function Ak(D){return{anyOf:[D,_B0]}}});var Nk=E((Mk)=>{Object.defineProperty(Mk,"__esModule",{value:!0});var hB0={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};Mk.default=hB0});var KJ=E((wk)=>{Object.defineProperty(wk,"__esModule",{value:!0});wk.callRef=wk.getValidate=void 0;var uB0=FF(),Rk=L1(),nD=F0(),JF=U1(),Ck=e5(),HJ=E0(),mB0={keyword:"$ref",schemaType:"string",code(D){let{gen:F,schema:$,it:J}=D,{baseId:Q,schemaEnv:Y,validateName:B,opts:X,self:G}=J,{root:H}=Y;if(($==="#"||$==="#/")&&Q===H.baseId)return K();let q=Ck.resolveRef.call(G,H,Q,$);if(q===void 0)throw new uB0.default(J.opts.uriResolver,Q,$);if(q instanceof Ck.SchemaEnv)return V(q);return z(q);function K(){if(Y===H)return qJ(D,B,Y,Y.$async);let Z=F.scopeValue("root",{ref:H});return qJ(D,nD._`${Z}.validate`,H,H.$async)}function V(Z){let U=Ok(D,Z);qJ(D,U,Z,Z.$async)}function z(Z){let U=F.scopeValue("schema",X.code.source===!0?{ref:Z,code:(0,nD.stringify)(Z)}:{ref:Z}),M=F.name("valid"),A=D.subschema({schema:Z,dataTypes:[],schemaPath:nD.nil,topSchemaRef:U,errSchemaPath:$},M);D.mergeEvaluated(A),D.ok(M)}}};function Ok(D,F){let{gen:$}=D;return F.validate?$.scopeValue("validate",{ref:F.validate}):nD._`${$.scopeValue("wrapper",{ref:F})}.validate`}wk.getValidate=Ok;function qJ(D,F,$,J){let{gen:Q,it:Y}=D,{allErrors:B,schemaEnv:X,opts:G}=Y,H=G.passContext?JF.default.this:nD.nil;if(J)q();else K();function q(){if(!X.$async)throw Error("async schema referenced by sync schema");let Z=Q.let("valid");Q.try(()=>{if(Q.code(nD._`await ${(0,Rk.callValidateCode)(D,F,H)}`),z(F),!B)Q.assign(Z,!0)},(U)=>{if(Q.if(nD._`!(${U} instanceof ${Y.ValidationError})`,()=>Q.throw(U)),V(U),!B)Q.assign(Z,!1)}),D.ok(Z)}function K(){D.result((0,Rk.callValidateCode)(D,F,H),()=>z(F),()=>V(F))}function V(Z){let U=nD._`${Z}.errors`;Q.assign(JF.default.vErrors,nD._`${JF.default.vErrors} === null ? ${U} : ${JF.default.vErrors}.concat(${U})`),Q.assign(JF.default.errors,nD._`${JF.default.vErrors}.length`)}function z(Z){var U;if(!Y.opts.unevaluated)return;let M=(U=$===null||$===void 0?void 0:$.validate)===null||U===void 0?void 0:U.evaluated;if(Y.props!==!0)if(M&&!M.dynamicProps){if(M.props!==void 0)Y.props=HJ.mergeEvaluated.props(Q,M.props,Y.props)}else{let A=Q.var("props",nD._`${Z}.evaluated.props`);Y.props=HJ.mergeEvaluated.props(Q,A,Y.props,nD.Name)}if(Y.items!==!0)if(M&&!M.dynamicItems){if(M.items!==void 0)Y.items=HJ.mergeEvaluated.items(Q,M.items,Y.items)}else{let A=Q.var("items",nD._`${Z}.evaluated.items`);Y.items=HJ.mergeEvaluated.items(Q,A,Y.items,nD.Name)}}}wk.callRef=qJ;wk.default=mB0});var IG=E((Tk)=>{Object.defineProperty(Tk,"__esModule",{value:!0});var dB0=Nk(),cB0=KJ(),nB0=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",dB0.default,cB0.default];Tk.default=nB0});var Ik=E((Pk)=>{Object.defineProperty(Pk,"__esModule",{value:!0});var zJ=F0(),h6=zJ.operators,EJ={maximum:{okStr:"<=",ok:h6.LTE,fail:h6.GT},minimum:{okStr:">=",ok:h6.GTE,fail:h6.LT},exclusiveMaximum:{okStr:"<",ok:h6.LT,fail:h6.GTE},exclusiveMinimum:{okStr:">",ok:h6.GT,fail:h6.LTE}},aB0={message:({keyword:D,schemaCode:F})=>zJ.str`must be ${EJ[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>zJ._`{comparison: ${EJ[D].okStr}, limit: ${F}}`},oB0={keyword:Object.keys(EJ),type:"number",schemaType:"number",$data:!0,error:aB0,code(D){let{keyword:F,data:$,schemaCode:J}=D;D.fail$data(zJ._`${$} ${EJ[F].fail} ${J} || isNaN(${$})`)}};Pk.default=oB0});var kk=E((Sk)=>{Object.defineProperty(Sk,"__esModule",{value:!0});var J9=F0(),rB0={message:({schemaCode:D})=>J9.str`must be multiple of ${D}`,params:({schemaCode:D})=>J9._`{multipleOf: ${D}}`},tB0={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:rB0,code(D){let{gen:F,data:$,schemaCode:J,it:Q}=D,Y=Q.opts.multipleOfPrecision,B=F.let("res"),X=Y?J9._`Math.abs(Math.round(${B}) - ${B}) > 1e-${Y}`:J9._`${B} !== parseInt(${B})`;D.fail$data(J9._`(${J} === 0 || (${B} = ${$}/${J}, ${X}))`)}};Sk.default=tB0});var xk=E((yk)=>{Object.defineProperty(yk,"__esModule",{value:!0});function vk(D){let F=D.length,$=0,J=0,Q;while(J<F)if($++,Q=D.charCodeAt(J++),Q>=55296&&Q<=56319&&J<F){if(Q=D.charCodeAt(J),(Q&64512)===56320)J++}return $}yk.default=vk;vk.code='require("ajv/dist/runtime/ucs2length").default'});var fk=E((_k)=>{Object.defineProperty(_k,"__esModule",{value:!0});var R4=F0(),F20=E0(),$20=xk(),J20={message({keyword:D,schemaCode:F}){let $=D==="maxLength"?"more":"fewer";return R4.str`must NOT have ${$} than ${F} characters`},params:({schemaCode:D})=>R4._`{limit: ${D}}`},Q20={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:J20,code(D){let{keyword:F,data:$,schemaCode:J,it:Q}=D,Y=F==="maxLength"?R4.operators.GT:R4.operators.LT,B=Q.opts.unicode===!1?R4._`${$}.length`:R4._`${(0,F20.useFunc)(D.gen,$20.default)}(${$})`;D.fail$data(R4._`${B} ${Y} ${J}`)}};_k.default=Q20});var hk=E((gk)=>{Object.defineProperty(gk,"__esModule",{value:!0});var B20=L1(),VJ=F0(),X20={message:({schemaCode:D})=>VJ.str`must match pattern "${D}"`,params:({schemaCode:D})=>VJ._`{pattern: ${D}}`},G20={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:X20,code(D){let{data:F,$data:$,schema:J,schemaCode:Q,it:Y}=D,B=Y.opts.unicodeRegExp?"u":"",X=$?VJ._`(new RegExp(${Q}, ${B}))`:(0,B20.usePattern)(D,J);D.fail$data(VJ._`!${X}.test(${F})`)}};gk.default=G20});var uk=E((bk)=>{Object.defineProperty(bk,"__esModule",{value:!0});var Q9=F0(),H20={message({keyword:D,schemaCode:F}){let $=D==="maxProperties"?"more":"fewer";return Q9.str`must NOT have ${$} than ${F} properties`},params:({schemaCode:D})=>Q9._`{limit: ${D}}`},q20={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:H20,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxProperties"?Q9.operators.GT:Q9.operators.LT;D.fail$data(Q9._`Object.keys(${$}).length ${Q} ${J}`)}};bk.default=q20});var lk=E((mk)=>{Object.defineProperty(mk,"__esModule",{value:!0});var Y9=L1(),B9=F0(),z20=E0(),E20={message:({params:{missingProperty:D}})=>B9.str`must have required property '${D}'`,params:({params:{missingProperty:D}})=>B9._`{missingProperty: ${D}}`},V20={keyword:"required",type:"object",schemaType:"array",$data:!0,error:E20,code(D){let{gen:F,schema:$,schemaCode:J,data:Q,$data:Y,it:B}=D,{opts:X}=B;if(!Y&&$.length===0)return;let G=$.length>=X.loopRequired;if(B.allErrors)H();else q();if(X.strictRequired){let z=D.parentSchema.properties,{definedProperties:Z}=D.it;for(let U of $)if((z===null||z===void 0?void 0:z[U])===void 0&&!Z.has(U)){let M=B.schemaEnv.baseId+B.errSchemaPath,A=`required property "${U}" is not defined at "${M}" (strictRequired)`;(0,z20.checkStrictMode)(B,A,B.opts.strictRequired)}}function H(){if(G||Y)D.block$data(B9.nil,K);else for(let z of $)(0,Y9.checkReportMissingProp)(D,z)}function q(){let z=F.let("missing");if(G||Y){let Z=F.let("valid",!0);D.block$data(Z,()=>V(z,Z)),D.ok(Z)}else F.if((0,Y9.checkMissingProp)(D,$,z)),(0,Y9.reportMissingProp)(D,z),F.else()}function K(){F.forOf("prop",J,(z)=>{D.setParams({missingProperty:z}),F.if((0,Y9.noPropertyInData)(F,Q,z,X.ownProperties),()=>D.error())})}function V(z,Z){D.setParams({missingProperty:z}),F.forOf(z,J,()=>{F.assign(Z,(0,Y9.propertyInData)(F,Q,z,X.ownProperties)),F.if((0,B9.not)(Z),()=>{D.error(),F.break()})},B9.nil)}}};mk.default=V20});var dk=E((pk)=>{Object.defineProperty(pk,"__esModule",{value:!0});var X9=F0(),U20={message({keyword:D,schemaCode:F}){let $=D==="maxItems"?"more":"fewer";return X9.str`must NOT have ${$} than ${F} items`},params:({schemaCode:D})=>X9._`{limit: ${D}}`},L20={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:U20,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxItems"?X9.operators.GT:X9.operators.LT;D.fail$data(X9._`${$}.length ${Q} ${J}`)}};pk.default=L20});var ZJ=E((nk)=>{Object.defineProperty(nk,"__esModule",{value:!0});var ck=KG();ck.code='require("ajv/dist/runtime/equal").default';nk.default=ck});var ak=E((ik)=>{Object.defineProperty(ik,"__esModule",{value:!0});var SG=i5(),LD=F0(),N20=E0(),R20=ZJ(),C20={message:({params:{i:D,j:F}})=>LD.str`must NOT have duplicate items (items ## ${F} and ${D} are identical)`,params:({params:{i:D,j:F}})=>LD._`{i: ${D}, j: ${F}}`},O20={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:C20,code(D){let{gen:F,data:$,$data:J,schema:Q,parentSchema:Y,schemaCode:B,it:X}=D;if(!J&&!Q)return;let G=F.let("valid"),H=Y.items?(0,SG.getSchemaTypes)(Y.items):[];D.block$data(G,q,LD._`${B} === false`),D.ok(G);function q(){let Z=F.let("i",LD._`${$}.length`),U=F.let("j");D.setParams({i:Z,j:U}),F.assign(G,!0),F.if(LD._`${Z} > 1`,()=>(K()?V:z)(Z,U))}function K(){return H.length>0&&!H.some((Z)=>Z==="object"||Z==="array")}function V(Z,U){let M=F.name("item"),A=(0,SG.checkDataTypes)(H,M,X.opts.strictNumbers,SG.DataType.Wrong),C=F.const("indices",LD._`{}`);F.for(LD._`;${Z}--;`,()=>{if(F.let(M,LD._`${$}[${Z}]`),F.if(A,LD._`continue`),H.length>1)F.if(LD._`typeof ${M} == "string"`,LD._`${M} += "_"`);F.if(LD._`typeof ${C}[${M}] == "number"`,()=>{F.assign(U,LD._`${C}[${M}]`),D.error(),F.assign(G,!1).break()}).code(LD._`${C}[${M}] = ${Z}`)})}function z(Z,U){let M=(0,N20.useFunc)(F,R20.default),A=F.name("outer");F.label(A).for(LD._`;${Z}--;`,()=>F.for(LD._`${U} = ${Z}; ${U}--;`,()=>F.if(LD._`${M}(${$}[${Z}], ${$}[${U}])`,()=>{D.error(),F.assign(G,!1).break(A)})))}}};ik.default=O20});var sk=E((ok)=>{Object.defineProperty(ok,"__esModule",{value:!0});var kG=F0(),j20=E0(),T20=ZJ(),P20={message:"must be equal to constant",params:({schemaCode:D})=>kG._`{allowedValue: ${D}}`},I20={keyword:"const",$data:!0,error:P20,code(D){let{gen:F,data:$,$data:J,schemaCode:Q,schema:Y}=D;if(J||Y&&typeof Y=="object")D.fail$data(kG._`!${(0,j20.useFunc)(F,T20.default)}(${$}, ${Q})`);else D.fail(kG._`${Y} !== ${$}`)}};ok.default=I20});var tk=E((rk)=>{Object.defineProperty(rk,"__esModule",{value:!0});var G9=F0(),k20=E0(),v20=ZJ(),y20={message:"must be equal to one of the allowed values",params:({schemaCode:D})=>G9._`{allowedValues: ${D}}`},x20={keyword:"enum",schemaType:"array",$data:!0,error:y20,code(D){let{gen:F,data:$,$data:J,schema:Q,schemaCode:Y,it:B}=D;if(!J&&Q.length===0)throw Error("enum must have non-empty array");let X=Q.length>=B.opts.loopEnum,G,H=()=>G!==null&&G!==void 0?G:G=(0,k20.useFunc)(F,v20.default),q;if(X||J)q=F.let("valid"),D.block$data(q,K);else{if(!Array.isArray(Q))throw Error("ajv implementation error");let z=F.const("vSchema",Y);q=(0,G9.or)(...Q.map((Z,U)=>V(z,U)))}D.pass(q);function K(){F.assign(q,!1),F.forOf("v",Y,(z)=>F.if(G9._`${H()}(${$}, ${z})`,()=>F.assign(q,!0).break()))}function V(z,Z){let U=Q[Z];return typeof U==="object"&&U!==null?G9._`${H()}(${$}, ${z}[${Z}])`:G9._`${$} === ${U}`}}};rk.default=x20});var vG=E((ek)=>{Object.defineProperty(ek,"__esModule",{value:!0});var f20=Ik(),g20=kk(),h20=fk(),b20=hk(),u20=uk(),m20=lk(),l20=dk(),p20=ak(),d20=sk(),c20=tk(),n20=[f20.default,g20.default,h20.default,b20.default,u20.default,m20.default,l20.default,p20.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},d20.default,c20.default];ek.default=n20});var xG=E((Fv)=>{Object.defineProperty(Fv,"__esModule",{value:!0});Fv.validateAdditionalItems=void 0;var C4=F0(),yG=E0(),a20={message:({params:{len:D}})=>C4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>C4._`{limit: ${D}}`},o20={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:a20,code(D){let{parentSchema:F,it:$}=D,{items:J}=F;if(!Array.isArray(J)){(0,yG.checkStrictMode)($,'"additionalItems" is ignored when "items" is not an array of schemas');return}Dv(D,J)}};function Dv(D,F){let{gen:$,schema:J,data:Q,keyword:Y,it:B}=D;B.items=!0;let X=$.const("len",C4._`${Q}.length`);if(J===!1)D.setParams({len:F.length}),D.pass(C4._`${X} <= ${F.length}`);else if(typeof J=="object"&&!(0,yG.alwaysValidSchema)(B,J)){let H=$.var("valid",C4._`${X} <= ${F.length}`);$.if((0,C4.not)(H),()=>G(H)),D.ok(H)}function G(H){$.forRange("i",F.length,X,(q)=>{if(D.subschema({keyword:Y,dataProp:q,dataPropType:yG.Type.Num},H),!B.allErrors)$.if((0,C4.not)(H),()=>$.break())})}}Fv.validateAdditionalItems=Dv;Fv.default=o20});var _G=E((Yv)=>{Object.defineProperty(Yv,"__esModule",{value:!0});Yv.validateTuple=void 0;var Jv=F0(),UJ=E0(),r20=L1(),t20={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(D){let{schema:F,it:$}=D;if(Array.isArray(F))return Qv(D,"additionalItems",F);if($.items=!0,(0,UJ.alwaysValidSchema)($,F))return;D.ok((0,r20.validateArray)(D))}};function Qv(D,F,$=D.schema){let{gen:J,parentSchema:Q,data:Y,keyword:B,it:X}=D;if(q(Q),X.opts.unevaluated&&$.length&&X.items!==!0)X.items=UJ.mergeEvaluated.items(J,$.length,X.items);let G=J.name("valid"),H=J.const("len",Jv._`${Y}.length`);$.forEach((K,V)=>{if((0,UJ.alwaysValidSchema)(X,K))return;J.if(Jv._`${H} > ${V}`,()=>D.subschema({keyword:B,schemaProp:V,dataProp:V},G)),D.ok(G)});function q(K){let{opts:V,errSchemaPath:z}=X,Z=$.length,U=Z===K.minItems&&(Z===K.maxItems||K[F]===!1);if(V.strictTuples&&!U){let M=`"${B}" is ${Z}-tuple, but minItems or maxItems/${F} are not specified or different at path "${z}"`;(0,UJ.checkStrictMode)(X,M,V.strictTuples)}}}Yv.validateTuple=Qv;Yv.default=t20});var Gv=E((Xv)=>{Object.defineProperty(Xv,"__esModule",{value:!0});var DX0=_G(),FX0={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(D)=>(0,DX0.validateTuple)(D,"items")};Xv.default=FX0});var qv=E((Hv)=>{Object.defineProperty(Hv,"__esModule",{value:!0});var Wv=F0(),JX0=E0(),QX0=L1(),YX0=xG(),BX0={message:({params:{len:D}})=>Wv.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>Wv._`{limit: ${D}}`},XX0={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:BX0,code(D){let{schema:F,parentSchema:$,it:J}=D,{prefixItems:Q}=$;if(J.items=!0,(0,JX0.alwaysValidSchema)(J,F))return;if(Q)(0,YX0.validateAdditionalItems)(D,Q);else D.ok((0,QX0.validateArray)(D))}};Hv.default=XX0});var zv=E((Kv)=>{Object.defineProperty(Kv,"__esModule",{value:!0});var A1=F0(),LJ=E0(),WX0={message:({params:{min:D,max:F}})=>F===void 0?A1.str`must contain at least ${D} valid item(s)`:A1.str`must contain at least ${D} and no more than ${F} valid item(s)`,params:({params:{min:D,max:F}})=>F===void 0?A1._`{minContains: ${D}}`:A1._`{minContains: ${D}, maxContains: ${F}}`},HX0={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:WX0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:Y}=D,B,X,{minContains:G,maxContains:H}=J;if(Y.opts.next)B=G===void 0?1:G,X=H;else B=1;let q=F.const("len",A1._`${Q}.length`);if(D.setParams({min:B,max:X}),X===void 0&&B===0){(0,LJ.checkStrictMode)(Y,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(X!==void 0&&B>X){(0,LJ.checkStrictMode)(Y,'"minContains" > "maxContains" is always invalid'),D.fail();return}if((0,LJ.alwaysValidSchema)(Y,$)){let U=A1._`${q} >= ${B}`;if(X!==void 0)U=A1._`${U} && ${q} <= ${X}`;D.pass(U);return}Y.items=!0;let K=F.name("valid");if(X===void 0&&B===1)z(K,()=>F.if(K,()=>F.break()));else if(B===0){if(F.let(K,!0),X!==void 0)F.if(A1._`${Q}.length > 0`,V)}else F.let(K,!1),V();D.result(K,()=>D.reset());function V(){let U=F.name("_valid"),M=F.let("count",0);z(U,()=>F.if(U,()=>Z(M)))}function z(U,M){F.forRange("i",0,q,(A)=>{D.subschema({keyword:"contains",dataProp:A,dataPropType:LJ.Type.Num,compositeRule:!0},U),M()})}function Z(U){if(F.code(A1._`${U}++`),X===void 0)F.if(A1._`${U} >= ${B}`,()=>F.assign(K,!0).break());else if(F.if(A1._`${U} > ${X}`,()=>F.assign(K,!1).break()),B===1)F.assign(K,!0);else F.if(A1._`${U} >= ${B}`,()=>F.assign(K,!0))}}};Kv.default=HX0});var AJ=E((Zv)=>{Object.defineProperty(Zv,"__esModule",{value:!0});Zv.validateSchemaDeps=Zv.validatePropertyDeps=Zv.error=void 0;var fG=F0(),KX0=E0(),W9=L1();Zv.error={message:({params:{property:D,depsCount:F,deps:$}})=>{let J=F===1?"property":"properties";return fG.str`must have ${J} ${$} when property ${D} is present`},params:({params:{property:D,depsCount:F,deps:$,missingProperty:J}})=>fG._`{property: ${D},
|
|
89
89
|
missingProperty: ${J},
|
|
90
90
|
depsCount: ${F},
|
|
91
91
|
deps: ${$}}`};var zX0={keyword:"dependencies",type:"object",schemaType:"object",error:Zv.error,code(D){let[F,$]=EX0(D);Ev(D,F),Vv(D,$)}};function EX0({schema:D}){let F={},$={};for(let J in D){if(J==="__proto__")continue;let Q=Array.isArray(D[J])?F:$;Q[J]=D[J]}return[F,$]}function Ev(D,F=D.schema){let{gen:$,data:J,it:Q}=D;if(Object.keys(F).length===0)return;let Y=$.let("missing");for(let B in F){let X=F[B];if(X.length===0)continue;let G=(0,W9.propertyInData)($,J,B,Q.opts.ownProperties);if(D.setParams({property:B,depsCount:X.length,deps:X.join(", ")}),Q.allErrors)$.if(G,()=>{for(let H of X)(0,W9.checkReportMissingProp)(D,H)});else $.if(fG._`${G} && (${(0,W9.checkMissingProp)(D,X,Y)})`),(0,W9.reportMissingProp)(D,Y),$.else()}}Zv.validatePropertyDeps=Ev;function Vv(D,F=D.schema){let{gen:$,data:J,keyword:Q,it:Y}=D,B=$.name("valid");for(let X in F){if((0,KX0.alwaysValidSchema)(Y,F[X]))continue;$.if((0,W9.propertyInData)($,J,X,Y.opts.ownProperties),()=>{let G=D.subschema({keyword:Q,schemaProp:X},B);D.mergeValidEvaluated(G,B)},()=>$.var(B,!0)),D.ok(B)}}Zv.validateSchemaDeps=Vv;Zv.default=zX0});var Nv=E((Mv)=>{Object.defineProperty(Mv,"__esModule",{value:!0});var Av=F0(),UX0=E0(),LX0={message:"property name must be valid",params:({params:D})=>Av._`{propertyName: ${D.propertyName}}`},AX0={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:LX0,code(D){let{gen:F,schema:$,data:J,it:Q}=D;if((0,UX0.alwaysValidSchema)(Q,$))return;let Y=F.name("valid");F.forIn("key",J,(B)=>{D.setParams({propertyName:B}),D.subschema({keyword:"propertyNames",data:B,dataTypes:["string"],propertyName:B,compositeRule:!0},Y),F.if((0,Av.not)(Y),()=>{if(D.error(!0),!Q.allErrors)F.break()})}),D.ok(Y)}};Mv.default=AX0});var gG=E((Rv)=>{Object.defineProperty(Rv,"__esModule",{value:!0});var MJ=L1(),b1=F0(),NX0=U1(),NJ=E0(),RX0={message:"must NOT have additional properties",params:({params:D})=>b1._`{additionalProperty: ${D.additionalProperty}}`},CX0={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:RX0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,errsCount:Y,it:B}=D;if(!Y)throw Error("ajv implementation error");let{allErrors:X,opts:G}=B;if(B.props=!0,G.removeAdditional!=="all"&&(0,NJ.alwaysValidSchema)(B,$))return;let H=(0,MJ.allSchemaProperties)(J.properties),q=(0,MJ.allSchemaProperties)(J.patternProperties);K(),D.ok(b1._`${Y} === ${NX0.default.errors}`);function K(){F.forIn("key",Q,(M)=>{if(!H.length&&!q.length)Z(M);else F.if(V(M),()=>Z(M))})}function V(M){let A;if(H.length>8){let C=(0,NJ.schemaRefOrVal)(B,J.properties,"properties");A=(0,MJ.isOwnProperty)(F,C,M)}else if(H.length)A=(0,b1.or)(...H.map((C)=>b1._`${M} === ${C}`));else A=b1.nil;if(q.length)A=(0,b1.or)(A,...q.map((C)=>b1._`${(0,MJ.usePattern)(D,C)}.test(${M})`));return(0,b1.not)(A)}function z(M){F.code(b1._`delete ${Q}[${M}]`)}function Z(M){if(G.removeAdditional==="all"||G.removeAdditional&&$===!1){z(M);return}if($===!1){if(D.setParams({additionalProperty:M}),D.error(),!X)F.break();return}if(typeof $=="object"&&!(0,NJ.alwaysValidSchema)(B,$)){let A=F.name("valid");if(G.removeAdditional==="failing")U(M,A,!1),F.if((0,b1.not)(A),()=>{D.reset(),z(M)});else if(U(M,A),!X)F.if((0,b1.not)(A),()=>F.break())}}function U(M,A,C){let w={keyword:"additionalProperties",dataProp:M,dataPropType:NJ.Type.Str};if(C===!1)Object.assign(w,{compositeRule:!0,createErrors:!1,allErrors:!1});D.subschema(w,A)}}};Rv.default=CX0});var jv=E((wv)=>{Object.defineProperty(wv,"__esModule",{value:!0});var wX0=DF(),Cv=L1(),hG=E0(),Ov=gG(),jX0={keyword:"properties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:Y}=D;if(Y.opts.removeAdditional==="all"&&J.additionalProperties===void 0)Ov.default.code(new wX0.KeywordCxt(Y,Ov.default,"additionalProperties"));let B=(0,Cv.allSchemaProperties)($);for(let K of B)Y.definedProperties.add(K);if(Y.opts.unevaluated&&B.length&&Y.props!==!0)Y.props=hG.mergeEvaluated.props(F,(0,hG.toHash)(B),Y.props);let X=B.filter((K)=>!(0,hG.alwaysValidSchema)(Y,$[K]));if(X.length===0)return;let G=F.name("valid");for(let K of X){if(H(K))q(K);else{if(F.if((0,Cv.propertyInData)(F,Q,K,Y.opts.ownProperties)),q(K),!Y.allErrors)F.else().var(G,!0);F.endIf()}D.it.definedProperties.add(K),D.ok(G)}function H(K){return Y.opts.useDefaults&&!Y.compositeRule&&$[K].default!==void 0}function q(K){D.subschema({keyword:"properties",schemaProp:K,dataProp:K},G)}}};wv.default=jX0});var kv=E((Sv)=>{Object.defineProperty(Sv,"__esModule",{value:!0});var Tv=L1(),RJ=F0(),Pv=E0(),Iv=E0(),PX0={keyword:"patternProperties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,data:J,parentSchema:Q,it:Y}=D,{opts:B}=Y,X=(0,Tv.allSchemaProperties)($),G=X.filter((U)=>(0,Pv.alwaysValidSchema)(Y,$[U]));if(X.length===0||G.length===X.length&&(!Y.opts.unevaluated||Y.props===!0))return;let H=B.strictSchema&&!B.allowMatchingProperties&&Q.properties,q=F.name("valid");if(Y.props!==!0&&!(Y.props instanceof RJ.Name))Y.props=(0,Iv.evaluatedPropsToName)(F,Y.props);let{props:K}=Y;V();function V(){for(let U of X){if(H)z(U);if(Y.allErrors)Z(U);else F.var(q,!0),Z(U),F.if(q)}}function z(U){for(let M in H)if(new RegExp(U).test(M))(0,Pv.checkStrictMode)(Y,`property ${M} matches pattern ${U} (use allowMatchingProperties)`)}function Z(U){F.forIn("key",J,(M)=>{F.if(RJ._`${(0,Tv.usePattern)(D,U)}.test(${M})`,()=>{let A=G.includes(U);if(!A)D.subschema({keyword:"patternProperties",schemaProp:U,dataProp:M,dataPropType:Iv.Type.Str},q);if(Y.opts.unevaluated&&K!==!0)F.assign(RJ._`${K}[${M}]`,!0);else if(!A&&!Y.allErrors)F.if((0,RJ.not)(q),()=>F.break())})})}}};Sv.default=PX0});var yv=E((vv)=>{Object.defineProperty(vv,"__esModule",{value:!0});var SX0=E0(),kX0={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(D){let{gen:F,schema:$,it:J}=D;if((0,SX0.alwaysValidSchema)(J,$)){D.fail();return}let Q=F.name("valid");D.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},Q),D.failResult(Q,()=>D.reset(),()=>D.error())},error:{message:"must NOT be valid"}};vv.default=kX0});var _v=E((xv)=>{Object.defineProperty(xv,"__esModule",{value:!0});var yX0=L1(),xX0={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:yX0.validateUnion,error:{message:"must match a schema in anyOf"}};xv.default=xX0});var gv=E((fv)=>{Object.defineProperty(fv,"__esModule",{value:!0});var CJ=F0(),fX0=E0(),gX0={message:"must match exactly one schema in oneOf",params:({params:D})=>CJ._`{passingSchemas: ${D.passing}}`},hX0={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:gX0,code(D){let{gen:F,schema:$,parentSchema:J,it:Q}=D;if(!Array.isArray($))throw Error("ajv implementation error");if(Q.opts.discriminator&&J.discriminator)return;let Y=$,B=F.let("valid",!1),X=F.let("passing",null),G=F.name("_valid");D.setParams({passing:X}),F.block(H),D.result(B,()=>D.reset(),()=>D.error(!0));function H(){Y.forEach((q,K)=>{let V;if((0,fX0.alwaysValidSchema)(Q,q))F.var(G,!0);else V=D.subschema({keyword:"oneOf",schemaProp:K,compositeRule:!0},G);if(K>0)F.if(CJ._`${G} && ${B}`).assign(B,!1).assign(X,CJ._`[${X}, ${K}]`).else();F.if(G,()=>{if(F.assign(B,!0),F.assign(X,K),V)D.mergeEvaluated(V,CJ.Name)})})}}};fv.default=hX0});var bv=E((hv)=>{Object.defineProperty(hv,"__esModule",{value:!0});var uX0=E0(),mX0={keyword:"allOf",schemaType:"array",code(D){let{gen:F,schema:$,it:J}=D;if(!Array.isArray($))throw Error("ajv implementation error");let Q=F.name("valid");$.forEach((Y,B)=>{if((0,uX0.alwaysValidSchema)(J,Y))return;let X=D.subschema({keyword:"allOf",schemaProp:B},Q);D.ok(Q),D.mergeEvaluated(X)})}};hv.default=mX0});var pv=E((lv)=>{Object.defineProperty(lv,"__esModule",{value:!0});var OJ=F0(),mv=E0(),pX0={message:({params:D})=>OJ.str`must match "${D.ifClause}" schema`,params:({params:D})=>OJ._`{failingKeyword: ${D.ifClause}}`},dX0={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:pX0,code(D){let{gen:F,parentSchema:$,it:J}=D;if($.then===void 0&&$.else===void 0)(0,mv.checkStrictMode)(J,'"if" without "then" and "else" is ignored');let Q=uv(J,"then"),Y=uv(J,"else");if(!Q&&!Y)return;let B=F.let("valid",!0),X=F.name("_valid");if(G(),D.reset(),Q&&Y){let q=F.let("ifClause");D.setParams({ifClause:q}),F.if(X,H("then",q),H("else",q))}else if(Q)F.if(X,H("then"));else F.if((0,OJ.not)(X),H("else"));D.pass(B,()=>D.error(!0));function G(){let q=D.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},X);D.mergeEvaluated(q)}function H(q,K){return()=>{let V=D.subschema({keyword:q},X);if(F.assign(B,X),D.mergeValidEvaluated(V,B),K)F.assign(K,OJ._`${q}`);else D.setParams({ifClause:q})}}}};function uv(D,F){let $=D.schema[F];return $!==void 0&&!(0,mv.alwaysValidSchema)(D,$)}lv.default=dX0});var cv=E((dv)=>{Object.defineProperty(dv,"__esModule",{value:!0});var nX0=E0(),iX0={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:D,parentSchema:F,it:$}){if(F.if===void 0)(0,nX0.checkStrictMode)($,`"${D}" without "if" is ignored`)}};dv.default=iX0});var bG=E((nv)=>{Object.defineProperty(nv,"__esModule",{value:!0});var oX0=xG(),sX0=Gv(),rX0=_G(),tX0=qv(),eX0=zv(),DG0=AJ(),FG0=Nv(),$G0=gG(),JG0=jv(),QG0=kv(),YG0=yv(),BG0=_v(),XG0=gv(),GG0=bv(),WG0=pv(),HG0=cv();function qG0(D=!1){let F=[YG0.default,BG0.default,XG0.default,GG0.default,WG0.default,HG0.default,FG0.default,$G0.default,DG0.default,JG0.default,QG0.default];if(D)F.push(sX0.default,tX0.default);else F.push(oX0.default,rX0.default);return F.push(eX0.default),F}nv.default=qG0});var mG=E((ov)=>{Object.defineProperty(ov,"__esModule",{value:!0});ov.dynamicAnchor=void 0;var uG=F0(),zG0=U1(),iv=e5(),EG0=KJ(),VG0={keyword:"$dynamicAnchor",schemaType:"string",code:(D)=>av(D,D.schema)};function av(D,F){let{gen:$,it:J}=D;J.schemaEnv.root.dynamicAnchors[F]=!0;let Q=uG._`${zG0.default.dynamicAnchors}${(0,uG.getProperty)(F)}`,Y=J.errSchemaPath==="#"?J.validateName:ZG0(D);$.if(uG._`!${Q}`,()=>$.assign(Q,Y))}ov.dynamicAnchor=av;function ZG0(D){let{schemaEnv:F,schema:$,self:J}=D.it,{root:Q,baseId:Y,localRefs:B,meta:X}=F.root,{schemaId:G}=J.opts,H=new iv.SchemaEnv({schema:$,schemaId:G,root:Q,baseId:Y,localRefs:B,meta:X});return iv.compileSchema.call(J,H),(0,EG0.getValidate)(D,H)}ov.default=VG0});var lG=E((Dy)=>{Object.defineProperty(Dy,"__esModule",{value:!0});Dy.dynamicRef=void 0;var rv=F0(),LG0=U1(),tv=KJ(),AG0={keyword:"$dynamicRef",schemaType:"string",code:(D)=>ev(D,D.schema)};function ev(D,F){let{gen:$,keyword:J,it:Q}=D;if(F[0]!=="#")throw Error(`"${J}" only supports hash fragment reference`);let Y=F.slice(1);if(Q.allErrors)B();else{let G=$.let("valid",!1);B(G),D.ok(G)}function B(G){if(Q.schemaEnv.root.dynamicAnchors[Y]){let H=$.let("_v",rv._`${LG0.default.dynamicAnchors}${(0,rv.getProperty)(Y)}`);$.if(H,X(H,G),X(Q.validateName,G))}else X(Q.validateName,G)()}function X(G,H){return H?()=>$.block(()=>{(0,tv.callRef)(D,G),$.let(H,!0)}):()=>(0,tv.callRef)(D,G)}}Dy.dynamicRef=ev;Dy.default=AG0});var Jy=E(($y)=>{Object.defineProperty($y,"__esModule",{value:!0});var NG0=mG(),RG0=E0(),CG0={keyword:"$recursiveAnchor",schemaType:"boolean",code(D){if(D.schema)(0,NG0.dynamicAnchor)(D,"");else(0,RG0.checkStrictMode)(D.it,"$recursiveAnchor: false is ignored")}};$y.default=CG0});var Yy=E((Qy)=>{Object.defineProperty(Qy,"__esModule",{value:!0});var wG0=lG(),jG0={keyword:"$recursiveRef",schemaType:"string",code:(D)=>(0,wG0.dynamicRef)(D,D.schema)};Qy.default=jG0});var Xy=E((By)=>{Object.defineProperty(By,"__esModule",{value:!0});var PG0=mG(),IG0=lG(),SG0=Jy(),kG0=Yy(),vG0=[PG0.default,IG0.default,SG0.default,kG0.default];By.default=vG0});var Hy=E((Wy)=>{Object.defineProperty(Wy,"__esModule",{value:!0});var Gy=AJ(),xG0={keyword:"dependentRequired",type:"object",schemaType:"object",error:Gy.error,code:(D)=>(0,Gy.validatePropertyDeps)(D)};Wy.default=xG0});var Ky=E((qy)=>{Object.defineProperty(qy,"__esModule",{value:!0});var fG0=AJ(),gG0={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(D)=>(0,fG0.validateSchemaDeps)(D)};qy.default=gG0});var Ey=E((zy)=>{Object.defineProperty(zy,"__esModule",{value:!0});var bG0=E0(),uG0={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:D,parentSchema:F,it:$}){if(F.contains===void 0)(0,bG0.checkStrictMode)($,`"${D}" without "contains" is ignored`)}};zy.default=uG0});var Zy=E((Vy)=>{Object.defineProperty(Vy,"__esModule",{value:!0});var lG0=Hy(),pG0=Ky(),dG0=Ey(),cG0=[lG0.default,pG0.default,dG0.default];Vy.default=cG0});var Ay=E((Ly)=>{Object.defineProperty(Ly,"__esModule",{value:!0});var b6=F0(),Uy=E0(),iG0=U1(),aG0={message:"must NOT have unevaluated properties",params:({params:D})=>b6._`{unevaluatedProperty: ${D.unevaluatedProperty}}`},oG0={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:aG0,code(D){let{gen:F,schema:$,data:J,errsCount:Q,it:Y}=D;if(!Q)throw Error("ajv implementation error");let{allErrors:B,props:X}=Y;if(X instanceof b6.Name)F.if(b6._`${X} !== true`,()=>F.forIn("key",J,(K)=>F.if(H(X,K),()=>G(K))));else if(X!==!0)F.forIn("key",J,(K)=>X===void 0?G(K):F.if(q(X,K),()=>G(K)));Y.props=!0,D.ok(b6._`${Q} === ${iG0.default.errors}`);function G(K){if($===!1){if(D.setParams({unevaluatedProperty:K}),D.error(),!B)F.break();return}if(!(0,Uy.alwaysValidSchema)(Y,$)){let V=F.name("valid");if(D.subschema({keyword:"unevaluatedProperties",dataProp:K,dataPropType:Uy.Type.Str},V),!B)F.if((0,b6.not)(V),()=>F.break())}}function H(K,V){return b6._`!${K} || !${K}[${V}]`}function q(K,V){let z=[];for(let Z in K)if(K[Z]===!0)z.push(b6._`${V} !== ${Z}`);return(0,b6.and)(...z)}}};Ly.default=oG0});var Ry=E((Ny)=>{Object.defineProperty(Ny,"__esModule",{value:!0});var O4=F0(),My=E0(),rG0={message:({params:{len:D}})=>O4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>O4._`{limit: ${D}}`},tG0={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:rG0,code(D){let{gen:F,schema:$,data:J,it:Q}=D,Y=Q.items||0;if(Y===!0)return;let B=F.const("len",O4._`${J}.length`);if($===!1)D.setParams({len:Y}),D.fail(O4._`${B} > ${Y}`);else if(typeof $=="object"&&!(0,My.alwaysValidSchema)(Q,$)){let G=F.var("valid",O4._`${B} <= ${Y}`);F.if((0,O4.not)(G),()=>X(G,Y)),D.ok(G)}Q.items=!0;function X(G,H){F.forRange("i",H,B,(q)=>{if(D.subschema({keyword:"unevaluatedItems",dataProp:q,dataPropType:My.Type.Num},G),!Q.allErrors)F.if((0,O4.not)(G),()=>F.break())})}}};Ny.default=tG0});var Oy=E((Cy)=>{Object.defineProperty(Cy,"__esModule",{value:!0});var DW0=Ay(),FW0=Ry(),$W0=[DW0.default,FW0.default];Cy.default=$W0});var jy=E((wy)=>{Object.defineProperty(wy,"__esModule",{value:!0});var FD=F0(),QW0={message:({schemaCode:D})=>FD.str`must match format "${D}"`,params:({schemaCode:D})=>FD._`{format: ${D}}`},YW0={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:QW0,code(D,F){let{gen:$,data:J,$data:Q,schema:Y,schemaCode:B,it:X}=D,{opts:G,errSchemaPath:H,schemaEnv:q,self:K}=X;if(!G.validateFormats)return;if(Q)V();else z();function V(){let Z=$.scopeValue("formats",{ref:K.formats,code:G.code.formats}),U=$.const("fDef",FD._`${Z}[${B}]`),M=$.let("fType"),A=$.let("format");$.if(FD._`typeof ${U} == "object" && !(${U} instanceof RegExp)`,()=>$.assign(M,FD._`${U}.type || "string"`).assign(A,FD._`${U}.validate`),()=>$.assign(M,FD._`"string"`).assign(A,U)),D.fail$data((0,FD.or)(C(),w()));function C(){if(G.strictSchema===!1)return FD.nil;return FD._`${B} && !${A}`}function w(){let I=q.$async?FD._`(${U}.async ? await ${A}(${J}) : ${A}(${J}))`:FD._`${A}(${J})`,R=FD._`(typeof ${A} == "function" ? ${I} : ${A}.test(${J}))`;return FD._`${A} && ${A} !== true && ${M} === ${F} && !${R}`}}function z(){let Z=K.formats[Y];if(!Z){C();return}if(Z===!0)return;let[U,M,A]=w(Z);if(U===F)D.pass(I());function C(){if(G.strictSchema===!1){K.logger.warn(R());return}throw Error(R());function R(){return`unknown format "${Y}" ignored in schema at path "${H}"`}}function w(R){let j=R instanceof RegExp?(0,FD.regexpCode)(R):G.code.formats?FD._`${G.code.formats}${(0,FD.getProperty)(Y)}`:void 0,v=$.scopeValue("formats",{key:Y,ref:R,code:j});if(typeof R=="object"&&!(R instanceof RegExp))return[R.type||"string",R.validate,FD._`${v}.validate`];return["string",R,v]}function I(){if(typeof Z=="object"&&!(Z instanceof RegExp)&&Z.async){if(!q.$async)throw Error("async format in sync schema");return FD._`await ${A}(${J})`}return typeof M=="function"?FD._`${A}(${J})`:FD._`${A}.test(${J})`}}}};wy.default=YW0});var pG=E((Ty)=>{Object.defineProperty(Ty,"__esModule",{value:!0});var XW0=jy(),GW0=[XW0.default];Ty.default=GW0});var dG=E((Py)=>{Object.defineProperty(Py,"__esModule",{value:!0});Py.contentVocabulary=Py.metadataVocabulary=void 0;Py.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Py.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var vy=E((ky)=>{Object.defineProperty(ky,"__esModule",{value:!0});var qW0=IG(),KW0=vG(),zW0=bG(),EW0=Xy(),VW0=Zy(),ZW0=Oy(),UW0=pG(),Sy=dG(),LW0=[EW0.default,qW0.default,KW0.default,(0,zW0.default)(!0),UW0.default,Sy.metadataVocabulary,Sy.contentVocabulary,VW0.default,ZW0.default];ky.default=LW0});var fy=E((xy)=>{Object.defineProperty(xy,"__esModule",{value:!0});xy.DiscrError=void 0;var yy;(function(D){D.Tag="tag",D.Mapping="mapping"})(yy||(xy.DiscrError=yy={}))});var nG=E((hy)=>{Object.defineProperty(hy,"__esModule",{value:!0});var QF=F0(),cG=fy(),gy=e5(),MW0=FF(),NW0=E0(),RW0={message:({params:{discrError:D,tagName:F}})=>D===cG.DiscrError.Tag?`tag "${F}" must be string`:`value of tag "${F}" must be in oneOf`,params:({params:{discrError:D,tag:F,tagName:$}})=>QF._`{error: ${D}, tag: ${$}, tagValue: ${F}}`},CW0={keyword:"discriminator",type:"object",schemaType:"object",error:RW0,code(D){let{gen:F,data:$,schema:J,parentSchema:Q,it:Y}=D,{oneOf:B}=Q;if(!Y.opts.discriminator)throw Error("discriminator: requires discriminator option");let X=J.propertyName;if(typeof X!="string")throw Error("discriminator: requires propertyName");if(J.mapping)throw Error("discriminator: mapping is not supported");if(!B)throw Error("discriminator: requires oneOf keyword");let G=F.let("valid",!1),H=F.const("tag",QF._`${$}${(0,QF.getProperty)(X)}`);F.if(QF._`typeof ${H} == "string"`,()=>q(),()=>D.error(!1,{discrError:cG.DiscrError.Tag,tag:H,tagName:X})),D.ok(G);function q(){let z=V();F.if(!1);for(let Z in z)F.elseIf(QF._`${H} === ${Z}`),F.assign(G,K(z[Z]));F.else(),D.error(!1,{discrError:cG.DiscrError.Mapping,tag:H,tagName:X}),F.endIf()}function K(z){let Z=F.name("valid"),U=D.subschema({keyword:"oneOf",schemaProp:z},Z);return D.mergeEvaluated(U,QF.Name),Z}function V(){var z;let Z={},U=A(Q),M=!0;for(let I=0;I<B.length;I++){let R=B[I];if((R===null||R===void 0?void 0:R.$ref)&&!(0,NW0.schemaHasRulesButRef)(R,Y.self.RULES)){let v=R.$ref;if(R=gy.resolveRef.call(Y.self,Y.schemaEnv.root,Y.baseId,v),R instanceof gy.SchemaEnv)R=R.schema;if(R===void 0)throw new MW0.default(Y.opts.uriResolver,Y.baseId,v)}let j=(z=R===null||R===void 0?void 0:R.properties)===null||z===void 0?void 0:z[X];if(typeof j!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${X}"`);M=M&&(U||A(R)),C(j,I)}if(!M)throw Error(`discriminator: "${X}" must be required`);return Z;function A({required:I}){return Array.isArray(I)&&I.includes(X)}function C(I,R){if(I.const)w(I.const,R);else if(I.enum)for(let j of I.enum)w(j,R);else throw Error(`discriminator: "properties/${X}" must have "const" or "enum"`)}function w(I,R){if(typeof I!="string"||I in Z)throw Error(`discriminator: "${X}" values must be unique strings`);Z[I]=R}}}};hy.default=CW0});var by=E((OI0,wW0)=>{wW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/schema",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0,"https://json-schema.org/draft/2020-12/vocab/applicator":!0,"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0,"https://json-schema.org/draft/2020-12/vocab/validation":!0,"https://json-schema.org/draft/2020-12/vocab/meta-data":!0,"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0,"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Core and Validation specifications meta-schema",allOf:[{$ref:"meta/core"},{$ref:"meta/applicator"},{$ref:"meta/unevaluated"},{$ref:"meta/validation"},{$ref:"meta/meta-data"},{$ref:"meta/format-annotation"},{$ref:"meta/content"}],type:["object","boolean"],$comment:"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",properties:{definitions:{$comment:'"definitions" has been replaced by "$defs".',type:"object",additionalProperties:{$dynamicRef:"#meta"},deprecated:!0,default:{}},dependencies:{$comment:'"dependencies" has been split and replaced by "dependentSchemas" and "dependentRequired" in order to serve their differing semantics.',type:"object",additionalProperties:{anyOf:[{$dynamicRef:"#meta"},{$ref:"meta/validation#/$defs/stringArray"}]},deprecated:!0,default:{}},$recursiveAnchor:{$comment:'"$recursiveAnchor" has been replaced by "$dynamicAnchor".',$ref:"meta/core#/$defs/anchorString",deprecated:!0},$recursiveRef:{$comment:'"$recursiveRef" has been replaced by "$dynamicRef".',$ref:"meta/core#/$defs/uriReferenceString",deprecated:!0}}}});var uy=E((wI0,jW0)=>{jW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/applicator",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/applicator":!0},$dynamicAnchor:"meta",title:"Applicator vocabulary meta-schema",type:["object","boolean"],properties:{prefixItems:{$ref:"#/$defs/schemaArray"},items:{$dynamicRef:"#meta"},contains:{$dynamicRef:"#meta"},additionalProperties:{$dynamicRef:"#meta"},properties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},patternProperties:{type:"object",additionalProperties:{$dynamicRef:"#meta"},propertyNames:{format:"regex"},default:{}},dependentSchemas:{type:"object",additionalProperties:{$dynamicRef:"#meta"},default:{}},propertyNames:{$dynamicRef:"#meta"},if:{$dynamicRef:"#meta"},then:{$dynamicRef:"#meta"},else:{$dynamicRef:"#meta"},allOf:{$ref:"#/$defs/schemaArray"},anyOf:{$ref:"#/$defs/schemaArray"},oneOf:{$ref:"#/$defs/schemaArray"},not:{$dynamicRef:"#meta"}},$defs:{schemaArray:{type:"array",minItems:1,items:{$dynamicRef:"#meta"}}}}});var my=E((jI0,TW0)=>{TW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/unevaluated",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/unevaluated":!0},$dynamicAnchor:"meta",title:"Unevaluated applicator vocabulary meta-schema",type:["object","boolean"],properties:{unevaluatedItems:{$dynamicRef:"#meta"},unevaluatedProperties:{$dynamicRef:"#meta"}}}});var ly=E((TI0,PW0)=>{PW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/content",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/content":!0},$dynamicAnchor:"meta",title:"Content vocabulary meta-schema",type:["object","boolean"],properties:{contentEncoding:{type:"string"},contentMediaType:{type:"string"},contentSchema:{$dynamicRef:"#meta"}}}});var py=E((PI0,IW0)=>{IW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/core",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/core":!0},$dynamicAnchor:"meta",title:"Core vocabulary meta-schema",type:["object","boolean"],properties:{$id:{$ref:"#/$defs/uriReferenceString",$comment:"Non-empty fragments not allowed.",pattern:"^[^#]*#?$"},$schema:{$ref:"#/$defs/uriString"},$ref:{$ref:"#/$defs/uriReferenceString"},$anchor:{$ref:"#/$defs/anchorString"},$dynamicRef:{$ref:"#/$defs/uriReferenceString"},$dynamicAnchor:{$ref:"#/$defs/anchorString"},$vocabulary:{type:"object",propertyNames:{$ref:"#/$defs/uriString"},additionalProperties:{type:"boolean"}},$comment:{type:"string"},$defs:{type:"object",additionalProperties:{$dynamicRef:"#meta"}}},$defs:{anchorString:{type:"string",pattern:"^[A-Za-z_][-A-Za-z0-9._]*$"},uriString:{type:"string",format:"uri"},uriReferenceString:{type:"string",format:"uri-reference"}}}});var dy=E((II0,SW0)=>{SW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/format-annotation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/format-annotation":!0},$dynamicAnchor:"meta",title:"Format vocabulary meta-schema for annotation results",type:["object","boolean"],properties:{format:{type:"string"}}}});var cy=E((SI0,kW0)=>{kW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/meta-data",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/meta-data":!0},$dynamicAnchor:"meta",title:"Meta-data vocabulary meta-schema",type:["object","boolean"],properties:{title:{type:"string"},description:{type:"string"},default:!0,deprecated:{type:"boolean",default:!1},readOnly:{type:"boolean",default:!1},writeOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0}}}});var ny=E((kI0,vW0)=>{vW0.exports={$schema:"https://json-schema.org/draft/2020-12/schema",$id:"https://json-schema.org/draft/2020-12/meta/validation",$vocabulary:{"https://json-schema.org/draft/2020-12/vocab/validation":!0},$dynamicAnchor:"meta",title:"Validation vocabulary meta-schema",type:["object","boolean"],properties:{type:{anyOf:[{$ref:"#/$defs/simpleTypes"},{type:"array",items:{$ref:"#/$defs/simpleTypes"},minItems:1,uniqueItems:!0}]},const:!0,enum:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/$defs/nonNegativeInteger"},minLength:{$ref:"#/$defs/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},maxItems:{$ref:"#/$defs/nonNegativeInteger"},minItems:{$ref:"#/$defs/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},maxContains:{$ref:"#/$defs/nonNegativeInteger"},minContains:{$ref:"#/$defs/nonNegativeInteger",default:1},maxProperties:{$ref:"#/$defs/nonNegativeInteger"},minProperties:{$ref:"#/$defs/nonNegativeIntegerDefault0"},required:{$ref:"#/$defs/stringArray"},dependentRequired:{type:"object",additionalProperties:{$ref:"#/$defs/stringArray"}}},$defs:{nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{$ref:"#/$defs/nonNegativeInteger",default:0},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}}}});var ay=E((iy)=>{Object.defineProperty(iy,"__esModule",{value:!0});var yW0=by(),xW0=uy(),_W0=my(),fW0=ly(),gW0=py(),hW0=dy(),bW0=cy(),uW0=ny(),mW0=["/properties"];function lW0(D){return[yW0,xW0,_W0,fW0,gW0,F(this,hW0),bW0,F(this,uW0)].forEach(($)=>this.addMetaSchema($,void 0,!1)),this;function F($,J){return D?$.$dataMetaSchema(J,mW0):J}}iy.default=lW0});var oy=E((iD,aG)=>{Object.defineProperty(iD,"__esModule",{value:!0});iD.MissingRefError=iD.ValidationError=iD.CodeGen=iD.Name=iD.nil=iD.stringify=iD.str=iD._=iD.KeywordCxt=iD.Ajv2020=void 0;var dW0=PG(),cW0=vy(),nW0=nG(),iW0=ay(),iG="https://json-schema.org/draft/2020-12/schema";class H9 extends dW0.default{constructor(D={}){super({...D,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),cW0.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(nW0.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:D,meta:F}=this.opts;if(!F)return;iW0.default.call(this,D),this.refs["http://json-schema.org/schema"]=iG}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(iG)?iG:void 0)}}iD.Ajv2020=H9;aG.exports=iD=H9;aG.exports.Ajv2020=H9;Object.defineProperty(iD,"__esModule",{value:!0});iD.default=H9;var aW0=DF();Object.defineProperty(iD,"KeywordCxt",{enumerable:!0,get:function(){return aW0.KeywordCxt}});var YF=F0();Object.defineProperty(iD,"_",{enumerable:!0,get:function(){return YF._}});Object.defineProperty(iD,"str",{enumerable:!0,get:function(){return YF.str}});Object.defineProperty(iD,"stringify",{enumerable:!0,get:function(){return YF.stringify}});Object.defineProperty(iD,"nil",{enumerable:!0,get:function(){return YF.nil}});Object.defineProperty(iD,"Name",{enumerable:!0,get:function(){return YF.Name}});Object.defineProperty(iD,"CodeGen",{enumerable:!0,get:function(){return YF.CodeGen}});var oW0=r5();Object.defineProperty(iD,"ValidationError",{enumerable:!0,get:function(){return oW0.default}});var sW0=FF();Object.defineProperty(iD,"MissingRefError",{enumerable:!0,get:function(){return sW0.default}})});var Yx=E((Jx)=>{Object.defineProperty(Jx,"__esModule",{value:!0});Jx.formatNames=Jx.fastFormats=Jx.fullFormats=void 0;function L8(D,F){return{validate:D,compare:F}}Jx.fullFormats={date:L8(ey,tG),time:L8(sG(!0),eG),"date-time":L8(sy(!0),Fx),"iso-time":L8(sG(),Dx),"iso-date-time":L8(sy(),$x),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:QH0,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:qH0,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:YH0,int32:{type:"number",validate:GH0},int64:{type:"number",validate:WH0},float:{type:"number",validate:ty},double:{type:"number",validate:ty},password:!0,binary:!0};Jx.fastFormats={...Jx.fullFormats,date:L8(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,tG),time:L8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,eG),"date-time":L8(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,Fx),"iso-time":L8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Dx),"iso-date-time":L8(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,$x),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};Jx.formatNames=Object.keys(Jx.fullFormats);function eW0(D){return D%4===0&&(D%100!==0||D%400===0)}var DH0=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,FH0=[0,31,28,31,30,31,30,31,31,30,31,30,31];function ey(D){let F=DH0.exec(D);if(!F)return!1;let $=+F[1],J=+F[2],Q=+F[3];return J>=1&&J<=12&&Q>=1&&Q<=(J===2&&eW0($)?29:FH0[J])}function tG(D,F){if(!(D&&F))return;if(D>F)return 1;if(D<F)return-1;return 0}var oG=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function sG(D){return function($){let J=oG.exec($);if(!J)return!1;let Q=+J[1],Y=+J[2],B=+J[3],X=J[4],G=J[5]==="-"?-1:1,H=+(J[6]||0),q=+(J[7]||0);if(H>23||q>59||D&&!X)return!1;if(Q<=23&&Y<=59&&B<60)return!0;let K=Y-q*G,V=Q-H*G-(K<0?1:0);return(V===23||V===-1)&&(K===59||K===-1)&&B<61}}function eG(D,F){if(!(D&&F))return;let $=new Date("2020-01-01T"+D).valueOf(),J=new Date("2020-01-01T"+F).valueOf();if(!($&&J))return;return $-J}function Dx(D,F){if(!(D&&F))return;let $=oG.exec(D),J=oG.exec(F);if(!($&&J))return;if(D=$[1]+$[2]+$[3],F=J[1]+J[2]+J[3],D>F)return 1;if(D<F)return-1;return 0}var rG=/t|\s/i;function sy(D){let F=sG(D);return function(J){let Q=J.split(rG);return Q.length===2&&ey(Q[0])&&F(Q[1])}}function Fx(D,F){if(!(D&&F))return;let $=new Date(D).valueOf(),J=new Date(F).valueOf();if(!($&&J))return;return $-J}function $x(D,F){if(!(D&&F))return;let[$,J]=D.split(rG),[Q,Y]=F.split(rG),B=tG($,Q);if(B===void 0)return;return B||eG(J,Y)}var $H0=/\/|:/,JH0=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function QH0(D){return $H0.test(D)&&JH0.test(D)}var ry=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function YH0(D){return ry.lastIndex=0,ry.test(D)}var BH0=-2147483648,XH0=2147483647;function GH0(D){return Number.isInteger(D)&&D<=XH0&&D>=BH0}function WH0(D){return Number.isInteger(D)}function ty(){return!0}var HH0=/[^\\]\\Z/;function qH0(D){if(HH0.test(D))return!1;try{return new RegExp(D),!0}catch(F){return!1}}});var Gx=E((Xx)=>{Object.defineProperty(Xx,"__esModule",{value:!0});var zH0=IG(),EH0=vG(),VH0=bG(),ZH0=pG(),Bx=dG(),UH0=[zH0.default,EH0.default,(0,VH0.default)(),ZH0.default,Bx.metadataVocabulary,Bx.contentVocabulary];Xx.default=UH0});var Wx=E((pI0,AH0)=>{AH0.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var qx=E((aD,FW)=>{Object.defineProperty(aD,"__esModule",{value:!0});aD.MissingRefError=aD.ValidationError=aD.CodeGen=aD.Name=aD.nil=aD.stringify=aD.str=aD._=aD.KeywordCxt=aD.Ajv=void 0;var MH0=PG(),NH0=Gx(),RH0=nG(),Hx=Wx(),CH0=["/properties"],wJ="http://json-schema.org/draft-07/schema";class q9 extends MH0.default{_addVocabularies(){if(super._addVocabularies(),NH0.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(RH0.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let D=this.opts.$data?this.$dataMetaSchema(Hx,CH0):Hx;this.addMetaSchema(D,wJ,!1),this.refs["http://json-schema.org/schema"]=wJ}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(wJ)?wJ:void 0)}}aD.Ajv=q9;FW.exports=aD=q9;FW.exports.Ajv=q9;Object.defineProperty(aD,"__esModule",{value:!0});aD.default=q9;var OH0=DF();Object.defineProperty(aD,"KeywordCxt",{enumerable:!0,get:function(){return OH0.KeywordCxt}});var BF=F0();Object.defineProperty(aD,"_",{enumerable:!0,get:function(){return BF._}});Object.defineProperty(aD,"str",{enumerable:!0,get:function(){return BF.str}});Object.defineProperty(aD,"stringify",{enumerable:!0,get:function(){return BF.stringify}});Object.defineProperty(aD,"nil",{enumerable:!0,get:function(){return BF.nil}});Object.defineProperty(aD,"Name",{enumerable:!0,get:function(){return BF.Name}});Object.defineProperty(aD,"CodeGen",{enumerable:!0,get:function(){return BF.CodeGen}});var wH0=r5();Object.defineProperty(aD,"ValidationError",{enumerable:!0,get:function(){return wH0.default}});var jH0=FF();Object.defineProperty(aD,"MissingRefError",{enumerable:!0,get:function(){return jH0.default}})});var zx=E((Kx)=>{Object.defineProperty(Kx,"__esModule",{value:!0});Kx.formatLimitDefinition=void 0;var IH0=qx(),u1=F0(),u6=u1.operators,jJ={formatMaximum:{okStr:"<=",ok:u6.LTE,fail:u6.GT},formatMinimum:{okStr:">=",ok:u6.GTE,fail:u6.LT},formatExclusiveMaximum:{okStr:"<",ok:u6.LT,fail:u6.GTE},formatExclusiveMinimum:{okStr:">",ok:u6.GT,fail:u6.LTE}},SH0={message:({keyword:D,schemaCode:F})=>u1.str`should be ${jJ[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>u1._`{comparison: ${jJ[D].okStr}, limit: ${F}}`};Kx.formatLimitDefinition={keyword:Object.keys(jJ),type:"string",schemaType:"string",$data:!0,error:SH0,code(D){let{gen:F,data:$,schemaCode:J,keyword:Q,it:Y}=D,{opts:B,self:X}=Y;if(!B.validateFormats)return;let G=new IH0.KeywordCxt(Y,X.RULES.all.format.definition,"format");if(G.$data)H();else q();function H(){let V=F.scopeValue("formats",{ref:X.formats,code:B.code.formats}),z=F.const("fmt",u1._`${V}[${G.schemaCode}]`);D.fail$data((0,u1.or)(u1._`typeof ${z} != "object"`,u1._`${z} instanceof RegExp`,u1._`typeof ${z}.compare != "function"`,K(z)))}function q(){let V=G.schema,z=X.formats[V];if(!z||z===!0)return;if(typeof z!="object"||z instanceof RegExp||typeof z.compare!="function")throw Error(`"${Q}": format "${V}" does not define "compare" function`);let Z=F.scopeValue("formats",{key:V,ref:z,code:B.code.formats?u1._`${B.code.formats}${(0,u1.getProperty)(V)}`:void 0});D.fail$data(K(Z))}function K(V){return u1._`${V}.compare(${$}, ${J}) ${jJ[Q].fail} 0`}},dependencies:["format"]};var kH0=(D)=>{return D.addKeyword(Kx.formatLimitDefinition),D};Kx.default=kH0});var Ux=E((K9,Zx)=>{Object.defineProperty(K9,"__esModule",{value:!0});var XF=Yx(),yH0=zx(),JW=F0(),Ex=new JW.Name("fullFormats"),xH0=new JW.Name("fastFormats"),QW=(D,F={keywords:!0})=>{if(Array.isArray(F))return Vx(D,F,XF.fullFormats,Ex),D;let[$,J]=F.mode==="fast"?[XF.fastFormats,xH0]:[XF.fullFormats,Ex],Q=F.formats||XF.formatNames;if(Vx(D,Q,$,J),F.keywords)(0,yH0.default)(D);return D};QW.get=(D,F="full")=>{let J=(F==="fast"?XF.fastFormats:XF.fullFormats)[D];if(!J)throw Error(`Unknown format "${D}"`);return J};function Vx(D,F,$,J){var Q,Y;(Q=(Y=D.opts.code).formats)!==null&&Q!==void 0||(Y.formats=JW._`require("ajv-formats/dist/formats").${J}`);for(let B of F)D.addFormat(B,$[B])}Zx.exports=K9=QW;Object.defineProperty(K9,"__esModule",{value:!0});K9.default=QW});var _H0=(D,F={})=>{if(typeof D!=="function")throw TypeError(`Expected the first argument to be a function, got \`${typeof D}\``);let{wait:$=0,maxWait:J=Number.POSITIVE_INFINITY,before:Q=!1,after:Y=!0}=F;if($<0||J<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!Q&&!Y)throw Error("Both `before` and `after` are false, function wouldn't be called.");let B,X,G,H=function(...q){let K=this,V=()=>{if(B=void 0,X)clearTimeout(X),X=void 0;if(Y)G=D.apply(K,q)},z=()=>{if(X=void 0,B)clearTimeout(B),B=void 0;if(Y)G=D.apply(K,q)},Z=Q&&!B;if(clearTimeout(B),B=setTimeout(V,$),J>0&&J!==Number.POSITIVE_INFINITY&&!X)X=setTimeout(z,J);if(Z)G=D.apply(K,q);return G};return f5(H,D),H.cancel=()=>{if(B)clearTimeout(B),B=void 0;if(X)clearTimeout(X),X=void 0},H},YW;var Lx=S(()=>{VX();YW=_H0});var z9=E((FS0,Ax)=>{var fH0=Number.MAX_SAFE_INTEGER||9007199254740991,gH0=["major","premajor","minor","preminor","patch","prepatch","prerelease"];Ax.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:fH0,RELEASE_TYPES:gH0,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var E9=E(($S0,Mx)=>{var hH0=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};Mx.exports=hH0});var GF=E((A8,Nx)=>{var{MAX_SAFE_COMPONENT_LENGTH:BW,MAX_SAFE_BUILD_LENGTH:bH0,MAX_LENGTH:uH0}=z9(),mH0=E9();A8=Nx.exports={};var lH0=A8.re=[],pH0=A8.safeRe=[],g=A8.src=[],dH0=A8.safeSrc=[],h=A8.t={},cH0=0,XW="[a-zA-Z0-9-]",nH0=[["\\s",1],["\\d",uH0],[XW,bH0]],iH0=(D)=>{for(let[F,$]of nH0)D=D.split(`${F}*`).join(`${F}{0,${$}}`).split(`${F}+`).join(`${F}{1,${$}}`);return D},J0=(D,F,$)=>{let J=iH0(F),Q=cH0++;mH0(D,Q,F),h[D]=Q,g[Q]=F,dH0[Q]=J,lH0[Q]=new RegExp(F,$?"g":void 0),pH0[Q]=new RegExp(J,$?"g":void 0)};J0("NUMERICIDENTIFIER","0|[1-9]\\d*");J0("NUMERICIDENTIFIERLOOSE","\\d+");J0("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${XW}*`);J0("MAINVERSION",`(${g[h.NUMERICIDENTIFIER]})\\.(${g[h.NUMERICIDENTIFIER]})\\.(${g[h.NUMERICIDENTIFIER]})`);J0("MAINVERSIONLOOSE",`(${g[h.NUMERICIDENTIFIERLOOSE]})\\.(${g[h.NUMERICIDENTIFIERLOOSE]})\\.(${g[h.NUMERICIDENTIFIERLOOSE]})`);J0("PRERELEASEIDENTIFIER",`(?:${g[h.NONNUMERICIDENTIFIER]}|${g[h.NUMERICIDENTIFIER]})`);J0("PRERELEASEIDENTIFIERLOOSE",`(?:${g[h.NONNUMERICIDENTIFIER]}|${g[h.NUMERICIDENTIFIERLOOSE]})`);J0("PRERELEASE",`(?:-(${g[h.PRERELEASEIDENTIFIER]}(?:\\.${g[h.PRERELEASEIDENTIFIER]})*))`);J0("PRERELEASELOOSE",`(?:-?(${g[h.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${g[h.PRERELEASEIDENTIFIERLOOSE]})*))`);J0("BUILDIDENTIFIER",`${XW}+`);J0("BUILD",`(?:\\+(${g[h.BUILDIDENTIFIER]}(?:\\.${g[h.BUILDIDENTIFIER]})*))`);J0("FULLPLAIN",`v?${g[h.MAINVERSION]}${g[h.PRERELEASE]}?${g[h.BUILD]}?`);J0("FULL",`^${g[h.FULLPLAIN]}$`);J0("LOOSEPLAIN",`[v=\\s]*${g[h.MAINVERSIONLOOSE]}${g[h.PRERELEASELOOSE]}?${g[h.BUILD]}?`);J0("LOOSE",`^${g[h.LOOSEPLAIN]}$`);J0("GTLT","((?:<|>)?=?)");J0("XRANGEIDENTIFIERLOOSE",`${g[h.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);J0("XRANGEIDENTIFIER",`${g[h.NUMERICIDENTIFIER]}|x|X|\\*`);J0("XRANGEPLAIN",`[v=\\s]*(${g[h.XRANGEIDENTIFIER]})(?:\\.(${g[h.XRANGEIDENTIFIER]})(?:\\.(${g[h.XRANGEIDENTIFIER]})(?:${g[h.PRERELEASE]})?${g[h.BUILD]}?)?)?`);J0("XRANGEPLAINLOOSE",`[v=\\s]*(${g[h.XRANGEIDENTIFIERLOOSE]})(?:\\.(${g[h.XRANGEIDENTIFIERLOOSE]})(?:\\.(${g[h.XRANGEIDENTIFIERLOOSE]})(?:${g[h.PRERELEASELOOSE]})?${g[h.BUILD]}?)?)?`);J0("XRANGE",`^${g[h.GTLT]}\\s*${g[h.XRANGEPLAIN]}$`);J0("XRANGELOOSE",`^${g[h.GTLT]}\\s*${g[h.XRANGEPLAINLOOSE]}$`);J0("COERCEPLAIN",`(^|[^\\d])(\\d{1,${BW}})(?:\\.(\\d{1,${BW}}))?(?:\\.(\\d{1,${BW}}))?`);J0("COERCE",`${g[h.COERCEPLAIN]}(?:$|[^\\d])`);J0("COERCEFULL",g[h.COERCEPLAIN]+`(?:${g[h.PRERELEASE]})?(?:${g[h.BUILD]})?(?:$|[^\\d])`);J0("COERCERTL",g[h.COERCE],!0);J0("COERCERTLFULL",g[h.COERCEFULL],!0);J0("LONETILDE","(?:~>?)");J0("TILDETRIM",`(\\s*)${g[h.LONETILDE]}\\s+`,!0);A8.tildeTrimReplace="$1~";J0("TILDE",`^${g[h.LONETILDE]}${g[h.XRANGEPLAIN]}$`);J0("TILDELOOSE",`^${g[h.LONETILDE]}${g[h.XRANGEPLAINLOOSE]}$`);J0("LONECARET","(?:\\^)");J0("CARETTRIM",`(\\s*)${g[h.LONECARET]}\\s+`,!0);A8.caretTrimReplace="$1^";J0("CARET",`^${g[h.LONECARET]}${g[h.XRANGEPLAIN]}$`);J0("CARETLOOSE",`^${g[h.LONECARET]}${g[h.XRANGEPLAINLOOSE]}$`);J0("COMPARATORLOOSE",`^${g[h.GTLT]}\\s*(${g[h.LOOSEPLAIN]})$|^$`);J0("COMPARATOR",`^${g[h.GTLT]}\\s*(${g[h.FULLPLAIN]})$|^$`);J0("COMPARATORTRIM",`(\\s*)${g[h.GTLT]}\\s*(${g[h.LOOSEPLAIN]}|${g[h.XRANGEPLAIN]})`,!0);A8.comparatorTrimReplace="$1$2$3";J0("HYPHENRANGE",`^\\s*(${g[h.XRANGEPLAIN]})\\s+-\\s+(${g[h.XRANGEPLAIN]})\\s*$`);J0("HYPHENRANGELOOSE",`^\\s*(${g[h.XRANGEPLAINLOOSE]})\\s+-\\s+(${g[h.XRANGEPLAINLOOSE]})\\s*$`);J0("STAR","(<|>)?=?\\s*\\*");J0("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");J0("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var TJ=E((JS0,Rx)=>{var aH0=Object.freeze({loose:!0}),oH0=Object.freeze({}),sH0=(D)=>{if(!D)return oH0;if(typeof D!=="object")return aH0;return D};Rx.exports=sH0});var GW=E((QS0,wx)=>{var Cx=/^[0-9]+$/,Ox=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let $=Cx.test(D),J=Cx.test(F);if($&&J)D=+D,F=+F;return D===F?0:$&&!J?-1:J&&!$?1:D<F?-1:1},rH0=(D,F)=>Ox(F,D);wx.exports={compareIdentifiers:Ox,rcompareIdentifiers:rH0}});var wD=E((YS0,Tx)=>{var PJ=E9(),{MAX_LENGTH:jx,MAX_SAFE_INTEGER:IJ}=z9(),{safeRe:SJ,t:kJ}=GF(),tH0=TJ(),{compareIdentifiers:WW}=GW();class m1{constructor(D,F){if(F=tH0(F),D instanceof m1)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else D=D.version;else if(typeof D!=="string")throw TypeError(`Invalid version. Must be a string. Got type "${typeof D}".`);if(D.length>jx)throw TypeError(`version is longer than ${jx} characters`);PJ("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let $=D.trim().match(F.loose?SJ[kJ.LOOSE]:SJ[kJ.FULL]);if(!$)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+$[1],this.minor=+$[2],this.patch=+$[3],this.major>IJ||this.major<0)throw TypeError("Invalid major version");if(this.minor>IJ||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>IJ||this.patch<0)throw TypeError("Invalid patch version");if(!$[4])this.prerelease=[];else this.prerelease=$[4].split(".").map((J)=>{if(/^[0-9]+$/.test(J)){let Q=+J;if(Q>=0&&Q<IJ)return Q}return J});this.build=$[5]?$[5].split("."):[],this.format()}format(){if(this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length)this.version+=`-${this.prerelease.join(".")}`;return this.version}toString(){return this.version}compare(D){if(PJ("SemVer.compare",this.version,this.options,D),!(D instanceof m1)){if(typeof D==="string"&&D===this.version)return 0;D=new m1(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof m1))D=new m1(D,this.options);if(this.major<D.major)return-1;if(this.major>D.major)return 1;if(this.minor<D.minor)return-1;if(this.minor>D.minor)return 1;if(this.patch<D.patch)return-1;if(this.patch>D.patch)return 1;return 0}comparePre(D){if(!(D instanceof m1))D=new m1(D,this.options);if(this.prerelease.length&&!D.prerelease.length)return-1;else if(!this.prerelease.length&&D.prerelease.length)return 1;else if(!this.prerelease.length&&!D.prerelease.length)return 0;let F=0;do{let $=this.prerelease[F],J=D.prerelease[F];if(PJ("prerelease compare",F,$,J),$===void 0&&J===void 0)return 0;else if(J===void 0)return 1;else if($===void 0)return-1;else if($===J)continue;else return WW($,J)}while(++F)}compareBuild(D){if(!(D instanceof m1))D=new m1(D,this.options);let F=0;do{let $=this.build[F],J=D.build[F];if(PJ("build compare",F,$,J),$===void 0&&J===void 0)return 0;else if(J===void 0)return 1;else if($===void 0)return-1;else if($===J)continue;else return WW($,J)}while(++F)}inc(D,F,$){if(D.startsWith("pre")){if(!F&&$===!1)throw Error("invalid increment argument: identifier is empty");if(F){let J=`-${F}`.match(this.options.loose?SJ[kJ.PRERELEASELOOSE]:SJ[kJ.PRERELEASE]);if(!J||J[1]!==F)throw Error(`invalid identifier: ${F}`)}}switch(D){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",F,$);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",F,$);break;case"prepatch":this.prerelease.length=0,this.inc("patch",F,$),this.inc("pre",F,$);break;case"prerelease":if(this.prerelease.length===0)this.inc("patch",F,$);this.inc("pre",F,$);break;case"release":if(this.prerelease.length===0)throw Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":if(this.minor!==0||this.patch!==0||this.prerelease.length===0)this.major++;this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":if(this.patch!==0||this.prerelease.length===0)this.minor++;this.patch=0,this.prerelease=[];break;case"patch":if(this.prerelease.length===0)this.patch++;this.prerelease=[];break;case"pre":{let J=Number($)?1:0;if(this.prerelease.length===0)this.prerelease=[J];else{let Q=this.prerelease.length;while(--Q>=0)if(typeof this.prerelease[Q]==="number")this.prerelease[Q]++,Q=-2;if(Q===-1){if(F===this.prerelease.join(".")&&$===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(J)}}if(F){let Q=[F,J];if($===!1)Q=[F];if(WW(this.prerelease[0],F)===0){if(isNaN(this.prerelease[1]))this.prerelease=Q}else this.prerelease=Q}break}default:throw Error(`invalid increment argument: ${D}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}Tx.exports=m1});var w4=E((BS0,Ix)=>{var Px=wD(),eH0=(D,F,$=!1)=>{if(D instanceof Px)return D;try{return new Px(D,F)}catch(J){if(!$)return null;throw J}};Ix.exports=eH0});var kx=E((XS0,Sx)=>{var Dq0=w4(),Fq0=(D,F)=>{let $=Dq0(D,F);return $?$.version:null};Sx.exports=Fq0});var yx=E((GS0,vx)=>{var $q0=w4(),Jq0=(D,F)=>{let $=$q0(D.trim().replace(/^[=v]+/,""),F);return $?$.version:null};vx.exports=Jq0});var fx=E((WS0,_x)=>{var xx=wD(),Qq0=(D,F,$,J,Q)=>{if(typeof $==="string")Q=J,J=$,$=void 0;try{return new xx(D instanceof xx?D.version:D,$).inc(F,J,Q).version}catch(Y){return null}};_x.exports=Qq0});var bx=E((HS0,hx)=>{var gx=w4(),Yq0=(D,F)=>{let $=gx(D,null,!0),J=gx(F,null,!0),Q=$.compare(J);if(Q===0)return null;let Y=Q>0,B=Y?$:J,X=Y?J:$,G=!!B.prerelease.length;if(!!X.prerelease.length&&!G){if(!X.patch&&!X.minor)return"major";if(X.compareMain(B)===0){if(X.minor&&!X.patch)return"minor";return"patch"}}let q=G?"pre":"";if($.major!==J.major)return q+"major";if($.minor!==J.minor)return q+"minor";if($.patch!==J.patch)return q+"patch";return"prerelease"};hx.exports=Yq0});var mx=E((qS0,ux)=>{var Bq0=wD(),Xq0=(D,F)=>new Bq0(D,F).major;ux.exports=Xq0});var px=E((KS0,lx)=>{var Gq0=wD(),Wq0=(D,F)=>new Gq0(D,F).minor;lx.exports=Wq0});var cx=E((zS0,dx)=>{var Hq0=wD(),qq0=(D,F)=>new Hq0(D,F).patch;dx.exports=qq0});var ix=E((ES0,nx)=>{var Kq0=w4(),zq0=(D,F)=>{let $=Kq0(D,F);return $&&$.prerelease.length?$.prerelease:null};nx.exports=zq0});var M1=E((VS0,ox)=>{var ax=wD(),Eq0=(D,F,$)=>new ax(D,$).compare(new ax(F,$));ox.exports=Eq0});var rx=E((ZS0,sx)=>{var Vq0=M1(),Zq0=(D,F,$)=>Vq0(F,D,$);sx.exports=Zq0});var ex=E((US0,tx)=>{var Uq0=M1(),Lq0=(D,F)=>Uq0(D,F,!0);tx.exports=Lq0});var vJ=E((LS0,F_)=>{var D_=wD(),Aq0=(D,F,$)=>{let J=new D_(D,$),Q=new D_(F,$);return J.compare(Q)||J.compareBuild(Q)};F_.exports=Aq0});var J_=E((AS0,$_)=>{var Mq0=vJ(),Nq0=(D,F)=>D.sort(($,J)=>Mq0($,J,F));$_.exports=Nq0});var Y_=E((MS0,Q_)=>{var Rq0=vJ(),Cq0=(D,F)=>D.sort(($,J)=>Rq0(J,$,F));Q_.exports=Cq0});var V9=E((NS0,B_)=>{var Oq0=M1(),wq0=(D,F,$)=>Oq0(D,F,$)>0;B_.exports=wq0});var yJ=E((RS0,X_)=>{var jq0=M1(),Tq0=(D,F,$)=>jq0(D,F,$)<0;X_.exports=Tq0});var HW=E((CS0,G_)=>{var Pq0=M1(),Iq0=(D,F,$)=>Pq0(D,F,$)===0;G_.exports=Iq0});var qW=E((OS0,W_)=>{var Sq0=M1(),kq0=(D,F,$)=>Sq0(D,F,$)!==0;W_.exports=kq0});var xJ=E((wS0,H_)=>{var vq0=M1(),yq0=(D,F,$)=>vq0(D,F,$)>=0;H_.exports=yq0});var _J=E((jS0,q_)=>{var xq0=M1(),_q0=(D,F,$)=>xq0(D,F,$)<=0;q_.exports=_q0});var KW=E((TS0,K_)=>{var fq0=HW(),gq0=qW(),hq0=V9(),bq0=xJ(),uq0=yJ(),mq0=_J(),lq0=(D,F,$,J)=>{switch(F){case"===":if(typeof D==="object")D=D.version;if(typeof $==="object")$=$.version;return D===$;case"!==":if(typeof D==="object")D=D.version;if(typeof $==="object")$=$.version;return D!==$;case"":case"=":case"==":return fq0(D,$,J);case"!=":return gq0(D,$,J);case">":return hq0(D,$,J);case">=":return bq0(D,$,J);case"<":return uq0(D,$,J);case"<=":return mq0(D,$,J);default:throw TypeError(`Invalid operator: ${F}`)}};K_.exports=lq0});var E_=E((PS0,z_)=>{var pq0=wD(),dq0=w4(),{safeRe:fJ,t:gJ}=GF(),cq0=(D,F)=>{if(D instanceof pq0)return D;if(typeof D==="number")D=String(D);if(typeof D!=="string")return null;F=F||{};let $=null;if(!F.rtl)$=D.match(F.includePrerelease?fJ[gJ.COERCEFULL]:fJ[gJ.COERCE]);else{let G=F.includePrerelease?fJ[gJ.COERCERTLFULL]:fJ[gJ.COERCERTL],H;while((H=G.exec(D))&&(!$||$.index+$[0].length!==D.length)){if(!$||H.index+H[0].length!==$.index+$[0].length)$=H;G.lastIndex=H.index+H[1].length+H[2].length}G.lastIndex=-1}if($===null)return null;let J=$[2],Q=$[3]||"0",Y=$[4]||"0",B=F.includePrerelease&&$[5]?`-${$[5]}`:"",X=F.includePrerelease&&$[6]?`+${$[6]}`:"";return dq0(`${J}.${Q}.${Y}${B}${X}`,F)};z_.exports=cq0});var U_=E((IS0,Z_)=>{class V_{constructor(){this.max=1000,this.map=new Map}get(D){let F=this.map.get(D);if(F===void 0)return;else return this.map.delete(D),this.map.set(D,F),F}delete(D){return this.map.delete(D)}set(D,F){if(!this.delete(D)&&F!==void 0){if(this.map.size>=this.max){let J=this.map.keys().next().value;this.delete(J)}this.map.set(D,F)}return this}}Z_.exports=V_});var N1=E((SS0,N_)=>{var nq0=/\s+/g;class Z9{constructor(D,F){if(F=aq0(F),D instanceof Z9)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else return new Z9(D.raw,F);if(D instanceof zW)return this.raw=D.value,this.set=[[D]],this.formatted=void 0,this;if(this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease,this.raw=D.trim().replace(nq0," "),this.set=this.raw.split("||").map(($)=>this.parseRange($.trim())).filter(($)=>$.length),!this.set.length)throw TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let $=this.set[0];if(this.set=this.set.filter((J)=>!A_(J[0])),this.set.length===0)this.set=[$];else if(this.set.length>1){for(let J of this.set)if(J.length===1&&FK0(J[0])){this.set=[J];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let D=0;D<this.set.length;D++){if(D>0)this.formatted+="||";let F=this.set[D];for(let $=0;$<F.length;$++){if($>0)this.formatted+=" ";this.formatted+=F[$].toString().trim()}}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(D){let $=((this.options.includePrerelease&&eq0)|(this.options.loose&&DK0))+":"+D,J=L_.get($);if(J)return J;let Q=this.options.loose,Y=Q?_D[jD.HYPHENRANGELOOSE]:_D[jD.HYPHENRANGE];D=D.replace(Y,qK0(this.options.includePrerelease)),u0("hyphen replace",D),D=D.replace(_D[jD.COMPARATORTRIM],sq0),u0("comparator trim",D),D=D.replace(_D[jD.TILDETRIM],rq0),u0("tilde trim",D),D=D.replace(_D[jD.CARETTRIM],tq0),u0("caret trim",D);let B=D.split(" ").map((q)=>$K0(q,this.options)).join(" ").split(/\s+/).map((q)=>HK0(q,this.options));if(Q)B=B.filter((q)=>{return u0("loose invalid filter",q,this.options),!!q.match(_D[jD.COMPARATORLOOSE])});u0("range list",B);let X=new Map,G=B.map((q)=>new zW(q,this.options));for(let q of G){if(A_(q))return[q];X.set(q.value,q)}if(X.size>1&&X.has(""))X.delete("");let H=[...X.values()];return L_.set($,H),H}intersects(D,F){if(!(D instanceof Z9))throw TypeError("a Range is required");return this.set.some(($)=>{return M_($,F)&&D.set.some((J)=>{return M_(J,F)&&$.every((Q)=>{return J.every((Y)=>{return Q.intersects(Y,F)})})})})}test(D){if(!D)return!1;if(typeof D==="string")try{D=new oq0(D,this.options)}catch(F){return!1}for(let F=0;F<this.set.length;F++)if(KK0(this.set[F],D,this.options))return!0;return!1}}N_.exports=Z9;var iq0=U_(),L_=new iq0,aq0=TJ(),zW=U9(),u0=E9(),oq0=wD(),{safeRe:_D,t:jD,comparatorTrimReplace:sq0,tildeTrimReplace:rq0,caretTrimReplace:tq0}=GF(),{FLAG_INCLUDE_PRERELEASE:eq0,FLAG_LOOSE:DK0}=z9(),A_=(D)=>D.value==="<0.0.0-0",FK0=(D)=>D.value==="",M_=(D,F)=>{let $=!0,J=D.slice(),Q=J.pop();while($&&J.length)$=J.every((Y)=>{return Q.intersects(Y,F)}),Q=J.pop();return $},$K0=(D,F)=>{return D=D.replace(_D[jD.BUILD],""),u0("comp",D,F),D=YK0(D,F),u0("caret",D),D=JK0(D,F),u0("tildes",D),D=XK0(D,F),u0("xrange",D),D=WK0(D,F),u0("stars",D),D},fD=(D)=>!D||D.toLowerCase()==="x"||D==="*",JK0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>QK0($,F)).join(" ")},QK0=(D,F)=>{let $=F.loose?_D[jD.TILDELOOSE]:_D[jD.TILDE];return D.replace($,(J,Q,Y,B,X)=>{u0("tilde",D,J,Q,Y,B,X);let G;if(fD(Q))G="";else if(fD(Y))G=`>=${Q}.0.0 <${+Q+1}.0.0-0`;else if(fD(B))G=`>=${Q}.${Y}.0 <${Q}.${+Y+1}.0-0`;else if(X)u0("replaceTilde pr",X),G=`>=${Q}.${Y}.${B}-${X} <${Q}.${+Y+1}.0-0`;else G=`>=${Q}.${Y}.${B} <${Q}.${+Y+1}.0-0`;return u0("tilde return",G),G})},YK0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>BK0($,F)).join(" ")},BK0=(D,F)=>{u0("caret",D,F);let $=F.loose?_D[jD.CARETLOOSE]:_D[jD.CARET],J=F.includePrerelease?"-0":"";return D.replace($,(Q,Y,B,X,G)=>{u0("caret",D,Q,Y,B,X,G);let H;if(fD(Y))H="";else if(fD(B))H=`>=${Y}.0.0${J} <${+Y+1}.0.0-0`;else if(fD(X))if(Y==="0")H=`>=${Y}.${B}.0${J} <${Y}.${+B+1}.0-0`;else H=`>=${Y}.${B}.0${J} <${+Y+1}.0.0-0`;else if(G)if(u0("replaceCaret pr",G),Y==="0")if(B==="0")H=`>=${Y}.${B}.${X}-${G} <${Y}.${B}.${+X+1}-0`;else H=`>=${Y}.${B}.${X}-${G} <${Y}.${+B+1}.0-0`;else H=`>=${Y}.${B}.${X}-${G} <${+Y+1}.0.0-0`;else if(u0("no pr"),Y==="0")if(B==="0")H=`>=${Y}.${B}.${X}${J} <${Y}.${B}.${+X+1}-0`;else H=`>=${Y}.${B}.${X}${J} <${Y}.${+B+1}.0-0`;else H=`>=${Y}.${B}.${X} <${+Y+1}.0.0-0`;return u0("caret return",H),H})},XK0=(D,F)=>{return u0("replaceXRanges",D,F),D.split(/\s+/).map(($)=>GK0($,F)).join(" ")},GK0=(D,F)=>{D=D.trim();let $=F.loose?_D[jD.XRANGELOOSE]:_D[jD.XRANGE];return D.replace($,(J,Q,Y,B,X,G)=>{u0("xRange",D,J,Q,Y,B,X,G);let H=fD(Y),q=H||fD(B),K=q||fD(X),V=K;if(Q==="="&&V)Q="";if(G=F.includePrerelease?"-0":"",H)if(Q===">"||Q==="<")J="<0.0.0-0";else J="*";else if(Q&&V){if(q)B=0;if(X=0,Q===">")if(Q=">=",q)Y=+Y+1,B=0,X=0;else B=+B+1,X=0;else if(Q==="<=")if(Q="<",q)Y=+Y+1;else B=+B+1;if(Q==="<")G="-0";J=`${Q+Y}.${B}.${X}${G}`}else if(q)J=`>=${Y}.0.0${G} <${+Y+1}.0.0-0`;else if(K)J=`>=${Y}.${B}.0${G} <${Y}.${+B+1}.0-0`;return u0("xRange return",J),J})},WK0=(D,F)=>{return u0("replaceStars",D,F),D.trim().replace(_D[jD.STAR],"")},HK0=(D,F)=>{return u0("replaceGTE0",D,F),D.trim().replace(_D[F.includePrerelease?jD.GTE0PRE:jD.GTE0],"")},qK0=(D)=>(F,$,J,Q,Y,B,X,G,H,q,K,V)=>{if(fD(J))$="";else if(fD(Q))$=`>=${J}.0.0${D?"-0":""}`;else if(fD(Y))$=`>=${J}.${Q}.0${D?"-0":""}`;else if(B)$=`>=${$}`;else $=`>=${$}${D?"-0":""}`;if(fD(H))G="";else if(fD(q))G=`<${+H+1}.0.0-0`;else if(fD(K))G=`<${H}.${+q+1}.0-0`;else if(V)G=`<=${H}.${q}.${K}-${V}`;else if(D)G=`<${H}.${q}.${+K+1}-0`;else G=`<=${G}`;return`${$} ${G}`.trim()},KK0=(D,F,$)=>{for(let J=0;J<D.length;J++)if(!D[J].test(F))return!1;if(F.prerelease.length&&!$.includePrerelease){for(let J=0;J<D.length;J++){if(u0(D[J].semver),D[J].semver===zW.ANY)continue;if(D[J].semver.prerelease.length>0){let Q=D[J].semver;if(Q.major===F.major&&Q.minor===F.minor&&Q.patch===F.patch)return!0}}return!1}return!0}});var U9=E((kS0,T_)=>{var L9=Symbol("SemVer ANY");class hJ{static get ANY(){return L9}constructor(D,F){if(F=R_(F),D instanceof hJ)if(D.loose===!!F.loose)return D;else D=D.value;if(D=D.trim().split(/\s+/).join(" "),VW("comparator",D,F),this.options=F,this.loose=!!F.loose,this.parse(D),this.semver===L9)this.value="";else this.value=this.operator+this.semver.version;VW("comp",this)}parse(D){let F=this.options.loose?C_[O_.COMPARATORLOOSE]:C_[O_.COMPARATOR],$=D.match(F);if(!$)throw TypeError(`Invalid comparator: ${D}`);if(this.operator=$[1]!==void 0?$[1]:"",this.operator==="=")this.operator="";if(!$[2])this.semver=L9;else this.semver=new w_($[2],this.options.loose)}toString(){return this.value}test(D){if(VW("Comparator.test",D,this.options.loose),this.semver===L9||D===L9)return!0;if(typeof D==="string")try{D=new w_(D,this.options)}catch(F){return!1}return EW(D,this.operator,this.semver,this.options)}intersects(D,F){if(!(D instanceof hJ))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new j_(D.value,F).test(this.value)}else if(D.operator===""){if(D.value==="")return!0;return new j_(this.value,F).test(D.semver)}if(F=R_(F),F.includePrerelease&&(this.value==="<0.0.0-0"||D.value==="<0.0.0-0"))return!1;if(!F.includePrerelease&&(this.value.startsWith("<0.0.0")||D.value.startsWith("<0.0.0")))return!1;if(this.operator.startsWith(">")&&D.operator.startsWith(">"))return!0;if(this.operator.startsWith("<")&&D.operator.startsWith("<"))return!0;if(this.semver.version===D.semver.version&&this.operator.includes("=")&&D.operator.includes("="))return!0;if(EW(this.semver,"<",D.semver,F)&&this.operator.startsWith(">")&&D.operator.startsWith("<"))return!0;if(EW(this.semver,">",D.semver,F)&&this.operator.startsWith("<")&&D.operator.startsWith(">"))return!0;return!1}}T_.exports=hJ;var R_=TJ(),{safeRe:C_,t:O_}=GF(),EW=KW(),VW=E9(),w_=wD(),j_=N1()});var A9=E((vS0,P_)=>{var zK0=N1(),EK0=(D,F,$)=>{try{F=new zK0(F,$)}catch(J){return!1}return F.test(D)};P_.exports=EK0});var S_=E((yS0,I_)=>{var VK0=N1(),ZK0=(D,F)=>new VK0(D,F).set.map(($)=>$.map((J)=>J.value).join(" ").trim().split(" "));I_.exports=ZK0});var v_=E((xS0,k_)=>{var UK0=wD(),LK0=N1(),AK0=(D,F,$)=>{let J=null,Q=null,Y=null;try{Y=new LK0(F,$)}catch(B){return null}return D.forEach((B)=>{if(Y.test(B)){if(!J||Q.compare(B)===-1)J=B,Q=new UK0(J,$)}}),J};k_.exports=AK0});var x_=E((_S0,y_)=>{var MK0=wD(),NK0=N1(),RK0=(D,F,$)=>{let J=null,Q=null,Y=null;try{Y=new NK0(F,$)}catch(B){return null}return D.forEach((B)=>{if(Y.test(B)){if(!J||Q.compare(B)===1)J=B,Q=new MK0(J,$)}}),J};y_.exports=RK0});var g_=E((fS0,f_)=>{var ZW=wD(),CK0=N1(),__=V9(),OK0=(D,F)=>{D=new CK0(D,F);let $=new ZW("0.0.0");if(D.test($))return $;if($=new ZW("0.0.0-0"),D.test($))return $;$=null;for(let J=0;J<D.set.length;++J){let Q=D.set[J],Y=null;if(Q.forEach((B)=>{let X=new ZW(B.semver.version);switch(B.operator){case">":if(X.prerelease.length===0)X.patch++;else X.prerelease.push(0);X.raw=X.format();case"":case">=":if(!Y||__(X,Y))Y=X;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${B.operator}`)}}),Y&&(!$||__($,Y)))$=Y}if($&&D.test($))return $;return null};f_.exports=OK0});var b_=E((gS0,h_)=>{var wK0=N1(),jK0=(D,F)=>{try{return new wK0(D,F).range||"*"}catch($){return null}};h_.exports=jK0});var bJ=E((hS0,p_)=>{var TK0=wD(),l_=U9(),{ANY:PK0}=l_,IK0=N1(),SK0=A9(),u_=V9(),m_=yJ(),kK0=_J(),vK0=xJ(),yK0=(D,F,$,J)=>{D=new TK0(D,J),F=new IK0(F,J);let Q,Y,B,X,G;switch($){case">":Q=u_,Y=kK0,B=m_,X=">",G=">=";break;case"<":Q=m_,Y=vK0,B=u_,X="<",G="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(SK0(D,F,J))return!1;for(let H=0;H<F.set.length;++H){let q=F.set[H],K=null,V=null;if(q.forEach((z)=>{if(z.semver===PK0)z=new l_(">=0.0.0");if(K=K||z,V=V||z,Q(z.semver,K.semver,J))K=z;else if(B(z.semver,V.semver,J))V=z}),K.operator===X||K.operator===G)return!1;if((!V.operator||V.operator===X)&&Y(D,V.semver))return!1;else if(V.operator===G&&B(D,V.semver))return!1}return!0};p_.exports=yK0});var c_=E((bS0,d_)=>{var xK0=bJ(),_K0=(D,F,$)=>xK0(D,F,">",$);d_.exports=_K0});var i_=E((uS0,n_)=>{var fK0=bJ(),gK0=(D,F,$)=>fK0(D,F,"<",$);n_.exports=gK0});var s_=E((mS0,o_)=>{var a_=N1(),hK0=(D,F,$)=>{return D=new a_(D,$),F=new a_(F,$),D.intersects(F,$)};o_.exports=hK0});var t_=E((lS0,r_)=>{var bK0=A9(),uK0=M1();r_.exports=(D,F,$)=>{let J=[],Q=null,Y=null,B=D.sort((q,K)=>uK0(q,K,$));for(let q of B)if(bK0(q,F,$)){if(Y=q,!Q)Q=q}else{if(Y)J.push([Q,Y]);Y=null,Q=null}if(Q)J.push([Q,null]);let X=[];for(let[q,K]of J)if(q===K)X.push(q);else if(!K&&q===B[0])X.push("*");else if(!K)X.push(`>=${q}`);else if(q===B[0])X.push(`<=${K}`);else X.push(`${q} - ${K}`);let G=X.join(" || "),H=typeof F.raw==="string"?F.raw:String(F);return G.length<H.length?G:F}});var Qf=E((pS0,Jf)=>{var e_=N1(),LW=U9(),{ANY:UW}=LW,M9=A9(),AW=M1(),mK0=(D,F,$={})=>{if(D===F)return!0;D=new e_(D,$),F=new e_(F,$);let J=!1;D:for(let Q of D.set){for(let Y of F.set){let B=pK0(Q,Y,$);if(J=J||B!==null,B)continue D}if(J)return!1}return!0},lK0=[new LW(">=0.0.0-0")],Df=[new LW(">=0.0.0")],pK0=(D,F,$)=>{if(D===F)return!0;if(D.length===1&&D[0].semver===UW)if(F.length===1&&F[0].semver===UW)return!0;else if($.includePrerelease)D=lK0;else D=Df;if(F.length===1&&F[0].semver===UW)if($.includePrerelease)return!0;else F=Df;let J=new Set,Q,Y;for(let z of D)if(z.operator===">"||z.operator===">=")Q=Ff(Q,z,$);else if(z.operator==="<"||z.operator==="<=")Y=$f(Y,z,$);else J.add(z.semver);if(J.size>1)return null;let B;if(Q&&Y){if(B=AW(Q.semver,Y.semver,$),B>0)return null;else if(B===0&&(Q.operator!==">="||Y.operator!=="<="))return null}for(let z of J){if(Q&&!M9(z,String(Q),$))return null;if(Y&&!M9(z,String(Y),$))return null;for(let Z of F)if(!M9(z,String(Z),$))return!1;return!0}let X,G,H,q,K=Y&&!$.includePrerelease&&Y.semver.prerelease.length?Y.semver:!1,V=Q&&!$.includePrerelease&&Q.semver.prerelease.length?Q.semver:!1;if(K&&K.prerelease.length===1&&Y.operator==="<"&&K.prerelease[0]===0)K=!1;for(let z of F){if(q=q||z.operator===">"||z.operator===">=",H=H||z.operator==="<"||z.operator==="<=",Q){if(V){if(z.semver.prerelease&&z.semver.prerelease.length&&z.semver.major===V.major&&z.semver.minor===V.minor&&z.semver.patch===V.patch)V=!1}if(z.operator===">"||z.operator===">="){if(X=Ff(Q,z,$),X===z&&X!==Q)return!1}else if(Q.operator===">="&&!M9(Q.semver,String(z),$))return!1}if(Y){if(K){if(z.semver.prerelease&&z.semver.prerelease.length&&z.semver.major===K.major&&z.semver.minor===K.minor&&z.semver.patch===K.patch)K=!1}if(z.operator==="<"||z.operator==="<="){if(G=$f(Y,z,$),G===z&&G!==Y)return!1}else if(Y.operator==="<="&&!M9(Y.semver,String(z),$))return!1}if(!z.operator&&(Y||Q)&&B!==0)return!1}if(Q&&H&&!Y&&B!==0)return!1;if(Y&&q&&!Q&&B!==0)return!1;if(V||K)return!1;return!0},Ff=(D,F,$)=>{if(!D)return F;let J=AW(D.semver,F.semver,$);return J>0?D:J<0?F:F.operator===">"&&D.operator===">="?F:D},$f=(D,F,$)=>{if(!D)return F;let J=AW(D.semver,F.semver,$);return J<0?D:J>0?F:F.operator==="<"&&D.operator==="<="?F:D};Jf.exports=mK0});var Gf=E((dS0,Xf)=>{var MW=GF(),Yf=z9(),dK0=wD(),Bf=GW(),cK0=w4(),nK0=kx(),iK0=yx(),aK0=fx(),oK0=bx(),sK0=mx(),rK0=px(),tK0=cx(),eK0=ix(),Dz0=M1(),Fz0=rx(),$z0=ex(),Jz0=vJ(),Qz0=J_(),Yz0=Y_(),Bz0=V9(),Xz0=yJ(),Gz0=HW(),Wz0=qW(),Hz0=xJ(),qz0=_J(),Kz0=KW(),zz0=E_(),Ez0=U9(),Vz0=N1(),Zz0=A9(),Uz0=S_(),Lz0=v_(),Az0=x_(),Mz0=g_(),Nz0=b_(),Rz0=bJ(),Cz0=c_(),Oz0=i_(),wz0=s_(),jz0=t_(),Tz0=Qf();Xf.exports={parse:cK0,valid:nK0,clean:iK0,inc:aK0,diff:oK0,major:sK0,minor:rK0,patch:tK0,prerelease:eK0,compare:Dz0,rcompare:Fz0,compareLoose:$z0,compareBuild:Jz0,sort:Qz0,rsort:Yz0,gt:Bz0,lt:Xz0,eq:Gz0,neq:Wz0,gte:Hz0,lte:qz0,cmp:Kz0,coerce:zz0,Comparator:Ez0,Range:Vz0,satisfies:Zz0,toComparators:Uz0,maxSatisfying:Lz0,minSatisfying:Az0,minVersion:Mz0,validRange:Nz0,outside:Rz0,gtr:Cz0,ltr:Oz0,intersects:wz0,simplifyRange:jz0,subset:Tz0,SemVer:dK0,re:MW.re,src:MW.src,tokens:MW.t,SEMVER_SPEC_VERSION:Yf.SEMVER_SPEC_VERSION,RELEASE_TYPES:Yf.RELEASE_TYPES,compareIdentifiers:Bf.compareIdentifiers,rcompareIdentifiers:Bf.rcompareIdentifiers}});function Hf(D,F,$){if(!D)return!1;if(D.constructor===F)return!0;return Pz0.call(D)===$}function qf(D){return Hf(D,Uint8Array,"[object Uint8Array]")}function Iz0(D){return Hf(D,ArrayBuffer,"[object ArrayBuffer]")}function Sz0(D){return qf(D)||Iz0(D)}function kz0(D){if(!qf(D))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof D}\``)}function vz0(D){if(!Sz0(D))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof D}\``)}function NW(D,F){if(D.length===0)return new Uint8Array(0);F??=D.reduce((Q,Y)=>Q+Y.length,0);let $=new Uint8Array(F),J=0;for(let Q of D)kz0(Q),$.set(Q,J),J+=Q.length;return $}function RW(D,F="utf8"){return vz0(D),Wf[F]??=new globalThis.TextDecoder(F),Wf[F].decode(D)}function yz0(D){if(typeof D!=="string")throw TypeError(`Expected \`string\`, got \`${typeof D}\``)}function uJ(D){return yz0(D),xz0.encode(D)}var Pz0,Wf,xz0,cS0;var Kf=S(()=>{Pz0=Object.prototype.toString;Wf={utf8:new globalThis.TextDecoder("utf8")};xz0=new globalThis.TextEncoder;cS0=Array.from({length:256},(D,F)=>F.toString(16).padStart(2,"0"))});import{isDeepStrictEqual as _z0}from"util";import zf from"process";import j4 from"fs";import Ef from"path";import N9 from"crypto";import fz0 from"assert";var Zf,Uf,T4,gz0,Vf="aes-256-cbc",WF=()=>Object.create(null),hz0=(D)=>D!==void 0&&D!==null,bz0=(D,F)=>{let $=new Set(["undefined","symbol","function"]),J=typeof F;if($.has(J))throw TypeError(`Setting a value of type \`${J}\` for key \`${D}\` is not allowed as it's not supported by JSON`)},mJ="__internal__",CW,lJ;var Lf=S(()=>{wP();TP();JI();Lx();Kf();Zf=t(oy(),1),Uf=t(Ux(),1),T4=t(Gf(),1),gz0=Uf.default.default,CW=`${mJ}.migrations.version`;lJ=class lJ{path;events;#$;#F;#D;#Q={};constructor(D={}){let F={configName:"config",fileExtension:"json",projectSuffix:"nodejs",clearInvalidConfig:!1,accessPropertiesByDotNotation:!0,configFileMode:438,...D};if(!F.cwd){if(!F.projectName)throw Error("Please specify the `projectName` option.");F.cwd=yX(F.projectName,{suffix:F.projectSuffix}).config}if(this.#D=F,F.schema??F.ajvOptions??F.rootSchema){if(F.schema&&typeof F.schema!=="object")throw TypeError("The `schema` option must be an object.");let Y=new Zf.Ajv2020({allErrors:!0,useDefaults:!0,...F.ajvOptions});gz0(Y);let B={...F.rootSchema,type:"object",properties:F.schema};this.#$=Y.compile(B);for(let[X,G]of Object.entries(F.schema??{}))if(G?.default)this.#Q[X]=G.default}if(F.defaults)this.#Q={...this.#Q,...F.defaults};if(F.serialize)this._serialize=F.serialize;if(F.deserialize)this._deserialize=F.deserialize;this.events=new EventTarget,this.#F=F.encryptionKey;let $=F.fileExtension?`.${F.fileExtension}`:"";this.path=Ef.resolve(F.cwd,`${F.configName??"config"}${$}`);let J=this.store,Q=Object.assign(WF(),F.defaults,J);if(F.migrations){if(!F.projectVersion)throw Error("Please specify the `projectVersion` option.");this._migrate(F.migrations,F.projectVersion,F.beforeEachMigration)}this._validate(Q);try{fz0.deepEqual(J,Q)}catch{this.store=Q}if(F.watch)this._watch()}get(D,F){if(this.#D.accessPropertiesByDotNotation)return this._get(D,F);let{store:$}=this;return D in $?$[D]:F}set(D,F){if(typeof D!=="string"&&typeof D!=="object")throw TypeError(`Expected \`key\` to be of type \`string\` or \`object\`, got ${typeof D}`);if(typeof D!=="object"&&F===void 0)throw TypeError("Use `delete()` to clear values");if(this._containsReservedKey(D))throw TypeError(`Please don't use the ${mJ} key, as it's used to manage this module internal operations.`);let{store:$}=this,J=(Q,Y)=>{if(bz0(Q,Y),this.#D.accessPropertiesByDotNotation)SX($,Q,Y);else $[Q]=Y};if(typeof D==="object"){let Q=D;for(let[Y,B]of Object.entries(Q))J(Y,B)}else J(D,F);this.store=$}has(D){if(this.#D.accessPropertiesByDotNotation)return OP(this.store,D);return D in this.store}reset(...D){for(let F of D)if(hz0(this.#Q[F]))this.set(F,this.#Q[F])}delete(D){let{store:F}=this;if(this.#D.accessPropertiesByDotNotation)CP(F,D);else delete F[D];this.store=F}clear(){this.store=WF();for(let D of Object.keys(this.#Q))this.reset(D)}onDidChange(D,F){if(typeof D!=="string")throw TypeError(`Expected \`key\` to be of type \`string\`, got ${typeof D}`);if(typeof F!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof F}`);return this._handleChange(()=>this.get(D),F)}onDidAnyChange(D){if(typeof D!=="function")throw TypeError(`Expected \`callback\` to be of type \`function\`, got ${typeof D}`);return this._handleChange(()=>this.store,D)}get size(){return Object.keys(this.store).length}get store(){try{let D=j4.readFileSync(this.path,this.#F?null:"utf8"),F=this._encryptData(D),$=this._deserialize(F);return this._validate($),Object.assign(WF(),$)}catch(D){if(D?.code==="ENOENT")return this._ensureDirectory(),WF();if(this.#D.clearInvalidConfig&&D.name==="SyntaxError")return WF();throw D}}set store(D){this._ensureDirectory(),this._validate(D),this._write(D),this.events.dispatchEvent(new Event("change"))}*[Symbol.iterator](){for(let[D,F]of Object.entries(this.store))yield[D,F]}_encryptData(D){if(!this.#F)return typeof D==="string"?D:RW(D);try{let F=D.slice(0,16),$=N9.pbkdf2Sync(this.#F,F.toString(),1e4,32,"sha512"),J=N9.createDecipheriv(Vf,$,F),Q=D.slice(17),Y=typeof Q==="string"?uJ(Q):Q;return RW(NW([J.update(Y),J.final()]))}catch{}return D.toString()}_handleChange(D,F){let $=D(),J=()=>{let Q=$,Y=D();if(_z0(Y,Q))return;$=Y,F.call(this,Y,Q)};return this.events.addEventListener("change",J),()=>{this.events.removeEventListener("change",J)}}_deserialize=(D)=>JSON.parse(D);_serialize=(D)=>JSON.stringify(D,void 0,"\t");_validate(D){if(!this.#$)return;if(this.#$(D)||!this.#$.errors)return;let $=this.#$.errors.map(({instancePath:J,message:Q=""})=>`\`${J.slice(1)}\` ${Q}`);throw Error("Config schema violation: "+$.join("; "))}_ensureDirectory(){j4.mkdirSync(Ef.dirname(this.path),{recursive:!0})}_write(D){let F=this._serialize(D);if(this.#F){let $=N9.randomBytes(16),J=N9.pbkdf2Sync(this.#F,$.toString(),1e4,32,"sha512"),Q=N9.createCipheriv(Vf,J,$);F=NW([$,uJ(":"),Q.update(uJ(F)),Q.final()])}if(zf.env.SNAP)j4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});else try{dX(this.path,F,{mode:this.#D.configFileMode})}catch($){if($?.code==="EXDEV"){j4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});return}throw $}}_watch(){if(this._ensureDirectory(),!j4.existsSync(this.path))this._write(WF());if(zf.platform==="win32")j4.watch(this.path,{persistent:!1},YW(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else j4.watchFile(this.path,{persistent:!1},YW(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(D,F,$){let J=this._get(CW,"0.0.0"),Q=Object.keys(D).filter((B)=>this._shouldPerformMigration(B,J,F)),Y={...this.store};for(let B of Q)try{if($)$(this,{fromVersion:J,toVersion:B,finalVersion:F,versions:Q});let X=D[B];X?.(this),this._set(CW,B),J=B,Y={...this.store}}catch(X){throw this.store=Y,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${X}`)}if(this._isVersionInRangeFormat(J)||!T4.default.eq(J,F))this._set(CW,F)}_containsReservedKey(D){if(typeof D==="object"){if(Object.keys(D)[0]===mJ)return!0}if(typeof D!=="string")return!1;if(this.#D.accessPropertiesByDotNotation){if(D.startsWith(`${mJ}.`))return!0;return!1}return!1}_isVersionInRangeFormat(D){return T4.default.clean(D)===null}_shouldPerformMigration(D,F,$){if(this._isVersionInRangeFormat(D)){if(F!=="0.0.0"&&T4.default.satisfies(F,D))return!1;return T4.default.satisfies($,D)}if(T4.default.lte(D,F))return!1;if(T4.default.gt(D,$))return!1;return!0}_get(D,F){return RP(this.store,D,F)}_set(D,F){let{store:$}=this;SX($,D,F),this.store=$}}});var V0,OW,k,M8=(D)=>{switch(typeof D){case"undefined":return k.undefined;case"string":return k.string;case"number":return Number.isNaN(D)?k.nan:k.number;case"boolean":return k.boolean;case"function":return k.function;case"bigint":return k.bigint;case"symbol":return k.symbol;case"object":if(Array.isArray(D))return k.array;if(D===null)return k.null;if(D.then&&typeof D.then==="function"&&D.catch&&typeof D.catch==="function")return k.promise;if(typeof Map<"u"&&D instanceof Map)return k.map;if(typeof Set<"u"&&D instanceof Set)return k.set;if(typeof Date<"u"&&D instanceof Date)return k.date;return k.object;default:return k.unknown}};var R9=S(()=>{(function(D){D.assertEqual=(Q)=>{};function F(Q){}D.assertIs=F;function $(Q){throw Error()}D.assertNever=$,D.arrayToEnum=(Q)=>{let Y={};for(let B of Q)Y[B]=B;return Y},D.getValidEnumValues=(Q)=>{let Y=D.objectKeys(Q).filter((X)=>typeof Q[Q[X]]!=="number"),B={};for(let X of Y)B[X]=Q[X];return D.objectValues(B)},D.objectValues=(Q)=>{return D.objectKeys(Q).map(function(Y){return Q[Y]})},D.objectKeys=typeof Object.keys==="function"?(Q)=>Object.keys(Q):(Q)=>{let Y=[];for(let B in Q)if(Object.prototype.hasOwnProperty.call(Q,B))Y.push(B);return Y},D.find=(Q,Y)=>{for(let B of Q)if(Y(B))return B;return},D.isInteger=typeof Number.isInteger==="function"?(Q)=>Number.isInteger(Q):(Q)=>typeof Q==="number"&&Number.isFinite(Q)&&Math.floor(Q)===Q;function J(Q,Y=" | "){return Q.map((B)=>typeof B==="string"?`'${B}'`:B).join(Y)}D.joinValues=J,D.jsonStringifyReplacer=(Q,Y)=>{if(typeof Y==="bigint")return Y.toString();return Y}})(V0||(V0={}));(function(D){D.mergeShapes=(F,$)=>{return{...F,...$}}})(OW||(OW={}));k=V0.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var P,uz0=(D)=>{return JSON.stringify(D,null,2).replace(/"([^"]+)":/g,"$1:")},oD;var pJ=S(()=>{R9();P=V0.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);oD=class oD extends Error{get errors(){return this.issues}constructor(D){super();this.issues=[],this.addIssue=($)=>{this.issues=[...this.issues,$]},this.addIssues=($=[])=>{this.issues=[...this.issues,...$]};let F=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,F);else this.__proto__=F;this.name="ZodError",this.issues=D}format(D){let F=D||function(Q){return Q.message},$={_errors:[]},J=(Q)=>{for(let Y of Q.issues)if(Y.code==="invalid_union")Y.unionErrors.map(J);else if(Y.code==="invalid_return_type")J(Y.returnTypeError);else if(Y.code==="invalid_arguments")J(Y.argumentsError);else if(Y.path.length===0)$._errors.push(F(Y));else{let B=$,X=0;while(X<Y.path.length){let G=Y.path[X];if(X!==Y.path.length-1)B[G]=B[G]||{_errors:[]};else B[G]=B[G]||{_errors:[]},B[G]._errors.push(F(Y));B=B[G],X++}}};return J(this),$}static assert(D){if(!(D instanceof oD))throw Error(`Not a ZodError: ${D}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,V0.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(D=(F)=>F.message){let F={},$=[];for(let J of this.issues)if(J.path.length>0){let Q=J.path[0];F[Q]=F[Q]||[],F[Q].push(D(J))}else $.push(D(J));return{formErrors:$,fieldErrors:F}}get formErrors(){return this.flatten()}};oD.create=(D)=>{return new oD(D)}});var mz0=(D,F)=>{let $;switch(D.code){case P.invalid_type:if(D.received===k.undefined)$="Required";else $=`Expected ${D.expected}, received ${D.received}`;break;case P.invalid_literal:$=`Invalid literal value, expected ${JSON.stringify(D.expected,V0.jsonStringifyReplacer)}`;break;case P.unrecognized_keys:$=`Unrecognized key(s) in object: ${V0.joinValues(D.keys,", ")}`;break;case P.invalid_union:$="Invalid input";break;case P.invalid_union_discriminator:$=`Invalid discriminator value. Expected ${V0.joinValues(D.options)}`;break;case P.invalid_enum_value:$=`Invalid enum value. Expected ${V0.joinValues(D.options)}, received '${D.received}'`;break;case P.invalid_arguments:$="Invalid function arguments";break;case P.invalid_return_type:$="Invalid function return type";break;case P.invalid_date:$="Invalid date";break;case P.invalid_string:if(typeof D.validation==="object")if("includes"in D.validation){if($=`Invalid input: must include "${D.validation.includes}"`,typeof D.validation.position==="number")$=`${$} at one or more positions greater than or equal to ${D.validation.position}`}else if("startsWith"in D.validation)$=`Invalid input: must start with "${D.validation.startsWith}"`;else if("endsWith"in D.validation)$=`Invalid input: must end with "${D.validation.endsWith}"`;else V0.assertNever(D.validation);else if(D.validation!=="regex")$=`Invalid ${D.validation}`;else $="Invalid";break;case P.too_small:if(D.type==="array")$=`Array must contain ${D.exact?"exactly":D.inclusive?"at least":"more than"} ${D.minimum} element(s)`;else if(D.type==="string")$=`String must contain ${D.exact?"exactly":D.inclusive?"at least":"over"} ${D.minimum} character(s)`;else if(D.type==="number")$=`Number must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${D.minimum}`;else if(D.type==="bigint")$=`Number must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${D.minimum}`;else if(D.type==="date")$=`Date must be ${D.exact?"exactly equal to ":D.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(D.minimum))}`;else $="Invalid input";break;case P.too_big:if(D.type==="array")$=`Array must contain ${D.exact?"exactly":D.inclusive?"at most":"less than"} ${D.maximum} element(s)`;else if(D.type==="string")$=`String must contain ${D.exact?"exactly":D.inclusive?"at most":"under"} ${D.maximum} character(s)`;else if(D.type==="number")$=`Number must be ${D.exact?"exactly":D.inclusive?"less than or equal to":"less than"} ${D.maximum}`;else if(D.type==="bigint")$=`BigInt must be ${D.exact?"exactly":D.inclusive?"less than or equal to":"less than"} ${D.maximum}`;else if(D.type==="date")$=`Date must be ${D.exact?"exactly":D.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(D.maximum))}`;else $="Invalid input";break;case P.custom:$="Invalid input";break;case P.invalid_intersection_types:$="Intersection results could not be merged";break;case P.not_multiple_of:$=`Number must be a multiple of ${D.multipleOf}`;break;case P.not_finite:$="Number must be finite";break;default:$=F.defaultError,V0.assertNever(D)}return{message:$}},l8;var wW=S(()=>{pJ();R9();l8=mz0});function lz0(D){Af=D}function HF(){return Af}var Af;var dJ=S(()=>{wW();Af=l8});function y(D,F){let $=HF(),J=C9({issueData:F,data:D.data,path:D.path,errorMaps:[D.common.contextualErrorMap,D.schemaErrorMap,$,$===l8?void 0:l8].filter((Q)=>!!Q)});D.common.issues.push(J)}class AD{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(D,F){let $=[];for(let J of F){if(J.status==="aborted")return i;if(J.status==="dirty")D.dirty();$.push(J.value)}return{status:D.value,value:$}}static async mergeObjectAsync(D,F){let $=[];for(let J of F){let Q=await J.key,Y=await J.value;$.push({key:Q,value:Y})}return AD.mergeObjectSync(D,$)}static mergeObjectSync(D,F){let $={};for(let J of F){let{key:Q,value:Y}=J;if(Q.status==="aborted")return i;if(Y.status==="aborted")return i;if(Q.status==="dirty")D.dirty();if(Y.status==="dirty")D.dirty();if(Q.value!=="__proto__"&&(typeof Y.value<"u"||J.alwaysSet))$[Q.value]=Y.value}return{status:D.value,value:$}}}var C9=(D)=>{let{data:F,path:$,errorMaps:J,issueData:Q}=D,Y=[...$,...Q.path||[]],B={...Q,path:Y};if(Q.message!==void 0)return{...Q,path:Y,message:Q.message};let X="",G=J.filter((H)=>!!H).slice().reverse();for(let H of G)X=H(B,{data:F,defaultError:X}).message;return{...Q,path:Y,message:X}},pz0,i,P4=(D)=>({status:"dirty",value:D}),TD=(D)=>({status:"valid",value:D}),cJ=(D)=>D.status==="aborted",nJ=(D)=>D.status==="dirty",m6=(D)=>D.status==="valid",qF=(D)=>typeof Promise<"u"&&D instanceof Promise;var jW=S(()=>{dJ();wW();pz0=[];i=Object.freeze({status:"aborted"})});var Mf=()=>{};var l;var Nf=S(()=>{(function(D){D.errToObj=(F)=>typeof F==="string"?{message:F}:F||{},D.toString=(F)=>typeof F==="string"?F:F?.message})(l||(l={}))});class c1{constructor(D,F,$,J){this._cachedPath=[],this.parent=D,this.data=F,this._path=$,this._key=J}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}function X0(D){if(!D)return{};let{errorMap:F,invalid_type_error:$,required_error:J,description:Q}=D;if(F&&($||J))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(F)return{errorMap:F,description:Q};return{errorMap:(B,X)=>{let{message:G}=D;if(B.code==="invalid_enum_value")return{message:G??X.defaultError};if(typeof X.data>"u")return{message:G??J??X.defaultError};if(B.code!=="invalid_type")return{message:X.defaultError};return{message:G??$??X.defaultError}},description:Q}}class q0{get description(){return this._def.description}_getType(D){return M8(D.data)}_getOrReturnCtx(D,F){return F||{common:D.parent.common,data:D.data,parsedType:M8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}_processInputParams(D){return{status:new AD,ctx:{common:D.parent.common,data:D.data,parsedType:M8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}}_parseSync(D){let F=this._parse(D);if(qF(F))throw Error("Synchronous parse encountered promise.");return F}_parseAsync(D){let F=this._parse(D);return Promise.resolve(F)}parse(D,F){let $=this.safeParse(D,F);if($.success)return $.data;throw $.error}safeParse(D,F){let $={common:{issues:[],async:F?.async??!1,contextualErrorMap:F?.errorMap},path:F?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:M8(D)},J=this._parseSync({data:D,path:$.path,parent:$});return Rf($,J)}"~validate"(D){let F={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:M8(D)};if(!this["~standard"].async)try{let $=this._parseSync({data:D,path:[],parent:F});return m6($)?{value:$.value}:{issues:F.common.issues}}catch($){if($?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;F.common={issues:[],async:!0}}return this._parseAsync({data:D,path:[],parent:F}).then(($)=>m6($)?{value:$.value}:{issues:F.common.issues})}async parseAsync(D,F){let $=await this.safeParseAsync(D,F);if($.success)return $.data;throw $.error}async safeParseAsync(D,F){let $={common:{issues:[],contextualErrorMap:F?.errorMap,async:!0},path:F?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:M8(D)},J=this._parse({data:D,path:$.path,parent:$}),Q=await(qF(J)?J:Promise.resolve(J));return Rf($,Q)}refine(D,F){let $=(J)=>{if(typeof F==="string"||typeof F>"u")return{message:F};else if(typeof F==="function")return F(J);else return F};return this._refinement((J,Q)=>{let Y=D(J),B=()=>Q.addIssue({code:P.custom,...$(J)});if(typeof Promise<"u"&&Y instanceof Promise)return Y.then((X)=>{if(!X)return B(),!1;else return!0});if(!Y)return B(),!1;else return!0})}refinement(D,F){return this._refinement(($,J)=>{if(!D($))return J.addIssue(typeof F==="function"?F($,J):F),!1;else return!0})}_refinement(D){return new n1({schema:this,typeName:o.ZodEffects,effect:{type:"refinement",refinement:D}})}superRefine(D){return this._refinement(D)}constructor(D){this.spa=this.safeParseAsync,this._def=D,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(F)=>this["~validate"](F)}}optional(){return d1.create(this,this._def)}nullable(){return d8.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return p1.create(this)}promise(){return v4.create(this,this._def)}or(D){return UF.create([this,D],this._def)}and(D){return LF.create(this,D,this._def)}transform(D){return new n1({...X0(this._def),schema:this,typeName:o.ZodEffects,effect:{type:"transform",transform:D}})}default(D){let F=typeof D==="function"?D:()=>D;return new RF({...X0(this._def),innerType:this,defaultValue:F,typeName:o.ZodDefault})}brand(){return new aJ({typeName:o.ZodBranded,type:this,...X0(this._def)})}catch(D){let F=typeof D==="function"?D:()=>D;return new CF({...X0(this._def),innerType:this,catchValue:F,typeName:o.ZodCatch})}describe(D){return new this.constructor({...this._def,description:D})}pipe(D){return I9.create(this,D)}readonly(){return OF.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function wf(D){let F="[0-5]\\d";if(D.precision)F=`${F}\\.\\d{${D.precision}}`;else if(D.precision==null)F=`${F}(\\.\\d+)?`;let $=D.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${F})${$}`}function BE0(D){return new RegExp(`^${wf(D)}$`)}function jf(D){let F=`${Of}T${wf(D)}`,$=[];if($.push(D.local?"Z?":"Z"),D.offset)$.push("([+-]\\d{2}:?\\d{2})");return F=`${F}(${$.join("|")})`,new RegExp(`^${F}$`)}function XE0(D,F){if((F==="v4"||!F)&&ez0.test(D))return!0;if((F==="v6"||!F)&&FE0.test(D))return!0;return!1}function GE0(D,F){if(!oz0.test(D))return!1;try{let[$]=D.split(".");if(!$)return!1;let J=$.replace(/-/g,"+").replace(/_/g,"/").padEnd($.length+(4-$.length%4)%4,"="),Q=JSON.parse(atob(J));if(typeof Q!=="object"||Q===null)return!1;if("typ"in Q&&Q?.typ!=="JWT")return!1;if(!Q.alg)return!1;if(F&&Q.alg!==F)return!1;return!0}catch{return!1}}function WE0(D,F){if((F==="v4"||!F)&&DE0.test(D))return!0;if((F==="v6"||!F)&&$E0.test(D))return!0;return!1}function HE0(D,F){let $=(D.toString().split(".")[1]||"").length,J=(F.toString().split(".")[1]||"").length,Q=$>J?$:J,Y=Number.parseInt(D.toFixed(Q).replace(".","")),B=Number.parseInt(F.toFixed(Q).replace(".",""));return Y%B/10**Q}function KF(D){if(D instanceof s0){let F={};for(let $ in D.shape){let J=D.shape[$];F[$]=d1.create(KF(J))}return new s0({...D._def,shape:()=>F})}else if(D instanceof p1)return new p1({...D._def,type:KF(D.element)});else if(D instanceof d1)return d1.create(KF(D.unwrap()));else if(D instanceof d8)return d8.create(KF(D.unwrap()));else if(D instanceof R8)return R8.create(D.items.map((F)=>KF(F)));else return D}function PW(D,F){let $=M8(D),J=M8(F);if(D===F)return{valid:!0,data:D};else if($===k.object&&J===k.object){let Q=V0.objectKeys(F),Y=V0.objectKeys(D).filter((X)=>Q.indexOf(X)!==-1),B={...D,...F};for(let X of Y){let G=PW(D[X],F[X]);if(!G.valid)return{valid:!1};B[X]=G.data}return{valid:!0,data:B}}else if($===k.array&&J===k.array){if(D.length!==F.length)return{valid:!1};let Q=[];for(let Y=0;Y<D.length;Y++){let B=D[Y],X=F[Y],G=PW(B,X);if(!G.valid)return{valid:!1};Q.push(G.data)}return{valid:!0,data:Q}}else if($===k.date&&J===k.date&&+D===+F)return{valid:!0,data:D};else return{valid:!1}}function Tf(D,F){return new c6({values:D,typeName:o.ZodEnum,...X0(F)})}function Cf(D,F){let $=typeof D==="function"?D(F):typeof D==="string"?{message:D}:D;return typeof $==="string"?{message:$}:$}function Pf(D,F={},$){if(D)return S4.create().superRefine((J,Q)=>{let Y=D(J);if(Y instanceof Promise)return Y.then((B)=>{if(!B){let X=Cf(F,J),G=X.fatal??$??!0;Q.addIssue({code:"custom",...X,fatal:G})}});if(!Y){let B=Cf(F,J),X=B.fatal??$??!0;Q.addIssue({code:"custom",...B,fatal:X})}return});return S4.create()}var Rf=(D,F)=>{if(m6(F))return{success:!0,data:F.value};else{if(!D.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let $=new oD(D.common.issues);return this._error=$,this._error}}}},dz0,cz0,nz0,iz0,az0,oz0,sz0,rz0,tz0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",TW,ez0,DE0,FE0,$E0,JE0,QE0,Of="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",YE0,l1,p6,d6,EF,I4,O9,VF,ZF,S4,l6,N8,w9,p1,s0,UF,p8=(D)=>{if(D instanceof AF)return p8(D.schema);else if(D instanceof n1)return p8(D.innerType());else if(D instanceof MF)return[D.value];else if(D instanceof c6)return D.options;else if(D instanceof NF)return V0.objectValues(D.enum);else if(D instanceof RF)return p8(D._def.innerType);else if(D instanceof VF)return[void 0];else if(D instanceof ZF)return[null];else if(D instanceof d1)return[void 0,...p8(D.unwrap())];else if(D instanceof d8)return[null,...p8(D.unwrap())];else if(D instanceof aJ)return p8(D.unwrap());else if(D instanceof OF)return p8(D.unwrap());else if(D instanceof CF)return p8(D._def.innerType);else return[]},iJ,LF,R8,j9,T9,k4,zF,AF,MF,c6,NF,v4,n1,d1,d8,RF,CF,P9,qE0,aJ,I9,OF,KE0,o,zE0=(D,F={message:`Input not instance of ${D.name}`})=>Pf(($)=>$ instanceof D,F),If,Sf,EE0,VE0,kf,ZE0,UE0,LE0,AE0,ME0,NE0,RE0,CE0,OE0,wE0,jE0,TE0,PE0,IE0,SE0,kE0,vE0,yE0,xE0,_E0,fE0,gE0,hE0,bE0,uE0,mE0,lE0,pE0,dE0,cE0=()=>If().optional(),nE0=()=>Sf().optional(),iE0=()=>kf().optional(),aE0,oE0;var vf=S(()=>{pJ();dJ();Nf();jW();R9();dz0=/^c[^\s-]{8,}$/i,cz0=/^[0-9a-z]+$/,nz0=/^[0-9A-HJKMNP-TV-Z]{26}$/i,iz0=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,az0=/^[a-z0-9_-]{21}$/i,oz0=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,sz0=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,rz0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ez0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,DE0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,FE0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,$E0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,JE0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,QE0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,YE0=new RegExp(`^${Of}$`);l1=class l1 extends q0{_parse(D){if(this._def.coerce)D.data=String(D.data);if(this._getType(D)!==k.string){let Q=this._getOrReturnCtx(D);return y(Q,{code:P.invalid_type,expected:k.string,received:Q.parsedType}),i}let $=new AD,J=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if(D.data.length<Q.value)J=this._getOrReturnCtx(D,J),y(J,{code:P.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),$.dirty()}else if(Q.kind==="max"){if(D.data.length>Q.value)J=this._getOrReturnCtx(D,J),y(J,{code:P.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),$.dirty()}else if(Q.kind==="length"){let Y=D.data.length>Q.value,B=D.data.length<Q.value;if(Y||B){if(J=this._getOrReturnCtx(D,J),Y)y(J,{code:P.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});else if(B)y(J,{code:P.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});$.dirty()}}else if(Q.kind==="email"){if(!rz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"email",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="emoji"){if(!TW)TW=new RegExp(tz0,"u");if(!TW.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"emoji",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="uuid"){if(!iz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"uuid",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="nanoid"){if(!az0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"nanoid",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid"){if(!dz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"cuid",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid2"){if(!cz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"cuid2",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ulid"){if(!nz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"ulid",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="url")try{new URL(D.data)}catch{J=this._getOrReturnCtx(D,J),y(J,{validation:"url",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="regex"){if(Q.regex.lastIndex=0,!Q.regex.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"regex",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="trim")D.data=D.data.trim();else if(Q.kind==="includes"){if(!D.data.includes(Q.value,Q.position))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:{includes:Q.value,position:Q.position},message:Q.message}),$.dirty()}else if(Q.kind==="toLowerCase")D.data=D.data.toLowerCase();else if(Q.kind==="toUpperCase")D.data=D.data.toUpperCase();else if(Q.kind==="startsWith"){if(!D.data.startsWith(Q.value))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:{startsWith:Q.value},message:Q.message}),$.dirty()}else if(Q.kind==="endsWith"){if(!D.data.endsWith(Q.value))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:{endsWith:Q.value},message:Q.message}),$.dirty()}else if(Q.kind==="datetime"){if(!jf(Q).test(D.data))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:"datetime",message:Q.message}),$.dirty()}else if(Q.kind==="date"){if(!YE0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:"date",message:Q.message}),$.dirty()}else if(Q.kind==="time"){if(!BE0(Q).test(D.data))J=this._getOrReturnCtx(D,J),y(J,{code:P.invalid_string,validation:"time",message:Q.message}),$.dirty()}else if(Q.kind==="duration"){if(!sz0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"duration",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ip"){if(!XE0(D.data,Q.version))J=this._getOrReturnCtx(D,J),y(J,{validation:"ip",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="jwt"){if(!GE0(D.data,Q.alg))J=this._getOrReturnCtx(D,J),y(J,{validation:"jwt",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cidr"){if(!WE0(D.data,Q.version))J=this._getOrReturnCtx(D,J),y(J,{validation:"cidr",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64"){if(!JE0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"base64",code:P.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64url"){if(!QE0.test(D.data))J=this._getOrReturnCtx(D,J),y(J,{validation:"base64url",code:P.invalid_string,message:Q.message}),$.dirty()}else V0.assertNever(Q);return{status:$.value,value:D.data}}_regex(D,F,$){return this.refinement((J)=>D.test(J),{validation:F,code:P.invalid_string,...l.errToObj($)})}_addCheck(D){return new l1({...this._def,checks:[...this._def.checks,D]})}email(D){return this._addCheck({kind:"email",...l.errToObj(D)})}url(D){return this._addCheck({kind:"url",...l.errToObj(D)})}emoji(D){return this._addCheck({kind:"emoji",...l.errToObj(D)})}uuid(D){return this._addCheck({kind:"uuid",...l.errToObj(D)})}nanoid(D){return this._addCheck({kind:"nanoid",...l.errToObj(D)})}cuid(D){return this._addCheck({kind:"cuid",...l.errToObj(D)})}cuid2(D){return this._addCheck({kind:"cuid2",...l.errToObj(D)})}ulid(D){return this._addCheck({kind:"ulid",...l.errToObj(D)})}base64(D){return this._addCheck({kind:"base64",...l.errToObj(D)})}base64url(D){return this._addCheck({kind:"base64url",...l.errToObj(D)})}jwt(D){return this._addCheck({kind:"jwt",...l.errToObj(D)})}ip(D){return this._addCheck({kind:"ip",...l.errToObj(D)})}cidr(D){return this._addCheck({kind:"cidr",...l.errToObj(D)})}datetime(D){if(typeof D==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:D});return this._addCheck({kind:"datetime",precision:typeof D?.precision>"u"?null:D?.precision,offset:D?.offset??!1,local:D?.local??!1,...l.errToObj(D?.message)})}date(D){return this._addCheck({kind:"date",message:D})}time(D){if(typeof D==="string")return this._addCheck({kind:"time",precision:null,message:D});return this._addCheck({kind:"time",precision:typeof D?.precision>"u"?null:D?.precision,...l.errToObj(D?.message)})}duration(D){return this._addCheck({kind:"duration",...l.errToObj(D)})}regex(D,F){return this._addCheck({kind:"regex",regex:D,...l.errToObj(F)})}includes(D,F){return this._addCheck({kind:"includes",value:D,position:F?.position,...l.errToObj(F?.message)})}startsWith(D,F){return this._addCheck({kind:"startsWith",value:D,...l.errToObj(F)})}endsWith(D,F){return this._addCheck({kind:"endsWith",value:D,...l.errToObj(F)})}min(D,F){return this._addCheck({kind:"min",value:D,...l.errToObj(F)})}max(D,F){return this._addCheck({kind:"max",value:D,...l.errToObj(F)})}length(D,F){return this._addCheck({kind:"length",value:D,...l.errToObj(F)})}nonempty(D){return this.min(1,l.errToObj(D))}trim(){return new l1({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new l1({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new l1({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((D)=>D.kind==="datetime")}get isDate(){return!!this._def.checks.find((D)=>D.kind==="date")}get isTime(){return!!this._def.checks.find((D)=>D.kind==="time")}get isDuration(){return!!this._def.checks.find((D)=>D.kind==="duration")}get isEmail(){return!!this._def.checks.find((D)=>D.kind==="email")}get isURL(){return!!this._def.checks.find((D)=>D.kind==="url")}get isEmoji(){return!!this._def.checks.find((D)=>D.kind==="emoji")}get isUUID(){return!!this._def.checks.find((D)=>D.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((D)=>D.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((D)=>D.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((D)=>D.kind==="cuid2")}get isULID(){return!!this._def.checks.find((D)=>D.kind==="ulid")}get isIP(){return!!this._def.checks.find((D)=>D.kind==="ip")}get isCIDR(){return!!this._def.checks.find((D)=>D.kind==="cidr")}get isBase64(){return!!this._def.checks.find((D)=>D.kind==="base64")}get isBase64url(){return!!this._def.checks.find((D)=>D.kind==="base64url")}get minLength(){let D=null;for(let F of this._def.checks)if(F.kind==="min"){if(D===null||F.value>D)D=F.value}return D}get maxLength(){let D=null;for(let F of this._def.checks)if(F.kind==="max"){if(D===null||F.value<D)D=F.value}return D}};l1.create=(D)=>{return new l1({checks:[],typeName:o.ZodString,coerce:D?.coerce??!1,...X0(D)})};p6=class p6 extends q0{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(D){if(this._def.coerce)D.data=Number(D.data);if(this._getType(D)!==k.number){let Q=this._getOrReturnCtx(D);return y(Q,{code:P.invalid_type,expected:k.number,received:Q.parsedType}),i}let $=void 0,J=new AD;for(let Q of this._def.checks)if(Q.kind==="int"){if(!V0.isInteger(D.data))$=this._getOrReturnCtx(D,$),y($,{code:P.invalid_type,expected:"integer",received:"float",message:Q.message}),J.dirty()}else if(Q.kind==="min"){if(Q.inclusive?D.data<Q.value:D.data<=Q.value)$=this._getOrReturnCtx(D,$),y($,{code:P.too_small,minimum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),J.dirty()}else if(Q.kind==="max"){if(Q.inclusive?D.data>Q.value:D.data>=Q.value)$=this._getOrReturnCtx(D,$),y($,{code:P.too_big,maximum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),J.dirty()}else if(Q.kind==="multipleOf"){if(HE0(D.data,Q.value)!==0)$=this._getOrReturnCtx(D,$),y($,{code:P.not_multiple_of,multipleOf:Q.value,message:Q.message}),J.dirty()}else if(Q.kind==="finite"){if(!Number.isFinite(D.data))$=this._getOrReturnCtx(D,$),y($,{code:P.not_finite,message:Q.message}),J.dirty()}else V0.assertNever(Q);return{status:J.value,value:D.data}}gte(D,F){return this.setLimit("min",D,!0,l.toString(F))}gt(D,F){return this.setLimit("min",D,!1,l.toString(F))}lte(D,F){return this.setLimit("max",D,!0,l.toString(F))}lt(D,F){return this.setLimit("max",D,!1,l.toString(F))}setLimit(D,F,$,J){return new p6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:l.toString(J)}]})}_addCheck(D){return new p6({...this._def,checks:[...this._def.checks,D]})}int(D){return this._addCheck({kind:"int",message:l.toString(D)})}positive(D){return this._addCheck({kind:"min",value:0,inclusive:!1,message:l.toString(D)})}negative(D){return this._addCheck({kind:"max",value:0,inclusive:!1,message:l.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:0,inclusive:!0,message:l.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:0,inclusive:!0,message:l.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:l.toString(F)})}finite(D){return this._addCheck({kind:"finite",message:l.toString(D)})}safe(D){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:l.toString(D)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:l.toString(D)})}get minValue(){let D=null;for(let F of this._def.checks)if(F.kind==="min"){if(D===null||F.value>D)D=F.value}return D}get maxValue(){let D=null;for(let F of this._def.checks)if(F.kind==="max"){if(D===null||F.value<D)D=F.value}return D}get isInt(){return!!this._def.checks.find((D)=>D.kind==="int"||D.kind==="multipleOf"&&V0.isInteger(D.value))}get isFinite(){let D=null,F=null;for(let $ of this._def.checks)if($.kind==="finite"||$.kind==="int"||$.kind==="multipleOf")return!0;else if($.kind==="min"){if(F===null||$.value>F)F=$.value}else if($.kind==="max"){if(D===null||$.value<D)D=$.value}return Number.isFinite(F)&&Number.isFinite(D)}};p6.create=(D)=>{return new p6({checks:[],typeName:o.ZodNumber,coerce:D?.coerce||!1,...X0(D)})};d6=class d6 extends q0{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(D){if(this._def.coerce)try{D.data=BigInt(D.data)}catch{return this._getInvalidInput(D)}if(this._getType(D)!==k.bigint)return this._getInvalidInput(D);let $=void 0,J=new AD;for(let Q of this._def.checks)if(Q.kind==="min"){if(Q.inclusive?D.data<Q.value:D.data<=Q.value)$=this._getOrReturnCtx(D,$),y($,{code:P.too_small,type:"bigint",minimum:Q.value,inclusive:Q.inclusive,message:Q.message}),J.dirty()}else if(Q.kind==="max"){if(Q.inclusive?D.data>Q.value:D.data>=Q.value)$=this._getOrReturnCtx(D,$),y($,{code:P.too_big,type:"bigint",maximum:Q.value,inclusive:Q.inclusive,message:Q.message}),J.dirty()}else if(Q.kind==="multipleOf"){if(D.data%Q.value!==BigInt(0))$=this._getOrReturnCtx(D,$),y($,{code:P.not_multiple_of,multipleOf:Q.value,message:Q.message}),J.dirty()}else V0.assertNever(Q);return{status:J.value,value:D.data}}_getInvalidInput(D){let F=this._getOrReturnCtx(D);return y(F,{code:P.invalid_type,expected:k.bigint,received:F.parsedType}),i}gte(D,F){return this.setLimit("min",D,!0,l.toString(F))}gt(D,F){return this.setLimit("min",D,!1,l.toString(F))}lte(D,F){return this.setLimit("max",D,!0,l.toString(F))}lt(D,F){return this.setLimit("max",D,!1,l.toString(F))}setLimit(D,F,$,J){return new d6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:l.toString(J)}]})}_addCheck(D){return new d6({...this._def,checks:[...this._def.checks,D]})}positive(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:l.toString(D)})}negative(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:l.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:l.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:l.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:l.toString(F)})}get minValue(){let D=null;for(let F of this._def.checks)if(F.kind==="min"){if(D===null||F.value>D)D=F.value}return D}get maxValue(){let D=null;for(let F of this._def.checks)if(F.kind==="max"){if(D===null||F.value<D)D=F.value}return D}};d6.create=(D)=>{return new d6({checks:[],typeName:o.ZodBigInt,coerce:D?.coerce??!1,...X0(D)})};EF=class EF extends q0{_parse(D){if(this._def.coerce)D.data=Boolean(D.data);if(this._getType(D)!==k.boolean){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.boolean,received:$.parsedType}),i}return TD(D.data)}};EF.create=(D)=>{return new EF({typeName:o.ZodBoolean,coerce:D?.coerce||!1,...X0(D)})};I4=class I4 extends q0{_parse(D){if(this._def.coerce)D.data=new Date(D.data);if(this._getType(D)!==k.date){let Q=this._getOrReturnCtx(D);return y(Q,{code:P.invalid_type,expected:k.date,received:Q.parsedType}),i}if(Number.isNaN(D.data.getTime())){let Q=this._getOrReturnCtx(D);return y(Q,{code:P.invalid_date}),i}let $=new AD,J=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if(D.data.getTime()<Q.value)J=this._getOrReturnCtx(D,J),y(J,{code:P.too_small,message:Q.message,inclusive:!0,exact:!1,minimum:Q.value,type:"date"}),$.dirty()}else if(Q.kind==="max"){if(D.data.getTime()>Q.value)J=this._getOrReturnCtx(D,J),y(J,{code:P.too_big,message:Q.message,inclusive:!0,exact:!1,maximum:Q.value,type:"date"}),$.dirty()}else V0.assertNever(Q);return{status:$.value,value:new Date(D.data.getTime())}}_addCheck(D){return new I4({...this._def,checks:[...this._def.checks,D]})}min(D,F){return this._addCheck({kind:"min",value:D.getTime(),message:l.toString(F)})}max(D,F){return this._addCheck({kind:"max",value:D.getTime(),message:l.toString(F)})}get minDate(){let D=null;for(let F of this._def.checks)if(F.kind==="min"){if(D===null||F.value>D)D=F.value}return D!=null?new Date(D):null}get maxDate(){let D=null;for(let F of this._def.checks)if(F.kind==="max"){if(D===null||F.value<D)D=F.value}return D!=null?new Date(D):null}};I4.create=(D)=>{return new I4({checks:[],coerce:D?.coerce||!1,typeName:o.ZodDate,...X0(D)})};O9=class O9 extends q0{_parse(D){if(this._getType(D)!==k.symbol){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.symbol,received:$.parsedType}),i}return TD(D.data)}};O9.create=(D)=>{return new O9({typeName:o.ZodSymbol,...X0(D)})};VF=class VF extends q0{_parse(D){if(this._getType(D)!==k.undefined){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.undefined,received:$.parsedType}),i}return TD(D.data)}};VF.create=(D)=>{return new VF({typeName:o.ZodUndefined,...X0(D)})};ZF=class ZF extends q0{_parse(D){if(this._getType(D)!==k.null){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.null,received:$.parsedType}),i}return TD(D.data)}};ZF.create=(D)=>{return new ZF({typeName:o.ZodNull,...X0(D)})};S4=class S4 extends q0{constructor(){super(...arguments);this._any=!0}_parse(D){return TD(D.data)}};S4.create=(D)=>{return new S4({typeName:o.ZodAny,...X0(D)})};l6=class l6 extends q0{constructor(){super(...arguments);this._unknown=!0}_parse(D){return TD(D.data)}};l6.create=(D)=>{return new l6({typeName:o.ZodUnknown,...X0(D)})};N8=class N8 extends q0{_parse(D){let F=this._getOrReturnCtx(D);return y(F,{code:P.invalid_type,expected:k.never,received:F.parsedType}),i}};N8.create=(D)=>{return new N8({typeName:o.ZodNever,...X0(D)})};w9=class w9 extends q0{_parse(D){if(this._getType(D)!==k.undefined){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.void,received:$.parsedType}),i}return TD(D.data)}};w9.create=(D)=>{return new w9({typeName:o.ZodVoid,...X0(D)})};p1=class p1 extends q0{_parse(D){let{ctx:F,status:$}=this._processInputParams(D),J=this._def;if(F.parsedType!==k.array)return y(F,{code:P.invalid_type,expected:k.array,received:F.parsedType}),i;if(J.exactLength!==null){let Y=F.data.length>J.exactLength.value,B=F.data.length<J.exactLength.value;if(Y||B)y(F,{code:Y?P.too_big:P.too_small,minimum:B?J.exactLength.value:void 0,maximum:Y?J.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:J.exactLength.message}),$.dirty()}if(J.minLength!==null){if(F.data.length<J.minLength.value)y(F,{code:P.too_small,minimum:J.minLength.value,type:"array",inclusive:!0,exact:!1,message:J.minLength.message}),$.dirty()}if(J.maxLength!==null){if(F.data.length>J.maxLength.value)y(F,{code:P.too_big,maximum:J.maxLength.value,type:"array",inclusive:!0,exact:!1,message:J.maxLength.message}),$.dirty()}if(F.common.async)return Promise.all([...F.data].map((Y,B)=>{return J.type._parseAsync(new c1(F,Y,F.path,B))})).then((Y)=>{return AD.mergeArray($,Y)});let Q=[...F.data].map((Y,B)=>{return J.type._parseSync(new c1(F,Y,F.path,B))});return AD.mergeArray($,Q)}get element(){return this._def.type}min(D,F){return new p1({...this._def,minLength:{value:D,message:l.toString(F)}})}max(D,F){return new p1({...this._def,maxLength:{value:D,message:l.toString(F)}})}length(D,F){return new p1({...this._def,exactLength:{value:D,message:l.toString(F)}})}nonempty(D){return this.min(1,D)}};p1.create=(D,F)=>{return new p1({type:D,minLength:null,maxLength:null,exactLength:null,typeName:o.ZodArray,...X0(F)})};s0=class s0 extends q0{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let D=this._def.shape(),F=V0.objectKeys(D);return this._cached={shape:D,keys:F},this._cached}_parse(D){if(this._getType(D)!==k.object){let G=this._getOrReturnCtx(D);return y(G,{code:P.invalid_type,expected:k.object,received:G.parsedType}),i}let{status:$,ctx:J}=this._processInputParams(D),{shape:Q,keys:Y}=this._getCached(),B=[];if(!(this._def.catchall instanceof N8&&this._def.unknownKeys==="strip")){for(let G in J.data)if(!Y.includes(G))B.push(G)}let X=[];for(let G of Y){let H=Q[G],q=J.data[G];X.push({key:{status:"valid",value:G},value:H._parse(new c1(J,q,J.path,G)),alwaysSet:G in J.data})}if(this._def.catchall instanceof N8){let G=this._def.unknownKeys;if(G==="passthrough")for(let H of B)X.push({key:{status:"valid",value:H},value:{status:"valid",value:J.data[H]}});else if(G==="strict"){if(B.length>0)y(J,{code:P.unrecognized_keys,keys:B}),$.dirty()}else if(G==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let G=this._def.catchall;for(let H of B){let q=J.data[H];X.push({key:{status:"valid",value:H},value:G._parse(new c1(J,q,J.path,H)),alwaysSet:H in J.data})}}if(J.common.async)return Promise.resolve().then(async()=>{let G=[];for(let H of X){let q=await H.key,K=await H.value;G.push({key:q,value:K,alwaysSet:H.alwaysSet})}return G}).then((G)=>{return AD.mergeObjectSync($,G)});else return AD.mergeObjectSync($,X)}get shape(){return this._def.shape()}strict(D){return l.errToObj,new s0({...this._def,unknownKeys:"strict",...D!==void 0?{errorMap:(F,$)=>{let J=this._def.errorMap?.(F,$).message??$.defaultError;if(F.code==="unrecognized_keys")return{message:l.errToObj(D).message??J};return{message:J}}}:{}})}strip(){return new s0({...this._def,unknownKeys:"strip"})}passthrough(){return new s0({...this._def,unknownKeys:"passthrough"})}extend(D){return new s0({...this._def,shape:()=>({...this._def.shape(),...D})})}merge(D){return new s0({unknownKeys:D._def.unknownKeys,catchall:D._def.catchall,shape:()=>({...this._def.shape(),...D._def.shape()}),typeName:o.ZodObject})}setKey(D,F){return this.augment({[D]:F})}catchall(D){return new s0({...this._def,catchall:D})}pick(D){let F={};for(let $ of V0.objectKeys(D))if(D[$]&&this.shape[$])F[$]=this.shape[$];return new s0({...this._def,shape:()=>F})}omit(D){let F={};for(let $ of V0.objectKeys(this.shape))if(!D[$])F[$]=this.shape[$];return new s0({...this._def,shape:()=>F})}deepPartial(){return KF(this)}partial(D){let F={};for(let $ of V0.objectKeys(this.shape)){let J=this.shape[$];if(D&&!D[$])F[$]=J;else F[$]=J.optional()}return new s0({...this._def,shape:()=>F})}required(D){let F={};for(let $ of V0.objectKeys(this.shape))if(D&&!D[$])F[$]=this.shape[$];else{let Q=this.shape[$];while(Q instanceof d1)Q=Q._def.innerType;F[$]=Q}return new s0({...this._def,shape:()=>F})}keyof(){return Tf(V0.objectKeys(this.shape))}};s0.create=(D,F)=>{return new s0({shape:()=>D,unknownKeys:"strip",catchall:N8.create(),typeName:o.ZodObject,...X0(F)})};s0.strictCreate=(D,F)=>{return new s0({shape:()=>D,unknownKeys:"strict",catchall:N8.create(),typeName:o.ZodObject,...X0(F)})};s0.lazycreate=(D,F)=>{return new s0({shape:D,unknownKeys:"strip",catchall:N8.create(),typeName:o.ZodObject,...X0(F)})};UF=class UF extends q0{_parse(D){let{ctx:F}=this._processInputParams(D),$=this._def.options;function J(Q){for(let B of Q)if(B.result.status==="valid")return B.result;for(let B of Q)if(B.result.status==="dirty")return F.common.issues.push(...B.ctx.common.issues),B.result;let Y=Q.map((B)=>new oD(B.ctx.common.issues));return y(F,{code:P.invalid_union,unionErrors:Y}),i}if(F.common.async)return Promise.all($.map(async(Q)=>{let Y={...F,common:{...F.common,issues:[]},parent:null};return{result:await Q._parseAsync({data:F.data,path:F.path,parent:Y}),ctx:Y}})).then(J);else{let Q=void 0,Y=[];for(let X of $){let G={...F,common:{...F.common,issues:[]},parent:null},H=X._parseSync({data:F.data,path:F.path,parent:G});if(H.status==="valid")return H;else if(H.status==="dirty"&&!Q)Q={result:H,ctx:G};if(G.common.issues.length)Y.push(G.common.issues)}if(Q)return F.common.issues.push(...Q.ctx.common.issues),Q.result;let B=Y.map((X)=>new oD(X));return y(F,{code:P.invalid_union,unionErrors:B}),i}}get options(){return this._def.options}};UF.create=(D,F)=>{return new UF({options:D,typeName:o.ZodUnion,...X0(F)})};iJ=class iJ extends q0{_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==k.object)return y(F,{code:P.invalid_type,expected:k.object,received:F.parsedType}),i;let $=this.discriminator,J=F.data[$],Q=this.optionsMap.get(J);if(!Q)return y(F,{code:P.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[$]}),i;if(F.common.async)return Q._parseAsync({data:F.data,path:F.path,parent:F});else return Q._parseSync({data:F.data,path:F.path,parent:F})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(D,F,$){let J=new Map;for(let Q of F){let Y=p8(Q.shape[D]);if(!Y.length)throw Error(`A discriminator value for key \`${D}\` could not be extracted from all schema options`);for(let B of Y){if(J.has(B))throw Error(`Discriminator property ${String(D)} has duplicate value ${String(B)}`);J.set(B,Q)}}return new iJ({typeName:o.ZodDiscriminatedUnion,discriminator:D,options:F,optionsMap:J,...X0($)})}};LF=class LF extends q0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D),J=(Q,Y)=>{if(cJ(Q)||cJ(Y))return i;let B=PW(Q.value,Y.value);if(!B.valid)return y($,{code:P.invalid_intersection_types}),i;if(nJ(Q)||nJ(Y))F.dirty();return{status:F.value,value:B.data}};if($.common.async)return Promise.all([this._def.left._parseAsync({data:$.data,path:$.path,parent:$}),this._def.right._parseAsync({data:$.data,path:$.path,parent:$})]).then(([Q,Y])=>J(Q,Y));else return J(this._def.left._parseSync({data:$.data,path:$.path,parent:$}),this._def.right._parseSync({data:$.data,path:$.path,parent:$}))}};LF.create=(D,F,$)=>{return new LF({left:D,right:F,typeName:o.ZodIntersection,...X0($)})};R8=class R8 extends q0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==k.array)return y($,{code:P.invalid_type,expected:k.array,received:$.parsedType}),i;if($.data.length<this._def.items.length)return y($,{code:P.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),i;if(!this._def.rest&&$.data.length>this._def.items.length)y($,{code:P.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),F.dirty();let Q=[...$.data].map((Y,B)=>{let X=this._def.items[B]||this._def.rest;if(!X)return null;return X._parse(new c1($,Y,$.path,B))}).filter((Y)=>!!Y);if($.common.async)return Promise.all(Q).then((Y)=>{return AD.mergeArray(F,Y)});else return AD.mergeArray(F,Q)}get items(){return this._def.items}rest(D){return new R8({...this._def,rest:D})}};R8.create=(D,F)=>{if(!Array.isArray(D))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new R8({items:D,typeName:o.ZodTuple,rest:null,...X0(F)})};j9=class j9 extends q0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==k.object)return y($,{code:P.invalid_type,expected:k.object,received:$.parsedType}),i;let J=[],Q=this._def.keyType,Y=this._def.valueType;for(let B in $.data)J.push({key:Q._parse(new c1($,B,$.path,B)),value:Y._parse(new c1($,$.data[B],$.path,B)),alwaysSet:B in $.data});if($.common.async)return AD.mergeObjectAsync(F,J);else return AD.mergeObjectSync(F,J)}get element(){return this._def.valueType}static create(D,F,$){if(F instanceof q0)return new j9({keyType:D,valueType:F,typeName:o.ZodRecord,...X0($)});return new j9({keyType:l1.create(),valueType:D,typeName:o.ZodRecord,...X0(F)})}};T9=class T9 extends q0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==k.map)return y($,{code:P.invalid_type,expected:k.map,received:$.parsedType}),i;let J=this._def.keyType,Q=this._def.valueType,Y=[...$.data.entries()].map(([B,X],G)=>{return{key:J._parse(new c1($,B,$.path,[G,"key"])),value:Q._parse(new c1($,X,$.path,[G,"value"]))}});if($.common.async){let B=new Map;return Promise.resolve().then(async()=>{for(let X of Y){let G=await X.key,H=await X.value;if(G.status==="aborted"||H.status==="aborted")return i;if(G.status==="dirty"||H.status==="dirty")F.dirty();B.set(G.value,H.value)}return{status:F.value,value:B}})}else{let B=new Map;for(let X of Y){let{key:G,value:H}=X;if(G.status==="aborted"||H.status==="aborted")return i;if(G.status==="dirty"||H.status==="dirty")F.dirty();B.set(G.value,H.value)}return{status:F.value,value:B}}}};T9.create=(D,F,$)=>{return new T9({valueType:F,keyType:D,typeName:o.ZodMap,...X0($)})};k4=class k4 extends q0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==k.set)return y($,{code:P.invalid_type,expected:k.set,received:$.parsedType}),i;let J=this._def;if(J.minSize!==null){if($.data.size<J.minSize.value)y($,{code:P.too_small,minimum:J.minSize.value,type:"set",inclusive:!0,exact:!1,message:J.minSize.message}),F.dirty()}if(J.maxSize!==null){if($.data.size>J.maxSize.value)y($,{code:P.too_big,maximum:J.maxSize.value,type:"set",inclusive:!0,exact:!1,message:J.maxSize.message}),F.dirty()}let Q=this._def.valueType;function Y(X){let G=new Set;for(let H of X){if(H.status==="aborted")return i;if(H.status==="dirty")F.dirty();G.add(H.value)}return{status:F.value,value:G}}let B=[...$.data.values()].map((X,G)=>Q._parse(new c1($,X,$.path,G)));if($.common.async)return Promise.all(B).then((X)=>Y(X));else return Y(B)}min(D,F){return new k4({...this._def,minSize:{value:D,message:l.toString(F)}})}max(D,F){return new k4({...this._def,maxSize:{value:D,message:l.toString(F)}})}size(D,F){return this.min(D,F).max(D,F)}nonempty(D){return this.min(1,D)}};k4.create=(D,F)=>{return new k4({valueType:D,minSize:null,maxSize:null,typeName:o.ZodSet,...X0(F)})};zF=class zF extends q0{constructor(){super(...arguments);this.validate=this.implement}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==k.function)return y(F,{code:P.invalid_type,expected:k.function,received:F.parsedType}),i;function $(B,X){return C9({data:B,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,HF(),l8].filter((G)=>!!G),issueData:{code:P.invalid_arguments,argumentsError:X}})}function J(B,X){return C9({data:B,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,HF(),l8].filter((G)=>!!G),issueData:{code:P.invalid_return_type,returnTypeError:X}})}let Q={errorMap:F.common.contextualErrorMap},Y=F.data;if(this._def.returns instanceof v4){let B=this;return TD(async function(...X){let G=new oD([]),H=await B._def.args.parseAsync(X,Q).catch((V)=>{throw G.addIssue($(X,V)),G}),q=await Reflect.apply(Y,this,H);return await B._def.returns._def.type.parseAsync(q,Q).catch((V)=>{throw G.addIssue(J(q,V)),G})})}else{let B=this;return TD(function(...X){let G=B._def.args.safeParse(X,Q);if(!G.success)throw new oD([$(X,G.error)]);let H=Reflect.apply(Y,this,G.data),q=B._def.returns.safeParse(H,Q);if(!q.success)throw new oD([J(H,q.error)]);return q.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...D){return new zF({...this._def,args:R8.create(D).rest(l6.create())})}returns(D){return new zF({...this._def,returns:D})}implement(D){return this.parse(D)}strictImplement(D){return this.parse(D)}static create(D,F,$){return new zF({args:D?D:R8.create([]).rest(l6.create()),returns:F||l6.create(),typeName:o.ZodFunction,...X0($)})}};AF=class AF extends q0{get schema(){return this._def.getter()}_parse(D){let{ctx:F}=this._processInputParams(D);return this._def.getter()._parse({data:F.data,path:F.path,parent:F})}};AF.create=(D,F)=>{return new AF({getter:D,typeName:o.ZodLazy,...X0(F)})};MF=class MF extends q0{_parse(D){if(D.data!==this._def.value){let F=this._getOrReturnCtx(D);return y(F,{received:F.data,code:P.invalid_literal,expected:this._def.value}),i}return{status:"valid",value:D.data}}get value(){return this._def.value}};MF.create=(D,F)=>{return new MF({value:D,typeName:o.ZodLiteral,...X0(F)})};c6=class c6 extends q0{_parse(D){if(typeof D.data!=="string"){let F=this._getOrReturnCtx(D),$=this._def.values;return y(F,{expected:V0.joinValues($),received:F.parsedType,code:P.invalid_type}),i}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(D.data)){let F=this._getOrReturnCtx(D),$=this._def.values;return y(F,{received:F.data,code:P.invalid_enum_value,options:$}),i}return TD(D.data)}get options(){return this._def.values}get enum(){let D={};for(let F of this._def.values)D[F]=F;return D}get Values(){let D={};for(let F of this._def.values)D[F]=F;return D}get Enum(){let D={};for(let F of this._def.values)D[F]=F;return D}extract(D,F=this._def){return c6.create(D,{...this._def,...F})}exclude(D,F=this._def){return c6.create(this.options.filter(($)=>!D.includes($)),{...this._def,...F})}};c6.create=Tf;NF=class NF extends q0{_parse(D){let F=V0.getValidEnumValues(this._def.values),$=this._getOrReturnCtx(D);if($.parsedType!==k.string&&$.parsedType!==k.number){let J=V0.objectValues(F);return y($,{expected:V0.joinValues(J),received:$.parsedType,code:P.invalid_type}),i}if(!this._cache)this._cache=new Set(V0.getValidEnumValues(this._def.values));if(!this._cache.has(D.data)){let J=V0.objectValues(F);return y($,{received:$.data,code:P.invalid_enum_value,options:J}),i}return TD(D.data)}get enum(){return this._def.values}};NF.create=(D,F)=>{return new NF({values:D,typeName:o.ZodNativeEnum,...X0(F)})};v4=class v4 extends q0{unwrap(){return this._def.type}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==k.promise&&F.common.async===!1)return y(F,{code:P.invalid_type,expected:k.promise,received:F.parsedType}),i;let $=F.parsedType===k.promise?F.data:Promise.resolve(F.data);return TD($.then((J)=>{return this._def.type.parseAsync(J,{path:F.path,errorMap:F.common.contextualErrorMap})}))}};v4.create=(D,F)=>{return new v4({type:D,typeName:o.ZodPromise,...X0(F)})};n1=class n1 extends q0{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===o.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(D){let{status:F,ctx:$}=this._processInputParams(D),J=this._def.effect||null,Q={addIssue:(Y)=>{if(y($,Y),Y.fatal)F.abort();else F.dirty()},get path(){return $.path}};if(Q.addIssue=Q.addIssue.bind(Q),J.type==="preprocess"){let Y=J.transform($.data,Q);if($.common.async)return Promise.resolve(Y).then(async(B)=>{if(F.value==="aborted")return i;let X=await this._def.schema._parseAsync({data:B,path:$.path,parent:$});if(X.status==="aborted")return i;if(X.status==="dirty")return P4(X.value);if(F.value==="dirty")return P4(X.value);return X});else{if(F.value==="aborted")return i;let B=this._def.schema._parseSync({data:Y,path:$.path,parent:$});if(B.status==="aborted")return i;if(B.status==="dirty")return P4(B.value);if(F.value==="dirty")return P4(B.value);return B}}if(J.type==="refinement"){let Y=(B)=>{let X=J.refinement(B,Q);if($.common.async)return Promise.resolve(X);if(X instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return B};if($.common.async===!1){let B=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(B.status==="aborted")return i;if(B.status==="dirty")F.dirty();return Y(B.value),{status:F.value,value:B.value}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((B)=>{if(B.status==="aborted")return i;if(B.status==="dirty")F.dirty();return Y(B.value).then(()=>{return{status:F.value,value:B.value}})})}if(J.type==="transform")if($.common.async===!1){let Y=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(!m6(Y))return i;let B=J.transform(Y.value,Q);if(B instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:F.value,value:B}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((Y)=>{if(!m6(Y))return i;return Promise.resolve(J.transform(Y.value,Q)).then((B)=>({status:F.value,value:B}))});V0.assertNever(J)}};n1.create=(D,F,$)=>{return new n1({schema:D,typeName:o.ZodEffects,effect:F,...X0($)})};n1.createWithPreprocess=(D,F,$)=>{return new n1({schema:F,effect:{type:"preprocess",transform:D},typeName:o.ZodEffects,...X0($)})};d1=class d1 extends q0{_parse(D){if(this._getType(D)===k.undefined)return TD(void 0);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};d1.create=(D,F)=>{return new d1({innerType:D,typeName:o.ZodOptional,...X0(F)})};d8=class d8 extends q0{_parse(D){if(this._getType(D)===k.null)return TD(null);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};d8.create=(D,F)=>{return new d8({innerType:D,typeName:o.ZodNullable,...X0(F)})};RF=class RF extends q0{_parse(D){let{ctx:F}=this._processInputParams(D),$=F.data;if(F.parsedType===k.undefined)$=this._def.defaultValue();return this._def.innerType._parse({data:$,path:F.path,parent:F})}removeDefault(){return this._def.innerType}};RF.create=(D,F)=>{return new RF({innerType:D,typeName:o.ZodDefault,defaultValue:typeof F.default==="function"?F.default:()=>F.default,...X0(F)})};CF=class CF extends q0{_parse(D){let{ctx:F}=this._processInputParams(D),$={...F,common:{...F.common,issues:[]}},J=this._def.innerType._parse({data:$.data,path:$.path,parent:{...$}});if(qF(J))return J.then((Q)=>{return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new oD($.common.issues)},input:$.data})}});else return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new oD($.common.issues)},input:$.data})}}removeCatch(){return this._def.innerType}};CF.create=(D,F)=>{return new CF({innerType:D,typeName:o.ZodCatch,catchValue:typeof F.catch==="function"?F.catch:()=>F.catch,...X0(F)})};P9=class P9 extends q0{_parse(D){if(this._getType(D)!==k.nan){let $=this._getOrReturnCtx(D);return y($,{code:P.invalid_type,expected:k.nan,received:$.parsedType}),i}return{status:"valid",value:D.data}}};P9.create=(D)=>{return new P9({typeName:o.ZodNaN,...X0(D)})};qE0=Symbol("zod_brand");aJ=class aJ extends q0{_parse(D){let{ctx:F}=this._processInputParams(D),$=F.data;return this._def.type._parse({data:$,path:F.path,parent:F})}unwrap(){return this._def.type}};I9=class I9 extends q0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.common.async)return(async()=>{let Q=await this._def.in._parseAsync({data:$.data,path:$.path,parent:$});if(Q.status==="aborted")return i;if(Q.status==="dirty")return F.dirty(),P4(Q.value);else return this._def.out._parseAsync({data:Q.value,path:$.path,parent:$})})();else{let J=this._def.in._parseSync({data:$.data,path:$.path,parent:$});if(J.status==="aborted")return i;if(J.status==="dirty")return F.dirty(),{status:"dirty",value:J.value};else return this._def.out._parseSync({data:J.value,path:$.path,parent:$})}}static create(D,F){return new I9({in:D,out:F,typeName:o.ZodPipeline})}};OF=class OF extends q0{_parse(D){let F=this._def.innerType._parse(D),$=(J)=>{if(m6(J))J.value=Object.freeze(J.value);return J};return qF(F)?F.then((J)=>$(J)):$(F)}unwrap(){return this._def.innerType}};OF.create=(D,F)=>{return new OF({innerType:D,typeName:o.ZodReadonly,...X0(F)})};KE0={object:s0.lazycreate};(function(D){D.ZodString="ZodString",D.ZodNumber="ZodNumber",D.ZodNaN="ZodNaN",D.ZodBigInt="ZodBigInt",D.ZodBoolean="ZodBoolean",D.ZodDate="ZodDate",D.ZodSymbol="ZodSymbol",D.ZodUndefined="ZodUndefined",D.ZodNull="ZodNull",D.ZodAny="ZodAny",D.ZodUnknown="ZodUnknown",D.ZodNever="ZodNever",D.ZodVoid="ZodVoid",D.ZodArray="ZodArray",D.ZodObject="ZodObject",D.ZodUnion="ZodUnion",D.ZodDiscriminatedUnion="ZodDiscriminatedUnion",D.ZodIntersection="ZodIntersection",D.ZodTuple="ZodTuple",D.ZodRecord="ZodRecord",D.ZodMap="ZodMap",D.ZodSet="ZodSet",D.ZodFunction="ZodFunction",D.ZodLazy="ZodLazy",D.ZodLiteral="ZodLiteral",D.ZodEnum="ZodEnum",D.ZodEffects="ZodEffects",D.ZodNativeEnum="ZodNativeEnum",D.ZodOptional="ZodOptional",D.ZodNullable="ZodNullable",D.ZodDefault="ZodDefault",D.ZodCatch="ZodCatch",D.ZodPromise="ZodPromise",D.ZodBranded="ZodBranded",D.ZodPipeline="ZodPipeline",D.ZodReadonly="ZodReadonly"})(o||(o={}));If=l1.create,Sf=p6.create,EE0=P9.create,VE0=d6.create,kf=EF.create,ZE0=I4.create,UE0=O9.create,LE0=VF.create,AE0=ZF.create,ME0=S4.create,NE0=l6.create,RE0=N8.create,CE0=w9.create,OE0=p1.create,wE0=s0.create,jE0=s0.strictCreate,TE0=UF.create,PE0=iJ.create,IE0=LF.create,SE0=R8.create,kE0=j9.create,vE0=T9.create,yE0=k4.create,xE0=zF.create,_E0=AF.create,fE0=MF.create,gE0=c6.create,hE0=NF.create,bE0=v4.create,uE0=n1.create,mE0=d1.create,lE0=d8.create,pE0=n1.createWithPreprocess,dE0=I9.create,aE0={string:(D)=>l1.create({...D,coerce:!0}),number:(D)=>p6.create({...D,coerce:!0}),boolean:(D)=>EF.create({...D,coerce:!0}),bigint:(D)=>d6.create({...D,coerce:!0}),date:(D)=>I4.create({...D,coerce:!0})},oE0=i});var J1={};r6(J1,{void:()=>CE0,util:()=>V0,unknown:()=>NE0,union:()=>TE0,undefined:()=>LE0,tuple:()=>SE0,transformer:()=>uE0,symbol:()=>UE0,string:()=>If,strictObject:()=>jE0,setErrorMap:()=>lz0,set:()=>yE0,record:()=>kE0,quotelessJson:()=>uz0,promise:()=>bE0,preprocess:()=>pE0,pipeline:()=>dE0,ostring:()=>cE0,optional:()=>mE0,onumber:()=>nE0,oboolean:()=>iE0,objectUtil:()=>OW,object:()=>wE0,number:()=>Sf,nullable:()=>lE0,null:()=>AE0,never:()=>RE0,nativeEnum:()=>hE0,nan:()=>EE0,map:()=>vE0,makeIssue:()=>C9,literal:()=>fE0,lazy:()=>_E0,late:()=>KE0,isValid:()=>m6,isDirty:()=>nJ,isAsync:()=>qF,isAborted:()=>cJ,intersection:()=>IE0,instanceof:()=>zE0,getParsedType:()=>M8,getErrorMap:()=>HF,function:()=>xE0,enum:()=>gE0,effect:()=>uE0,discriminatedUnion:()=>PE0,defaultErrorMap:()=>l8,datetimeRegex:()=>jf,date:()=>ZE0,custom:()=>Pf,coerce:()=>aE0,boolean:()=>kf,bigint:()=>VE0,array:()=>OE0,any:()=>ME0,addIssueToContext:()=>y,ZodVoid:()=>w9,ZodUnknown:()=>l6,ZodUnion:()=>UF,ZodUndefined:()=>VF,ZodType:()=>q0,ZodTuple:()=>R8,ZodTransformer:()=>n1,ZodSymbol:()=>O9,ZodString:()=>l1,ZodSet:()=>k4,ZodSchema:()=>q0,ZodRecord:()=>j9,ZodReadonly:()=>OF,ZodPromise:()=>v4,ZodPipeline:()=>I9,ZodParsedType:()=>k,ZodOptional:()=>d1,ZodObject:()=>s0,ZodNumber:()=>p6,ZodNullable:()=>d8,ZodNull:()=>ZF,ZodNever:()=>N8,ZodNativeEnum:()=>NF,ZodNaN:()=>P9,ZodMap:()=>T9,ZodLiteral:()=>MF,ZodLazy:()=>AF,ZodIssueCode:()=>P,ZodIntersection:()=>LF,ZodFunction:()=>zF,ZodFirstPartyTypeKind:()=>o,ZodError:()=>oD,ZodEnum:()=>c6,ZodEffects:()=>n1,ZodDiscriminatedUnion:()=>iJ,ZodDefault:()=>RF,ZodDate:()=>I4,ZodCatch:()=>CF,ZodBranded:()=>aJ,ZodBoolean:()=>EF,ZodBigInt:()=>d6,ZodArray:()=>p1,ZodAny:()=>S4,Schema:()=>q0,ParseStatus:()=>AD,OK:()=>TD,NEVER:()=>oE0,INVALID:()=>i,EMPTY_PATH:()=>pz0,DIRTY:()=>P4,BRAND:()=>qE0});var IW=S(()=>{dJ();jW();Mf();R9();vf();pJ()});var yf=S(()=>{IW();IW()});import{copyFileSync as sE0,existsSync as xf,mkdirSync as rE0}from"fs";import{homedir as sJ}from"os";import{join as wF}from"path";function eE0(D){let F=D.trim().replace(/\/+$/,"");try{let $=new URL(F);return $.protocol=$.protocol.toLowerCase(),$.host=$.host.toLowerCase(),$.toString().replace(/\/+$/,"")}catch{return console.error(`[nemar] could not parse stored apiUrl ${JSON.stringify(D)}; leaving as-is`),F}}function DV0(){return process.env.NEMAR_CONFIG_DIR||wF(sJ(),".config","nemar")}function FV0(D){if(process.env.NEMAR_CONFIG_DIR)return;let F=wF(D,"config.json");if(xf(F))return;let $=[];if(process.platform==="darwin")$.push(wF(sJ(),"Library","Preferences","nemar-nodejs","config.json"));if(process.platform==="win32"){let J=process.env.APPDATA||wF(sJ(),"AppData","Roaming");$.push(wF(J,"nemar-nodejs","config.json"))}$.push(wF(sJ(),".config","nemar-nodejs","config.json"));for(let J of $)if(xf(J))try{rE0(D,{recursive:!0}),sE0(J,F),console.error(`[nemar] Config migrated from ${J} to ${F}
|
|
@@ -95,7 +95,7 @@ ${W.dim(`eta: ${D.eta}`)}`:"";process.stderr.write(`${F}
|
|
|
95
95
|
${$} ${D.message}
|
|
96
96
|
${J}${Q}
|
|
97
97
|
${F}
|
|
98
|
-
`)}var pf=!1;var kW=S(()=>{ND()});var cf;var df=S(()=>{cf={name:"nemar-cli",version:"0.8.70-PR845.bd2d5d2",description:"CLI for NEMAR (Neuroelectromagnetic Data Archive and Tools Resource) dataset management",type:"module",main:"dist/index.js",bin:{nemar:"dist/index.js"},scripts:{dev:"bun run src/index.ts",build:"bun build src/index.ts --outdir dist --target bun --minify && sed '1s|#!/usr/bin/env node|#!/usr/bin/env bun|' dist/index.js > dist/index.js.tmp && mv dist/index.js.tmp dist/index.js",test:"bun test",lint:"biome check src/","lint:fix":"biome check --fix src/",format:"biome format --write src/",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",prepare:"husky",postinstall:"bun scripts/postinstall-check.mjs",deploy:"wrangler deploy",preview:"wrangler dev"},keywords:["nemar","bids","neuroimaging","eeg","emg","datalad","cli"],author:"NEMAR Team",license:"CC-BY-NC-ND-4.0",repository:{type:"git",url:"git+https://github.com/nemarOrg/nemar-cli.git"},bugs:{url:"https://github.com/nemarOrg/nemar-cli/issues"},homepage:"https://docs.nemar.org",engines:{bun:">=1.0.0"},files:["dist","scripts/postinstall-check.mjs","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1","fuse.js":"^7.1.0",inquirer:"^9.2.15",ora:"^8.0.1",zod:"^3.23.8"},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --fix"],"backend/src/**/*.{ts,tsx}":["biome check --fix"]},devDependencies:{"@biomejs/biome":"1.9.4","@types/bcryptjs":"^3.0.0","@types/bun":"latest","@types/inquirer":"^9.0.7",bcryptjs:"^3.0.3",husky:"^9.1.7","lint-staged":"^16.3.2",typescript:"^5.5.4",wrangler:"^4.70.0",yaml:"^2.8.4"}}});var _4;var eJ=S(()=>{df();_4=cf.version});function O0(D){if(D instanceof Error)return D.message;return String(D)}function nf(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(yW)return vW;return $D().apiUrl||vW}async function x(D,F={},$=!1){let J=`${nf()}${D}`,Q={"Content-Type":"application/json","X-CLI-Version":_4,...F.headers};if($){let X=$D();if(!X.apiKey&&$===!0)throw new f(401,"Not authenticated. Run 'nemar auth login' first.");if(X.apiKey)Q.Authorization=`Bearer ${X.apiKey}`}let Y;try{Y=await fetch(J,{...F,headers:Q})}catch(X){throw new f(0,`Network error: Could not connect to ${nf()}`,{originalError:X instanceof Error?X.message:String(X)})}let B;try{B=await Y.json()}catch{throw new f(Y.status,`Invalid response from server (status ${Y.status})`)}if(!Y.ok){if(Y.status===503&&(B.mode==="read-only"||B.mode==="full")){let X=typeof B.message==="string"?B.message:"NEMAR is in maintenance mode. Please retry shortly.",G=typeof B.eta==="string"?B.eta:null,H=new FQ(B.mode,X,G,B.details);throw tJ(H),H}throw new f(Y.status,B.error||B.message||"Request failed",B.details,typeof B.step==="string"?B.step:void 0)}return B}async function of(D){return x(`/auth/check-username?username=${encodeURIComponent(D)}`)}async function sf(D){return x(`/auth/check-github?username=${encodeURIComponent(D)}`)}async function rf(D){return x("/auth/signup",{method:"POST",body:JSON.stringify(D)})}async function tf(D){return x("/auth/login",{method:"POST",body:JSON.stringify({api_key:D})})}async function ef(D){return x("/auth/resend-verification",{method:"POST",body:JSON.stringify({email:D})})}async function Dg(D,F){return x("/auth/retrieve-key",{method:"POST",body:JSON.stringify({email:D,password:F})})}async function Fg(D){return x("/auth/request-key-regeneration",{method:"POST",body:JSON.stringify({email:D})})}async function $Q(){return x("/users/me",{},!0)}async function $g(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let J=$.toString()?`?${$.toString()}`:"";return x(`/admin/users${J}`,{},!0)}async function Jg(D){return x(`/admin/approve/${D}`,{method:"POST"},!0)}async function Qg(D){return x(`/admin/revoke/${D}`,{method:"POST"},!0)}async function Yg(D,F){return x(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function xW(D,F){return x(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function Bg(D){return x(`/datasets/${D}/publish`,{method:"POST"},!0)}async function Xg(D){return x(`/admin/datasets/${D}/ci`,{},!0)}async function f4(D){return x(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function _W(D){return x(`/admin/datasets/${D}/ci/validate`,{method:"POST"},!0)}async function fW(D){return x(`/admin/datasets/${D}/ci/sync`,{method:"POST"},!0)}async function JQ(D){return x(`/datasets/${D}/ci/status`,{},!0)}async function Gg(D){return x(`/datasets/${D}/manifest`,{},!0)}async function QQ(D,F){return x(`/datasets/${D}/manifest/${F}`,{},!0)}function Wg(D){let F=D;if(!F.status)F.status="active";else if(!["active","archived","deleted"].includes(F.status))throw Error(`Invalid dataset status: ${F.status}`);if(!F.visibility)F.visibility="private";else if(!["public","private"].includes(F.visibility))throw Error(`Invalid dataset visibility: ${F.visibility}`);return F}async function TF(D={}){let F=new URLSearchParams;if(D.mine)F.set("mine","true");if(D.search)F.set("search",D.search);if(D.modality)F.set("modality",D.modality);if(D.author)F.set("author",D.author);if(D.task)F.set("task",D.task);if(D.license)F.set("license",D.license);if(D.hasDoi)F.set("has_doi","true");if(D.recent)F.set("recent",String(D.recent));if(D.sort)F.set("sort",D.sort);if(D.limit!=null)F.set("limit",String(D.limit));if(D.offset!=null)F.set("offset",String(D.offset));if(D.owner)F.set("owner",D.owner);let $=F.toString()?`?${F.toString()}`:"",J=await x(`/datasets${$}`,{},D.mine?!0:"optional");return J.datasets=J.datasets.map(Wg),J}async function Hg(D){return x(`/datasets/resolve/${D}`,{},"optional")}async function qg(D,F={}){let $=new URLSearchParams({q:D});if(F.modality)$.set("modality",F.modality);if(F.limit)$.set("limit",String(F.limit));return x(`/datasets/search?${$.toString()}`,{},"optional")}async function gD(D){let F=await x(`/datasets/${D}`,{},"optional");return Wg(F.dataset)}async function Kg(D){return x(`/datasets/${D}/versions`,{},!0)}async function YQ(D){return x("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function BQ(D){return x(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function c8(D,F){return x(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function gW(D,F){return x(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function zg(D,F){return x(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function v9(D){return x(`/admin/datasets/${D}/doi`,{},!0)}async function hW(D,F){return x(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function bW(D){return x(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function Eg(D,F){let $=F?`?status=${F}`:"";return x(`/datasets/${D}/access-requests${$}`,{},!0)}async function Vg(D,F){return x(`/datasets/${D}/access-requests/${F}/approve`,{method:"POST"},!0)}async function Zg(D,F){return x(`/datasets/${D}/access-requests/${F}/deny`,{method:"POST"},!0)}async function Ug(D,F){return x(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function Lg(D){return x(`/datasets/${D}/collaborators`,{},!0)}async function Ag(D){return x("/sandbox/complete",{method:"POST",body:JSON.stringify({dataset_id:D})},!0)}async function Mg(){return x("/sandbox/reset",{method:"POST"},!0)}async function Ng(){return x("/sandbox/status",{},!0)}async function XQ(D){return x(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function Rg(D){return x(`/datasets/${D}/publish/status`,{},!0)}async function Cg(D){return x(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function Og(D){let F=D?`?status=${D}`:"";return x(`/admin/publish/requests${F}`,{},!0)}async function wg(D,F){return x(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}function BV0(D,F=[]){if(D){let $=k9.indexOf(D);if($>=0)return $+1}return Math.min(F.length+1,k9.length)}function XV0(D){if(!(D instanceof f))return!1;if(D.statusCode===0)return!0;if(D.statusCode===429)return!0;if(D.statusCode>=500&&D.statusCode<600)return!0;if(D.statusCode===403&&/repository has been locked/i.test(D.message))return!0;return!1}async function GQ(D,F=!1,$=!1,J=!1,Q,Y){let G,H,q=0,K=!1,V,z=F,Z=[],U;function M(A,C,w,I){if(!Y)return;Y({step:A,stepIndex:BV0(A,C),stepTotal:k9.length,s3LockLocked:w,s3LockTotal:I,s3LockResumed:A==="s3_lock"&&K?!0:void 0})}for(let A=1;A<=5;A++)try{let C,w=!0;do{if(C=await x(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:w?z:!0,sandbox:$,s3_lock_continuation_token:G,s3_lock_total:H,skip_ci_check:J})},!0),w=!1,C.step_results)Z.push(...C.step_results);if(C.s3_lock_total!==void 0)H=C.s3_lock_total;if(C.s3_lock_batch_count!==void 0)q+=C.s3_lock_batch_count;let I=C.step??C.step_results?.[C.step_results.length-1]?.step;if(I&&(I!==V||I==="s3_lock"))M(I,C.steps_completed??[],I==="s3_lock"?q:void 0,I==="s3_lock"?H:void 0),V=I;if(C.hasMore&&C.s3_lock_continuation_token!==void 0)G=C.s3_lock_continuation_token;else break}while(C.hasMore);if(Z.length>0)C.step_results=af(Z);return C}catch(C){if(U=C,A===5||!XV0(C)){if(C instanceof f&&Z.length>0)C.stepResults=af(Z);throw C}let I=C;if(Q?.({attempt:A,maxAttempts:5,delayMs:1e4,step:I.step,error:I.message}),await new Promise((R)=>setTimeout(R,1e4)),z=!0,G!==void 0)K=!0}throw U}function af(D){let F=new Map;for(let $ of D)F.set($.step,$);return Array.from(F.values())}async function jg(D,F){return x(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}async function Tg(D){return x(`/admin/datasets/${D}/files`,{},!0)}async function Pg(D){let F,$=0,J=[],Q=!0;while(Q){let Y=await x(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({continuation_token:F})},!0);if($+=Y.locked,Y.failed?.length)J.push(...Y.failed);if(Q=Y.hasMore,F=Y.continuation_token,Q&&!F)throw new f(500,"S3 lock paginated response missing continuation_token; aborting to avoid infinite loop")}return{locked:$,failed:J}}async function Ig(D){return x(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function Sg(D,F=!1){return x(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function kg(D){return x("/admin/datasets/bulk-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dataset_ids:D})},!0)}async function vg(D){return x("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function yg(D){let F=D?`?status=${encodeURIComponent(D)}`:"";return x(`/admin/imports${F}`,{},!0)}async function xg(D){return x(`/admin/imports/${D}/rollback`,{method:"POST"},!0)}async function _g(D){return x(`/admin/imports/${D}/retry`,{method:"POST"},!0)}async function WQ(D,F){return x(`/admin/datasets/${D}/reindex`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F??{})},!0)}async function fg(D,F){return x("/admin/datasets/reindex/bulk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filter:D,...F??{}})},!0)}async function gg(D){let F=new URLSearchParams;if(D?.prefix)F.set("prefix",D.prefix);if(D?.visibility)F.set("visibility",D.visibility);if(D?.limit)F.set("limit",String(D.limit));let $=F.toString()?`?${F.toString()}`:"";return x(`/admin/fleet/drift${$}`,{},!0)}async function PF(D,F){return x(`/admin/datasets/${D}/enforce`,{method:"POST",body:JSON.stringify({dry_run:F})},!0)}async function hg(D){return x("/admin/datasets/enforce/bulk",{method:"POST",body:JSON.stringify({prefix:D.prefix,visibility:D.visibility,limit:D.limit,dry_run:D.dryRun})},!0)}async function bg(D,F=!1){return x(`/admin/datasets/${D}/revalidate${F?"?force=true":""}`,{method:"POST"},!0)}async function ug(D){let F=D?`?user=${encodeURIComponent(D)}`:"";return x(`/admin/email-preferences${F}`,{},!0)}async function mg(D,F){let $=F?`?user=${encodeURIComponent(F)}`:"";return x(`/admin/email-preferences${$}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)},!0)}async function lg(){return x("/notices",{},"optional")}async function pg(){return x("/admin/notices",{},!0)}async function dg(D){return x("/admin/notices",{method:"POST",body:JSON.stringify(D)},!0)}async function cg(D){return x(`/admin/notices/${D}`,{method:"DELETE"},!0)}async function uW(D){return x("/admin/notify",{method:"POST",body:JSON.stringify(D)},!0)}async function ng(){return x("/admin/summary/coverage",{},!0)}async function ig(D,F,$){return x("/admin/manifest/dispatch",{method:"POST",body:JSON.stringify({dataset_id:D,version:F,skip_canary:$?.skipCanary??!1})},!0)}var vW="https://api.nemar.org",DQ,f,FQ,yW,k9;var n8=S(()=>{x4();kW();eJ();DQ=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/;f=class f extends Error{statusCode;details;step;constructor(D,F,$,J){super(F);this.statusCode=D;this.details=$;this.step=J;this.name="ApiError"}};FQ=class FQ extends f{mode;eta;constructor(D,F,$,J){super(503,F,J);this.mode=D;this.eta=$;this.name="MaintenanceError"}};yW=vW.includes("workers.dev");k9=["ci_check","enrichment_check","repo_public","s3_public_read","tag_protect","doi_create","update_metadata","update_readme","create_tag","create_release","upload_to_zenodo","publish_doi","version_doi","s3_lock","sync_nemar","notify_user"]});function sg(D){lW=D}function pW(){return lW}function y9(D){if(lW)process.stderr.write(`${D}
|
|
98
|
+
`)}var pf=!1;var kW=S(()=>{ND()});var cf;var df=S(()=>{cf={name:"nemar-cli",version:"0.8.70-PR846.3ccc429",description:"CLI for NEMAR (Neuroelectromagnetic Data Archive and Tools Resource) dataset management",type:"module",main:"dist/index.js",bin:{nemar:"dist/index.js"},scripts:{dev:"bun run src/index.ts",build:"bun build src/index.ts --outdir dist --target bun --minify && sed '1s|#!/usr/bin/env node|#!/usr/bin/env bun|' dist/index.js > dist/index.js.tmp && mv dist/index.js.tmp dist/index.js",test:"bun test",lint:"biome check src/","lint:fix":"biome check --fix src/",format:"biome format --write src/",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",prepare:"husky",postinstall:"bun scripts/postinstall-check.mjs",deploy:"wrangler deploy",preview:"wrangler dev"},keywords:["nemar","bids","neuroimaging","eeg","emg","datalad","cli"],author:"NEMAR Team",license:"CC-BY-NC-ND-4.0",repository:{type:"git",url:"git+https://github.com/nemarOrg/nemar-cli.git"},bugs:{url:"https://github.com/nemarOrg/nemar-cli/issues"},homepage:"https://docs.nemar.org",engines:{bun:">=1.0.0"},files:["dist","scripts/postinstall-check.mjs","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1","fuse.js":"^7.1.0",inquirer:"^9.2.15",ora:"^8.0.1",zod:"^3.23.8"},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --fix"],"backend/src/**/*.{ts,tsx}":["biome check --fix"]},devDependencies:{"@biomejs/biome":"1.9.4","@types/bcryptjs":"^3.0.0","@types/bun":"latest","@types/inquirer":"^9.0.7",bcryptjs:"^3.0.3",husky:"^9.1.7","lint-staged":"^16.3.2",typescript:"^5.5.4",wrangler:"^4.70.0",yaml:"^2.8.4"}}});var _4;var eJ=S(()=>{df();_4=cf.version});function O0(D){if(D instanceof Error)return D.message;return String(D)}function nf(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(yW)return vW;return $D().apiUrl||vW}async function x(D,F={},$=!1){let J=`${nf()}${D}`,Q={"Content-Type":"application/json","X-CLI-Version":_4,...F.headers};if($){let X=$D();if(!X.apiKey&&$===!0)throw new f(401,"Not authenticated. Run 'nemar auth login' first.");if(X.apiKey)Q.Authorization=`Bearer ${X.apiKey}`}let Y;try{Y=await fetch(J,{...F,headers:Q})}catch(X){throw new f(0,`Network error: Could not connect to ${nf()}`,{originalError:X instanceof Error?X.message:String(X)})}let B;try{B=await Y.json()}catch{throw new f(Y.status,`Invalid response from server (status ${Y.status})`)}if(!Y.ok){if(Y.status===503&&(B.mode==="read-only"||B.mode==="full")){let X=typeof B.message==="string"?B.message:"NEMAR is in maintenance mode. Please retry shortly.",G=typeof B.eta==="string"?B.eta:null,H=new FQ(B.mode,X,G,B.details);throw tJ(H),H}throw new f(Y.status,B.error||B.message||"Request failed",B.details,typeof B.step==="string"?B.step:void 0)}return B}async function of(D){return x(`/auth/check-username?username=${encodeURIComponent(D)}`)}async function sf(D){return x(`/auth/check-github?username=${encodeURIComponent(D)}`)}async function rf(D){return x("/auth/signup",{method:"POST",body:JSON.stringify(D)})}async function tf(D){return x("/auth/login",{method:"POST",body:JSON.stringify({api_key:D})})}async function ef(D){return x("/auth/resend-verification",{method:"POST",body:JSON.stringify({email:D})})}async function Dg(D,F){return x("/auth/retrieve-key",{method:"POST",body:JSON.stringify({email:D,password:F})})}async function Fg(D){return x("/auth/request-key-regeneration",{method:"POST",body:JSON.stringify({email:D})})}async function $Q(){return x("/users/me",{},!0)}async function $g(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let J=$.toString()?`?${$.toString()}`:"";return x(`/admin/users${J}`,{},!0)}async function Jg(D){return x(`/admin/approve/${D}`,{method:"POST"},!0)}async function Qg(D){return x(`/admin/revoke/${D}`,{method:"POST"},!0)}async function Yg(D,F){return x(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function xW(D,F){return x(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function Bg(D){return x(`/datasets/${D}/publish`,{method:"POST"},!0)}async function Xg(D){return x(`/admin/datasets/${D}/ci`,{},!0)}async function f4(D){return x(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function _W(D){return x(`/admin/datasets/${D}/ci/validate`,{method:"POST"},!0)}async function fW(D){return x(`/admin/datasets/${D}/ci/sync`,{method:"POST"},!0)}async function JQ(D){return x(`/datasets/${D}/ci/status`,{},!0)}async function Gg(D){return x(`/datasets/${D}/manifest`,{},!0)}async function QQ(D,F){return x(`/datasets/${D}/manifest/${F}`,{},!0)}function Wg(D){let F=D;if(!F.status)F.status="active";else if(!["active","archived","deleted"].includes(F.status))throw Error(`Invalid dataset status: ${F.status}`);if(!F.visibility)F.visibility="private";else if(!["public","private"].includes(F.visibility))throw Error(`Invalid dataset visibility: ${F.visibility}`);return F}async function TF(D={}){let F=new URLSearchParams;if(D.mine)F.set("mine","true");if(D.search)F.set("search",D.search);if(D.modality)F.set("modality",D.modality);if(D.author)F.set("author",D.author);if(D.task)F.set("task",D.task);if(D.license)F.set("license",D.license);if(D.hasDoi)F.set("has_doi","true");if(D.recent)F.set("recent",String(D.recent));if(D.sort)F.set("sort",D.sort);if(D.limit!=null)F.set("limit",String(D.limit));if(D.offset!=null)F.set("offset",String(D.offset));if(D.owner)F.set("owner",D.owner);let $=F.toString()?`?${F.toString()}`:"",J=await x(`/datasets${$}`,{},D.mine?!0:"optional");return J.datasets=J.datasets.map(Wg),J}async function Hg(D){return x(`/datasets/resolve/${D}`,{},"optional")}async function qg(D,F={}){let $=new URLSearchParams({q:D});if(F.modality)$.set("modality",F.modality);if(F.limit)$.set("limit",String(F.limit));return x(`/datasets/search?${$.toString()}`,{},"optional")}async function gD(D){let F=await x(`/datasets/${D}`,{},"optional");return Wg(F.dataset)}async function Kg(D){return x(`/datasets/${D}/versions`,{},!0)}async function YQ(D){return x("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function BQ(D){return x(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function c8(D,F){return x(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function gW(D,F){return x(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function zg(D,F){return x(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function v9(D){return x(`/admin/datasets/${D}/doi`,{},!0)}async function hW(D,F){return x(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function bW(D){return x(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function Eg(D,F){let $=F?`?status=${F}`:"";return x(`/datasets/${D}/access-requests${$}`,{},!0)}async function Vg(D,F){return x(`/datasets/${D}/access-requests/${F}/approve`,{method:"POST"},!0)}async function Zg(D,F){return x(`/datasets/${D}/access-requests/${F}/deny`,{method:"POST"},!0)}async function Ug(D,F){return x(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function Lg(D){return x(`/datasets/${D}/collaborators`,{},!0)}async function Ag(D){return x("/sandbox/complete",{method:"POST",body:JSON.stringify({dataset_id:D})},!0)}async function Mg(){return x("/sandbox/reset",{method:"POST"},!0)}async function Ng(){return x("/sandbox/status",{},!0)}async function XQ(D){return x(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function Rg(D){return x(`/datasets/${D}/publish/status`,{},!0)}async function Cg(D){return x(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function Og(D){let F=D?`?status=${D}`:"";return x(`/admin/publish/requests${F}`,{},!0)}async function wg(D,F){return x(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}function BV0(D,F=[]){if(D){let $=k9.indexOf(D);if($>=0)return $+1}return Math.min(F.length+1,k9.length)}function XV0(D){if(!(D instanceof f))return!1;if(D.statusCode===0)return!0;if(D.statusCode===429)return!0;if(D.statusCode>=500&&D.statusCode<600)return!0;if(D.statusCode===403&&/repository has been locked/i.test(D.message))return!0;return!1}async function GQ(D,F=!1,$=!1,J=!1,Q,Y){let G,H,q=0,K=!1,V,z=F,Z=[],U;function M(A,C,w,I){if(!Y)return;Y({step:A,stepIndex:BV0(A,C),stepTotal:k9.length,s3LockLocked:w,s3LockTotal:I,s3LockResumed:A==="s3_lock"&&K?!0:void 0})}for(let A=1;A<=5;A++)try{let C,w=!0;do{if(C=await x(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:w?z:!0,sandbox:$,s3_lock_continuation_token:G,s3_lock_total:H,skip_ci_check:J})},!0),w=!1,C.step_results)Z.push(...C.step_results);if(C.s3_lock_total!==void 0)H=C.s3_lock_total;if(C.s3_lock_batch_count!==void 0)q+=C.s3_lock_batch_count;let I=C.step??C.step_results?.[C.step_results.length-1]?.step;if(I&&(I!==V||I==="s3_lock"))M(I,C.steps_completed??[],I==="s3_lock"?q:void 0,I==="s3_lock"?H:void 0),V=I;if(C.hasMore&&C.s3_lock_continuation_token!==void 0)G=C.s3_lock_continuation_token;else break}while(C.hasMore);if(Z.length>0)C.step_results=af(Z);return C}catch(C){if(U=C,A===5||!XV0(C)){if(C instanceof f&&Z.length>0)C.stepResults=af(Z);throw C}let I=C;if(Q?.({attempt:A,maxAttempts:5,delayMs:1e4,step:I.step,error:I.message}),await new Promise((R)=>setTimeout(R,1e4)),z=!0,G!==void 0)K=!0}throw U}function af(D){let F=new Map;for(let $ of D)F.set($.step,$);return Array.from(F.values())}async function jg(D,F){return x(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}async function Tg(D){return x(`/admin/datasets/${D}/files`,{},!0)}async function Pg(D){let F,$=0,J=[],Q=!0;while(Q){let Y=await x(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({continuation_token:F})},!0);if($+=Y.locked,Y.failed?.length)J.push(...Y.failed);if(Q=Y.hasMore,F=Y.continuation_token,Q&&!F)throw new f(500,"S3 lock paginated response missing continuation_token; aborting to avoid infinite loop")}return{locked:$,failed:J}}async function Ig(D){return x(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function Sg(D,F=!1){return x(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function kg(D){return x("/admin/datasets/bulk-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dataset_ids:D})},!0)}async function vg(D){return x("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function yg(D){let F=D?`?status=${encodeURIComponent(D)}`:"";return x(`/admin/imports${F}`,{},!0)}async function xg(D){return x(`/admin/imports/${D}/rollback`,{method:"POST"},!0)}async function _g(D){return x(`/admin/imports/${D}/retry`,{method:"POST"},!0)}async function WQ(D,F){return x(`/admin/datasets/${D}/reindex`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F??{})},!0)}async function fg(D,F){return x("/admin/datasets/reindex/bulk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filter:D,...F??{}})},!0)}async function gg(D){let F=new URLSearchParams;if(D?.prefix)F.set("prefix",D.prefix);if(D?.visibility)F.set("visibility",D.visibility);if(D?.limit)F.set("limit",String(D.limit));let $=F.toString()?`?${F.toString()}`:"";return x(`/admin/fleet/drift${$}`,{},!0)}async function PF(D,F){return x(`/admin/datasets/${D}/enforce`,{method:"POST",body:JSON.stringify({dry_run:F})},!0)}async function hg(D){return x("/admin/datasets/enforce/bulk",{method:"POST",body:JSON.stringify({prefix:D.prefix,visibility:D.visibility,limit:D.limit,dry_run:D.dryRun})},!0)}async function bg(D,F=!1){return x(`/admin/datasets/${D}/revalidate${F?"?force=true":""}`,{method:"POST"},!0)}async function ug(D){let F=D?`?user=${encodeURIComponent(D)}`:"";return x(`/admin/email-preferences${F}`,{},!0)}async function mg(D,F){let $=F?`?user=${encodeURIComponent(F)}`:"";return x(`/admin/email-preferences${$}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)},!0)}async function lg(){return x("/notices",{},"optional")}async function pg(){return x("/admin/notices",{},!0)}async function dg(D){return x("/admin/notices",{method:"POST",body:JSON.stringify(D)},!0)}async function cg(D){return x(`/admin/notices/${D}`,{method:"DELETE"},!0)}async function uW(D){return x("/admin/notify",{method:"POST",body:JSON.stringify(D)},!0)}async function ng(){return x("/admin/summary/coverage",{},!0)}async function ig(D,F,$){return x("/admin/manifest/dispatch",{method:"POST",body:JSON.stringify({dataset_id:D,version:F,skip_canary:$?.skipCanary??!1})},!0)}var vW="https://api.nemar.org",DQ,f,FQ,yW,k9;var n8=S(()=>{x4();kW();eJ();DQ=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/;f=class f extends Error{statusCode;details;step;constructor(D,F,$,J){super(F);this.statusCode=D;this.details=$;this.step=J;this.name="ApiError"}};FQ=class FQ extends f{mode;eta;constructor(D,F,$,J){super(503,F,J);this.mode=D;this.eta=$;this.name="MaintenanceError"}};yW=vW.includes("workers.dev");k9=["ci_check","enrichment_check","repo_public","s3_public_read","tag_protect","doi_create","update_metadata","update_readme","create_tag","create_release","upload_to_zenodo","publish_doi","version_doi","s3_lock","sync_nemar","notify_user"]});function sg(D){lW=D}function pW(){return lW}function y9(D){if(lW)process.stderr.write(`${D}
|
|
99
99
|
`)}var lW=!1;function YD(D){if(D===0)return"0 B";let F=["B","KB","MB","GB","TB"],$=Math.min(Math.floor(Math.log(D)/Math.log(1024)),F.length-1);return`${(D/1024**$).toFixed($===0?0:1)} ${F[$]}`}function rg(D){return`${YD(D)}/s`}function GV0(D){if(D<60)return`${Math.round(D)}s`;if(D<3600)return`${Math.floor(D/60)}m ${Math.round(D%60)}s`;return`${Math.floor(D/3600)}h ${Math.floor(D%3600/60)}m`}function WV0(D,F=20){let $=Math.round(D/100*F),J=F-$;return`[${"=".repeat($)}${" ".repeat(J)}]`}class HQ{filesCompleted=0;filesTotal;bytesTotal=0;inFlight=new Map;currentFile="";startTime;lastUpdateTime;lastBytesTransferred=0;totalBytesTransferred=0;speedSamples=[];lastRenderedLine="";constructor(D=0,F=0){this.filesTotal=D,this.bytesTotal=F,this.startTime=Date.now(),this.lastUpdateTime=this.startTime}inFlightBytes(){let D=0;for(let F of this.inFlight.values())D+=F.transferred;return D}processLine(D){let F=D.file??D.action?.file;if(D.ok===!0||D.success===!0){this.filesCompleted++;let $=F??this.currentFile,J=$?this.inFlight.get($):void 0,Q=J?J.total||J.transferred:0;if(this.totalBytesTransferred+=Q,$)this.inFlight.delete($);this.render();return}if(D["byte-progress"]!==void 0){let $=F??this.currentFile;if(!$)return;this.currentFile=$;let J=this.inFlight.get($)??{transferred:0,total:0};if(J.transferred=D["byte-progress"]??J.transferred,D["total-size"]!==void 0)J.total=D["total-size"];this.inFlight.set($,J);let Q=Date.now(),Y=(Q-this.lastUpdateTime)/1000;if(Y>0.5){let B=this.totalBytesTransferred+this.inFlightBytes(),G=(B-this.lastBytesTransferred)/Y;if(G>0){if(this.speedSamples.push(G),this.speedSamples.length>5)this.speedSamples.shift()}this.lastBytesTransferred=B,this.lastUpdateTime=Q}this.render()}}incrementFilesCompleted(){this.filesCompleted++}setFilesTotal(D){this.filesTotal=D}setBytesTotal(D){this.bytesTotal=D}getPercent(){let D=this.totalBytesTransferred+this.inFlightBytes();if(this.bytesTotal>0)return Math.min(100,Math.round(D/this.bytesTotal*100));if(this.filesTotal>0)return Math.min(100,Math.round(this.filesCompleted/this.filesTotal*100));return null}getProgress(){return{filesCompleted:this.filesCompleted,filesTotal:this.filesTotal,bytesTransferred:this.totalBytesTransferred+this.inFlightBytes(),bytesTotal:this.bytesTotal,currentFile:this.currentFile||void 0}}render(){let D=this.speedSamples.length>0?this.speedSamples.reduce((B,X)=>B+X,0)/this.speedSamples.length:0,F=this.totalBytesTransferred+this.inFlightBytes(),$=0,J=!1;if(this.bytesTotal>0)$=Math.min(100,Math.round(F/this.bytesTotal*100)),J=!0;else if(this.filesTotal>0)$=Math.min(100,Math.round(this.filesCompleted/this.filesTotal*100)),J=!0;let Q=this.filesTotal>0?`${this.filesCompleted}/${this.filesTotal} files`:`${this.filesCompleted} files`,Y;if(J)Y=`${WV0($)} ${$}% ${Q}`;else Y=Q;if(F>0){let B=this.bytesTotal>0?`${YD(F)}/${YD(this.bytesTotal)}`:YD(F);Y+=` | ${B}`}if(D>0)Y+=` | ${rg(D)}`;if(D>0){let B=0;if(this.bytesTotal>0)B=Math.max(0,this.bytesTotal-F);else for(let X of this.inFlight.values())if(X.total>X.transferred)B+=X.total-X.transferred;if(B>0){let X=B/D;if(X>0)Y+=` | ETA ${GV0(X)}`}}if(Y!==this.lastRenderedLine)process.stderr.write(`\r${W.cyan(Y)}${" ".repeat(10)}`),this.lastRenderedLine=Y}finish(D){let F=(Date.now()-this.startTime)/1000;if(process.stderr.write(`\r${" ".repeat(this.lastRenderedLine.length+15)}\r`),D>0){let $=F>0?`${rg(this.totalBytesTransferred/F)}`:"",J=[`${D} file${D!==1?"s":""} downloaded`,this.totalBytesTransferred>0?YD(this.totalBytesTransferred):"",$].filter(Boolean).join(" | ");process.stderr.write(`${W.green(J)}
|
|
100
100
|
`)}}}var dW=S(()=>{ND()});var Kh={};r6(Kh,{verifyGitHubAuth:()=>_9,toS3Credentials:()=>PD,switchBranch:()=>AV0,setKeyPresent:()=>qh,selectAnnexS3Remote:()=>FH,saveDataset:()=>a8,runCommand:()=>T,resolveUpstreamRef:()=>WH,resolveGitHubCloneAuth:()=>Wh,readRemoteHeadDatasetVersion:()=>GH,readLocalDatasetVersion:()=>XH,pushToGitHub:()=>C1,pushBranch:()=>SF,markInheritedOpenNeuroRemotesIgnored:()=>DH,listDatasetVersions:()=>JH,isWorkingTreeDirty:()=>HH,isNonFastForwardPush:()=>Xh,isGitAnnexDataset:()=>R1,isDataladDataset:()=>OV0,initOrEnableSpecialRemote:()=>Bh,initDataset:()=>n6,githubTokenCredentialHelper:()=>Gh,gitMergeFastForward:()=>KH,gitFetchOrigin:()=>qH,gitAnnexAdd:()=>i6,getVersionCommit:()=>QH,getRemoteUuid:()=>UQ,getLocalDatasetInfo:()=>$H,getKeyHashDirs:()=>RV0,getKeyHashDir:()=>Hh,getDatasetStats:()=>ZV0,getDatasetIdFromRemote:()=>s8,getDatasetData:()=>VQ,getCurrentBranch:()=>o8,getAnnexWhereisAll:()=>ZQ,getAnnexS3Remotes:()=>g9,formatBytes:()=>YD,extractWhereisKeyUrl:()=>nW,ensureLocalMainBranch:()=>h9,ensureGitAnnexInitialized:()=>rW,enableS3Remote:()=>h4,dropUnusedAnnexObjects:()=>zH,dropFiles:()=>eW,detectImportMarker:()=>EQ,createRevertBranch:()=>YH,createDataladDataset:()=>CV0,countPendingDownload:()=>zQ,copyToAnnexRemote:()=>C8,configureS3Remote:()=>o1,configureLargefiles:()=>g4,configureGitHubRemote:()=>i8,commitRevert:()=>BH,collectFileManifest:()=>EH,cloneDataset:()=>Q1,clearAnnexCredentials:()=>ID,checkPrerequisites:()=>x9,checkGitHubSSH:()=>$h,checkGitAnnexInstalled:()=>sW,checkDownloadPrerequisites:()=>IF,checkAWSCredentials:()=>zV0,batchSetKeysPresent:()=>VH,awsCredentialEnv:()=>KQ,annexRemoteExists:()=>Yh,acceptGitHubInvitation:()=>f9,NEMAR_S3_REMOTE_NAME:()=>qQ,ANNEX_REMOTE_EXISTS_RE:()=>Qh});import{existsSync as iW,readFileSync as HV0,statSync as qV0}from"fs";import{join as aW}from"path";var{spawn:oW}=globalThis.Bun;async function T(D,F={}){let $={...process.env,GIT_TERMINAL_PROMPT:"0",...F.env};for(let H of F.unsetEnv??[])delete $[H];let J=oW({cmd:D,cwd:F.cwd,stdout:"pipe",stderr:"pipe",env:$}),Q=!1,Y;if(F.timeout)Y=setTimeout(()=>{Q=!0,J.kill()},F.timeout);if(pW()){let H=F.cwd?` (cwd=${F.cwd})`:"";y9(W.dim(`$ ${D.join(" ")}${H}`))}let B=await new Response(J.stdout).text(),X=await new Response(J.stderr).text(),G=await J.exited;if(Y)clearTimeout(Y);if(pW()){if(B.trim())y9(W.dim(B.trimEnd()));if(X.trim())y9(W.yellow(X.trimEnd()));y9(W.dim(`(exit ${G})`))}if(Q)return{stdout:B,stderr:X||`Command timed out after ${Math.round(F.timeout/1000)}s`,exitCode:G??1};return{stdout:B,stderr:X,exitCode:G}}function tg(D){return D.split(".").map((F)=>{let $=Number.parseInt(F.replace(/[^0-9]/g,""),10);return Number.isNaN($)?0:$})}function KV0(D,F){let $=tg(D),J=tg(F);for(let Q=0;Q<Math.max($.length,J.length);Q++){let Y=$[Q]||0,B=J[Q]||0;if(Y>B)return!0;if(Y<B)return!1}return!0}async function sW(){try{let{stdout:F,exitCode:$,stderr:J}=await T(["git-annex","version"]);if($!==0)return console.warn("git-annex version returned non-zero exit code:",$),console.warn("stderr:",J),{installed:!1,minVersion:"10.0",error:`Version check failed: ${J.trim()}`};let Q=F.match(/version:\s*(\d+\.\d+)/),Y=Q?Q[1]:void 0;if(!Y)console.warn("Could not parse git-annex version from output:",F);return{installed:!0,version:Y,minVersion:"10.0",compatible:Y?KV0(Y,"10.0"):void 0}}catch(F){let $=F instanceof Error?F.message:String(F);if($.includes("ENOENT")||$.includes("not found"))return console.info("git-annex not found in PATH"),{installed:!1,minVersion:"10.0"};return console.error("Error checking git-annex installation:",$),{installed:!1,minVersion:"10.0",error:$}}}async function $h(){if(process.env.GH_TOKEN)return{accessible:!0,username:"token-auth",useHttps:!0};try{let{stdout:D,stderr:F}=await T(["ssh","-T","-o","BatchMode=yes","-o","StrictHostKeyChecking=accept-new","-o","ConnectTimeout=10","git@github.com"]),$=D+F,J=$.match(/Hi ([^!]+)!/);if(J)return{accessible:!0,username:J[1]};if($.includes("Permission denied"))return{accessible:!1};return{accessible:$.includes("successfully authenticated")}}catch(D){let F=D instanceof Error?D.message:String(D);if(F.includes("ENOENT")||F.includes("not found"))console.info("SSH command not found");else console.error("Error checking GitHub SSH access:",F);return{accessible:!1}}}async function zV0(){if(process.env.AWS_ACCESS_KEY_ID&&process.env.AWS_SECRET_ACCESS_KEY)return{configured:!0,source:"environment"};try{let{stdout:D,exitCode:F}=await T(["aws","configure","get","aws_access_key_id"]);if(F===0&&D.trim())return{configured:!0,source:"aws-cli"}}catch(D){let F=D instanceof Error?D.message:String(D);if(F.includes("ENOENT")||F.includes("not found"))console.info("AWS CLI not found in PATH");else console.error("Error checking AWS credentials:",F)}return{configured:!1}}function Jh(){let D=process.platform;if(D==="darwin")return"brew install git-annex";if(D==="linux")return"apt install git-annex (Debian/Ubuntu)";return"See https://git-annex.branchable.com/install/"}async function x9(){let[D,F]=await Promise.all([sW(),$h()]),$=[];if(!D.installed)$.push(`git-annex is not installed. Install: ${Jh()}`);else if(D.compatible===!1)$.push(`git-annex version ${D.version} is too old. Required: >= ${D.minVersion}`);if(!F.accessible){if(!(await tW()).token)$.push("GitHub authentication not configured. Run 'gh auth login' to authenticate.")}return{gitAnnex:D,githubSSH:F,allPassed:$.length===0,errors:$}}async function R1(D){if(!iW(aW(D,".git")))return!1;try{let{exitCode:F}=await T(["git","annex","info"],{cwd:D});return F===0}catch(F){let $=F instanceof Error?F.message:String(F);if(!$.includes("ENOENT")&&!$.includes("not found"))console.error(`Error checking if ${D} is a git-annex dataset:`,$);return!1}}async function n6(D,F={}){if(!F.force&&await R1(D))return{success:!0};try{let $={};if(F.author)$.GIT_AUTHOR_NAME=F.author.name,$.GIT_AUTHOR_EMAIL=F.author.email,$.GIT_COMMITTER_NAME=F.author.name,$.GIT_COMMITTER_EMAIL=F.author.email;let{stderr:J,exitCode:Q}=await T(["git","init","-b","main",D],{...Object.keys($).length>0?{env:$}:{}});if(Q!==0)return{success:!1,error:J.trim()||"Failed to initialize git repository"};let Y=Object.keys($).length>0?{env:$}:{},{stderr:B,exitCode:X}=await T(["git","annex","init"],{cwd:D,...Y});if(X!==0)return{success:!1,error:B.trim()||"Failed to initialize git-annex"};let{stderr:G,exitCode:H}=await T(["git","commit","--allow-empty","-m","Initialize dataset"],{cwd:D,...Y});if(H!==0)return{success:!1,error:G.trim()||"Failed to create initial commit"};let{stderr:q,exitCode:K}=await T(["git","annex","adjust","--unlock"],{cwd:D,...Y});if(K!==0)return{success:!1,error:q.trim()||"Failed to switch to unlocked mode"};return{success:!0}}catch($){return{success:!1,error:$.message}}}async function rW(D){try{let{exitCode:F,stderr:$}=await T(["git","annex","info"],{cwd:D});if(F===0)return{success:!0};if($.includes("First run: git-annex init")){let{stderr:J,exitCode:Q}=await T(["git","annex","init"],{cwd:D});if(Q!==0)return{success:!1,error:J.trim()||"Failed to initialize git-annex"};return{success:!0}}return{success:!1,error:$.trim()||"Failed to check git-annex status"}}catch(F){return{success:!1,error:F.message}}}async function g4(D,F){let $=["*.edf","*.bdf","*.set","*.fif","*.vhdr","*.eeg","*.cnt","*.fdt"],J=["*.tsv","*.json","*.md","*.txt","*.yml","*.yaml","README*","LICENSE*","CHANGES*",".bidsignore",".gitignore"],Q=$.map((G)=>`include=${G}`).join(" or "),Y=J.map((G)=>`exclude=${G}`).join(" and "),B=`(${Q} or largerthan=100kb) and ${Y}`,X=F||B;try{let{stderr:G,exitCode:H}=await T(["git","annex","config","--set","annex.largefiles",X],{cwd:D});if(H!==0)return{success:!1,error:G.trim()||"Failed to configure largefiles"};return{success:!0}}catch(G){return{success:!1,error:G.message}}}async function i6(D,F="."){try{let{stderr:$,exitCode:J}=await T(["git","annex","add",F],{cwd:D});if(J!==0)return{success:!1,error:$.trim()||"Failed to add files to git-annex"};return{success:!0}}catch($){return{success:!1,error:$.message}}}function PD(D){return{accessKeyId:D.access_key_id,secretAccessKey:D.secret_access_key,sessionToken:D.session_token}}function cW(D){let F=[/^\(merging .* into .*\.\.\.\)$/,/^\(recording state in git\.\.\.\)$/,/^\(scanning for /,/^\(checking /];return D.split(`
|
|
101
101
|
`).filter(($)=>{let J=$.trim();if(!J)return!1;if(J.includes("setting annex-ignore"))return!1;if(F.some((Q)=>Q.test(J)))return!1;return!0}).join(`
|
|
@@ -113,8 +113,8 @@ Fix one of these:
|
|
|
113
113
|
Add the public key to https://github.com/settings/keys
|
|
114
114
|
Test with: ssh -T git@github.com`}}}try{let{stdout:Q}=await T(["git","remote","get-url",$],{cwd:D});if(Q.trim()){let{stderr:Y,exitCode:B}=await T(["git","remote","set-url",$,J],{cwd:D});if(B!==0)return{success:!1,error:Y.trim()}}else{let{stderr:Y,exitCode:B}=await T(["git","remote","add",$,J],{cwd:D});if(B!==0)return{success:!1,error:Y.trim()}}return{success:!0}}catch(Q){return{success:!1,error:Q.message}}}async function a8(D,F,$){try{let J={};if($)J.GIT_AUTHOR_NAME=$.name,J.GIT_AUTHOR_EMAIL=$.email,J.GIT_COMMITTER_NAME=$.name,J.GIT_COMMITTER_EMAIL=$.email;let{stderr:Q,exitCode:Y}=await T(["git","add","-A"],{cwd:D,...Object.keys(J).length>0?{env:J}:{}});if(Y!==0)return{success:!1,error:Q.trim()||"Failed to stage changes"};let{stdout:B,exitCode:X,stderr:G}=await T(["git","status","--porcelain"],{cwd:D});if(X!==0)return{success:!1,error:G.trim()||"Failed to check git status"};if(!B.trim())return{success:!0};let{stderr:H,exitCode:q}=await T(["git","commit","-m",F],{cwd:D,...Object.keys(J).length>0?{env:J}:{}});if(q!==0){if(H.includes("nothing to commit"))return{success:!0};return{success:!1,error:H.trim()||"Failed to commit changes"}}return{success:!0}}catch(J){return{success:!1,error:J.message}}}function Xh(D){return/\[rejected\]|fetch first|non-fast-forward|Updates were rejected/i.test(D)}async function C1(D,F="origin",$){try{let J=$;if(!J){let K=await o8(D);if(!K||K==="HEAD"){let{exitCode:V}=await T(["git","log","-1","--oneline"],{cwd:D});if(V!==0)return{success:!1,error:"No commits found. The repository may not have been initialized correctly, or no changes were saved before pushing."};if(K==="HEAD")J="HEAD:main";else return{success:!1,error:"Could not detect current branch"}}else if(K.startsWith("adjusted/")){let V=K.replace(/^adjusted\//,"").replace(/\(.*\)$/,"");J=`${K}:${V}`}else J=K}let Q=J.includes(":")?J.slice(J.indexOf(":")+1):J,Y=!J.startsWith("adjusted/")&&J!=="HEAD:main",B="",X=!1,G=0;for(let K=0;K<=Dh;K++){let V=await T(["git","push","-u",F,J],{cwd:D});if(V.exitCode===0){X=!0;break}if(B=V.stderr,!Y||K===Dh||!Xh(V.stderr))break;let z=await T(["git","fetch",F],{cwd:D});if(z.exitCode!==0)return{success:!1,error:`Push rejected (non-fast-forward) and the retry fetch of ${F} failed: ${z.stderr.trim()||`exit ${z.exitCode}`}. Cannot integrate remote commits.`};let Z=await T(["git","rebase",`${F}/${Q}`],{cwd:D});if(Z.exitCode!==0)return await T(["git","rebase","--abort"],{cwd:D}),{success:!1,error:`Push rejected: ${F}/${Q} has diverging commits and auto-rebase failed: ${Z.stderr.trim()}`};G++}if(!X){let K=G>0?` (still rejected after ${G} fetch+rebase retry cycle(s))`:"";return{success:!1,error:`${B.trim()||"Failed to push to GitHub"}${K}`}}let{stderr:H,exitCode:q}=await T(["git","push",F,"git-annex"],{cwd:D});if(q!==0)return{success:!0,warning:`Main branch pushed, but git-annex branch failed: ${H.trim()}. Clone operations may have issues.`};return{success:!0}}catch(J){return{success:!1,error:J.message}}}async function ZV0(D){try{let{stdout:J,exitCode:Q}=await T(["git","annex","info","--json"],{cwd:D});if(Q===0){let Y=JSON.parse(J);return{totalFiles:Y["local annex keys"]||0,totalSize:Y["local annex size"]||0,annexedFiles:Y["local annex keys"]||0,annexedSize:Y["local annex size"]||0}}}catch(J){let Q=J instanceof Error?J.message:String(J);console.warn("git annex info failed, falling back to manual counting:",Q)}let{stdout:F}=await T(["find",D,"-type","f"],{cwd:D});return{totalFiles:F.trim().split(`
|
|
115
115
|
`).filter(Boolean).length,totalSize:0,annexedFiles:0,annexedSize:0}}async function IF(){let D=await sW(),F=[];if(!D.installed)F.push(`git-annex is not installed. Install: ${Jh()}`);else if(D.compatible===!1)F.push(`git-annex version ${D.version} is too old. Required: >= ${D.minVersion}`);return{gitAnnex:D,allPassed:F.length===0,errors:F}}function Gh(D){return`!printf 'username=x-access-token\\npassword=${D}'`}function Wh(D,F){if(!D.startsWith("git@github.com:"))return{url:D};let $=F?.trim();if(!$||/[\s']/.test($))return{url:D};return{url:`https://github.com/${D.replace("git@github.com:","")}`,credentialHelper:Gh($)}}async function Q1(D,F,$={}){try{let J=D,Q;if($.useGitHubToken){let q=process.env.GH_TOKEN?.trim()||null,K;if(!q){let z=await tW();q=z.token,K=z.error}let V=Wh(D,q);if(J=V.url,Q=V.credentialHelper,D.startsWith("git@github.com:")&&!Q)return{success:!1,error:`No usable GitHub token for authenticated clone of ${D} (GH_TOKEN unset/malformed${K?`; gh CLI: ${K}`:""}). Set GH_TOKEN on this runner.`}}let Y=Q?{GIT_CONFIG_COUNT:"1",GIT_CONFIG_KEY_0:"credential.https://github.com.helper",GIT_CONFIG_VALUE_0:Q}:void 0,{stderr:B,exitCode:X}=await T(["git","clone",J,F],Y?{env:Y}:{});if(X!==0)return{success:!1,error:B.trim()||"Failed to clone dataset"};if(Q){let{exitCode:q,stderr:K}=await T(["git","config","credential.https://github.com.helper",Q],{cwd:F});if(q!==0)return{success:!1,error:`Cloned but failed to persist the credential helper (later pushes would fail to authenticate): ${K.trim()||"git config returned non-zero"}`}}let{stderr:G,exitCode:H}=await T(["git","annex","init"],{cwd:F});if(H!==0){let{exitCode:q}=await T(["git","annex","info"],{cwd:F});if(q!==0)return{success:!1,error:`Cloned repository but git-annex initialization failed: ${G.trim()}`};console.warn("git annex init returned non-zero but annex is initialized")}return{success:!0}}catch(J){return{success:!1,error:J instanceof Error?J.message:String(J)}}}async function zQ(D,F,$){let J=F&&F.length>0?F:["."],Q=$&&$.length>0?$:[];try{let{stdout:Y,stderr:B,exitCode:X}=await T(["git","annex","find","--not","--in=here",...Q,"--json",...J],{cwd:D});if(X!==0){if(process.env.VERBOSE&&B.trim())console.warn(`countPendingDownload: git annex find failed: ${B.trim()}`);return null}let G=0,H=0,q=!1,K=!1;for(let V of Y.split(`
|
|
116
|
-
`)){let z=V.trim();if(!z)continue;if(K=!0,!z.startsWith("{")){q=!0;continue}try{let Z=JSON.parse(z);if(G++,Z.bytesize){let U=Number.parseInt(Z.bytesize,10);if(Number.isFinite(U))H+=U}}catch{q=!0}}if(G===0&&K&&q)return null;return{fileCount:G,totalBytes:H}}catch(Y){if(process.env.VERBOSE)console.warn(`countPendingDownload: ${Y.message}`);return null}}async function EQ(D){try{let{stdout:F,exitCode:$}=await T(["git","log","-1","--format=%H","--",".nemar/metadata.json"],{cwd:D});if($!==0)return"unknown";return F.trim().length>0?"present":"absent"}catch{return"unknown"}}async function VQ(D,F={}){let $=F.jobs||4,J=F.paths&&F.paths.length>0?F.paths:["."],Q=F.extraArgs??[],Y=Boolean(F.onProgress),B=KQ(F.credentials)??{},X=Object.fromEntries(Object.entries({...process.env,...B}).filter((G)=>G[1]!=null));try{if(Y){let Z=["git","annex","get","--json","--json-progress","-J",$.toString(),...Q,...J],U=oW({cmd:Z,cwd:D,stdout:"pipe",stderr:"pipe",env:X}),M=0,A="",C=[],w=(async()=>{let
|
|
117
|
-
`);j=a.pop()??"";for(let Q0 of a){let $0=Q0.trim();if(!$0||!$0.startsWith("{"))continue;try{let N0=JSON.parse($0);if(F.onProgress?.(N0),N0.ok===!0||N0.success===!0)M++}catch{}}}if(j.trim().startsWith("{"))try{let
|
|
116
|
+
`)){let z=V.trim();if(!z)continue;if(K=!0,!z.startsWith("{")){q=!0;continue}try{let Z=JSON.parse(z);if(G++,Z.bytesize){let U=Number.parseInt(Z.bytesize,10);if(Number.isFinite(U))H+=U}}catch{q=!0}}if(G===0&&K&&q)return null;return{fileCount:G,totalBytes:H}}catch(Y){if(process.env.VERBOSE)console.warn(`countPendingDownload: ${Y.message}`);return null}}async function EQ(D){try{let{stdout:F,exitCode:$}=await T(["git","log","-1","--format=%H","--",".nemar/metadata.json"],{cwd:D});if($!==0)return"unknown";return F.trim().length>0?"present":"absent"}catch{return"unknown"}}async function VQ(D,F={}){let $=F.jobs||4,J=F.paths&&F.paths.length>0?F.paths:["."],Q=F.extraArgs??[],Y=Boolean(F.onProgress),B=KQ(F.credentials)??{},X=Object.fromEntries(Object.entries({...process.env,...B}).filter((G)=>G[1]!=null));try{if(Y){let Z=["git","annex","get","--json","--json-progress","-J",$.toString(),...Q,...J],U=oW({cmd:Z,cwd:D,stdout:"pipe",stderr:"pipe",env:X}),M=0,A="",C=[],w=(async()=>{let n=U.stderr.getReader(),r=new TextDecoder;for(;;){let{done:a,value:Q0}=await n.read();if(a)break;C.push(Q0)}A=r.decode(C.reduce((a,Q0)=>{let $0=new Uint8Array(a.length+Q0.length);return $0.set(a),$0.set(Q0,a.length),$0},new Uint8Array))})(),I=U.stdout.getReader(),R=new TextDecoder,j="";for(;;){let{done:n,value:r}=await I.read();if(n)break;j+=R.decode(r,{stream:!0});let a=j.split(`
|
|
117
|
+
`);j=a.pop()??"";for(let Q0 of a){let $0=Q0.trim();if(!$0||!$0.startsWith("{"))continue;try{let N0=JSON.parse($0);if(F.onProgress?.(N0),N0.ok===!0||N0.success===!0)M++}catch{}}}if(j.trim().startsWith("{"))try{let n=JSON.parse(j.trim());if(F.onProgress?.(n),n.ok===!0||n.success===!0)M++}catch{}if(await w,await U.exited!==0)return{success:!1,error:A.trim()||"Failed to get dataset data"};return{success:!0,filesDownloaded:M}}let G=["git","annex","get","-J",$.toString(),...Q,...J],{stdout:H,stderr:q,exitCode:K}=await T(G,{cwd:D,...Object.keys(B).length>0&&{env:X}});if(K!==0)return{success:!1,error:q.trim()||"Failed to get dataset data"};let V=H.match(/^get .+ ok$/gm);return{success:!0,filesDownloaded:V?V.length:0}}catch(G){return{success:!1,error:G.message}}}async function eW(D,F){let $=F&&F.length>0?F:["."];try{let J=["git","annex","drop",...$],{stdout:Q,stderr:Y,exitCode:B}=await T(J,{cwd:D});if(B!==0){let H=[];for(let V of Y.split(`
|
|
118
118
|
`)){let z=V.match(/^drop (.+) \(unsafe\)/);if(z)H.push(z[1])}let q=Q.match(/^drop .+ ok$/gm),K=q?q.length:0;return{success:!1,error:Y.trim(),dropped:K,kept:H}}let X=Q.match(/^drop .+ ok$/gm);return{success:!0,dropped:X?X.length:0,kept:[]}}catch(J){return{success:!1,error:(J instanceof Error?J.message:String(J))||"Unknown error during drop",dropped:0,kept:[]}}}async function UV0(D,F){let{stdout:$,exitCode:J}=await T(["git","config",`remote.${F}.annex-ignore`],{cwd:D});if(J!==0)return!1;return $.trim().toLowerCase()==="true"}async function g9(D){let F=[],{stdout:$,exitCode:J}=await T(["git","config","--get-regexp","^remote\\..*\\.annex-s3"],{cwd:D});if(J===0&&$.trim())for(let B of $.trim().split(`
|
|
119
119
|
`)){let X=B.match(/^remote\.(.+?)\.annex-/);if(X&&Fh.test(X[1]))F.push(X[1])}if(F.length===0){let{stdout:B,exitCode:X,stderr:G}=await T(["git","annex","info","--json"],{cwd:D});if(X!==0){if(G.trim())console.error(`git annex info failed: ${G.trim()}`);return[]}if(!B.trim())return[];let H;try{H=JSON.parse(B)}catch(K){let V=K instanceof Error?K.message:String(K);return console.error(`Failed to parse git-annex info JSON: ${V}`),[]}let q=[...Array.isArray(H["trusted repositories"])?H["trusted repositories"]:[],...Array.isArray(H["semitrusted repositories"])?H["semitrusted repositories"]:[],...Array.isArray(H["untrusted repositories"])?H["untrusted repositories"]:[]];for(let K of q){if(!K?.description?.includes("["))continue;let V=K.description.match(/\[(.+?)\]/);if(!V)continue;let z=V[1];if(!Fh.test(z))continue;let{stdout:Z}=await T(["git","config",`remote.${z}.annex-s3`],{cwd:D});if(Z.trim())F.push(z)}}let Q=[...new Set(F)],Y=[];for(let B of Q){if(await UV0(D,B))continue;Y.push(B)}return Y}async function DH(D,F){let $=[];for(let J of["s3-PUBLIC","s3-PRIVATE"]){let Q=await T(["git","config",`remote.${J}.annex-uuid`],{cwd:D});if(Q.exitCode!==0||!Q.stdout.trim())continue;let Y=await T(["git","config",`remote.${J}.annex-ignore`,"true"],{cwd:D});if(Y.exitCode!==0){F?.(J,Y.stderr.trim()||"unknown error");continue}$.push(J)}return $}async function FH(D,F){if(F.length===0)return null;if(F.length===1)return F[0];if(F.includes(qQ))return qQ;let{stdout:$,exitCode:J}=await T(["git","annex","info","--json"],{cwd:D});if(J===0&&$.trim())try{let Q=JSON.parse($),Y=[...Array.isArray(Q["trusted repositories"])?Q["trusted repositories"]:[],...Array.isArray(Q["semitrusted repositories"])?Q["semitrusted repositories"]:[],...Array.isArray(Q["untrusted repositories"])?Q["untrusted repositories"]:[]];for(let B of Y){if(B?.description!==`[${qQ}]`)continue;let X=typeof B.uuid==="string"?B.uuid:null;if(!X)continue;for(let G of F){let{stdout:H}=await T(["git","config",`remote.${G}.annex-uuid`],{cwd:D});if(H.trim()===X)return G}}}catch(Q){let Y=Q instanceof Error?Q.message:String(Q);console.warn(`Could not parse git annex info JSON for remote selection: ${Y}`)}return F[0]}async function C8(D,F,$=4,J){try{let Q=["git","annex","copy","--to",F,"-J",$.toString(),"."],Y=KQ(J),{stdout:B,stderr:X,exitCode:G}=await T(Q,{cwd:D,env:Y});if(G!==0)return{success:!1,error:X.trim()||"Failed to copy to remote",filesCopied:0};let H=B.match(/^copy .+ ok$/gm);return{success:!0,filesCopied:H?H.length:0}}catch(Q){return{success:!1,error:(Q instanceof Error?Q.message:String(Q))||"Unknown error during copy",filesCopied:0}}}async function $H(D){if(!iW(D))return null;try{let{stdout:F,exitCode:$}=await T(["git","annex","info","--json"],{cwd:D});if($===0){let J=JSON.parse(F),Q=0,Y=J["local annex size"]||"0 bytes",B=Y.match(/([\d.]+)\s*(bytes?|KB|MB|GB|TB)/i);if(B){let H=Number.parseFloat(B[1]),q=B[2].toLowerCase();Q=H*({byte:1,bytes:1,kb:1024,mb:1048576,gb:1073741824,tb:1099511627776}[q]||1)}let X=J["annexed files in working tree"]||0,G=J["local annex keys"]||0;return{files:X,size:Y,sizeBytes:Q,annexedFiles:X,presentFiles:G,missingFiles:X-G}}}catch(F){let $=F instanceof Error?F.message:String(F);console.warn(`Failed to get git-annex info for ${D}: ${$}`)}try{let{stdout:F}=await T(["find",".","-type","f","-not","-path","./.git/*"],{cwd:D}),$=F.trim().split(`
|
|
120
120
|
`).filter(Boolean).length;return{files:$,size:"unknown",sizeBytes:0,annexedFiles:0,presentFiles:$,missingFiles:0}}catch(F){let $=F instanceof Error?F.message:String(F);return console.warn(`Failed to count files in ${D}: ${$}`),null}}async function JH(D){try{let{stdout:F,exitCode:$}=await T(["git","tag","-l","--sort=-version:refname","--format=%(refname:short)|%(creatordate:short)|%(objectname:short)"],{cwd:D});if($!==0||!F.trim())return[];return F.trim().split(`
|
|
@@ -133,9 +133,9 @@ This dataset is mirrored on NEMAR from OpenNeuro.
|
|
|
133
133
|
- Source: [${F}](${G})${H}
|
|
134
134
|
`;return OH(sD(D,"README.md"),q),{kind:"created",path:"README.md"}}function dV0(D,F){let $=[],J=0;for(let[Q,Y]of D){let B=UH(Y),X=Y.startsWith("http")?Y:null;if(!B&&!X){J++;continue}$.push({key:Q,sourceUrl:X,source:B,destUri:`s3://${O8}/${F}/objects/${Q}`})}return{items:$,skipped:J}}async function xh(D,F={}){let $=wH(D),J=F.workDir||Nh(sD(Rh(),`nemar-import-${$}-`)),Q=sD(J,$);console.log(W.cyan(`
|
|
135
135
|
[prepare] ${D} -> ${$}
|
|
136
|
-
`)),console.log(W.dim(`Working directory: ${J}`));let Y=O("Cloning OpenNeuro dataset...").start(),B=`https://github.com/${hV0}/${D}.git`,X=await Q1(B,Q);if(!X.success)Y.fail(`Failed to clone: ${X.error}`),process.exit(1);if(Y.succeed(`Cloned ${D}`),!await h9(Q,{yes:!0}))console.error(W.red("Cannot proceed with import: branch must be named 'main'.")),process.exit(1);let H=O("Normalizing dataset metadata...").start();try{let
|
|
136
|
+
`)),console.log(W.dim(`Working directory: ${J}`));let Y=O("Cloning OpenNeuro dataset...").start(),B=`https://github.com/${hV0}/${D}.git`,X=await Q1(B,Q);if(!X.success)Y.fail(`Failed to clone: ${X.error}`),process.exit(1);if(Y.succeed(`Cloned ${D}`),!await h9(Q,{yes:!0}))console.error(W.red("Cannot proceed with import: branch must be named 'main'.")),process.exit(1);let H=O("Normalizing dataset metadata...").start();try{let c=await Ph(Q,D);if(c.length>0)H.succeed(`Un-annexed ${c.length} metadata file(s): ${c.join(", ")}`);else H.stop()}catch(c){H.fail(`Failed to normalize annexed metadata: ${c instanceof Error?c.message:String(c)}`),process.exit(1)}let q=mV0(Q),K=q.Name||D,V=lV0(q);if(console.log(W.dim(` Dataset: ${K}`)),V)console.log(W.dim(` OpenNeuro DOI: ${V}`));let z=O("Creating NEMAR dataset record...").start();try{let c=await vg({dataset_id:$,name:K,source:"openneuro",source_id:D});z.succeed(`Created ${c.dataset_id} (${c.github_repo})`)}catch(c){let N=c instanceof Error?c.message:String(c);if(N.includes("already exists")||N.includes("409"))z.warn(`Dataset ${$} already exists, continuing...`);else z.fail(`Failed to create dataset: ${N}`),process.exit(1)}let Z=new Map;if(!F.skipData){let c=O("Mapping annexed files from OpenNeuro S3...").start(),N=await T(["git","annex","enableremote","s3-PUBLIC"],{cwd:Q});if(N.exitCode!==0)c.fail(`Failed to enable s3-PUBLIC remote: ${N.stderr.trim()}`),process.exit(1);let b=await ZQ(Q);if(Z=b.urlMap,Z.size===0){if(b.fileCount>0)throw c.fail(`${b.fileCount} annexed file(s) present but none had a copyable source URL`),Error(`Import aborted: ${$} has ${b.fileCount} annexed file(s) but git-annex whereis mapped 0 to a copyable source (likely the content's only location is a remote NEMAR can't read). Refusing to publish a dataset with no data. Investigate the upstream annex remotes before retrying.`);c.warn("No annexed files found, skipping data copy")}else c.succeed(`Found ${Z.size} annexed files`)}await DH(Q,(c,N)=>{console.log(W.yellow(` Warning: could not mark ${c} as annex-ignore (${N}). Future pushes may try to upload to ${c}; run 'git config remote.${c}.annex-ignore true' manually.`))});let U=O("Configuring NEMAR remote...").start(),M=await T(["git","remote","remove","origin"],{cwd:Q});if(M.exitCode!==0&&!M.stderr.includes("No such remote"))U.fail(`Failed to remove OpenNeuro remote: ${M.stderr.trim()}`),process.exit(1);let A=`git@github.com:nemarDatasets/${$}.git`,C=await i8(Q,A,"origin");if(!C.success)U.fail(`Failed to configure remote: ${C.error}`),process.exit(1);U.succeed("Configured NEMAR remote");let w="",I=[];if(!F.skipData&&Z.size>0){let c=O("Setting up NEMAR S3 remote...").start(),N=Ih(),b=await o1(Q,{name:"nemar-s3",bucket:O8,prefix:`${$}/objects`,region:t8},N);if(!b.success)c.fail(`Failed to configure S3 remote: ${b.error}`),process.exit(1);let u=await UQ(Q,"nemar-s3");if(!u)c.fail("Failed to get NEMAR S3 remote UUID"),process.exit(1);w=u,c.succeed("Configured NEMAR S3 remote");let L0=dV0(Z,$);if(I=L0.items,L0.skipped>0)console.log(W.yellow(` Skipped ${L0.skipped} keys (no usable source URL)`));console.log(W.dim(` Prepared ${I.length} files for server-side copy`))}let R=O("Seeding metadata...").start(),j;try{vh(Q,$,D,q,V),j=yh(Q,D,V)}catch(c){R.fail(`Failed to seed metadata: ${c instanceof Error?c.message:String(c)}`),process.exit(1)}let v=[".nemar/metadata.json"];if(j.kind==="renamed")v.push("README","README.md");else if(j.kind==="created")v.push("README.md");let n=await T(["git","add",...v],{cwd:Q});if(n.exitCode!==0)R.fail(`Failed to stage metadata: ${n.stderr.trim()}`),process.exit(1);let r=await T(["git","commit","-m",`Add NEMAR metadata (imported from OpenNeuro ${D})`],{cwd:Q});if(r.exitCode!==0&&!r.stdout.includes("nothing to commit"))R.fail(`Failed to commit metadata: ${r.stderr.trim()}`),process.exit(1);let a=j.kind==="renamed"?"renamed README -> README.md":j.kind==="kept"?`kept upstream ${j.path}`:"wrote provenance stub README.md (no upstream README)";R.succeed(`Seeded .nemar/metadata.json (${a})`);let Q0=O("Pushing to nemarDatasets...").start(),$0=await C1(Q,"origin");if(!$0.success)Q0.fail(`Failed to push: ${$0.error}`),process.exit(1);if($0.warning)Q0.fail(`Pushed main but git-annex branch failed: ${$0.warning}. Aborting \u2014 published dataset would be uncloneable. Investigate the git-annex push failure and re-run.`),process.exit(1);Q0.succeed("Pushed to nemarDatasets");let N0={openneuroId:D,nemarId:$,nemarUuid:w,items:I};if(F.persistStaging)await NH(N0,O8,t8),console.log(W.dim(` Wrote import manifest to s3://${O8}/${$}/staging/`));return console.log(W.green(`[prepare] done: ${$} (${I.length} files to copy)`)),N0}async function _h(D,F,$={},J){let Q=wH(D),Y=J??await AQ(Q,O8,t8),B=`copy ${F.index}/${F.count}`;if($.skipData||Y.items.length===0){console.log(W.dim(`[${B}] no data to copy`));return}let X=Y.items.filter((z)=>MH(z.key,F.index,F.count)).map((z)=>({key:z.key,source:z.source,httpUrl:z.sourceUrl,destUri:z.destUri}));if(X.length===0){console.log(W.dim(`[${B}] empty shard`));return}let G=await LQ(O8,`${Q}/objects/`,t8),{toCopy:H,skipped:q}=AH(X,G);if(q.length>0)console.log(W.dim(`[${B}] skipped ${q.length} already present`));if(H.length===0){console.log(W.green(`[${B}] nothing to copy (all ${q.length} present)`));return}let K=O(`[${B}] copying ${H.length} files...`).start(),V=await LH(H,t8,bV0,(z,Z)=>{K.text=`[${B}] ${z}/${Z}`});if(V.fellBack>0)console.log(W.yellow(` ${V.fellBack} objects needed the curl fallback (check S3 permissions)`));if(V.failed.length>0){K.fail(`[${B}] ${V.failed.length} of ${H.length} files failed`);for(let z of V.failed.slice(0,5))console.error(W.red(` ${z.key}: ${z.error}`));if(V.failed.length>5)console.error(W.red(` ... and ${V.failed.length-5} more`));console.error(W.red("Re-run this shard to resume (already-copied objects are skipped).")),process.exit(1)}K.succeed(`[${B}] copied ${V.copied}, skipped ${q.length}`)}async function fh(D,F={},$){let J=wH(D),Q=$??await AQ(J,O8,t8),Y=F.workDir||Nh(sD(Rh(),`nemar-finalize-${J}-`)),B=sD(Y,`${J}-finalize`);console.log(W.cyan(`
|
|
137
137
|
[finalize] ${D} -> ${J}
|
|
138
|
-
`));let X=!F.skipData&&Q.items.length>0;if(!F.skipData&&Q.items.length===0){let R=O("Confirming dataset has no annexed data...").start(),j=await Q1(`git@github.com:nemarDatasets/${J}.git`,B,{useGitHubToken:!0});if(!j.success)R.fail(`Failed to clone ${J} for the empty-manifest check: ${j.error}`),process.exit(1);let{fileCount:v}=await ZQ(B);if(v>0)throw R.fail(`${v} annexed file(s) but the import manifest is empty`),Error(`Finalize aborted: ${J} has ${v} annexed file(s) but the import manifest is empty (no data was copied). Refusing to publish a dataset with no data. Re-run prepare + copy; if the data is genuinely unfetchable this should quarantine, not publish.`);R.succeed("Confirmed metadata-only dataset (no annexed data)")}if(X){let R=O("Verifying copied data...").start(),j=await LQ(O8,`${J}/objects/`,t8),v=Q.items.filter((L0)=>!j.has(L0.key));if(v.length>0)R.fail(`${v.length} of ${Q.items.length} objects missing at the destination. Re-run the copy phase (a shard likely failed or was cancelled) before finalizing.`),process.exit(1);R.succeed(`Verified ${Q.items.length} objects present`);let
|
|
138
|
+
`));let X=!F.skipData&&Q.items.length>0;if(!F.skipData&&Q.items.length===0){let R=O("Confirming dataset has no annexed data...").start(),j=await Q1(`git@github.com:nemarDatasets/${J}.git`,B,{useGitHubToken:!0});if(!j.success)R.fail(`Failed to clone ${J} for the empty-manifest check: ${j.error}`),process.exit(1);let{fileCount:v}=await ZQ(B);if(v>0)throw R.fail(`${v} annexed file(s) but the import manifest is empty`),Error(`Finalize aborted: ${J} has ${v} annexed file(s) but the import manifest is empty (no data was copied). Refusing to publish a dataset with no data. Re-run prepare + copy; if the data is genuinely unfetchable this should quarantine, not publish.`);R.succeed("Confirmed metadata-only dataset (no annexed data)")}if(X){let R=O("Verifying copied data...").start(),j=await LQ(O8,`${J}/objects/`,t8),v=Q.items.filter((L0)=>!j.has(L0.key));if(v.length>0)R.fail(`${v.length} of ${Q.items.length} objects missing at the destination. Re-run the copy phase (a shard likely failed or was cancelled) before finalizing.`),process.exit(1);R.succeed(`Verified ${Q.items.length} objects present`);let n=O("Re-cloning for git-annex finalize...").start(),r=await Q1(`git@github.com:nemarDatasets/${J}.git`,B,{useGitHubToken:!0});if(!r.success)n.fail(`Failed to clone ${J}: ${r.error}`),process.exit(1);n.succeed(`Cloned ${J}`);let a=Ih(),Q0=await o1(B,{name:"nemar-s3",bucket:O8,prefix:`${J}/objects`,region:t8},a);if(!Q0.success)console.error(W.red(`Failed to enable S3 remote: ${Q0.error}`)),process.exit(1);let $0=await UQ(B,"nemar-s3");if(!$0)console.error(W.red("Failed to get NEMAR S3 remote UUID on finalize clone")),process.exit(1);if(Q.nemarUuid&&$0!==Q.nemarUuid)console.error(W.red(`nemar-s3 uuid mismatch (prepare=${Q.nemarUuid} finalize=${$0}). Aborting to avoid registering keys against the wrong remote.`)),process.exit(1);let N0=O("Registering files in git-annex...").start(),c=Q.items.map((L0)=>L0.key),N=await VH(B,c,$0);if(N.failed>0)N0.fail(`${N.failed} of ${c.length} git-annex key registrations failed. Aborting before publish \u2014 those blobs would be unfindable for clones. Re-run finalize to retry.`),process.exit(1);N0.succeed(`Registered ${N.success} files in git-annex`);let b=O("Pushing git-annex branch...").start(),u=await C1(B,"origin");if(!u.success)b.fail(`Failed to push git-annex branch: ${u.error}`),process.exit(1);if(u.warning)b.fail(`git-annex branch push failed: ${u.warning}. Aborting \u2014 published dataset would be uncloneable.`),process.exit(1);b.succeed("Pushed git-annex branch")}let G=!1,H=O("Deploying CI workflows...").start();try{await f4(J),H.succeed("CI workflows deployed (BIDS validation, LLM enrichment, archive generation)"),G=!0}catch(R){let j=R instanceof Error?R.message:String(R);H.fail(`CI deployment failed: ${j}`),console.log(W.dim(` After fixing the deploy failure, run 'nemar admin ci add ${J}' and 'nemar admin publish request/approve ${J}' to resume.`))}let q=null;if(G){let R=O("Waiting for BIDS validation run to register...").start();if(q=await uV0(J,R),q.kind==="found")R.succeed("BIDS validation run registered; deferring to ci_check at approval");else if(q.kind==="timeout"){let j=F.trustUpstream?"trusting upstream OpenNeuro validation (--trust-upstream)":"no --trust-upstream \u2014 aborting";R.warn(`BIDS validation run did not register within 120s; ${j}`)}else{let j=q.lastError instanceof Error?q.lastError.message:String(q.lastError);R.fail(`All BIDS validation polls failed (last error: ${j})`)}}let K=Ch({ciDeployed:G,poll:q,trustUpstream:F.trustUpstream??!1});if(K.abortReason)console.error(W.red(K.abortReason)),process.exit(1);let V=K.skipCiCheck,z=5,Z=300000,U=O("Requesting publication...").start(),M=!1;for(let R=1;R<=z;R++)try{await XQ(J),M=!0;break}catch(j){let v=j instanceof Error?j.message:String(j);if(!v.includes("BIDS validation is currently running"))U.fail(`Failed to request publication: ${v}`),process.exit(1);if(R===z)U.fail(`BIDS validation still in progress after ${z} attempts (~${Math.round(z*Z/60000)}min). Re-run 'nemar admin publish request/approve ${J}' once validation completes.`),process.exit(1);U.text=`Waiting for BIDS validation to complete... (attempt ${R}/${z}, next retry in 5min)`,await new Promise((r)=>setTimeout(r,Z))}if(M)U.succeed("Publication requested");let A=O("Approving publication...").start(),C=10,w=!1;for(let R=1;R<=C;R++)try{await GQ(J,R>1,!1,V),w=!0;break}catch(j){let v=j instanceof Error?j.message:String(j);if(R<C)A.text=`Approving publication... (attempt ${R+1}/${C})`,await new Promise((n)=>setTimeout(n,3000));else A.fail(`Failed to approve publication after ${C} attempts: ${v}`),process.exit(1)}if(w)A.succeed("Publication approved");let I=O("Refreshing metadata + LLM enrichment...").start();try{let R=await WQ(J),j=R.enrichment?.status==="ok",v=R.sync?.metadata_columns_written===!0;if(j&&v)I.succeed("Refreshed enrichment + metadata columns");else{let n=[];if(!j)n.push(`enrichment ${R.enrichment?.status??"missing"}`);if(!v)n.push("metadata columns not written");I.warn(`Partial reindex: ${n.join(", ")} (run 'nemar admin reindex ${J}' to retry)`)}}catch(R){let j=R instanceof Error?R.message:String(R);I.warn(`Reindex failed (non-fatal): ${j}. Run 'nemar admin reindex ${J}' to retry.`)}if(F.persistStaging)await RH(J,O8,t8);console.log(W.green(`
|
|
139
139
|
Import and publish complete: ${D} -> ${J}`)),console.log(W.dim(` GitHub: https://github.com/nemarDatasets/${J}`)),console.log(W.dim(` Working dir: ${B}`))}async function cV0(D,F={}){let $=await xh(D,F);if(!F.skipData)await _h(D,{index:0,count:1},F,$);await fh(D,F,$)}var hV0="OpenNeuroDatasets",O8="nemar",t8="us-east-2",bV0=16,jh="[openneuro-upstream-inaccessible]",Ah,pV0;var TH=S(()=>{ND();c3();n8();r8();CH();Ah=["anat","beh","dwi","eeg","emg","fmap","func","ieeg","meg","micr","motion","nirs","perf","pet"];pV0=/^README(\.[A-Za-z0-9]+)?$/i});var mh={};r6(mh,{runE2ETest:()=>tV0});import{cpSync as nV0,existsSync as kH,mkdirSync as iV0,mkdtempSync as gh,readFileSync as aV0,rmSync as PH,writeFileSync as IH}from"fs";import{tmpdir as hh}from"os";import{join as e8,resolve as SH}from"path";var{spawn:oV0}=globalThis.Bun;function SD(D,...F){if(D.verbose)console.log(" ",...F)}async function uh(D,F){let $=performance.now();try{return await F(),{name:D,passed:!0,duration_ms:Math.round(performance.now()-$)}}catch(J){let Q=J instanceof Error?J.message:String(J);return{name:D,passed:!1,duration_ms:Math.round(performance.now()-$),error:Q}}}async function sV0(D){let F=[];for(let{name:$,fn:J}of D){let Q=await uh($,J);if(F.push(Q),!Q.passed)break}return F}async function kF(D,F={}){let $=oV0({cmd:D,cwd:F.cwd,stdout:"pipe",stderr:"pipe",env:{...process.env,...F.env}}),J=await new Response($.stdout).text(),Q=await new Response($.stderr).text(),Y=await $.exited;return{stdout:J,stderr:Q,exitCode:Y}}function Y1(D,F){if(!D.success)throw Error(`${F}: ${D.error}`)}function bh(D){if(!D.creds)throw Error("credentials not yet fetched");return D.creds}function rV0(){let D=[SH(__dirname,"../../test/fixtures/bids-minimal"),SH(__dirname,"../test/fixtures/bids-minimal"),SH(process.cwd(),"test/fixtures/bids-minimal")];for(let F of D)if(kH(F))return F;throw Error("Could not find test/fixtures/bids-minimal. Run from the nemar-cli root directory.")}async function tV0(D){let F=D.verbose??!1,$=performance.now(),J=gh(e8(hh(),"nemar-e2e-upload-")),Q=gh(e8(hh(),"nemar-e2e-clone-")),Y={uploadDir:J,cloneDir:Q,verbose:F},B=[];if(!D.skipReset)B.push({name:"Reset nm099999",fn:async()=>{let G=await Ig(b4);if(SD(Y,`S3 objects deleted: ${G.steps.s3_deleted}`),SD(Y,`GitHub recreated: ${G.steps.github_recreated}`),SD(Y,`D1 cleaned: ${G.steps.d1_cleaned}`),!G.success){let H=[];if(!G.steps.github_recreated)H.push("GitHub");if(!G.steps.d1_cleaned)H.push("D1");throw Error(`Reset partially failed: ${H.join(", ")}`)}}});B.push({name:"Prepare upload",fn:async()=>{let G=rV0();nV0(G,J,{recursive:!0});for(let H of[".git",".nemar",".gitattributes"]){let q=e8(J,H);if(kH(q)){let K=await kF(["chmod","-R","u+w",q]);if(K.exitCode!==0)console.warn(`chmod failed for ${q} (exit ${K.exitCode}): ${K.stderr}`);PH(q,{recursive:!0,force:!0})}}SD(Y,`Copied fixtures to ${J}`)}},{name:"Init git + annex",fn:async()=>{Y1(await n6(J,{force:!0}),"initDataset"),Y1(await g4(J),"configureLargefiles"),SD(Y,"Git + git-annex initialized")}},{name:"Configure remotes",fn:async()=>{Y.creds=await c8(b4),SD(Y,`S3 prefix: ${Y.creds.s3.prefix}`),Y1(await o1(J,{name:"nemar-s3",bucket:Y.creds.s3.bucket,prefix:`${b4}/objects`,region:Y.creds.s3.region,publicUrl:`https://${Y.creds.s3.bucket}.s3.${Y.creds.s3.region}.amazonaws.com/${b4}/objects`},PD(Y.creds.credentials)),"configureS3Remote");let G=`git@github.com:nemarDatasets/${b4}.git`;Y1(await i8(J,G),"configureGitHubRemote"),SD(Y,"S3 + GitHub remotes configured")}},{name:"Upload to S3",fn:async()=>{Y1(await i6(J),"gitAnnexAdd"),Y1(await a8(J,"Initial BIDS dataset"),"saveDataset");let G=await C8(J,"nemar-s3",4,PD(bh(Y).credentials));Y1(G,"copyToAnnexRemote"),SD(Y,`Files copied to S3: ${G.filesCopied}`),await ID(J)}},{name:"Push to GitHub",fn:async()=>{let G=await C1(J);if(Y1(G,"pushToGitHub"),G.warning)SD(Y,`Warning: ${G.warning}`);SD(Y,"Pushed to GitHub (main + git-annex branches)")}},{name:"Clone fresh",fn:async()=>{let G=`git@github.com:nemarDatasets/${b4}.git`;Y1(await Q1(G,Q),"cloneDataset");let H=await h4(Q,"nemar-s3");if(!H.success)throw Error(`enableS3Remote: ${H.error}`);SD(Y,`Clone at ${Q}, S3 remote enabled: ${H.enabled}`)}},{name:"Download + verify",fn:async()=>{let G=PD(bh(Y).credentials),H={AWS_ACCESS_KEY_ID:G.accessKeyId,AWS_SECRET_ACCESS_KEY:G.secretAccessKey};if(G.sessionToken)H.AWS_SESSION_TOKEN=G.sessionToken;let{stdout:q,stderr:K,exitCode:V}=await kF(["git","annex","get","."],{cwd:Q,env:H});if(V!==0)throw Error(`getDatasetData: ${K.trim()}`);let z=q.match(/^get .+ ok$/gm);SD(Y,`Files downloaded: ${z?z.length:0}`);let Z=e8(Q,"sub-01/eeg/sub-01_task-rest_eeg.edf");if(!kH(Z))throw Error("EDF file not found after download");let{size:U}=Bun.file(Z);if(U<512)throw Error(`EDF file too small: ${U} bytes`);SD(Y,`EDF file verified: ${U} bytes`)}},{name:"Update cycle",fn:async()=>{let G=e8(Q,"sub-02/eeg");iV0(G,{recursive:!0});let H=Buffer.alloc(1024);H.write("0".padEnd(8),0,"ascii"),IH(e8(G,"sub-02_task-rest_eeg.edf"),H),IH(e8(G,"sub-02_task-rest_eeg.json"),JSON.stringify({TaskName:"rest",SamplingFrequency:256}));let q=aV0(e8(Q,"participants.tsv"),"utf-8");IH(e8(Q,"participants.tsv"),`${q.trimEnd()}
|
|
140
140
|
sub-02 30 F
|
|
141
141
|
`);let K=`e2e-update-${Date.now()}`,{exitCode:V}=await kF(["git","checkout","-b",K],{cwd:Q});if(V!==0)throw Error("Failed to create update branch");Y1(await i6(Q),"gitAnnexAdd (update)"),Y1(await a8(Q,"Add sub-02"),"saveDataset (update)"),Y.creds=await c8(b4);let z=await C8(Q,"nemar-s3",4,PD(Y.creds.credentials));Y1(z,"copyToAnnexRemote (update)"),SD(Y,`Update files copied to S3: ${z.filesCopied}`),await ID(Q);let Z=await C1(Q,"origin",K);Y1(Z,"pushToGitHub (update branch)");let{exitCode:U,stderr:M}=await kF(["git","push","origin","git-annex"],{cwd:Q});if(U!==0)throw Error(`Failed to push git-annex branch: ${M.trim()}`);SD(Y,`Update pushed to branch: ${K}`)}});let X=await sV0(B);if(!D.skipCleanup&&X.every((G)=>G.passed))X.push(await uh("Cleanup",async()=>{await kF(["chmod","-R","u+w",J]),await kF(["chmod","-R","u+w",Q]),PH(J,{recursive:!0,force:!0}),PH(Q,{recursive:!0,force:!0}),SD(Y,"Temp directories cleaned up")}));return eV0(X,$,J,Q,D.skipCleanup)}function eV0(D,F,$,J,Q){let Y={passed:D.every((B)=>B.passed),steps:D,total_duration_ms:Math.round(performance.now()-F)};if(Q)Y.upload_dir=$,Y.clone_dir=J;return Y}var __dirname="/home/runner/work/nemar-cli/nemar-cli/src/lib",b4="nm099999";var lh=S(()=>{n8();r8()});var pb,Py0;var db=S(()=>{pb=["IsCitedBy","Cites","IsSupplementTo","IsSupplementedBy","IsContinuedBy","Continues","IsDescribedBy","Describes","HasMetadata","IsMetadataFor","HasVersion","IsVersionOf","IsNewVersionOf","IsPreviousVersionOf","IsPartOf","HasPart","IsReferencedBy","References","IsDocumentedBy","Documents","IsCompiledBy","Compiles","IsVariantFormOf","IsOriginalFormOf","IsIdenticalTo","IsCollectedBy","Collects","IsRequiredBy","Requires","IsObsoletedBy","Obsoletes","IsDerivedFrom","IsSourceOf","IsReviewedBy","Reviews","IsPublishedIn","HasTranslation","IsTranslationOf"],Py0=new Set(pb)});function Qq(D){return D.replace(/^(doi:|https?:\/\/(dx\.)?doi\.org\/)/i,"").trim()}function cb(D){let F=D.split(",").map(($)=>$.trim());if(F.length>=2)return{name:D,familyName:F[0],givenName:F.slice(1).join(", ")};return{name:D}}var nb=S(()=>{db()});var Fu={};r6(Fu,{queryDataCiteDoi:()=>tb,queryCrossrefDoi:()=>eb,mergeOrcidDiscoveries:()=>BU0,matchCreatorsToAuthors:()=>Du,extractDoisFromRelatedIdentifiers:()=>JU0,extractDoisFromBids:()=>sb,discoverOrcidsFromReferencedDois:()=>XU0});function sb(D){let F=[],$=new Set,J=(Q,Y)=>{let B=Qq(Q).trim();if(ob.test(B)&&!$.has(B))$.add(B),F.push({doi:B,source:Y})};if(Array.isArray(D.SourceDatasets))for(let Q of D.SourceDatasets){if(!Q||typeof Q!=="object")continue;let Y=Q;if(typeof Y.DOI==="string")J(Y.DOI,"SourceDatasets");else if(typeof Y.URL==="string"){let B=Y.URL.match(/(?:doi\.org\/|doi:)(10\.\d{4,}\/.+)/);if(B)J(B[1],"SourceDatasets")}}if(Array.isArray(D.ReferencesAndLinks))for(let Q of D.ReferencesAndLinks){if(typeof Q!=="string"||!Q)continue;let Y=Q.match(/(?:doi\.org\/|^)(10\.\d{4,}\/[^\s]+)/);if(Y)J(Y[1],"ReferencesAndLinks")}if(typeof D.HowToAcknowledge==="string"){let Y=D.HowToAcknowledge.matchAll(/(?:doi\.org\/|(?<=\s|^))(10\.\d{4,}\/[^\s,)]+)/g);for(let B of Y)J(B[1].replace(/[.;:]+$/,""),"HowToAcknowledge")}return F}function JU0(D,F){let $=[];for(let J of D){if(!J||typeof J.identifier!=="string")continue;if(J.identifier_type!=="DOI")continue;let Q=Qq(J.identifier).trim();if(ob.test(Q)&&!F.has(Q))F.add(Q),$.push({doi:Q,source:"RelatedIdentifiers"})}return $}function rb(D,F,$){let J=$ instanceof Error?$.message:String($);if(J.includes("AbortError")||J.includes("timeout")||J.includes("fetch"))console.warn(`[orcid-discovery] ${D} query failed for ${F}: ${J}`);else console.error(`[orcid-discovery] Unexpected error querying ${D} for ${F}:`,$)}async function tb(D){try{let F=await fetch(`${QU0}/${encodeURIComponent(D)}`,{headers:{Accept:"application/vnd.datacite.datacite+json"},signal:AbortSignal.timeout(1e4)});if(!F.ok){if(F.status!==404)console.warn(`[orcid-discovery] DataCite returned HTTP ${F.status} for ${D}`);return null}let $=await F.json();return{doi:D,creators:Array.isArray($.creators)?$.creators:[]}}catch(F){return rb("DataCite",D,F),null}}async function eb(D){try{let F=await fetch(`https://api.crossref.org/works/${encodeURIComponent(D)}`,{headers:{Accept:"application/json","User-Agent":"NEMAR/1.0 (https://nemar.org; mailto:nemar@ucsd.edu)"},signal:AbortSignal.timeout(1e4)});if(!F.ok){if(F.status!==404)console.warn(`[orcid-discovery] Crossref returned HTTP ${F.status} for ${D}`);return null}let J=(await F.json()).message?.author;if(!Array.isArray(J)||J.length===0)return null;let Q=J.map((Y)=>{let B=[];if(Y.ORCID)B.push({nameIdentifier:Y.ORCID,nameIdentifierScheme:"ORCID"});return{name:Y.family&&Y.given?`${Y.family}, ${Y.given}`:Y.name||Y.family||"",givenName:Y.given,familyName:Y.family,nameIdentifiers:B,affiliation:(Y.affiliation||[]).filter((X)=>X.name)}}).filter((Y)=>Y.name.trim()!=="");return{doi:D,creators:Q}}catch(F){return rb("Crossref",D,F),null}}async function YU0(D){let F=await tb(D),$=await eb(D);if(!F)return $;if(!$)return F;for(let J of F.creators){if(J.nameIdentifiers?.some((X)=>X.nameIdentifierScheme==="ORCID")||!J.familyName)continue;let B=$.creators.find((X)=>X.familyName&&O1(X.familyName)===O1(J.familyName))?.nameIdentifiers?.find((X)=>X.nameIdentifierScheme==="ORCID");if(B)J.nameIdentifiers=[...J.nameIdentifiers??[],B]}return F}function O1(D){return D.normalize("NFD").replace(/\p{Diacritic}/gu,"").replace(/\./g,"").toLowerCase().trim()}function ib(D){if(!D)return"";return O1(D).charAt(0)}function Du(D,F){let $=[],J=new Set,Q=new Set,Y=F.map((B)=>({original:B,parsed:cb(B)}));for(let B=0;B<D.length;B++){if(Q.has(B))continue;let X=D[B],G=O1(X.name);for(let H of Y){if(J.has(H.original))continue;if(O1(H.original)===G){$.push({bidsAuthor:H.original,matchedCreator:X,confidence:"exact"}),J.add(H.original),Q.add(B);break}if(H.parsed.familyName&&H.parsed.givenName){if(O1(`${H.parsed.givenName} ${H.parsed.familyName}`)===G){$.push({bidsAuthor:H.original,matchedCreator:X,confidence:"exact"}),J.add(H.original),Q.add(B);break}}if(X.givenName&&X.familyName){let q=O1(`${X.givenName} ${X.familyName}`);if(O1(H.original)===q){$.push({bidsAuthor:H.original,matchedCreator:X,confidence:"exact"}),J.add(H.original),Q.add(B);break}}}}for(let B=0;B<D.length;B++){if(Q.has(B))continue;let X=D[B];if(!X.familyName)continue;let G=O1(X.familyName),H=ib(X.givenName);for(let q of Y){if(J.has(q.original))continue;if(!q.parsed.familyName)continue;if(O1(q.parsed.familyName)!==G)continue;let V=ib(q.parsed.givenName);if(V&&H&&V===H){$.push({bidsAuthor:q.original,matchedCreator:X,confidence:"high"}),J.add(q.original),Q.add(B);break}}}for(let B=0;B<D.length;B++){if(Q.has(B))continue;let X=D[B];if(!X.familyName)continue;let G=O1(X.familyName);for(let H of Y){if(J.has(H.original))continue;if(!H.parsed.familyName)continue;if(O1(H.parsed.familyName)===G){$.push({bidsAuthor:H.original,matchedCreator:X,confidence:"medium"}),J.add(H.original),Q.add(B);break}}}return $}function BU0(D,F){let $={...D};for(let[J,Q]of Object.entries(F))$[J]={...$[J],orcid:Q.orcid,affiliations:Q.affiliations??$[J]?.affiliations};return $}async function XU0(D,F,$){let J=sb(D);if($?.length)J.push(...$);if(J.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:0};let Q=Array.isArray(D.Authors)?D.Authors.filter((q)=>typeof q==="string"):[];if(Q.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:J.length};let Y=new Set;if(F){for(let[q,K]of Object.entries(F))if(K.orcid)Y.add(q)}let B=Q.filter((q)=>!Y.has(q));if(B.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:J.length};let X=[],G=new Map;for(let q=0;q<J.length;q+=ab){let K=J.slice(q,q+ab),V=await Promise.all(K.map((z)=>YU0(z.doi)));for(let z=0;z<K.length;z++)if(V[z])G.set(K[z].doi,V[z]?.creators??[]);else X.push(K[z].doi)}let H={};for(let[q,K]of G){let V=K.filter((Z)=>Z.nameIdentifiers?.some((U)=>U.nameIdentifierScheme==="ORCID"));if(V.length===0)continue;let z=Du(V,B);for(let Z of z){if(H[Z.bidsAuthor])continue;let U=Z.matchedCreator.nameIdentifiers.find((C)=>C.nameIdentifierScheme==="ORCID");if(!U)continue;let M=U.nameIdentifier.replace(/^https?:\/\/orcid\.org\//i,"").trim();if(!$U0.test(M))continue;let A=Z.matchedCreator.affiliation?.filter((C)=>C.name).map((C)=>({name:C.name,...C.affiliationIdentifier&&{identifier:C.affiliationIdentifier},...C.affiliationIdentifierScheme&&{scheme:C.affiliationIdentifierScheme}}));H[Z.bidsAuthor]={orcid:M,affiliations:A?.length?A:void 0,sourceDoi:q,confidence:Z.confidence}}}return{discoveries:H,unresolvedDois:X,totalDoisQueried:J.length}}var ob,$U0,QU0="https://api.datacite.org/application/vnd.datacite.datacite+json",ab=5;var $u=S(()=>{nb();ob=/^10\.\d{4,}\/[^\s]+$/,$U0=/^\d{4}-\d{4}-\d{4}-[\dX]{4}$/});ND();var yq=t(vq(),1),{program:BL0,createCommand:XL0,createArgument:GL0,createOption:WL0,CommanderError:HL0,InvalidArgumentError:qL0,InvalidOptionArgumentError:KL0,Command:v0,Argument:zL0,Option:EL0,Help:VL0}=yq.default;var _q=process.argv.includes("--help-all");if(process.argv.includes("--no-color"))W.level=0;var xq=process.argv.indexOf("--help-all");if(xq!==-1)process.argv[xq]="--help";var uF=v0.prototype.addHelpText,fq=`
|
|
@@ -217,7 +217,7 @@ Deploy CI workflows to: ${D}
|
|
|
217
217
|
`)),console.log("This will add the following workflows:"),console.log(" 1. BIDS Validation (runs on PRs)"),console.log(" 2. Version Check (ensures version bump on PRs)"),console.log(" 3. PR Merge Handler (creates releases, publishes DOIs)"),$)console.log(W.dim(" (post-deploy parseability poll disabled via --no-validate)"));console.log();let J=await T0(`Deploy CI workflows to ${D}?`,F);if(J!=="confirmed"){console.log(W.dim(J==="declined"?"Skipped":"Cancelled"));return}let Q=O(`Deploying CI workflows to ${D}...`).start(),Y;try{Y=await f4(D)}catch(B){i0(B,Q,"Failed to deploy CI workflows",{404:"Dataset not found"});return}Q.succeed("CI workflows deployed"),console.log();for(let B of Y.workflows_deployed)console.log(` ${W.green("[x]")} ${B}`);if(!$){let B=O("Verifying GitHub Actions can parse the workflows...").start(),X=await $Z0(D);if(!X)B.warn("Could not verify workflow parseability (deploy succeeded)");else if(X.missing.length===0&&X.errors.length===0)B.succeed("All workflows parseable by GitHub Actions");else{let G=X.missing.length>0?"Some workflows missing from GitHub Actions listing":"Could not fully verify workflow parseability (GitHub API error)";B.warn(G),ah(X)}}console.log()});u9.command("validate").description("Check whether GitHub Actions can parse the deployed CI workflows").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!P0())return;let F=O(`Validating CI workflows for ${D}...`).start();try{let $=await _W(D);if($.missing.length===0&&$.errors.length===0)F.succeed(`All ${$.valid.length} workflows parseable by GitHub Actions`);else F.warn("Some workflows missing or unreadable"),ah({missing:$.missing,errors:$.errors})}catch($){i0($,F,"Failed to validate CI workflows",{404:"Dataset not found"})}});u9.command("sync").description("Sync deployed CI workflows to current templates (only writes drifted/missing files)").argument("[dataset-id]","Dataset ID (e.g., nm000104)").option("--all","Sync across all dataset repositories").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;if(F.all){let J=O("Fetching dataset list...").start(),Q;try{if(Q=(await TF({limit:1000})).datasets,J.succeed(`Found ${Q.length} datasets`),Q.length>=1000)console.log(W.yellow("Warning: reached 1000 dataset limit; some datasets may be skipped"))}catch(H){i0(H,J,"Failed to fetch datasets");return}console.log(W.cyan(`
|
|
218
218
|
Sync CI templates across ${Q.length} datasets (writes only diffs)
|
|
219
219
|
`));let Y=await T0(`Sync templates on all ${Q.length} datasets?`,F);if(Y!=="confirmed"){console.log(W.dim(Y==="declined"?"Skipped":"Cancelled"));return}let B=0,X=0,G=0;for(let H of Q){let q=O(`Syncing ${H.dataset_id}...`).start();try{let K=await fW(H.dataset_id),V=K.changed.length+K.added.length;if(K.errors.length>0)q.warn(`${H.dataset_id}: ${V} updated, ${K.errors.length} error(s)`),G++;else if(V===0)q.succeed(`${H.dataset_id}: up to date`),B++;else{let z=[];if(K.added.length>0)z.push(`+${K.added.length} added`);if(K.changed.length>0)z.push(`~${K.changed.length} updated`);q.succeed(`${H.dataset_id}: ${z.join(", ")}`),X++}}catch(K){let V=K instanceof f?K.message:String(K);q.fail(`${H.dataset_id}: ${V}`),G++}}console.log(),console.log(W.cyan(`Done: ${B} up-to-date, ${X} updated, ${G} with errors`));return}if(!D){console.error(W.red("Error: dataset-id is required (or use --all)"));return}let $=O(`Syncing CI templates for ${D}...`).start();try{let J=await fW(D),Q=J.changed.length+J.added.length;if(J.errors.length>0)$.warn(`${D}: ${J.errors.length} error(s)`);else if(Q===0)$.succeed(`${D}: already up to date`);else $.succeed(`${D}: synced`);if(console.log(),console.log(` ${W.dim("Checked:")} ${J.checked.join(", ")}`),J.added.length>0)console.log(` ${W.green("Added:")} ${J.added.join(", ")}`);if(J.changed.length>0)console.log(` ${W.yellow("Updated:")} ${J.changed.join(", ")}`);if(!J.committed&&Q>0&&J.errors.length===0)console.log(` ${W.yellow("Note:")} listed changes were not committed`);if(J.list_failed)console.log(` ${W.red("Warning:")} workflow directory listing failed; presence is unknown`);if(J.errors.length>0){console.log(` ${W.red("Errors:")}`);for(let Y of J.errors)console.log(` - ${Y}`)}console.log()}catch(J){i0(J,$,"Failed to sync CI templates",{404:"Dataset not found"})}});m0.addCommand(u9);var m9=new v0("doi").description("DOI management");m9.command("create").description("Create concept DOI for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--title <title>","DOI title (defaults to dataset name)").option("--description <desc>","DOI description").option("--provider <provider>","DOI provider: ezid (default) or zenodo","ezid").option("--sandbox","Use sandbox/test DOI").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;let $=O("Fetching dataset info...").start(),J;try{J=await gD(D),$.succeed(`Found dataset: ${J.name}`)}catch(G){if(G instanceof f){if($.fail(G.message),G.statusCode===404)console.log(W.dim(" Dataset not found"))}else $.fail("Failed to fetch dataset");return}try{let G=await v9(D);if(G.concept_doi){if(console.log(W.yellow(`
|
|
220
|
-
Dataset already has a concept DOI:`)),console.log(` Concept DOI: ${W.cyan(G.concept_doi)}`),G.zenodo_concept_url)console.log(` Zenodo URL: ${G.zenodo_concept_url}`);return}}catch(G){if(process.env.DEBUG)console.error("[debug] DOI info fetch:",G)}if(console.log(),console.log(W.cyan("Dataset Information:")),console.log(` ID: ${J.dataset_id}`),console.log(` Name: ${J.name}`),J.github_repo)console.log(` GitHub: ${J.github_repo}`);if(F.sandbox)console.log(` Mode: ${W.yellow("SANDBOX (test DOI)")}`);console.log();let Q=F.provider==="zenodo"?"zenodo":"ezid";if(F.sandbox){if(console.log(W.yellow("\u2501".repeat(60))),console.log(W.yellow.bold(" SANDBOX MODE ENABLED")),console.log(W.yellow("\u2501".repeat(60))),Q==="zenodo")console.log(W.yellow(" \u2022 Using Zenodo sandbox (sandbox.zenodo.org)"));else console.log(W.yellow(" \u2022 Using EZID test shoulder (doi:10.5072/FK2)")),console.log(W.yellow(" \u2022 Test DOIs auto-delete after 2 weeks"));console.log(W.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(W.yellow(" \u2022 DOI will NOT resolve in production")),console.log(W.yellow(" \u2022 Use this for testing workflows only")),console.log(W.yellow("\u2501".repeat(60))),console.log()}console.log(W.red("WARNING: DOIs are PERMANENT and cannot be deleted!")),console.log(W.dim("The DOI will be pre-reserved but not published until the first version release.")),console.log(` Provider: ${W.cyan(Q.toUpperCase())}`),console.log();let Y=F.sandbox?`Create TEST concept DOI via ${Q.toUpperCase()} SANDBOX?`:`Create PERMANENT concept DOI via ${Q.toUpperCase()} PRODUCTION?`,B=await T0(Y,F);if(B!=="confirmed"){console.log(W.dim(B==="declined"?"Skipped":"Cancelled"));return}let X=O(`Creating concept DOI via ${Q.toUpperCase()}...`).start();try{let G=await zg(D,{title:F.title,description:F.description,sandbox:F.sandbox,provider:Q});X.succeed("Concept DOI created successfully");let H=O("Applying branch protection...").start();try{let q=await BQ(D);if(q.warnings&&q.warnings.length>0){H.warn("Branch protection applied with warnings");for(let K of q.warnings)console.log(W.yellow(` Warning: ${K}`))}else H.succeed("Branch protection applied")}catch(q){if(H.warn("Could not apply branch protection"),q instanceof f){if(console.log(W.dim(` ${q.message}`)),q.statusCode===403)console.log(W.dim(" Check admin credentials and permissions"))}else console.log(W.dim(` ${q instanceof Error?q.message:"Unknown error"}`));console.log(W.dim(" Manual setup: Go to GitHub repo Settings > Branches > Add rule"))}if(console.log(),console.log(W.green("DOI Information:")),console.log(` Concept DOI: ${W.cyan(G.concept_doi)}`),console.log(` Provider: ${G.provider.toUpperCase()}`),G.provider==="ezid")console.log(` DOI URL: ${G.doi_url}`),console.log(` EZID ID: ${G.ezid_identifier}`);else console.log(` Zenodo URL: ${G.zenodo_url}`);if(G.metadata_warning)console.log(W.yellow(` Warning: ${G.metadata_warning}`));if(console.log(),console.log(W.yellow("Next steps:")),console.log(" 1. Update dataset_description.json with DatasetDOI field"),console.log(" 2. Create a PR and merge it to trigger version DOI publication"),console.log(),F.sandbox)console.log(W.dim("Note: This is a sandbox DOI and will not resolve in production."))}catch(G){if(G instanceof f){if(X.fail(G.message),G.statusCode===403)console.log(W.dim(" This command requires admin privileges"))}else X.fail("Failed to create concept DOI"),console.log(W.dim(` ${O0(G)}`))}});m9.command("info").description("Get DOI info for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!P0())return;let F=O("Fetching DOI info...").start();try{let $=await v9(D);if(F.stop(),console.log(),console.log(W.cyan(`DOI Information for ${D}:`)),console.log(` Dataset Name: ${$.name}`),console.log(),$.concept_doi){if(console.log(W.green("Concept DOI:")),console.log(` DOI: ${$.concept_doi}`),console.log(` URL: https://doi.org/${$.concept_doi}`),console.log(` Provider: ${($.doi_provider||"zenodo").toUpperCase()}`),$.doi_provider==="ezid"){if($.ezid_identifier)console.log(` EZID ID: ${$.ezid_identifier}`);if($.ezid_status){let J=$.ezid_status==="public"?W.green:W.yellow;console.log(` Status: ${J($.ezid_status)}`)}}if($.zenodo_concept_url){if(console.log(` Zenodo: ${$.zenodo_concept_url}`),$.zenodo_concept_url.includes("sandbox.zenodo.org"))console.log(),console.log(W.yellow("Mode: SANDBOX (test DOI)")),console.log(W.yellow(" This DOI is not indexed by DataCite and will not resolve in production"))}}else console.log(W.yellow("No concept DOI created yet")),console.log(W.dim(" Use 'nemar admin doi create' to create one"));if(console.log(),$.latest_version_doi){if(console.log(W.green("Latest Version DOI:")),console.log(` DOI: ${$.latest_version_doi}`),console.log(` URL: https://doi.org/${$.latest_version_doi}`),$.zenodo_latest_version_url)console.log(` Zenodo: ${$.zenodo_latest_version_url}`)}else if($.concept_doi)console.log(W.yellow("No version DOI published yet")),console.log(W.dim(" Version DOIs are created automatically on PR merge"))}catch($){if($ instanceof f){if(F.fail($.message),$.statusCode===404)console.log(W.dim(" Dataset not found"));else if($.statusCode===403)console.log(W.dim(" This command requires admin privileges"))}else F.fail("Failed to fetch DOI info")}});m9.command("update").description("Update EZID DOI metadata or status").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--make-public","Transition DOI from reserved to public (permanent)").option("--refresh","Refresh metadata from dataset_description.json and .nemar/metadata.json").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;if(!F.makePublic&&!F.refresh){console.log(W.yellow("No action specified. Use --make-public and/or --refresh."));return}if(F.makePublic){console.log(W.red("WARNING: Making a DOI public is PERMANENT!")),console.log(W.dim(" The DOI will be findable in DataCite and cannot be reverted.")),console.log();let J=await T0(`Make DOI for ${D} PUBLIC and permanent?`,F);if(J!=="confirmed"){console.log(W.dim(J==="declined"?"Skipped":"Cancelled"));return}}let $=O("Updating DOI...").start();try{let J=await hW(D,{status:F.makePublic?"public":void 0,refresh_metadata:F.refresh});$.succeed("DOI updated successfully"),console.log(),console.log(` EZID ID: ${W.cyan(J.ezid_identifier)}`),console.log(` Status: ${J.status==="public"?W.green(J.status):W.yellow(J.status)}`),console.log(` URL: ${J.doi_url}`)}catch(J){if(J instanceof f){if($.fail(J.message),J.statusCode===400)console.log(W.dim(" DOI update is only supported for EZID-managed DOIs"))}else $.fail("Failed to update DOI"),console.log(W.dim(` ${O0(J)}`))}});m9.command("enrich").description("Enrich DOI metadata with ORCIDs, descriptions, funding, and more").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--no-llm","Skip LLM-based enrichment from README").option("--sandbox","Use sandbox DOI").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;let $=O("Fetching dataset and existing enrichment...").start(),J;try{J=await gD(D),$.succeed(`Dataset: ${J.name}`)}catch(z){if(z instanceof f)$.fail(z.message);else $.fail("Failed to fetch dataset");return}let Q,Y=!1;try{Q=await v9(D)}catch(z){if(z instanceof f&&z.statusCode===404);else Y=!0,console.log(W.yellow(` Warning: Could not fetch DOI info: ${O0(z)}`))}if(Q?.concept_doi)console.log(` DOI: ${W.cyan(Q.concept_doi)}`);let B={version:"2.0"};if(J.github_repo){let z=O("Reading existing metadata...").start(),Z=await ph(J.github_repo,".nemar/metadata.json");if(Z)try{let U=JSON.parse(Z);if(U&&typeof U==="object"&&U.version==="2.0")B=U,z.succeed(`Loaded existing metadata (stage: ${U.pipeline_stage||"unknown"})`);else z.warn("Existing metadata has unsupported version, starting fresh")}catch(U){z.warn(`Could not parse existing metadata (${U instanceof Error?U.message:String(U)}), starting fresh`)}else z.info("No existing .nemar/metadata.json found, starting fresh")}if(F.llm!==!1&&J.github_repo){console.log(),console.log(W.cyan("--- Running LLM enrichment pipeline (CI workflow) ---"));let z=O("Triggering run-enrichment workflow...").start();try{let{spawn:Z}=awaitPromise.resolve(globalThis.Bun),U=J.github_repo,M="nemarDatasets/.github",A="run-enrichment.yml",C=Z({cmd:["gh","workflow","run","run-enrichment.yml","--repo","nemarDatasets/.github","--ref","main","-f",`dataset_id=${D}`,"-f","ref=main","-f","force=true"],stdout:"pipe",stderr:"pipe"}),w=await new Response(C.stderr).text();if(await C.exited!==0)throw Error(`Failed to trigger workflow: ${w.trim()}`);z.text="Waiting for workflow to register...",await new Promise((r)=>setTimeout(r,3000)),z.text="Polling workflow status...";let R=60,j="",v=0;for(let r=0;r<R;r++){let a=Z({cmd:["gh","run","list","--repo","nemarDatasets/.github","--workflow","run-enrichment.yml","-L","10","--json","databaseId,status,conclusion,displayTitle,event"],stdout:"pipe",stderr:"pipe"}),Q0=await new Response(a.stdout).text(),$0=await new Response(a.stderr).text();if(await a.exited!==0){if(v++,v>=3){z.warn(`gh CLI error: ${$0.trim()}`);break}await new Promise((n)=>setTimeout(n,5000));continue}try{let n=JSON.parse(Q0.trim());v=0;let N=n.find((b)=>b.event==="workflow_dispatch");if(N){if(N.status==="completed"){j=N.conclusion||"unknown";break}z.text=`Workflow ${N.status}... (${r*5}s)`}}catch(n){if(v++,v>=3){z.warn(`Unable to parse workflow status: ${n instanceof Error?n.message:String(n)} (raw: ${Q0.trim().slice(0,200)})`);break}}await new Promise((n)=>setTimeout(n,5000))}let c=!1;if(!j)z.warn("Workflow timed out after 5 minutes (may still be running)");else if(j==="success"){z.succeed("LLM enrichment workflow completed successfully");let r=await ph(U,".nemar/metadata.json");if(r)try{let a=JSON.parse(r);if(a&&typeof a==="object"&&a.version==="2.0"){Object.assign(B,a),c=!0;let Q0=a.pipeline_stage||"unknown";if(console.log(W.dim(` Pipeline stage: ${Q0}`)),B.authors){let $0=Object.keys(B.authors).length;console.log(W.dim(` Authors: ${$0}`))}}}catch(a){console.log(W.yellow(` Warning: Could not parse updated metadata: ${a instanceof Error?a.message:String(a)}`)),console.log(W.dim(" Using pre-workflow enrichment data"))}else console.log(W.yellow(" Warning: Could not fetch updated metadata after successful workflow.")),console.log(W.dim(" Author data below may be from a previous run."))}else z.fail(`LLM enrichment workflow failed (conclusion: ${j})`);if(!c)console.log(W.yellow(" ORCID discovery did not complete. Authors below may be from previous metadata."))}catch(Z){z.fail("LLM enrichment pipeline failed"),console.log(W.dim(` ${O0(Z)}`)),console.log(W.yellow(" ORCID discovery did not run. You will need to enter ORCIDs manually."))}}console.log(),console.log(W.cyan("--- Author ORCIDs ---"));let X=B.authors||{},G=Object.keys(X);if(G.length>0){let z=G.filter((U)=>X[U]?.orcid),Z=G.filter((U)=>!X[U]?.orcid);console.log(W.dim(` Discovered ${G.length} authors from pipeline:`));for(let U of z)console.log(W.green(` [x] ${U}: ${X[U]?.orcid}`));for(let U of Z)console.log(W.yellow(` [ ] ${U}: no ORCID found`));if(Z.length>0)console.log(W.dim(` ${Z.length} author(s) missing ORCIDs.`))}let{updateAuthors:H}=await D0.prompt([{type:"confirm",name:"updateAuthors",message:G.length>0?"Add or correct author ORCIDs?":"Add author ORCIDs manually?",default:!1}]);if(H){let z={},Z=!0;while(Z){let{authorName:U}=await D0.prompt([{type:"input",name:"authorName",message:'Author name (as in BIDS, e.g., "Shirazi, Yahya"):'}]);if(!U)break;let M=X[U];if(M?.orcid)console.log(W.dim(` Current ORCID: ${M.orcid}`));let{orcid:A}=await D0.prompt([{type:"input",name:"orcid",message:`ORCID for "${U}" (Enter to ${M?.orcid?"keep current":"skip"}):`,validate:(R)=>{if(!R)return!0;return DQ.test(R)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]),C={};if(A)C.orcid=A;let{affiliation:w}=await D0.prompt([{type:"input",name:"affiliation",message:`Affiliation for "${U}" (optional):`}]);if(w)C.affiliations=[{name:w}];if(C.orcid||C.affiliations)z[U]=C;let{more:I}=await D0.prompt([{type:"confirm",name:"more",message:"Add another author?",default:!0}]);Z=I}if(Object.keys(z).length>0){let U={...B.authors||{}};for(let[M,A]of Object.entries(z)){let C=U[M]||{};U[M]={...C,...A,orcid:A.orcid||C.orcid}}B.authors=U}}console.log(),console.log(W.cyan("--- Dataset stats ---"));let q=O("Computing dataset sizes and formats...").start();try{let z=await Tg(D),Z=YD(z.total_size);B.sizes=[`${Z} (${z.file_count} files)`],B.formats=z.extensions,q.succeed(`Sizes: ${Z} (${z.file_count} files), Formats: ${z.extensions.join(", ")}`)}catch(z){q.warn("Could not compute dataset stats"),console.log(W.dim(` ${O0(z)}`))}console.log(),console.log(W.cyan("--- Review ---")),console.log(JSON.stringify(B,null,2)),console.log();let K=await T0("Commit to repo and refresh DOI?",F,!0);if(K!=="confirmed"){console.log(W.dim(K==="declined"?"Skipped":"Cancelled"));return}let V=O("Saving enrichment...").start();try{let z=await jg(D,B);if(V.succeed(z.message),z.bidsignore_updated)console.log(W.dim(" .bidsignore updated to include .nemar/"));if(!Q&&Y)try{Q=await v9(D)}catch(Z){if(process.env.DEBUG)console.error("[debug] DOI info re-fetch:",Z)}if(Q?.ezid_identifier){let Z=O("Refreshing DOI metadata...").start();try{await hW(D,{refresh_metadata:!0}),Z.succeed("DOI metadata refreshed")}catch(U){Z.warn("Could not refresh DOI metadata"),console.log(W.dim(` ${O0(U)}`))}}else if(Y)console.log(W.yellow(" DOI refresh skipped: could not verify DOI exists. Run 'nemar admin doi update --refresh' manually."))}catch(z){if(z instanceof f)V.fail(z.message);else V.fail("Failed to save enrichment"),console.log(W.dim(` ${O0(z)}`))}});m0.addCommand(m9);var MQ=new v0("publish").description("Publication workflow management");MQ.command("list").description("List publication requests").option("-s, --status <status>","Filter by status (requested, approving, published, denied)").addHelpText("after",`
|
|
220
|
+
Dataset already has a concept DOI:`)),console.log(` Concept DOI: ${W.cyan(G.concept_doi)}`),G.zenodo_concept_url)console.log(` Zenodo URL: ${G.zenodo_concept_url}`);return}}catch(G){if(process.env.DEBUG)console.error("[debug] DOI info fetch:",G)}if(console.log(),console.log(W.cyan("Dataset Information:")),console.log(` ID: ${J.dataset_id}`),console.log(` Name: ${J.name}`),J.github_repo)console.log(` GitHub: ${J.github_repo}`);if(F.sandbox)console.log(` Mode: ${W.yellow("SANDBOX (test DOI)")}`);console.log();let Q=F.provider==="zenodo"?"zenodo":"ezid";if(F.sandbox){if(console.log(W.yellow("\u2501".repeat(60))),console.log(W.yellow.bold(" SANDBOX MODE ENABLED")),console.log(W.yellow("\u2501".repeat(60))),Q==="zenodo")console.log(W.yellow(" \u2022 Using Zenodo sandbox (sandbox.zenodo.org)"));else console.log(W.yellow(" \u2022 Using EZID test shoulder (doi:10.5072/FK2)")),console.log(W.yellow(" \u2022 Test DOIs auto-delete after 2 weeks"));console.log(W.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(W.yellow(" \u2022 DOI will NOT resolve in production")),console.log(W.yellow(" \u2022 Use this for testing workflows only")),console.log(W.yellow("\u2501".repeat(60))),console.log()}console.log(W.red("WARNING: DOIs are PERMANENT and cannot be deleted!")),console.log(W.dim("The DOI will be pre-reserved but not published until the first version release.")),console.log(` Provider: ${W.cyan(Q.toUpperCase())}`),console.log();let Y=F.sandbox?`Create TEST concept DOI via ${Q.toUpperCase()} SANDBOX?`:`Create PERMANENT concept DOI via ${Q.toUpperCase()} PRODUCTION?`,B=await T0(Y,F);if(B!=="confirmed"){console.log(W.dim(B==="declined"?"Skipped":"Cancelled"));return}let X=O(`Creating concept DOI via ${Q.toUpperCase()}...`).start();try{let G=await zg(D,{title:F.title,description:F.description,sandbox:F.sandbox,provider:Q});X.succeed("Concept DOI created successfully");let H=O("Applying branch protection...").start();try{let q=await BQ(D);if(q.warnings&&q.warnings.length>0){H.warn("Branch protection applied with warnings");for(let K of q.warnings)console.log(W.yellow(` Warning: ${K}`))}else H.succeed("Branch protection applied")}catch(q){if(H.warn("Could not apply branch protection"),q instanceof f){if(console.log(W.dim(` ${q.message}`)),q.statusCode===403)console.log(W.dim(" Check admin credentials and permissions"))}else console.log(W.dim(` ${q instanceof Error?q.message:"Unknown error"}`));console.log(W.dim(" Manual setup: Go to GitHub repo Settings > Branches > Add rule"))}if(console.log(),console.log(W.green("DOI Information:")),console.log(` Concept DOI: ${W.cyan(G.concept_doi)}`),console.log(` Provider: ${G.provider.toUpperCase()}`),G.provider==="ezid")console.log(` DOI URL: ${G.doi_url}`),console.log(` EZID ID: ${G.ezid_identifier}`);else console.log(` Zenodo URL: ${G.zenodo_url}`);if(G.metadata_warning)console.log(W.yellow(` Warning: ${G.metadata_warning}`));if(console.log(),console.log(W.yellow("Next steps:")),console.log(" 1. Update dataset_description.json with DatasetDOI field"),console.log(" 2. Create a PR and merge it to trigger version DOI publication"),console.log(),F.sandbox)console.log(W.dim("Note: This is a sandbox DOI and will not resolve in production."))}catch(G){if(G instanceof f){if(X.fail(G.message),G.statusCode===403)console.log(W.dim(" This command requires admin privileges"))}else X.fail("Failed to create concept DOI"),console.log(W.dim(` ${O0(G)}`))}});m9.command("info").description("Get DOI info for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!P0())return;let F=O("Fetching DOI info...").start();try{let $=await v9(D);if(F.stop(),console.log(),console.log(W.cyan(`DOI Information for ${D}:`)),console.log(` Dataset Name: ${$.name}`),console.log(),$.concept_doi){if(console.log(W.green("Concept DOI:")),console.log(` DOI: ${$.concept_doi}`),console.log(` URL: https://doi.org/${$.concept_doi}`),console.log(` Provider: ${($.doi_provider||"zenodo").toUpperCase()}`),$.doi_provider==="ezid"){if($.ezid_identifier)console.log(` EZID ID: ${$.ezid_identifier}`);if($.ezid_status){let J=$.ezid_status==="public"?W.green:W.yellow;console.log(` Status: ${J($.ezid_status)}`)}}if($.zenodo_concept_url){if(console.log(` Zenodo: ${$.zenodo_concept_url}`),$.zenodo_concept_url.includes("sandbox.zenodo.org"))console.log(),console.log(W.yellow("Mode: SANDBOX (test DOI)")),console.log(W.yellow(" This DOI is not indexed by DataCite and will not resolve in production"))}}else console.log(W.yellow("No concept DOI created yet")),console.log(W.dim(" Use 'nemar admin doi create' to create one"));if(console.log(),$.latest_version_doi){if(console.log(W.green("Latest Version DOI:")),console.log(` DOI: ${$.latest_version_doi}`),console.log(` URL: https://doi.org/${$.latest_version_doi}`),$.zenodo_latest_version_url)console.log(` Zenodo: ${$.zenodo_latest_version_url}`)}else if($.concept_doi)console.log(W.yellow("No version DOI published yet")),console.log(W.dim(" Version DOIs are created automatically on PR merge"))}catch($){if($ instanceof f){if(F.fail($.message),$.statusCode===404)console.log(W.dim(" Dataset not found"));else if($.statusCode===403)console.log(W.dim(" This command requires admin privileges"))}else F.fail("Failed to fetch DOI info")}});m9.command("update").description("Update EZID DOI metadata or status").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--make-public","Transition DOI from reserved to public (permanent)").option("--refresh","Refresh metadata from dataset_description.json and .nemar/metadata.json").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;if(!F.makePublic&&!F.refresh){console.log(W.yellow("No action specified. Use --make-public and/or --refresh."));return}if(F.makePublic){console.log(W.red("WARNING: Making a DOI public is PERMANENT!")),console.log(W.dim(" The DOI will be findable in DataCite and cannot be reverted.")),console.log();let J=await T0(`Make DOI for ${D} PUBLIC and permanent?`,F);if(J!=="confirmed"){console.log(W.dim(J==="declined"?"Skipped":"Cancelled"));return}}let $=O("Updating DOI...").start();try{let J=await hW(D,{status:F.makePublic?"public":void 0,refresh_metadata:F.refresh});$.succeed("DOI updated successfully"),console.log(),console.log(` EZID ID: ${W.cyan(J.ezid_identifier)}`),console.log(` Status: ${J.status==="public"?W.green(J.status):W.yellow(J.status)}`),console.log(` URL: ${J.doi_url}`)}catch(J){if(J instanceof f){if($.fail(J.message),J.statusCode===400)console.log(W.dim(" DOI update is only supported for EZID-managed DOIs"))}else $.fail("Failed to update DOI"),console.log(W.dim(` ${O0(J)}`))}});m9.command("enrich").description("Enrich DOI metadata with ORCIDs, descriptions, funding, and more").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--no-llm","Skip LLM-based enrichment from README").option("--sandbox","Use sandbox DOI").option(w0,j0).option(g0,k0).action(async(D,F)=>{if(!P0())return;let $=O("Fetching dataset and existing enrichment...").start(),J;try{J=await gD(D),$.succeed(`Dataset: ${J.name}`)}catch(z){if(z instanceof f)$.fail(z.message);else $.fail("Failed to fetch dataset");return}let Q,Y=!1;try{Q=await v9(D)}catch(z){if(z instanceof f&&z.statusCode===404);else Y=!0,console.log(W.yellow(` Warning: Could not fetch DOI info: ${O0(z)}`))}if(Q?.concept_doi)console.log(` DOI: ${W.cyan(Q.concept_doi)}`);let B={version:"2.0"};if(J.github_repo){let z=O("Reading existing metadata...").start(),Z=await ph(J.github_repo,".nemar/metadata.json");if(Z)try{let U=JSON.parse(Z);if(U&&typeof U==="object"&&U.version==="2.0")B=U,z.succeed(`Loaded existing metadata (stage: ${U.pipeline_stage||"unknown"})`);else z.warn("Existing metadata has unsupported version, starting fresh")}catch(U){z.warn(`Could not parse existing metadata (${U instanceof Error?U.message:String(U)}), starting fresh`)}else z.info("No existing .nemar/metadata.json found, starting fresh")}if(F.llm!==!1&&J.github_repo){console.log(),console.log(W.cyan("--- Running LLM enrichment pipeline (CI workflow) ---"));let z=O("Triggering run-enrichment workflow...").start();try{let{spawn:Z}=awaitPromise.resolve(globalThis.Bun),U=J.github_repo,M="nemarDatasets/.github",A="run-enrichment.yml",C=Z({cmd:["gh","workflow","run","run-enrichment.yml","--repo","nemarDatasets/.github","--ref","main","-f",`dataset_id=${D}`,"-f","ref=main","-f","force=true"],stdout:"pipe",stderr:"pipe"}),w=await new Response(C.stderr).text();if(await C.exited!==0)throw Error(`Failed to trigger workflow: ${w.trim()}`);z.text="Waiting for workflow to register...",await new Promise((r)=>setTimeout(r,3000)),z.text="Polling workflow status...";let R=60,j="",v=0;for(let r=0;r<R;r++){let a=Z({cmd:["gh","run","list","--repo","nemarDatasets/.github","--workflow","run-enrichment.yml","-L","10","--json","databaseId,status,conclusion,displayTitle,event"],stdout:"pipe",stderr:"pipe"}),Q0=await new Response(a.stdout).text(),$0=await new Response(a.stderr).text();if(await a.exited!==0){if(v++,v>=3){z.warn(`gh CLI error: ${$0.trim()}`);break}await new Promise((c)=>setTimeout(c,5000));continue}try{let c=JSON.parse(Q0.trim());v=0;let N=c.find((b)=>b.event==="workflow_dispatch");if(N){if(N.status==="completed"){j=N.conclusion||"unknown";break}z.text=`Workflow ${N.status}... (${r*5}s)`}}catch(c){if(v++,v>=3){z.warn(`Unable to parse workflow status: ${c instanceof Error?c.message:String(c)} (raw: ${Q0.trim().slice(0,200)})`);break}}await new Promise((c)=>setTimeout(c,5000))}let n=!1;if(!j)z.warn("Workflow timed out after 5 minutes (may still be running)");else if(j==="success"){z.succeed("LLM enrichment workflow completed successfully");let r=await ph(U,".nemar/metadata.json");if(r)try{let a=JSON.parse(r);if(a&&typeof a==="object"&&a.version==="2.0"){Object.assign(B,a),n=!0;let Q0=a.pipeline_stage||"unknown";if(console.log(W.dim(` Pipeline stage: ${Q0}`)),B.authors){let $0=Object.keys(B.authors).length;console.log(W.dim(` Authors: ${$0}`))}}}catch(a){console.log(W.yellow(` Warning: Could not parse updated metadata: ${a instanceof Error?a.message:String(a)}`)),console.log(W.dim(" Using pre-workflow enrichment data"))}else console.log(W.yellow(" Warning: Could not fetch updated metadata after successful workflow.")),console.log(W.dim(" Author data below may be from a previous run."))}else z.fail(`LLM enrichment workflow failed (conclusion: ${j})`);if(!n)console.log(W.yellow(" ORCID discovery did not complete. Authors below may be from previous metadata."))}catch(Z){z.fail("LLM enrichment pipeline failed"),console.log(W.dim(` ${O0(Z)}`)),console.log(W.yellow(" ORCID discovery did not run. You will need to enter ORCIDs manually."))}}console.log(),console.log(W.cyan("--- Author ORCIDs ---"));let X=B.authors||{},G=Object.keys(X);if(G.length>0){let z=G.filter((U)=>X[U]?.orcid),Z=G.filter((U)=>!X[U]?.orcid);console.log(W.dim(` Discovered ${G.length} authors from pipeline:`));for(let U of z)console.log(W.green(` [x] ${U}: ${X[U]?.orcid}`));for(let U of Z)console.log(W.yellow(` [ ] ${U}: no ORCID found`));if(Z.length>0)console.log(W.dim(` ${Z.length} author(s) missing ORCIDs.`))}let{updateAuthors:H}=await D0.prompt([{type:"confirm",name:"updateAuthors",message:G.length>0?"Add or correct author ORCIDs?":"Add author ORCIDs manually?",default:!1}]);if(H){let z={},Z=!0;while(Z){let{authorName:U}=await D0.prompt([{type:"input",name:"authorName",message:'Author name (as in BIDS, e.g., "Shirazi, Yahya"):'}]);if(!U)break;let M=X[U];if(M?.orcid)console.log(W.dim(` Current ORCID: ${M.orcid}`));let{orcid:A}=await D0.prompt([{type:"input",name:"orcid",message:`ORCID for "${U}" (Enter to ${M?.orcid?"keep current":"skip"}):`,validate:(R)=>{if(!R)return!0;return DQ.test(R)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]),C={};if(A)C.orcid=A;let{affiliation:w}=await D0.prompt([{type:"input",name:"affiliation",message:`Affiliation for "${U}" (optional):`}]);if(w)C.affiliations=[{name:w}];if(C.orcid||C.affiliations)z[U]=C;let{more:I}=await D0.prompt([{type:"confirm",name:"more",message:"Add another author?",default:!0}]);Z=I}if(Object.keys(z).length>0){let U={...B.authors||{}};for(let[M,A]of Object.entries(z)){let C=U[M]||{};U[M]={...C,...A,orcid:A.orcid||C.orcid}}B.authors=U}}console.log(),console.log(W.cyan("--- Dataset stats ---"));let q=O("Computing dataset sizes and formats...").start();try{let z=await Tg(D),Z=YD(z.total_size);B.sizes=[`${Z} (${z.file_count} files)`],B.formats=z.extensions,q.succeed(`Sizes: ${Z} (${z.file_count} files), Formats: ${z.extensions.join(", ")}`)}catch(z){q.warn("Could not compute dataset stats"),console.log(W.dim(` ${O0(z)}`))}console.log(),console.log(W.cyan("--- Review ---")),console.log(JSON.stringify(B,null,2)),console.log();let K=await T0("Commit to repo and refresh DOI?",F,!0);if(K!=="confirmed"){console.log(W.dim(K==="declined"?"Skipped":"Cancelled"));return}let V=O("Saving enrichment...").start();try{let z=await jg(D,B);if(V.succeed(z.message),z.bidsignore_updated)console.log(W.dim(" .bidsignore updated to include .nemar/"));if(!Q&&Y)try{Q=await v9(D)}catch(Z){if(process.env.DEBUG)console.error("[debug] DOI info re-fetch:",Z)}if(Q?.ezid_identifier){let Z=O("Refreshing DOI metadata...").start();try{await hW(D,{refresh_metadata:!0}),Z.succeed("DOI metadata refreshed")}catch(U){Z.warn("Could not refresh DOI metadata"),console.log(W.dim(` ${O0(U)}`))}}else if(Y)console.log(W.yellow(" DOI refresh skipped: could not verify DOI exists. Run 'nemar admin doi update --refresh' manually."))}catch(z){if(z instanceof f)V.fail(z.message);else V.fail("Failed to save enrichment"),console.log(W.dim(` ${O0(z)}`))}});m0.addCommand(m9);var MQ=new v0("publish").description("Publication workflow management");MQ.command("list").description("List publication requests").option("-s, --status <status>","Filter by status (requested, approving, published, denied)").addHelpText("after",`
|
|
221
221
|
Description:
|
|
222
222
|
List all publication requests from users, with optional filtering by status.
|
|
223
223
|
Shows dataset ID, status, requesting user, and current progress.
|
|
@@ -300,13 +300,13 @@ ${$}
|
|
|
300
300
|
${W.cyan("Available Versions:")}
|
|
301
301
|
`);for(let R of G)console.log(` ${W.green(R.version)} ${W.dim(R.date)} ${W.dim(R.commit)}`);return}let H=F;if(!H){console.log(`
|
|
302
302
|
${W.cyan("Available Versions:")}
|
|
303
|
-
`);for(let j of G)console.log(` ${W.green(j.version)} ${W.dim(j.date)}`);console.log();let{version:R}=await D0.prompt([{type:"list",name:"version",message:"Select version to revert to:",choices:G.map((j)=>({name:`${j.version} (${j.date})`,value:j.version}))}]);H=R}let q=await QH(Q,H);if(!q){console.log(W.red(`Error: Version ${H} not found`)),console.log(W.dim(" Use --list to see available versions"));return}if(console.log(),console.log(W.yellow("Revert Summary:")),console.log(` Dataset: ${W.cyan(D)}`),console.log(` Target version: ${W.green(H)}`),console.log(` Commit: ${W.dim(q)}`),$.force)console.log(` Mode: ${W.red("DIRECT PUSH (--force)")}`);else console.log(` Mode: ${W.green("Pull Request")}`);if(console.log(),$.force)console.log(W.red("WARNING: --force will push directly to main without PR review!")),console.log(W.red("This should only be used in emergencies.")),console.log();let K=$.force?`Directly push revert to ${H}?`:`Create PR to revert to ${H}?`,V=await T0(K,$);if(V!=="confirmed"){console.log(W.dim(V==="declined"?"Skipped":"Cancelled"));return}let z=`revert-to-${H.replace(/\./g,"-")}-${Date.now()}`,Z=O("Creating revert branch...").start(),U=await YH(Q,H,z);if(!U.success){Z.fail(`Failed to create branch: ${U.error}`);return}Z.succeed(`Created branch: ${z}`);let M=O("Committing revert...").start(),A=$.message||`Revert to version ${H}`,C=await BH(Q,H,A);if(!C.success){M.fail(`Failed to commit: ${C.error}`);return}M.succeed("Committed revert changes");let w=O("Pushing branch...").start(),I=await SF(Q,z);if(!I.success){w.fail(`Failed to push: ${I.error}`);return}if(w.succeed("Pushed branch to GitHub"),!$.force){let R=O("Creating pull request...").start();try{let{spawn:j}=await import("child_process"),v=`Revert to version ${H}`,
|
|
303
|
+
`);for(let j of G)console.log(` ${W.green(j.version)} ${W.dim(j.date)}`);console.log();let{version:R}=await D0.prompt([{type:"list",name:"version",message:"Select version to revert to:",choices:G.map((j)=>({name:`${j.version} (${j.date})`,value:j.version}))}]);H=R}let q=await QH(Q,H);if(!q){console.log(W.red(`Error: Version ${H} not found`)),console.log(W.dim(" Use --list to see available versions"));return}if(console.log(),console.log(W.yellow("Revert Summary:")),console.log(` Dataset: ${W.cyan(D)}`),console.log(` Target version: ${W.green(H)}`),console.log(` Commit: ${W.dim(q)}`),$.force)console.log(` Mode: ${W.red("DIRECT PUSH (--force)")}`);else console.log(` Mode: ${W.green("Pull Request")}`);if(console.log(),$.force)console.log(W.red("WARNING: --force will push directly to main without PR review!")),console.log(W.red("This should only be used in emergencies.")),console.log();let K=$.force?`Directly push revert to ${H}?`:`Create PR to revert to ${H}?`,V=await T0(K,$);if(V!=="confirmed"){console.log(W.dim(V==="declined"?"Skipped":"Cancelled"));return}let z=`revert-to-${H.replace(/\./g,"-")}-${Date.now()}`,Z=O("Creating revert branch...").start(),U=await YH(Q,H,z);if(!U.success){Z.fail(`Failed to create branch: ${U.error}`);return}Z.succeed(`Created branch: ${z}`);let M=O("Committing revert...").start(),A=$.message||`Revert to version ${H}`,C=await BH(Q,H,A);if(!C.success){M.fail(`Failed to commit: ${C.error}`);return}M.succeed("Committed revert changes");let w=O("Pushing branch...").start(),I=await SF(Q,z);if(!I.success){w.fail(`Failed to push: ${I.error}`);return}if(w.succeed("Pushed branch to GitHub"),!$.force){let R=O("Creating pull request...").start();try{let{spawn:j}=await import("child_process"),v=`Revert to version ${H}`,n=`## Revert Request
|
|
304
304
|
|
|
305
305
|
This PR reverts the dataset to version ${H}.
|
|
306
306
|
|
|
307
307
|
**Reason:** Admin-initiated revert
|
|
308
308
|
**Target version:** ${H}
|
|
309
|
-
**Original commit:** ${q}`,r=j("gh",["pr","create","--repo",X.github_repo,"--head",z,"--base","main","--title",v,"--body",
|
|
309
|
+
**Original commit:** ${q}`,r=j("gh",["pr","create","--repo",X.github_repo,"--head",z,"--base","main","--title",v,"--body",n],{cwd:Q}),a="";r.stdout.on("data",(Q0)=>{a+=Q0.toString()}),await new Promise((Q0,$0)=>{r.on("close",(N0)=>{if(N0===0)Q0();else $0(Error(`gh pr create failed with code ${N0}`))})}),R.succeed("Created pull request"),console.log(),console.log(` ${W.cyan("PR URL:")} ${a.trim()}`),console.log(),console.log(W.green("Revert PR created successfully.")),console.log(W.dim("The PR will go through validation checks before it can be merged."))}catch(j){R.fail("Failed to create PR via gh CLI");let v=j instanceof Error?j.message:String(j);if(console.error(W.red(` Error: ${v}`)),v.includes("not found")||v.includes("command not found"))console.log(W.yellow(" Possible causes:")),console.log(" \u2022 GitHub CLI (gh) not installed or not in PATH"),console.log(" \u2022 Run: brew install gh (or see https://cli.github.com)");else if(v.includes("auth")||v.includes("401"))console.log(W.yellow(" GitHub authentication failed.")),console.log(" \u2022 Run: gh auth login");console.log(W.dim(" You may need to create the PR manually on GitHub")),console.log(W.dim(` Branch: ${z}`))}}else console.log(W.yellow("Force mode: Merging directly to main...")),console.log(W.red("Direct merge not implemented for safety.")),console.log(W.dim("To force-merge, manually merge the branch on GitHub:")),console.log(W.dim(` git checkout main && git merge ${z} && git push`));if(Y)console.log(),console.log(W.dim(`Working directory: ${Q}`)),console.log(W.dim("You can delete this directory after the PR is merged."))});m0.command("make-public").description("Publish a dataset (make repository and data public) - PERMANENT").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
310
310
|
Description:
|
|
311
311
|
Publish a dataset by making both the GitHub repository and S3 data publicly accessible.
|
|
312
312
|
|
|
@@ -571,13 +571,13 @@ Examples:
|
|
|
571
571
|
$ nemar dataset upload ./ds -n "My EEG Study" -d "64-channel EEG data"
|
|
572
572
|
$ nemar dataset upload ./ds --dry-run # Preview without uploading
|
|
573
573
|
$ nemar dataset upload ./ds -j 16 # More parallel streams`).action(async(D,F)=>{let $=$D();if(!H0())console.log(W.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(!gf())console.log(W.yellow("Sandbox training required")),console.log(),console.log("You must complete sandbox training before uploading real datasets."),console.log("This verifies your setup and familiarizes you with the workflow."),console.log(),console.log("Run sandbox training with:"),console.log(W.cyan(" nemar sandbox")),process.exit(1);let J=JD(D);if(!r0(J))console.log(W.red(`Error: Path does not exist: ${J}`)),process.exit(1);await u4("upload");let Q=O("Checking prerequisites...").start(),Y=await x9();if(!Y.allPassed){Q.fail("Prerequisites check failed"),console.log();for(let N of Y.errors)console.log(W.red(` - ${N}`));process.exit(1)}if(Q.succeed("Prerequisites check passed"),console.log(W.dim(` git-annex ${Y.gitAnnex.version}`)),Y.githubSSH.username)console.log(W.dim(` GitHub: ${Y.githubSSH.username}`));console.log(),Q=O("Verifying GitHub CLI authentication...").start();let B=await _9($.githubUsername);if(!B.authenticated)Q.fail("GitHub CLI not authenticated"),console.log(W.red(` ${B.error}`)),console.log(),console.log("GitHub CLI is required for dataset uploads. Install and authenticate:"),console.log(W.cyan(" brew install gh # or visit https://cli.github.com/")),console.log(W.cyan(" gh auth login")),process.exit(1);if($.githubUsername&&!B.matches)Q.warn("GitHub CLI user mismatch"),console.log(W.yellow(` ${B.error}`)),console.log(),console.log("Your gh CLI is authenticated as a different GitHub account than your NEMAR account."),console.log("This may cause issues with repository access. To fix:"),console.log(W.cyan(` gh auth login # Login as ${$.githubUsername}`)),console.log(),console.log(W.yellow("WARNING: If upload fails with permission errors, this mismatch is the likely cause.")),console.log();else Q.succeed(`GitHub CLI authenticated as ${B.username}`);if(!F.skipValidation){Q=O("Validating BIDS dataset...").start();let N=JD(J,"dataset_description.json");if(!r0(N))Q.fail("Not a valid BIDS dataset"),console.log(W.red("Missing required file: dataset_description.json")),process.exit(1);if(!(await c9()).installed)Q.fail("Deno is required for BIDS validation"),console.log(),console.log(W.red("Error: Deno is not installed")),console.log(),console.log("The BIDS validator requires Deno runtime to run."),console.log("Install Deno with one of these commands:"),console.log(),console.log(W.cyan(" # macOS/Linux (curl)")),console.log(" curl -fsSL https://deno.land/install.sh | sh"),console.log(),console.log(W.cyan(" # macOS (Homebrew)")),console.log(" brew install deno"),console.log(),console.log(W.cyan(" # Windows (PowerShell)")),console.log(" irm https://deno.land/install.ps1 | iex"),console.log(),console.log("Learn more: https://docs.deno.com/runtime/getting_started/installation/"),console.log(),console.log(W.dim("To skip validation (not recommended): nemar dataset upload --skip-validation")),process.exit(1);try{let u=await Hb(J,{prune:!0});if(!u.valid)Q.fail("Dataset has validation errors"),console.log(),console.log(Kb(u)),console.log(),console.log(W.yellow("Fix the errors above before uploading.")),console.log(W.dim("Or use --skip-validation to upload anyway (not recommended).")),process.exit(1);Q.succeed(`Dataset is valid BIDS (${u.warningCount} warnings)`)}catch(u){Q.fail("Validation failed"),console.log(W.red(u.message)),process.exit(1)}console.log()}Q=O("Analyzing dataset files...").start();let X={};try{let N=JD(J,"dataset_description.json");X=JSON.parse(r1(N,"utf-8"))}catch(N){if(N.code!=="ENOENT")console.log(W.yellow(`Warning: Could not read dataset_description.json: ${N.message}`))}let G=F.name||(typeof X.Name==="string"?X.Name:null)||HU0(J),H=await EH(J);Q.succeed(`Found ${H.files.length} files (${H.dataFiles} data, ${H.metadataFiles} metadata)`);let q,K=JD(J,".nemar","metadata.json"),V=JD(J,"nemar_metadata.json");if(r0(K))try{q=JSON.parse(r1(K,"utf-8")),console.log(W.dim(" Using existing .nemar/metadata.json (author ORCIDs from prior run)"))}catch(N){console.log(W.yellow(` Warning: Could not read .nemar/metadata.json: ${N instanceof Error?N.message:N}. Will re-collect author information.`))}else if(r0(V))try{q=JSON.parse(r1(V,"utf-8")),console.log(W.dim(" Using existing nemar_metadata.json (author ORCIDs from prior run)"))}catch(N){console.log(W.yellow(` Warning: Could not read nemar_metadata.json: ${N instanceof Error?N.message:N}. Will re-collect author information.`))}if(!q&&!F.skipOrcid&&process.stdin.isTTY){let N=X.Authors,b=Array.isArray(N)?N.filter((u)=>typeof u==="string"):[];if(b.length>0)try{let u,L0;try{let x0=await $Q();u=x0.orcid||void 0,L0=x0.username}catch(x0){console.log(W.dim(` Could not fetch profile: ${O0(x0)}`))}console.log(),console.log(W.cyan("Authors found:"),b.join(" | "));let QD={},HD;if(u&&L0){let x0=L0.toLowerCase(),hD=b.find((w1)=>w1.toLowerCase().includes(x0));if(hD)QD[hD]={orcid:u},HD=hD,console.log(` Your ORCID (from profile): ${W.green(u)} (matched to "${hD}")`)}try{let{discoverOrcidsFromReferencedDois:x0}=await Promise.resolve().then(() => ($u(),Fu)),hD=O("Looking up author ORCIDs from referenced publications...").start(),w1=await x0(X,QD),fF=Object.keys(w1.discoveries).length;if(fF>0){hD.succeed(`Found ${fF} ORCID(s) from referenced DOIs`);for(let[i9,s6]of Object.entries(w1.discoveries))console.log(` ${W.green(s6.orcid)} -> "${i9}" (from ${s6.sourceDoi}, ${s6.confidence} match)`);let{confirmOrcids:Nu}=await D0.prompt([{type:"confirm",name:"confirmOrcids",message:"Accept these auto-discovered ORCIDs?",default:!0}]);if(Nu)for(let[i9,s6]of Object.entries(w1.discoveries))QD[i9]={...QD[i9],orcid:s6.orcid,...s6.affiliations&&{affiliations:s6.affiliations}}}else hD.info("No ORCIDs found from referenced DOIs")}catch(x0){console.log(W.yellow(` Could not auto-discover ORCIDs: ${O0(x0)}`))}for(let x0 of b){if(x0===HD)continue;if(QD[x0]?.orcid)continue;let{orcid:hD}=await D0.prompt([{type:"input",name:"orcid",message:`ORCID for "${x0}" (Enter to skip):`,validate:(w1)=>{if(!w1)return!0;return DQ.test(w1)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]);if(hD){let w1={orcid:hD},{affiliation:fF}=await D0.prompt([{type:"input",name:"affiliation",message:` Affiliation for "${x0}" (optional):`}]);if(fF)w1.affiliations=[{name:fF}];QD[x0]=w1}}if(Object.keys(QD).length>0){q={version:"2.0",authors:QD};try{let x0=JD(J,".nemar");if(!r0(x0))Ju(x0,{recursive:!0});let hD=JD(x0,"metadata.json");d4(hD,JSON.stringify(q,null,2)),console.log(W.dim(" Saved .nemar/metadata.json with author ORCIDs"))}catch(x0){console.log(W.yellow(` Warning: Could not save .nemar/metadata.json: ${O0(x0)}`))}}console.log()}catch(u){if(u instanceof f)console.log(W.yellow(` Could not fetch profile: ${u.message}`));else console.log(W.yellow(` Could not collect ORCIDs: ${O0(u)}`));console.log(W.dim(" Continuing without author enrichment."))}}let z;if(process.stdin.isTTY&&!F.skipValidation){let N=Ab(J);if(N.spdxId){if(console.log(),console.log(W.cyan("License detected:"),W.bold(N.spdxId),W.dim(`(from ${N.source==="dataset_description"?"dataset_description.json":"LICENSE file"})`)),!Mb(N.spdxId))console.log(W.yellow(` Warning: "${N.spdxId}" is not in the list of known research-compatible licenses.`));let{keepLicense:u}=await D0.prompt([{type:"confirm",name:"keepLicense",message:`Use "${N.spdxId}" as the dataset license?`,default:!0}]);if(u)z=N.spdxId;else z=await rH(N.spdxId)}else{if(console.log(),N.source==="license_file")console.log(W.yellow("A LICENSE file was found but the license could not be identified automatically."));else console.log(W.yellow("No license found in this dataset."));console.log(W.dim("A license is required to publish on NEMAR.")),z=await rH()}try{let u=JD(J,"dataset_description.json");if(r0(u)){if(JSON.parse(r1(u,"utf-8")).License!==z)Rb(J,z),console.log(W.dim(` Updated dataset_description.json License -> ${z}`))}}catch(u){console.log(W.yellow(` Warning: Could not update license in dataset_description.json: ${O0(u)}`))}if(Nb(J,z))console.log(W.dim(` Created LICENSE file (${z})`));console.log()}if(process.stdin.isTTY&&!F.skipValidation&&z){let N=await xb(z);if(N.isDerived&&N.sourceDatasets&&N.sourceDatasets.length>0){try{let b=JD(J,"dataset_description.json");if(r0(b)){let u=JSON.parse(r1(b,"utf-8")),L0=Array.isArray(u.SourceDatasets)?u.SourceDatasets:[],QD=N.sourceDatasets.map((x0)=>x0.identifier),HD=Array.from(new Set([...L0,...QD]));u.SourceDatasets=HD,d4(b,`${JSON.stringify(u,null,2)}
|
|
574
|
-
`),console.log(W.dim(` Updated dataset_description.json SourceDatasets (${HD.length} source(s))`))}}catch(b){console.log(W.yellow(` Warning: Could not update SourceDatasets: ${O0(b)}`))}console.log()}}let Z=iH(J);if(console.log(),Z)console.log(W.bold.yellow("Resume Upload:")),console.log(` Dataset ID: ${W.cyan(Z.dataset_id)}`),console.log(` Last attempt: ${Z.last_upload_at||Z.created_at}`);else console.log(W.bold("Upload Plan:"));if(console.log(` Name: ${G}`),console.log(` Path: ${J}`),console.log(` Files: ${H.files.length}`),console.log(` Size: ${YD(H.totalSize)}`),console.log(` Data files: ${H.dataFiles} (will be uploaded to S3)`),console.log(` Metadata files: ${H.metadataFiles} (will be stored in git)`),console.log(` Parallel jobs: ${F.jobs}`),console.log(),F.dryRun){console.log(W.yellow("Dry run mode - no changes made"));return}let U=await T0("Proceed with upload?",{yes:F.yes,no:F.no},!0);if(U!=="confirmed"){console.log(U==="declined"?"Upload skipped.":"Upload cancelled.");return}console.log();let M=H.files.filter((N)=>N.type==="data");if(F.restart)vQ(J),console.log(W.dim(" Upload progress cleared (--restart)")),console.log();let A=F.restart?null:bb(J);if(A){let N=lb(A);if(console.log(W.bold.cyan("Upload Progress:")),console.log(` Files: ${N.uploaded}/${N.total} uploaded, ${N.failed} failed, ${N.pending} pending`),N.completedSteps.length>0)console.log(` Completed steps: ${N.completedSteps.join(", ")}`);console.log()}let C=A?mb(A,M):M,w;if(Z!==null){Q=O(`Resuming upload for ${Z.dataset_id}...`).start();try{await gD(Z.dataset_id),w={dataset_id:Z.dataset_id,ssh_url:Z.ssh_url,s3_prefix:Z.s3_prefix,github_url:Z.github_url,upload_urls:{},s3_config:Z.s3_config},Q.succeed(`Resuming upload: ${w.dataset_id}`)}catch(N){if(Q.fail("Failed to resume upload"),N instanceof f){if(console.log(W.red(` ${N.message}`)),N.statusCode===404)console.log(W.yellow(" The dataset may have been deleted. Try uploading as a new dataset.")),console.log(W.dim(` Remove ${J}/.nemar to start fresh.`))}else console.log(W.red(` ${N.message}`));process.exit(1)}}else{Q=O("Creating dataset in NEMAR...").start();try{let N=await YQ({name:G,description:F.description,files:M.map((u)=>({path:u.path,size:u.size,type:u.type}))});w={dataset_id:N.dataset.dataset_id,ssh_url:N.dataset.ssh_url,s3_prefix:N.dataset.s3_prefix,github_url:N.dataset.github_url,upload_urls:N.upload_urls||{},s3_config:N.s3_config};let b={dataset_id:w.dataset_id,github_url:w.github_url,ssh_url:w.ssh_url,s3_prefix:w.s3_prefix,s3_config:w.s3_config,created_at:new Date().toISOString()};if(aH(J,b),N.resumed)Q.succeed(`Resumed existing dataset: ${w.dataset_id}`);else Q.succeed(`Dataset created: ${w.dataset_id}`),await new Promise((u)=>setTimeout(u,1e4))}catch(N){if(Q.fail("Failed to create dataset"),N instanceof f)console.log(W.red(` ${N.message}`));else console.log(W.red(` ${N.message}`));process.exit(1)}}if(A&&A.dataset_id!==w.dataset_id)console.log(W.yellow(" Progress file is for a different dataset; starting fresh.")),vQ(J),A=null;Q=O("Accepting GitHub repository invitation...").start();let R=w.github_url?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),j=R?R[1].replace(/\.git$/,""):null;if(!j)Q.fail("Invalid GitHub repository URL from backend"),console.log(W.red(` Received: ${w.github_url||"(empty)"}`)),console.log(W.red(" Expected format: https://github.com/owner/repo")),console.log(),console.log("This may indicate a backend issue. Please contact support."),process.exit(1);let v=await f9(j);if(v.accepted)if(v.alreadyCollaborator)Q.succeed("Already a collaborator on this repository");else Q.succeed("GitHub invitation accepted");else Q.warn("Could not auto-accept invitation"),console.log(W.yellow(` ${v.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(W.cyan(` https://github.com/${j}/invitations`)),console.log();Q=O("Initializing git-annex dataset...").start();let
|
|
574
|
+
`),console.log(W.dim(` Updated dataset_description.json SourceDatasets (${HD.length} source(s))`))}}catch(b){console.log(W.yellow(` Warning: Could not update SourceDatasets: ${O0(b)}`))}console.log()}}let Z=iH(J);if(console.log(),Z)console.log(W.bold.yellow("Resume Upload:")),console.log(` Dataset ID: ${W.cyan(Z.dataset_id)}`),console.log(` Last attempt: ${Z.last_upload_at||Z.created_at}`);else console.log(W.bold("Upload Plan:"));if(console.log(` Name: ${G}`),console.log(` Path: ${J}`),console.log(` Files: ${H.files.length}`),console.log(` Size: ${YD(H.totalSize)}`),console.log(` Data files: ${H.dataFiles} (will be uploaded to S3)`),console.log(` Metadata files: ${H.metadataFiles} (will be stored in git)`),console.log(` Parallel jobs: ${F.jobs}`),console.log(),F.dryRun){console.log(W.yellow("Dry run mode - no changes made"));return}let U=await T0("Proceed with upload?",{yes:F.yes,no:F.no},!0);if(U!=="confirmed"){console.log(U==="declined"?"Upload skipped.":"Upload cancelled.");return}console.log();let M=H.files.filter((N)=>N.type==="data");if(F.restart)vQ(J),console.log(W.dim(" Upload progress cleared (--restart)")),console.log();let A=F.restart?null:bb(J);if(A){let N=lb(A);if(console.log(W.bold.cyan("Upload Progress:")),console.log(` Files: ${N.uploaded}/${N.total} uploaded, ${N.failed} failed, ${N.pending} pending`),N.completedSteps.length>0)console.log(` Completed steps: ${N.completedSteps.join(", ")}`);console.log()}let C=A?mb(A,M):M,w;if(Z!==null){Q=O(`Resuming upload for ${Z.dataset_id}...`).start();try{await gD(Z.dataset_id),w={dataset_id:Z.dataset_id,ssh_url:Z.ssh_url,s3_prefix:Z.s3_prefix,github_url:Z.github_url,upload_urls:{},s3_config:Z.s3_config},Q.succeed(`Resuming upload: ${w.dataset_id}`)}catch(N){if(Q.fail("Failed to resume upload"),N instanceof f){if(console.log(W.red(` ${N.message}`)),N.statusCode===404)console.log(W.yellow(" The dataset may have been deleted. Try uploading as a new dataset.")),console.log(W.dim(` Remove ${J}/.nemar to start fresh.`))}else console.log(W.red(` ${N.message}`));process.exit(1)}}else{Q=O("Creating dataset in NEMAR...").start();try{let N=await YQ({name:G,description:F.description,files:M.map((u)=>({path:u.path,size:u.size,type:u.type}))});w={dataset_id:N.dataset.dataset_id,ssh_url:N.dataset.ssh_url,s3_prefix:N.dataset.s3_prefix,github_url:N.dataset.github_url,upload_urls:N.upload_urls||{},s3_config:N.s3_config};let b={dataset_id:w.dataset_id,github_url:w.github_url,ssh_url:w.ssh_url,s3_prefix:w.s3_prefix,s3_config:w.s3_config,created_at:new Date().toISOString()};if(aH(J,b),N.resumed)Q.succeed(`Resumed existing dataset: ${w.dataset_id}`);else Q.succeed(`Dataset created: ${w.dataset_id}`),await new Promise((u)=>setTimeout(u,1e4))}catch(N){if(Q.fail("Failed to create dataset"),N instanceof f)console.log(W.red(` ${N.message}`));else console.log(W.red(` ${N.message}`));process.exit(1)}}if(A&&A.dataset_id!==w.dataset_id)console.log(W.yellow(" Progress file is for a different dataset; starting fresh.")),vQ(J),A=null;Q=O("Accepting GitHub repository invitation...").start();let R=w.github_url?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),j=R?R[1].replace(/\.git$/,""):null;if(!j)Q.fail("Invalid GitHub repository URL from backend"),console.log(W.red(` Received: ${w.github_url||"(empty)"}`)),console.log(W.red(" Expected format: https://github.com/owner/repo")),console.log(),console.log("This may indicate a backend issue. Please contact support."),process.exit(1);let v=await f9(j);if(v.accepted)if(v.alreadyCollaborator)Q.succeed("Already a collaborator on this repository");else Q.succeed("GitHub invitation accepted");else Q.warn("Could not auto-accept invitation"),console.log(W.yellow(` ${v.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(W.cyan(` https://github.com/${j}/invitations`)),console.log();Q=O("Initializing git-annex dataset...").start();let n=$.username&&$.email?{name:$.username,email:$.email}:void 0;if(!await R1(J)){let N=await n6(J,{author:n});if(!N.success)Q.fail("Failed to initialize git-annex dataset"),console.log(W.red(` ${N.error}`)),process.exit(1)}let a=await rW(J);if(!a.success)Q.fail("Failed to initialize git-annex"),console.log(W.red(` ${a.error}`)),process.exit(1);let Q0=await g4(J);if(!Q0.success)Q.warn("Could not configure largefiles pattern"),console.log(W.dim(` ${Q0.error}`));Q.succeed("git-annex dataset initialized");let $0=await o8(J);if($0?.startsWith("adjusted/"))console.log(W.dim(` Note: Your local branch is "${$0}".`)),console.log(W.dim(" This is normal; it keeps files unlocked so you can work with them directly.")),console.log(W.dim(' Pushes will go to the "main" branch on GitHub automatically.'));try{let N=JD(J,".gitignore"),b="";if(r0(N))b=r1(N,"utf-8");if(!b.includes(".nemar/")){let u=b?`${b.trimEnd()}
|
|
575
575
|
.nemar/
|
|
576
576
|
`:`.nemar/
|
|
577
577
|
`;d4(N,u)}}catch(N){console.log(W.yellow(` Warning: Could not update .gitignore: ${O0(N)}`))}Q=O("Configuring GitHub remote...").start();let N0=await i8(J,w.ssh_url);if(!N0.success)Q.fail("Failed to configure GitHub remote"),console.log(W.red(` ${N0.error}`)),process.exit(1);if(Q.succeed("GitHub remote configured"),!await h9(J,{yes:F.yes}))process.exit(1);if(!A)A=hb(J,w.dataset_id,M);else{for(let N of M)if(!A.files[N.path])A.files[N.path]={status:"pending",size:N.size,updated_at:new Date().toISOString()};s1(J,A)}if(!xF(A,"s3_upload")){if(C.length>0){Q=O("Requesting upload credentials...").start();let N;try{N=await c8(w.dataset_id),Q.succeed("Upload credentials received (2h expiry)")}catch(QD){Q.fail(`Could not get upload credentials: ${O0(QD)}`),console.log(W.red(" Upload credentials are required for S3 access.")),console.log(W.dim(" Re-run the command to retry.")),process.exit(1)}Q=O("Configuring S3 remote...").start();let b=await o1(J,{name:"nemar-s3",bucket:N.s3.bucket,prefix:`${w.dataset_id}/objects`,region:N.s3.region,publicUrl:w.s3_config.public_url},PD(N.credentials));if(!b.success)Q.fail(`Failed to configure S3 remote: ${b.error}`),console.log(W.dim(" Re-run the command to retry.")),process.exit(1);Q.succeed("S3 remote configured"),Q=O("Tracking data files with git-annex...").start();let u=await i6(J);if(!u.success)Q.fail(`Failed to track data files: ${u.error}`),process.exit(1);Q.succeed("Data files tracked by git-annex"),Q=O(`Uploading ${C.length} data files to S3...`).start();let L0=await C8(J,"nemar-s3",Number.parseInt(F.jobs,10),PD(N.credentials));if(await ID(J),!L0.success)Q.fail(`S3 upload failed: ${L0.error}`),console.log(W.yellow("Re-run the same command to resume uploading.")),process.exit(1);for(let QD of C)ub(A,QD.path);s1(J,A),Q.succeed(`Uploaded ${L0.filesCopied} data files to S3`)}else console.log(W.dim("No data files to upload to S3"));yF(A,"s3_upload"),s1(J,A)}else console.log(W.dim(" S3 upload already completed (skipping)"));if(!xF(A,"metadata_write")){if(q)try{let N=JD(J,".nemar"),b=JD(N,"metadata.json");if(!r0(b)){if(!r0(N))Ju(N,{recursive:!0});d4(b,JSON.stringify(q,null,2))}let u=JD(J,".bidsignore"),L0="";if(r0(u))L0=r1(u,"utf-8");if(!L0.includes(".nemar/")){let QD=L0?`${L0.trimEnd()}
|
|
578
578
|
.nemar/
|
|
579
579
|
`:`.nemar/
|
|
580
|
-
`;d4(u,QD)}console.log(W.dim(" Updated .bidsignore for NEMAR metadata"))}catch(N){console.log(W.yellow(` Warning: Could not update .bidsignore: ${O0(N)}`)),console.log(W.dim(" Upload will continue without author enrichment."))}yF(A,"metadata_write"),s1(J,A)}else console.log(W.dim(" Metadata write already completed (skipping)"));if(!xF(A,"dataset_save")){Q=O("Saving dataset changes...").start();let N=await a8(J,"Initial NEMAR dataset upload",
|
|
580
|
+
`;d4(u,QD)}console.log(W.dim(" Updated .bidsignore for NEMAR metadata"))}catch(N){console.log(W.yellow(` Warning: Could not update .bidsignore: ${O0(N)}`)),console.log(W.dim(" Upload will continue without author enrichment."))}yF(A,"metadata_write"),s1(J,A)}else console.log(W.dim(" Metadata write already completed (skipping)"));if(!xF(A,"dataset_save")){Q=O("Saving dataset changes...").start();let N=await a8(J,"Initial NEMAR dataset upload",n);if(!N.success)s1(J,A),Q.fail("Failed to save dataset"),console.log(W.red(` ${N.error}`)),console.log(),console.log(W.yellow("Re-run the same command to resume from this step.")),process.exit(1);Q.succeed("Dataset changes saved"),yF(A,"dataset_save"),s1(J,A)}else console.log(W.dim(" Dataset save already completed (skipping)"));if(!xF(A,"github_push")){Q=O("Pushing metadata to GitHub...").start();let N=await C1(J);if(!N.success)s1(J,A),Q.fail("Failed to push to GitHub"),console.log(W.red(` ${N.error}`)),console.log(),console.log(W.yellow("Re-run the same command to resume from this step.")),process.exit(1);if(N.warning)Q.warn("Metadata pushed to GitHub (with warning)"),console.log(W.yellow(` ${N.warning}`));else Q.succeed("Metadata pushed to GitHub");yF(A,"github_push"),s1(J,A)}else console.log(W.dim(" GitHub push already completed (skipping)"));if(!xF(A,"ci_deploy")){Q=O("Setting up BIDS validation CI...").start();try{await f4(w.dataset_id),Q.succeed("BIDS validation CI configured")}catch(N){if(N instanceof f&&N.statusCode===403)Q.info("CI workflow will be configured by an admin");else{let b=N instanceof Error?N.message:String(N);Q.warn(`Could not configure CI: ${b}`),console.log(W.dim(` An admin can add it later with: nemar admin ci add ${w.dataset_id}`))}}yF(A,"ci_deploy"),s1(J,A)}else console.log(W.dim(" CI deploy already completed (skipping)"));vQ(J),Zb(J),console.log(),console.log(W.green.bold("Upload complete!")),console.log(),console.log(` Dataset ID: ${W.cyan(w.dataset_id)}`),console.log(` GitHub: ${W.cyan(w.github_url)}`),console.log(),console.log(W.dim("To download this dataset:")),console.log(W.dim(` nemar dataset download ${w.dataset_id}`)),console.log(),console.log(W.yellow("Note: This dataset is private. Only the owner and designated collaborators can")),console.log(W.yellow("download it, and only through the NEMAR CLI (not direct git-annex commands).")),console.log(W.yellow("After publishing, the data will be publicly available for everyone."))});function KU0(D,F,$,J){let Q=Math.round(D/F*100),Y=20,B=Math.round(Q/100*20);return`${`[${"=".repeat(B)}${" ".repeat(20-B)}]`} ${Q}% | ${D}/${F} files | ${YD($)} / ${YD(J)}`}async function Bu(D,F){if(F==="public")return;let $=O("Requesting download credentials...").start();try{let J=await gW(D);return $.succeed("Download credentials received (2h expiry)"),PD(J.credentials)}catch(J){$.fail("Failed to get download credentials"),console.log(W.red(` ${J.message}`)),console.log(W.dim("Private datasets require authentication. Run 'nemar auth login' first.")),process.exit(1)}}async function zU0(D,F){if(console.log(),console.log(W.yellow("OpenNeuro Dataset")),console.log(W.yellow("This dataset will be downloaded as plain files from OpenNeuro's public S3 bucket.")),console.log(W.yellow("Unlike NEMAR datasets, there is no git-annex version tracking or selective file download.")),console.log(W.dim("For full version control, use DataLad directly:")),console.log(W.dim(` datalad install https://github.com/OpenNeuroDatasets/${D}`)),console.log(),F.data===!1)console.log(W.yellow("Note: --no-data is not supported for OpenNeuro downloads. Downloading all files.")),console.log();let $=F.output||D,J=JD($);if(r0(J))console.log(W.red(`Error: Output path already exists: ${J}`)),console.log("Remove or rename the existing directory and try again."),process.exit(1);let Q=await PQ(),Y=O(`Checking OpenNeuro for ${D}...`).start(),B;try{B=await Sb(D,Q)}catch(X){Y.fail(`Could not reach OpenNeuro: ${X.message}`),process.exit(1)}if(!B)Y.fail(`Dataset ${D} not found on OpenNeuro`),process.exit(1);if(Y.succeed(`Found ${D} on OpenNeuro`),Q){console.log(),console.log(W.bold("Download Plan:")),console.log(` Dataset: ${D} (OpenNeuro)`),console.log(` Output: ${J}`),console.log(" Method: AWS CLI (aws s3 sync)"),console.log(),console.log(W.bold("Downloading data files..."));let X=await vb(D,J,(G)=>{process.stderr.write(`\r${W.cyan(` ${G} files downloaded`)}`)});if(process.stderr.write(`\r${" ".repeat(40)}\r`),!X.success)console.log(W.red(`Download failed: ${X.error}`)),process.exit(1);console.log(W.green(`Downloaded ${X.filesDownloaded} files`))}else{console.log(),console.log(W.yellow("AWS CLI not found. Using direct HTTPS download.")),console.log(W.yellow("This will be slower than AWS CLI. To install it:")),console.log(W.dim(" https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html")),console.log();let X=O("Listing dataset files...").start(),G;try{G=await kb(D)}catch(V){X.fail(`Failed to list files: ${V.message}`),process.exit(1)}if(G.length===0)X.fail("No files found in dataset"),process.exit(1);let H=G.reduce((V,z)=>V+z.size,0);X.succeed(`${G.length} files (${YD(H)})`),console.log(W.bold("Download Plan:")),console.log(` Dataset: ${D} (OpenNeuro)`),console.log(` Output: ${J}`),console.log(" Method: HTTPS (direct download)"),console.log(` Files: ${G.length} (${YD(H)})`),console.log(),console.log(W.bold("Downloading data files..."));let q=Number.parseInt(F.jobs||"8",10),K=await yb(D,J,G,{concurrency:q,onProgress:(V,z,Z,U)=>{process.stderr.write(`\r${W.cyan(KU0(V,z,Z,U))}`)}});if(process.stderr.write(`\r${" ".repeat(80)}\r`),!K.success){if(console.log(W.red(`
|
|
581
581
|
Download incomplete: ${K.error}`)),K.filesDownloaded>0)console.log(W.yellow(`${K.filesDownloaded} files succeeded. Re-run to retry failed files (resume support).`));console.log(`
|
|
582
582
|
Location: ${W.cyan(J)}`),process.exit(1)}console.log(W.green(`Downloaded ${K.filesDownloaded} files (${YD(K.totalBytes)})`))}console.log(),console.log(W.green.bold("Download complete!")),console.log(),console.log(` Location: ${W.cyan(J)}`),console.log()}t0.command("download").description("Download a dataset from NEMAR or OpenNeuro").argument("<dataset-id>","Dataset ID (e.g., nm000104 or OpenNeuro ds000248)").option("-o, --output <path>","Output directory (default: ./<dataset-id>)").option("-j, --jobs <number>","Parallel download streams (default: 4)","4").option("--no-data","Download metadata only (skip large data files)").option("--resume","Resume a partial download into an existing clone").option("--update","Pull only the version diff into an existing clone").option("--prune","With --update, drop annex objects that no longer exist upstream").option("--subjects <list>","Comma-separated subjects (e.g. sub-01,02)").option("--sessions <list>","Comma-separated sessions (e.g. ses-pre,post)").option("--tasks <list>","Comma-separated tasks (e.g. rest,nback)").option("--runs <list>","Comma-separated runs (e.g. 1,2 \u2014 matches run-1 and run-01)").option("--datatypes <list>","Comma-separated BIDS datatypes (e.g. eeg,emg)").option("--include <globs>","Comma-separated extra include globs").option("--exclude <globs>","Comma-separated exclude globs (e.g. sourcedata/**)").option("--stimuli","Include stimuli/ content (skipped by default; can be large)").option("--derivatives","Include derivatives/ content (skipped by default; can be large)").option("--skip-port-check","Skip the porting-in-progress check (use if falsely blocked on an OpenNeuro-sourced dataset)").addHelpText("after",`
|
|
583
583
|
Description:
|
|
@@ -613,14 +613,14 @@ Examples:
|
|
|
613
613
|
$ nemar dataset download nm000104 --tasks rest --datatypes eeg # Subset
|
|
614
614
|
$ nemar dataset download nm000104 --stimuli # Also download stimuli/
|
|
615
615
|
$ nemar dataset download nm000104 --stimuli --derivatives # Download everything
|
|
616
|
-
$ nemar dataset download ds000248 # Download from OpenNeuro`).action(async(D,F)=>{let $=await EU0(D);if(!$){await zU0(D,F);return}if(F.resume&&F.update)console.log(W.red("Error: --resume and --update are mutually exclusive.")),process.exit(1);if(F.prune&&!F.update)console.log(W.red("Error: --prune requires --update.")),process.exit(1);let J=IQ({subjects:F.subjects,sessions:F.sessions,tasks:F.tasks,runs:F.runs,datatypes:F.datatypes,include:F.include,exclude:F.exclude,excludeStimuli:F.stimuli!==!0,excludeDerivatives:F.derivatives!==!0});if(J.active&&F.data===!1)console.log(W.red("Error: --no-data cannot be combined with BIDS filters (--subjects, --tasks, etc.). Filters imply data download.")),process.exit(1);await u4("download");let Q=O("Checking git-annex...").start(),Y=await IF();if(!Y.allPassed){Q.fail("Prerequisites check failed"),console.log();for(let A of Y.errors)console.log(W.red(` - ${A}`));process.exit(1)}Q.succeed(`git-annex ${Y.gitAnnex.version}`),Q=O(`Fetching dataset info for ${$}...`).start();let B;try{B=await gD($),Q.succeed(`Found dataset: ${B.name}`)}catch(A){if(Q.fail("Dataset not found"),A instanceof f)console.log(W.red(` ${A.message}`));else console.log(W.red(` ${A.message}`));process.exit(1)}if(!B.github_repo)console.log(W.red("Error: Dataset repository not available")),process.exit(1);let X=F.output||$,G=JD(X),H,q=F.resume?"resume":F.update?"update":null;if(q){if(!r0(G))console.log(W.red(`Error: --${q} target does not exist: ${G}`)),console.log(W.dim(`Drop --${q} to perform a fresh clone.`)),process.exit(1);if(Q=O(`Validating ${q} target...`).start(),!await R1(G))Q.fail("Not a git-annex dataset"),console.log(W.red(` ${G} is not a git-annex repository.`)),console.log(W.dim(`--${q} requires a previous clone of the same dataset.`)),process.exit(1);let A=await s8(G);if(A!==$)Q.fail("Dataset ID mismatch"),console.log(W.red(` Expected ${$}, but ${G} is a clone of ${A??"an unknown repo"}.`)),process.exit(1);let C=await HH(G);if(C.error)Q.fail("Could not check working tree status"),console.log(W.red(` ${C.error}`)),process.exit(1);if(C.dirty)Q.fail("Working tree is dirty"),console.log(W.red(` Refusing to ${q} with uncommitted local changes.`)),console.log(W.dim(" Commit, stash, or discard them first.")),process.exit(1);let w=await qH(G);if(!w.success)Q.fail("Failed to fetch remote refs"),console.log(W.red(` ${w.error}`)),process.exit(1);let I=XH(G);if(I.error)console.log(W.yellow(` Warning: ${I.error}`));let R=await GH(G);for(let
|
|
616
|
+
$ nemar dataset download ds000248 # Download from OpenNeuro`).action(async(D,F)=>{let $=await EU0(D);if(!$){await zU0(D,F);return}if(F.resume&&F.update)console.log(W.red("Error: --resume and --update are mutually exclusive.")),process.exit(1);if(F.prune&&!F.update)console.log(W.red("Error: --prune requires --update.")),process.exit(1);let J=IQ({subjects:F.subjects,sessions:F.sessions,tasks:F.tasks,runs:F.runs,datatypes:F.datatypes,include:F.include,exclude:F.exclude,excludeStimuli:F.stimuli!==!0,excludeDerivatives:F.derivatives!==!0});if(J.active&&F.data===!1)console.log(W.red("Error: --no-data cannot be combined with BIDS filters (--subjects, --tasks, etc.). Filters imply data download.")),process.exit(1);await u4("download");let Q=O("Checking git-annex...").start(),Y=await IF();if(!Y.allPassed){Q.fail("Prerequisites check failed"),console.log();for(let A of Y.errors)console.log(W.red(` - ${A}`));process.exit(1)}Q.succeed(`git-annex ${Y.gitAnnex.version}`),Q=O(`Fetching dataset info for ${$}...`).start();let B;try{B=await gD($),Q.succeed(`Found dataset: ${B.name}`)}catch(A){if(Q.fail("Dataset not found"),A instanceof f)console.log(W.red(` ${A.message}`));else console.log(W.red(` ${A.message}`));process.exit(1)}if(!B.github_repo)console.log(W.red("Error: Dataset repository not available")),process.exit(1);let X=F.output||$,G=JD(X),H,q=F.resume?"resume":F.update?"update":null;if(q){if(!r0(G))console.log(W.red(`Error: --${q} target does not exist: ${G}`)),console.log(W.dim(`Drop --${q} to perform a fresh clone.`)),process.exit(1);if(Q=O(`Validating ${q} target...`).start(),!await R1(G))Q.fail("Not a git-annex dataset"),console.log(W.red(` ${G} is not a git-annex repository.`)),console.log(W.dim(`--${q} requires a previous clone of the same dataset.`)),process.exit(1);let A=await s8(G);if(A!==$)Q.fail("Dataset ID mismatch"),console.log(W.red(` Expected ${$}, but ${G} is a clone of ${A??"an unknown repo"}.`)),process.exit(1);let C=await HH(G);if(C.error)Q.fail("Could not check working tree status"),console.log(W.red(` ${C.error}`)),process.exit(1);if(C.dirty)Q.fail("Working tree is dirty"),console.log(W.red(` Refusing to ${q} with uncommitted local changes.`)),console.log(W.dim(" Commit, stash, or discard them first.")),process.exit(1);let w=await qH(G);if(!w.success)Q.fail("Failed to fetch remote refs"),console.log(W.red(` ${w.error}`)),process.exit(1);let I=XH(G);if(I.error)console.log(W.yellow(` Warning: ${I.error}`));let R=await GH(G);for(let n of R.warnings)console.log(W.yellow(` Warning: ${n}`));let j=I.version,v=R.version;if(F.resume){if(j&&v&&j!==v)Q.fail("Local clone is behind upstream"),console.log(W.red(` Local version: ${j} | Remote HEAD: ${v}`)),console.log(W.dim(" Run `nemar dataset download <id> --update` to pull the version diff.")),process.exit(1);Q.succeed(`Resume target verified: ${$}`)}else{if(j&&v&&j===v)Q.succeed(`Already up to date (${j})`),process.exit(0);if(Q.succeed(`Update plan: ${j??"unknown"} \u2192 ${v??"HEAD"}`),j&&v){Q=O("Computing version diff from manifests...").start();try{let[Q0,$0]=await Promise.all([QQ($,j),QQ($,v)]),N0=Cb(Q0,$0);if(Q.succeed(`Diff: +${N0.added.length} added, ~${N0.changed.length} changed, -${N0.removed.length} removed`),H=[...N0.added,...N0.changed],H.length===0)console.log(W.dim(" No annex content changes between versions; metadata-only update."))}catch(Q0){let $0=Q0.message;if(Q.warn(`Manifest diff unavailable: ${$0}`),/401|403|unauthor/i.test($0))console.log(W.yellow(" Looks like an auth issue. Run `nemar auth status` to verify."));else if(!/404|not found/i.test($0))console.log(W.yellow(" Unexpected manifest error. Please report if this recurs."));console.log(W.dim(" Falling back to full git annex get (skips already-present files).")),H=void 0}}let n=await o8(G);if(n?.startsWith("adjusted/"))console.log(W.red(` --update is not supported on git-annex adjusted branches (${n}).`)),console.log(W.dim(" Run `git -C <clone> annex sync` to bring the clone onto a normal branch first.")),process.exit(1);Q=O("Resolving remote tracking branch...").start();let r=await WH(G);if(!r.ref)Q.fail("Cannot resolve remote tracking branch"),console.log(W.red(` ${r.error??"no upstream ref found"}`)),process.exit(1);Q.text=`Fast-forwarding to ${r.ref}...`;let a=await KH(G,r.ref);if(!a.success)Q.fail("Cannot fast-forward (local has diverging commits)"),console.log(W.red(` ${a.error}`)),console.log(W.dim(" Use `nemar dataset update` (PR workflow) to push local changes first.")),process.exit(1);Q.succeed(`Merged ${r.ref}`)}}else if(r0(G))console.log(W.red(`Error: Output path already exists: ${G}`)),console.log("Remove or rename the existing directory, or pass --resume / --update to reuse it."),process.exit(1);console.log();let K=F.update?"Update Plan:":F.resume?"Resume Plan:":"Download Plan:";if(console.log(W.bold(K)),console.log(` Dataset: ${B.name} (${$})`),console.log(` Output: ${G}`),console.log(` Data files: ${F.data===!1?"metadata only":"included"}`),F.data!==!1)console.log(` Parallel jobs: ${F.jobs}`);if(F.update&&H&&H.length>0)console.log(` Files to fetch: ${H.length}`);if(J.active)for(let A of J.summary)console.log(` Filter ${A}`);if(console.log(),!q){let A=`https://github.com/${B.github_repo}.git`;Q=O("Cloning metadata from GitHub...").start();let C=await Q1(A,G);if(!C.success)Q.fail("Failed to clone dataset"),console.log(W.red(` ${C.error}`)),process.exit(1);Q.succeed("Metadata cloned")}if(!F.skipPortCheck&&B.source==="openneuro"&&F.data!==!1){if(await EQ(G)==="absent")console.log(),console.log(W.yellow("Porting still in progress.")),console.log(W.dim(" This dataset is being imported from OpenNeuro. Data files are not yet available.")),console.log(W.dim(" The metadata-only clone is already at the path above.")),console.log(W.dim(" Wait 5\u201330 minutes (depending on dataset size), then run:")),console.log(W.dim(` cd ${G} && nemar dataset get`)),console.log(W.dim(" Run 'nemar dataset status <id>' to track porting progress.")),console.log(W.dim(" Pass --skip-port-check to bypass this check if you are certain porting is complete.")),process.exit(1)}let V=await Bu($,B.visibility),z=await h4(G,"nemar-s3",V);if(z.enabled)console.log(W.dim(" S3 remote enabled for data downloads"));else if(!z.success)console.log(W.yellow(` Warning: Could not enable S3 remote: ${z.error}`));if(F.data===!1||F.update&&H&&H.length===0){if(F.data===!1)console.log(W.dim("Skipping data files (--no-data flag)"))}else{for(let R of J.summary)console.log(W.dim(` ${R}`));console.log(W.bold(`Downloading data files (${F.jobs} parallel streams)...`));let A=J.args.length>0?J.args:void 0,C=await zQ(G,void 0,A),w=new HQ(C?.fileCount??0,C?.totalBytes??0),I=await VQ(G,{jobs:Number.parseInt(F.jobs,10),credentials:V,paths:H,extraArgs:A,onProgress:(R)=>w.processLine(R)});if(!I.success){if(w.finish(0),console.log(W.red(`Failed to download data files: ${I.error}`)),console.log(W.dim("The dataset was cloned but data files are not available locally.")),console.log(W.dim(`You can try again with: cd ${G} && nemar dataset get`)),V)await ID(G);process.exit(1)}w.finish(I.filesDownloaded||0),console.log(W.green(`Data downloaded (${I.filesDownloaded||0} files)`))}if(F.update&&F.prune){Q=O("Pruning orphan annex objects...").start();let A=await zH(G);if(A.success)Q.succeed(`Pruned ${A.dropped??0} unused annex objects`);else Q.warn(`Prune skipped: ${A.error}`)}if(V)await ID(G);let U=await $H(G);console.log();let M=F.update?"Update complete!":F.resume?"Resume complete!":"Download complete!";if(console.log(W.green.bold(M)),console.log(),console.log(` Location: ${W.cyan(G)}`),U){if(console.log(` Files: ${U.files}`),U.size!=="unknown")console.log(` Size: ${U.size}`);if(U.missingFiles>0)console.log(W.dim(` Missing files: ${U.missingFiles} (use 'git annex get' to download)`))}if(console.log(),F.update)console.log(W.dim("Note: --update fetches only the version diff. If a prior version was")),console.log(W.dim("partially downloaded, run with --resume to fill any pre-existing gaps.")),console.log();console.log(W.dim("To get additional data:")),console.log(W.dim(` cd ${G} && git annex get <path>`))});t0.command("status").description("Check status of a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--json","Output as JSON for scripting").addHelpText("after",`
|
|
617
617
|
Description:
|
|
618
618
|
Show detailed information about a NEMAR dataset including owner,
|
|
619
619
|
creation date, GitHub repository, and DOI information.
|
|
620
620
|
|
|
621
621
|
Examples:
|
|
622
622
|
$ nemar dataset status nm000104
|
|
623
|
-
$ nemar dataset status nm000104 --json | jq '.concept_doi'`).action(async(D,F)=>{let $=O(`Fetching dataset info for ${D}...`).start(),J;try{J=await gD(D),$.stop()}catch(Q){if($.fail("Dataset not found"),Q instanceof f)console.log(W.red(` ${Q.message}`));else console.log(W.red(` ${Q.message}`));process.exit(1)}if(F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(W.bold(`Dataset: ${J.dataset_id}`)),console.log(),console.log(` Name: ${J.name}`),console.log(` Owner: ${J.owner_username}`),console.log(` Status: ${VU0(J.status)}`),console.log(` Created: ${new Date(J.created_at).toLocaleDateString()}`),J.description)console.log(` Description: ${J.description}`);if(J.github_repo)console.log(` GitHub: https://github.com/${J.github_repo}`);if(J.concept_doi)console.log(` DOI: https://doi.org/${J.concept_doi}`);console.log(),console.log(W.dim("To download this dataset:")),console.log(W.dim(` nemar dataset download ${D}`))});async function EU0(D){if(!Ib(D))return D;let F=null;try{F=await Hg(D)}catch(J){return console.log(W.dim(`Could not check NEMAR availability: ${J.message}`)),null}if(!F?.found||!F.dataset_id)return null;console.log(),console.log(W.green(`This dataset is available on NEMAR as ${W.bold(F.dataset_id)}`)),console.log(W.dim("NEMAR provides git-annex version tracking and selective file download."));let{useNemarBackend:$}=await D0.prompt([{type:"confirm",name:"useNemarBackend",message:`Download from NEMAR (${F.dataset_id}) instead of OpenNeuro?`,default:!0}]);return $?F.dataset_id:null}function VU0(D){switch(D.toLowerCase()){case"published":return W.green(D);case"active":return W.blue(D);case"archived":return W.dim(D);case"pending":return W.yellow(D);default:return D}}function ZU0(D,F){let{offset:$,totalCount:J}=F,Q=$+1,Y=$+D.length,B=J>D.length?`${Q}-${Y} of ${J}`:`${J}`;console.log(),console.log(W.bold(`Datasets (${B}):`)),console.log();let X=(Z)=>Z.dataset_id||Z.id||"",G=Math.max(10,...D.map((Z)=>X(Z).length)),H=Math.min(30,Math.max(10,...D.map((Z)=>Z.name.length))),q=10,K=8,V=Math.max(8,...D.map((Z)=>(Z.owner_username||"-").length)),z=["ID".padEnd(G),"Name".padEnd(H),"Modality".padEnd(q),"Subj".padEnd(K),"Owner".padEnd(V),"Status"].join(" ");console.log(W.dim(z)),console.log(W.dim("-".repeat(z.length)));for(let Z of D){let U=X(Z),M=Z.name.length>H?`${Z.name.substring(0,H-3)}...`:Z.name,A=(Z.modalities||"").substring(0,q),C=Z.participants?String(Z.participants):"-",w=Z.owner_username||"-",I=
|
|
623
|
+
$ nemar dataset status nm000104 --json | jq '.concept_doi'`).action(async(D,F)=>{let $=O(`Fetching dataset info for ${D}...`).start(),J;try{J=await gD(D),$.stop()}catch(Q){if($.fail("Dataset not found"),Q instanceof f)console.log(W.red(` ${Q.message}`));else console.log(W.red(` ${Q.message}`));process.exit(1)}if(F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(W.bold(`Dataset: ${J.dataset_id}`)),console.log(),console.log(` Name: ${J.name}`),console.log(` Owner: ${J.owner_username}`),console.log(` Status: ${VU0(J.status)}`),console.log(` Created: ${new Date(J.created_at).toLocaleDateString()}`),J.description)console.log(` Description: ${J.description}`);if(J.github_repo)console.log(` GitHub: https://github.com/${J.github_repo}`);if(J.concept_doi)console.log(` DOI: https://doi.org/${J.concept_doi}`);console.log(),console.log(W.dim("To download this dataset:")),console.log(W.dim(` nemar dataset download ${D}`))});async function EU0(D){if(!Ib(D))return D;let F=null;try{F=await Hg(D)}catch(J){return console.log(W.dim(`Could not check NEMAR availability: ${J.message}`)),null}if(!F?.found||!F.dataset_id)return null;console.log(),console.log(W.green(`This dataset is available on NEMAR as ${W.bold(F.dataset_id)}`)),console.log(W.dim("NEMAR provides git-annex version tracking and selective file download."));let{useNemarBackend:$}=await D0.prompt([{type:"confirm",name:"useNemarBackend",message:`Download from NEMAR (${F.dataset_id}) instead of OpenNeuro?`,default:!0}]);return $?F.dataset_id:null}function VU0(D){switch(D.toLowerCase()){case"published":return W.green(D);case"active":return W.blue(D);case"archived":return W.dim(D);case"pending":return W.yellow(D);default:return D}}function ZU0(D,F){let{offset:$,totalCount:J}=F,Q=$+1,Y=$+D.length,B=J>D.length?`${Q}-${Y} of ${J}`:`${J}`;console.log(),console.log(W.bold(`Datasets (${B}):`)),console.log();let X=(Z)=>Z.dataset_id||Z.id||"",G=Math.max(10,...D.map((Z)=>X(Z).length)),H=Math.min(30,Math.max(10,...D.map((Z)=>Z.name.length))),q=10,K=8,V=Math.max(8,...D.map((Z)=>(Z.owner_username||"-").length)),z=["ID".padEnd(G),"Name".padEnd(H),"Modality".padEnd(q),"Subj".padEnd(K),"Owner".padEnd(V),"Status"].join(" ");console.log(W.dim(z)),console.log(W.dim("-".repeat(z.length)));for(let Z of D){let U=X(Z),M=Z.name.length>H?`${Z.name.substring(0,H-3)}...`:Z.name,A=(Z.modalities||"").substring(0,q),C=Z.participants?String(Z.participants):"-",w=Z.owner_username||"-",I=Z.visibility==="public"?W.green("pub"):W.yellow("prv"),R;if(Z.source_type==="catalog")R=W.dim(U.padEnd(G));else R=W.cyan(U.padEnd(G));let j=Z.source_type==="catalog"?W.dim(M):M,v=[R,j.padEnd(H+(Z.source_type==="catalog"?W.dim("").length:0)),A.padEnd(q),C.padEnd(K),w.padEnd(V),I].join(" ");console.log(v)}if(console.log(),J>Y){let Z=Math.floor($/F.limit)+1,U=Math.ceil(J/F.limit);console.log(W.dim(`Page ${Z}/${U}. Next: nemar dataset list --page ${Z+1}`))}console.log(W.dim(` * = not synced to nemar.org ${W.dim("dim")} = catalog-only (not on GitHub)`)),console.log(W.dim("For details: nemar dataset status <dataset-id>")),console.log(W.dim("Search: nemar dataset search <query>"))}t0.command("list").description("List datasets on NEMAR (full catalog)").option("--mine","List only your datasets (both private and public)").option("--owner <username>","List datasets owned by a specific user").option("--search <query>","Search by name, description, authors, or tasks").option("--modality <type>","Filter by modality (eeg, emg, meg, etc.)").option("--author <name>","Filter by author name").option("--task <name>","Filter by task name").option("--license <tiers>","Filter by license tier(s), comma-separated: public, attribution, sharealike, noncommercial, noderiv, unknown").option("--doi","Show only datasets with DOIs").option("--recent [days]","Show recently published datasets").option("--sort <order>","Sort: newest, oldest, name, participants, size","newest").option("--json","Output as JSON for scripting").option("-n, --limit <n>","Results per page (default: 20, max: 200)","20").option("--page <n>","Page number (starts at 1)").option("--offset <n>","Skip this many results (alternative to --page)").option("--all","Show all results (up to 200)").addHelpText("after",`
|
|
624
624
|
Description:
|
|
625
625
|
Lists the full NEMAR catalog, including legacy datasets from nemar.org
|
|
626
626
|
and datasets managed via nemar-cli. Shows 20 results per page by default.
|
|
@@ -674,14 +674,14 @@ Description:
|
|
|
674
674
|
Examples:
|
|
675
675
|
$ nemar dataset release nm000104 --type patch
|
|
676
676
|
$ nemar dataset release nm000104 --version 2.0.0
|
|
677
|
-
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{if(!H0())console.log(W.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);await u4("release");let $=O("Fetching dataset info...").start(),J;try{J=await gD(D),$.succeed(`Dataset: ${J.name||D}`)}catch(R){if(R instanceof f)$.fail(R.message);else $.fail("Failed to fetch dataset");process.exit(1)}if(!J.github_repo)console.log(W.red("Error: Dataset has no GitHub repository")),process.exit(1);let Q;try{let R=await Kg(D);if(Q=R.current_version,console.log(` Current version: ${W.cyan(Q)}`),R.versions.length>0){console.log(` Version DOIs: ${R.versions.length}`);for(let j of R.versions.slice(0,3))console.log(` ${j.version} - ${W.dim(j.doi)}`);if(R.versions.length>3)console.log(W.dim(` ... and ${R.versions.length-3} more`))}}catch(R){let j=R instanceof f?`${R.statusCode}: ${R.message}`:String(R);console.log(W.red(`Error: Could not fetch version history (${j})`)),console.log(" Cannot determine current version. Ensure the backend is reachable."),process.exit(1)}let Y;if(F.version){if(!Fq(F.version))console.log(W.red(`Error: Invalid version: ${F.version}`)),console.log(" Expected format: X.Y.Z (e.g., 2.0.0)"),process.exit(1);Y=F.version.replace(/^v/,"")}else if(F.type){let R=F.type;if(!["patch","minor","major"].includes(R))console.log(W.red(`Error: Invalid bump type: ${F.type}`)),console.log(" Expected: patch, minor, or major"),process.exit(1);Y=p4(Q,R)}else{if(!vF(Q))console.log(W.red(`Error: Cannot parse current version: ${Q}`)),process.exit(1);let j=[{name:`patch ${Q} -> ${p4(Q,"patch")}`,value:"patch"},{name:`minor ${Q} -> ${p4(Q,"minor")}`,value:"minor"},{name:`major ${Q} -> ${p4(Q,"major")}`,value:"major"},{name:"custom version",value:"custom"}],{bumpType:v}=await D0.prompt([{type:"list",name:"bumpType",message:"Select version bump type:",choices:j}]);if(v==="custom"){let{customVersion:
|
|
677
|
+
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{if(!H0())console.log(W.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);await u4("release");let $=O("Fetching dataset info...").start(),J;try{J=await gD(D),$.succeed(`Dataset: ${J.name||D}`)}catch(R){if(R instanceof f)$.fail(R.message);else $.fail("Failed to fetch dataset");process.exit(1)}if(!J.github_repo)console.log(W.red("Error: Dataset has no GitHub repository")),process.exit(1);let Q;try{let R=await Kg(D);if(Q=R.current_version,console.log(` Current version: ${W.cyan(Q)}`),R.versions.length>0){console.log(` Version DOIs: ${R.versions.length}`);for(let j of R.versions.slice(0,3))console.log(` ${j.version} - ${W.dim(j.doi)}`);if(R.versions.length>3)console.log(W.dim(` ... and ${R.versions.length-3} more`))}}catch(R){let j=R instanceof f?`${R.statusCode}: ${R.message}`:String(R);console.log(W.red(`Error: Could not fetch version history (${j})`)),console.log(" Cannot determine current version. Ensure the backend is reachable."),process.exit(1)}let Y;if(F.version){if(!Fq(F.version))console.log(W.red(`Error: Invalid version: ${F.version}`)),console.log(" Expected format: X.Y.Z (e.g., 2.0.0)"),process.exit(1);Y=F.version.replace(/^v/,"")}else if(F.type){let R=F.type;if(!["patch","minor","major"].includes(R))console.log(W.red(`Error: Invalid bump type: ${F.type}`)),console.log(" Expected: patch, minor, or major"),process.exit(1);Y=p4(Q,R)}else{if(!vF(Q))console.log(W.red(`Error: Cannot parse current version: ${Q}`)),process.exit(1);let j=[{name:`patch ${Q} -> ${p4(Q,"patch")}`,value:"patch"},{name:`minor ${Q} -> ${p4(Q,"minor")}`,value:"minor"},{name:`major ${Q} -> ${p4(Q,"major")}`,value:"major"},{name:"custom version",value:"custom"}],{bumpType:v}=await D0.prompt([{type:"list",name:"bumpType",message:"Select version bump type:",choices:j}]);if(v==="custom"){let{customVersion:n}=await D0.prompt([{type:"input",name:"customVersion",message:"Enter version (X.Y.Z):",validate:(r)=>Fq(r)||"Invalid format. Use X.Y.Z (e.g., 2.0.0)"}]);Y=n.replace(/^v/,"")}else Y=p4(Q,v)}if(console.log(),console.log(` ${W.bold("Version bump:")} ${Q} -> ${W.green(Y)}`),await T0(`Create release PR for ${D} v${Y}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let X,G=!0;if(F.dir){if(!r0(F.dir))console.log(W.red(`Error: Directory not found: ${F.dir}`)),process.exit(1);X=JD(F.dir),G=!1}else X=GU0(_F(WU0(),`nemar-release-${D}-`));if(G){let R=`https://github.com/${J.github_repo}.git`,j=O("Cloning dataset...").start(),v=await Q1(R,X);if(!v.success)j.fail(`Clone failed: ${v.error}`),process.exit(1);j.succeed("Cloned dataset")}let H=`release/v${Y}`,q=O("Creating release branch...").start(),K=MD({cmd:["git","checkout","-b",H],cwd:X,stdout:"pipe",stderr:"pipe"});if(await K.exited!==0){let R=await new Response(K.stderr).text();q.fail(`Failed to create branch: ${R.trim()}`),process.exit(1)}q.succeed(`Created branch: ${H}`);let V=_F(X,"dataset_description.json");if(!r0(V))console.log(W.red("Error: dataset_description.json not found in repo")),process.exit(1);let z;try{z=JSON.parse(r1(V,"utf-8"))}catch(R){if(R instanceof SyntaxError)console.log(W.red("Error: dataset_description.json contains invalid JSON"));else console.log(W.red(`Error: Could not read dataset_description.json: ${R}`));process.exit(1)}z.Version=Y,d4(V,`${JSON.stringify(z,null,2)}
|
|
678
678
|
`);let Z=O("Committing version bump...").start(),U=MD({cmd:["git","add","dataset_description.json"],cwd:X,stdout:"pipe",stderr:"pipe"});if(await U.exited!==0){let R=await new Response(U.stderr).text();Z.fail(`Failed to stage changes: ${R.trim()}`),process.exit(1)}let M=MD({cmd:["git","commit","-m",`Bump version to ${Y}`],cwd:X,stdout:"pipe",stderr:"pipe"});if(await M.exited!==0){let R=await new Response(M.stderr).text();Z.fail(`Commit failed: ${R.trim()}`),process.exit(1)}Z.succeed("Committed version bump");let A=O("Pushing branch...").start(),C=await SF(X,H);if(!C.success)A.fail(`Push failed: ${C.error}`),process.exit(1);A.succeed("Pushed branch");let w=!1,I=O("Creating pull request...").start();try{let R=`Release v${Y}`,j=`## Version Bump
|
|
679
679
|
|
|
680
680
|
Bumps ${D} from ${Q} to ${Y}.
|
|
681
681
|
|
|
682
682
|
On merge, CI will:
|
|
683
683
|
- Tag the release (v${Y})
|
|
684
|
-
- Publish a version DOI (if concept DOI exists)`,v=MD({cmd:["gh","pr","create","--repo",J.github_repo,"--head",H,"--base","main","--title",R,"--body",j],cwd:X,stdout:"pipe",stderr:"pipe"}),
|
|
684
|
+
- Publish a version DOI (if concept DOI exists)`,v=MD({cmd:["gh","pr","create","--repo",J.github_repo,"--head",H,"--base","main","--title",R,"--body",j],cwd:X,stdout:"pipe",stderr:"pipe"}),n=(await new Response(v.stdout).text()).trim();if(await v.exited!==0){let r=await new Response(v.stderr).text();throw Error(r.trim()||"gh pr create failed")}w=!0,I.succeed("Created pull request"),console.log(),console.log(` ${W.cyan("PR:")} ${n}`)}catch(R){I.fail("Failed to create PR");let j=R instanceof Error?R.message:String(R);if(console.log(W.red(` ${j}`)),j.includes("not found")||j.includes("command not found"))console.log(W.yellow(" Install: brew install gh"));else if(j.includes("auth")||j.includes("401"))console.log(W.yellow(" Run: gh auth login"));console.log(W.dim(` Branch ${H} has been pushed. Create the PR manually.`))}if(F.monitor&&w){console.log(),console.log(W.dim("Monitoring CI checks...")),console.log(W.dim(" Press Ctrl+C to stop monitoring"));let R=0,j=60;while(R<j){await new Promise((a)=>setTimeout(a,1e4)),R++;let v=MD({cmd:["gh","pr","checks","--repo",J.github_repo,H],cwd:X,stdout:"pipe",stderr:"pipe"}),n=await new Response(v.stdout).text();if(await v.exited===0){if(console.log(W.green(" All checks passed!")),await T0("Merge the PR?",{yes:F.yes})==="confirmed"){let Q0=MD({cmd:["gh","pr","merge","--repo",J.github_repo,H,"--squash","--delete-branch"],cwd:X,stdout:"pipe",stderr:"pipe"});if(await Q0.exited===0)console.log(W.green(" PR merged successfully!"));else{let N0=await new Response(Q0.stderr).text();console.log(W.red(` Merge failed: ${N0.trim()}`))}}break}if(n.includes("fail")||n.includes("X")){console.log(W.red(" Some checks failed:")),console.log(n);break}process.stdout.write(W.dim("."))}if(R>=j)console.log(W.yellow(`
|
|
685
685
|
Timed out waiting for checks.`))}if(G)console.log(),console.log(W.dim(`Working directory: ${X}`)),console.log(W.dim("You can delete this directory after the PR is merged."))});t0.command("update").description("Push local changes to a dataset via PR").argument("[path]","Path to local dataset clone (default: current directory)").option("--bump <type>","Version bump type: patch, minor, or major","patch").option("--branch <name>","Custom branch name").option("-m, --message <msg>","Commit message").option("--monitor","Watch CI checks and offer to merge").option(w0,j0).addHelpText("after",`
|
|
686
686
|
Description:
|
|
687
687
|
Push local changes (metadata or data files) to a dataset via a pull
|
|
@@ -700,14 +700,14 @@ Examples:
|
|
|
700
700
|
$ nemar dataset update ./nm000104 --bump minor -m "Add new subjects"
|
|
701
701
|
$ nemar dataset update --branch fix/metadata -m "Fix participant ages"`).action(async(D,F)=>{if(!H0())console.log(W.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);await u4("update");let $=JD(D||".");if(!r0(_F($,".git")))console.log(W.red("Error: Not a git repository")),console.log(" Run this from inside a dataset clone, or pass the path."),process.exit(1);let J=await s8($);if(!J)console.log(W.red("Error: Could not detect dataset ID from git remote")),process.exit(1);console.log(` Dataset: ${W.cyan(J)}`);let Q=await o8($);if(Q!=="main"){if(console.log(W.yellow(`Warning: Currently on branch '${Q}', expected 'main'`)),await T0("Continue anyway?",{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}}let Y=MD({cmd:["git","status","--porcelain"],cwd:$,stdout:"pipe",stderr:"pipe"}),B=(await new Response(Y.stdout).text()).trim();if(await Y.exited!==0)console.log(W.red("Error: Failed to check git status")),process.exit(1);if(!B){console.log(W.yellow("No changes detected.")),console.log(" Make changes to the dataset files, then run this command again.");return}let X=B.split(`
|
|
702
702
|
`),G=[],H=[];for(let N of X){let b=N.substring(3).trim();if(/\.(edf|bdf|set|fdt|nwb|eeg|vhdr|vmrk|cnt|mff|gz)$/i.test(b))G.push(b);else H.push(b)}if(console.log(),H.length>0){console.log(` ${W.bold("Metadata files:")} ${H.length}`);for(let N of H.slice(0,5))console.log(` ${N}`);if(H.length>5)console.log(W.dim(` ... and ${H.length-5} more`))}if(G.length>0){console.log(` ${W.bold("Data files:")} ${G.length}`);for(let N of G.slice(0,5))console.log(` ${N}`);if(G.length>5)console.log(W.dim(` ... and ${G.length-5} more`))}let q=O("Fetching dataset info...").start(),K;try{K=await gD(J),q.succeed()}catch(N){if(N instanceof f)q.fail(N.message);else q.fail("Failed to fetch dataset");process.exit(1)}if(!K.github_repo)console.log(W.red("Error: Dataset has no GitHub repository")),process.exit(1);let V,z=_F($,"dataset_description.json");if(!r0(z))console.log(W.red("Error: dataset_description.json not found")),console.log(" This file is required for BIDS datasets."),process.exit(1);try{let N=JSON.parse(r1(z,"utf-8"));if(typeof N.Version!=="string"||!N.Version)console.log(W.red("Error: No Version field in dataset_description.json")),console.log(' Set the Version field before updating (e.g., "Version": "1.0.0").'),process.exit(1);V=N.Version}catch(N){if(N instanceof SyntaxError)console.log(W.red("Error: dataset_description.json contains invalid JSON"));else console.log(W.red(`Error: Could not read dataset_description.json: ${N}`));process.exit(1)}let Z=F.bump;if(!["patch","minor","major"].includes(Z))console.log(W.red(`Error: Invalid bump type: ${F.bump}`)),process.exit(1);let U=p4(V,Z);if(console.log(` ${W.bold("Version bump:")} ${V} -> ${W.green(U)}`),await T0(`Create update PR for ${J}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let A=Date.now().toString(36),C=F.branch||`update/${J}-${A}`,w=O("Creating update branch...").start(),I=MD({cmd:["git","checkout","-b",C],cwd:$,stdout:"pipe",stderr:"pipe"});if(await I.exited!==0){let N=await new Response(I.stderr).text();w.fail(`Failed to create branch: ${N.trim()}`),process.exit(1)}w.succeed(`Created branch: ${C}`);let R=_F($,"dataset_description.json"),j;try{j=JSON.parse(r1(R,"utf-8"))}catch(N){if(N instanceof SyntaxError)console.log(W.red("Error: dataset_description.json contains invalid JSON"));else console.log(W.red(`Error: Could not read dataset_description.json: ${N}`));process.exit(1)}j.Version=U,d4(R,`${JSON.stringify(j,null,2)}
|
|
703
|
-
`);let v=O("Committing changes...").start(),
|
|
703
|
+
`);let v=O("Committing changes...").start(),n=MD({cmd:["git","add","-A"],cwd:$,stdout:"pipe",stderr:"pipe"});if(await n.exited!==0){let N=await new Response(n.stderr).text();v.fail(`Failed to stage changes: ${N.trim()}`),process.exit(1)}let r=F.message||`Update ${J} to ${U}`,a=MD({cmd:["git","commit","-m",r],cwd:$,stdout:"pipe",stderr:"pipe"});if(await a.exited!==0){let N=await new Response(a.stderr).text();v.fail(`Commit failed: ${N.trim()}`),process.exit(1)}if(v.succeed("Committed changes"),G.length>0)if(await MD({cmd:["git","annex","version"],cwd:$,stdout:"pipe",stderr:"pipe"}).exited===0){let b=O("Requesting upload credentials...").start(),u=null;try{u=await c8(J),b.succeed("Upload credentials received")}catch(L0){b.fail(`Could not get upload credentials: ${O0(L0)}`),console.log(W.yellow(" Data files will not be uploaded. Push manually after PR."))}if(u){if((await g9($)).length===0){b=O("Configuring S3 remote...").start();let HD=await o1($,{name:"nemar-s3",bucket:u.s3.bucket,prefix:`${J}/objects`,region:u.s3.region,publicUrl:`https://${u.s3.bucket}.s3.${u.s3.region}.amazonaws.com`},PD(u.credentials));if(!HD.success)b.warn(`Failed to configure S3 remote: ${HD.error}`),console.log(W.yellow(" Data files will not be uploaded. Push manually after PR."));else b.succeed("S3 remote configured")}if((await g9($)).includes("nemar-s3")){b=O("Uploading data files to S3...").start();let HD=await C8($,"nemar-s3",4,PD(u.credentials));if(await ID($),!HD.success)b.warn(`S3 upload issue: ${HD.error}`),console.log(W.yellow(" Data files may need manual upload after PR creation."));else b.succeed(`Uploaded ${HD.filesCopied} data files to S3`)}}}else console.log(W.yellow(" git-annex not available; data files will be committed to git."));let Q0=O("Pushing branch...").start(),$0=await SF($,C);if(!$0.success)Q0.fail(`Push failed: ${$0.error}`),process.exit(1);if(G.length>0){if(await MD({cmd:["git","push","origin","git-annex"],cwd:$,stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(W.yellow(" Warning: Failed to push git-annex branch"))}Q0.succeed("Pushed branch");let N0=!1,c=O("Creating pull request...").start();try{let N=F.message?`${F.message} (v${U})`:`Update ${J} to v${U}`,b=[...H,...G].slice(0,10).join(`
|
|
704
704
|
- `),u=`## Dataset Update
|
|
705
705
|
|
|
706
706
|
Bumps ${J} from ${V} to ${U}.
|
|
707
707
|
|
|
708
708
|
### Changed files
|
|
709
709
|
- ${b}${X.length>10?`
|
|
710
|
-
- ... and ${X.length-10} more`:""}`,L0=MD({cmd:["gh","pr","create","--repo",K.github_repo,"--head",C,"--base","main","--title",N,"--body",u],cwd:$,stdout:"pipe",stderr:"pipe"}),QD=(await new Response(L0.stdout).text()).trim();if(await L0.exited!==0){let HD=await new Response(L0.stderr).text();throw Error(HD.trim()||"gh pr create failed")}N0=!0,
|
|
710
|
+
- ... and ${X.length-10} more`:""}`,L0=MD({cmd:["gh","pr","create","--repo",K.github_repo,"--head",C,"--base","main","--title",N,"--body",u],cwd:$,stdout:"pipe",stderr:"pipe"}),QD=(await new Response(L0.stdout).text()).trim();if(await L0.exited!==0){let HD=await new Response(L0.stderr).text();throw Error(HD.trim()||"gh pr create failed")}N0=!0,c.succeed("Created pull request"),console.log(),console.log(` ${W.cyan("PR:")} ${QD}`)}catch(N){c.fail("Failed to create PR");let b=N instanceof Error?N.message:String(N);console.log(W.red(` ${b}`)),console.log(W.dim(` Branch ${C} has been pushed. Create the PR manually.`))}if(F.monitor&&N0){console.log(),console.log(W.dim("Monitoring CI checks..."));let N=0,b=60;while(N<b){await new Promise((HD)=>setTimeout(HD,1e4)),N++;let u=MD({cmd:["gh","pr","checks","--repo",K.github_repo,C],cwd:$,stdout:"pipe",stderr:"pipe"}),L0=await new Response(u.stdout).text();if(await u.exited===0){if(console.log(W.green(" All checks passed!")),await T0("Merge the PR?",{yes:F.yes})==="confirmed"){let x0=MD({cmd:["gh","pr","merge","--repo",K.github_repo,C,"--squash","--delete-branch"],cwd:$,stdout:"pipe",stderr:"pipe"});if(await x0.exited===0)console.log(W.green(" PR merged successfully!"));else{let hD=await new Response(x0.stderr).text();console.log(W.red(` Merge failed: ${hD.trim()}`))}}break}if(L0.includes("fail")||L0.includes("X")){console.log(W.red(" Some checks failed:")),console.log(L0);break}process.stdout.write(W.dim("."))}if(N>=b)console.log(W.yellow(`
|
|
711
711
|
Timed out waiting for checks.`))}});t0.command("request-access").description("Request collaborator access to a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
712
712
|
Description:
|
|
713
713
|
Request access to a NEMAR dataset to push data via git-annex.
|
|
@@ -970,7 +970,7 @@ Examples:
|
|
|
970
970
|
$ nemar sandbox --verbose # Run with full subprocess output (debug stuck runs)
|
|
971
971
|
$ nemar sandbox status # Check if training is completed
|
|
972
972
|
$ nemar sandbox reset # Reset for re-training
|
|
973
|
-
`).action(CU0);async function CU0(D={}){if(D.verbose)sg(!0);if(console.log(),console.log(W.bold("NEMAR Sandbox Training")),console.log(W.dim("Verify your setup and learn the upload workflow")),D.verbose)console.log(W.dim("Verbose mode: subprocess invocations will be printed"));if(console.log(),!H0()){console.log(W.red("Not authenticated")),console.log(W.dim("Run 'nemar auth login' first"));return}let F=$D();if(F.sandboxCompleted){console.log(W.green("Sandbox training already completed!")),console.log(W.dim(`Dataset ID: ${F.sandboxDatasetId}`)),console.log(),console.log("You can upload real datasets with:"),console.log(W.cyan(" nemar dataset upload ./your-dataset")),console.log(),console.log(W.dim("To re-run training, use: nemar sandbox reset"));return}console.log(W.bold("Step 1/6: Checking prerequisites..."));let $=O("Checking prerequisites...").start(),J=await x9();if(!J.allPassed){$.fail("Prerequisites check failed"),console.log(),console.log(W.red("Missing requirements:"));for(let N of J.errors)console.log(W.yellow(` - ${N}`));if(J.errors.some((N)=>N.includes("GitHub")))console.log(W.dim(" Run 'gh auth login' to authenticate with GitHub"));return}$.succeed("All prerequisites met");let Q=O("Verifying GitHub CLI authentication...").start(),Y=await _9(F.githubUsername);if(!Y.authenticated){Q.fail("GitHub CLI not authenticated"),console.log(W.red(` ${Y.error}`)),console.log(),console.log("GitHub CLI is required for sandbox training. Install and authenticate:"),console.log(W.cyan(" brew install gh # or visit https://cli.github.com/")),console.log(W.cyan(" gh auth login"));return}if(F.githubUsername&&!Y.matches)Q.warn("GitHub CLI user mismatch"),console.log(W.yellow(` ${Y.error}`)),console.log(),console.log("Your gh CLI is authenticated as a different GitHub account than your NEMAR account."),console.log("This may cause issues with repository access. To fix:"),console.log(W.cyan(` gh auth login # Login as ${F.githubUsername}`)),console.log(),console.log(W.yellow("WARNING: If upload fails with permission errors, this mismatch is the likely cause.")),console.log();else Q.succeed(`GitHub CLI authenticated as ${Y.username}`);console.log(),console.log(W.bold("Step 2/6: Generating test dataset..."));let B=O("Creating minimal BIDS structure...").start(),X;try{let N=Wu();X=N.root;let b=Hu(N);B.succeed(`Test dataset created (${YD(b)})`),console.log(W.dim(` Location: ${X}`))}catch(N){B.fail("Failed to generate test dataset"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`));return}console.log(),console.log(W.bold("Step 3/6: Registering sandbox dataset..."));let G=O("Creating dataset on NEMAR...").start(),H,q,K,V,z;try{let N=await YQ({name:"Sandbox Training Dataset",description:"Placeholder dataset for sandbox training",files:[{path:"sub-01/eeg/sub-01_task-rest_eeg.edf",size:512000,type:"data"},{path:"dataset_description.json",size:200,type:"metadata"},{path:"participants.tsv",size:50,type:"metadata"},{path:"README",size:500,type:"metadata"},{path:"sub-01/eeg/sub-01_task-rest_eeg.json",size:300,type:"metadata"}],sandbox:!0});H=N.dataset.dataset_id,q=N.dataset.ssh_url,K=N.dataset.github_url,V=N.s3_config,z=N.dataset.s3_prefix,G.succeed(`Sandbox dataset created: ${W.cyan(H)}`),console.log(W.dim(` GitHub: ${K}`)),await new Promise((b)=>setTimeout(b,1e4))}catch(N){if(G.fail("Failed to create sandbox dataset"),N instanceof f)console.log(W.red(` ${N.message}`));else console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`));t1(X);return}let Z=O("Accepting GitHub repository invitation...").start(),U=K?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),M=U?U[1].replace(/\.git$/,""):null;if(!M){Z.fail("Invalid GitHub repository URL from backend"),console.log(W.red(` Received: ${K||"(empty)"}`)),console.log(W.red(" Expected format: https://github.com/owner/repo")),console.log(),console.log("This may indicate a backend issue. Please contact support."),t1(X);return}let A=await f9(M);if(A.accepted)if(A.alreadyCollaborator)Z.succeed("Already a collaborator on this repository");else Z.succeed("GitHub invitation accepted");else Z.warn("Could not auto-accept invitation"),console.log(W.yellow(` ${A.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(W.cyan(` https://github.com/${M}/invitations`)),console.log();console.log(),console.log(W.bold("Step 4/6: Initializing repository..."));let C=O("Setting up git-annex...").start(),w=F.username&&F.email?{name:F.username,email:F.email}:void 0;try{let N=await n6(X,{author:w});if(!N.success)throw Error(N.error||"Failed to initialize dataset");await g4(X),await i8(X,q),C.succeed("Repository initialized")}catch(N){C.fail("Failed to initialize repository"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}console.log(),console.log(W.bold("Step 5/6: Uploading to S3..."));let I=O("Requesting upload credentials...").start(),R;try{R=await c8(H),I.succeed("Upload credentials received")}catch(N){I.fail("Could not get upload credentials"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}let j=PD(R.credentials),v=O("Configuring S3 remote...").start(),
|
|
973
|
+
`).action(CU0);async function CU0(D={}){if(D.verbose)sg(!0);if(console.log(),console.log(W.bold("NEMAR Sandbox Training")),console.log(W.dim("Verify your setup and learn the upload workflow")),D.verbose)console.log(W.dim("Verbose mode: subprocess invocations will be printed"));if(console.log(),!H0()){console.log(W.red("Not authenticated")),console.log(W.dim("Run 'nemar auth login' first"));return}let F=$D();if(F.sandboxCompleted){console.log(W.green("Sandbox training already completed!")),console.log(W.dim(`Dataset ID: ${F.sandboxDatasetId}`)),console.log(),console.log("You can upload real datasets with:"),console.log(W.cyan(" nemar dataset upload ./your-dataset")),console.log(),console.log(W.dim("To re-run training, use: nemar sandbox reset"));return}console.log(W.bold("Step 1/6: Checking prerequisites..."));let $=O("Checking prerequisites...").start(),J=await x9();if(!J.allPassed){$.fail("Prerequisites check failed"),console.log(),console.log(W.red("Missing requirements:"));for(let N of J.errors)console.log(W.yellow(` - ${N}`));if(J.errors.some((N)=>N.includes("GitHub")))console.log(W.dim(" Run 'gh auth login' to authenticate with GitHub"));return}$.succeed("All prerequisites met");let Q=O("Verifying GitHub CLI authentication...").start(),Y=await _9(F.githubUsername);if(!Y.authenticated){Q.fail("GitHub CLI not authenticated"),console.log(W.red(` ${Y.error}`)),console.log(),console.log("GitHub CLI is required for sandbox training. Install and authenticate:"),console.log(W.cyan(" brew install gh # or visit https://cli.github.com/")),console.log(W.cyan(" gh auth login"));return}if(F.githubUsername&&!Y.matches)Q.warn("GitHub CLI user mismatch"),console.log(W.yellow(` ${Y.error}`)),console.log(),console.log("Your gh CLI is authenticated as a different GitHub account than your NEMAR account."),console.log("This may cause issues with repository access. To fix:"),console.log(W.cyan(` gh auth login # Login as ${F.githubUsername}`)),console.log(),console.log(W.yellow("WARNING: If upload fails with permission errors, this mismatch is the likely cause.")),console.log();else Q.succeed(`GitHub CLI authenticated as ${Y.username}`);console.log(),console.log(W.bold("Step 2/6: Generating test dataset..."));let B=O("Creating minimal BIDS structure...").start(),X;try{let N=Wu();X=N.root;let b=Hu(N);B.succeed(`Test dataset created (${YD(b)})`),console.log(W.dim(` Location: ${X}`))}catch(N){B.fail("Failed to generate test dataset"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`));return}console.log(),console.log(W.bold("Step 3/6: Registering sandbox dataset..."));let G=O("Creating dataset on NEMAR...").start(),H,q,K,V,z;try{let N=await YQ({name:"Sandbox Training Dataset",description:"Placeholder dataset for sandbox training",files:[{path:"sub-01/eeg/sub-01_task-rest_eeg.edf",size:512000,type:"data"},{path:"dataset_description.json",size:200,type:"metadata"},{path:"participants.tsv",size:50,type:"metadata"},{path:"README",size:500,type:"metadata"},{path:"sub-01/eeg/sub-01_task-rest_eeg.json",size:300,type:"metadata"}],sandbox:!0});H=N.dataset.dataset_id,q=N.dataset.ssh_url,K=N.dataset.github_url,V=N.s3_config,z=N.dataset.s3_prefix,G.succeed(`Sandbox dataset created: ${W.cyan(H)}`),console.log(W.dim(` GitHub: ${K}`)),await new Promise((b)=>setTimeout(b,1e4))}catch(N){if(G.fail("Failed to create sandbox dataset"),N instanceof f)console.log(W.red(` ${N.message}`));else console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`));t1(X);return}let Z=O("Accepting GitHub repository invitation...").start(),U=K?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),M=U?U[1].replace(/\.git$/,""):null;if(!M){Z.fail("Invalid GitHub repository URL from backend"),console.log(W.red(` Received: ${K||"(empty)"}`)),console.log(W.red(" Expected format: https://github.com/owner/repo")),console.log(),console.log("This may indicate a backend issue. Please contact support."),t1(X);return}let A=await f9(M);if(A.accepted)if(A.alreadyCollaborator)Z.succeed("Already a collaborator on this repository");else Z.succeed("GitHub invitation accepted");else Z.warn("Could not auto-accept invitation"),console.log(W.yellow(` ${A.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(W.cyan(` https://github.com/${M}/invitations`)),console.log();console.log(),console.log(W.bold("Step 4/6: Initializing repository..."));let C=O("Setting up git-annex...").start(),w=F.username&&F.email?{name:F.username,email:F.email}:void 0;try{let N=await n6(X,{author:w});if(!N.success)throw Error(N.error||"Failed to initialize dataset");await g4(X),await i8(X,q),C.succeed("Repository initialized")}catch(N){C.fail("Failed to initialize repository"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}console.log(),console.log(W.bold("Step 5/6: Uploading to S3..."));let I=O("Requesting upload credentials...").start(),R;try{R=await c8(H),I.succeed("Upload credentials received")}catch(N){I.fail("Could not get upload credentials"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}let j=PD(R.credentials),v=O("Configuring S3 remote...").start(),n=await o1(X,{name:"nemar-s3",bucket:R.s3.bucket,prefix:`${z}/objects`,region:R.s3.region,publicUrl:V.public_url},j);if(!n.success){v.fail("Failed to configure S3 remote"),console.log(W.red(` ${n.error}`)),console.log(W.dim(" Re-run with --verbose to see git-annex output.")),t1(X);return}v.succeed("S3 remote configured");let r=O("Tracking data files with git-annex...").start(),a=await i6(X);if(!a.success){r.fail("Failed to track data files"),console.log(W.red(` ${a.error}`)),console.log(W.dim(" Re-run with --verbose to see git-annex output.")),t1(X);return}r.succeed("Data files tracked by git-annex");let Q0=O("Uploading data files to S3...").start(),$0=await C8(X,"nemar-s3",4,j);if(await ID(X),!$0.success){Q0.fail("S3 upload failed"),console.log(W.red(` ${$0.error}`)),console.log(W.dim(" Re-run with --verbose to see git-annex output.")),t1(X);return}Q0.succeed(`Uploaded ${$0.filesCopied} data file(s) to S3`),console.log(),console.log(W.bold("Step 6/6: Pushing to GitHub..."));let N0=O("Saving and pushing...").start();try{await a8(X,"Initial sandbox training upload",w),await C1(X),N0.succeed("Pushed to GitHub")}catch(N){N0.fail("Failed to push to GitHub"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}let c=O("Finalizing...").start();try{await BQ(H),await Ag(H),a1("sandboxCompleted",!0),a1("sandboxDatasetId",H),c.succeed("Sandbox training complete!")}catch(N){c.fail("Failed to finalize"),console.log(W.red(` ${N instanceof Error?N.message:"Unknown error"}`)),t1(X);return}t1(X),console.log(),console.log(W.green.bold("Congratulations! Sandbox training completed successfully.")),console.log(),console.log("Your setup is verified and you're ready to upload real datasets:"),console.log(W.cyan(" nemar dataset upload ./your-dataset")),console.log(),console.log(W.dim(`Sandbox dataset: ${H}`))}_Q.command("status").description("Check sandbox training completion status").option("--refresh","Fetch latest status from server").action(async(D)=>{if(!H0()){console.log(W.red("Not authenticated")),console.log(W.dim("Run 'nemar auth login' first"));return}if(D.refresh){let F=O("Checking status...").start();try{let $=await Ng();if(a1("sandboxCompleted",$.sandbox_completed),$.sandbox_dataset_id)a1("sandboxDatasetId",$.sandbox_dataset_id);if(F.stop(),$.sandbox_completed){if(console.log(W.green("Sandbox training: Completed")),console.log(W.dim(` Dataset ID: ${$.sandbox_dataset_id}`)),$.sandbox_completed_at)console.log(W.dim(` Completed: ${$.sandbox_completed_at}`))}else console.log(W.yellow("Sandbox training: Not completed")),console.log(),console.log("Run sandbox training with:"),console.log(W.cyan(" nemar sandbox"))}catch($){if(F.fail("Failed to check status"),$ instanceof f)console.log(W.red(` ${$.message}`))}}else{let F=$D();if(F.sandboxCompleted)console.log(W.green("Sandbox training: Completed")),console.log(W.dim(` Dataset ID: ${F.sandboxDatasetId}`));else console.log(W.yellow("Sandbox training: Not completed")),console.log(),console.log("Run sandbox training with:"),console.log(W.cyan(" nemar sandbox"))}});_Q.command("reset").description("Reset sandbox training status for re-training").option(w0,j0).option(g0,k0).action(async(D)=>{if(!H0()){console.log(W.red("Not authenticated")),console.log(W.dim("Run 'nemar auth login' first"));return}if(!$D().sandboxCompleted){console.log(W.yellow("Sandbox training not yet completed")),console.log(W.dim("Nothing to reset"));return}let $=await T0("Reset sandbox training status? You will need to complete training again.",D);if($!=="confirmed"){console.log(W.dim($==="declined"?"Skipped":"Cancelled"));return}let J=O("Resetting sandbox status...").start();try{await Mg(),SW("sandboxCompleted"),SW("sandboxDatasetId"),J.succeed("Sandbox status reset"),console.log(),console.log("Run sandbox training again with:"),console.log(W.cyan(" nemar sandbox"))}catch(Q){if(J.fail("Failed to reset"),Q instanceof f)console.log(W.red(` ${Q.message}`));else console.log(W.red(` ${Q instanceof Error?Q.message:"Unknown error"}`))}});n8();kW();ND();n8();x4();var qu=100;async function Ku(){try{let{notices:D}=await lg();if(!D||D.length===0)return;let F=$D(),$=new Set(F.dismissedNoticeIds||[]),J=D.filter((Q)=>!$.has(Q.id));if(J.length===0)return;for(let Q of J)OU0(Q);if(H0()){let Q=J.filter((Y)=>Y.level==="info").map((Y)=>Y.id);if(Q.length>0)wU0(Q)}}catch(D){if(process.env.VERBOSE)process.stderr.write(`[notices] ${D instanceof Error?D.message:D}
|
|
974
974
|
`)}}function OU0(D){let F,$;switch(D.level){case"critical":F="CRITICAL",$=W.red.bold;break;case"warning":F="WARNING",$=W.yellow;break;default:F="NOTICE",$=W.blue}let J=$(`[${F}]`);if(D.level==="critical"){let Q=W.red("\u2500".repeat(50));process.stderr.write(`${Q}
|
|
975
975
|
${J} ${D.message}
|
|
976
976
|
${Q}
|