nemar-cli 0.7.13-dev.420 → 0.7.13-dev.424
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 +72 -74
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -88,8 +88,8 @@ ${F}`,vF0,yF0,xF0=(D,F,$)=>{let J=$===""?"":`with ${$.trim()}() `,Q=kF0.bind(nul
|
|
|
88
88
|
|| ${Y} === "boolean" || ${Q} === null`).assign(X,G0._`[${Q}]`)}}}function i90({gen:D,parentData:F,parentDataProperty:$},J){D.if(G0._`${F} !== undefined`,()=>D.assign(G0._`${F}[${$}]`,J))}function TX(D,F,$,J=h3.Correct){let Q=J===h3.Correct?G0.operators.EQ:G0.operators.NEQ,B;switch(D){case"null":return G0._`${F} ${Q} null`;case"array":B=G0._`Array.isArray(${F})`;break;case"object":B=G0._`${F} && typeof ${F} == "object" && !Array.isArray(${F})`;break;case"integer":B=Y(G0._`!(${F} % 1) && !isNaN(${F})`);break;case"number":B=Y();break;default:return G0._`typeof ${F} ${Q} ${D}`}return J===h3.Correct?B:(0,G0.not)(B);function Y(X=G0.nil){return(0,G0.and)(G0._`typeof ${F} == "number"`,X,$?G0._`isFinite(${F})`:G0.nil)}}CP.checkDataType=TX;function jX(D,F,$,J){if(D.length===1)return TX(D[0],F,$,J);let Q,B=(0,LP.toHash)(D);if(B.array&&B.object){let Y=G0._`typeof ${F} != "object"`;Q=B.null?Y:G0._`!${F} || ${Y}`,delete B.null,delete B.array,delete B.object}else Q=G0.nil;if(B.number)delete B.integer;for(let Y in B)Q=(0,G0.and)(Q,TX(Y,F,$,J));return Q}CP.checkDataTypes=jX;var a90={message:({schema:D})=>`must be ${D}`,params:({schema:D,schemaValue:F})=>typeof D=="string"?G0._`{type: ${D}}`:G0._`{type: ${F}}`};function PX(D){let F=o90(D);(0,l90.reportError)(F,a90)}CP.reportTypeError=PX;function o90(D){let{gen:F,data:$,schema:J}=D,Q=(0,LP.schemaRefOrVal)(D,J,"type");return{gen:F,keyword:"type",data:$,schema:J.type,schemaCode:Q,schemaValue:Q,parentSchema:J,params:{},it:D}}});var jP=E((wP)=>{Object.defineProperty(wP,"__esModule",{value:!0});wP.assignDefaults=void 0;var b3=F0(),$70=z0();function J70(D,F){let{properties:$,items:J}=D.schema;if(F==="object"&&$)for(let Q in $)OP(D,Q,$[Q].default);else if(F==="array"&&Array.isArray(J))J.forEach((Q,B)=>OP(D,B,Q.default))}wP.assignDefaults=J70;function OP(D,F,$){let{gen:J,compositeRule:Q,data:B,opts:Y}=D;if($===void 0)return;let X=b3._`${B}${(0,b3.getProperty)(F)}`;if(Q){(0,$70.checkStrictMode)(D,`default is ignored for: ${X}`);return}let G=b3._`${X} === undefined`;if(Y.useDefaults==="empty")G=b3._`${G} || ${X} === null || ${X} === ""`;J.if(G,b3._`${X} = ${(0,b3.stringify)($)}`)}});var z1=E((SP)=>{Object.defineProperty(SP,"__esModule",{value:!0});SP.validateUnion=SP.validateArray=SP.usePattern=SP.callValidateCode=SP.schemaProperties=SP.allSchemaProperties=SP.noPropertyInData=SP.propertyInData=SP.isOwnProperty=SP.hasPropFunc=SP.reportMissingProp=SP.checkMissingProp=SP.checkReportMissingProp=void 0;var _0=F0(),IX=z0(),T6=E1(),Q70=z0();function B70(D,F){let{gen:$,data:J,it:Q}=D;$.if(kX($,J,F,Q.opts.ownProperties),()=>{D.setParams({missingProperty:_0._`${F}`},!0),D.error()})}SP.checkReportMissingProp=B70;function Y70({gen:D,data:F,it:{opts:$}},J,Q){return(0,_0.or)(...J.map((B)=>(0,_0.and)(kX(D,F,B,$.ownProperties),_0._`${Q} = ${B}`)))}SP.checkMissingProp=Y70;function X70(D,F){D.setParams({missingProperty:F},!0),D.error()}SP.reportMissingProp=X70;function PP(D){return D.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:_0._`Object.prototype.hasOwnProperty`})}SP.hasPropFunc=PP;function SX(D,F,$){return _0._`${PP(D)}.call(${F}, ${$})`}SP.isOwnProperty=SX;function G70(D,F,$,J){let Q=_0._`${F}${(0,_0.getProperty)($)} !== undefined`;return J?_0._`${Q} && ${SX(D,F,$)}`:Q}SP.propertyInData=G70;function kX(D,F,$,J){let Q=_0._`${F}${(0,_0.getProperty)($)} === undefined`;return J?(0,_0.or)(Q,(0,_0.not)(SX(D,F,$))):Q}SP.noPropertyInData=kX;function IP(D){return D?Object.keys(D).filter((F)=>F!=="__proto__"):[]}SP.allSchemaProperties=IP;function W70(D,F){return IP(F).filter(($)=>!(0,IX.alwaysValidSchema)(D,F[$]))}SP.schemaProperties=W70;function H70({schemaCode:D,data:F,it:{gen:$,topSchemaRef:J,schemaPath:Q,errorPath:B},it:Y},X,G,W){let q=W?_0._`${D}, ${F}, ${J}${Q}`:F,K=[[T6.default.instancePath,(0,_0.strConcat)(T6.default.instancePath,B)],[T6.default.parentData,Y.parentData],[T6.default.parentDataProperty,Y.parentDataProperty],[T6.default.rootData,T6.default.rootData]];if(Y.opts.dynamicRef)K.push([T6.default.dynamicAnchors,T6.default.dynamicAnchors]);let Z=_0._`${q}, ${$.object(...K)}`;return G!==_0.nil?_0._`${X}.call(${G}, ${Z})`:_0._`${X}(${Z})`}SP.callValidateCode=H70;var q70=_0._`new RegExp`;function K70({gen:D,it:{opts:F}},$){let J=F.unicodeRegExp?"u":"",{regExp:Q}=F.code,B=Q($,J);return D.scopeValue("pattern",{key:B.toString(),ref:B,code:_0._`${Q.code==="new RegExp"?q70:(0,Q70.useFunc)(D,Q)}(${$}, ${J})`})}SP.usePattern=K70;function E70(D){let{gen:F,data:$,keyword:J,it:Q}=D,B=F.name("valid");if(Q.allErrors){let X=F.let("valid",!0);return Y(()=>F.assign(X,!1)),X}return F.var(B,!0),Y(()=>F.break()),B;function Y(X){let G=F.const("len",_0._`${$}.length`);F.forRange("i",0,G,(W)=>{D.subschema({keyword:J,dataProp:W,dataPropType:IX.Type.Num},B),F.if((0,_0.not)(B),X)})}}SP.validateArray=E70;function z70(D){let{gen:F,schema:$,keyword:J,it:Q}=D;if(!Array.isArray($))throw Error("ajv implementation error");if($.some((G)=>(0,IX.alwaysValidSchema)(Q,G))&&!Q.opts.unevaluated)return;let Y=F.let("valid",!1),X=F.name("_valid");F.block(()=>$.forEach((G,W)=>{let q=D.subschema({keyword:J,schemaProp:W,compositeRule:!0},X);if(F.assign(Y,_0._`${Y} || ${X}`),!D.mergeValidEvaluated(q,X))F.if((0,_0.not)(Y))})),D.result(Y,()=>D.reset(),()=>D.error(!0))}SP.validateUnion=z70});var fP=E((xP)=>{Object.defineProperty(xP,"__esModule",{value:!0});xP.validateKeywordUsage=xP.validSchemaType=xP.funcKeywordCode=xP.macroKeywordCode=void 0;var kD=F0(),W4=E1(),j70=z1(),P70=S5();function I70(D,F){let{gen:$,keyword:J,schema:Q,parentSchema:B,it:Y}=D,X=F.macro.call(Y.self,Q,B,Y),G=yP($,J,X);if(Y.opts.validateSchema!==!1)Y.self.validateSchema(X,!0);let W=$.name("valid");D.subschema({schema:X,schemaPath:kD.nil,errSchemaPath:`${Y.errSchemaPath}/${J}`,topSchemaRef:G,compositeRule:!0},W),D.pass(W,()=>D.error(!0))}xP.macroKeywordCode=I70;function S70(D,F){var $;let{gen:J,keyword:Q,schema:B,parentSchema:Y,$data:X,it:G}=D;v70(G,F);let W=!X&&F.compile?F.compile.call(G.self,B,Y,G):F.validate,q=yP(J,Q,W),K=J.let("valid");D.block$data(K,Z),D.ok(($=F.valid)!==null&&$!==void 0?$:K);function Z(){if(F.errors===!1){if(A(),F.modifying)vP(D);M(()=>D.error())}else{let L=F.async?z():U();if(F.modifying)vP(D);M(()=>k70(D,L))}}function z(){let L=J.let("ruleErrs",null);return J.try(()=>A(kD._`await `),(C)=>J.assign(K,!1).if(kD._`${C} instanceof ${G.ValidationError}`,()=>J.assign(L,kD._`${C}.errors`),()=>J.throw(C))),L}function U(){let L=kD._`${q}.errors`;return J.assign(L,null),A(kD.nil),L}function A(L=F.async?kD._`await `:kD.nil){let C=G.opts.passContext?W4.default.this:W4.default.self,O=!(("compile"in F)&&!X||F.schema===!1);J.assign(K,kD._`${L}${(0,j70.callValidateCode)(D,q,C,O)}`,F.modifying)}function M(L){var C;J.if((0,kD.not)((C=F.valid)!==null&&C!==void 0?C:K),L)}}xP.funcKeywordCode=S70;function vP(D){let{gen:F,data:$,it:J}=D;F.if(J.parentData,()=>F.assign($,kD._`${J.parentData}[${J.parentDataProperty}]`))}function k70(D,F){let{gen:$}=D;$.if(kD._`Array.isArray(${F})`,()=>{$.assign(W4.default.vErrors,kD._`${W4.default.vErrors} === null ? ${F} : ${W4.default.vErrors}.concat(${F})`).assign(W4.default.errors,kD._`${W4.default.vErrors}.length`),(0,P70.extendErrors)(D)},()=>D.error())}function v70({schemaEnv:D},F){if(F.async&&!D.$async)throw Error("async keyword in sync schema")}function yP(D,F,$){if($===void 0)throw Error(`keyword "${F}" failed to compile`);return D.scopeValue("keyword",typeof $=="function"?{ref:$}:{ref:$,code:(0,kD.stringify)($)})}function y70(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")}xP.validSchemaType=y70;function x70({schema:D,opts:F,self:$,errSchemaPath:J},Q,B){if(Array.isArray(Q.keyword)?!Q.keyword.includes(B):Q.keyword!==B)throw Error("ajv implementation error");let Y=Q.dependencies;if(Y===null||Y===void 0?void 0:Y.some((X)=>!Object.prototype.hasOwnProperty.call(D,X)))throw Error(`parent schema must have dependencies of ${B}: ${Y.join(",")}`);if(Q.validateSchema){if(!Q.validateSchema(D[B])){let G=`keyword "${B}" value is invalid at path "${J}": `+$.errorsText(Q.validateSchema.errors);if(F.validateSchema==="log")$.logger.error(G);else throw Error(G)}}}xP.validateKeywordUsage=x70});var uP=E((hP)=>{Object.defineProperty(hP,"__esModule",{value:!0});hP.extendSubschemaMode=hP.extendSubschemaData=hP.getSubschema=void 0;var G8=F0(),gP=z0();function h70(D,{keyword:F,schemaProp:$,schema:J,schemaPath:Q,errSchemaPath:B,topSchemaRef:Y}){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:G8._`${D.schemaPath}${(0,G8.getProperty)(F)}`,errSchemaPath:`${D.errSchemaPath}/${F}`}:{schema:X[$],schemaPath:G8._`${D.schemaPath}${(0,G8.getProperty)(F)}${(0,G8.getProperty)($)}`,errSchemaPath:`${D.errSchemaPath}/${F}/${(0,gP.escapeFragment)($)}`}}if(J!==void 0){if(Q===void 0||B===void 0||Y===void 0)throw Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:J,schemaPath:Q,topSchemaRef:Y,errSchemaPath:B}}throw Error('either "keyword" or "schema" must be passed')}hP.getSubschema=h70;function b70(D,F,{dataProp:$,dataPropType:J,data:Q,dataTypes:B,propertyName:Y}){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:W,dataPathArr:q,opts:K}=F,Z=X.let("data",G8._`${F.data}${(0,G8.getProperty)($)}`,!0);G(Z),D.errorPath=G8.str`${W}${(0,gP.getErrorPath)($,J,K.jsPropertySyntax)}`,D.parentDataProperty=G8._`${$}`,D.dataPathArr=[...q,D.parentDataProperty]}if(Q!==void 0){let W=Q instanceof G8.Name?Q:X.let("data",Q,!0);if(G(W),Y!==void 0)D.propertyName=Y}if(B)D.dataTypes=B;function G(W){D.data=W,D.dataLevel=F.dataLevel+1,D.dataTypes=[],F.definedProperties=new Set,D.parentData=F.data,D.dataNames=[...F.dataNames,W]}}hP.extendSubschemaData=b70;function u70(D,{jtdDiscriminator:F,jtdMetadata:$,compositeRule:J,createErrors:Q,allErrors:B}){if(J!==void 0)D.compositeRule=J;if(Q!==void 0)D.createErrors=Q;if(B!==void 0)D.allErrors=B;D.jtdDiscriminator=F,D.jtdMetadata=$}hP.extendSubschemaMode=u70});var vX=E((WO0,mP)=>{mP.exports=function D(F,$){if(F===$)return!0;if(F&&$&&typeof F=="object"&&typeof $=="object"){if(F.constructor!==$.constructor)return!1;var J,Q,B;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(B=Object.keys(F),J=B.length,J!==Object.keys($).length)return!1;for(Q=J;Q--!==0;)if(!Object.prototype.hasOwnProperty.call($,B[Q]))return!1;for(Q=J;Q--!==0;){var Y=B[Q];if(!D(F[Y],$[Y]))return!1}return!0}return F!==F&&$!==$}});var pP=E((HO0,lP)=>{var j6=lP.exports=function(D,F,$){if(typeof F=="function")$=F,F={};$=F.cb||$;var J=typeof $=="function"?$:$.pre||function(){},Q=$.post||function(){};g$(F,J,Q,D,"",D)};j6.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};j6.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};j6.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};j6.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 g$(D,F,$,J,Q,B,Y,X,G,W){if(J&&typeof J=="object"&&!Array.isArray(J)){F(J,Q,B,Y,X,G,W);for(var q in J){var K=J[q];if(Array.isArray(K)){if(q in j6.arrayKeywords)for(var Z=0;Z<K.length;Z++)g$(D,F,$,K[Z],Q+"/"+q+"/"+Z,B,Q,q,J,Z)}else if(q in j6.propsKeywords){if(K&&typeof K=="object")for(var z in K)g$(D,F,$,K[z],Q+"/"+q+"/"+p70(z),B,Q,q,J,z)}else if(q in j6.keywords||D.allKeys&&!(q in j6.skipKeywords))g$(D,F,$,K,Q+"/"+q,B,Q,q,J)}$(J,Q,B,Y,X,G,W)}}function p70(D){return D.replace(/~/g,"~0").replace(/\//g,"~1")}});var v5=E((iP)=>{Object.defineProperty(iP,"__esModule",{value:!0});iP.getSchemaRefs=iP.resolveUrl=iP.normalizeId=iP._getFullPath=iP.getFullPath=iP.inlineRef=void 0;var d70=z0(),c70=vX(),n70=pP(),i70=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function a70(D,F=!0){if(typeof D=="boolean")return!0;if(F===!0)return!yX(D);if(!F)return!1;return dP(D)<=F}iP.inlineRef=a70;var o70=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function yX(D){for(let F in D){if(o70.has(F))return!0;let $=D[F];if(Array.isArray($)&&$.some(yX))return!0;if(typeof $=="object"&&yX($))return!0}return!1}function dP(D){let F=0;for(let $ in D){if($==="$ref")return 1/0;if(F++,i70.has($))continue;if(typeof D[$]=="object")(0,d70.eachItem)(D[$],(J)=>F+=dP(J));if(F===1/0)return 1/0}return F}function cP(D,F="",$){if($!==!1)F=u3(F);let J=D.parse(F);return nP(D,J)}iP.getFullPath=cP;function nP(D,F){return D.serialize(F).split("#")[0]+"#"}iP._getFullPath=nP;var s70=/#\/?$/;function u3(D){return D?D.replace(s70,""):""}iP.normalizeId=u3;function r70(D,F,$){return $=u3($),D.resolve(F,$)}iP.resolveUrl=r70;var t70=/^[a-z_][-a-z0-9._]*$/i;function e70(D,F){if(typeof D=="boolean")return{};let{schemaId:$,uriResolver:J}=this.opts,Q=u3(D[$]||F),B={"":Q},Y=cP(J,Q,!1),X={},G=new Set;return n70(D,{allKeys:!0},(K,Z,z,U)=>{if(U===void 0)return;let A=Y+Z,M=B[U];if(typeof K[$]=="string")M=L.call(this,K[$]);C.call(this,K.$anchor),C.call(this,K.$dynamicAnchor),B[Z]=M;function L(O){let y=this.opts.uriResolver.resolve;if(O=u3(M?y(M,O):O),G.has(O))throw q(O);G.add(O);let w=this.refs[O];if(typeof w=="string")w=this.refs[w];if(typeof w=="object")W(K,w.schema,O);else if(O!==u3(A))if(O[0]==="#")W(K,X[O],O),X[O]=K;else this.refs[O]=A;return O}function C(O){if(typeof O=="string"){if(!t70.test(O))throw Error(`invalid anchor "${O}"`);L.call(this,`#${O}`)}}}),X;function W(K,Z,z){if(Z!==void 0&&!c70(K,Z))throw q(z)}function q(K){return Error(`reference "${K}" resolves to more than one schema`)}}iP.getSchemaRefs=e70});var m3=E((WI)=>{Object.defineProperty(WI,"__esModule",{value:!0});WI.getData=WI.KeywordCxt=WI.validateFunctionCode=void 0;var eP=KP(),oP=k5(),_X=wX(),h$=k5(),B$0=jP(),x5=fP(),xX=uP(),l=F0(),r=E1(),Y$0=v5(),f8=z0(),y5=S5();function X$0(D){if($I(D)){if(JI(D),FI(D)){H$0(D);return}}DI(D,()=>(0,eP.topBoolOrEmptySchema)(D))}WI.validateFunctionCode=X$0;function DI({gen:D,validateName:F,schema:$,schemaEnv:J,opts:Q},B){if(Q.code.es5)D.func(F,l._`${r.default.data}, ${r.default.valCxt}`,J.$async,()=>{D.code(l._`"use strict"; ${sP($,Q)}`),W$0(D,Q),D.code(B)});else D.func(F,l._`${r.default.data}, ${G$0(Q)}`,J.$async,()=>D.code(sP($,Q)).code(B))}function G$0(D){return l._`{${r.default.instancePath}="", ${r.default.parentData}, ${r.default.parentDataProperty}, ${r.default.rootData}=${r.default.data}${D.dynamicRef?l._`, ${r.default.dynamicAnchors}={}`:l.nil}}={}`}function W$0(D,F){D.if(r.default.valCxt,()=>{if(D.var(r.default.instancePath,l._`${r.default.valCxt}.${r.default.instancePath}`),D.var(r.default.parentData,l._`${r.default.valCxt}.${r.default.parentData}`),D.var(r.default.parentDataProperty,l._`${r.default.valCxt}.${r.default.parentDataProperty}`),D.var(r.default.rootData,l._`${r.default.valCxt}.${r.default.rootData}`),F.dynamicRef)D.var(r.default.dynamicAnchors,l._`${r.default.valCxt}.${r.default.dynamicAnchors}`)},()=>{if(D.var(r.default.instancePath,l._`""`),D.var(r.default.parentData,l._`undefined`),D.var(r.default.parentDataProperty,l._`undefined`),D.var(r.default.rootData,r.default.data),F.dynamicRef)D.var(r.default.dynamicAnchors,l._`{}`)})}function H$0(D){let{schema:F,opts:$,gen:J}=D;DI(D,()=>{if($.$comment&&F.$comment)BI(D);if(V$0(D),J.let(r.default.vErrors,null),J.let(r.default.errors,0),$.unevaluated)q$0(D);QI(D),A$0(D)});return}function q$0(D){let{gen:F,validateName:$}=D;D.evaluated=F.const("evaluated",l._`${$}.evaluated`),F.if(l._`${D.evaluated}.dynamicProps`,()=>F.assign(l._`${D.evaluated}.props`,l._`undefined`)),F.if(l._`${D.evaluated}.dynamicItems`,()=>F.assign(l._`${D.evaluated}.items`,l._`undefined`))}function sP(D,F){let $=typeof D=="object"&&D[F.schemaId];return $&&(F.code.source||F.code.process)?l._`/*# sourceURL=${$} */`:l.nil}function K$0(D,F){if($I(D)){if(JI(D),FI(D)){E$0(D,F);return}}(0,eP.boolOrEmptySchema)(D,F)}function FI({schema:D,self:F}){if(typeof D=="boolean")return!D;for(let $ in D)if(F.RULES.all[$])return!0;return!1}function $I(D){return typeof D.schema!="boolean"}function E$0(D,F){let{schema:$,gen:J,opts:Q}=D;if(Q.$comment&&$.$comment)BI(D);Z$0(D),U$0(D);let B=J.const("_errs",r.default.errors);QI(D,B),J.var(F,l._`${B} === ${r.default.errors}`)}function JI(D){(0,f8.checkUnknownRules)(D),z$0(D)}function QI(D,F){if(D.opts.jtd)return rP(D,[],!1,F);let $=(0,oP.getSchemaTypes)(D.schema),J=(0,oP.coerceAndCheckDataType)(D,$);rP(D,$,!J,F)}function z$0(D){let{schema:F,errSchemaPath:$,opts:J,self:Q}=D;if(F.$ref&&J.ignoreKeywordsWithRef&&(0,f8.schemaHasRulesButRef)(F,Q.RULES))Q.logger.warn(`$ref: keywords ignored in schema at path "${$}"`)}function V$0(D){let{schema:F,opts:$}=D;if(F.default!==void 0&&$.useDefaults&&$.strictSchema)(0,f8.checkStrictMode)(D,"default is ignored in the schema root")}function Z$0(D){let F=D.schema[D.opts.schemaId];if(F)D.baseId=(0,Y$0.resolveUrl)(D.opts.uriResolver,D.baseId,F)}function U$0(D){if(D.schema.$async&&!D.schemaEnv.$async)throw Error("async schema in sync schema")}function BI({gen:D,schemaEnv:F,schema:$,errSchemaPath:J,opts:Q}){let B=$.$comment;if(Q.$comment===!0)D.code(l._`${r.default.self}.logger.log(${B})`);else if(typeof Q.$comment=="function"){let Y=l.str`${J}/$comment`,X=D.scopeValue("root",{ref:F.root});D.code(l._`${r.default.self}.opts.$comment(${B}, ${Y}, ${X}.schema)`)}}function A$0(D){let{gen:F,schemaEnv:$,validateName:J,ValidationError:Q,opts:B}=D;if($.$async)F.if(l._`${r.default.errors} === 0`,()=>F.return(r.default.data),()=>F.throw(l._`new ${Q}(${r.default.vErrors})`));else{if(F.assign(l._`${J}.errors`,r.default.vErrors),B.unevaluated)L$0(D);F.return(l._`${r.default.errors} === 0`)}}function L$0({gen:D,evaluated:F,props:$,items:J}){if($ instanceof l.Name)D.assign(l._`${F}.props`,$);if(J instanceof l.Name)D.assign(l._`${F}.items`,J)}function rP(D,F,$,J){let{gen:Q,schema:B,data:Y,allErrors:X,opts:G,self:W}=D,{RULES:q}=W;if(B.$ref&&(G.ignoreKeywordsWithRef||!(0,f8.schemaHasRulesButRef)(B,q))){Q.block(()=>XI(D,"$ref",q.all.$ref.definition));return}if(!G.jtd)M$0(D,F);Q.block(()=>{for(let Z of q.rules)K(Z);K(q.post)});function K(Z){if(!(0,_X.shouldUseGroup)(B,Z))return;if(Z.type){if(Q.if((0,h$.checkDataType)(Z.type,Y,G.strictNumbers)),tP(D,Z),F.length===1&&F[0]===Z.type&&$)Q.else(),(0,h$.reportTypeError)(D);Q.endIf()}else tP(D,Z);if(!X)Q.if(l._`${r.default.errors} === ${J||0}`)}}function tP(D,F){let{gen:$,schema:J,opts:{useDefaults:Q}}=D;if(Q)(0,B$0.assignDefaults)(D,F.type);$.block(()=>{for(let B of F.rules)if((0,_X.shouldUseRule)(J,B))XI(D,B.keyword,B.definition,F.type)})}function M$0(D,F){if(D.schemaEnv.meta||!D.opts.strictTypes)return;if(N$0(D,F),!D.opts.allowUnionTypes)C$0(D,F);R$0(D,D.dataTypes)}function N$0(D,F){if(!F.length)return;if(!D.dataTypes.length){D.dataTypes=F;return}F.forEach(($)=>{if(!YI(D.dataTypes,$))fX(D,`type "${$}" not allowed by context "${D.dataTypes.join(",")}"`)}),w$0(D,F)}function C$0(D,F){if(F.length>1&&!(F.length===2&&F.includes("null")))fX(D,"use allowUnionTypes to allow union type keyword")}function R$0(D,F){let $=D.self.RULES.all;for(let J in $){let Q=$[J];if(typeof Q=="object"&&(0,_X.shouldUseRule)(D.schema,Q)){let{type:B}=Q.definition;if(B.length&&!B.some((Y)=>O$0(F,Y)))fX(D,`missing type "${B.join(",")}" for keyword "${J}"`)}}}function O$0(D,F){return D.includes(F)||F==="number"&&D.includes("integer")}function YI(D,F){return D.includes(F)||F==="integer"&&D.includes("number")}function w$0(D,F){let $=[];for(let J of D.dataTypes)if(YI(F,J))$.push(J);else if(F.includes("integer")&&J==="number")$.push("integer");D.dataTypes=$}function fX(D,F){let $=D.schemaEnv.baseId+D.errSchemaPath;F+=` at "${$}" (strictTypes)`,(0,f8.checkStrictMode)(D,F,D.opts.strictTypes)}class gX{constructor(D,F,$){if((0,x5.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,f8.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",GI(this.$data,D));else if(this.schemaCode=this.schemaValue,!(0,x5.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",r.default.errors)}result(D,F,$){this.failResult((0,l.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,l.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(l._`${F} !== undefined && (${(0,l.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?y5.reportExtraError:y5.reportError)(this,this.def.error,F)}$dataError(){(0,y5.reportError)(this,this.def.$dataError||y5.keyword$DataError)}reset(){if(this.errsCount===void 0)throw Error('add "trackErrors" to keyword definition');(0,y5.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,$=l.nil){this.gen.block(()=>{this.check$data(D,$),F()})}check$data(D=l.nil,F=l.nil){if(!this.$data)return;let{gen:$,schemaCode:J,schemaType:Q,def:B}=this;if($.if((0,l.or)(l._`${J} === undefined`,F)),D!==l.nil)$.assign(D,!0);if(Q.length||B.validateSchema){if($.elseIf(this.invalid$data()),this.$dataError(),D!==l.nil)$.assign(D,!1)}$.else()}invalid$data(){let{gen:D,schemaCode:F,schemaType:$,def:J,it:Q}=this;return(0,l.or)(B(),Y());function B(){if($.length){if(!(F instanceof l.Name))throw Error("ajv implementation error");let X=Array.isArray($)?$:[$];return l._`${(0,h$.checkDataTypes)(X,F,Q.opts.strictNumbers,h$.DataType.Wrong)}`}return l.nil}function Y(){if(J.validateSchema){let X=D.scopeValue("validate$data",{ref:J.validateSchema});return l._`!${X}(${F})`}return l.nil}}subschema(D,F){let $=(0,xX.getSubschema)(this.it,D);(0,xX.extendSubschemaData)($,this.it,D),(0,xX.extendSubschemaMode)($,D);let J={...this.it,...$,items:void 0,props:void 0};return K$0(J,F),J}mergeEvaluated(D,F){let{it:$,gen:J}=this;if(!$.opts.unevaluated)return;if($.props!==!0&&D.props!==void 0)$.props=f8.mergeEvaluated.props(J,D.props,$.props,F);if($.items!==!0&&D.items!==void 0)$.items=f8.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,l.Name)),!0}}WI.KeywordCxt=gX;function XI(D,F,$,J){let Q=new gX(D,$,F);if("code"in $)$.code(Q,J);else if(Q.$data&&$.validate)(0,x5.funcKeywordCode)(Q,$);else if("macro"in $)(0,x5.macroKeywordCode)(Q,$);else if($.compile||$.validate)(0,x5.funcKeywordCode)(Q,$)}var T$0=/^\/(?:[^~]|~0|~1)*$/,j$0=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function GI(D,{dataLevel:F,dataNames:$,dataPathArr:J}){let Q,B;if(D==="")return r.default.rootData;if(D[0]==="/"){if(!T$0.test(D))throw Error(`Invalid JSON-pointer: ${D}`);Q=D,B=r.default.rootData}else{let W=j$0.exec(D);if(!W)throw Error(`Invalid JSON-pointer: ${D}`);let q=+W[1];if(Q=W[2],Q==="#"){if(q>=F)throw Error(G("property/index",q));return J[F-q]}if(q>F)throw Error(G("data",q));if(B=$[F-q],!Q)return B}let Y=B,X=Q.split("/");for(let W of X)if(W)B=l._`${B}${(0,l.getProperty)((0,f8.unescapeJsonPointer)(W))}`,Y=l._`${Y} && ${B}`;return Y;function G(W,q){return`Cannot access ${W} ${q} levels up, current level is ${F}`}}WI.getData=GI});var _5=E((KI)=>{Object.defineProperty(KI,"__esModule",{value:!0});class qI extends Error{constructor(D){super("validation failed");this.errors=D,this.ajv=this.validation=!0}}KI.default=qI});var l3=E((zI)=>{Object.defineProperty(zI,"__esModule",{value:!0});var hX=v5();class EI extends Error{constructor(D,F,$,J){super(J||`can't resolve reference ${$} from id ${F}`);this.missingRef=(0,hX.resolveUrl)(D,F,$),this.missingSchema=(0,hX.normalizeId)((0,hX.getFullPath)(D,this.missingRef))}}zI.default=EI});var g5=E((UI)=>{Object.defineProperty(UI,"__esModule",{value:!0});UI.resolveSchema=UI.getCompilingSchema=UI.resolveRef=UI.compileSchema=UI.SchemaEnv=void 0;var v1=F0(),v$0=_5(),H4=E1(),y1=v5(),VI=z0(),y$0=m3();class f5{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,y1.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={}}}UI.SchemaEnv=f5;function uX(D){let F=ZI.call(this,D);if(F)return F;let $=(0,y1.getFullPath)(this.opts.uriResolver,D.root.baseId),{es5:J,lines:Q}=this.opts.code,{ownProperties:B}=this.opts,Y=new v1.CodeGen(this.scope,{es5:J,lines:Q,ownProperties:B}),X;if(D.$async)X=Y.scopeValue("Error",{ref:v$0.default,code:v1._`require("ajv/dist/runtime/validation_error").default`});let G=Y.scopeName("validate");D.validateName=G;let W={gen:Y,allErrors:this.opts.allErrors,data:H4.default.data,parentData:H4.default.parentData,parentDataProperty:H4.default.parentDataProperty,dataNames:[H4.default.data],dataPathArr:[v1.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:Y.scopeValue("schema",this.opts.code.source===!0?{ref:D.schema,code:(0,v1.stringify)(D.schema)}:{ref:D.schema}),validateName:G,ValidationError:X,schema:D.schema,schemaEnv:D,rootId:$,baseId:D.baseId||$,schemaPath:v1.nil,errSchemaPath:D.schemaPath||(this.opts.jtd?"":"#"),errorPath:v1._`""`,opts:this.opts,self:this},q;try{this._compilations.add(D),(0,y$0.validateFunctionCode)(W),Y.optimize(this.opts.code.optimize);let K=Y.toString();if(q=`${Y.scopeRefs(H4.default.scope)}return ${K}`,this.opts.code.process)q=this.opts.code.process(q,D);let z=Function(`${H4.default.self}`,`${H4.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:Y._values};if(this.opts.unevaluated){let{props:U,items:A}=W;if(z.evaluated={props:U instanceof v1.Name?void 0:U,items:A instanceof v1.Name?void 0:A,dynamicProps:U instanceof v1.Name,dynamicItems:A instanceof v1.Name},z.source)z.source.evaluated=(0,v1.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)}}UI.compileSchema=uX;function x$0(D,F,$){var J;$=(0,y1.resolveUrl)(this.opts.uriResolver,F,$);let Q=D.refs[$];if(Q)return Q;let B=g$0.call(this,D,$);if(B===void 0){let Y=(J=D.localRefs)===null||J===void 0?void 0:J[$],{schemaId:X}=this.opts;if(Y)B=new f5({schema:Y,schemaId:X,root:D,baseId:F})}if(B===void 0)return;return D.refs[$]=_$0.call(this,B)}UI.resolveRef=x$0;function _$0(D){if((0,y1.inlineRef)(D.schema,this.opts.inlineRefs))return D.schema;return D.validate?D:uX.call(this,D)}function ZI(D){for(let F of this._compilations)if(f$0(F,D))return F}UI.getCompilingSchema=ZI;function f$0(D,F){return D.schema===F.schema&&D.root===F.root&&D.baseId===F.baseId}function g$0(D,F){let $;while(typeof($=this.refs[F])=="string")F=$;return $||this.schemas[F]||b$.call(this,D,F)}function b$(D,F){let $=this.opts.uriResolver.parse(F),J=(0,y1._getFullPath)(this.opts.uriResolver,$),Q=(0,y1.getFullPath)(this.opts.uriResolver,D.baseId,void 0);if(Object.keys(D.schema).length>0&&J===Q)return bX.call(this,$,D);let B=(0,y1.normalizeId)(J),Y=this.refs[B]||this.schemas[B];if(typeof Y=="string"){let X=b$.call(this,D,Y);if(typeof(X===null||X===void 0?void 0:X.schema)!=="object")return;return bX.call(this,$,X)}if(typeof(Y===null||Y===void 0?void 0:Y.schema)!=="object")return;if(!Y.validate)uX.call(this,Y);if(B===(0,y1.normalizeId)(F)){let{schema:X}=Y,{schemaId:G}=this.opts,W=X[G];if(W)Q=(0,y1.resolveUrl)(this.opts.uriResolver,Q,W);return new f5({schema:X,schemaId:G,root:D,baseId:Q})}return bX.call(this,$,Y)}UI.resolveSchema=b$;var h$0=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function bX(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,VI.unescapeFragment)(X)];if(G===void 0)return;$=G;let W=typeof $==="object"&&$[this.opts.schemaId];if(!h$0.has(X)&&W)F=(0,y1.resolveUrl)(this.opts.uriResolver,F,W)}let B;if(typeof $!="boolean"&&$.$ref&&!(0,VI.schemaHasRulesButRef)($,this.RULES)){let X=(0,y1.resolveUrl)(this.opts.uriResolver,F,$.$ref);B=b$.call(this,J,X)}let{schemaId:Y}=this.opts;if(B=B||new f5({schema:$,schemaId:Y,root:J,baseId:F}),B.schema!==B.root.schema)return B;return}});var LI=E((ZO0,p$0)=>{p$0.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 lX=E((UO0,RI)=>{var d$0=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),NI=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 mX(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 c$0=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function MI(D){return D.length=0,!0}function n$0(D,F,$){if(D.length){let J=mX(D);if(J!=="")F.push(J);else return $.error=!0,!1;D.length=0}return!0}function i$0(D){let F=0,$={error:!1,address:"",zone:""},J=[],Q=[],B=!1,Y=!1,X=n$0;for(let G=0;G<D.length;G++){let W=D[G];if(W==="["||W==="]")continue;if(W===":"){if(B===!0)Y=!0;if(!X(Q,J,$))break;if(++F>7){$.error=!0;break}if(G>0&&D[G-1]===":")B=!0;J.push(":");continue}else if(W==="%"){if(!X(Q,J,$))break;X=MI}else{Q.push(W);continue}}if(Q.length)if(X===MI)$.zone=Q.join("");else if(Y)J.push(Q.join(""));else J.push(mX(Q));return $.address=J.join(""),$}function CI(D){if(a$0(D,":")<2)return{host:D,isIPV6:!1};let F=i$0(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 a$0(D,F){let $=0;for(let J=0;J<D.length;J++)if(D[J]===F)$++;return $}function o$0(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 s$0(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 r$0(D){let F=[];if(D.userinfo!==void 0)F.push(D.userinfo),F.push("@");if(D.host!==void 0){let $=unescape(D.host);if(!NI($)){let J=CI($);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}RI.exports={nonSimpleDomain:c$0,recomposeAuthority:r$0,normalizeComponentEncoding:s$0,removeDotSegments:o$0,isIPv4:NI,isUUID:d$0,normalizeIPv6:CI,stringArrayToHexStripped:mX}});var PI=E((AO0,jI)=>{var{isUUID:t$0}=lX(),e$0=/([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu,DJ0=["http","https","ws","wss","urn","urn:uuid"];function FJ0(D){return DJ0.indexOf(D)!==-1}function pX(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 OI(D){if(!D.host)D.error=D.error||"HTTP URIs must have a host.";return D}function wI(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 $J0(D){return D.secure=pX(D),D.resourceName=(D.path||"/")+(D.query?"?"+D.query:""),D.path=void 0,D.query=void 0,D}function JJ0(D){if(D.port===(pX(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 QJ0(D,F){if(!D.path)return D.error="URN can not be parsed",D;let $=D.path.match(e$0);if($){let J=F.scheme||D.scheme||"urn";D.nid=$[1].toLowerCase(),D.nss=$[2];let Q=`${J}:${F.nid||D.nid}`,B=dX(Q);if(D.path=void 0,B)D=B.parse(D,F)}else D.error=D.error||"URN can not be parsed.";return D}function BJ0(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}`,B=dX(Q);if(B)D=B.serialize(D,F);let Y=D,X=D.nss;return Y.path=`${J||F.nid}:${X}`,F.skipEscape=!0,Y}function YJ0(D,F){let $=D;if($.uuid=$.nss,$.nss=void 0,!F.tolerant&&(!$.uuid||!t$0($.uuid)))$.error=$.error||"UUID is not valid.";return $}function XJ0(D){let F=D;return F.nss=(D.uuid||"").toLowerCase(),F}var TI={scheme:"http",domainHost:!0,parse:OI,serialize:wI},GJ0={scheme:"https",domainHost:TI.domainHost,parse:OI,serialize:wI},u$={scheme:"ws",domainHost:!0,parse:$J0,serialize:JJ0},WJ0={scheme:"wss",domainHost:u$.domainHost,parse:u$.parse,serialize:u$.serialize},HJ0={scheme:"urn",parse:QJ0,serialize:BJ0,skipNormalize:!0},qJ0={scheme:"urn:uuid",parse:YJ0,serialize:XJ0,skipNormalize:!0},m$={http:TI,https:GJ0,ws:u$,wss:WJ0,urn:HJ0,"urn:uuid":qJ0};Object.setPrototypeOf(m$,null);function dX(D){return D&&(m$[D]||m$[D.toLowerCase()])||void 0}jI.exports={wsIsSecure:pX,SCHEMES:m$,isValidSchemeName:FJ0,getSchemeHandler:dX}});var kI=E((LO0,p$)=>{var{normalizeIPv6:KJ0,removeDotSegments:h5,recomposeAuthority:EJ0,normalizeComponentEncoding:l$,isIPv4:zJ0,nonSimpleDomain:VJ0}=lX(),{SCHEMES:ZJ0,getSchemeHandler:II}=PI();function UJ0(D,F){if(typeof D==="string")D=W8(g8(D,F),F);else if(typeof D==="object")D=g8(W8(D,F),F);return D}function AJ0(D,F,$){let J=$?Object.assign({scheme:"null"},$):{scheme:"null"},Q=SI(g8(D,J),g8(F,J),J,!0);return J.skipEscape=!0,W8(Q,J)}function SI(D,F,$,J){let Q={};if(!J)D=g8(W8(D,$),$),F=g8(W8(F,$),$);if($=$||{},!$.tolerant&&F.scheme)Q.scheme=F.scheme,Q.userinfo=F.userinfo,Q.host=F.host,Q.port=F.port,Q.path=h5(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=h5(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=h5(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=h5(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 LJ0(D,F,$){if(typeof D==="string")D=unescape(D),D=W8(l$(g8(D,$),!0),{...$,skipEscape:!0});else if(typeof D==="object")D=W8(l$(D,!0),{...$,skipEscape:!0});if(typeof F==="string")F=unescape(F),F=W8(l$(g8(F,$),!0),{...$,skipEscape:!0});else if(typeof F==="object")F=W8(l$(F,!0),{...$,skipEscape:!0});return D.toLowerCase()===F.toLowerCase()}function W8(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=[],B=II(J.scheme||$.scheme);if(B&&B.serialize)B.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 Y=EJ0($);if(Y!==void 0){if(J.reference!=="suffix")Q.push("//");if(Q.push(Y),$.path&&$.path[0]!=="/")Q.push("/")}if($.path!==void 0){let X=$.path;if(!J.absolutePath&&(!B||!B.absolutePath))X=h5(X);if(Y===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 MJ0=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;function g8(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 B=D.match(MJ0);if(B){if(J.scheme=B[1],J.userinfo=B[3],J.host=B[4],J.port=parseInt(B[5],10),J.path=B[6]||"",J.query=B[7],J.fragment=B[8],isNaN(J.port))J.port=B[5];if(J.host)if(zJ0(J.host)===!1){let G=KJ0(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 Y=II($.scheme||J.scheme);if(!$.unicodeSupport&&(!Y||!Y.unicodeSupport)){if(J.host&&($.domainHost||Y&&Y.domainHost)&&Q===!1&&VJ0(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(!Y||Y&&!Y.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(Y&&Y.parse)Y.parse(J,$)}else J.error=J.error||"URI can not be parsed.";return J}var cX={SCHEMES:ZJ0,normalize:UJ0,resolve:AJ0,resolveComponent:SI,equal:LJ0,serialize:W8,parse:g8};p$.exports=cX;p$.exports.default=cX;p$.exports.fastUri=cX});var xI=E((yI)=>{Object.defineProperty(yI,"__esModule",{value:!0});var vI=kI();vI.code='require("ajv/dist/runtime/uri").default';yI.default=vI});var aX=E((h8)=>{Object.defineProperty(h8,"__esModule",{value:!0});h8.CodeGen=h8.Name=h8.nil=h8.stringify=h8.str=h8._=h8.KeywordCxt=void 0;var CJ0=m3();Object.defineProperty(h8,"KeywordCxt",{enumerable:!0,get:function(){return CJ0.KeywordCxt}});var p3=F0();Object.defineProperty(h8,"_",{enumerable:!0,get:function(){return p3._}});Object.defineProperty(h8,"str",{enumerable:!0,get:function(){return p3.str}});Object.defineProperty(h8,"stringify",{enumerable:!0,get:function(){return p3.stringify}});Object.defineProperty(h8,"nil",{enumerable:!0,get:function(){return p3.nil}});Object.defineProperty(h8,"Name",{enumerable:!0,get:function(){return p3.Name}});Object.defineProperty(h8,"CodeGen",{enumerable:!0,get:function(){return p3.CodeGen}});var RJ0=_5(),bI=l3(),OJ0=OX(),b5=g5(),wJ0=F0(),u5=v5(),d$=k5(),iX=z0(),_I=LI(),TJ0=xI(),uI=(D,F)=>new RegExp(D,F);uI.code="new RegExp";var jJ0=["removeAdditional","useDefaults","coerceTypes"],PJ0=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),IJ0={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."},SJ0={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},fI=200;function kJ0(D){var F,$,J,Q,B,Y,X,G,W,q,K,Z,z,U,A,M,L,C,O,y,w,I,T,f,n;let s=D.strict,h=(F=D.code)===null||F===void 0?void 0:F.optimize,t=h===!0||h===void 0?1:h||0,t0=(J=($=D.code)===null||$===void 0?void 0:$.regExp)!==null&&J!==void 0?J:uI,R=(Q=D.uriResolver)!==null&&Q!==void 0?Q:TJ0.default;return{strictSchema:(Y=(B=D.strictSchema)!==null&&B!==void 0?B:s)!==null&&Y!==void 0?Y:!0,strictNumbers:(G=(X=D.strictNumbers)!==null&&X!==void 0?X:s)!==null&&G!==void 0?G:!0,strictTypes:(q=(W=D.strictTypes)!==null&&W!==void 0?W:s)!==null&&q!==void 0?q:"log",strictTuples:(Z=(K=D.strictTuples)!==null&&K!==void 0?K:s)!==null&&Z!==void 0?Z:"log",strictRequired:(U=(z=D.strictRequired)!==null&&z!==void 0?z:s)!==null&&U!==void 0?U:!1,code:D.code?{...D.code,optimize:t,regExp:t0}:{optimize:t,regExp:t0},loopRequired:(A=D.loopRequired)!==null&&A!==void 0?A:fI,loopEnum:(M=D.loopEnum)!==null&&M!==void 0?M:fI,meta:(L=D.meta)!==null&&L!==void 0?L:!0,messages:(C=D.messages)!==null&&C!==void 0?C:!0,inlineRefs:(O=D.inlineRefs)!==null&&O!==void 0?O:!0,schemaId:(y=D.schemaId)!==null&&y!==void 0?y:"$id",addUsedSchema:(w=D.addUsedSchema)!==null&&w!==void 0?w:!0,validateSchema:(I=D.validateSchema)!==null&&I!==void 0?I:!0,validateFormats:(T=D.validateFormats)!==null&&T!==void 0?T:!0,unicodeRegExp:(f=D.unicodeRegExp)!==null&&f!==void 0?f:!0,int32range:(n=D.int32range)!==null&&n!==void 0?n:!0,uriResolver:R}}class c${constructor(D={}){this.schemas={},this.refs={},this.formats={},this._compilations=new Set,this._loading={},this._cache=new Map,D=this.opts={...D,...kJ0(D)};let{es5:F,lines:$}=this.opts.code;this.scope=new wJ0.ValueScope({scope:{},prefixes:PJ0,es5:F,lines:$}),this.logger=gJ0(D.logger);let J=D.validateFormats;if(D.validateFormats=!1,this.RULES=(0,OJ0.getRules)(),gI.call(this,IJ0,D,"NOT SUPPORTED"),gI.call(this,SJ0,D,"DEPRECATED","warn"),this._metaOpts=_J0.call(this),D.formats)yJ0.call(this);if(this._addVocabularies(),this._addDefaultMetaSchema(),D.keywords)xJ0.call(this,D.keywords);if(typeof D.meta=="object")this.addMetaSchema(D.meta);vJ0.call(this),D.validateFormats=J}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:D,meta:F,schemaId:$}=this.opts,J=_I;if($==="id")J={..._I},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(W,q){await Q.call(this,W.$schema);let K=this._addSchema(W,q);return K.validate||B.call(this,K)}async function Q(W){if(W&&!this.getSchema(W))await J.call(this,{$ref:W},!0)}async function B(W){try{return this._compileSchemaEnv(W)}catch(q){if(!(q instanceof bI.default))throw q;return Y.call(this,q),await X.call(this,q.missingSchema),B.call(this,W)}}function Y({missingSchema:W,missingRef:q}){if(this.refs[W])throw Error(`AnySchema ${W} is loaded but ${q} cannot be resolved`)}async function X(W){let q=await G.call(this,W);if(!this.refs[W])await Q.call(this,q.$schema);if(!this.refs[W])this.addSchema(q,W,F)}async function G(W){let q=this._loading[W];if(q)return q;try{return await(this._loading[W]=$(W))}finally{delete this._loading[W]}}}addSchema(D,F,$,J=this.opts.validateSchema){if(Array.isArray(D)){for(let B of D)this.addSchema(B,void 0,$,J);return this}let Q;if(typeof D==="object"){let{schemaId:B}=this.opts;if(Q=D[B],Q!==void 0&&typeof Q!="string")throw Error(`schema ${B} must be string`)}return F=(0,u5.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=hI.call(this,D))=="string")D=F;if(F===void 0){let{schemaId:$}=this.opts,J=new b5.SchemaEnv({schema:{},schemaId:$});if(F=b5.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=hI.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,u5.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(bJ0.call(this,$,F),!F)return(0,iX.eachItem)($,(Q)=>nX.call(this,Q)),this;mJ0.call(this,F);let J={...F,type:(0,d$.getJSONTypes)(F.type),schemaType:(0,d$.getJSONTypes)(F.schemaType)};return(0,iX.eachItem)($,J.type.length===0?(Q)=>nX.call(this,Q,J):(Q)=>J.type.forEach((B)=>nX.call(this,Q,J,B))),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),B=D;for(let Y of Q)B=B[Y];for(let Y in $){let X=$[Y];if(typeof X!="object")continue;let{$data:G}=X.definition,W=B[Y];if(G&&W)B[Y]=mI(W)}}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 B,{schemaId:Y}=this.opts;if(typeof D=="object")B=D[Y];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,u5.normalizeId)(B||$);let G=u5.getSchemaRefs.call(this,D,$);if(X=new b5.SchemaEnv({schema:D,schemaId:Y,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 b5.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{b5.compileSchema.call(this,D)}finally{this.opts=F}}}c$.ValidationError=RJ0.default;c$.MissingRefError=bI.default;h8.default=c$;function gI(D,F,$,J="error"){for(let Q in D){let B=Q;if(B in F)this.logger[J](`${$}: option ${Q}. ${D[B]}`)}}function hI(D){return D=(0,u5.normalizeId)(D),this.schemas[D]||this.refs[D]}function vJ0(){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 yJ0(){for(let D in this.opts.formats){let F=this.opts.formats[D];if(F)this.addFormat(D,F)}}function xJ0(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 _J0(){let D={...this.opts};for(let F of jJ0)delete D[F];return D}var fJ0={log(){},warn(){},error(){}};function gJ0(D){if(D===!1)return fJ0;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 hJ0=/^[a-z_$][a-z0-9_$:-]*$/i;function bJ0(D,F){let{RULES:$}=this;if((0,iX.eachItem)(D,(J)=>{if($.keywords[J])throw Error(`Keyword ${J} is already defined`);if(!hJ0.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 nX(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:B}=this,Y=Q?B.post:B.rules.find(({type:G})=>G===$);if(!Y)Y={type:$,rules:[]},B.rules.push(Y);if(B.keywords[D]=!0,!F)return;let X={keyword:D,definition:{...F,type:(0,d$.getJSONTypes)(F.type),schemaType:(0,d$.getJSONTypes)(F.schemaType)}};if(F.before)uJ0.call(this,Y,X,F.before);else Y.rules.push(X);B.all[D]=X,(J=F.implements)===null||J===void 0||J.forEach((G)=>this.addKeyword(G))}function uJ0(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 mJ0(D){let{metaSchema:F}=D;if(F===void 0)return;if(D.$data&&this.opts.$data)F=mI(F);D.validateSchema=this.compile(F,!0)}var lJ0={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function mI(D){return{anyOf:[D,lJ0]}}});var pI=E((lI)=>{Object.defineProperty(lI,"__esModule",{value:!0});var cJ0={keyword:"id",code(){throw Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};lI.default=cJ0});var a$=E((iI)=>{Object.defineProperty(iI,"__esModule",{value:!0});iI.callRef=iI.getValidate=void 0;var iJ0=l3(),dI=z1(),mD=F0(),d3=E1(),cI=g5(),n$=z0(),aJ0={keyword:"$ref",schemaType:"string",code(D){let{gen:F,schema:$,it:J}=D,{baseId:Q,schemaEnv:B,validateName:Y,opts:X,self:G}=J,{root:W}=B;if(($==="#"||$==="#/")&&Q===W.baseId)return K();let q=cI.resolveRef.call(G,W,Q,$);if(q===void 0)throw new iJ0.default(J.opts.uriResolver,Q,$);if(q instanceof cI.SchemaEnv)return Z(q);return z(q);function K(){if(B===W)return i$(D,Y,B,B.$async);let U=F.scopeValue("root",{ref:W});return i$(D,mD._`${U}.validate`,W,W.$async)}function Z(U){let A=nI(D,U);i$(D,A,U,U.$async)}function z(U){let A=F.scopeValue("schema",X.code.source===!0?{ref:U,code:(0,mD.stringify)(U)}:{ref:U}),M=F.name("valid"),L=D.subschema({schema:U,dataTypes:[],schemaPath:mD.nil,topSchemaRef:A,errSchemaPath:$},M);D.mergeEvaluated(L),D.ok(M)}}};function nI(D,F){let{gen:$}=D;return F.validate?$.scopeValue("validate",{ref:F.validate}):mD._`${$.scopeValue("wrapper",{ref:F})}.validate`}iI.getValidate=nI;function i$(D,F,$,J){let{gen:Q,it:B}=D,{allErrors:Y,schemaEnv:X,opts:G}=B,W=G.passContext?d3.default.this:mD.nil;if(J)q();else K();function q(){if(!X.$async)throw Error("async schema referenced by sync schema");let U=Q.let("valid");Q.try(()=>{if(Q.code(mD._`await ${(0,dI.callValidateCode)(D,F,W)}`),z(F),!Y)Q.assign(U,!0)},(A)=>{if(Q.if(mD._`!(${A} instanceof ${B.ValidationError})`,()=>Q.throw(A)),Z(A),!Y)Q.assign(U,!1)}),D.ok(U)}function K(){D.result((0,dI.callValidateCode)(D,F,W),()=>z(F),()=>Z(F))}function Z(U){let A=mD._`${U}.errors`;Q.assign(d3.default.vErrors,mD._`${d3.default.vErrors} === null ? ${A} : ${d3.default.vErrors}.concat(${A})`),Q.assign(d3.default.errors,mD._`${d3.default.vErrors}.length`)}function z(U){var A;if(!B.opts.unevaluated)return;let M=(A=$===null||$===void 0?void 0:$.validate)===null||A===void 0?void 0:A.evaluated;if(B.props!==!0)if(M&&!M.dynamicProps){if(M.props!==void 0)B.props=n$.mergeEvaluated.props(Q,M.props,B.props)}else{let L=Q.var("props",mD._`${U}.evaluated.props`);B.props=n$.mergeEvaluated.props(Q,L,B.props,mD.Name)}if(B.items!==!0)if(M&&!M.dynamicItems){if(M.items!==void 0)B.items=n$.mergeEvaluated.items(Q,M.items,B.items)}else{let L=Q.var("items",mD._`${U}.evaluated.items`);B.items=n$.mergeEvaluated.items(Q,L,B.items,mD.Name)}}}iI.callRef=i$;iI.default=aJ0});var oX=E((oI)=>{Object.defineProperty(oI,"__esModule",{value:!0});var rJ0=pI(),tJ0=a$(),eJ0=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",rJ0.default,tJ0.default];oI.default=eJ0});var rI=E((sI)=>{Object.defineProperty(sI,"__esModule",{value:!0});var o$=F0(),P6=o$.operators,s$={maximum:{okStr:"<=",ok:P6.LTE,fail:P6.GT},minimum:{okStr:">=",ok:P6.GTE,fail:P6.LT},exclusiveMaximum:{okStr:"<",ok:P6.LT,fail:P6.GTE},exclusiveMinimum:{okStr:">",ok:P6.GT,fail:P6.LTE}},FQ0={message:({keyword:D,schemaCode:F})=>o$.str`must be ${s$[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>o$._`{comparison: ${s$[D].okStr}, limit: ${F}}`},$Q0={keyword:Object.keys(s$),type:"number",schemaType:"number",$data:!0,error:FQ0,code(D){let{keyword:F,data:$,schemaCode:J}=D;D.fail$data(o$._`${$} ${s$[F].fail} ${J} || isNaN(${$})`)}};sI.default=$Q0});var eI=E((tI)=>{Object.defineProperty(tI,"__esModule",{value:!0});var m5=F0(),QQ0={message:({schemaCode:D})=>m5.str`must be multiple of ${D}`,params:({schemaCode:D})=>m5._`{multipleOf: ${D}}`},BQ0={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:QQ0,code(D){let{gen:F,data:$,schemaCode:J,it:Q}=D,B=Q.opts.multipleOfPrecision,Y=F.let("res"),X=B?m5._`Math.abs(Math.round(${Y}) - ${Y}) > 1e-${B}`:m5._`${Y} !== parseInt(${Y})`;D.fail$data(m5._`(${J} === 0 || (${Y} = ${$}/${J}, ${X}))`)}};tI.default=BQ0});var $S=E((FS)=>{Object.defineProperty(FS,"__esModule",{value:!0});function DS(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 $}FS.default=DS;DS.code='require("ajv/dist/runtime/ucs2length").default'});var QS=E((JS)=>{Object.defineProperty(JS,"__esModule",{value:!0});var q4=F0(),GQ0=z0(),WQ0=$S(),HQ0={message({keyword:D,schemaCode:F}){let $=D==="maxLength"?"more":"fewer";return q4.str`must NOT have ${$} than ${F} characters`},params:({schemaCode:D})=>q4._`{limit: ${D}}`},qQ0={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:HQ0,code(D){let{keyword:F,data:$,schemaCode:J,it:Q}=D,B=F==="maxLength"?q4.operators.GT:q4.operators.LT,Y=Q.opts.unicode===!1?q4._`${$}.length`:q4._`${(0,GQ0.useFunc)(D.gen,WQ0.default)}(${$})`;D.fail$data(q4._`${Y} ${B} ${J}`)}};JS.default=qQ0});var YS=E((BS)=>{Object.defineProperty(BS,"__esModule",{value:!0});var EQ0=z1(),r$=F0(),zQ0={message:({schemaCode:D})=>r$.str`must match pattern "${D}"`,params:({schemaCode:D})=>r$._`{pattern: ${D}}`},VQ0={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:zQ0,code(D){let{data:F,$data:$,schema:J,schemaCode:Q,it:B}=D,Y=B.opts.unicodeRegExp?"u":"",X=$?r$._`(new RegExp(${Q}, ${Y}))`:(0,EQ0.usePattern)(D,J);D.fail$data(r$._`!${X}.test(${F})`)}};BS.default=VQ0});var GS=E((XS)=>{Object.defineProperty(XS,"__esModule",{value:!0});var l5=F0(),UQ0={message({keyword:D,schemaCode:F}){let $=D==="maxProperties"?"more":"fewer";return l5.str`must NOT have ${$} than ${F} properties`},params:({schemaCode:D})=>l5._`{limit: ${D}}`},AQ0={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:UQ0,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxProperties"?l5.operators.GT:l5.operators.LT;D.fail$data(l5._`Object.keys(${$}).length ${Q} ${J}`)}};XS.default=AQ0});var HS=E((WS)=>{Object.defineProperty(WS,"__esModule",{value:!0});var p5=z1(),d5=F0(),MQ0=z0(),NQ0={message:({params:{missingProperty:D}})=>d5.str`must have required property '${D}'`,params:({params:{missingProperty:D}})=>d5._`{missingProperty: ${D}}`},CQ0={keyword:"required",type:"object",schemaType:"array",$data:!0,error:NQ0,code(D){let{gen:F,schema:$,schemaCode:J,data:Q,$data:B,it:Y}=D,{opts:X}=Y;if(!B&&$.length===0)return;let G=$.length>=X.loopRequired;if(Y.allErrors)W();else q();if(X.strictRequired){let z=D.parentSchema.properties,{definedProperties:U}=D.it;for(let A of $)if((z===null||z===void 0?void 0:z[A])===void 0&&!U.has(A)){let M=Y.schemaEnv.baseId+Y.errSchemaPath,L=`required property "${A}" is not defined at "${M}" (strictRequired)`;(0,MQ0.checkStrictMode)(Y,L,Y.opts.strictRequired)}}function W(){if(G||B)D.block$data(d5.nil,K);else for(let z of $)(0,p5.checkReportMissingProp)(D,z)}function q(){let z=F.let("missing");if(G||B){let U=F.let("valid",!0);D.block$data(U,()=>Z(z,U)),D.ok(U)}else F.if((0,p5.checkMissingProp)(D,$,z)),(0,p5.reportMissingProp)(D,z),F.else()}function K(){F.forOf("prop",J,(z)=>{D.setParams({missingProperty:z}),F.if((0,p5.noPropertyInData)(F,Q,z,X.ownProperties),()=>D.error())})}function Z(z,U){D.setParams({missingProperty:z}),F.forOf(z,J,()=>{F.assign(U,(0,p5.propertyInData)(F,Q,z,X.ownProperties)),F.if((0,d5.not)(U),()=>{D.error(),F.break()})},d5.nil)}}};WS.default=CQ0});var KS=E((qS)=>{Object.defineProperty(qS,"__esModule",{value:!0});var c5=F0(),OQ0={message({keyword:D,schemaCode:F}){let $=D==="maxItems"?"more":"fewer";return c5.str`must NOT have ${$} than ${F} items`},params:({schemaCode:D})=>c5._`{limit: ${D}}`},wQ0={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:OQ0,code(D){let{keyword:F,data:$,schemaCode:J}=D,Q=F==="maxItems"?c5.operators.GT:c5.operators.LT;D.fail$data(c5._`${$}.length ${Q} ${J}`)}};qS.default=wQ0});var t$=E((zS)=>{Object.defineProperty(zS,"__esModule",{value:!0});var ES=vX();ES.code='require("ajv/dist/runtime/equal").default';zS.default=ES});var ZS=E((VS)=>{Object.defineProperty(VS,"__esModule",{value:!0});var sX=k5(),MD=F0(),PQ0=z0(),IQ0=t$(),SQ0={message:({params:{i:D,j:F}})=>MD.str`must NOT have duplicate items (items ## ${F} and ${D} are identical)`,params:({params:{i:D,j:F}})=>MD._`{i: ${D}, j: ${F}}`},kQ0={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:SQ0,code(D){let{gen:F,data:$,$data:J,schema:Q,parentSchema:B,schemaCode:Y,it:X}=D;if(!J&&!Q)return;let G=F.let("valid"),W=B.items?(0,sX.getSchemaTypes)(B.items):[];D.block$data(G,q,MD._`${Y} === false`),D.ok(G);function q(){let U=F.let("i",MD._`${$}.length`),A=F.let("j");D.setParams({i:U,j:A}),F.assign(G,!0),F.if(MD._`${U} > 1`,()=>(K()?Z:z)(U,A))}function K(){return W.length>0&&!W.some((U)=>U==="object"||U==="array")}function Z(U,A){let M=F.name("item"),L=(0,sX.checkDataTypes)(W,M,X.opts.strictNumbers,sX.DataType.Wrong),C=F.const("indices",MD._`{}`);F.for(MD._`;${U}--;`,()=>{if(F.let(M,MD._`${$}[${U}]`),F.if(L,MD._`continue`),W.length>1)F.if(MD._`typeof ${M} == "string"`,MD._`${M} += "_"`);F.if(MD._`typeof ${C}[${M}] == "number"`,()=>{F.assign(A,MD._`${C}[${M}]`),D.error(),F.assign(G,!1).break()}).code(MD._`${C}[${M}] = ${U}`)})}function z(U,A){let M=(0,PQ0.useFunc)(F,IQ0.default),L=F.name("outer");F.label(L).for(MD._`;${U}--;`,()=>F.for(MD._`${A} = ${U}; ${A}--;`,()=>F.if(MD._`${M}(${$}[${U}], ${$}[${A}])`,()=>{D.error(),F.assign(G,!1).break(L)})))}}};VS.default=kQ0});var AS=E((US)=>{Object.defineProperty(US,"__esModule",{value:!0});var rX=F0(),yQ0=z0(),xQ0=t$(),_Q0={message:"must be equal to constant",params:({schemaCode:D})=>rX._`{allowedValue: ${D}}`},fQ0={keyword:"const",$data:!0,error:_Q0,code(D){let{gen:F,data:$,$data:J,schemaCode:Q,schema:B}=D;if(J||B&&typeof B=="object")D.fail$data(rX._`!${(0,yQ0.useFunc)(F,xQ0.default)}(${$}, ${Q})`);else D.fail(rX._`${B} !== ${$}`)}};US.default=fQ0});var MS=E((LS)=>{Object.defineProperty(LS,"__esModule",{value:!0});var n5=F0(),hQ0=z0(),bQ0=t$(),uQ0={message:"must be equal to one of the allowed values",params:({schemaCode:D})=>n5._`{allowedValues: ${D}}`},mQ0={keyword:"enum",schemaType:"array",$data:!0,error:uQ0,code(D){let{gen:F,data:$,$data:J,schema:Q,schemaCode:B,it:Y}=D;if(!J&&Q.length===0)throw Error("enum must have non-empty array");let X=Q.length>=Y.opts.loopEnum,G,W=()=>G!==null&&G!==void 0?G:G=(0,hQ0.useFunc)(F,bQ0.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",B);q=(0,n5.or)(...Q.map((U,A)=>Z(z,A)))}D.pass(q);function K(){F.assign(q,!1),F.forOf("v",B,(z)=>F.if(n5._`${W()}(${$}, ${z})`,()=>F.assign(q,!0).break()))}function Z(z,U){let A=Q[U];return typeof A==="object"&&A!==null?n5._`${W()}(${$}, ${z}[${U}])`:n5._`${$} === ${A}`}}};LS.default=mQ0});var tX=E((NS)=>{Object.defineProperty(NS,"__esModule",{value:!0});var pQ0=rI(),dQ0=eI(),cQ0=QS(),nQ0=YS(),iQ0=GS(),aQ0=HS(),oQ0=KS(),sQ0=ZS(),rQ0=AS(),tQ0=MS(),eQ0=[pQ0.default,dQ0.default,cQ0.default,nQ0.default,iQ0.default,aQ0.default,oQ0.default,sQ0.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},rQ0.default,tQ0.default];NS.default=eQ0});var DG=E((RS)=>{Object.defineProperty(RS,"__esModule",{value:!0});RS.validateAdditionalItems=void 0;var K4=F0(),eX=z0(),FB0={message:({params:{len:D}})=>K4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>K4._`{limit: ${D}}`},$B0={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:FB0,code(D){let{parentSchema:F,it:$}=D,{items:J}=F;if(!Array.isArray(J)){(0,eX.checkStrictMode)($,'"additionalItems" is ignored when "items" is not an array of schemas');return}CS(D,J)}};function CS(D,F){let{gen:$,schema:J,data:Q,keyword:B,it:Y}=D;Y.items=!0;let X=$.const("len",K4._`${Q}.length`);if(J===!1)D.setParams({len:F.length}),D.pass(K4._`${X} <= ${F.length}`);else if(typeof J=="object"&&!(0,eX.alwaysValidSchema)(Y,J)){let W=$.var("valid",K4._`${X} <= ${F.length}`);$.if((0,K4.not)(W),()=>G(W)),D.ok(W)}function G(W){$.forRange("i",F.length,X,(q)=>{if(D.subschema({keyword:B,dataProp:q,dataPropType:eX.Type.Num},W),!Y.allErrors)$.if((0,K4.not)(W),()=>$.break())})}}RS.validateAdditionalItems=CS;RS.default=$B0});var FG=E((jS)=>{Object.defineProperty(jS,"__esModule",{value:!0});jS.validateTuple=void 0;var wS=F0(),e$=z0(),QB0=z1(),BB0={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(D){let{schema:F,it:$}=D;if(Array.isArray(F))return TS(D,"additionalItems",F);if($.items=!0,(0,e$.alwaysValidSchema)($,F))return;D.ok((0,QB0.validateArray)(D))}};function TS(D,F,$=D.schema){let{gen:J,parentSchema:Q,data:B,keyword:Y,it:X}=D;if(q(Q),X.opts.unevaluated&&$.length&&X.items!==!0)X.items=e$.mergeEvaluated.items(J,$.length,X.items);let G=J.name("valid"),W=J.const("len",wS._`${B}.length`);$.forEach((K,Z)=>{if((0,e$.alwaysValidSchema)(X,K))return;J.if(wS._`${W} > ${Z}`,()=>D.subschema({keyword:Y,schemaProp:Z,dataProp:Z},G)),D.ok(G)});function q(K){let{opts:Z,errSchemaPath:z}=X,U=$.length,A=U===K.minItems&&(U===K.maxItems||K[F]===!1);if(Z.strictTuples&&!A){let M=`"${Y}" is ${U}-tuple, but minItems or maxItems/${F} are not specified or different at path "${z}"`;(0,e$.checkStrictMode)(X,M,Z.strictTuples)}}}jS.validateTuple=TS;jS.default=BB0});var SS=E((IS)=>{Object.defineProperty(IS,"__esModule",{value:!0});var XB0=FG(),GB0={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:(D)=>(0,XB0.validateTuple)(D,"items")};IS.default=GB0});var yS=E((vS)=>{Object.defineProperty(vS,"__esModule",{value:!0});var kS=F0(),HB0=z0(),qB0=z1(),KB0=DG(),EB0={message:({params:{len:D}})=>kS.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>kS._`{limit: ${D}}`},zB0={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:EB0,code(D){let{schema:F,parentSchema:$,it:J}=D,{prefixItems:Q}=$;if(J.items=!0,(0,HB0.alwaysValidSchema)(J,F))return;if(Q)(0,KB0.validateAdditionalItems)(D,Q);else D.ok((0,qB0.validateArray)(D))}};vS.default=zB0});var _S=E((xS)=>{Object.defineProperty(xS,"__esModule",{value:!0});var V1=F0(),DJ=z0(),ZB0={message:({params:{min:D,max:F}})=>F===void 0?V1.str`must contain at least ${D} valid item(s)`:V1.str`must contain at least ${D} and no more than ${F} valid item(s)`,params:({params:{min:D,max:F}})=>F===void 0?V1._`{minContains: ${D}}`:V1._`{minContains: ${D}, maxContains: ${F}}`},UB0={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:ZB0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:B}=D,Y,X,{minContains:G,maxContains:W}=J;if(B.opts.next)Y=G===void 0?1:G,X=W;else Y=1;let q=F.const("len",V1._`${Q}.length`);if(D.setParams({min:Y,max:X}),X===void 0&&Y===0){(0,DJ.checkStrictMode)(B,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(X!==void 0&&Y>X){(0,DJ.checkStrictMode)(B,'"minContains" > "maxContains" is always invalid'),D.fail();return}if((0,DJ.alwaysValidSchema)(B,$)){let A=V1._`${q} >= ${Y}`;if(X!==void 0)A=V1._`${A} && ${q} <= ${X}`;D.pass(A);return}B.items=!0;let K=F.name("valid");if(X===void 0&&Y===1)z(K,()=>F.if(K,()=>F.break()));else if(Y===0){if(F.let(K,!0),X!==void 0)F.if(V1._`${Q}.length > 0`,Z)}else F.let(K,!1),Z();D.result(K,()=>D.reset());function Z(){let A=F.name("_valid"),M=F.let("count",0);z(A,()=>F.if(A,()=>U(M)))}function z(A,M){F.forRange("i",0,q,(L)=>{D.subschema({keyword:"contains",dataProp:L,dataPropType:DJ.Type.Num,compositeRule:!0},A),M()})}function U(A){if(F.code(V1._`${A}++`),X===void 0)F.if(V1._`${A} >= ${Y}`,()=>F.assign(K,!0).break());else if(F.if(V1._`${A} > ${X}`,()=>F.assign(K,!1).break()),Y===1)F.assign(K,!0);else F.if(V1._`${A} >= ${Y}`,()=>F.assign(K,!0))}}};xS.default=UB0});var FJ=E((hS)=>{Object.defineProperty(hS,"__esModule",{value:!0});hS.validateSchemaDeps=hS.validatePropertyDeps=hS.error=void 0;var $G=F0(),LB0=z0(),i5=z1();hS.error={message:({params:{property:D,depsCount:F,deps:$}})=>{let J=F===1?"property":"properties";return $G.str`must have ${J} ${$} when property ${D} is present`},params:({params:{property:D,depsCount:F,deps:$,missingProperty:J}})=>$G._`{property: ${D},
|
|
89
89
|
missingProperty: ${J},
|
|
90
90
|
depsCount: ${F},
|
|
91
|
-
deps: ${$}}`};var MB0={keyword:"dependencies",type:"object",schemaType:"object",error:hS.error,code(D){let[F,$]=NB0(D);fS(D,F),gS(D,$)}};function NB0({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 fS(D,F=D.schema){let{gen:$,data:J,it:Q}=D;if(Object.keys(F).length===0)return;let B=$.let("missing");for(let Y in F){let X=F[Y];if(X.length===0)continue;let G=(0,i5.propertyInData)($,J,Y,Q.opts.ownProperties);if(D.setParams({property:Y,depsCount:X.length,deps:X.join(", ")}),Q.allErrors)$.if(G,()=>{for(let W of X)(0,i5.checkReportMissingProp)(D,W)});else $.if($G._`${G} && (${(0,i5.checkMissingProp)(D,X,B)})`),(0,i5.reportMissingProp)(D,B),$.else()}}hS.validatePropertyDeps=fS;function gS(D,F=D.schema){let{gen:$,data:J,keyword:Q,it:B}=D,Y=$.name("valid");for(let X in F){if((0,LB0.alwaysValidSchema)(B,F[X]))continue;$.if((0,i5.propertyInData)($,J,X,B.opts.ownProperties),()=>{let G=D.subschema({keyword:Q,schemaProp:X},Y);D.mergeValidEvaluated(G,Y)},()=>$.var(Y,!0)),D.ok(Y)}}hS.validateSchemaDeps=gS;hS.default=MB0});var pS=E((lS)=>{Object.defineProperty(lS,"__esModule",{value:!0});var mS=F0(),OB0=z0(),wB0={message:"property name must be valid",params:({params:D})=>mS._`{propertyName: ${D.propertyName}}`},TB0={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:wB0,code(D){let{gen:F,schema:$,data:J,it:Q}=D;if((0,OB0.alwaysValidSchema)(Q,$))return;let B=F.name("valid");F.forIn("key",J,(Y)=>{D.setParams({propertyName:Y}),D.subschema({keyword:"propertyNames",data:Y,dataTypes:["string"],propertyName:Y,compositeRule:!0},B),F.if((0,mS.not)(B),()=>{if(D.error(!0),!Q.allErrors)F.break()})}),D.ok(B)}};lS.default=TB0});var JG=E((dS)=>{Object.defineProperty(dS,"__esModule",{value:!0});var $J=z1(),x1=F0(),PB0=E1(),JJ=z0(),IB0={message:"must NOT have additional properties",params:({params:D})=>x1._`{additionalProperty: ${D.additionalProperty}}`},SB0={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:IB0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,errsCount:B,it:Y}=D;if(!B)throw Error("ajv implementation error");let{allErrors:X,opts:G}=Y;if(Y.props=!0,G.removeAdditional!=="all"&&(0,JJ.alwaysValidSchema)(Y,$))return;let W=(0,$J.allSchemaProperties)(J.properties),q=(0,$J.allSchemaProperties)(J.patternProperties);K(),D.ok(x1._`${B} === ${PB0.default.errors}`);function K(){F.forIn("key",Q,(M)=>{if(!W.length&&!q.length)U(M);else F.if(Z(M),()=>U(M))})}function Z(M){let L;if(W.length>8){let C=(0,JJ.schemaRefOrVal)(Y,J.properties,"properties");L=(0,$J.isOwnProperty)(F,C,M)}else if(W.length)L=(0,x1.or)(...W.map((C)=>x1._`${M} === ${C}`));else L=x1.nil;if(q.length)L=(0,x1.or)(L,...q.map((C)=>x1._`${(0,$J.usePattern)(D,C)}.test(${M})`));return(0,x1.not)(L)}function z(M){F.code(x1._`delete ${Q}[${M}]`)}function U(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,JJ.alwaysValidSchema)(Y,$)){let L=F.name("valid");if(G.removeAdditional==="failing")A(M,L,!1),F.if((0,x1.not)(L),()=>{D.reset(),z(M)});else if(A(M,L),!X)F.if((0,x1.not)(L),()=>F.break())}}function A(M,L,C){let O={keyword:"additionalProperties",dataProp:M,dataPropType:JJ.Type.Str};if(C===!1)Object.assign(O,{compositeRule:!0,createErrors:!1,allErrors:!1});D.subschema(O,L)}}};dS.default=SB0});var aS=E((iS)=>{Object.defineProperty(iS,"__esModule",{value:!0});var vB0=m3(),cS=z1(),QG=z0(),nS=JG(),yB0={keyword:"properties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:B}=D;if(B.opts.removeAdditional==="all"&&J.additionalProperties===void 0)nS.default.code(new vB0.KeywordCxt(B,nS.default,"additionalProperties"));let Y=(0,cS.allSchemaProperties)($);for(let K of Y)B.definedProperties.add(K);if(B.opts.unevaluated&&Y.length&&B.props!==!0)B.props=QG.mergeEvaluated.props(F,(0,QG.toHash)(Y),B.props);let X=Y.filter((K)=>!(0,QG.alwaysValidSchema)(B,$[K]));if(X.length===0)return;let G=F.name("valid");for(let K of X){if(W(K))q(K);else{if(F.if((0,cS.propertyInData)(F,Q,K,B.opts.ownProperties)),q(K),!B.allErrors)F.else().var(G,!0);F.endIf()}D.it.definedProperties.add(K),D.ok(G)}function W(K){return B.opts.useDefaults&&!B.compositeRule&&$[K].default!==void 0}function q(K){D.subschema({keyword:"properties",schemaProp:K,dataProp:K},G)}}};iS.default=yB0});var eS=E((tS)=>{Object.defineProperty(tS,"__esModule",{value:!0});var oS=z1(),QJ=F0(),sS=z0(),rS=z0(),_B0={keyword:"patternProperties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,data:J,parentSchema:Q,it:B}=D,{opts:Y}=B,X=(0,oS.allSchemaProperties)($),G=X.filter((A)=>(0,sS.alwaysValidSchema)(B,$[A]));if(X.length===0||G.length===X.length&&(!B.opts.unevaluated||B.props===!0))return;let W=Y.strictSchema&&!Y.allowMatchingProperties&&Q.properties,q=F.name("valid");if(B.props!==!0&&!(B.props instanceof QJ.Name))B.props=(0,rS.evaluatedPropsToName)(F,B.props);let{props:K}=B;Z();function Z(){for(let A of X){if(W)z(A);if(B.allErrors)U(A);else F.var(q,!0),U(A),F.if(q)}}function z(A){for(let M in W)if(new RegExp(A).test(M))(0,sS.checkStrictMode)(B,`property ${M} matches pattern ${A} (use allowMatchingProperties)`)}function U(A){F.forIn("key",J,(M)=>{F.if(QJ._`${(0,oS.usePattern)(D,A)}.test(${M})`,()=>{let L=G.includes(A);if(!L)D.subschema({keyword:"patternProperties",schemaProp:A,dataProp:M,dataPropType:rS.Type.Str},q);if(B.opts.unevaluated&&K!==!0)F.assign(QJ._`${K}[${M}]`,!0);else if(!L&&!B.allErrors)F.if((0,QJ.not)(q),()=>F.break())})})}}};tS.default=_B0});var Fk=E((Dk)=>{Object.defineProperty(Dk,"__esModule",{value:!0});var gB0=z0(),hB0={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(D){let{gen:F,schema:$,it:J}=D;if((0,gB0.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"}};Dk.default=hB0});var Jk=E(($k)=>{Object.defineProperty($k,"__esModule",{value:!0});var uB0=z1(),mB0={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:uB0.validateUnion,error:{message:"must match a schema in anyOf"}};$k.default=mB0});var Bk=E((Qk)=>{Object.defineProperty(Qk,"__esModule",{value:!0});var BJ=F0(),pB0=z0(),dB0={message:"must match exactly one schema in oneOf",params:({params:D})=>BJ._`{passingSchemas: ${D.passing}}`},cB0={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:dB0,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 B=$,Y=F.let("valid",!1),X=F.let("passing",null),G=F.name("_valid");D.setParams({passing:X}),F.block(W),D.result(Y,()=>D.reset(),()=>D.error(!0));function W(){B.forEach((q,K)=>{let Z;if((0,pB0.alwaysValidSchema)(Q,q))F.var(G,!0);else Z=D.subschema({keyword:"oneOf",schemaProp:K,compositeRule:!0},G);if(K>0)F.if(BJ._`${G} && ${Y}`).assign(Y,!1).assign(X,BJ._`[${X}, ${K}]`).else();F.if(G,()=>{if(F.assign(Y,!0),F.assign(X,K),Z)D.mergeEvaluated(Z,BJ.Name)})})}}};Qk.default=cB0});var Xk=E((Yk)=>{Object.defineProperty(Yk,"__esModule",{value:!0});var iB0=z0(),aB0={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((B,Y)=>{if((0,iB0.alwaysValidSchema)(J,B))return;let X=D.subschema({keyword:"allOf",schemaProp:Y},Q);D.ok(Q),D.mergeEvaluated(X)})}};Yk.default=aB0});var qk=E((Hk)=>{Object.defineProperty(Hk,"__esModule",{value:!0});var YJ=F0(),Wk=z0(),sB0={message:({params:D})=>YJ.str`must match "${D.ifClause}" schema`,params:({params:D})=>YJ._`{failingKeyword: ${D.ifClause}}`},rB0={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:sB0,code(D){let{gen:F,parentSchema:$,it:J}=D;if($.then===void 0&&$.else===void 0)(0,Wk.checkStrictMode)(J,'"if" without "then" and "else" is ignored');let Q=Gk(J,"then"),B=Gk(J,"else");if(!Q&&!B)return;let Y=F.let("valid",!0),X=F.name("_valid");if(G(),D.reset(),Q&&B){let q=F.let("ifClause");D.setParams({ifClause:q}),F.if(X,W("then",q),W("else",q))}else if(Q)F.if(X,W("then"));else F.if((0,YJ.not)(X),W("else"));D.pass(Y,()=>D.error(!0));function G(){let q=D.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},X);D.mergeEvaluated(q)}function W(q,K){return()=>{let Z=D.subschema({keyword:q},X);if(F.assign(Y,X),D.mergeValidEvaluated(Z,Y),K)F.assign(K,YJ._`${q}`);else D.setParams({ifClause:q})}}}};function Gk(D,F){let $=D.schema[F];return $!==void 0&&!(0,Wk.alwaysValidSchema)(D,$)}Hk.default=rB0});var Ek=E((Kk)=>{Object.defineProperty(Kk,"__esModule",{value:!0});var eB0=z0(),DY0={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:D,parentSchema:F,it:$}){if(F.if===void 0)(0,eB0.checkStrictMode)($,`"${D}" without "if" is ignored`)}};Kk.default=DY0});var BG=E((zk)=>{Object.defineProperty(zk,"__esModule",{value:!0});var $Y0=DG(),JY0=SS(),QY0=FG(),BY0=yS(),YY0=_S(),XY0=FJ(),GY0=pS(),WY0=JG(),HY0=aS(),qY0=eS(),KY0=Fk(),EY0=Jk(),zY0=Bk(),VY0=Xk(),ZY0=qk(),UY0=Ek();function AY0(D=!1){let F=[KY0.default,EY0.default,zY0.default,VY0.default,ZY0.default,UY0.default,GY0.default,WY0.default,XY0.default,HY0.default,qY0.default];if(D)F.push(JY0.default,BY0.default);else F.push($Y0.default,QY0.default);return F.push(YY0.default),F}zk.default=AY0});var XG=E((Uk)=>{Object.defineProperty(Uk,"__esModule",{value:!0});Uk.dynamicAnchor=void 0;var YG=F0(),MY0=E1(),Vk=g5(),NY0=a$(),CY0={keyword:"$dynamicAnchor",schemaType:"string",code:(D)=>Zk(D,D.schema)};function Zk(D,F){let{gen:$,it:J}=D;J.schemaEnv.root.dynamicAnchors[F]=!0;let Q=YG._`${MY0.default.dynamicAnchors}${(0,YG.getProperty)(F)}`,B=J.errSchemaPath==="#"?J.validateName:RY0(D);$.if(YG._`!${Q}`,()=>$.assign(Q,B))}Uk.dynamicAnchor=Zk;function RY0(D){let{schemaEnv:F,schema:$,self:J}=D.it,{root:Q,baseId:B,localRefs:Y,meta:X}=F.root,{schemaId:G}=J.opts,W=new Vk.SchemaEnv({schema:$,schemaId:G,root:Q,baseId:B,localRefs:Y,meta:X});return Vk.compileSchema.call(J,W),(0,NY0.getValidate)(D,W)}Uk.default=CY0});var GG=E((Ck)=>{Object.defineProperty(Ck,"__esModule",{value:!0});Ck.dynamicRef=void 0;var Lk=F0(),wY0=E1(),Mk=a$(),TY0={keyword:"$dynamicRef",schemaType:"string",code:(D)=>Nk(D,D.schema)};function Nk(D,F){let{gen:$,keyword:J,it:Q}=D;if(F[0]!=="#")throw Error(`"${J}" only supports hash fragment reference`);let B=F.slice(1);if(Q.allErrors)Y();else{let G=$.let("valid",!1);Y(G),D.ok(G)}function Y(G){if(Q.schemaEnv.root.dynamicAnchors[B]){let W=$.let("_v",Lk._`${wY0.default.dynamicAnchors}${(0,Lk.getProperty)(B)}`);$.if(W,X(W,G),X(Q.validateName,G))}else X(Q.validateName,G)()}function X(G,W){return W?()=>$.block(()=>{(0,Mk.callRef)(D,G),$.let(W,!0)}):()=>(0,Mk.callRef)(D,G)}}Ck.dynamicRef=Nk;Ck.default=TY0});var wk=E((Ok)=>{Object.defineProperty(Ok,"__esModule",{value:!0});var PY0=XG(),IY0=z0(),SY0={keyword:"$recursiveAnchor",schemaType:"boolean",code(D){if(D.schema)(0,PY0.dynamicAnchor)(D,"");else(0,IY0.checkStrictMode)(D.it,"$recursiveAnchor: false is ignored")}};Ok.default=SY0});var jk=E((Tk)=>{Object.defineProperty(Tk,"__esModule",{value:!0});var vY0=GG(),yY0={keyword:"$recursiveRef",schemaType:"string",code:(D)=>(0,vY0.dynamicRef)(D,D.schema)};Tk.default=yY0});var Ik=E((Pk)=>{Object.defineProperty(Pk,"__esModule",{value:!0});var _Y0=XG(),fY0=GG(),gY0=wk(),hY0=jk(),bY0=[_Y0.default,fY0.default,gY0.default,hY0.default];Pk.default=bY0});var vk=E((kk)=>{Object.defineProperty(kk,"__esModule",{value:!0});var Sk=FJ(),mY0={keyword:"dependentRequired",type:"object",schemaType:"object",error:Sk.error,code:(D)=>(0,Sk.validatePropertyDeps)(D)};kk.default=mY0});var xk=E((yk)=>{Object.defineProperty(yk,"__esModule",{value:!0});var pY0=FJ(),dY0={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(D)=>(0,pY0.validateSchemaDeps)(D)};yk.default=dY0});var fk=E((_k)=>{Object.defineProperty(_k,"__esModule",{value:!0});var nY0=z0(),iY0={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:D,parentSchema:F,it:$}){if(F.contains===void 0)(0,nY0.checkStrictMode)($,`"${D}" without "contains" is ignored`)}};_k.default=iY0});var hk=E((gk)=>{Object.defineProperty(gk,"__esModule",{value:!0});var oY0=vk(),sY0=xk(),rY0=fk(),tY0=[oY0.default,sY0.default,rY0.default];gk.default=tY0});var mk=E((uk)=>{Object.defineProperty(uk,"__esModule",{value:!0});var I6=F0(),bk=z0(),D20=E1(),F20={message:"must NOT have unevaluated properties",params:({params:D})=>I6._`{unevaluatedProperty: ${D.unevaluatedProperty}}`},$20={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:F20,code(D){let{gen:F,schema:$,data:J,errsCount:Q,it:B}=D;if(!Q)throw Error("ajv implementation error");let{allErrors:Y,props:X}=B;if(X instanceof I6.Name)F.if(I6._`${X} !== true`,()=>F.forIn("key",J,(K)=>F.if(W(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)));B.props=!0,D.ok(I6._`${Q} === ${D20.default.errors}`);function G(K){if($===!1){if(D.setParams({unevaluatedProperty:K}),D.error(),!Y)F.break();return}if(!(0,bk.alwaysValidSchema)(B,$)){let Z=F.name("valid");if(D.subschema({keyword:"unevaluatedProperties",dataProp:K,dataPropType:bk.Type.Str},Z),!Y)F.if((0,I6.not)(Z),()=>F.break())}}function W(K,Z){return I6._`!${K} || !${K}[${Z}]`}function q(K,Z){let z=[];for(let U in K)if(K[U]===!0)z.push(I6._`${Z} !== ${U}`);return(0,I6.and)(...z)}}};uk.default=$20});var dk=E((pk)=>{Object.defineProperty(pk,"__esModule",{value:!0});var E4=F0(),lk=z0(),Q20={message:({params:{len:D}})=>E4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>E4._`{limit: ${D}}`},B20={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:Q20,code(D){let{gen:F,schema:$,data:J,it:Q}=D,B=Q.items||0;if(B===!0)return;let Y=F.const("len",E4._`${J}.length`);if($===!1)D.setParams({len:B}),D.fail(E4._`${Y} > ${B}`);else if(typeof $=="object"&&!(0,lk.alwaysValidSchema)(Q,$)){let G=F.var("valid",E4._`${Y} <= ${B}`);F.if((0,E4.not)(G),()=>X(G,B)),D.ok(G)}Q.items=!0;function X(G,W){F.forRange("i",W,Y,(q)=>{if(D.subschema({keyword:"unevaluatedItems",dataProp:q,dataPropType:lk.Type.Num},G),!Q.allErrors)F.if((0,E4.not)(G),()=>F.break())})}}};pk.default=B20});var nk=E((ck)=>{Object.defineProperty(ck,"__esModule",{value:!0});var X20=mk(),G20=dk(),W20=[X20.default,G20.default];ck.default=W20});var ak=E((ik)=>{Object.defineProperty(ik,"__esModule",{value:!0});var e0=F0(),q20={message:({schemaCode:D})=>e0.str`must match format "${D}"`,params:({schemaCode:D})=>e0._`{format: ${D}}`},K20={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:q20,code(D,F){let{gen:$,data:J,$data:Q,schema:B,schemaCode:Y,it:X}=D,{opts:G,errSchemaPath:W,schemaEnv:q,self:K}=X;if(!G.validateFormats)return;if(Q)Z();else z();function Z(){let U=$.scopeValue("formats",{ref:K.formats,code:G.code.formats}),A=$.const("fDef",e0._`${U}[${Y}]`),M=$.let("fType"),L=$.let("format");$.if(e0._`typeof ${A} == "object" && !(${A} instanceof RegExp)`,()=>$.assign(M,e0._`${A}.type || "string"`).assign(L,e0._`${A}.validate`),()=>$.assign(M,e0._`"string"`).assign(L,A)),D.fail$data((0,e0.or)(C(),O()));function C(){if(G.strictSchema===!1)return e0.nil;return e0._`${Y} && !${L}`}function O(){let y=q.$async?e0._`(${A}.async ? await ${L}(${J}) : ${L}(${J}))`:e0._`${L}(${J})`,w=e0._`(typeof ${L} == "function" ? ${y} : ${L}.test(${J}))`;return e0._`${L} && ${L} !== true && ${M} === ${F} && !${w}`}}function z(){let U=K.formats[B];if(!U){C();return}if(U===!0)return;let[A,M,L]=O(U);if(A===F)D.pass(y());function C(){if(G.strictSchema===!1){K.logger.warn(w());return}throw Error(w());function w(){return`unknown format "${B}" ignored in schema at path "${W}"`}}function O(w){let I=w instanceof RegExp?(0,e0.regexpCode)(w):G.code.formats?e0._`${G.code.formats}${(0,e0.getProperty)(B)}`:void 0,T=$.scopeValue("formats",{key:B,ref:w,code:I});if(typeof w=="object"&&!(w instanceof RegExp))return[w.type||"string",w.validate,e0._`${T}.validate`];return["string",w,T]}function y(){if(typeof U=="object"&&!(U instanceof RegExp)&&U.async){if(!q.$async)throw Error("async format in sync schema");return e0._`await ${L}(${J})`}return typeof M=="function"?e0._`${L}(${J})`:e0._`${L}.test(${J})`}}}};ik.default=K20});var WG=E((ok)=>{Object.defineProperty(ok,"__esModule",{value:!0});var z20=ak(),V20=[z20.default];ok.default=V20});var HG=E((sk)=>{Object.defineProperty(sk,"__esModule",{value:!0});sk.contentVocabulary=sk.metadataVocabulary=void 0;sk.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];sk.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var Dv=E((ek)=>{Object.defineProperty(ek,"__esModule",{value:!0});var A20=oX(),L20=tX(),M20=BG(),N20=Ik(),C20=hk(),R20=nk(),O20=WG(),tk=HG(),w20=[N20.default,A20.default,L20.default,(0,M20.default)(!0),O20.default,tk.metadataVocabulary,tk.contentVocabulary,C20.default,R20.default];ek.default=w20});var Qv=E(($v)=>{Object.defineProperty($v,"__esModule",{value:!0});$v.DiscrError=void 0;var Fv;(function(D){D.Tag="tag",D.Mapping="mapping"})(Fv||($v.DiscrError=Fv={}))});var KG=E((Yv)=>{Object.defineProperty(Yv,"__esModule",{value:!0});var c3=F0(),qG=Qv(),Bv=g5(),j20=l3(),P20=z0(),I20={message:({params:{discrError:D,tagName:F}})=>D===qG.DiscrError.Tag?`tag "${F}" must be string`:`value of tag "${F}" must be in oneOf`,params:({params:{discrError:D,tag:F,tagName:$}})=>c3._`{error: ${D}, tag: ${$}, tagValue: ${F}}`},S20={keyword:"discriminator",type:"object",schemaType:"object",error:I20,code(D){let{gen:F,data:$,schema:J,parentSchema:Q,it:B}=D,{oneOf:Y}=Q;if(!B.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(!Y)throw Error("discriminator: requires oneOf keyword");let G=F.let("valid",!1),W=F.const("tag",c3._`${$}${(0,c3.getProperty)(X)}`);F.if(c3._`typeof ${W} == "string"`,()=>q(),()=>D.error(!1,{discrError:qG.DiscrError.Tag,tag:W,tagName:X})),D.ok(G);function q(){let z=Z();F.if(!1);for(let U in z)F.elseIf(c3._`${W} === ${U}`),F.assign(G,K(z[U]));F.else(),D.error(!1,{discrError:qG.DiscrError.Mapping,tag:W,tagName:X}),F.endIf()}function K(z){let U=F.name("valid"),A=D.subschema({keyword:"oneOf",schemaProp:z},U);return D.mergeEvaluated(A,c3.Name),U}function Z(){var z;let U={},A=L(Q),M=!0;for(let y=0;y<Y.length;y++){let w=Y[y];if((w===null||w===void 0?void 0:w.$ref)&&!(0,P20.schemaHasRulesButRef)(w,B.self.RULES)){let T=w.$ref;if(w=Bv.resolveRef.call(B.self,B.schemaEnv.root,B.baseId,T),w instanceof Bv.SchemaEnv)w=w.schema;if(w===void 0)throw new j20.default(B.opts.uriResolver,B.baseId,T)}let I=(z=w===null||w===void 0?void 0:w.properties)===null||z===void 0?void 0:z[X];if(typeof I!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${X}"`);M=M&&(A||L(w)),C(I,y)}if(!M)throw Error(`discriminator: "${X}" must be required`);return U;function L({required:y}){return Array.isArray(y)&&y.includes(X)}function C(y,w){if(y.const)O(y.const,w);else if(y.enum)for(let I of y.enum)O(I,w);else throw Error(`discriminator: "properties/${X}" must have "const" or "enum"`)}function O(y,w){if(typeof y!="string"||y in U)throw Error(`discriminator: "${X}" values must be unique strings`);U[y]=w}}}};Yv.default=S20});var Xv=E((ww0,v20)=>{v20.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 Gv=E((Tw0,y20)=>{y20.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 Wv=E((jw0,x20)=>{x20.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 Hv=E((Pw0,_20)=>{_20.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 qv=E((Iw0,f20)=>{f20.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 Kv=E((Sw0,g20)=>{g20.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 Ev=E((kw0,h20)=>{h20.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 zv=E((vw0,b20)=>{b20.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 Zv=E((Vv)=>{Object.defineProperty(Vv,"__esModule",{value:!0});var u20=Xv(),m20=Gv(),l20=Wv(),p20=Hv(),d20=qv(),c20=Kv(),n20=Ev(),i20=zv(),a20=["/properties"];function o20(D){return[u20,m20,l20,p20,d20,F(this,c20),n20,F(this,i20)].forEach(($)=>this.addMetaSchema($,void 0,!1)),this;function F($,J){return D?$.$dataMetaSchema(J,a20):J}}Vv.default=o20});var Uv=E((lD,zG)=>{Object.defineProperty(lD,"__esModule",{value:!0});lD.MissingRefError=lD.ValidationError=lD.CodeGen=lD.Name=lD.nil=lD.stringify=lD.str=lD._=lD.KeywordCxt=lD.Ajv2020=void 0;var r20=aX(),t20=Dv(),e20=KG(),DX0=Zv(),EG="https://json-schema.org/draft/2020-12/schema";class a5 extends r20.default{constructor(D={}){super({...D,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),t20.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(e20.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:D,meta:F}=this.opts;if(!F)return;DX0.default.call(this,D),this.refs["http://json-schema.org/schema"]=EG}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(EG)?EG:void 0)}}lD.Ajv2020=a5;zG.exports=lD=a5;zG.exports.Ajv2020=a5;Object.defineProperty(lD,"__esModule",{value:!0});lD.default=a5;var FX0=m3();Object.defineProperty(lD,"KeywordCxt",{enumerable:!0,get:function(){return FX0.KeywordCxt}});var n3=F0();Object.defineProperty(lD,"_",{enumerable:!0,get:function(){return n3._}});Object.defineProperty(lD,"str",{enumerable:!0,get:function(){return n3.str}});Object.defineProperty(lD,"stringify",{enumerable:!0,get:function(){return n3.stringify}});Object.defineProperty(lD,"nil",{enumerable:!0,get:function(){return n3.nil}});Object.defineProperty(lD,"Name",{enumerable:!0,get:function(){return n3.Name}});Object.defineProperty(lD,"CodeGen",{enumerable:!0,get:function(){return n3.CodeGen}});var $X0=_5();Object.defineProperty(lD,"ValidationError",{enumerable:!0,get:function(){return $X0.default}});var JX0=l3();Object.defineProperty(lD,"MissingRefError",{enumerable:!0,get:function(){return JX0.default}})});var jv=E((wv)=>{Object.defineProperty(wv,"__esModule",{value:!0});wv.formatNames=wv.fastFormats=wv.fullFormats=void 0;function H8(D,F){return{validate:D,compare:F}}wv.fullFormats={date:H8(Nv,AG),time:H8(ZG(!0),LG),"date-time":H8(Av(!0),Rv),"iso-time":H8(ZG(),Cv),"iso-date-time":H8(Av(),Ov),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:qX0,"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:AX0,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:KX0,int32:{type:"number",validate:VX0},int64:{type:"number",validate:ZX0},float:{type:"number",validate:Mv},double:{type:"number",validate:Mv},password:!0,binary:!0};wv.fastFormats={...wv.fullFormats,date:H8(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,AG),time:H8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,LG),"date-time":H8(/^\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,Rv),"iso-time":H8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Cv),"iso-date-time":H8(/^\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,Ov),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};wv.formatNames=Object.keys(wv.fullFormats);function YX0(D){return D%4===0&&(D%100!==0||D%400===0)}var XX0=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,GX0=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Nv(D){let F=XX0.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&&YX0($)?29:GX0[J])}function AG(D,F){if(!(D&&F))return;if(D>F)return 1;if(D<F)return-1;return 0}var VG=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function ZG(D){return function($){let J=VG.exec($);if(!J)return!1;let Q=+J[1],B=+J[2],Y=+J[3],X=J[4],G=J[5]==="-"?-1:1,W=+(J[6]||0),q=+(J[7]||0);if(W>23||q>59||D&&!X)return!1;if(Q<=23&&B<=59&&Y<60)return!0;let K=B-q*G,Z=Q-W*G-(K<0?1:0);return(Z===23||Z===-1)&&(K===59||K===-1)&&Y<61}}function LG(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 Cv(D,F){if(!(D&&F))return;let $=VG.exec(D),J=VG.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 UG=/t|\s/i;function Av(D){let F=ZG(D);return function(J){let Q=J.split(UG);return Q.length===2&&Nv(Q[0])&&F(Q[1])}}function Rv(D,F){if(!(D&&F))return;let $=new Date(D).valueOf(),J=new Date(F).valueOf();if(!($&&J))return;return $-J}function Ov(D,F){if(!(D&&F))return;let[$,J]=D.split(UG),[Q,B]=F.split(UG),Y=AG($,Q);if(Y===void 0)return;return Y||LG(J,B)}var WX0=/\/|:/,HX0=/^(?:[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 qX0(D){return WX0.test(D)&&HX0.test(D)}var Lv=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function KX0(D){return Lv.lastIndex=0,Lv.test(D)}var EX0=-2147483648,zX0=2147483647;function VX0(D){return Number.isInteger(D)&&D<=zX0&&D>=EX0}function ZX0(D){return Number.isInteger(D)}function Mv(){return!0}var UX0=/[^\\]\\Z/;function AX0(D){if(UX0.test(D))return!1;try{return new RegExp(D),!0}catch(F){return!1}}});var Sv=E((Iv)=>{Object.defineProperty(Iv,"__esModule",{value:!0});var MX0=oX(),NX0=tX(),CX0=BG(),RX0=WG(),Pv=HG(),OX0=[MX0.default,NX0.default,(0,CX0.default)(),RX0.default,Pv.metadataVocabulary,Pv.contentVocabulary];Iv.default=OX0});var kv=E((dw0,TX0)=>{TX0.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 yv=E((pD,NG)=>{Object.defineProperty(pD,"__esModule",{value:!0});pD.MissingRefError=pD.ValidationError=pD.CodeGen=pD.Name=pD.nil=pD.stringify=pD.str=pD._=pD.KeywordCxt=pD.Ajv=void 0;var jX0=aX(),PX0=Sv(),IX0=KG(),vv=kv(),SX0=["/properties"],XJ="http://json-schema.org/draft-07/schema";class o5 extends jX0.default{_addVocabularies(){if(super._addVocabularies(),PX0.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(IX0.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let D=this.opts.$data?this.$dataMetaSchema(vv,SX0):vv;this.addMetaSchema(D,XJ,!1),this.refs["http://json-schema.org/schema"]=XJ}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(XJ)?XJ:void 0)}}pD.Ajv=o5;NG.exports=pD=o5;NG.exports.Ajv=o5;Object.defineProperty(pD,"__esModule",{value:!0});pD.default=o5;var kX0=m3();Object.defineProperty(pD,"KeywordCxt",{enumerable:!0,get:function(){return kX0.KeywordCxt}});var i3=F0();Object.defineProperty(pD,"_",{enumerable:!0,get:function(){return i3._}});Object.defineProperty(pD,"str",{enumerable:!0,get:function(){return i3.str}});Object.defineProperty(pD,"stringify",{enumerable:!0,get:function(){return i3.stringify}});Object.defineProperty(pD,"nil",{enumerable:!0,get:function(){return i3.nil}});Object.defineProperty(pD,"Name",{enumerable:!0,get:function(){return i3.Name}});Object.defineProperty(pD,"CodeGen",{enumerable:!0,get:function(){return i3.CodeGen}});var vX0=_5();Object.defineProperty(pD,"ValidationError",{enumerable:!0,get:function(){return vX0.default}});var yX0=l3();Object.defineProperty(pD,"MissingRefError",{enumerable:!0,get:function(){return yX0.default}})});var _v=E((xv)=>{Object.defineProperty(xv,"__esModule",{value:!0});xv.formatLimitDefinition=void 0;var fX0=yv(),_1=F0(),S6=_1.operators,GJ={formatMaximum:{okStr:"<=",ok:S6.LTE,fail:S6.GT},formatMinimum:{okStr:">=",ok:S6.GTE,fail:S6.LT},formatExclusiveMaximum:{okStr:"<",ok:S6.LT,fail:S6.GTE},formatExclusiveMinimum:{okStr:">",ok:S6.GT,fail:S6.LTE}},gX0={message:({keyword:D,schemaCode:F})=>_1.str`should be ${GJ[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>_1._`{comparison: ${GJ[D].okStr}, limit: ${F}}`};xv.formatLimitDefinition={keyword:Object.keys(GJ),type:"string",schemaType:"string",$data:!0,error:gX0,code(D){let{gen:F,data:$,schemaCode:J,keyword:Q,it:B}=D,{opts:Y,self:X}=B;if(!Y.validateFormats)return;let G=new fX0.KeywordCxt(B,X.RULES.all.format.definition,"format");if(G.$data)W();else q();function W(){let Z=F.scopeValue("formats",{ref:X.formats,code:Y.code.formats}),z=F.const("fmt",_1._`${Z}[${G.schemaCode}]`);D.fail$data((0,_1.or)(_1._`typeof ${z} != "object"`,_1._`${z} instanceof RegExp`,_1._`typeof ${z}.compare != "function"`,K(z)))}function q(){let Z=G.schema,z=X.formats[Z];if(!z||z===!0)return;if(typeof z!="object"||z instanceof RegExp||typeof z.compare!="function")throw Error(`"${Q}": format "${Z}" does not define "compare" function`);let U=F.scopeValue("formats",{key:Z,ref:z,code:Y.code.formats?_1._`${Y.code.formats}${(0,_1.getProperty)(Z)}`:void 0});D.fail$data(K(U))}function K(Z){return _1._`${Z}.compare(${$}, ${J}) ${GJ[Q].fail} 0`}},dependencies:["format"]};var hX0=(D)=>{return D.addKeyword(xv.formatLimitDefinition),D};xv.default=hX0});var bv=E((s5,hv)=>{Object.defineProperty(s5,"__esModule",{value:!0});var a3=jv(),uX0=_v(),RG=F0(),fv=new RG.Name("fullFormats"),mX0=new RG.Name("fastFormats"),OG=(D,F={keywords:!0})=>{if(Array.isArray(F))return gv(D,F,a3.fullFormats,fv),D;let[$,J]=F.mode==="fast"?[a3.fastFormats,mX0]:[a3.fullFormats,fv],Q=F.formats||a3.formatNames;if(gv(D,Q,$,J),F.keywords)(0,uX0.default)(D);return D};OG.get=(D,F="full")=>{let J=(F==="fast"?a3.fastFormats:a3.fullFormats)[D];if(!J)throw Error(`Unknown format "${D}"`);return J};function gv(D,F,$,J){var Q,B;(Q=(B=D.opts.code).formats)!==null&&Q!==void 0||(B.formats=RG._`require("ajv-formats/dist/formats").${J}`);for(let Y of F)D.addFormat(Y,$[Y])}hv.exports=s5=OG;Object.defineProperty(s5,"__esModule",{value:!0});s5.default=OG});var lX0=(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:B=!0}=F;if($<0||J<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!Q&&!B)throw Error("Both `before` and `after` are false, function wouldn't be called.");let Y,X,G,W=function(...q){let K=this,Z=()=>{if(Y=void 0,X)clearTimeout(X),X=void 0;if(B)G=D.apply(K,q)},z=()=>{if(X=void 0,Y)clearTimeout(Y),Y=void 0;if(B)G=D.apply(K,q)},U=Q&&!Y;if(clearTimeout(Y),Y=setTimeout(Z,$),J>0&&J!==Number.POSITIVE_INFINITY&&!X)X=setTimeout(z,J);if(U)G=D.apply(K,q);return G};return M5(W,D),W.cancel=()=>{if(Y)clearTimeout(Y),Y=void 0;if(X)clearTimeout(X),X=void 0},W},wG;var uv=P(()=>{_2();wG=lX0});var r5=E(($T0,mv)=>{var pX0=Number.MAX_SAFE_INTEGER||9007199254740991,dX0=["major","premajor","minor","preminor","patch","prepatch","prerelease"];mv.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:pX0,RELEASE_TYPES:dX0,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var t5=E((JT0,lv)=>{var cX0=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};lv.exports=cX0});var o3=E((q8,pv)=>{var{MAX_SAFE_COMPONENT_LENGTH:TG,MAX_SAFE_BUILD_LENGTH:nX0,MAX_LENGTH:iX0}=r5(),aX0=t5();q8=pv.exports={};var oX0=q8.re=[],sX0=q8.safeRe=[],x=q8.src=[],rX0=q8.safeSrc=[],_=q8.t={},tX0=0,jG="[a-zA-Z0-9-]",eX0=[["\\s",1],["\\d",iX0],[jG,nX0]],DG0=(D)=>{for(let[F,$]of eX0)D=D.split(`${F}*`).join(`${F}{0,${$}}`).split(`${F}+`).join(`${F}{1,${$}}`);return D},$0=(D,F,$)=>{let J=DG0(F),Q=tX0++;aX0(D,Q,F),_[D]=Q,x[Q]=F,rX0[Q]=J,oX0[Q]=new RegExp(F,$?"g":void 0),sX0[Q]=new RegExp(J,$?"g":void 0)};$0("NUMERICIDENTIFIER","0|[1-9]\\d*");$0("NUMERICIDENTIFIERLOOSE","\\d+");$0("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${jG}*`);$0("MAINVERSION",`(${x[_.NUMERICIDENTIFIER]})\\.(${x[_.NUMERICIDENTIFIER]})\\.(${x[_.NUMERICIDENTIFIER]})`);$0("MAINVERSIONLOOSE",`(${x[_.NUMERICIDENTIFIERLOOSE]})\\.(${x[_.NUMERICIDENTIFIERLOOSE]})\\.(${x[_.NUMERICIDENTIFIERLOOSE]})`);$0("PRERELEASEIDENTIFIER",`(?:${x[_.NONNUMERICIDENTIFIER]}|${x[_.NUMERICIDENTIFIER]})`);$0("PRERELEASEIDENTIFIERLOOSE",`(?:${x[_.NONNUMERICIDENTIFIER]}|${x[_.NUMERICIDENTIFIERLOOSE]})`);$0("PRERELEASE",`(?:-(${x[_.PRERELEASEIDENTIFIER]}(?:\\.${x[_.PRERELEASEIDENTIFIER]})*))`);$0("PRERELEASELOOSE",`(?:-?(${x[_.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${x[_.PRERELEASEIDENTIFIERLOOSE]})*))`);$0("BUILDIDENTIFIER",`${jG}+`);$0("BUILD",`(?:\\+(${x[_.BUILDIDENTIFIER]}(?:\\.${x[_.BUILDIDENTIFIER]})*))`);$0("FULLPLAIN",`v?${x[_.MAINVERSION]}${x[_.PRERELEASE]}?${x[_.BUILD]}?`);$0("FULL",`^${x[_.FULLPLAIN]}$`);$0("LOOSEPLAIN",`[v=\\s]*${x[_.MAINVERSIONLOOSE]}${x[_.PRERELEASELOOSE]}?${x[_.BUILD]}?`);$0("LOOSE",`^${x[_.LOOSEPLAIN]}$`);$0("GTLT","((?:<|>)?=?)");$0("XRANGEIDENTIFIERLOOSE",`${x[_.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);$0("XRANGEIDENTIFIER",`${x[_.NUMERICIDENTIFIER]}|x|X|\\*`);$0("XRANGEPLAIN",`[v=\\s]*(${x[_.XRANGEIDENTIFIER]})(?:\\.(${x[_.XRANGEIDENTIFIER]})(?:\\.(${x[_.XRANGEIDENTIFIER]})(?:${x[_.PRERELEASE]})?${x[_.BUILD]}?)?)?`);$0("XRANGEPLAINLOOSE",`[v=\\s]*(${x[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${x[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${x[_.XRANGEIDENTIFIERLOOSE]})(?:${x[_.PRERELEASELOOSE]})?${x[_.BUILD]}?)?)?`);$0("XRANGE",`^${x[_.GTLT]}\\s*${x[_.XRANGEPLAIN]}$`);$0("XRANGELOOSE",`^${x[_.GTLT]}\\s*${x[_.XRANGEPLAINLOOSE]}$`);$0("COERCEPLAIN",`(^|[^\\d])(\\d{1,${TG}})(?:\\.(\\d{1,${TG}}))?(?:\\.(\\d{1,${TG}}))?`);$0("COERCE",`${x[_.COERCEPLAIN]}(?:$|[^\\d])`);$0("COERCEFULL",x[_.COERCEPLAIN]+`(?:${x[_.PRERELEASE]})?(?:${x[_.BUILD]})?(?:$|[^\\d])`);$0("COERCERTL",x[_.COERCE],!0);$0("COERCERTLFULL",x[_.COERCEFULL],!0);$0("LONETILDE","(?:~>?)");$0("TILDETRIM",`(\\s*)${x[_.LONETILDE]}\\s+`,!0);q8.tildeTrimReplace="$1~";$0("TILDE",`^${x[_.LONETILDE]}${x[_.XRANGEPLAIN]}$`);$0("TILDELOOSE",`^${x[_.LONETILDE]}${x[_.XRANGEPLAINLOOSE]}$`);$0("LONECARET","(?:\\^)");$0("CARETTRIM",`(\\s*)${x[_.LONECARET]}\\s+`,!0);q8.caretTrimReplace="$1^";$0("CARET",`^${x[_.LONECARET]}${x[_.XRANGEPLAIN]}$`);$0("CARETLOOSE",`^${x[_.LONECARET]}${x[_.XRANGEPLAINLOOSE]}$`);$0("COMPARATORLOOSE",`^${x[_.GTLT]}\\s*(${x[_.LOOSEPLAIN]})$|^$`);$0("COMPARATOR",`^${x[_.GTLT]}\\s*(${x[_.FULLPLAIN]})$|^$`);$0("COMPARATORTRIM",`(\\s*)${x[_.GTLT]}\\s*(${x[_.LOOSEPLAIN]}|${x[_.XRANGEPLAIN]})`,!0);q8.comparatorTrimReplace="$1$2$3";$0("HYPHENRANGE",`^\\s*(${x[_.XRANGEPLAIN]})\\s+-\\s+(${x[_.XRANGEPLAIN]})\\s*$`);$0("HYPHENRANGELOOSE",`^\\s*(${x[_.XRANGEPLAINLOOSE]})\\s+-\\s+(${x[_.XRANGEPLAINLOOSE]})\\s*$`);$0("STAR","(<|>)?=?\\s*\\*");$0("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");$0("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var WJ=E((QT0,dv)=>{var FG0=Object.freeze({loose:!0}),$G0=Object.freeze({}),JG0=(D)=>{if(!D)return $G0;if(typeof D!=="object")return FG0;return D};dv.exports=JG0});var PG=E((BT0,iv)=>{var cv=/^[0-9]+$/,nv=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let $=cv.test(D),J=cv.test(F);if($&&J)D=+D,F=+F;return D===F?0:$&&!J?-1:J&&!$?1:D<F?-1:1},QG0=(D,F)=>nv(F,D);iv.exports={compareIdentifiers:nv,rcompareIdentifiers:QG0}});var wD=E((YT0,ov)=>{var HJ=t5(),{MAX_LENGTH:av,MAX_SAFE_INTEGER:qJ}=r5(),{safeRe:KJ,t:EJ}=o3(),BG0=WJ(),{compareIdentifiers:IG}=PG();class f1{constructor(D,F){if(F=BG0(F),D instanceof f1)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>av)throw TypeError(`version is longer than ${av} characters`);HJ("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let $=D.trim().match(F.loose?KJ[EJ.LOOSE]:KJ[EJ.FULL]);if(!$)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+$[1],this.minor=+$[2],this.patch=+$[3],this.major>qJ||this.major<0)throw TypeError("Invalid major version");if(this.minor>qJ||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>qJ||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<qJ)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(HJ("SemVer.compare",this.version,this.options,D),!(D instanceof f1)){if(typeof D==="string"&&D===this.version)return 0;D=new f1(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof f1))D=new f1(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 f1))D=new f1(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(HJ("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 IG($,J)}while(++F)}compareBuild(D){if(!(D instanceof f1))D=new f1(D,this.options);let F=0;do{let $=this.build[F],J=D.build[F];if(HJ("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 IG($,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?KJ[EJ.PRERELEASELOOSE]:KJ[EJ.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(IG(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}}ov.exports=f1});var z4=E((XT0,rv)=>{var sv=wD(),YG0=(D,F,$=!1)=>{if(D instanceof sv)return D;try{return new sv(D,F)}catch(J){if(!$)return null;throw J}};rv.exports=YG0});var ev=E((GT0,tv)=>{var XG0=z4(),GG0=(D,F)=>{let $=XG0(D,F);return $?$.version:null};tv.exports=GG0});var Fy=E((WT0,Dy)=>{var WG0=z4(),HG0=(D,F)=>{let $=WG0(D.trim().replace(/^[=v]+/,""),F);return $?$.version:null};Dy.exports=HG0});var Qy=E((HT0,Jy)=>{var $y=wD(),qG0=(D,F,$,J,Q)=>{if(typeof $==="string")Q=J,J=$,$=void 0;try{return new $y(D instanceof $y?D.version:D,$).inc(F,J,Q).version}catch(B){return null}};Jy.exports=qG0});var Xy=E((qT0,Yy)=>{var By=z4(),KG0=(D,F)=>{let $=By(D,null,!0),J=By(F,null,!0),Q=$.compare(J);if(Q===0)return null;let B=Q>0,Y=B?$:J,X=B?J:$,G=!!Y.prerelease.length;if(!!X.prerelease.length&&!G){if(!X.patch&&!X.minor)return"major";if(X.compareMain(Y)===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"};Yy.exports=KG0});var Wy=E((KT0,Gy)=>{var EG0=wD(),zG0=(D,F)=>new EG0(D,F).major;Gy.exports=zG0});var qy=E((ET0,Hy)=>{var VG0=wD(),ZG0=(D,F)=>new VG0(D,F).minor;Hy.exports=ZG0});var Ey=E((zT0,Ky)=>{var UG0=wD(),AG0=(D,F)=>new UG0(D,F).patch;Ky.exports=AG0});var Vy=E((VT0,zy)=>{var LG0=z4(),MG0=(D,F)=>{let $=LG0(D,F);return $&&$.prerelease.length?$.prerelease:null};zy.exports=MG0});var Z1=E((ZT0,Uy)=>{var Zy=wD(),NG0=(D,F,$)=>new Zy(D,$).compare(new Zy(F,$));Uy.exports=NG0});var Ly=E((UT0,Ay)=>{var CG0=Z1(),RG0=(D,F,$)=>CG0(F,D,$);Ay.exports=RG0});var Ny=E((AT0,My)=>{var OG0=Z1(),wG0=(D,F)=>OG0(D,F,!0);My.exports=wG0});var zJ=E((LT0,Ry)=>{var Cy=wD(),TG0=(D,F,$)=>{let J=new Cy(D,$),Q=new Cy(F,$);return J.compare(Q)||J.compareBuild(Q)};Ry.exports=TG0});var wy=E((MT0,Oy)=>{var jG0=zJ(),PG0=(D,F)=>D.sort(($,J)=>jG0($,J,F));Oy.exports=PG0});var jy=E((NT0,Ty)=>{var IG0=zJ(),SG0=(D,F)=>D.sort(($,J)=>IG0(J,$,F));Ty.exports=SG0});var e5=E((CT0,Py)=>{var kG0=Z1(),vG0=(D,F,$)=>kG0(D,F,$)>0;Py.exports=vG0});var VJ=E((RT0,Iy)=>{var yG0=Z1(),xG0=(D,F,$)=>yG0(D,F,$)<0;Iy.exports=xG0});var SG=E((OT0,Sy)=>{var _G0=Z1(),fG0=(D,F,$)=>_G0(D,F,$)===0;Sy.exports=fG0});var kG=E((wT0,ky)=>{var gG0=Z1(),hG0=(D,F,$)=>gG0(D,F,$)!==0;ky.exports=hG0});var ZJ=E((TT0,vy)=>{var bG0=Z1(),uG0=(D,F,$)=>bG0(D,F,$)>=0;vy.exports=uG0});var UJ=E((jT0,yy)=>{var mG0=Z1(),lG0=(D,F,$)=>mG0(D,F,$)<=0;yy.exports=lG0});var vG=E((PT0,xy)=>{var pG0=SG(),dG0=kG(),cG0=e5(),nG0=ZJ(),iG0=VJ(),aG0=UJ(),oG0=(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 pG0(D,$,J);case"!=":return dG0(D,$,J);case">":return cG0(D,$,J);case">=":return nG0(D,$,J);case"<":return iG0(D,$,J);case"<=":return aG0(D,$,J);default:throw TypeError(`Invalid operator: ${F}`)}};xy.exports=oG0});var fy=E((IT0,_y)=>{var sG0=wD(),rG0=z4(),{safeRe:AJ,t:LJ}=o3(),tG0=(D,F)=>{if(D instanceof sG0)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?AJ[LJ.COERCEFULL]:AJ[LJ.COERCE]);else{let G=F.includePrerelease?AJ[LJ.COERCERTLFULL]:AJ[LJ.COERCERTL],W;while((W=G.exec(D))&&(!$||$.index+$[0].length!==D.length)){if(!$||W.index+W[0].length!==$.index+$[0].length)$=W;G.lastIndex=W.index+W[1].length+W[2].length}G.lastIndex=-1}if($===null)return null;let J=$[2],Q=$[3]||"0",B=$[4]||"0",Y=F.includePrerelease&&$[5]?`-${$[5]}`:"",X=F.includePrerelease&&$[6]?`+${$[6]}`:"";return rG0(`${J}.${Q}.${B}${Y}${X}`,F)};_y.exports=tG0});var by=E((ST0,hy)=>{class gy{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}}hy.exports=gy});var U1=E((kT0,py)=>{var eG0=/\s+/g;class D9{constructor(D,F){if(F=FW0(F),D instanceof D9)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else return new D9(D.raw,F);if(D instanceof yG)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(eG0," "),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)=>!my(J[0])),this.set.length===0)this.set=[$];else if(this.set.length>1){for(let J of this.set)if(J.length===1&&GW0(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&&YW0)|(this.options.loose&&XW0))+":"+D,J=uy.get($);if(J)return J;let Q=this.options.loose,B=Q?vD[TD.HYPHENRANGELOOSE]:vD[TD.HYPHENRANGE];D=D.replace(B,AW0(this.options.includePrerelease)),f0("hyphen replace",D),D=D.replace(vD[TD.COMPARATORTRIM],JW0),f0("comparator trim",D),D=D.replace(vD[TD.TILDETRIM],QW0),f0("tilde trim",D),D=D.replace(vD[TD.CARETTRIM],BW0),f0("caret trim",D);let Y=D.split(" ").map((q)=>WW0(q,this.options)).join(" ").split(/\s+/).map((q)=>UW0(q,this.options));if(Q)Y=Y.filter((q)=>{return f0("loose invalid filter",q,this.options),!!q.match(vD[TD.COMPARATORLOOSE])});f0("range list",Y);let X=new Map,G=Y.map((q)=>new yG(q,this.options));for(let q of G){if(my(q))return[q];X.set(q.value,q)}if(X.size>1&&X.has(""))X.delete("");let W=[...X.values()];return uy.set($,W),W}intersects(D,F){if(!(D instanceof D9))throw TypeError("a Range is required");return this.set.some(($)=>{return ly($,F)&&D.set.some((J)=>{return ly(J,F)&&$.every((Q)=>{return J.every((B)=>{return Q.intersects(B,F)})})})})}test(D){if(!D)return!1;if(typeof D==="string")try{D=new $W0(D,this.options)}catch(F){return!1}for(let F=0;F<this.set.length;F++)if(LW0(this.set[F],D,this.options))return!0;return!1}}py.exports=D9;var DW0=by(),uy=new DW0,FW0=WJ(),yG=F9(),f0=t5(),$W0=wD(),{safeRe:vD,t:TD,comparatorTrimReplace:JW0,tildeTrimReplace:QW0,caretTrimReplace:BW0}=o3(),{FLAG_INCLUDE_PRERELEASE:YW0,FLAG_LOOSE:XW0}=r5(),my=(D)=>D.value==="<0.0.0-0",GW0=(D)=>D.value==="",ly=(D,F)=>{let $=!0,J=D.slice(),Q=J.pop();while($&&J.length)$=J.every((B)=>{return Q.intersects(B,F)}),Q=J.pop();return $},WW0=(D,F)=>{return D=D.replace(vD[TD.BUILD],""),f0("comp",D,F),D=KW0(D,F),f0("caret",D),D=HW0(D,F),f0("tildes",D),D=zW0(D,F),f0("xrange",D),D=ZW0(D,F),f0("stars",D),D},yD=(D)=>!D||D.toLowerCase()==="x"||D==="*",HW0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>qW0($,F)).join(" ")},qW0=(D,F)=>{let $=F.loose?vD[TD.TILDELOOSE]:vD[TD.TILDE];return D.replace($,(J,Q,B,Y,X)=>{f0("tilde",D,J,Q,B,Y,X);let G;if(yD(Q))G="";else if(yD(B))G=`>=${Q}.0.0 <${+Q+1}.0.0-0`;else if(yD(Y))G=`>=${Q}.${B}.0 <${Q}.${+B+1}.0-0`;else if(X)f0("replaceTilde pr",X),G=`>=${Q}.${B}.${Y}-${X} <${Q}.${+B+1}.0-0`;else G=`>=${Q}.${B}.${Y} <${Q}.${+B+1}.0-0`;return f0("tilde return",G),G})},KW0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>EW0($,F)).join(" ")},EW0=(D,F)=>{f0("caret",D,F);let $=F.loose?vD[TD.CARETLOOSE]:vD[TD.CARET],J=F.includePrerelease?"-0":"";return D.replace($,(Q,B,Y,X,G)=>{f0("caret",D,Q,B,Y,X,G);let W;if(yD(B))W="";else if(yD(Y))W=`>=${B}.0.0${J} <${+B+1}.0.0-0`;else if(yD(X))if(B==="0")W=`>=${B}.${Y}.0${J} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.0${J} <${+B+1}.0.0-0`;else if(G)if(f0("replaceCaret pr",G),B==="0")if(Y==="0")W=`>=${B}.${Y}.${X}-${G} <${B}.${Y}.${+X+1}-0`;else W=`>=${B}.${Y}.${X}-${G} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.${X}-${G} <${+B+1}.0.0-0`;else if(f0("no pr"),B==="0")if(Y==="0")W=`>=${B}.${Y}.${X}${J} <${B}.${Y}.${+X+1}-0`;else W=`>=${B}.${Y}.${X}${J} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.${X} <${+B+1}.0.0-0`;return f0("caret return",W),W})},zW0=(D,F)=>{return f0("replaceXRanges",D,F),D.split(/\s+/).map(($)=>VW0($,F)).join(" ")},VW0=(D,F)=>{D=D.trim();let $=F.loose?vD[TD.XRANGELOOSE]:vD[TD.XRANGE];return D.replace($,(J,Q,B,Y,X,G)=>{f0("xRange",D,J,Q,B,Y,X,G);let W=yD(B),q=W||yD(Y),K=q||yD(X),Z=K;if(Q==="="&&Z)Q="";if(G=F.includePrerelease?"-0":"",W)if(Q===">"||Q==="<")J="<0.0.0-0";else J="*";else if(Q&&Z){if(q)Y=0;if(X=0,Q===">")if(Q=">=",q)B=+B+1,Y=0,X=0;else Y=+Y+1,X=0;else if(Q==="<=")if(Q="<",q)B=+B+1;else Y=+Y+1;if(Q==="<")G="-0";J=`${Q+B}.${Y}.${X}${G}`}else if(q)J=`>=${B}.0.0${G} <${+B+1}.0.0-0`;else if(K)J=`>=${B}.${Y}.0${G} <${B}.${+Y+1}.0-0`;return f0("xRange return",J),J})},ZW0=(D,F)=>{return f0("replaceStars",D,F),D.trim().replace(vD[TD.STAR],"")},UW0=(D,F)=>{return f0("replaceGTE0",D,F),D.trim().replace(vD[F.includePrerelease?TD.GTE0PRE:TD.GTE0],"")},AW0=(D)=>(F,$,J,Q,B,Y,X,G,W,q,K,Z)=>{if(yD(J))$="";else if(yD(Q))$=`>=${J}.0.0${D?"-0":""}`;else if(yD(B))$=`>=${J}.${Q}.0${D?"-0":""}`;else if(Y)$=`>=${$}`;else $=`>=${$}${D?"-0":""}`;if(yD(W))G="";else if(yD(q))G=`<${+W+1}.0.0-0`;else if(yD(K))G=`<${W}.${+q+1}.0-0`;else if(Z)G=`<=${W}.${q}.${K}-${Z}`;else if(D)G=`<${W}.${q}.${+K+1}-0`;else G=`<=${G}`;return`${$} ${G}`.trim()},LW0=(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(f0(D[J].semver),D[J].semver===yG.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 F9=E((vT0,oy)=>{var $9=Symbol("SemVer ANY");class MJ{static get ANY(){return $9}constructor(D,F){if(F=dy(F),D instanceof MJ)if(D.loose===!!F.loose)return D;else D=D.value;if(D=D.trim().split(/\s+/).join(" "),_G("comparator",D,F),this.options=F,this.loose=!!F.loose,this.parse(D),this.semver===$9)this.value="";else this.value=this.operator+this.semver.version;_G("comp",this)}parse(D){let F=this.options.loose?cy[ny.COMPARATORLOOSE]:cy[ny.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=$9;else this.semver=new iy($[2],this.options.loose)}toString(){return this.value}test(D){if(_G("Comparator.test",D,this.options.loose),this.semver===$9||D===$9)return!0;if(typeof D==="string")try{D=new iy(D,this.options)}catch(F){return!1}return xG(D,this.operator,this.semver,this.options)}intersects(D,F){if(!(D instanceof MJ))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new ay(D.value,F).test(this.value)}else if(D.operator===""){if(D.value==="")return!0;return new ay(this.value,F).test(D.semver)}if(F=dy(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(xG(this.semver,"<",D.semver,F)&&this.operator.startsWith(">")&&D.operator.startsWith("<"))return!0;if(xG(this.semver,">",D.semver,F)&&this.operator.startsWith("<")&&D.operator.startsWith(">"))return!0;return!1}}oy.exports=MJ;var dy=WJ(),{safeRe:cy,t:ny}=o3(),xG=vG(),_G=t5(),iy=wD(),ay=U1()});var J9=E((yT0,sy)=>{var MW0=U1(),NW0=(D,F,$)=>{try{F=new MW0(F,$)}catch(J){return!1}return F.test(D)};sy.exports=NW0});var ty=E((xT0,ry)=>{var CW0=U1(),RW0=(D,F)=>new CW0(D,F).set.map(($)=>$.map((J)=>J.value).join(" ").trim().split(" "));ry.exports=RW0});var Dx=E((_T0,ey)=>{var OW0=wD(),wW0=U1(),TW0=(D,F,$)=>{let J=null,Q=null,B=null;try{B=new wW0(F,$)}catch(Y){return null}return D.forEach((Y)=>{if(B.test(Y)){if(!J||Q.compare(Y)===-1)J=Y,Q=new OW0(J,$)}}),J};ey.exports=TW0});var $x=E((fT0,Fx)=>{var jW0=wD(),PW0=U1(),IW0=(D,F,$)=>{let J=null,Q=null,B=null;try{B=new PW0(F,$)}catch(Y){return null}return D.forEach((Y)=>{if(B.test(Y)){if(!J||Q.compare(Y)===1)J=Y,Q=new jW0(J,$)}}),J};Fx.exports=IW0});var Bx=E((gT0,Qx)=>{var fG=wD(),SW0=U1(),Jx=e5(),kW0=(D,F)=>{D=new SW0(D,F);let $=new fG("0.0.0");if(D.test($))return $;if($=new fG("0.0.0-0"),D.test($))return $;$=null;for(let J=0;J<D.set.length;++J){let Q=D.set[J],B=null;if(Q.forEach((Y)=>{let X=new fG(Y.semver.version);switch(Y.operator){case">":if(X.prerelease.length===0)X.patch++;else X.prerelease.push(0);X.raw=X.format();case"":case">=":if(!B||Jx(X,B))B=X;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${Y.operator}`)}}),B&&(!$||Jx($,B)))$=B}if($&&D.test($))return $;return null};Qx.exports=kW0});var Xx=E((hT0,Yx)=>{var vW0=U1(),yW0=(D,F)=>{try{return new vW0(D,F).range||"*"}catch($){return null}};Yx.exports=yW0});var NJ=E((bT0,qx)=>{var xW0=wD(),Hx=F9(),{ANY:_W0}=Hx,fW0=U1(),gW0=J9(),Gx=e5(),Wx=VJ(),hW0=UJ(),bW0=ZJ(),uW0=(D,F,$,J)=>{D=new xW0(D,J),F=new fW0(F,J);let Q,B,Y,X,G;switch($){case">":Q=Gx,B=hW0,Y=Wx,X=">",G=">=";break;case"<":Q=Wx,B=bW0,Y=Gx,X="<",G="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(gW0(D,F,J))return!1;for(let W=0;W<F.set.length;++W){let q=F.set[W],K=null,Z=null;if(q.forEach((z)=>{if(z.semver===_W0)z=new Hx(">=0.0.0");if(K=K||z,Z=Z||z,Q(z.semver,K.semver,J))K=z;else if(Y(z.semver,Z.semver,J))Z=z}),K.operator===X||K.operator===G)return!1;if((!Z.operator||Z.operator===X)&&B(D,Z.semver))return!1;else if(Z.operator===G&&Y(D,Z.semver))return!1}return!0};qx.exports=uW0});var Ex=E((uT0,Kx)=>{var mW0=NJ(),lW0=(D,F,$)=>mW0(D,F,">",$);Kx.exports=lW0});var Vx=E((mT0,zx)=>{var pW0=NJ(),dW0=(D,F,$)=>pW0(D,F,"<",$);zx.exports=dW0});var Ax=E((lT0,Ux)=>{var Zx=U1(),cW0=(D,F,$)=>{return D=new Zx(D,$),F=new Zx(F,$),D.intersects(F,$)};Ux.exports=cW0});var Mx=E((pT0,Lx)=>{var nW0=J9(),iW0=Z1();Lx.exports=(D,F,$)=>{let J=[],Q=null,B=null,Y=D.sort((q,K)=>iW0(q,K,$));for(let q of Y)if(nW0(q,F,$)){if(B=q,!Q)Q=q}else{if(B)J.push([Q,B]);B=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===Y[0])X.push("*");else if(!K)X.push(`>=${q}`);else if(q===Y[0])X.push(`<=${K}`);else X.push(`${q} - ${K}`);let G=X.join(" || "),W=typeof F.raw==="string"?F.raw:String(F);return G.length<W.length?G:F}});var Tx=E((dT0,wx)=>{var Nx=U1(),hG=F9(),{ANY:gG}=hG,Q9=J9(),bG=Z1(),aW0=(D,F,$={})=>{if(D===F)return!0;D=new Nx(D,$),F=new Nx(F,$);let J=!1;D:for(let Q of D.set){for(let B of F.set){let Y=sW0(Q,B,$);if(J=J||Y!==null,Y)continue D}if(J)return!1}return!0},oW0=[new hG(">=0.0.0-0")],Cx=[new hG(">=0.0.0")],sW0=(D,F,$)=>{if(D===F)return!0;if(D.length===1&&D[0].semver===gG)if(F.length===1&&F[0].semver===gG)return!0;else if($.includePrerelease)D=oW0;else D=Cx;if(F.length===1&&F[0].semver===gG)if($.includePrerelease)return!0;else F=Cx;let J=new Set,Q,B;for(let z of D)if(z.operator===">"||z.operator===">=")Q=Rx(Q,z,$);else if(z.operator==="<"||z.operator==="<=")B=Ox(B,z,$);else J.add(z.semver);if(J.size>1)return null;let Y;if(Q&&B){if(Y=bG(Q.semver,B.semver,$),Y>0)return null;else if(Y===0&&(Q.operator!==">="||B.operator!=="<="))return null}for(let z of J){if(Q&&!Q9(z,String(Q),$))return null;if(B&&!Q9(z,String(B),$))return null;for(let U of F)if(!Q9(z,String(U),$))return!1;return!0}let X,G,W,q,K=B&&!$.includePrerelease&&B.semver.prerelease.length?B.semver:!1,Z=Q&&!$.includePrerelease&&Q.semver.prerelease.length?Q.semver:!1;if(K&&K.prerelease.length===1&&B.operator==="<"&&K.prerelease[0]===0)K=!1;for(let z of F){if(q=q||z.operator===">"||z.operator===">=",W=W||z.operator==="<"||z.operator==="<=",Q){if(Z){if(z.semver.prerelease&&z.semver.prerelease.length&&z.semver.major===Z.major&&z.semver.minor===Z.minor&&z.semver.patch===Z.patch)Z=!1}if(z.operator===">"||z.operator===">="){if(X=Rx(Q,z,$),X===z&&X!==Q)return!1}else if(Q.operator===">="&&!Q9(Q.semver,String(z),$))return!1}if(B){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=Ox(B,z,$),G===z&&G!==B)return!1}else if(B.operator==="<="&&!Q9(B.semver,String(z),$))return!1}if(!z.operator&&(B||Q)&&Y!==0)return!1}if(Q&&W&&!B&&Y!==0)return!1;if(B&&q&&!Q&&Y!==0)return!1;if(Z||K)return!1;return!0},Rx=(D,F,$)=>{if(!D)return F;let J=bG(D.semver,F.semver,$);return J>0?D:J<0?F:F.operator===">"&&D.operator===">="?F:D},Ox=(D,F,$)=>{if(!D)return F;let J=bG(D.semver,F.semver,$);return J<0?D:J>0?F:F.operator==="<"&&D.operator==="<="?F:D};wx.exports=aW0});var Sx=E((cT0,Ix)=>{var uG=o3(),jx=r5(),rW0=wD(),Px=PG(),tW0=z4(),eW0=ev(),DH0=Fy(),FH0=Qy(),$H0=Xy(),JH0=Wy(),QH0=qy(),BH0=Ey(),YH0=Vy(),XH0=Z1(),GH0=Ly(),WH0=Ny(),HH0=zJ(),qH0=wy(),KH0=jy(),EH0=e5(),zH0=VJ(),VH0=SG(),ZH0=kG(),UH0=ZJ(),AH0=UJ(),LH0=vG(),MH0=fy(),NH0=F9(),CH0=U1(),RH0=J9(),OH0=ty(),wH0=Dx(),TH0=$x(),jH0=Bx(),PH0=Xx(),IH0=NJ(),SH0=Ex(),kH0=Vx(),vH0=Ax(),yH0=Mx(),xH0=Tx();Ix.exports={parse:tW0,valid:eW0,clean:DH0,inc:FH0,diff:$H0,major:JH0,minor:QH0,patch:BH0,prerelease:YH0,compare:XH0,rcompare:GH0,compareLoose:WH0,compareBuild:HH0,sort:qH0,rsort:KH0,gt:EH0,lt:zH0,eq:VH0,neq:ZH0,gte:UH0,lte:AH0,cmp:LH0,coerce:MH0,Comparator:NH0,Range:CH0,satisfies:RH0,toComparators:OH0,maxSatisfying:wH0,minSatisfying:TH0,minVersion:jH0,validRange:PH0,outside:IH0,gtr:SH0,ltr:kH0,intersects:vH0,simplifyRange:yH0,subset:xH0,SemVer:rW0,re:uG.re,src:uG.src,tokens:uG.t,SEMVER_SPEC_VERSION:jx.SEMVER_SPEC_VERSION,RELEASE_TYPES:jx.RELEASE_TYPES,compareIdentifiers:Px.compareIdentifiers,rcompareIdentifiers:Px.rcompareIdentifiers}});function vx(D,F,$){if(!D)return!1;if(D.constructor===F)return!0;return _H0.call(D)===$}function yx(D){return vx(D,Uint8Array,"[object Uint8Array]")}function fH0(D){return vx(D,ArrayBuffer,"[object ArrayBuffer]")}function gH0(D){return yx(D)||fH0(D)}function hH0(D){if(!yx(D))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof D}\``)}function bH0(D){if(!gH0(D))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof D}\``)}function mG(D,F){if(D.length===0)return new Uint8Array(0);F??=D.reduce((Q,B)=>Q+B.length,0);let $=new Uint8Array(F),J=0;for(let Q of D)hH0(Q),$.set(Q,J),J+=Q.length;return $}function lG(D,F="utf8"){return bH0(D),kx[F]??=new globalThis.TextDecoder(F),kx[F].decode(D)}function uH0(D){if(typeof D!=="string")throw TypeError(`Expected \`string\`, got \`${typeof D}\``)}function CJ(D){return uH0(D),mH0.encode(D)}var _H0,kx,mH0,nT0;var xx=P(()=>{_H0=Object.prototype.toString;kx={utf8:new globalThis.TextDecoder("utf8")};mH0=new globalThis.TextEncoder;nT0=Array.from({length:256},(D,F)=>F.toString(16).padStart(2,"0"))});import{isDeepStrictEqual as lH0}from"util";import _x from"process";import V4 from"fs";import fx from"path";import B9 from"crypto";import pH0 from"assert";var hx,bx,Z4,dH0,gx="aes-256-cbc",s3=()=>Object.create(null),cH0=(D)=>D!==void 0&&D!==null,nH0=(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`)},RJ="__internal__",pG,OJ;var ux=P(()=>{iT();oT();wj();uv();xx();hx=e(Uv(),1),bx=e(bv(),1),Z4=e(Sx(),1),dH0=bx.default.default,pG=`${RJ}.migrations.version`;OJ=class OJ{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=e2(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 B=new hx.Ajv2020({allErrors:!0,useDefaults:!0,...F.ajvOptions});dH0(B);let Y={...F.rootSchema,type:"object",properties:F.schema};this.#$=B.compile(Y);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=fx.resolve(F.cwd,`${F.configName??"config"}${$}`);let J=this.store,Q=Object.assign(s3(),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{pH0.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 ${RJ} key, as it's used to manage this module internal operations.`);let{store:$}=this,J=(Q,B)=>{if(nH0(Q,B),this.#D.accessPropertiesByDotNotation)s2($,Q,B);else $[Q]=B};if(typeof D==="object"){let Q=D;for(let[B,Y]of Object.entries(Q))J(B,Y)}else J(D,F);this.store=$}has(D){if(this.#D.accessPropertiesByDotNotation)return nT(this.store,D);return D in this.store}reset(...D){for(let F of D)if(cH0(this.#Q[F]))this.set(F,this.#Q[F])}delete(D){let{store:F}=this;if(this.#D.accessPropertiesByDotNotation)cT(F,D);else delete F[D];this.store=F}clear(){this.store=s3();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=V4.readFileSync(this.path,this.#F?null:"utf8"),F=this._encryptData(D),$=this._deserialize(F);return this._validate($),Object.assign(s3(),$)}catch(D){if(D?.code==="ENOENT")return this._ensureDirectory(),s3();if(this.#D.clearInvalidConfig&&D.name==="SyntaxError")return s3();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:lG(D);try{let F=D.slice(0,16),$=B9.pbkdf2Sync(this.#F,F.toString(),1e4,32,"sha512"),J=B9.createDecipheriv(gx,$,F),Q=D.slice(17),B=typeof Q==="string"?CJ(Q):Q;return lG(mG([J.update(B),J.final()]))}catch{}return D.toString()}_handleChange(D,F){let $=D(),J=()=>{let Q=$,B=D();if(lH0(B,Q))return;$=B,F.call(this,B,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(){V4.mkdirSync(fx.dirname(this.path),{recursive:!0})}_write(D){let F=this._serialize(D);if(this.#F){let $=B9.randomBytes(16),J=B9.pbkdf2Sync(this.#F,$.toString(),1e4,32,"sha512"),Q=B9.createCipheriv(gx,J,$);F=mG([$,CJ(":"),Q.update(CJ(F)),Q.final()])}if(_x.env.SNAP)V4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});else try{HX(this.path,F,{mode:this.#D.configFileMode})}catch($){if($?.code==="EXDEV"){V4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});return}throw $}}_watch(){if(this._ensureDirectory(),!V4.existsSync(this.path))this._write(s3());if(_x.platform==="win32")V4.watch(this.path,{persistent:!1},wG(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else V4.watchFile(this.path,{persistent:!1},wG(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(D,F,$){let J=this._get(pG,"0.0.0"),Q=Object.keys(D).filter((Y)=>this._shouldPerformMigration(Y,J,F)),B={...this.store};for(let Y of Q)try{if($)$(this,{fromVersion:J,toVersion:Y,finalVersion:F,versions:Q});let X=D[Y];X?.(this),this._set(pG,Y),J=Y,B={...this.store}}catch(X){throw this.store=B,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${X}`)}if(this._isVersionInRangeFormat(J)||!Z4.default.eq(J,F))this._set(pG,F)}_containsReservedKey(D){if(typeof D==="object"){if(Object.keys(D)[0]===RJ)return!0}if(typeof D!=="string")return!1;if(this.#D.accessPropertiesByDotNotation){if(D.startsWith(`${RJ}.`))return!0;return!1}return!1}_isVersionInRangeFormat(D){return Z4.default.clean(D)===null}_shouldPerformMigration(D,F,$){if(this._isVersionInRangeFormat(D)){if(F!=="0.0.0"&&Z4.default.satisfies(F,D))return!1;return Z4.default.satisfies($,D)}if(Z4.default.lte(D,F))return!1;if(Z4.default.gt(D,$))return!1;return!0}_get(D,F){return dT(this.store,D,F)}_set(D,F){let{store:$}=this;s2($,D,F),this.store=$}}});var V0,dG,S,K8=(D)=>{switch(typeof D){case"undefined":return S.undefined;case"string":return S.string;case"number":return Number.isNaN(D)?S.nan:S.number;case"boolean":return S.boolean;case"function":return S.function;case"bigint":return S.bigint;case"symbol":return S.symbol;case"object":if(Array.isArray(D))return S.array;if(D===null)return S.null;if(D.then&&typeof D.then==="function"&&D.catch&&typeof D.catch==="function")return S.promise;if(typeof Map<"u"&&D instanceof Map)return S.map;if(typeof Set<"u"&&D instanceof Set)return S.set;if(typeof Date<"u"&&D instanceof Date)return S.date;return S.object;default:return S.unknown}};var Y9=P(()=>{(function(D){D.assertEqual=(Q)=>{};function F(Q){}D.assertIs=F;function $(Q){throw Error()}D.assertNever=$,D.arrayToEnum=(Q)=>{let B={};for(let Y of Q)B[Y]=Y;return B},D.getValidEnumValues=(Q)=>{let B=D.objectKeys(Q).filter((X)=>typeof Q[Q[X]]!=="number"),Y={};for(let X of B)Y[X]=Q[X];return D.objectValues(Y)},D.objectValues=(Q)=>{return D.objectKeys(Q).map(function(B){return Q[B]})},D.objectKeys=typeof Object.keys==="function"?(Q)=>Object.keys(Q):(Q)=>{let B=[];for(let Y in Q)if(Object.prototype.hasOwnProperty.call(Q,Y))B.push(Y);return B},D.find=(Q,B)=>{for(let Y of Q)if(B(Y))return Y;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,B=" | "){return Q.map((Y)=>typeof Y==="string"?`'${Y}'`:Y).join(B)}D.joinValues=J,D.jsonStringifyReplacer=(Q,B)=>{if(typeof B==="bigint")return B.toString();return B}})(V0||(V0={}));(function(D){D.mergeShapes=(F,$)=>{return{...F,...$}}})(dG||(dG={}));S=V0.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var j,iH0=(D)=>{return JSON.stringify(D,null,2).replace(/"([^"]+)":/g,"$1:")},dD;var wJ=P(()=>{Y9();j=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"]);dD=class dD 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 B of Q.issues)if(B.code==="invalid_union")B.unionErrors.map(J);else if(B.code==="invalid_return_type")J(B.returnTypeError);else if(B.code==="invalid_arguments")J(B.argumentsError);else if(B.path.length===0)$._errors.push(F(B));else{let Y=$,X=0;while(X<B.path.length){let G=B.path[X];if(X!==B.path.length-1)Y[G]=Y[G]||{_errors:[]};else Y[G]=Y[G]||{_errors:[]},Y[G]._errors.push(F(B));Y=Y[G],X++}}};return J(this),$}static assert(D){if(!(D instanceof dD))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()}};dD.create=(D)=>{return new dD(D)}});var aH0=(D,F)=>{let $;switch(D.code){case j.invalid_type:if(D.received===S.undefined)$="Required";else $=`Expected ${D.expected}, received ${D.received}`;break;case j.invalid_literal:$=`Invalid literal value, expected ${JSON.stringify(D.expected,V0.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:$=`Unrecognized key(s) in object: ${V0.joinValues(D.keys,", ")}`;break;case j.invalid_union:$="Invalid input";break;case j.invalid_union_discriminator:$=`Invalid discriminator value. Expected ${V0.joinValues(D.options)}`;break;case j.invalid_enum_value:$=`Invalid enum value. Expected ${V0.joinValues(D.options)}, received '${D.received}'`;break;case j.invalid_arguments:$="Invalid function arguments";break;case j.invalid_return_type:$="Invalid function return type";break;case j.invalid_date:$="Invalid date";break;case j.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 j.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 j.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 j.custom:$="Invalid input";break;case j.invalid_intersection_types:$="Intersection results could not be merged";break;case j.not_multiple_of:$=`Number must be a multiple of ${D.multipleOf}`;break;case j.not_finite:$="Number must be finite";break;default:$=F.defaultError,V0.assertNever(D)}return{message:$}},b8;var cG=P(()=>{wJ();Y9();b8=aH0});function oH0(D){mx=D}function r3(){return mx}var mx;var TJ=P(()=>{cG();mx=b8});function k(D,F){let $=r3(),J=X9({issueData:F,data:D.data,path:D.path,errorMaps:[D.common.contextualErrorMap,D.schemaErrorMap,$,$===b8?void 0:b8].filter((Q)=>!!Q)});D.common.issues.push(J)}class ND{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 c;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,B=await J.value;$.push({key:Q,value:B})}return ND.mergeObjectSync(D,$)}static mergeObjectSync(D,F){let $={};for(let J of F){let{key:Q,value:B}=J;if(Q.status==="aborted")return c;if(B.status==="aborted")return c;if(Q.status==="dirty")D.dirty();if(B.status==="dirty")D.dirty();if(Q.value!=="__proto__"&&(typeof B.value<"u"||J.alwaysSet))$[Q.value]=B.value}return{status:D.value,value:$}}}var X9=(D)=>{let{data:F,path:$,errorMaps:J,issueData:Q}=D,B=[...$,...Q.path||[]],Y={...Q,path:B};if(Q.message!==void 0)return{...Q,path:B,message:Q.message};let X="",G=J.filter((W)=>!!W).slice().reverse();for(let W of G)X=W(Y,{data:F,defaultError:X}).message;return{...Q,path:B,message:X}},sH0,c,U4=(D)=>({status:"dirty",value:D}),jD=(D)=>({status:"valid",value:D}),jJ=(D)=>D.status==="aborted",PJ=(D)=>D.status==="dirty",k6=(D)=>D.status==="valid",t3=(D)=>typeof Promise<"u"&&D instanceof Promise;var nG=P(()=>{TJ();cG();sH0=[];c=Object.freeze({status:"aborted"})});var lx=()=>{};var u;var px=P(()=>{(function(D){D.errToObj=(F)=>typeof F==="string"?{message:F}:F||{},D.toString=(F)=>typeof F==="string"?F:F?.message})(u||(u={}))});class u1{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 Y0(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:(Y,X)=>{let{message:G}=D;if(Y.code==="invalid_enum_value")return{message:G??X.defaultError};if(typeof X.data>"u")return{message:G??J??X.defaultError};if(Y.code!=="invalid_type")return{message:X.defaultError};return{message:G??$??X.defaultError}},description:Q}}class H0{get description(){return this._def.description}_getType(D){return K8(D.data)}_getOrReturnCtx(D,F){return F||{common:D.parent.common,data:D.data,parsedType:K8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}_processInputParams(D){return{status:new ND,ctx:{common:D.parent.common,data:D.data,parsedType:K8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}}_parseSync(D){let F=this._parse(D);if(t3(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:K8(D)},J=this._parseSync({data:D,path:$.path,parent:$});return dx($,J)}"~validate"(D){let F={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:K8(D)};if(!this["~standard"].async)try{let $=this._parseSync({data:D,path:[],parent:F});return k6($)?{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(($)=>k6($)?{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:K8(D)},J=this._parse({data:D,path:$.path,parent:$}),Q=await(t3(J)?J:Promise.resolve(J));return dx($,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 B=D(J),Y=()=>Q.addIssue({code:j.custom,...$(J)});if(typeof Promise<"u"&&B instanceof Promise)return B.then((X)=>{if(!X)return Y(),!1;else return!0});if(!B)return Y(),!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 m1({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 b1.create(this,this._def)}nullable(){return m8.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return h1.create(this)}promise(){return N4.create(this,this._def)}or(D){return QF.create([this,D],this._def)}and(D){return BF.create(this,D,this._def)}transform(D){return new m1({...Y0(this._def),schema:this,typeName:o.ZodEffects,effect:{type:"transform",transform:D}})}default(D){let F=typeof D==="function"?D:()=>D;return new WF({...Y0(this._def),innerType:this,defaultValue:F,typeName:o.ZodDefault})}brand(){return new SJ({typeName:o.ZodBranded,type:this,...Y0(this._def)})}catch(D){let F=typeof D==="function"?D:()=>D;return new HF({...Y0(this._def),innerType:this,catchValue:F,typeName:o.ZodCatch})}describe(D){return new this.constructor({...this._def,description:D})}pipe(D){return E9.create(this,D)}readonly(){return qF.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function ix(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 Eq0(D){return new RegExp(`^${ix(D)}$`)}function ax(D){let F=`${nx}T${ix(D)}`,$=[];if($.push(D.local?"Z?":"Z"),D.offset)$.push("([+-]\\d{2}:?\\d{2})");return F=`${F}(${$.join("|")})`,new RegExp(`^${F}$`)}function zq0(D,F){if((F==="v4"||!F)&&Yq0.test(D))return!0;if((F==="v6"||!F)&&Gq0.test(D))return!0;return!1}function Vq0(D,F){if(!$q0.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 Zq0(D,F){if((F==="v4"||!F)&&Xq0.test(D))return!0;if((F==="v6"||!F)&&Wq0.test(D))return!0;return!1}function Uq0(D,F){let $=(D.toString().split(".")[1]||"").length,J=(F.toString().split(".")[1]||"").length,Q=$>J?$:J,B=Number.parseInt(D.toFixed(Q).replace(".","")),Y=Number.parseInt(F.toFixed(Q).replace(".",""));return B%Y/10**Q}function e3(D){if(D instanceof i0){let F={};for(let $ in D.shape){let J=D.shape[$];F[$]=b1.create(e3(J))}return new i0({...D._def,shape:()=>F})}else if(D instanceof h1)return new h1({...D._def,type:e3(D.element)});else if(D instanceof b1)return b1.create(e3(D.unwrap()));else if(D instanceof m8)return m8.create(e3(D.unwrap()));else if(D instanceof z8)return z8.create(D.items.map((F)=>e3(F)));else return D}function aG(D,F){let $=K8(D),J=K8(F);if(D===F)return{valid:!0,data:D};else if($===S.object&&J===S.object){let Q=V0.objectKeys(F),B=V0.objectKeys(D).filter((X)=>Q.indexOf(X)!==-1),Y={...D,...F};for(let X of B){let G=aG(D[X],F[X]);if(!G.valid)return{valid:!1};Y[X]=G.data}return{valid:!0,data:Y}}else if($===S.array&&J===S.array){if(D.length!==F.length)return{valid:!1};let Q=[];for(let B=0;B<D.length;B++){let Y=D[B],X=F[B],G=aG(Y,X);if(!G.valid)return{valid:!1};Q.push(G.data)}return{valid:!0,data:Q}}else if($===S.date&&J===S.date&&+D===+F)return{valid:!0,data:D};else return{valid:!1}}function ox(D,F){return new _6({values:D,typeName:o.ZodEnum,...Y0(F)})}function cx(D,F){let $=typeof D==="function"?D(F):typeof D==="string"?{message:D}:D;return typeof $==="string"?{message:$}:$}function sx(D,F={},$){if(D)return L4.create().superRefine((J,Q)=>{let B=D(J);if(B instanceof Promise)return B.then((Y)=>{if(!Y){let X=cx(F,J),G=X.fatal??$??!0;Q.addIssue({code:"custom",...X,fatal:G})}});if(!B){let Y=cx(F,J),X=Y.fatal??$??!0;Q.addIssue({code:"custom",...Y,fatal:X})}return});return L4.create()}var dx=(D,F)=>{if(k6(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 dD(D.common.issues);return this._error=$,this._error}}}},rH0,tH0,eH0,Dq0,Fq0,$q0,Jq0,Qq0,Bq0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",iG,Yq0,Xq0,Gq0,Wq0,Hq0,qq0,nx="((\\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])))",Kq0,g1,y6,x6,FF,A4,G9,$F,JF,L4,v6,E8,W9,h1,i0,QF,u8=(D)=>{if(D instanceof YF)return u8(D.schema);else if(D instanceof m1)return u8(D.innerType());else if(D instanceof XF)return[D.value];else if(D instanceof _6)return D.options;else if(D instanceof GF)return V0.objectValues(D.enum);else if(D instanceof WF)return u8(D._def.innerType);else if(D instanceof $F)return[void 0];else if(D instanceof JF)return[null];else if(D instanceof b1)return[void 0,...u8(D.unwrap())];else if(D instanceof m8)return[null,...u8(D.unwrap())];else if(D instanceof SJ)return u8(D.unwrap());else if(D instanceof qF)return u8(D.unwrap());else if(D instanceof HF)return u8(D._def.innerType);else return[]},IJ,BF,z8,H9,q9,M4,DF,YF,XF,_6,GF,N4,m1,b1,m8,WF,HF,K9,Aq0,SJ,E9,qF,Lq0,o,Mq0=(D,F={message:`Input not instance of ${D.name}`})=>sx(($)=>$ instanceof D,F),rx,tx,Nq0,Cq0,ex,Rq0,Oq0,wq0,Tq0,jq0,Pq0,Iq0,Sq0,kq0,vq0,yq0,xq0,_q0,fq0,gq0,hq0,bq0,uq0,mq0,lq0,pq0,dq0,cq0,nq0,iq0,aq0,oq0,sq0,rq0,tq0=()=>rx().optional(),eq0=()=>tx().optional(),DK0=()=>ex().optional(),FK0,$K0;var D_=P(()=>{wJ();TJ();px();nG();Y9();rH0=/^c[^\s-]{8,}$/i,tH0=/^[0-9a-z]+$/,eH0=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Dq0=/^[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,Fq0=/^[a-z0-9_-]{21}$/i,$q0=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Jq0=/^[-+]?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)?)??$/,Qq0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Yq0=/^(?:(?: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])$/,Xq0=/^(?:(?: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])$/,Gq0=/^(([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]))$/,Wq0=/^(([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])$/,Hq0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,qq0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Kq0=new RegExp(`^${nx}$`);g1=class g1 extends H0{_parse(D){if(this._def.coerce)D.data=String(D.data);if(this._getType(D)!==S.string){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.string,received:Q.parsedType}),c}let $=new ND,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),k(J,{code:j.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),k(J,{code:j.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),$.dirty()}else if(Q.kind==="length"){let B=D.data.length>Q.value,Y=D.data.length<Q.value;if(B||Y){if(J=this._getOrReturnCtx(D,J),B)k(J,{code:j.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});else if(Y)k(J,{code:j.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});$.dirty()}}else if(Q.kind==="email"){if(!Qq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"email",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="emoji"){if(!iG)iG=new RegExp(Bq0,"u");if(!iG.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"emoji",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="uuid"){if(!Dq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"uuid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="nanoid"){if(!Fq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"nanoid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid"){if(!rH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"cuid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid2"){if(!tH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"cuid2",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ulid"){if(!eH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"ulid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="url")try{new URL(D.data)}catch{J=this._getOrReturnCtx(D,J),k(J,{validation:"url",code:j.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),k(J,{validation:"regex",code:j.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),k(J,{code:j.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),k(J,{code:j.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),k(J,{code:j.invalid_string,validation:{endsWith:Q.value},message:Q.message}),$.dirty()}else if(Q.kind==="datetime"){if(!ax(Q).test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"datetime",message:Q.message}),$.dirty()}else if(Q.kind==="date"){if(!Kq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"date",message:Q.message}),$.dirty()}else if(Q.kind==="time"){if(!Eq0(Q).test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"time",message:Q.message}),$.dirty()}else if(Q.kind==="duration"){if(!Jq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"duration",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ip"){if(!zq0(D.data,Q.version))J=this._getOrReturnCtx(D,J),k(J,{validation:"ip",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="jwt"){if(!Vq0(D.data,Q.alg))J=this._getOrReturnCtx(D,J),k(J,{validation:"jwt",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cidr"){if(!Zq0(D.data,Q.version))J=this._getOrReturnCtx(D,J),k(J,{validation:"cidr",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64"){if(!Hq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"base64",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64url"){if(!qq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"base64url",code:j.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:j.invalid_string,...u.errToObj($)})}_addCheck(D){return new g1({...this._def,checks:[...this._def.checks,D]})}email(D){return this._addCheck({kind:"email",...u.errToObj(D)})}url(D){return this._addCheck({kind:"url",...u.errToObj(D)})}emoji(D){return this._addCheck({kind:"emoji",...u.errToObj(D)})}uuid(D){return this._addCheck({kind:"uuid",...u.errToObj(D)})}nanoid(D){return this._addCheck({kind:"nanoid",...u.errToObj(D)})}cuid(D){return this._addCheck({kind:"cuid",...u.errToObj(D)})}cuid2(D){return this._addCheck({kind:"cuid2",...u.errToObj(D)})}ulid(D){return this._addCheck({kind:"ulid",...u.errToObj(D)})}base64(D){return this._addCheck({kind:"base64",...u.errToObj(D)})}base64url(D){return this._addCheck({kind:"base64url",...u.errToObj(D)})}jwt(D){return this._addCheck({kind:"jwt",...u.errToObj(D)})}ip(D){return this._addCheck({kind:"ip",...u.errToObj(D)})}cidr(D){return this._addCheck({kind:"cidr",...u.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,...u.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,...u.errToObj(D?.message)})}duration(D){return this._addCheck({kind:"duration",...u.errToObj(D)})}regex(D,F){return this._addCheck({kind:"regex",regex:D,...u.errToObj(F)})}includes(D,F){return this._addCheck({kind:"includes",value:D,position:F?.position,...u.errToObj(F?.message)})}startsWith(D,F){return this._addCheck({kind:"startsWith",value:D,...u.errToObj(F)})}endsWith(D,F){return this._addCheck({kind:"endsWith",value:D,...u.errToObj(F)})}min(D,F){return this._addCheck({kind:"min",value:D,...u.errToObj(F)})}max(D,F){return this._addCheck({kind:"max",value:D,...u.errToObj(F)})}length(D,F){return this._addCheck({kind:"length",value:D,...u.errToObj(F)})}nonempty(D){return this.min(1,u.errToObj(D))}trim(){return new g1({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new g1({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new g1({...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}};g1.create=(D)=>{return new g1({checks:[],typeName:o.ZodString,coerce:D?.coerce??!1,...Y0(D)})};y6=class y6 extends H0{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)!==S.number){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.number,received:Q.parsedType}),c}let $=void 0,J=new ND;for(let Q of this._def.checks)if(Q.kind==="int"){if(!V0.isInteger(D.data))$=this._getOrReturnCtx(D,$),k($,{code:j.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,$),k($,{code:j.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,$),k($,{code:j.too_big,maximum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),J.dirty()}else if(Q.kind==="multipleOf"){if(Uq0(D.data,Q.value)!==0)$=this._getOrReturnCtx(D,$),k($,{code:j.not_multiple_of,multipleOf:Q.value,message:Q.message}),J.dirty()}else if(Q.kind==="finite"){if(!Number.isFinite(D.data))$=this._getOrReturnCtx(D,$),k($,{code:j.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,u.toString(F))}gt(D,F){return this.setLimit("min",D,!1,u.toString(F))}lte(D,F){return this.setLimit("max",D,!0,u.toString(F))}lt(D,F){return this.setLimit("max",D,!1,u.toString(F))}setLimit(D,F,$,J){return new y6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:u.toString(J)}]})}_addCheck(D){return new y6({...this._def,checks:[...this._def.checks,D]})}int(D){return this._addCheck({kind:"int",message:u.toString(D)})}positive(D){return this._addCheck({kind:"min",value:0,inclusive:!1,message:u.toString(D)})}negative(D){return this._addCheck({kind:"max",value:0,inclusive:!1,message:u.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:0,inclusive:!0,message:u.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:0,inclusive:!0,message:u.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:u.toString(F)})}finite(D){return this._addCheck({kind:"finite",message:u.toString(D)})}safe(D){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:u.toString(D)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:u.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)}};y6.create=(D)=>{return new y6({checks:[],typeName:o.ZodNumber,coerce:D?.coerce||!1,...Y0(D)})};x6=class x6 extends H0{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)!==S.bigint)return this._getInvalidInput(D);let $=void 0,J=new ND;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,$),k($,{code:j.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,$),k($,{code:j.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,$),k($,{code:j.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 k(F,{code:j.invalid_type,expected:S.bigint,received:F.parsedType}),c}gte(D,F){return this.setLimit("min",D,!0,u.toString(F))}gt(D,F){return this.setLimit("min",D,!1,u.toString(F))}lte(D,F){return this.setLimit("max",D,!0,u.toString(F))}lt(D,F){return this.setLimit("max",D,!1,u.toString(F))}setLimit(D,F,$,J){return new x6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:u.toString(J)}]})}_addCheck(D){return new x6({...this._def,checks:[...this._def.checks,D]})}positive(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:u.toString(D)})}negative(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:u.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:u.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:u.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:u.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}};x6.create=(D)=>{return new x6({checks:[],typeName:o.ZodBigInt,coerce:D?.coerce??!1,...Y0(D)})};FF=class FF extends H0{_parse(D){if(this._def.coerce)D.data=Boolean(D.data);if(this._getType(D)!==S.boolean){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.boolean,received:$.parsedType}),c}return jD(D.data)}};FF.create=(D)=>{return new FF({typeName:o.ZodBoolean,coerce:D?.coerce||!1,...Y0(D)})};A4=class A4 extends H0{_parse(D){if(this._def.coerce)D.data=new Date(D.data);if(this._getType(D)!==S.date){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.date,received:Q.parsedType}),c}if(Number.isNaN(D.data.getTime())){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_date}),c}let $=new ND,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),k(J,{code:j.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),k(J,{code:j.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 A4({...this._def,checks:[...this._def.checks,D]})}min(D,F){return this._addCheck({kind:"min",value:D.getTime(),message:u.toString(F)})}max(D,F){return this._addCheck({kind:"max",value:D.getTime(),message:u.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}};A4.create=(D)=>{return new A4({checks:[],coerce:D?.coerce||!1,typeName:o.ZodDate,...Y0(D)})};G9=class G9 extends H0{_parse(D){if(this._getType(D)!==S.symbol){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.symbol,received:$.parsedType}),c}return jD(D.data)}};G9.create=(D)=>{return new G9({typeName:o.ZodSymbol,...Y0(D)})};$F=class $F extends H0{_parse(D){if(this._getType(D)!==S.undefined){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.undefined,received:$.parsedType}),c}return jD(D.data)}};$F.create=(D)=>{return new $F({typeName:o.ZodUndefined,...Y0(D)})};JF=class JF extends H0{_parse(D){if(this._getType(D)!==S.null){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.null,received:$.parsedType}),c}return jD(D.data)}};JF.create=(D)=>{return new JF({typeName:o.ZodNull,...Y0(D)})};L4=class L4 extends H0{constructor(){super(...arguments);this._any=!0}_parse(D){return jD(D.data)}};L4.create=(D)=>{return new L4({typeName:o.ZodAny,...Y0(D)})};v6=class v6 extends H0{constructor(){super(...arguments);this._unknown=!0}_parse(D){return jD(D.data)}};v6.create=(D)=>{return new v6({typeName:o.ZodUnknown,...Y0(D)})};E8=class E8 extends H0{_parse(D){let F=this._getOrReturnCtx(D);return k(F,{code:j.invalid_type,expected:S.never,received:F.parsedType}),c}};E8.create=(D)=>{return new E8({typeName:o.ZodNever,...Y0(D)})};W9=class W9 extends H0{_parse(D){if(this._getType(D)!==S.undefined){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.void,received:$.parsedType}),c}return jD(D.data)}};W9.create=(D)=>{return new W9({typeName:o.ZodVoid,...Y0(D)})};h1=class h1 extends H0{_parse(D){let{ctx:F,status:$}=this._processInputParams(D),J=this._def;if(F.parsedType!==S.array)return k(F,{code:j.invalid_type,expected:S.array,received:F.parsedType}),c;if(J.exactLength!==null){let B=F.data.length>J.exactLength.value,Y=F.data.length<J.exactLength.value;if(B||Y)k(F,{code:B?j.too_big:j.too_small,minimum:Y?J.exactLength.value:void 0,maximum:B?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)k(F,{code:j.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)k(F,{code:j.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((B,Y)=>{return J.type._parseAsync(new u1(F,B,F.path,Y))})).then((B)=>{return ND.mergeArray($,B)});let Q=[...F.data].map((B,Y)=>{return J.type._parseSync(new u1(F,B,F.path,Y))});return ND.mergeArray($,Q)}get element(){return this._def.type}min(D,F){return new h1({...this._def,minLength:{value:D,message:u.toString(F)}})}max(D,F){return new h1({...this._def,maxLength:{value:D,message:u.toString(F)}})}length(D,F){return new h1({...this._def,exactLength:{value:D,message:u.toString(F)}})}nonempty(D){return this.min(1,D)}};h1.create=(D,F)=>{return new h1({type:D,minLength:null,maxLength:null,exactLength:null,typeName:o.ZodArray,...Y0(F)})};i0=class i0 extends H0{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)!==S.object){let G=this._getOrReturnCtx(D);return k(G,{code:j.invalid_type,expected:S.object,received:G.parsedType}),c}let{status:$,ctx:J}=this._processInputParams(D),{shape:Q,keys:B}=this._getCached(),Y=[];if(!(this._def.catchall instanceof E8&&this._def.unknownKeys==="strip")){for(let G in J.data)if(!B.includes(G))Y.push(G)}let X=[];for(let G of B){let W=Q[G],q=J.data[G];X.push({key:{status:"valid",value:G},value:W._parse(new u1(J,q,J.path,G)),alwaysSet:G in J.data})}if(this._def.catchall instanceof E8){let G=this._def.unknownKeys;if(G==="passthrough")for(let W of Y)X.push({key:{status:"valid",value:W},value:{status:"valid",value:J.data[W]}});else if(G==="strict"){if(Y.length>0)k(J,{code:j.unrecognized_keys,keys:Y}),$.dirty()}else if(G==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let G=this._def.catchall;for(let W of Y){let q=J.data[W];X.push({key:{status:"valid",value:W},value:G._parse(new u1(J,q,J.path,W)),alwaysSet:W in J.data})}}if(J.common.async)return Promise.resolve().then(async()=>{let G=[];for(let W of X){let q=await W.key,K=await W.value;G.push({key:q,value:K,alwaysSet:W.alwaysSet})}return G}).then((G)=>{return ND.mergeObjectSync($,G)});else return ND.mergeObjectSync($,X)}get shape(){return this._def.shape()}strict(D){return u.errToObj,new i0({...this._def,unknownKeys:"strict",...D!==void 0?{errorMap:(F,$)=>{let J=this._def.errorMap?.(F,$).message??$.defaultError;if(F.code==="unrecognized_keys")return{message:u.errToObj(D).message??J};return{message:J}}}:{}})}strip(){return new i0({...this._def,unknownKeys:"strip"})}passthrough(){return new i0({...this._def,unknownKeys:"passthrough"})}extend(D){return new i0({...this._def,shape:()=>({...this._def.shape(),...D})})}merge(D){return new i0({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 i0({...this._def,catchall:D})}pick(D){let F={};for(let $ of V0.objectKeys(D))if(D[$]&&this.shape[$])F[$]=this.shape[$];return new i0({...this._def,shape:()=>F})}omit(D){let F={};for(let $ of V0.objectKeys(this.shape))if(!D[$])F[$]=this.shape[$];return new i0({...this._def,shape:()=>F})}deepPartial(){return e3(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 i0({...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 b1)Q=Q._def.innerType;F[$]=Q}return new i0({...this._def,shape:()=>F})}keyof(){return ox(V0.objectKeys(this.shape))}};i0.create=(D,F)=>{return new i0({shape:()=>D,unknownKeys:"strip",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};i0.strictCreate=(D,F)=>{return new i0({shape:()=>D,unknownKeys:"strict",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};i0.lazycreate=(D,F)=>{return new i0({shape:D,unknownKeys:"strip",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};QF=class QF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$=this._def.options;function J(Q){for(let Y of Q)if(Y.result.status==="valid")return Y.result;for(let Y of Q)if(Y.result.status==="dirty")return F.common.issues.push(...Y.ctx.common.issues),Y.result;let B=Q.map((Y)=>new dD(Y.ctx.common.issues));return k(F,{code:j.invalid_union,unionErrors:B}),c}if(F.common.async)return Promise.all($.map(async(Q)=>{let B={...F,common:{...F.common,issues:[]},parent:null};return{result:await Q._parseAsync({data:F.data,path:F.path,parent:B}),ctx:B}})).then(J);else{let Q=void 0,B=[];for(let X of $){let G={...F,common:{...F.common,issues:[]},parent:null},W=X._parseSync({data:F.data,path:F.path,parent:G});if(W.status==="valid")return W;else if(W.status==="dirty"&&!Q)Q={result:W,ctx:G};if(G.common.issues.length)B.push(G.common.issues)}if(Q)return F.common.issues.push(...Q.ctx.common.issues),Q.result;let Y=B.map((X)=>new dD(X));return k(F,{code:j.invalid_union,unionErrors:Y}),c}}get options(){return this._def.options}};QF.create=(D,F)=>{return new QF({options:D,typeName:o.ZodUnion,...Y0(F)})};IJ=class IJ extends H0{_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.object)return k(F,{code:j.invalid_type,expected:S.object,received:F.parsedType}),c;let $=this.discriminator,J=F.data[$],Q=this.optionsMap.get(J);if(!Q)return k(F,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[$]}),c;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 B=u8(Q.shape[D]);if(!B.length)throw Error(`A discriminator value for key \`${D}\` could not be extracted from all schema options`);for(let Y of B){if(J.has(Y))throw Error(`Discriminator property ${String(D)} has duplicate value ${String(Y)}`);J.set(Y,Q)}}return new IJ({typeName:o.ZodDiscriminatedUnion,discriminator:D,options:F,optionsMap:J,...Y0($)})}};BF=class BF extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D),J=(Q,B)=>{if(jJ(Q)||jJ(B))return c;let Y=aG(Q.value,B.value);if(!Y.valid)return k($,{code:j.invalid_intersection_types}),c;if(PJ(Q)||PJ(B))F.dirty();return{status:F.value,value:Y.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,B])=>J(Q,B));else return J(this._def.left._parseSync({data:$.data,path:$.path,parent:$}),this._def.right._parseSync({data:$.data,path:$.path,parent:$}))}};BF.create=(D,F,$)=>{return new BF({left:D,right:F,typeName:o.ZodIntersection,...Y0($)})};z8=class z8 extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.array)return k($,{code:j.invalid_type,expected:S.array,received:$.parsedType}),c;if($.data.length<this._def.items.length)return k($,{code:j.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),c;if(!this._def.rest&&$.data.length>this._def.items.length)k($,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),F.dirty();let Q=[...$.data].map((B,Y)=>{let X=this._def.items[Y]||this._def.rest;if(!X)return null;return X._parse(new u1($,B,$.path,Y))}).filter((B)=>!!B);if($.common.async)return Promise.all(Q).then((B)=>{return ND.mergeArray(F,B)});else return ND.mergeArray(F,Q)}get items(){return this._def.items}rest(D){return new z8({...this._def,rest:D})}};z8.create=(D,F)=>{if(!Array.isArray(D))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new z8({items:D,typeName:o.ZodTuple,rest:null,...Y0(F)})};H9=class H9 extends H0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.object)return k($,{code:j.invalid_type,expected:S.object,received:$.parsedType}),c;let J=[],Q=this._def.keyType,B=this._def.valueType;for(let Y in $.data)J.push({key:Q._parse(new u1($,Y,$.path,Y)),value:B._parse(new u1($,$.data[Y],$.path,Y)),alwaysSet:Y in $.data});if($.common.async)return ND.mergeObjectAsync(F,J);else return ND.mergeObjectSync(F,J)}get element(){return this._def.valueType}static create(D,F,$){if(F instanceof H0)return new H9({keyType:D,valueType:F,typeName:o.ZodRecord,...Y0($)});return new H9({keyType:g1.create(),valueType:D,typeName:o.ZodRecord,...Y0(F)})}};q9=class q9 extends H0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.map)return k($,{code:j.invalid_type,expected:S.map,received:$.parsedType}),c;let J=this._def.keyType,Q=this._def.valueType,B=[...$.data.entries()].map(([Y,X],G)=>{return{key:J._parse(new u1($,Y,$.path,[G,"key"])),value:Q._parse(new u1($,X,$.path,[G,"value"]))}});if($.common.async){let Y=new Map;return Promise.resolve().then(async()=>{for(let X of B){let G=await X.key,W=await X.value;if(G.status==="aborted"||W.status==="aborted")return c;if(G.status==="dirty"||W.status==="dirty")F.dirty();Y.set(G.value,W.value)}return{status:F.value,value:Y}})}else{let Y=new Map;for(let X of B){let{key:G,value:W}=X;if(G.status==="aborted"||W.status==="aborted")return c;if(G.status==="dirty"||W.status==="dirty")F.dirty();Y.set(G.value,W.value)}return{status:F.value,value:Y}}}};q9.create=(D,F,$)=>{return new q9({valueType:F,keyType:D,typeName:o.ZodMap,...Y0($)})};M4=class M4 extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.set)return k($,{code:j.invalid_type,expected:S.set,received:$.parsedType}),c;let J=this._def;if(J.minSize!==null){if($.data.size<J.minSize.value)k($,{code:j.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)k($,{code:j.too_big,maximum:J.maxSize.value,type:"set",inclusive:!0,exact:!1,message:J.maxSize.message}),F.dirty()}let Q=this._def.valueType;function B(X){let G=new Set;for(let W of X){if(W.status==="aborted")return c;if(W.status==="dirty")F.dirty();G.add(W.value)}return{status:F.value,value:G}}let Y=[...$.data.values()].map((X,G)=>Q._parse(new u1($,X,$.path,G)));if($.common.async)return Promise.all(Y).then((X)=>B(X));else return B(Y)}min(D,F){return new M4({...this._def,minSize:{value:D,message:u.toString(F)}})}max(D,F){return new M4({...this._def,maxSize:{value:D,message:u.toString(F)}})}size(D,F){return this.min(D,F).max(D,F)}nonempty(D){return this.min(1,D)}};M4.create=(D,F)=>{return new M4({valueType:D,minSize:null,maxSize:null,typeName:o.ZodSet,...Y0(F)})};DF=class DF extends H0{constructor(){super(...arguments);this.validate=this.implement}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.function)return k(F,{code:j.invalid_type,expected:S.function,received:F.parsedType}),c;function $(Y,X){return X9({data:Y,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,r3(),b8].filter((G)=>!!G),issueData:{code:j.invalid_arguments,argumentsError:X}})}function J(Y,X){return X9({data:Y,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,r3(),b8].filter((G)=>!!G),issueData:{code:j.invalid_return_type,returnTypeError:X}})}let Q={errorMap:F.common.contextualErrorMap},B=F.data;if(this._def.returns instanceof N4){let Y=this;return jD(async function(...X){let G=new dD([]),W=await Y._def.args.parseAsync(X,Q).catch((Z)=>{throw G.addIssue($(X,Z)),G}),q=await Reflect.apply(B,this,W);return await Y._def.returns._def.type.parseAsync(q,Q).catch((Z)=>{throw G.addIssue(J(q,Z)),G})})}else{let Y=this;return jD(function(...X){let G=Y._def.args.safeParse(X,Q);if(!G.success)throw new dD([$(X,G.error)]);let W=Reflect.apply(B,this,G.data),q=Y._def.returns.safeParse(W,Q);if(!q.success)throw new dD([J(W,q.error)]);return q.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...D){return new DF({...this._def,args:z8.create(D).rest(v6.create())})}returns(D){return new DF({...this._def,returns:D})}implement(D){return this.parse(D)}strictImplement(D){return this.parse(D)}static create(D,F,$){return new DF({args:D?D:z8.create([]).rest(v6.create()),returns:F||v6.create(),typeName:o.ZodFunction,...Y0($)})}};YF=class YF extends H0{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})}};YF.create=(D,F)=>{return new YF({getter:D,typeName:o.ZodLazy,...Y0(F)})};XF=class XF extends H0{_parse(D){if(D.data!==this._def.value){let F=this._getOrReturnCtx(D);return k(F,{received:F.data,code:j.invalid_literal,expected:this._def.value}),c}return{status:"valid",value:D.data}}get value(){return this._def.value}};XF.create=(D,F)=>{return new XF({value:D,typeName:o.ZodLiteral,...Y0(F)})};_6=class _6 extends H0{_parse(D){if(typeof D.data!=="string"){let F=this._getOrReturnCtx(D),$=this._def.values;return k(F,{expected:V0.joinValues($),received:F.parsedType,code:j.invalid_type}),c}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 k(F,{received:F.data,code:j.invalid_enum_value,options:$}),c}return jD(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 _6.create(D,{...this._def,...F})}exclude(D,F=this._def){return _6.create(this.options.filter(($)=>!D.includes($)),{...this._def,...F})}};_6.create=ox;GF=class GF extends H0{_parse(D){let F=V0.getValidEnumValues(this._def.values),$=this._getOrReturnCtx(D);if($.parsedType!==S.string&&$.parsedType!==S.number){let J=V0.objectValues(F);return k($,{expected:V0.joinValues(J),received:$.parsedType,code:j.invalid_type}),c}if(!this._cache)this._cache=new Set(V0.getValidEnumValues(this._def.values));if(!this._cache.has(D.data)){let J=V0.objectValues(F);return k($,{received:$.data,code:j.invalid_enum_value,options:J}),c}return jD(D.data)}get enum(){return this._def.values}};GF.create=(D,F)=>{return new GF({values:D,typeName:o.ZodNativeEnum,...Y0(F)})};N4=class N4 extends H0{unwrap(){return this._def.type}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.promise&&F.common.async===!1)return k(F,{code:j.invalid_type,expected:S.promise,received:F.parsedType}),c;let $=F.parsedType===S.promise?F.data:Promise.resolve(F.data);return jD($.then((J)=>{return this._def.type.parseAsync(J,{path:F.path,errorMap:F.common.contextualErrorMap})}))}};N4.create=(D,F)=>{return new N4({type:D,typeName:o.ZodPromise,...Y0(F)})};m1=class m1 extends H0{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:(B)=>{if(k($,B),B.fatal)F.abort();else F.dirty()},get path(){return $.path}};if(Q.addIssue=Q.addIssue.bind(Q),J.type==="preprocess"){let B=J.transform($.data,Q);if($.common.async)return Promise.resolve(B).then(async(Y)=>{if(F.value==="aborted")return c;let X=await this._def.schema._parseAsync({data:Y,path:$.path,parent:$});if(X.status==="aborted")return c;if(X.status==="dirty")return U4(X.value);if(F.value==="dirty")return U4(X.value);return X});else{if(F.value==="aborted")return c;let Y=this._def.schema._parseSync({data:B,path:$.path,parent:$});if(Y.status==="aborted")return c;if(Y.status==="dirty")return U4(Y.value);if(F.value==="dirty")return U4(Y.value);return Y}}if(J.type==="refinement"){let B=(Y)=>{let X=J.refinement(Y,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 Y};if($.common.async===!1){let Y=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(Y.status==="aborted")return c;if(Y.status==="dirty")F.dirty();return B(Y.value),{status:F.value,value:Y.value}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((Y)=>{if(Y.status==="aborted")return c;if(Y.status==="dirty")F.dirty();return B(Y.value).then(()=>{return{status:F.value,value:Y.value}})})}if(J.type==="transform")if($.common.async===!1){let B=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(!k6(B))return c;let Y=J.transform(B.value,Q);if(Y instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:F.value,value:Y}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((B)=>{if(!k6(B))return c;return Promise.resolve(J.transform(B.value,Q)).then((Y)=>({status:F.value,value:Y}))});V0.assertNever(J)}};m1.create=(D,F,$)=>{return new m1({schema:D,typeName:o.ZodEffects,effect:F,...Y0($)})};m1.createWithPreprocess=(D,F,$)=>{return new m1({schema:F,effect:{type:"preprocess",transform:D},typeName:o.ZodEffects,...Y0($)})};b1=class b1 extends H0{_parse(D){if(this._getType(D)===S.undefined)return jD(void 0);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};b1.create=(D,F)=>{return new b1({innerType:D,typeName:o.ZodOptional,...Y0(F)})};m8=class m8 extends H0{_parse(D){if(this._getType(D)===S.null)return jD(null);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};m8.create=(D,F)=>{return new m8({innerType:D,typeName:o.ZodNullable,...Y0(F)})};WF=class WF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$=F.data;if(F.parsedType===S.undefined)$=this._def.defaultValue();return this._def.innerType._parse({data:$,path:F.path,parent:F})}removeDefault(){return this._def.innerType}};WF.create=(D,F)=>{return new WF({innerType:D,typeName:o.ZodDefault,defaultValue:typeof F.default==="function"?F.default:()=>F.default,...Y0(F)})};HF=class HF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$={...F,common:{...F.common,issues:[]}},J=this._def.innerType._parse({data:$.data,path:$.path,parent:{...$}});if(t3(J))return J.then((Q)=>{return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new dD($.common.issues)},input:$.data})}});else return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new dD($.common.issues)},input:$.data})}}removeCatch(){return this._def.innerType}};HF.create=(D,F)=>{return new HF({innerType:D,typeName:o.ZodCatch,catchValue:typeof F.catch==="function"?F.catch:()=>F.catch,...Y0(F)})};K9=class K9 extends H0{_parse(D){if(this._getType(D)!==S.nan){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.nan,received:$.parsedType}),c}return{status:"valid",value:D.data}}};K9.create=(D)=>{return new K9({typeName:o.ZodNaN,...Y0(D)})};Aq0=Symbol("zod_brand");SJ=class SJ extends H0{_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}};E9=class E9 extends H0{_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 c;if(Q.status==="dirty")return F.dirty(),U4(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 c;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 E9({in:D,out:F,typeName:o.ZodPipeline})}};qF=class qF extends H0{_parse(D){let F=this._def.innerType._parse(D),$=(J)=>{if(k6(J))J.value=Object.freeze(J.value);return J};return t3(F)?F.then((J)=>$(J)):$(F)}unwrap(){return this._def.innerType}};qF.create=(D,F)=>{return new qF({innerType:D,typeName:o.ZodReadonly,...Y0(F)})};Lq0={object:i0.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={}));rx=g1.create,tx=y6.create,Nq0=K9.create,Cq0=x6.create,ex=FF.create,Rq0=A4.create,Oq0=G9.create,wq0=$F.create,Tq0=JF.create,jq0=L4.create,Pq0=v6.create,Iq0=E8.create,Sq0=W9.create,kq0=h1.create,vq0=i0.create,yq0=i0.strictCreate,xq0=QF.create,_q0=IJ.create,fq0=BF.create,gq0=z8.create,hq0=H9.create,bq0=q9.create,uq0=M4.create,mq0=DF.create,lq0=YF.create,pq0=XF.create,dq0=_6.create,cq0=GF.create,nq0=N4.create,iq0=m1.create,aq0=b1.create,oq0=m8.create,sq0=m1.createWithPreprocess,rq0=E9.create,FK0={string:(D)=>g1.create({...D,coerce:!0}),number:(D)=>y6.create({...D,coerce:!0}),boolean:(D)=>FF.create({...D,coerce:!0}),bigint:(D)=>x6.create({...D,coerce:!0}),date:(D)=>A4.create({...D,coerce:!0})},$K0=c});var l1={};MF(l1,{void:()=>Sq0,util:()=>V0,unknown:()=>Pq0,union:()=>xq0,undefined:()=>wq0,tuple:()=>gq0,transformer:()=>iq0,symbol:()=>Oq0,string:()=>rx,strictObject:()=>yq0,setErrorMap:()=>oH0,set:()=>uq0,record:()=>hq0,quotelessJson:()=>iH0,promise:()=>nq0,preprocess:()=>sq0,pipeline:()=>rq0,ostring:()=>tq0,optional:()=>aq0,onumber:()=>eq0,oboolean:()=>DK0,objectUtil:()=>dG,object:()=>vq0,number:()=>tx,nullable:()=>oq0,null:()=>Tq0,never:()=>Iq0,nativeEnum:()=>cq0,nan:()=>Nq0,map:()=>bq0,makeIssue:()=>X9,literal:()=>pq0,lazy:()=>lq0,late:()=>Lq0,isValid:()=>k6,isDirty:()=>PJ,isAsync:()=>t3,isAborted:()=>jJ,intersection:()=>fq0,instanceof:()=>Mq0,getParsedType:()=>K8,getErrorMap:()=>r3,function:()=>mq0,enum:()=>dq0,effect:()=>iq0,discriminatedUnion:()=>_q0,defaultErrorMap:()=>b8,datetimeRegex:()=>ax,date:()=>Rq0,custom:()=>sx,coerce:()=>FK0,boolean:()=>ex,bigint:()=>Cq0,array:()=>kq0,any:()=>jq0,addIssueToContext:()=>k,ZodVoid:()=>W9,ZodUnknown:()=>v6,ZodUnion:()=>QF,ZodUndefined:()=>$F,ZodType:()=>H0,ZodTuple:()=>z8,ZodTransformer:()=>m1,ZodSymbol:()=>G9,ZodString:()=>g1,ZodSet:()=>M4,ZodSchema:()=>H0,ZodRecord:()=>H9,ZodReadonly:()=>qF,ZodPromise:()=>N4,ZodPipeline:()=>E9,ZodParsedType:()=>S,ZodOptional:()=>b1,ZodObject:()=>i0,ZodNumber:()=>y6,ZodNullable:()=>m8,ZodNull:()=>JF,ZodNever:()=>E8,ZodNativeEnum:()=>GF,ZodNaN:()=>K9,ZodMap:()=>q9,ZodLiteral:()=>XF,ZodLazy:()=>YF,ZodIssueCode:()=>j,ZodIntersection:()=>BF,ZodFunction:()=>DF,ZodFirstPartyTypeKind:()=>o,ZodError:()=>dD,ZodEnum:()=>_6,ZodEffects:()=>m1,ZodDiscriminatedUnion:()=>IJ,ZodDefault:()=>WF,ZodDate:()=>A4,ZodCatch:()=>HF,ZodBranded:()=>SJ,ZodBoolean:()=>FF,ZodBigInt:()=>x6,ZodArray:()=>h1,ZodAny:()=>L4,Schema:()=>H0,ParseStatus:()=>ND,OK:()=>jD,NEVER:()=>$K0,INVALID:()=>c,EMPTY_PATH:()=>sH0,DIRTY:()=>U4,BRAND:()=>Aq0});var oG=P(()=>{TJ();nG();lx();Y9();D_();wJ()});var F_=P(()=>{oG();oG()});function QK0(){let D=r0.get("accounts");if(D&&Object.keys(D).length>0)return;let F=r0.get("apiKey"),$=r0.get("username");if(!F&&!$)return;try{let J=$||"default",Q={};for(let B of JK0){let Y=r0.get(B);if(Y!==void 0)Q[B]=Y}r0.store={activeAccount:J,accounts:{[J]:Q}}}catch(J){console.error("Config migration failed (legacy config preserved):",J)}}function z9(){return r0.get("activeAccount")}function C4(){return r0.get("accounts")||{}}function YD(){let D={apiUrl:kJ},F=z9();if(!F)return D;return C4()[F]||D}function $_(){return!!YD().sandboxCompleted}function l8(D,F){let $=z9()||"default",J=C4();if(!J[$])J[$]={apiUrl:kJ};J[$][D]=F,r0.store={...r0.store,accounts:J,activeAccount:$}}function sG(D){let F=z9();if(!F)return;let $=C4();if($[F])delete $[F][D],r0.set("accounts",$)}function J_(){let D=z9();if(!D){r0.clear();return}let F=C4();delete F[D];let $=Object.keys(F);if($.length>0)r0.store={...r0.store,accounts:F,activeAccount:$[0]};else r0.clear()}function Q_(){r0.clear()}function v0(){return!!YD().apiKey}function B_(){return r0.path}function V9(){let D=C4(),F=z9();return Object.entries(D).map(([$,J])=>({username:J.username||$,email:J.email,githubUsername:J.githubUsername,active:$===F}))}function Y_(D,F){let $=C4();$[D]=F,r0.store={...r0.store,accounts:$,activeAccount:D}}function X_(D){let F=C4();if(F[D])return r0.store={...r0.store,activeAccount:D},F[D];for(let[$,J]of Object.entries(F))if(J.githubUsername===D)return r0.store={...r0.store,activeAccount:$},J;return null}var kJ="https://nemar-api-dev.shirazi-10f.workers.dev",xj0,r0,JK0;var KF=P(()=>{ux();F_();xj0=l1.object({apiKey:l1.string().optional(),apiUrl:l1.string().url().default(kJ),username:l1.string().optional(),email:l1.string().email().optional(),githubUsername:l1.string().optional(),sandboxCompleted:l1.boolean().optional(),sandboxDatasetId:l1.string().optional()}),r0=new OJ({projectName:"nemar",schema:{activeAccount:{type:"string"},accounts:{type:"object"},apiKey:{type:"string"},apiUrl:{type:"string",default:kJ},username:{type:"string"},email:{type:"string"},githubUsername:{type:"string"},sandboxCompleted:{type:"boolean"},sandboxDatasetId:{type:"string"}},...process.env.NEMAR_CONFIG_DIR?{cwd:process.env.NEMAR_CONFIG_DIR}:{}}),JK0=["apiKey","apiUrl","username","email","githubUsername","sandboxCompleted","sandboxDatasetId"];QK0()});var W_;var G_=P(()=>{W_={name:"nemar-cli",version:"0.7.13-dev.420",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","docs:generate":"bun run scripts/generate-docs.ts","docs:serve":"mkdocs serve","docs:build":"mkdocs build",prepare:"husky",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://nemar-cli.pages.dev",engines:{bun:">=1.0.0"},files:["dist","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1",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"}}});var vJ;var rG=P(()=>{G_();vJ=W_.version});function p0(D){if(D instanceof Error)return D.message;return String(D)}function H_(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(YK0)return tG;return YD().apiUrl||tG}async function a(D,F={},$=!1){let J=`${H_()}${D}`,Q={"Content-Type":"application/json","X-CLI-Version":vJ,...F.headers};if($){let X=YD();if(!X.apiKey&&$===!0)throw new i(401,"Not authenticated. Run 'nemar auth login' first.");if(X.apiKey)Q.Authorization=`Bearer ${X.apiKey}`}let B;try{B=await fetch(J,{...F,headers:Q})}catch(X){throw new i(0,`Network error: Could not connect to ${H_()}`,{originalError:X instanceof Error?X.message:String(X)})}let Y;try{Y=await B.json()}catch{throw new i(B.status,`Invalid response from server (status ${B.status})`)}if(!B.ok)throw new i(B.status,Y.error||Y.message||"Request failed",Y.details);return Y}async function q_(D){return a(`/auth/check-username?username=${encodeURIComponent(D)}`)}async function K_(D){return a(`/auth/check-github?username=${encodeURIComponent(D)}`)}async function E_(D){return a("/auth/signup",{method:"POST",body:JSON.stringify(D)})}async function z_(D){return a("/auth/login",{method:"POST",body:JSON.stringify({api_key:D})})}async function V_(D){return a("/auth/resend-verification",{method:"POST",body:JSON.stringify({email:D})})}async function Z_(D,F){return a("/auth/retrieve-key",{method:"POST",body:JSON.stringify({email:D,password:F})})}async function U_(D){return a("/auth/request-key-regeneration",{method:"POST",body:JSON.stringify({email:D})})}async function xJ(){return a("/users/me",{},!0)}async function A_(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let J=$.toString()?`?${$.toString()}`:"";return a(`/admin/users${J}`,{},!0)}async function L_(D){return a(`/admin/approve/${D}`,{method:"POST"},!0)}async function M_(D){return a(`/admin/revoke/${D}`,{method:"POST"},!0)}async function N_(D,F){return a(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function C_(D){return a(`/admin/regenerate-iam/${D}`,{method:"POST"},!0)}async function eG(D,F){return a(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function R_(D){return a(`/datasets/${D}/publish`,{method:"POST"},!0)}async function O_(D){return a(`/admin/datasets/${D}/ci`,{},!0)}async function EF(D){return a(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function w_(D){return a(`/datasets/${D}/ci/status`,{},!0)}async function T_(D){return a(`/datasets/${D}/manifest`,{},!0)}async function j_(D,F){return a(`/datasets/${D}/manifest/${F}`,{},!0)}function P_(D){let F=D;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 I_(D=!1){let $=await a(`/datasets${D?"?mine=true":""}`,{},D?!0:"optional");return $.datasets=$.datasets.map(P_),$}async function cD(D){let F=await a(`/datasets/${D}`,{},"optional");return P_(F.dataset)}async function S_(D){return a(`/datasets/${D}/versions`,{},!0)}async function _J(D){return a("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function fJ(D){return a(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function R4(D,F){return a(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function gJ(D,F){return a(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function k_(D,F){return a(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function Z9(D){return a(`/admin/datasets/${D}/doi`,{},!0)}async function DW(D,F){return a(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function v_(D){return a(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function y_(D,F){return a(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function x_(D){return a(`/datasets/${D}/collaborators`,{},!0)}async function __(D){return a("/sandbox/complete",{method:"POST",body:JSON.stringify({dataset_id:D})},!0)}async function f_(){return a("/sandbox/reset",{method:"POST"},!0)}async function g_(){return a("/sandbox/status",{},!0)}async function hJ(D){return a(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function h_(D){return a(`/datasets/${D}/publish/status`,{},!0)}async function b_(D){return a(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function u_(D){let F=D?`?status=${D}`:"";return a(`/admin/publish/requests${F}`,{},!0)}async function m_(D,F){return a(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}async function bJ(D,F=!1,$=!1,J=!1){let Q,B,Y=[];do{if(B=await a(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:F,sandbox:$,s3_lock_offset:Q,skip_ci_check:J})},!0),B.step_results)Y.push(...B.step_results);if(B.hasMore&&B.s3_lock_offset!==void 0)Q=B.s3_lock_offset;else break}while(B.hasMore);if(Y.length>0)B.step_results=Y;return B}async function l_(D,F){return a(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}async function p_(D){return a(`/admin/datasets/${D}/files`,{},!0)}async function d_(D){let F=0,$=0,J=[],Q=0,B=!0;while(B){let Y=await a(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({offset:F})},!0);if($+=Y.locked,J.push(...Y.failed),Q=Y.total,B=Y.hasMore,B)F+=40}return{locked:$,total:Q,failed:J}}async function c_(D){return a(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function n_(D,F=!1){return a(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function i_(D){return a("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function a_(D){return a(`/admin/datasets/${D}/sync`,{method:"POST"},!0)}async function o_(){return a("/admin/sync/status",{},!0)}var tG="https://nemar-api-dev.shirazi-10f.workers.dev",yJ,i,YK0;var O4=P(()=>{KF();rG();yJ=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/;i=class i extends Error{statusCode;details;constructor(D,F,$){super(F);this.statusCode=D;this.details=$;this.name="ApiError"}};YK0=tG.includes("workers.dev")});function V8(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 r_(D){return`${V8(D)}/s`}function XK0(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 GK0(D,F=20){let $=Math.round(D/100*F),J=F-$;return`[${"=".repeat($)}${" ".repeat(J)}]`}class FW{filesCompleted=0;filesTotal;currentFileBytesTransferred=0;currentFileBytesTotal=0;currentFile="";startTime;lastUpdateTime;lastBytesTransferred=0;totalBytesTransferred=0;speedSamples=[];lastRenderedLine="";constructor(D=0){this.filesTotal=D,this.startTime=Date.now(),this.lastUpdateTime=this.startTime}processLine(D){if(D.ok===!0||D.success===!0){if(this.filesCompleted++,this.filesTotal===0||this.filesCompleted>this.filesTotal)this.filesTotal=this.filesCompleted;this.totalBytesTransferred+=this.currentFileBytesTotal||this.currentFileBytesTransferred,this.currentFileBytesTransferred=0,this.currentFileBytesTotal=0,this.render();return}if(D["byte-progress"]!==void 0){if(this.currentFile=D.file||this.currentFile,this.currentFileBytesTransferred=D["byte-progress"],D["total-size"]!==void 0)this.currentFileBytesTotal=D["total-size"];let F=Date.now(),$=(F-this.lastUpdateTime)/1000;if($>0.5){let Q=(this.totalBytesTransferred+this.currentFileBytesTransferred-this.lastBytesTransferred)/$;if(Q>0){if(this.speedSamples.push(Q),this.speedSamples.length>5)this.speedSamples.shift()}this.lastBytesTransferred=this.totalBytesTransferred+this.currentFileBytesTransferred,this.lastUpdateTime=F}this.render()}}incrementFilesCompleted(){if(this.filesCompleted++,this.filesTotal===0)this.filesTotal=this.filesCompleted}setFilesTotal(D){this.filesTotal=D}render(){let D=this.speedSamples.length>0?this.speedSamples.reduce((Y,X)=>Y+X,0)/this.speedSamples.length:0,F=this.totalBytesTransferred+this.currentFileBytesTransferred,$=this.filesTotal>0?Math.round(this.filesCompleted/this.filesTotal*100):0,J=GK0($),Q=this.filesTotal>0?`${this.filesCompleted}/${this.filesTotal} files`:`${this.filesCompleted} files`,B=`${J} ${$}% ${Q}`;if(F>0)B+=` | ${V8(F)}`;if(D>0)B+=` | ${r_(D)}`;if(D>0&&this.currentFileBytesTotal>0){let X=(this.currentFileBytesTotal-this.currentFileBytesTransferred)/D;if(X>0)B+=` | ETA ${XK0(X)}`}if(B!==this.lastRenderedLine)process.stderr.write(`\r${H.cyan(B)}${" ".repeat(10)}`),this.lastRenderedLine=B}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?`${r_(this.totalBytesTransferred/F)}`:"",J=[`${D} file${D!==1?"s":""} downloaded`,this.totalBytesTransferred>0?V8(this.totalBytesTransferred):"",$].filter(Boolean).join(" | ");process.stderr.write(`${H.green(J)}
|
|
92
|
-
`)}}}var $W=P(()=>{N1()});import{existsSync as Df,statSync as WK0}from"fs";import{join as JW}from"path";var{spawn:Ff}=globalThis.Bun;async function g(D,F={}){let $=Ff({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(),B=await $.exited;return{stdout:J,stderr:Q,exitCode:B}}function t_(D){return D.split(".").map((F)=>{let $=Number.parseInt(F.replace(/[^0-9]/g,""),10);return Number.isNaN($)?0:$})}function HK0(D,F){let $=t_(D),J=t_(F);for(let Q=0;Q<Math.max($.length,J.length);Q++){let B=$[Q]||0,Y=J[Q]||0;if(B>Y)return!0;if(B<Y)return!1}return!0}async function $f(){try{let{stdout:F,exitCode:$,stderr:J}=await g(["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+)/),B=Q?Q[1]:void 0;if(!B)console.warn("Could not parse git-annex version from output:",F);return{installed:!0,version:B,minVersion:"10.0",compatible:B?HK0(B,"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 qK0(){if(process.env.GH_TOKEN)return{accessible:!0,username:"token-auth",useHttps:!0};try{let{stdout:D,stderr:F}=await g(["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}}}function Jf(){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 uJ(){let[D,F]=await Promise.all([$f(),qK0()]),$=[];if(!D.installed)$.push(`git-annex is not installed. Install: ${Jf()}`);else if(D.compatible===!1)$.push(`git-annex version ${D.version} is too old. Required: >= ${D.minVersion}`);if(!F.accessible){if(!(await Bf()).token)$.push("GitHub authentication not configured. Either authenticate with gh CLI ('gh auth login') or configure SSH ('nemar auth setup-ssh').")}return{gitAnnex:D,githubSSH:F,allPassed:$.length===0,errors:$}}async function p8(D){if(!Df(JW(D,".git")))return!1;try{let{exitCode:F}=await g(["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 zF(D,F={}){if(!F.force&&await p8(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 g(["git","init",D],{...Object.keys($).length>0?{env:$}:{}});if(Q!==0)return{success:!1,error:J.trim()||"Failed to initialize git repository"};let{stderr:B,exitCode:Y}=await g(["git","annex","init"],{cwd:D,...Object.keys($).length>0?{env:$}:{}});if(Y!==0)return{success:!1,error:B.trim()||"Failed to initialize git-annex"};let{exitCode:X}=await g(["git","annex","adjust","--unlock"],{cwd:D,...Object.keys($).length>0?{env:$}:{}});if(X!==0)console.warn("Could not switch to unlocked mode; data files will be symlinks");return{success:!0}}catch($){return{success:!1,error:$.message}}}async function Qf(D){try{let{exitCode:F,stderr:$}=await g(["git","annex","info"],{cwd:D});if(F===0)return{success:!0};if($.includes("First run: git-annex init")){let{stderr:J,exitCode:Q}=await g(["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 VF(D,F){let J=F||"include=*.edf or include=*.bdf or include=*.set or include=*.fif or include=*.vhdr or include=*.eeg or include=*.cnt or include=*.fdt or largerthan=100kb";try{let{stderr:Q,exitCode:B}=await g(["git","annex","config","--set","annex.largefiles",J],{cwd:D});if(B!==0)return{success:!1,error:Q.trim()||"Failed to configure largefiles"};return{success:!0}}catch(Q){return{success:!1,error:Q.message}}}async function U9(D,F="."){try{let{stderr:$,exitCode:J}=await g(["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 nD(D){return{accessKeyId:D.access_key_id,secretAccessKey:D.secret_access_key,sessionToken:D.session_token}}async function w4(D,F,$){let J=["git","annex","initremote",F.name,"type=S3","encryption=none",`bucket=${F.bucket}`,`fileprefix=${F.prefix.replace(/\/$/,"")}/`,`datacenter=${F.region}`,"signature=v4","autoenable=true","protocol=https"];if(F.publicUrl)J.push(`publicurl=${F.publicUrl}`);let Q={AWS_ACCESS_KEY_ID:$.accessKeyId,AWS_SECRET_ACCESS_KEY:$.secretAccessKey};if($.sessionToken)Q.AWS_SESSION_TOKEN=$.sessionToken;try{let{stderr:B,exitCode:Y}=await g(J,{cwd:D,env:Q});if(Y!==0){if(B.includes("already exists")){let X=await g(["git","annex","enableremote",F.name],{cwd:D,env:Q});if(X.exitCode===0)return{success:!0};return{success:!1,error:X.stderr.trim()}}return{success:!1,error:B.trim()||"Failed to configure S3 remote"}}return{success:!0}}catch(B){return{success:!1,error:B.message}}}async function A1(D){let{join:F}=await import("path"),{readdirSync:$,unlinkSync:J}=await import("fs"),Q=F(D,".git","annex","creds"),B;try{B=$(Q)}catch(Y){if(Y.code==="ENOENT")return;console.warn(`Warning: Could not read ${Q}: ${Y.message}`);return}for(let Y of B)try{J(F(Q,Y))}catch(X){console.warn(`Warning: Could not delete ${Y}: ${X.message}`)}}async function ZF(D,F="nemar-s3",$){try{let J={};if($){if(J.AWS_ACCESS_KEY_ID=$.accessKeyId,J.AWS_SECRET_ACCESS_KEY=$.secretAccessKey,$.sessionToken)J.AWS_SESSION_TOKEN=$.sessionToken}let{stderr:Q,exitCode:B}=await g(["git","annex","enableremote",F],{cwd:D,...Object.keys(J).length>0&&{env:Object.fromEntries(Object.entries({...process.env,...J}).filter((Y)=>Y[1]!=null))}});if(B===0)return{success:!0,enabled:!0};if(Q.includes("there is no special remote named")||Q.includes("not a special remote")||Q.includes("Unknown remote")||Q.includes("not found"))return{success:!0,enabled:!1};return{success:!1,enabled:!1,error:Q.trim()}}catch(J){return{success:!1,enabled:!1,error:J.message}}}async function KK0(){try{let{exitCode:D,stderr:F}=await g(["ssh","-T","-o","BatchMode=yes","-o","ConnectTimeout=5","git@github.com"]),$=F.includes("successfully authenticated");if(!$)console.warn("SSH test to github.com failed:",{exitCode:D,stderr:F.trim().slice(0,500)});return{works:$,error:$?void 0:F.trim().slice(0,500)}}catch(D){let F=D instanceof Error?D.message:String(D);return console.warn("SSH test exception:",F),{works:!1,error:F}}}async function Bf(){try{let{stdout:D,exitCode:F,stderr:$}=await g(["gh","auth","token"]);if(F!==0)return console.warn("gh CLI returned non-zero exit code:",F),console.warn("stderr:",$),{token:null,error:`gh auth token failed: ${$.trim()||"unknown error"}`};if(!D.trim())return console.warn("gh auth token returned empty output"),{token:null,error:"gh CLI returned empty token"};return{token:D.trim()}}catch(D){let F=D instanceof Error?D.message:String(D);if(console.error("Failed to get GitHub token from gh CLI:",F),F.includes("ENOENT")||F.includes("not found"))return{token:null,error:"gh CLI not installed (command not found)"};return{token:null,error:`gh CLI error: ${F}`}}}async function mJ(D){try{let{stdout:F,exitCode:$,stderr:J}=await g(["gh","api","user","--jq",".login"]);if($!==0){if(J.includes("not logged in")||J.includes("auth login"))return{authenticated:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};return{authenticated:!1,error:`gh CLI error: ${J.trim()||"unknown error"}`}}let Q=F.trim();if(!Q)return{authenticated:!1,error:"gh CLI returned empty username"};if(D){let B=Q.toLowerCase()===D.toLowerCase();return{authenticated:!0,username:Q,matches:B,error:B?void 0:`gh CLI authenticated as '${Q}', expected '${D}'`}}return{authenticated:!0,username:Q}}catch(F){let $=F instanceof Error?F.message:String(F);if($.includes("ENOENT")||$.includes("not found"))return{authenticated:!1,error:"gh CLI not installed. Install from https://cli.github.com/"};return{authenticated:!1,error:`Failed to verify gh CLI: ${$}`}}}async function lJ(D){if(!/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(D))return{accepted:!1,error:`Invalid repository format: ${D}`};let{stdout:F,exitCode:$,stderr:J}=await g(["gh","api","/user/repository_invitations"]);if($!==0){if(J.includes("not logged in")||J.includes("auth login"))return{accepted:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};if(J.includes("API rate limit")||J.includes("403"))return{accepted:!1,error:"GitHub API rate limit exceeded. Please try again in a few minutes."};if(J.includes("ENOENT")||J.includes("not found"))return{accepted:!1,error:"gh CLI not installed. Install from https://cli.github.com/"};return{accepted:!1,error:`Failed to list invitations: ${J.trim()||"unknown error"}`}}let Q=null;try{Q=JSON.parse(F||"[]").find((W)=>W.repository.full_name===D)?.id??null}catch(X){let G=X instanceof Error?X.message:String(X);return console.error("Failed to parse GitHub invitations response:",G),console.error(" Raw response (first 500 chars):",(F||"").slice(0,500)),{accepted:!1,error:`Failed to parse GitHub API response: ${G}`}}if(!Q){let{exitCode:X}=await g(["gh","api",`/repos/${D}`,"--silent"]);if(X===0)return{accepted:!0,alreadyCollaborator:!0};return{accepted:!1,error:`No pending invitation found for ${D}. You may need to accept it manually via GitHub.`}}let{exitCode:B,stderr:Y}=await g(["gh","api","--method","PATCH",`/user/repository_invitations/${Q}`]);if(B!==0)return{accepted:!1,error:`Failed to accept invitation: ${Y.trim()||"unknown error"}`};return{accepted:!0}}async function f6(D,F,$="origin"){let J=F;if(process.env.GH_TOKEN&&F.startsWith("git@github.com:")){let Q=process.env.GH_TOKEN.trim();if(!Q||/\s/.test(Q))return{success:!1,error:"GH_TOKEN environment variable is set but appears malformed (empty or contains whitespace)"};J=`https://github.com/${F.replace("git@github.com:","")}`,await g(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${Q}'`],{cwd:D})}else if(F.startsWith("git@github.com:")){let Q=F.replace("git@github.com:",""),B=await Bf();if(B.token)J=`https://github.com/${Q}`,await g(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${B.token}'`],{cwd:D});else{let Y=await KK0();if(Y.works)J=F;else return{success:!1,error:`GitHub authentication not configured.
|
|
91
|
+
deps: ${$}}`};var MB0={keyword:"dependencies",type:"object",schemaType:"object",error:hS.error,code(D){let[F,$]=NB0(D);fS(D,F),gS(D,$)}};function NB0({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 fS(D,F=D.schema){let{gen:$,data:J,it:Q}=D;if(Object.keys(F).length===0)return;let B=$.let("missing");for(let Y in F){let X=F[Y];if(X.length===0)continue;let G=(0,i5.propertyInData)($,J,Y,Q.opts.ownProperties);if(D.setParams({property:Y,depsCount:X.length,deps:X.join(", ")}),Q.allErrors)$.if(G,()=>{for(let W of X)(0,i5.checkReportMissingProp)(D,W)});else $.if($G._`${G} && (${(0,i5.checkMissingProp)(D,X,B)})`),(0,i5.reportMissingProp)(D,B),$.else()}}hS.validatePropertyDeps=fS;function gS(D,F=D.schema){let{gen:$,data:J,keyword:Q,it:B}=D,Y=$.name("valid");for(let X in F){if((0,LB0.alwaysValidSchema)(B,F[X]))continue;$.if((0,i5.propertyInData)($,J,X,B.opts.ownProperties),()=>{let G=D.subschema({keyword:Q,schemaProp:X},Y);D.mergeValidEvaluated(G,Y)},()=>$.var(Y,!0)),D.ok(Y)}}hS.validateSchemaDeps=gS;hS.default=MB0});var pS=E((lS)=>{Object.defineProperty(lS,"__esModule",{value:!0});var mS=F0(),OB0=z0(),wB0={message:"property name must be valid",params:({params:D})=>mS._`{propertyName: ${D.propertyName}}`},TB0={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:wB0,code(D){let{gen:F,schema:$,data:J,it:Q}=D;if((0,OB0.alwaysValidSchema)(Q,$))return;let B=F.name("valid");F.forIn("key",J,(Y)=>{D.setParams({propertyName:Y}),D.subschema({keyword:"propertyNames",data:Y,dataTypes:["string"],propertyName:Y,compositeRule:!0},B),F.if((0,mS.not)(B),()=>{if(D.error(!0),!Q.allErrors)F.break()})}),D.ok(B)}};lS.default=TB0});var JG=E((dS)=>{Object.defineProperty(dS,"__esModule",{value:!0});var $J=z1(),x1=F0(),PB0=E1(),JJ=z0(),IB0={message:"must NOT have additional properties",params:({params:D})=>x1._`{additionalProperty: ${D.additionalProperty}}`},SB0={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:IB0,code(D){let{gen:F,schema:$,parentSchema:J,data:Q,errsCount:B,it:Y}=D;if(!B)throw Error("ajv implementation error");let{allErrors:X,opts:G}=Y;if(Y.props=!0,G.removeAdditional!=="all"&&(0,JJ.alwaysValidSchema)(Y,$))return;let W=(0,$J.allSchemaProperties)(J.properties),q=(0,$J.allSchemaProperties)(J.patternProperties);K(),D.ok(x1._`${B} === ${PB0.default.errors}`);function K(){F.forIn("key",Q,(M)=>{if(!W.length&&!q.length)U(M);else F.if(Z(M),()=>U(M))})}function Z(M){let L;if(W.length>8){let C=(0,JJ.schemaRefOrVal)(Y,J.properties,"properties");L=(0,$J.isOwnProperty)(F,C,M)}else if(W.length)L=(0,x1.or)(...W.map((C)=>x1._`${M} === ${C}`));else L=x1.nil;if(q.length)L=(0,x1.or)(L,...q.map((C)=>x1._`${(0,$J.usePattern)(D,C)}.test(${M})`));return(0,x1.not)(L)}function z(M){F.code(x1._`delete ${Q}[${M}]`)}function U(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,JJ.alwaysValidSchema)(Y,$)){let L=F.name("valid");if(G.removeAdditional==="failing")A(M,L,!1),F.if((0,x1.not)(L),()=>{D.reset(),z(M)});else if(A(M,L),!X)F.if((0,x1.not)(L),()=>F.break())}}function A(M,L,C){let O={keyword:"additionalProperties",dataProp:M,dataPropType:JJ.Type.Str};if(C===!1)Object.assign(O,{compositeRule:!0,createErrors:!1,allErrors:!1});D.subschema(O,L)}}};dS.default=SB0});var aS=E((iS)=>{Object.defineProperty(iS,"__esModule",{value:!0});var vB0=m3(),cS=z1(),QG=z0(),nS=JG(),yB0={keyword:"properties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,parentSchema:J,data:Q,it:B}=D;if(B.opts.removeAdditional==="all"&&J.additionalProperties===void 0)nS.default.code(new vB0.KeywordCxt(B,nS.default,"additionalProperties"));let Y=(0,cS.allSchemaProperties)($);for(let K of Y)B.definedProperties.add(K);if(B.opts.unevaluated&&Y.length&&B.props!==!0)B.props=QG.mergeEvaluated.props(F,(0,QG.toHash)(Y),B.props);let X=Y.filter((K)=>!(0,QG.alwaysValidSchema)(B,$[K]));if(X.length===0)return;let G=F.name("valid");for(let K of X){if(W(K))q(K);else{if(F.if((0,cS.propertyInData)(F,Q,K,B.opts.ownProperties)),q(K),!B.allErrors)F.else().var(G,!0);F.endIf()}D.it.definedProperties.add(K),D.ok(G)}function W(K){return B.opts.useDefaults&&!B.compositeRule&&$[K].default!==void 0}function q(K){D.subschema({keyword:"properties",schemaProp:K,dataProp:K},G)}}};iS.default=yB0});var eS=E((tS)=>{Object.defineProperty(tS,"__esModule",{value:!0});var oS=z1(),QJ=F0(),sS=z0(),rS=z0(),_B0={keyword:"patternProperties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,data:J,parentSchema:Q,it:B}=D,{opts:Y}=B,X=(0,oS.allSchemaProperties)($),G=X.filter((A)=>(0,sS.alwaysValidSchema)(B,$[A]));if(X.length===0||G.length===X.length&&(!B.opts.unevaluated||B.props===!0))return;let W=Y.strictSchema&&!Y.allowMatchingProperties&&Q.properties,q=F.name("valid");if(B.props!==!0&&!(B.props instanceof QJ.Name))B.props=(0,rS.evaluatedPropsToName)(F,B.props);let{props:K}=B;Z();function Z(){for(let A of X){if(W)z(A);if(B.allErrors)U(A);else F.var(q,!0),U(A),F.if(q)}}function z(A){for(let M in W)if(new RegExp(A).test(M))(0,sS.checkStrictMode)(B,`property ${M} matches pattern ${A} (use allowMatchingProperties)`)}function U(A){F.forIn("key",J,(M)=>{F.if(QJ._`${(0,oS.usePattern)(D,A)}.test(${M})`,()=>{let L=G.includes(A);if(!L)D.subschema({keyword:"patternProperties",schemaProp:A,dataProp:M,dataPropType:rS.Type.Str},q);if(B.opts.unevaluated&&K!==!0)F.assign(QJ._`${K}[${M}]`,!0);else if(!L&&!B.allErrors)F.if((0,QJ.not)(q),()=>F.break())})})}}};tS.default=_B0});var Fk=E((Dk)=>{Object.defineProperty(Dk,"__esModule",{value:!0});var gB0=z0(),hB0={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(D){let{gen:F,schema:$,it:J}=D;if((0,gB0.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"}};Dk.default=hB0});var Jk=E(($k)=>{Object.defineProperty($k,"__esModule",{value:!0});var uB0=z1(),mB0={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:uB0.validateUnion,error:{message:"must match a schema in anyOf"}};$k.default=mB0});var Bk=E((Qk)=>{Object.defineProperty(Qk,"__esModule",{value:!0});var BJ=F0(),pB0=z0(),dB0={message:"must match exactly one schema in oneOf",params:({params:D})=>BJ._`{passingSchemas: ${D.passing}}`},cB0={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:dB0,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 B=$,Y=F.let("valid",!1),X=F.let("passing",null),G=F.name("_valid");D.setParams({passing:X}),F.block(W),D.result(Y,()=>D.reset(),()=>D.error(!0));function W(){B.forEach((q,K)=>{let Z;if((0,pB0.alwaysValidSchema)(Q,q))F.var(G,!0);else Z=D.subschema({keyword:"oneOf",schemaProp:K,compositeRule:!0},G);if(K>0)F.if(BJ._`${G} && ${Y}`).assign(Y,!1).assign(X,BJ._`[${X}, ${K}]`).else();F.if(G,()=>{if(F.assign(Y,!0),F.assign(X,K),Z)D.mergeEvaluated(Z,BJ.Name)})})}}};Qk.default=cB0});var Xk=E((Yk)=>{Object.defineProperty(Yk,"__esModule",{value:!0});var iB0=z0(),aB0={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((B,Y)=>{if((0,iB0.alwaysValidSchema)(J,B))return;let X=D.subschema({keyword:"allOf",schemaProp:Y},Q);D.ok(Q),D.mergeEvaluated(X)})}};Yk.default=aB0});var qk=E((Hk)=>{Object.defineProperty(Hk,"__esModule",{value:!0});var YJ=F0(),Wk=z0(),sB0={message:({params:D})=>YJ.str`must match "${D.ifClause}" schema`,params:({params:D})=>YJ._`{failingKeyword: ${D.ifClause}}`},rB0={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:sB0,code(D){let{gen:F,parentSchema:$,it:J}=D;if($.then===void 0&&$.else===void 0)(0,Wk.checkStrictMode)(J,'"if" without "then" and "else" is ignored');let Q=Gk(J,"then"),B=Gk(J,"else");if(!Q&&!B)return;let Y=F.let("valid",!0),X=F.name("_valid");if(G(),D.reset(),Q&&B){let q=F.let("ifClause");D.setParams({ifClause:q}),F.if(X,W("then",q),W("else",q))}else if(Q)F.if(X,W("then"));else F.if((0,YJ.not)(X),W("else"));D.pass(Y,()=>D.error(!0));function G(){let q=D.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},X);D.mergeEvaluated(q)}function W(q,K){return()=>{let Z=D.subschema({keyword:q},X);if(F.assign(Y,X),D.mergeValidEvaluated(Z,Y),K)F.assign(K,YJ._`${q}`);else D.setParams({ifClause:q})}}}};function Gk(D,F){let $=D.schema[F];return $!==void 0&&!(0,Wk.alwaysValidSchema)(D,$)}Hk.default=rB0});var Ek=E((Kk)=>{Object.defineProperty(Kk,"__esModule",{value:!0});var eB0=z0(),DY0={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:D,parentSchema:F,it:$}){if(F.if===void 0)(0,eB0.checkStrictMode)($,`"${D}" without "if" is ignored`)}};Kk.default=DY0});var BG=E((zk)=>{Object.defineProperty(zk,"__esModule",{value:!0});var $Y0=DG(),JY0=SS(),QY0=FG(),BY0=yS(),YY0=_S(),XY0=FJ(),GY0=pS(),WY0=JG(),HY0=aS(),qY0=eS(),KY0=Fk(),EY0=Jk(),zY0=Bk(),VY0=Xk(),ZY0=qk(),UY0=Ek();function AY0(D=!1){let F=[KY0.default,EY0.default,zY0.default,VY0.default,ZY0.default,UY0.default,GY0.default,WY0.default,XY0.default,HY0.default,qY0.default];if(D)F.push(JY0.default,BY0.default);else F.push($Y0.default,QY0.default);return F.push(YY0.default),F}zk.default=AY0});var XG=E((Uk)=>{Object.defineProperty(Uk,"__esModule",{value:!0});Uk.dynamicAnchor=void 0;var YG=F0(),MY0=E1(),Vk=g5(),NY0=a$(),CY0={keyword:"$dynamicAnchor",schemaType:"string",code:(D)=>Zk(D,D.schema)};function Zk(D,F){let{gen:$,it:J}=D;J.schemaEnv.root.dynamicAnchors[F]=!0;let Q=YG._`${MY0.default.dynamicAnchors}${(0,YG.getProperty)(F)}`,B=J.errSchemaPath==="#"?J.validateName:RY0(D);$.if(YG._`!${Q}`,()=>$.assign(Q,B))}Uk.dynamicAnchor=Zk;function RY0(D){let{schemaEnv:F,schema:$,self:J}=D.it,{root:Q,baseId:B,localRefs:Y,meta:X}=F.root,{schemaId:G}=J.opts,W=new Vk.SchemaEnv({schema:$,schemaId:G,root:Q,baseId:B,localRefs:Y,meta:X});return Vk.compileSchema.call(J,W),(0,NY0.getValidate)(D,W)}Uk.default=CY0});var GG=E((Ck)=>{Object.defineProperty(Ck,"__esModule",{value:!0});Ck.dynamicRef=void 0;var Lk=F0(),wY0=E1(),Mk=a$(),TY0={keyword:"$dynamicRef",schemaType:"string",code:(D)=>Nk(D,D.schema)};function Nk(D,F){let{gen:$,keyword:J,it:Q}=D;if(F[0]!=="#")throw Error(`"${J}" only supports hash fragment reference`);let B=F.slice(1);if(Q.allErrors)Y();else{let G=$.let("valid",!1);Y(G),D.ok(G)}function Y(G){if(Q.schemaEnv.root.dynamicAnchors[B]){let W=$.let("_v",Lk._`${wY0.default.dynamicAnchors}${(0,Lk.getProperty)(B)}`);$.if(W,X(W,G),X(Q.validateName,G))}else X(Q.validateName,G)()}function X(G,W){return W?()=>$.block(()=>{(0,Mk.callRef)(D,G),$.let(W,!0)}):()=>(0,Mk.callRef)(D,G)}}Ck.dynamicRef=Nk;Ck.default=TY0});var wk=E((Ok)=>{Object.defineProperty(Ok,"__esModule",{value:!0});var PY0=XG(),IY0=z0(),SY0={keyword:"$recursiveAnchor",schemaType:"boolean",code(D){if(D.schema)(0,PY0.dynamicAnchor)(D,"");else(0,IY0.checkStrictMode)(D.it,"$recursiveAnchor: false is ignored")}};Ok.default=SY0});var jk=E((Tk)=>{Object.defineProperty(Tk,"__esModule",{value:!0});var vY0=GG(),yY0={keyword:"$recursiveRef",schemaType:"string",code:(D)=>(0,vY0.dynamicRef)(D,D.schema)};Tk.default=yY0});var Ik=E((Pk)=>{Object.defineProperty(Pk,"__esModule",{value:!0});var _Y0=XG(),fY0=GG(),gY0=wk(),hY0=jk(),bY0=[_Y0.default,fY0.default,gY0.default,hY0.default];Pk.default=bY0});var vk=E((kk)=>{Object.defineProperty(kk,"__esModule",{value:!0});var Sk=FJ(),mY0={keyword:"dependentRequired",type:"object",schemaType:"object",error:Sk.error,code:(D)=>(0,Sk.validatePropertyDeps)(D)};kk.default=mY0});var xk=E((yk)=>{Object.defineProperty(yk,"__esModule",{value:!0});var pY0=FJ(),dY0={keyword:"dependentSchemas",type:"object",schemaType:"object",code:(D)=>(0,pY0.validateSchemaDeps)(D)};yk.default=dY0});var fk=E((_k)=>{Object.defineProperty(_k,"__esModule",{value:!0});var nY0=z0(),iY0={keyword:["maxContains","minContains"],type:"array",schemaType:"number",code({keyword:D,parentSchema:F,it:$}){if(F.contains===void 0)(0,nY0.checkStrictMode)($,`"${D}" without "contains" is ignored`)}};_k.default=iY0});var hk=E((gk)=>{Object.defineProperty(gk,"__esModule",{value:!0});var oY0=vk(),sY0=xk(),rY0=fk(),tY0=[oY0.default,sY0.default,rY0.default];gk.default=tY0});var mk=E((uk)=>{Object.defineProperty(uk,"__esModule",{value:!0});var I6=F0(),bk=z0(),D20=E1(),F20={message:"must NOT have unevaluated properties",params:({params:D})=>I6._`{unevaluatedProperty: ${D.unevaluatedProperty}}`},$20={keyword:"unevaluatedProperties",type:"object",schemaType:["boolean","object"],trackErrors:!0,error:F20,code(D){let{gen:F,schema:$,data:J,errsCount:Q,it:B}=D;if(!Q)throw Error("ajv implementation error");let{allErrors:Y,props:X}=B;if(X instanceof I6.Name)F.if(I6._`${X} !== true`,()=>F.forIn("key",J,(K)=>F.if(W(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)));B.props=!0,D.ok(I6._`${Q} === ${D20.default.errors}`);function G(K){if($===!1){if(D.setParams({unevaluatedProperty:K}),D.error(),!Y)F.break();return}if(!(0,bk.alwaysValidSchema)(B,$)){let Z=F.name("valid");if(D.subschema({keyword:"unevaluatedProperties",dataProp:K,dataPropType:bk.Type.Str},Z),!Y)F.if((0,I6.not)(Z),()=>F.break())}}function W(K,Z){return I6._`!${K} || !${K}[${Z}]`}function q(K,Z){let z=[];for(let U in K)if(K[U]===!0)z.push(I6._`${Z} !== ${U}`);return(0,I6.and)(...z)}}};uk.default=$20});var dk=E((pk)=>{Object.defineProperty(pk,"__esModule",{value:!0});var E4=F0(),lk=z0(),Q20={message:({params:{len:D}})=>E4.str`must NOT have more than ${D} items`,params:({params:{len:D}})=>E4._`{limit: ${D}}`},B20={keyword:"unevaluatedItems",type:"array",schemaType:["boolean","object"],error:Q20,code(D){let{gen:F,schema:$,data:J,it:Q}=D,B=Q.items||0;if(B===!0)return;let Y=F.const("len",E4._`${J}.length`);if($===!1)D.setParams({len:B}),D.fail(E4._`${Y} > ${B}`);else if(typeof $=="object"&&!(0,lk.alwaysValidSchema)(Q,$)){let G=F.var("valid",E4._`${Y} <= ${B}`);F.if((0,E4.not)(G),()=>X(G,B)),D.ok(G)}Q.items=!0;function X(G,W){F.forRange("i",W,Y,(q)=>{if(D.subschema({keyword:"unevaluatedItems",dataProp:q,dataPropType:lk.Type.Num},G),!Q.allErrors)F.if((0,E4.not)(G),()=>F.break())})}}};pk.default=B20});var nk=E((ck)=>{Object.defineProperty(ck,"__esModule",{value:!0});var X20=mk(),G20=dk(),W20=[X20.default,G20.default];ck.default=W20});var ak=E((ik)=>{Object.defineProperty(ik,"__esModule",{value:!0});var e0=F0(),q20={message:({schemaCode:D})=>e0.str`must match format "${D}"`,params:({schemaCode:D})=>e0._`{format: ${D}}`},K20={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:q20,code(D,F){let{gen:$,data:J,$data:Q,schema:B,schemaCode:Y,it:X}=D,{opts:G,errSchemaPath:W,schemaEnv:q,self:K}=X;if(!G.validateFormats)return;if(Q)Z();else z();function Z(){let U=$.scopeValue("formats",{ref:K.formats,code:G.code.formats}),A=$.const("fDef",e0._`${U}[${Y}]`),M=$.let("fType"),L=$.let("format");$.if(e0._`typeof ${A} == "object" && !(${A} instanceof RegExp)`,()=>$.assign(M,e0._`${A}.type || "string"`).assign(L,e0._`${A}.validate`),()=>$.assign(M,e0._`"string"`).assign(L,A)),D.fail$data((0,e0.or)(C(),O()));function C(){if(G.strictSchema===!1)return e0.nil;return e0._`${Y} && !${L}`}function O(){let y=q.$async?e0._`(${A}.async ? await ${L}(${J}) : ${L}(${J}))`:e0._`${L}(${J})`,w=e0._`(typeof ${L} == "function" ? ${y} : ${L}.test(${J}))`;return e0._`${L} && ${L} !== true && ${M} === ${F} && !${w}`}}function z(){let U=K.formats[B];if(!U){C();return}if(U===!0)return;let[A,M,L]=O(U);if(A===F)D.pass(y());function C(){if(G.strictSchema===!1){K.logger.warn(w());return}throw Error(w());function w(){return`unknown format "${B}" ignored in schema at path "${W}"`}}function O(w){let I=w instanceof RegExp?(0,e0.regexpCode)(w):G.code.formats?e0._`${G.code.formats}${(0,e0.getProperty)(B)}`:void 0,T=$.scopeValue("formats",{key:B,ref:w,code:I});if(typeof w=="object"&&!(w instanceof RegExp))return[w.type||"string",w.validate,e0._`${T}.validate`];return["string",w,T]}function y(){if(typeof U=="object"&&!(U instanceof RegExp)&&U.async){if(!q.$async)throw Error("async format in sync schema");return e0._`await ${L}(${J})`}return typeof M=="function"?e0._`${L}(${J})`:e0._`${L}.test(${J})`}}}};ik.default=K20});var WG=E((ok)=>{Object.defineProperty(ok,"__esModule",{value:!0});var z20=ak(),V20=[z20.default];ok.default=V20});var HG=E((sk)=>{Object.defineProperty(sk,"__esModule",{value:!0});sk.contentVocabulary=sk.metadataVocabulary=void 0;sk.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];sk.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var Dv=E((ek)=>{Object.defineProperty(ek,"__esModule",{value:!0});var A20=oX(),L20=tX(),M20=BG(),N20=Ik(),C20=hk(),R20=nk(),O20=WG(),tk=HG(),w20=[N20.default,A20.default,L20.default,(0,M20.default)(!0),O20.default,tk.metadataVocabulary,tk.contentVocabulary,C20.default,R20.default];ek.default=w20});var Qv=E(($v)=>{Object.defineProperty($v,"__esModule",{value:!0});$v.DiscrError=void 0;var Fv;(function(D){D.Tag="tag",D.Mapping="mapping"})(Fv||($v.DiscrError=Fv={}))});var KG=E((Yv)=>{Object.defineProperty(Yv,"__esModule",{value:!0});var c3=F0(),qG=Qv(),Bv=g5(),j20=l3(),P20=z0(),I20={message:({params:{discrError:D,tagName:F}})=>D===qG.DiscrError.Tag?`tag "${F}" must be string`:`value of tag "${F}" must be in oneOf`,params:({params:{discrError:D,tag:F,tagName:$}})=>c3._`{error: ${D}, tag: ${$}, tagValue: ${F}}`},S20={keyword:"discriminator",type:"object",schemaType:"object",error:I20,code(D){let{gen:F,data:$,schema:J,parentSchema:Q,it:B}=D,{oneOf:Y}=Q;if(!B.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(!Y)throw Error("discriminator: requires oneOf keyword");let G=F.let("valid",!1),W=F.const("tag",c3._`${$}${(0,c3.getProperty)(X)}`);F.if(c3._`typeof ${W} == "string"`,()=>q(),()=>D.error(!1,{discrError:qG.DiscrError.Tag,tag:W,tagName:X})),D.ok(G);function q(){let z=Z();F.if(!1);for(let U in z)F.elseIf(c3._`${W} === ${U}`),F.assign(G,K(z[U]));F.else(),D.error(!1,{discrError:qG.DiscrError.Mapping,tag:W,tagName:X}),F.endIf()}function K(z){let U=F.name("valid"),A=D.subschema({keyword:"oneOf",schemaProp:z},U);return D.mergeEvaluated(A,c3.Name),U}function Z(){var z;let U={},A=L(Q),M=!0;for(let y=0;y<Y.length;y++){let w=Y[y];if((w===null||w===void 0?void 0:w.$ref)&&!(0,P20.schemaHasRulesButRef)(w,B.self.RULES)){let T=w.$ref;if(w=Bv.resolveRef.call(B.self,B.schemaEnv.root,B.baseId,T),w instanceof Bv.SchemaEnv)w=w.schema;if(w===void 0)throw new j20.default(B.opts.uriResolver,B.baseId,T)}let I=(z=w===null||w===void 0?void 0:w.properties)===null||z===void 0?void 0:z[X];if(typeof I!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${X}"`);M=M&&(A||L(w)),C(I,y)}if(!M)throw Error(`discriminator: "${X}" must be required`);return U;function L({required:y}){return Array.isArray(y)&&y.includes(X)}function C(y,w){if(y.const)O(y.const,w);else if(y.enum)for(let I of y.enum)O(I,w);else throw Error(`discriminator: "properties/${X}" must have "const" or "enum"`)}function O(y,w){if(typeof y!="string"||y in U)throw Error(`discriminator: "${X}" values must be unique strings`);U[y]=w}}}};Yv.default=S20});var Xv=E((ww0,v20)=>{v20.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 Gv=E((Tw0,y20)=>{y20.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 Wv=E((jw0,x20)=>{x20.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 Hv=E((Pw0,_20)=>{_20.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 qv=E((Iw0,f20)=>{f20.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 Kv=E((Sw0,g20)=>{g20.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 Ev=E((kw0,h20)=>{h20.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 zv=E((vw0,b20)=>{b20.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 Zv=E((Vv)=>{Object.defineProperty(Vv,"__esModule",{value:!0});var u20=Xv(),m20=Gv(),l20=Wv(),p20=Hv(),d20=qv(),c20=Kv(),n20=Ev(),i20=zv(),a20=["/properties"];function o20(D){return[u20,m20,l20,p20,d20,F(this,c20),n20,F(this,i20)].forEach(($)=>this.addMetaSchema($,void 0,!1)),this;function F($,J){return D?$.$dataMetaSchema(J,a20):J}}Vv.default=o20});var Uv=E((lD,zG)=>{Object.defineProperty(lD,"__esModule",{value:!0});lD.MissingRefError=lD.ValidationError=lD.CodeGen=lD.Name=lD.nil=lD.stringify=lD.str=lD._=lD.KeywordCxt=lD.Ajv2020=void 0;var r20=aX(),t20=Dv(),e20=KG(),DX0=Zv(),EG="https://json-schema.org/draft/2020-12/schema";class a5 extends r20.default{constructor(D={}){super({...D,dynamicRef:!0,next:!0,unevaluated:!0})}_addVocabularies(){if(super._addVocabularies(),t20.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(e20.default)}_addDefaultMetaSchema(){super._addDefaultMetaSchema();let{$data:D,meta:F}=this.opts;if(!F)return;DX0.default.call(this,D),this.refs["http://json-schema.org/schema"]=EG}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(EG)?EG:void 0)}}lD.Ajv2020=a5;zG.exports=lD=a5;zG.exports.Ajv2020=a5;Object.defineProperty(lD,"__esModule",{value:!0});lD.default=a5;var FX0=m3();Object.defineProperty(lD,"KeywordCxt",{enumerable:!0,get:function(){return FX0.KeywordCxt}});var n3=F0();Object.defineProperty(lD,"_",{enumerable:!0,get:function(){return n3._}});Object.defineProperty(lD,"str",{enumerable:!0,get:function(){return n3.str}});Object.defineProperty(lD,"stringify",{enumerable:!0,get:function(){return n3.stringify}});Object.defineProperty(lD,"nil",{enumerable:!0,get:function(){return n3.nil}});Object.defineProperty(lD,"Name",{enumerable:!0,get:function(){return n3.Name}});Object.defineProperty(lD,"CodeGen",{enumerable:!0,get:function(){return n3.CodeGen}});var $X0=_5();Object.defineProperty(lD,"ValidationError",{enumerable:!0,get:function(){return $X0.default}});var JX0=l3();Object.defineProperty(lD,"MissingRefError",{enumerable:!0,get:function(){return JX0.default}})});var jv=E((wv)=>{Object.defineProperty(wv,"__esModule",{value:!0});wv.formatNames=wv.fastFormats=wv.fullFormats=void 0;function H8(D,F){return{validate:D,compare:F}}wv.fullFormats={date:H8(Nv,AG),time:H8(ZG(!0),LG),"date-time":H8(Av(!0),Rv),"iso-time":H8(ZG(),Cv),"iso-date-time":H8(Av(),Ov),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:qX0,"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:AX0,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:KX0,int32:{type:"number",validate:VX0},int64:{type:"number",validate:ZX0},float:{type:"number",validate:Mv},double:{type:"number",validate:Mv},password:!0,binary:!0};wv.fastFormats={...wv.fullFormats,date:H8(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,AG),time:H8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,LG),"date-time":H8(/^\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,Rv),"iso-time":H8(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,Cv),"iso-date-time":H8(/^\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,Ov),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};wv.formatNames=Object.keys(wv.fullFormats);function YX0(D){return D%4===0&&(D%100!==0||D%400===0)}var XX0=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,GX0=[0,31,28,31,30,31,30,31,31,30,31,30,31];function Nv(D){let F=XX0.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&&YX0($)?29:GX0[J])}function AG(D,F){if(!(D&&F))return;if(D>F)return 1;if(D<F)return-1;return 0}var VG=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function ZG(D){return function($){let J=VG.exec($);if(!J)return!1;let Q=+J[1],B=+J[2],Y=+J[3],X=J[4],G=J[5]==="-"?-1:1,W=+(J[6]||0),q=+(J[7]||0);if(W>23||q>59||D&&!X)return!1;if(Q<=23&&B<=59&&Y<60)return!0;let K=B-q*G,Z=Q-W*G-(K<0?1:0);return(Z===23||Z===-1)&&(K===59||K===-1)&&Y<61}}function LG(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 Cv(D,F){if(!(D&&F))return;let $=VG.exec(D),J=VG.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 UG=/t|\s/i;function Av(D){let F=ZG(D);return function(J){let Q=J.split(UG);return Q.length===2&&Nv(Q[0])&&F(Q[1])}}function Rv(D,F){if(!(D&&F))return;let $=new Date(D).valueOf(),J=new Date(F).valueOf();if(!($&&J))return;return $-J}function Ov(D,F){if(!(D&&F))return;let[$,J]=D.split(UG),[Q,B]=F.split(UG),Y=AG($,Q);if(Y===void 0)return;return Y||LG(J,B)}var WX0=/\/|:/,HX0=/^(?:[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 qX0(D){return WX0.test(D)&&HX0.test(D)}var Lv=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function KX0(D){return Lv.lastIndex=0,Lv.test(D)}var EX0=-2147483648,zX0=2147483647;function VX0(D){return Number.isInteger(D)&&D<=zX0&&D>=EX0}function ZX0(D){return Number.isInteger(D)}function Mv(){return!0}var UX0=/[^\\]\\Z/;function AX0(D){if(UX0.test(D))return!1;try{return new RegExp(D),!0}catch(F){return!1}}});var Sv=E((Iv)=>{Object.defineProperty(Iv,"__esModule",{value:!0});var MX0=oX(),NX0=tX(),CX0=BG(),RX0=WG(),Pv=HG(),OX0=[MX0.default,NX0.default,(0,CX0.default)(),RX0.default,Pv.metadataVocabulary,Pv.contentVocabulary];Iv.default=OX0});var kv=E((dw0,TX0)=>{TX0.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 yv=E((pD,NG)=>{Object.defineProperty(pD,"__esModule",{value:!0});pD.MissingRefError=pD.ValidationError=pD.CodeGen=pD.Name=pD.nil=pD.stringify=pD.str=pD._=pD.KeywordCxt=pD.Ajv=void 0;var jX0=aX(),PX0=Sv(),IX0=KG(),vv=kv(),SX0=["/properties"],XJ="http://json-schema.org/draft-07/schema";class o5 extends jX0.default{_addVocabularies(){if(super._addVocabularies(),PX0.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(IX0.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let D=this.opts.$data?this.$dataMetaSchema(vv,SX0):vv;this.addMetaSchema(D,XJ,!1),this.refs["http://json-schema.org/schema"]=XJ}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(XJ)?XJ:void 0)}}pD.Ajv=o5;NG.exports=pD=o5;NG.exports.Ajv=o5;Object.defineProperty(pD,"__esModule",{value:!0});pD.default=o5;var kX0=m3();Object.defineProperty(pD,"KeywordCxt",{enumerable:!0,get:function(){return kX0.KeywordCxt}});var i3=F0();Object.defineProperty(pD,"_",{enumerable:!0,get:function(){return i3._}});Object.defineProperty(pD,"str",{enumerable:!0,get:function(){return i3.str}});Object.defineProperty(pD,"stringify",{enumerable:!0,get:function(){return i3.stringify}});Object.defineProperty(pD,"nil",{enumerable:!0,get:function(){return i3.nil}});Object.defineProperty(pD,"Name",{enumerable:!0,get:function(){return i3.Name}});Object.defineProperty(pD,"CodeGen",{enumerable:!0,get:function(){return i3.CodeGen}});var vX0=_5();Object.defineProperty(pD,"ValidationError",{enumerable:!0,get:function(){return vX0.default}});var yX0=l3();Object.defineProperty(pD,"MissingRefError",{enumerable:!0,get:function(){return yX0.default}})});var _v=E((xv)=>{Object.defineProperty(xv,"__esModule",{value:!0});xv.formatLimitDefinition=void 0;var fX0=yv(),_1=F0(),S6=_1.operators,GJ={formatMaximum:{okStr:"<=",ok:S6.LTE,fail:S6.GT},formatMinimum:{okStr:">=",ok:S6.GTE,fail:S6.LT},formatExclusiveMaximum:{okStr:"<",ok:S6.LT,fail:S6.GTE},formatExclusiveMinimum:{okStr:">",ok:S6.GT,fail:S6.LTE}},gX0={message:({keyword:D,schemaCode:F})=>_1.str`should be ${GJ[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>_1._`{comparison: ${GJ[D].okStr}, limit: ${F}}`};xv.formatLimitDefinition={keyword:Object.keys(GJ),type:"string",schemaType:"string",$data:!0,error:gX0,code(D){let{gen:F,data:$,schemaCode:J,keyword:Q,it:B}=D,{opts:Y,self:X}=B;if(!Y.validateFormats)return;let G=new fX0.KeywordCxt(B,X.RULES.all.format.definition,"format");if(G.$data)W();else q();function W(){let Z=F.scopeValue("formats",{ref:X.formats,code:Y.code.formats}),z=F.const("fmt",_1._`${Z}[${G.schemaCode}]`);D.fail$data((0,_1.or)(_1._`typeof ${z} != "object"`,_1._`${z} instanceof RegExp`,_1._`typeof ${z}.compare != "function"`,K(z)))}function q(){let Z=G.schema,z=X.formats[Z];if(!z||z===!0)return;if(typeof z!="object"||z instanceof RegExp||typeof z.compare!="function")throw Error(`"${Q}": format "${Z}" does not define "compare" function`);let U=F.scopeValue("formats",{key:Z,ref:z,code:Y.code.formats?_1._`${Y.code.formats}${(0,_1.getProperty)(Z)}`:void 0});D.fail$data(K(U))}function K(Z){return _1._`${Z}.compare(${$}, ${J}) ${GJ[Q].fail} 0`}},dependencies:["format"]};var hX0=(D)=>{return D.addKeyword(xv.formatLimitDefinition),D};xv.default=hX0});var bv=E((s5,hv)=>{Object.defineProperty(s5,"__esModule",{value:!0});var a3=jv(),uX0=_v(),RG=F0(),fv=new RG.Name("fullFormats"),mX0=new RG.Name("fastFormats"),OG=(D,F={keywords:!0})=>{if(Array.isArray(F))return gv(D,F,a3.fullFormats,fv),D;let[$,J]=F.mode==="fast"?[a3.fastFormats,mX0]:[a3.fullFormats,fv],Q=F.formats||a3.formatNames;if(gv(D,Q,$,J),F.keywords)(0,uX0.default)(D);return D};OG.get=(D,F="full")=>{let J=(F==="fast"?a3.fastFormats:a3.fullFormats)[D];if(!J)throw Error(`Unknown format "${D}"`);return J};function gv(D,F,$,J){var Q,B;(Q=(B=D.opts.code).formats)!==null&&Q!==void 0||(B.formats=RG._`require("ajv-formats/dist/formats").${J}`);for(let Y of F)D.addFormat(Y,$[Y])}hv.exports=s5=OG;Object.defineProperty(s5,"__esModule",{value:!0});s5.default=OG});var lX0=(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:B=!0}=F;if($<0||J<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!Q&&!B)throw Error("Both `before` and `after` are false, function wouldn't be called.");let Y,X,G,W=function(...q){let K=this,Z=()=>{if(Y=void 0,X)clearTimeout(X),X=void 0;if(B)G=D.apply(K,q)},z=()=>{if(X=void 0,Y)clearTimeout(Y),Y=void 0;if(B)G=D.apply(K,q)},U=Q&&!Y;if(clearTimeout(Y),Y=setTimeout(Z,$),J>0&&J!==Number.POSITIVE_INFINITY&&!X)X=setTimeout(z,J);if(U)G=D.apply(K,q);return G};return M5(W,D),W.cancel=()=>{if(Y)clearTimeout(Y),Y=void 0;if(X)clearTimeout(X),X=void 0},W},wG;var uv=P(()=>{_2();wG=lX0});var r5=E(($T0,mv)=>{var pX0=Number.MAX_SAFE_INTEGER||9007199254740991,dX0=["major","premajor","minor","preminor","patch","prepatch","prerelease"];mv.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:pX0,RELEASE_TYPES:dX0,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var t5=E((JT0,lv)=>{var cX0=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};lv.exports=cX0});var o3=E((q8,pv)=>{var{MAX_SAFE_COMPONENT_LENGTH:TG,MAX_SAFE_BUILD_LENGTH:nX0,MAX_LENGTH:iX0}=r5(),aX0=t5();q8=pv.exports={};var oX0=q8.re=[],sX0=q8.safeRe=[],x=q8.src=[],rX0=q8.safeSrc=[],_=q8.t={},tX0=0,jG="[a-zA-Z0-9-]",eX0=[["\\s",1],["\\d",iX0],[jG,nX0]],DG0=(D)=>{for(let[F,$]of eX0)D=D.split(`${F}*`).join(`${F}{0,${$}}`).split(`${F}+`).join(`${F}{1,${$}}`);return D},$0=(D,F,$)=>{let J=DG0(F),Q=tX0++;aX0(D,Q,F),_[D]=Q,x[Q]=F,rX0[Q]=J,oX0[Q]=new RegExp(F,$?"g":void 0),sX0[Q]=new RegExp(J,$?"g":void 0)};$0("NUMERICIDENTIFIER","0|[1-9]\\d*");$0("NUMERICIDENTIFIERLOOSE","\\d+");$0("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${jG}*`);$0("MAINVERSION",`(${x[_.NUMERICIDENTIFIER]})\\.(${x[_.NUMERICIDENTIFIER]})\\.(${x[_.NUMERICIDENTIFIER]})`);$0("MAINVERSIONLOOSE",`(${x[_.NUMERICIDENTIFIERLOOSE]})\\.(${x[_.NUMERICIDENTIFIERLOOSE]})\\.(${x[_.NUMERICIDENTIFIERLOOSE]})`);$0("PRERELEASEIDENTIFIER",`(?:${x[_.NONNUMERICIDENTIFIER]}|${x[_.NUMERICIDENTIFIER]})`);$0("PRERELEASEIDENTIFIERLOOSE",`(?:${x[_.NONNUMERICIDENTIFIER]}|${x[_.NUMERICIDENTIFIERLOOSE]})`);$0("PRERELEASE",`(?:-(${x[_.PRERELEASEIDENTIFIER]}(?:\\.${x[_.PRERELEASEIDENTIFIER]})*))`);$0("PRERELEASELOOSE",`(?:-?(${x[_.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${x[_.PRERELEASEIDENTIFIERLOOSE]})*))`);$0("BUILDIDENTIFIER",`${jG}+`);$0("BUILD",`(?:\\+(${x[_.BUILDIDENTIFIER]}(?:\\.${x[_.BUILDIDENTIFIER]})*))`);$0("FULLPLAIN",`v?${x[_.MAINVERSION]}${x[_.PRERELEASE]}?${x[_.BUILD]}?`);$0("FULL",`^${x[_.FULLPLAIN]}$`);$0("LOOSEPLAIN",`[v=\\s]*${x[_.MAINVERSIONLOOSE]}${x[_.PRERELEASELOOSE]}?${x[_.BUILD]}?`);$0("LOOSE",`^${x[_.LOOSEPLAIN]}$`);$0("GTLT","((?:<|>)?=?)");$0("XRANGEIDENTIFIERLOOSE",`${x[_.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);$0("XRANGEIDENTIFIER",`${x[_.NUMERICIDENTIFIER]}|x|X|\\*`);$0("XRANGEPLAIN",`[v=\\s]*(${x[_.XRANGEIDENTIFIER]})(?:\\.(${x[_.XRANGEIDENTIFIER]})(?:\\.(${x[_.XRANGEIDENTIFIER]})(?:${x[_.PRERELEASE]})?${x[_.BUILD]}?)?)?`);$0("XRANGEPLAINLOOSE",`[v=\\s]*(${x[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${x[_.XRANGEIDENTIFIERLOOSE]})(?:\\.(${x[_.XRANGEIDENTIFIERLOOSE]})(?:${x[_.PRERELEASELOOSE]})?${x[_.BUILD]}?)?)?`);$0("XRANGE",`^${x[_.GTLT]}\\s*${x[_.XRANGEPLAIN]}$`);$0("XRANGELOOSE",`^${x[_.GTLT]}\\s*${x[_.XRANGEPLAINLOOSE]}$`);$0("COERCEPLAIN",`(^|[^\\d])(\\d{1,${TG}})(?:\\.(\\d{1,${TG}}))?(?:\\.(\\d{1,${TG}}))?`);$0("COERCE",`${x[_.COERCEPLAIN]}(?:$|[^\\d])`);$0("COERCEFULL",x[_.COERCEPLAIN]+`(?:${x[_.PRERELEASE]})?(?:${x[_.BUILD]})?(?:$|[^\\d])`);$0("COERCERTL",x[_.COERCE],!0);$0("COERCERTLFULL",x[_.COERCEFULL],!0);$0("LONETILDE","(?:~>?)");$0("TILDETRIM",`(\\s*)${x[_.LONETILDE]}\\s+`,!0);q8.tildeTrimReplace="$1~";$0("TILDE",`^${x[_.LONETILDE]}${x[_.XRANGEPLAIN]}$`);$0("TILDELOOSE",`^${x[_.LONETILDE]}${x[_.XRANGEPLAINLOOSE]}$`);$0("LONECARET","(?:\\^)");$0("CARETTRIM",`(\\s*)${x[_.LONECARET]}\\s+`,!0);q8.caretTrimReplace="$1^";$0("CARET",`^${x[_.LONECARET]}${x[_.XRANGEPLAIN]}$`);$0("CARETLOOSE",`^${x[_.LONECARET]}${x[_.XRANGEPLAINLOOSE]}$`);$0("COMPARATORLOOSE",`^${x[_.GTLT]}\\s*(${x[_.LOOSEPLAIN]})$|^$`);$0("COMPARATOR",`^${x[_.GTLT]}\\s*(${x[_.FULLPLAIN]})$|^$`);$0("COMPARATORTRIM",`(\\s*)${x[_.GTLT]}\\s*(${x[_.LOOSEPLAIN]}|${x[_.XRANGEPLAIN]})`,!0);q8.comparatorTrimReplace="$1$2$3";$0("HYPHENRANGE",`^\\s*(${x[_.XRANGEPLAIN]})\\s+-\\s+(${x[_.XRANGEPLAIN]})\\s*$`);$0("HYPHENRANGELOOSE",`^\\s*(${x[_.XRANGEPLAINLOOSE]})\\s+-\\s+(${x[_.XRANGEPLAINLOOSE]})\\s*$`);$0("STAR","(<|>)?=?\\s*\\*");$0("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");$0("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var WJ=E((QT0,dv)=>{var FG0=Object.freeze({loose:!0}),$G0=Object.freeze({}),JG0=(D)=>{if(!D)return $G0;if(typeof D!=="object")return FG0;return D};dv.exports=JG0});var PG=E((BT0,iv)=>{var cv=/^[0-9]+$/,nv=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let $=cv.test(D),J=cv.test(F);if($&&J)D=+D,F=+F;return D===F?0:$&&!J?-1:J&&!$?1:D<F?-1:1},QG0=(D,F)=>nv(F,D);iv.exports={compareIdentifiers:nv,rcompareIdentifiers:QG0}});var wD=E((YT0,ov)=>{var HJ=t5(),{MAX_LENGTH:av,MAX_SAFE_INTEGER:qJ}=r5(),{safeRe:KJ,t:EJ}=o3(),BG0=WJ(),{compareIdentifiers:IG}=PG();class f1{constructor(D,F){if(F=BG0(F),D instanceof f1)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>av)throw TypeError(`version is longer than ${av} characters`);HJ("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let $=D.trim().match(F.loose?KJ[EJ.LOOSE]:KJ[EJ.FULL]);if(!$)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+$[1],this.minor=+$[2],this.patch=+$[3],this.major>qJ||this.major<0)throw TypeError("Invalid major version");if(this.minor>qJ||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>qJ||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<qJ)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(HJ("SemVer.compare",this.version,this.options,D),!(D instanceof f1)){if(typeof D==="string"&&D===this.version)return 0;D=new f1(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof f1))D=new f1(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 f1))D=new f1(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(HJ("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 IG($,J)}while(++F)}compareBuild(D){if(!(D instanceof f1))D=new f1(D,this.options);let F=0;do{let $=this.build[F],J=D.build[F];if(HJ("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 IG($,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?KJ[EJ.PRERELEASELOOSE]:KJ[EJ.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(IG(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}}ov.exports=f1});var z4=E((XT0,rv)=>{var sv=wD(),YG0=(D,F,$=!1)=>{if(D instanceof sv)return D;try{return new sv(D,F)}catch(J){if(!$)return null;throw J}};rv.exports=YG0});var ev=E((GT0,tv)=>{var XG0=z4(),GG0=(D,F)=>{let $=XG0(D,F);return $?$.version:null};tv.exports=GG0});var Fy=E((WT0,Dy)=>{var WG0=z4(),HG0=(D,F)=>{let $=WG0(D.trim().replace(/^[=v]+/,""),F);return $?$.version:null};Dy.exports=HG0});var Qy=E((HT0,Jy)=>{var $y=wD(),qG0=(D,F,$,J,Q)=>{if(typeof $==="string")Q=J,J=$,$=void 0;try{return new $y(D instanceof $y?D.version:D,$).inc(F,J,Q).version}catch(B){return null}};Jy.exports=qG0});var Xy=E((qT0,Yy)=>{var By=z4(),KG0=(D,F)=>{let $=By(D,null,!0),J=By(F,null,!0),Q=$.compare(J);if(Q===0)return null;let B=Q>0,Y=B?$:J,X=B?J:$,G=!!Y.prerelease.length;if(!!X.prerelease.length&&!G){if(!X.patch&&!X.minor)return"major";if(X.compareMain(Y)===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"};Yy.exports=KG0});var Wy=E((KT0,Gy)=>{var EG0=wD(),zG0=(D,F)=>new EG0(D,F).major;Gy.exports=zG0});var qy=E((ET0,Hy)=>{var VG0=wD(),ZG0=(D,F)=>new VG0(D,F).minor;Hy.exports=ZG0});var Ey=E((zT0,Ky)=>{var UG0=wD(),AG0=(D,F)=>new UG0(D,F).patch;Ky.exports=AG0});var Vy=E((VT0,zy)=>{var LG0=z4(),MG0=(D,F)=>{let $=LG0(D,F);return $&&$.prerelease.length?$.prerelease:null};zy.exports=MG0});var Z1=E((ZT0,Uy)=>{var Zy=wD(),NG0=(D,F,$)=>new Zy(D,$).compare(new Zy(F,$));Uy.exports=NG0});var Ly=E((UT0,Ay)=>{var CG0=Z1(),RG0=(D,F,$)=>CG0(F,D,$);Ay.exports=RG0});var Ny=E((AT0,My)=>{var OG0=Z1(),wG0=(D,F)=>OG0(D,F,!0);My.exports=wG0});var zJ=E((LT0,Ry)=>{var Cy=wD(),TG0=(D,F,$)=>{let J=new Cy(D,$),Q=new Cy(F,$);return J.compare(Q)||J.compareBuild(Q)};Ry.exports=TG0});var wy=E((MT0,Oy)=>{var jG0=zJ(),PG0=(D,F)=>D.sort(($,J)=>jG0($,J,F));Oy.exports=PG0});var jy=E((NT0,Ty)=>{var IG0=zJ(),SG0=(D,F)=>D.sort(($,J)=>IG0(J,$,F));Ty.exports=SG0});var e5=E((CT0,Py)=>{var kG0=Z1(),vG0=(D,F,$)=>kG0(D,F,$)>0;Py.exports=vG0});var VJ=E((RT0,Iy)=>{var yG0=Z1(),xG0=(D,F,$)=>yG0(D,F,$)<0;Iy.exports=xG0});var SG=E((OT0,Sy)=>{var _G0=Z1(),fG0=(D,F,$)=>_G0(D,F,$)===0;Sy.exports=fG0});var kG=E((wT0,ky)=>{var gG0=Z1(),hG0=(D,F,$)=>gG0(D,F,$)!==0;ky.exports=hG0});var ZJ=E((TT0,vy)=>{var bG0=Z1(),uG0=(D,F,$)=>bG0(D,F,$)>=0;vy.exports=uG0});var UJ=E((jT0,yy)=>{var mG0=Z1(),lG0=(D,F,$)=>mG0(D,F,$)<=0;yy.exports=lG0});var vG=E((PT0,xy)=>{var pG0=SG(),dG0=kG(),cG0=e5(),nG0=ZJ(),iG0=VJ(),aG0=UJ(),oG0=(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 pG0(D,$,J);case"!=":return dG0(D,$,J);case">":return cG0(D,$,J);case">=":return nG0(D,$,J);case"<":return iG0(D,$,J);case"<=":return aG0(D,$,J);default:throw TypeError(`Invalid operator: ${F}`)}};xy.exports=oG0});var fy=E((IT0,_y)=>{var sG0=wD(),rG0=z4(),{safeRe:AJ,t:LJ}=o3(),tG0=(D,F)=>{if(D instanceof sG0)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?AJ[LJ.COERCEFULL]:AJ[LJ.COERCE]);else{let G=F.includePrerelease?AJ[LJ.COERCERTLFULL]:AJ[LJ.COERCERTL],W;while((W=G.exec(D))&&(!$||$.index+$[0].length!==D.length)){if(!$||W.index+W[0].length!==$.index+$[0].length)$=W;G.lastIndex=W.index+W[1].length+W[2].length}G.lastIndex=-1}if($===null)return null;let J=$[2],Q=$[3]||"0",B=$[4]||"0",Y=F.includePrerelease&&$[5]?`-${$[5]}`:"",X=F.includePrerelease&&$[6]?`+${$[6]}`:"";return rG0(`${J}.${Q}.${B}${Y}${X}`,F)};_y.exports=tG0});var by=E((ST0,hy)=>{class gy{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}}hy.exports=gy});var U1=E((kT0,py)=>{var eG0=/\s+/g;class D9{constructor(D,F){if(F=FW0(F),D instanceof D9)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else return new D9(D.raw,F);if(D instanceof yG)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(eG0," "),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)=>!my(J[0])),this.set.length===0)this.set=[$];else if(this.set.length>1){for(let J of this.set)if(J.length===1&&GW0(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&&YW0)|(this.options.loose&&XW0))+":"+D,J=uy.get($);if(J)return J;let Q=this.options.loose,B=Q?vD[TD.HYPHENRANGELOOSE]:vD[TD.HYPHENRANGE];D=D.replace(B,AW0(this.options.includePrerelease)),f0("hyphen replace",D),D=D.replace(vD[TD.COMPARATORTRIM],JW0),f0("comparator trim",D),D=D.replace(vD[TD.TILDETRIM],QW0),f0("tilde trim",D),D=D.replace(vD[TD.CARETTRIM],BW0),f0("caret trim",D);let Y=D.split(" ").map((q)=>WW0(q,this.options)).join(" ").split(/\s+/).map((q)=>UW0(q,this.options));if(Q)Y=Y.filter((q)=>{return f0("loose invalid filter",q,this.options),!!q.match(vD[TD.COMPARATORLOOSE])});f0("range list",Y);let X=new Map,G=Y.map((q)=>new yG(q,this.options));for(let q of G){if(my(q))return[q];X.set(q.value,q)}if(X.size>1&&X.has(""))X.delete("");let W=[...X.values()];return uy.set($,W),W}intersects(D,F){if(!(D instanceof D9))throw TypeError("a Range is required");return this.set.some(($)=>{return ly($,F)&&D.set.some((J)=>{return ly(J,F)&&$.every((Q)=>{return J.every((B)=>{return Q.intersects(B,F)})})})})}test(D){if(!D)return!1;if(typeof D==="string")try{D=new $W0(D,this.options)}catch(F){return!1}for(let F=0;F<this.set.length;F++)if(LW0(this.set[F],D,this.options))return!0;return!1}}py.exports=D9;var DW0=by(),uy=new DW0,FW0=WJ(),yG=F9(),f0=t5(),$W0=wD(),{safeRe:vD,t:TD,comparatorTrimReplace:JW0,tildeTrimReplace:QW0,caretTrimReplace:BW0}=o3(),{FLAG_INCLUDE_PRERELEASE:YW0,FLAG_LOOSE:XW0}=r5(),my=(D)=>D.value==="<0.0.0-0",GW0=(D)=>D.value==="",ly=(D,F)=>{let $=!0,J=D.slice(),Q=J.pop();while($&&J.length)$=J.every((B)=>{return Q.intersects(B,F)}),Q=J.pop();return $},WW0=(D,F)=>{return D=D.replace(vD[TD.BUILD],""),f0("comp",D,F),D=KW0(D,F),f0("caret",D),D=HW0(D,F),f0("tildes",D),D=zW0(D,F),f0("xrange",D),D=ZW0(D,F),f0("stars",D),D},yD=(D)=>!D||D.toLowerCase()==="x"||D==="*",HW0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>qW0($,F)).join(" ")},qW0=(D,F)=>{let $=F.loose?vD[TD.TILDELOOSE]:vD[TD.TILDE];return D.replace($,(J,Q,B,Y,X)=>{f0("tilde",D,J,Q,B,Y,X);let G;if(yD(Q))G="";else if(yD(B))G=`>=${Q}.0.0 <${+Q+1}.0.0-0`;else if(yD(Y))G=`>=${Q}.${B}.0 <${Q}.${+B+1}.0-0`;else if(X)f0("replaceTilde pr",X),G=`>=${Q}.${B}.${Y}-${X} <${Q}.${+B+1}.0-0`;else G=`>=${Q}.${B}.${Y} <${Q}.${+B+1}.0-0`;return f0("tilde return",G),G})},KW0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>EW0($,F)).join(" ")},EW0=(D,F)=>{f0("caret",D,F);let $=F.loose?vD[TD.CARETLOOSE]:vD[TD.CARET],J=F.includePrerelease?"-0":"";return D.replace($,(Q,B,Y,X,G)=>{f0("caret",D,Q,B,Y,X,G);let W;if(yD(B))W="";else if(yD(Y))W=`>=${B}.0.0${J} <${+B+1}.0.0-0`;else if(yD(X))if(B==="0")W=`>=${B}.${Y}.0${J} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.0${J} <${+B+1}.0.0-0`;else if(G)if(f0("replaceCaret pr",G),B==="0")if(Y==="0")W=`>=${B}.${Y}.${X}-${G} <${B}.${Y}.${+X+1}-0`;else W=`>=${B}.${Y}.${X}-${G} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.${X}-${G} <${+B+1}.0.0-0`;else if(f0("no pr"),B==="0")if(Y==="0")W=`>=${B}.${Y}.${X}${J} <${B}.${Y}.${+X+1}-0`;else W=`>=${B}.${Y}.${X}${J} <${B}.${+Y+1}.0-0`;else W=`>=${B}.${Y}.${X} <${+B+1}.0.0-0`;return f0("caret return",W),W})},zW0=(D,F)=>{return f0("replaceXRanges",D,F),D.split(/\s+/).map(($)=>VW0($,F)).join(" ")},VW0=(D,F)=>{D=D.trim();let $=F.loose?vD[TD.XRANGELOOSE]:vD[TD.XRANGE];return D.replace($,(J,Q,B,Y,X,G)=>{f0("xRange",D,J,Q,B,Y,X,G);let W=yD(B),q=W||yD(Y),K=q||yD(X),Z=K;if(Q==="="&&Z)Q="";if(G=F.includePrerelease?"-0":"",W)if(Q===">"||Q==="<")J="<0.0.0-0";else J="*";else if(Q&&Z){if(q)Y=0;if(X=0,Q===">")if(Q=">=",q)B=+B+1,Y=0,X=0;else Y=+Y+1,X=0;else if(Q==="<=")if(Q="<",q)B=+B+1;else Y=+Y+1;if(Q==="<")G="-0";J=`${Q+B}.${Y}.${X}${G}`}else if(q)J=`>=${B}.0.0${G} <${+B+1}.0.0-0`;else if(K)J=`>=${B}.${Y}.0${G} <${B}.${+Y+1}.0-0`;return f0("xRange return",J),J})},ZW0=(D,F)=>{return f0("replaceStars",D,F),D.trim().replace(vD[TD.STAR],"")},UW0=(D,F)=>{return f0("replaceGTE0",D,F),D.trim().replace(vD[F.includePrerelease?TD.GTE0PRE:TD.GTE0],"")},AW0=(D)=>(F,$,J,Q,B,Y,X,G,W,q,K,Z)=>{if(yD(J))$="";else if(yD(Q))$=`>=${J}.0.0${D?"-0":""}`;else if(yD(B))$=`>=${J}.${Q}.0${D?"-0":""}`;else if(Y)$=`>=${$}`;else $=`>=${$}${D?"-0":""}`;if(yD(W))G="";else if(yD(q))G=`<${+W+1}.0.0-0`;else if(yD(K))G=`<${W}.${+q+1}.0-0`;else if(Z)G=`<=${W}.${q}.${K}-${Z}`;else if(D)G=`<${W}.${q}.${+K+1}-0`;else G=`<=${G}`;return`${$} ${G}`.trim()},LW0=(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(f0(D[J].semver),D[J].semver===yG.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 F9=E((vT0,oy)=>{var $9=Symbol("SemVer ANY");class MJ{static get ANY(){return $9}constructor(D,F){if(F=dy(F),D instanceof MJ)if(D.loose===!!F.loose)return D;else D=D.value;if(D=D.trim().split(/\s+/).join(" "),_G("comparator",D,F),this.options=F,this.loose=!!F.loose,this.parse(D),this.semver===$9)this.value="";else this.value=this.operator+this.semver.version;_G("comp",this)}parse(D){let F=this.options.loose?cy[ny.COMPARATORLOOSE]:cy[ny.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=$9;else this.semver=new iy($[2],this.options.loose)}toString(){return this.value}test(D){if(_G("Comparator.test",D,this.options.loose),this.semver===$9||D===$9)return!0;if(typeof D==="string")try{D=new iy(D,this.options)}catch(F){return!1}return xG(D,this.operator,this.semver,this.options)}intersects(D,F){if(!(D instanceof MJ))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new ay(D.value,F).test(this.value)}else if(D.operator===""){if(D.value==="")return!0;return new ay(this.value,F).test(D.semver)}if(F=dy(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(xG(this.semver,"<",D.semver,F)&&this.operator.startsWith(">")&&D.operator.startsWith("<"))return!0;if(xG(this.semver,">",D.semver,F)&&this.operator.startsWith("<")&&D.operator.startsWith(">"))return!0;return!1}}oy.exports=MJ;var dy=WJ(),{safeRe:cy,t:ny}=o3(),xG=vG(),_G=t5(),iy=wD(),ay=U1()});var J9=E((yT0,sy)=>{var MW0=U1(),NW0=(D,F,$)=>{try{F=new MW0(F,$)}catch(J){return!1}return F.test(D)};sy.exports=NW0});var ty=E((xT0,ry)=>{var CW0=U1(),RW0=(D,F)=>new CW0(D,F).set.map(($)=>$.map((J)=>J.value).join(" ").trim().split(" "));ry.exports=RW0});var Dx=E((_T0,ey)=>{var OW0=wD(),wW0=U1(),TW0=(D,F,$)=>{let J=null,Q=null,B=null;try{B=new wW0(F,$)}catch(Y){return null}return D.forEach((Y)=>{if(B.test(Y)){if(!J||Q.compare(Y)===-1)J=Y,Q=new OW0(J,$)}}),J};ey.exports=TW0});var $x=E((fT0,Fx)=>{var jW0=wD(),PW0=U1(),IW0=(D,F,$)=>{let J=null,Q=null,B=null;try{B=new PW0(F,$)}catch(Y){return null}return D.forEach((Y)=>{if(B.test(Y)){if(!J||Q.compare(Y)===1)J=Y,Q=new jW0(J,$)}}),J};Fx.exports=IW0});var Bx=E((gT0,Qx)=>{var fG=wD(),SW0=U1(),Jx=e5(),kW0=(D,F)=>{D=new SW0(D,F);let $=new fG("0.0.0");if(D.test($))return $;if($=new fG("0.0.0-0"),D.test($))return $;$=null;for(let J=0;J<D.set.length;++J){let Q=D.set[J],B=null;if(Q.forEach((Y)=>{let X=new fG(Y.semver.version);switch(Y.operator){case">":if(X.prerelease.length===0)X.patch++;else X.prerelease.push(0);X.raw=X.format();case"":case">=":if(!B||Jx(X,B))B=X;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${Y.operator}`)}}),B&&(!$||Jx($,B)))$=B}if($&&D.test($))return $;return null};Qx.exports=kW0});var Xx=E((hT0,Yx)=>{var vW0=U1(),yW0=(D,F)=>{try{return new vW0(D,F).range||"*"}catch($){return null}};Yx.exports=yW0});var NJ=E((bT0,qx)=>{var xW0=wD(),Hx=F9(),{ANY:_W0}=Hx,fW0=U1(),gW0=J9(),Gx=e5(),Wx=VJ(),hW0=UJ(),bW0=ZJ(),uW0=(D,F,$,J)=>{D=new xW0(D,J),F=new fW0(F,J);let Q,B,Y,X,G;switch($){case">":Q=Gx,B=hW0,Y=Wx,X=">",G=">=";break;case"<":Q=Wx,B=bW0,Y=Gx,X="<",G="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(gW0(D,F,J))return!1;for(let W=0;W<F.set.length;++W){let q=F.set[W],K=null,Z=null;if(q.forEach((z)=>{if(z.semver===_W0)z=new Hx(">=0.0.0");if(K=K||z,Z=Z||z,Q(z.semver,K.semver,J))K=z;else if(Y(z.semver,Z.semver,J))Z=z}),K.operator===X||K.operator===G)return!1;if((!Z.operator||Z.operator===X)&&B(D,Z.semver))return!1;else if(Z.operator===G&&Y(D,Z.semver))return!1}return!0};qx.exports=uW0});var Ex=E((uT0,Kx)=>{var mW0=NJ(),lW0=(D,F,$)=>mW0(D,F,">",$);Kx.exports=lW0});var Vx=E((mT0,zx)=>{var pW0=NJ(),dW0=(D,F,$)=>pW0(D,F,"<",$);zx.exports=dW0});var Ax=E((lT0,Ux)=>{var Zx=U1(),cW0=(D,F,$)=>{return D=new Zx(D,$),F=new Zx(F,$),D.intersects(F,$)};Ux.exports=cW0});var Mx=E((pT0,Lx)=>{var nW0=J9(),iW0=Z1();Lx.exports=(D,F,$)=>{let J=[],Q=null,B=null,Y=D.sort((q,K)=>iW0(q,K,$));for(let q of Y)if(nW0(q,F,$)){if(B=q,!Q)Q=q}else{if(B)J.push([Q,B]);B=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===Y[0])X.push("*");else if(!K)X.push(`>=${q}`);else if(q===Y[0])X.push(`<=${K}`);else X.push(`${q} - ${K}`);let G=X.join(" || "),W=typeof F.raw==="string"?F.raw:String(F);return G.length<W.length?G:F}});var Tx=E((dT0,wx)=>{var Nx=U1(),hG=F9(),{ANY:gG}=hG,Q9=J9(),bG=Z1(),aW0=(D,F,$={})=>{if(D===F)return!0;D=new Nx(D,$),F=new Nx(F,$);let J=!1;D:for(let Q of D.set){for(let B of F.set){let Y=sW0(Q,B,$);if(J=J||Y!==null,Y)continue D}if(J)return!1}return!0},oW0=[new hG(">=0.0.0-0")],Cx=[new hG(">=0.0.0")],sW0=(D,F,$)=>{if(D===F)return!0;if(D.length===1&&D[0].semver===gG)if(F.length===1&&F[0].semver===gG)return!0;else if($.includePrerelease)D=oW0;else D=Cx;if(F.length===1&&F[0].semver===gG)if($.includePrerelease)return!0;else F=Cx;let J=new Set,Q,B;for(let z of D)if(z.operator===">"||z.operator===">=")Q=Rx(Q,z,$);else if(z.operator==="<"||z.operator==="<=")B=Ox(B,z,$);else J.add(z.semver);if(J.size>1)return null;let Y;if(Q&&B){if(Y=bG(Q.semver,B.semver,$),Y>0)return null;else if(Y===0&&(Q.operator!==">="||B.operator!=="<="))return null}for(let z of J){if(Q&&!Q9(z,String(Q),$))return null;if(B&&!Q9(z,String(B),$))return null;for(let U of F)if(!Q9(z,String(U),$))return!1;return!0}let X,G,W,q,K=B&&!$.includePrerelease&&B.semver.prerelease.length?B.semver:!1,Z=Q&&!$.includePrerelease&&Q.semver.prerelease.length?Q.semver:!1;if(K&&K.prerelease.length===1&&B.operator==="<"&&K.prerelease[0]===0)K=!1;for(let z of F){if(q=q||z.operator===">"||z.operator===">=",W=W||z.operator==="<"||z.operator==="<=",Q){if(Z){if(z.semver.prerelease&&z.semver.prerelease.length&&z.semver.major===Z.major&&z.semver.minor===Z.minor&&z.semver.patch===Z.patch)Z=!1}if(z.operator===">"||z.operator===">="){if(X=Rx(Q,z,$),X===z&&X!==Q)return!1}else if(Q.operator===">="&&!Q9(Q.semver,String(z),$))return!1}if(B){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=Ox(B,z,$),G===z&&G!==B)return!1}else if(B.operator==="<="&&!Q9(B.semver,String(z),$))return!1}if(!z.operator&&(B||Q)&&Y!==0)return!1}if(Q&&W&&!B&&Y!==0)return!1;if(B&&q&&!Q&&Y!==0)return!1;if(Z||K)return!1;return!0},Rx=(D,F,$)=>{if(!D)return F;let J=bG(D.semver,F.semver,$);return J>0?D:J<0?F:F.operator===">"&&D.operator===">="?F:D},Ox=(D,F,$)=>{if(!D)return F;let J=bG(D.semver,F.semver,$);return J<0?D:J>0?F:F.operator==="<"&&D.operator==="<="?F:D};wx.exports=aW0});var Sx=E((cT0,Ix)=>{var uG=o3(),jx=r5(),rW0=wD(),Px=PG(),tW0=z4(),eW0=ev(),DH0=Fy(),FH0=Qy(),$H0=Xy(),JH0=Wy(),QH0=qy(),BH0=Ey(),YH0=Vy(),XH0=Z1(),GH0=Ly(),WH0=Ny(),HH0=zJ(),qH0=wy(),KH0=jy(),EH0=e5(),zH0=VJ(),VH0=SG(),ZH0=kG(),UH0=ZJ(),AH0=UJ(),LH0=vG(),MH0=fy(),NH0=F9(),CH0=U1(),RH0=J9(),OH0=ty(),wH0=Dx(),TH0=$x(),jH0=Bx(),PH0=Xx(),IH0=NJ(),SH0=Ex(),kH0=Vx(),vH0=Ax(),yH0=Mx(),xH0=Tx();Ix.exports={parse:tW0,valid:eW0,clean:DH0,inc:FH0,diff:$H0,major:JH0,minor:QH0,patch:BH0,prerelease:YH0,compare:XH0,rcompare:GH0,compareLoose:WH0,compareBuild:HH0,sort:qH0,rsort:KH0,gt:EH0,lt:zH0,eq:VH0,neq:ZH0,gte:UH0,lte:AH0,cmp:LH0,coerce:MH0,Comparator:NH0,Range:CH0,satisfies:RH0,toComparators:OH0,maxSatisfying:wH0,minSatisfying:TH0,minVersion:jH0,validRange:PH0,outside:IH0,gtr:SH0,ltr:kH0,intersects:vH0,simplifyRange:yH0,subset:xH0,SemVer:rW0,re:uG.re,src:uG.src,tokens:uG.t,SEMVER_SPEC_VERSION:jx.SEMVER_SPEC_VERSION,RELEASE_TYPES:jx.RELEASE_TYPES,compareIdentifiers:Px.compareIdentifiers,rcompareIdentifiers:Px.rcompareIdentifiers}});function vx(D,F,$){if(!D)return!1;if(D.constructor===F)return!0;return _H0.call(D)===$}function yx(D){return vx(D,Uint8Array,"[object Uint8Array]")}function fH0(D){return vx(D,ArrayBuffer,"[object ArrayBuffer]")}function gH0(D){return yx(D)||fH0(D)}function hH0(D){if(!yx(D))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof D}\``)}function bH0(D){if(!gH0(D))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof D}\``)}function mG(D,F){if(D.length===0)return new Uint8Array(0);F??=D.reduce((Q,B)=>Q+B.length,0);let $=new Uint8Array(F),J=0;for(let Q of D)hH0(Q),$.set(Q,J),J+=Q.length;return $}function lG(D,F="utf8"){return bH0(D),kx[F]??=new globalThis.TextDecoder(F),kx[F].decode(D)}function uH0(D){if(typeof D!=="string")throw TypeError(`Expected \`string\`, got \`${typeof D}\``)}function CJ(D){return uH0(D),mH0.encode(D)}var _H0,kx,mH0,nT0;var xx=P(()=>{_H0=Object.prototype.toString;kx={utf8:new globalThis.TextDecoder("utf8")};mH0=new globalThis.TextEncoder;nT0=Array.from({length:256},(D,F)=>F.toString(16).padStart(2,"0"))});import{isDeepStrictEqual as lH0}from"util";import _x from"process";import V4 from"fs";import fx from"path";import B9 from"crypto";import pH0 from"assert";var hx,bx,Z4,dH0,gx="aes-256-cbc",s3=()=>Object.create(null),cH0=(D)=>D!==void 0&&D!==null,nH0=(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`)},RJ="__internal__",pG,OJ;var ux=P(()=>{iT();oT();wj();uv();xx();hx=e(Uv(),1),bx=e(bv(),1),Z4=e(Sx(),1),dH0=bx.default.default,pG=`${RJ}.migrations.version`;OJ=class OJ{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=e2(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 B=new hx.Ajv2020({allErrors:!0,useDefaults:!0,...F.ajvOptions});dH0(B);let Y={...F.rootSchema,type:"object",properties:F.schema};this.#$=B.compile(Y);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=fx.resolve(F.cwd,`${F.configName??"config"}${$}`);let J=this.store,Q=Object.assign(s3(),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{pH0.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 ${RJ} key, as it's used to manage this module internal operations.`);let{store:$}=this,J=(Q,B)=>{if(nH0(Q,B),this.#D.accessPropertiesByDotNotation)s2($,Q,B);else $[Q]=B};if(typeof D==="object"){let Q=D;for(let[B,Y]of Object.entries(Q))J(B,Y)}else J(D,F);this.store=$}has(D){if(this.#D.accessPropertiesByDotNotation)return nT(this.store,D);return D in this.store}reset(...D){for(let F of D)if(cH0(this.#Q[F]))this.set(F,this.#Q[F])}delete(D){let{store:F}=this;if(this.#D.accessPropertiesByDotNotation)cT(F,D);else delete F[D];this.store=F}clear(){this.store=s3();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=V4.readFileSync(this.path,this.#F?null:"utf8"),F=this._encryptData(D),$=this._deserialize(F);return this._validate($),Object.assign(s3(),$)}catch(D){if(D?.code==="ENOENT")return this._ensureDirectory(),s3();if(this.#D.clearInvalidConfig&&D.name==="SyntaxError")return s3();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:lG(D);try{let F=D.slice(0,16),$=B9.pbkdf2Sync(this.#F,F.toString(),1e4,32,"sha512"),J=B9.createDecipheriv(gx,$,F),Q=D.slice(17),B=typeof Q==="string"?CJ(Q):Q;return lG(mG([J.update(B),J.final()]))}catch{}return D.toString()}_handleChange(D,F){let $=D(),J=()=>{let Q=$,B=D();if(lH0(B,Q))return;$=B,F.call(this,B,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(){V4.mkdirSync(fx.dirname(this.path),{recursive:!0})}_write(D){let F=this._serialize(D);if(this.#F){let $=B9.randomBytes(16),J=B9.pbkdf2Sync(this.#F,$.toString(),1e4,32,"sha512"),Q=B9.createCipheriv(gx,J,$);F=mG([$,CJ(":"),Q.update(CJ(F)),Q.final()])}if(_x.env.SNAP)V4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});else try{HX(this.path,F,{mode:this.#D.configFileMode})}catch($){if($?.code==="EXDEV"){V4.writeFileSync(this.path,F,{mode:this.#D.configFileMode});return}throw $}}_watch(){if(this._ensureDirectory(),!V4.existsSync(this.path))this._write(s3());if(_x.platform==="win32")V4.watch(this.path,{persistent:!1},wG(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else V4.watchFile(this.path,{persistent:!1},wG(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(D,F,$){let J=this._get(pG,"0.0.0"),Q=Object.keys(D).filter((Y)=>this._shouldPerformMigration(Y,J,F)),B={...this.store};for(let Y of Q)try{if($)$(this,{fromVersion:J,toVersion:Y,finalVersion:F,versions:Q});let X=D[Y];X?.(this),this._set(pG,Y),J=Y,B={...this.store}}catch(X){throw this.store=B,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${X}`)}if(this._isVersionInRangeFormat(J)||!Z4.default.eq(J,F))this._set(pG,F)}_containsReservedKey(D){if(typeof D==="object"){if(Object.keys(D)[0]===RJ)return!0}if(typeof D!=="string")return!1;if(this.#D.accessPropertiesByDotNotation){if(D.startsWith(`${RJ}.`))return!0;return!1}return!1}_isVersionInRangeFormat(D){return Z4.default.clean(D)===null}_shouldPerformMigration(D,F,$){if(this._isVersionInRangeFormat(D)){if(F!=="0.0.0"&&Z4.default.satisfies(F,D))return!1;return Z4.default.satisfies($,D)}if(Z4.default.lte(D,F))return!1;if(Z4.default.gt(D,$))return!1;return!0}_get(D,F){return dT(this.store,D,F)}_set(D,F){let{store:$}=this;s2($,D,F),this.store=$}}});var V0,dG,S,K8=(D)=>{switch(typeof D){case"undefined":return S.undefined;case"string":return S.string;case"number":return Number.isNaN(D)?S.nan:S.number;case"boolean":return S.boolean;case"function":return S.function;case"bigint":return S.bigint;case"symbol":return S.symbol;case"object":if(Array.isArray(D))return S.array;if(D===null)return S.null;if(D.then&&typeof D.then==="function"&&D.catch&&typeof D.catch==="function")return S.promise;if(typeof Map<"u"&&D instanceof Map)return S.map;if(typeof Set<"u"&&D instanceof Set)return S.set;if(typeof Date<"u"&&D instanceof Date)return S.date;return S.object;default:return S.unknown}};var Y9=P(()=>{(function(D){D.assertEqual=(Q)=>{};function F(Q){}D.assertIs=F;function $(Q){throw Error()}D.assertNever=$,D.arrayToEnum=(Q)=>{let B={};for(let Y of Q)B[Y]=Y;return B},D.getValidEnumValues=(Q)=>{let B=D.objectKeys(Q).filter((X)=>typeof Q[Q[X]]!=="number"),Y={};for(let X of B)Y[X]=Q[X];return D.objectValues(Y)},D.objectValues=(Q)=>{return D.objectKeys(Q).map(function(B){return Q[B]})},D.objectKeys=typeof Object.keys==="function"?(Q)=>Object.keys(Q):(Q)=>{let B=[];for(let Y in Q)if(Object.prototype.hasOwnProperty.call(Q,Y))B.push(Y);return B},D.find=(Q,B)=>{for(let Y of Q)if(B(Y))return Y;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,B=" | "){return Q.map((Y)=>typeof Y==="string"?`'${Y}'`:Y).join(B)}D.joinValues=J,D.jsonStringifyReplacer=(Q,B)=>{if(typeof B==="bigint")return B.toString();return B}})(V0||(V0={}));(function(D){D.mergeShapes=(F,$)=>{return{...F,...$}}})(dG||(dG={}));S=V0.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var j,iH0=(D)=>{return JSON.stringify(D,null,2).replace(/"([^"]+)":/g,"$1:")},dD;var wJ=P(()=>{Y9();j=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"]);dD=class dD 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 B of Q.issues)if(B.code==="invalid_union")B.unionErrors.map(J);else if(B.code==="invalid_return_type")J(B.returnTypeError);else if(B.code==="invalid_arguments")J(B.argumentsError);else if(B.path.length===0)$._errors.push(F(B));else{let Y=$,X=0;while(X<B.path.length){let G=B.path[X];if(X!==B.path.length-1)Y[G]=Y[G]||{_errors:[]};else Y[G]=Y[G]||{_errors:[]},Y[G]._errors.push(F(B));Y=Y[G],X++}}};return J(this),$}static assert(D){if(!(D instanceof dD))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()}};dD.create=(D)=>{return new dD(D)}});var aH0=(D,F)=>{let $;switch(D.code){case j.invalid_type:if(D.received===S.undefined)$="Required";else $=`Expected ${D.expected}, received ${D.received}`;break;case j.invalid_literal:$=`Invalid literal value, expected ${JSON.stringify(D.expected,V0.jsonStringifyReplacer)}`;break;case j.unrecognized_keys:$=`Unrecognized key(s) in object: ${V0.joinValues(D.keys,", ")}`;break;case j.invalid_union:$="Invalid input";break;case j.invalid_union_discriminator:$=`Invalid discriminator value. Expected ${V0.joinValues(D.options)}`;break;case j.invalid_enum_value:$=`Invalid enum value. Expected ${V0.joinValues(D.options)}, received '${D.received}'`;break;case j.invalid_arguments:$="Invalid function arguments";break;case j.invalid_return_type:$="Invalid function return type";break;case j.invalid_date:$="Invalid date";break;case j.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 j.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 j.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 j.custom:$="Invalid input";break;case j.invalid_intersection_types:$="Intersection results could not be merged";break;case j.not_multiple_of:$=`Number must be a multiple of ${D.multipleOf}`;break;case j.not_finite:$="Number must be finite";break;default:$=F.defaultError,V0.assertNever(D)}return{message:$}},b8;var cG=P(()=>{wJ();Y9();b8=aH0});function oH0(D){mx=D}function r3(){return mx}var mx;var TJ=P(()=>{cG();mx=b8});function k(D,F){let $=r3(),J=X9({issueData:F,data:D.data,path:D.path,errorMaps:[D.common.contextualErrorMap,D.schemaErrorMap,$,$===b8?void 0:b8].filter((Q)=>!!Q)});D.common.issues.push(J)}class ND{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 c;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,B=await J.value;$.push({key:Q,value:B})}return ND.mergeObjectSync(D,$)}static mergeObjectSync(D,F){let $={};for(let J of F){let{key:Q,value:B}=J;if(Q.status==="aborted")return c;if(B.status==="aborted")return c;if(Q.status==="dirty")D.dirty();if(B.status==="dirty")D.dirty();if(Q.value!=="__proto__"&&(typeof B.value<"u"||J.alwaysSet))$[Q.value]=B.value}return{status:D.value,value:$}}}var X9=(D)=>{let{data:F,path:$,errorMaps:J,issueData:Q}=D,B=[...$,...Q.path||[]],Y={...Q,path:B};if(Q.message!==void 0)return{...Q,path:B,message:Q.message};let X="",G=J.filter((W)=>!!W).slice().reverse();for(let W of G)X=W(Y,{data:F,defaultError:X}).message;return{...Q,path:B,message:X}},sH0,c,U4=(D)=>({status:"dirty",value:D}),jD=(D)=>({status:"valid",value:D}),jJ=(D)=>D.status==="aborted",PJ=(D)=>D.status==="dirty",k6=(D)=>D.status==="valid",t3=(D)=>typeof Promise<"u"&&D instanceof Promise;var nG=P(()=>{TJ();cG();sH0=[];c=Object.freeze({status:"aborted"})});var lx=()=>{};var u;var px=P(()=>{(function(D){D.errToObj=(F)=>typeof F==="string"?{message:F}:F||{},D.toString=(F)=>typeof F==="string"?F:F?.message})(u||(u={}))});class u1{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 Y0(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:(Y,X)=>{let{message:G}=D;if(Y.code==="invalid_enum_value")return{message:G??X.defaultError};if(typeof X.data>"u")return{message:G??J??X.defaultError};if(Y.code!=="invalid_type")return{message:X.defaultError};return{message:G??$??X.defaultError}},description:Q}}class H0{get description(){return this._def.description}_getType(D){return K8(D.data)}_getOrReturnCtx(D,F){return F||{common:D.parent.common,data:D.data,parsedType:K8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}_processInputParams(D){return{status:new ND,ctx:{common:D.parent.common,data:D.data,parsedType:K8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}}_parseSync(D){let F=this._parse(D);if(t3(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:K8(D)},J=this._parseSync({data:D,path:$.path,parent:$});return dx($,J)}"~validate"(D){let F={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:K8(D)};if(!this["~standard"].async)try{let $=this._parseSync({data:D,path:[],parent:F});return k6($)?{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(($)=>k6($)?{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:K8(D)},J=this._parse({data:D,path:$.path,parent:$}),Q=await(t3(J)?J:Promise.resolve(J));return dx($,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 B=D(J),Y=()=>Q.addIssue({code:j.custom,...$(J)});if(typeof Promise<"u"&&B instanceof Promise)return B.then((X)=>{if(!X)return Y(),!1;else return!0});if(!B)return Y(),!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 m1({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 b1.create(this,this._def)}nullable(){return m8.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return h1.create(this)}promise(){return N4.create(this,this._def)}or(D){return QF.create([this,D],this._def)}and(D){return BF.create(this,D,this._def)}transform(D){return new m1({...Y0(this._def),schema:this,typeName:o.ZodEffects,effect:{type:"transform",transform:D}})}default(D){let F=typeof D==="function"?D:()=>D;return new WF({...Y0(this._def),innerType:this,defaultValue:F,typeName:o.ZodDefault})}brand(){return new SJ({typeName:o.ZodBranded,type:this,...Y0(this._def)})}catch(D){let F=typeof D==="function"?D:()=>D;return new HF({...Y0(this._def),innerType:this,catchValue:F,typeName:o.ZodCatch})}describe(D){return new this.constructor({...this._def,description:D})}pipe(D){return E9.create(this,D)}readonly(){return qF.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function ix(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 Eq0(D){return new RegExp(`^${ix(D)}$`)}function ax(D){let F=`${nx}T${ix(D)}`,$=[];if($.push(D.local?"Z?":"Z"),D.offset)$.push("([+-]\\d{2}:?\\d{2})");return F=`${F}(${$.join("|")})`,new RegExp(`^${F}$`)}function zq0(D,F){if((F==="v4"||!F)&&Yq0.test(D))return!0;if((F==="v6"||!F)&&Gq0.test(D))return!0;return!1}function Vq0(D,F){if(!$q0.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 Zq0(D,F){if((F==="v4"||!F)&&Xq0.test(D))return!0;if((F==="v6"||!F)&&Wq0.test(D))return!0;return!1}function Uq0(D,F){let $=(D.toString().split(".")[1]||"").length,J=(F.toString().split(".")[1]||"").length,Q=$>J?$:J,B=Number.parseInt(D.toFixed(Q).replace(".","")),Y=Number.parseInt(F.toFixed(Q).replace(".",""));return B%Y/10**Q}function e3(D){if(D instanceof i0){let F={};for(let $ in D.shape){let J=D.shape[$];F[$]=b1.create(e3(J))}return new i0({...D._def,shape:()=>F})}else if(D instanceof h1)return new h1({...D._def,type:e3(D.element)});else if(D instanceof b1)return b1.create(e3(D.unwrap()));else if(D instanceof m8)return m8.create(e3(D.unwrap()));else if(D instanceof z8)return z8.create(D.items.map((F)=>e3(F)));else return D}function aG(D,F){let $=K8(D),J=K8(F);if(D===F)return{valid:!0,data:D};else if($===S.object&&J===S.object){let Q=V0.objectKeys(F),B=V0.objectKeys(D).filter((X)=>Q.indexOf(X)!==-1),Y={...D,...F};for(let X of B){let G=aG(D[X],F[X]);if(!G.valid)return{valid:!1};Y[X]=G.data}return{valid:!0,data:Y}}else if($===S.array&&J===S.array){if(D.length!==F.length)return{valid:!1};let Q=[];for(let B=0;B<D.length;B++){let Y=D[B],X=F[B],G=aG(Y,X);if(!G.valid)return{valid:!1};Q.push(G.data)}return{valid:!0,data:Q}}else if($===S.date&&J===S.date&&+D===+F)return{valid:!0,data:D};else return{valid:!1}}function ox(D,F){return new _6({values:D,typeName:o.ZodEnum,...Y0(F)})}function cx(D,F){let $=typeof D==="function"?D(F):typeof D==="string"?{message:D}:D;return typeof $==="string"?{message:$}:$}function sx(D,F={},$){if(D)return L4.create().superRefine((J,Q)=>{let B=D(J);if(B instanceof Promise)return B.then((Y)=>{if(!Y){let X=cx(F,J),G=X.fatal??$??!0;Q.addIssue({code:"custom",...X,fatal:G})}});if(!B){let Y=cx(F,J),X=Y.fatal??$??!0;Q.addIssue({code:"custom",...Y,fatal:X})}return});return L4.create()}var dx=(D,F)=>{if(k6(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 dD(D.common.issues);return this._error=$,this._error}}}},rH0,tH0,eH0,Dq0,Fq0,$q0,Jq0,Qq0,Bq0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",iG,Yq0,Xq0,Gq0,Wq0,Hq0,qq0,nx="((\\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])))",Kq0,g1,y6,x6,FF,A4,G9,$F,JF,L4,v6,E8,W9,h1,i0,QF,u8=(D)=>{if(D instanceof YF)return u8(D.schema);else if(D instanceof m1)return u8(D.innerType());else if(D instanceof XF)return[D.value];else if(D instanceof _6)return D.options;else if(D instanceof GF)return V0.objectValues(D.enum);else if(D instanceof WF)return u8(D._def.innerType);else if(D instanceof $F)return[void 0];else if(D instanceof JF)return[null];else if(D instanceof b1)return[void 0,...u8(D.unwrap())];else if(D instanceof m8)return[null,...u8(D.unwrap())];else if(D instanceof SJ)return u8(D.unwrap());else if(D instanceof qF)return u8(D.unwrap());else if(D instanceof HF)return u8(D._def.innerType);else return[]},IJ,BF,z8,H9,q9,M4,DF,YF,XF,_6,GF,N4,m1,b1,m8,WF,HF,K9,Aq0,SJ,E9,qF,Lq0,o,Mq0=(D,F={message:`Input not instance of ${D.name}`})=>sx(($)=>$ instanceof D,F),rx,tx,Nq0,Cq0,ex,Rq0,Oq0,wq0,Tq0,jq0,Pq0,Iq0,Sq0,kq0,vq0,yq0,xq0,_q0,fq0,gq0,hq0,bq0,uq0,mq0,lq0,pq0,dq0,cq0,nq0,iq0,aq0,oq0,sq0,rq0,tq0=()=>rx().optional(),eq0=()=>tx().optional(),DK0=()=>ex().optional(),FK0,$K0;var D_=P(()=>{wJ();TJ();px();nG();Y9();rH0=/^c[^\s-]{8,}$/i,tH0=/^[0-9a-z]+$/,eH0=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Dq0=/^[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,Fq0=/^[a-z0-9_-]{21}$/i,$q0=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Jq0=/^[-+]?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)?)??$/,Qq0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Yq0=/^(?:(?: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])$/,Xq0=/^(?:(?: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])$/,Gq0=/^(([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]))$/,Wq0=/^(([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])$/,Hq0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,qq0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Kq0=new RegExp(`^${nx}$`);g1=class g1 extends H0{_parse(D){if(this._def.coerce)D.data=String(D.data);if(this._getType(D)!==S.string){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.string,received:Q.parsedType}),c}let $=new ND,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),k(J,{code:j.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),k(J,{code:j.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),$.dirty()}else if(Q.kind==="length"){let B=D.data.length>Q.value,Y=D.data.length<Q.value;if(B||Y){if(J=this._getOrReturnCtx(D,J),B)k(J,{code:j.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});else if(Y)k(J,{code:j.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});$.dirty()}}else if(Q.kind==="email"){if(!Qq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"email",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="emoji"){if(!iG)iG=new RegExp(Bq0,"u");if(!iG.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"emoji",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="uuid"){if(!Dq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"uuid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="nanoid"){if(!Fq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"nanoid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid"){if(!rH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"cuid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cuid2"){if(!tH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"cuid2",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ulid"){if(!eH0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"ulid",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="url")try{new URL(D.data)}catch{J=this._getOrReturnCtx(D,J),k(J,{validation:"url",code:j.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),k(J,{validation:"regex",code:j.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),k(J,{code:j.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),k(J,{code:j.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),k(J,{code:j.invalid_string,validation:{endsWith:Q.value},message:Q.message}),$.dirty()}else if(Q.kind==="datetime"){if(!ax(Q).test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"datetime",message:Q.message}),$.dirty()}else if(Q.kind==="date"){if(!Kq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"date",message:Q.message}),$.dirty()}else if(Q.kind==="time"){if(!Eq0(Q).test(D.data))J=this._getOrReturnCtx(D,J),k(J,{code:j.invalid_string,validation:"time",message:Q.message}),$.dirty()}else if(Q.kind==="duration"){if(!Jq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"duration",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="ip"){if(!zq0(D.data,Q.version))J=this._getOrReturnCtx(D,J),k(J,{validation:"ip",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="jwt"){if(!Vq0(D.data,Q.alg))J=this._getOrReturnCtx(D,J),k(J,{validation:"jwt",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="cidr"){if(!Zq0(D.data,Q.version))J=this._getOrReturnCtx(D,J),k(J,{validation:"cidr",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64"){if(!Hq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"base64",code:j.invalid_string,message:Q.message}),$.dirty()}else if(Q.kind==="base64url"){if(!qq0.test(D.data))J=this._getOrReturnCtx(D,J),k(J,{validation:"base64url",code:j.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:j.invalid_string,...u.errToObj($)})}_addCheck(D){return new g1({...this._def,checks:[...this._def.checks,D]})}email(D){return this._addCheck({kind:"email",...u.errToObj(D)})}url(D){return this._addCheck({kind:"url",...u.errToObj(D)})}emoji(D){return this._addCheck({kind:"emoji",...u.errToObj(D)})}uuid(D){return this._addCheck({kind:"uuid",...u.errToObj(D)})}nanoid(D){return this._addCheck({kind:"nanoid",...u.errToObj(D)})}cuid(D){return this._addCheck({kind:"cuid",...u.errToObj(D)})}cuid2(D){return this._addCheck({kind:"cuid2",...u.errToObj(D)})}ulid(D){return this._addCheck({kind:"ulid",...u.errToObj(D)})}base64(D){return this._addCheck({kind:"base64",...u.errToObj(D)})}base64url(D){return this._addCheck({kind:"base64url",...u.errToObj(D)})}jwt(D){return this._addCheck({kind:"jwt",...u.errToObj(D)})}ip(D){return this._addCheck({kind:"ip",...u.errToObj(D)})}cidr(D){return this._addCheck({kind:"cidr",...u.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,...u.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,...u.errToObj(D?.message)})}duration(D){return this._addCheck({kind:"duration",...u.errToObj(D)})}regex(D,F){return this._addCheck({kind:"regex",regex:D,...u.errToObj(F)})}includes(D,F){return this._addCheck({kind:"includes",value:D,position:F?.position,...u.errToObj(F?.message)})}startsWith(D,F){return this._addCheck({kind:"startsWith",value:D,...u.errToObj(F)})}endsWith(D,F){return this._addCheck({kind:"endsWith",value:D,...u.errToObj(F)})}min(D,F){return this._addCheck({kind:"min",value:D,...u.errToObj(F)})}max(D,F){return this._addCheck({kind:"max",value:D,...u.errToObj(F)})}length(D,F){return this._addCheck({kind:"length",value:D,...u.errToObj(F)})}nonempty(D){return this.min(1,u.errToObj(D))}trim(){return new g1({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new g1({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new g1({...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}};g1.create=(D)=>{return new g1({checks:[],typeName:o.ZodString,coerce:D?.coerce??!1,...Y0(D)})};y6=class y6 extends H0{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)!==S.number){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.number,received:Q.parsedType}),c}let $=void 0,J=new ND;for(let Q of this._def.checks)if(Q.kind==="int"){if(!V0.isInteger(D.data))$=this._getOrReturnCtx(D,$),k($,{code:j.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,$),k($,{code:j.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,$),k($,{code:j.too_big,maximum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),J.dirty()}else if(Q.kind==="multipleOf"){if(Uq0(D.data,Q.value)!==0)$=this._getOrReturnCtx(D,$),k($,{code:j.not_multiple_of,multipleOf:Q.value,message:Q.message}),J.dirty()}else if(Q.kind==="finite"){if(!Number.isFinite(D.data))$=this._getOrReturnCtx(D,$),k($,{code:j.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,u.toString(F))}gt(D,F){return this.setLimit("min",D,!1,u.toString(F))}lte(D,F){return this.setLimit("max",D,!0,u.toString(F))}lt(D,F){return this.setLimit("max",D,!1,u.toString(F))}setLimit(D,F,$,J){return new y6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:u.toString(J)}]})}_addCheck(D){return new y6({...this._def,checks:[...this._def.checks,D]})}int(D){return this._addCheck({kind:"int",message:u.toString(D)})}positive(D){return this._addCheck({kind:"min",value:0,inclusive:!1,message:u.toString(D)})}negative(D){return this._addCheck({kind:"max",value:0,inclusive:!1,message:u.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:0,inclusive:!0,message:u.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:0,inclusive:!0,message:u.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:u.toString(F)})}finite(D){return this._addCheck({kind:"finite",message:u.toString(D)})}safe(D){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:u.toString(D)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:u.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)}};y6.create=(D)=>{return new y6({checks:[],typeName:o.ZodNumber,coerce:D?.coerce||!1,...Y0(D)})};x6=class x6 extends H0{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)!==S.bigint)return this._getInvalidInput(D);let $=void 0,J=new ND;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,$),k($,{code:j.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,$),k($,{code:j.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,$),k($,{code:j.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 k(F,{code:j.invalid_type,expected:S.bigint,received:F.parsedType}),c}gte(D,F){return this.setLimit("min",D,!0,u.toString(F))}gt(D,F){return this.setLimit("min",D,!1,u.toString(F))}lte(D,F){return this.setLimit("max",D,!0,u.toString(F))}lt(D,F){return this.setLimit("max",D,!1,u.toString(F))}setLimit(D,F,$,J){return new x6({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:u.toString(J)}]})}_addCheck(D){return new x6({...this._def,checks:[...this._def.checks,D]})}positive(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:u.toString(D)})}negative(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:u.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:u.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:u.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:u.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}};x6.create=(D)=>{return new x6({checks:[],typeName:o.ZodBigInt,coerce:D?.coerce??!1,...Y0(D)})};FF=class FF extends H0{_parse(D){if(this._def.coerce)D.data=Boolean(D.data);if(this._getType(D)!==S.boolean){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.boolean,received:$.parsedType}),c}return jD(D.data)}};FF.create=(D)=>{return new FF({typeName:o.ZodBoolean,coerce:D?.coerce||!1,...Y0(D)})};A4=class A4 extends H0{_parse(D){if(this._def.coerce)D.data=new Date(D.data);if(this._getType(D)!==S.date){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_type,expected:S.date,received:Q.parsedType}),c}if(Number.isNaN(D.data.getTime())){let Q=this._getOrReturnCtx(D);return k(Q,{code:j.invalid_date}),c}let $=new ND,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),k(J,{code:j.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),k(J,{code:j.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 A4({...this._def,checks:[...this._def.checks,D]})}min(D,F){return this._addCheck({kind:"min",value:D.getTime(),message:u.toString(F)})}max(D,F){return this._addCheck({kind:"max",value:D.getTime(),message:u.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}};A4.create=(D)=>{return new A4({checks:[],coerce:D?.coerce||!1,typeName:o.ZodDate,...Y0(D)})};G9=class G9 extends H0{_parse(D){if(this._getType(D)!==S.symbol){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.symbol,received:$.parsedType}),c}return jD(D.data)}};G9.create=(D)=>{return new G9({typeName:o.ZodSymbol,...Y0(D)})};$F=class $F extends H0{_parse(D){if(this._getType(D)!==S.undefined){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.undefined,received:$.parsedType}),c}return jD(D.data)}};$F.create=(D)=>{return new $F({typeName:o.ZodUndefined,...Y0(D)})};JF=class JF extends H0{_parse(D){if(this._getType(D)!==S.null){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.null,received:$.parsedType}),c}return jD(D.data)}};JF.create=(D)=>{return new JF({typeName:o.ZodNull,...Y0(D)})};L4=class L4 extends H0{constructor(){super(...arguments);this._any=!0}_parse(D){return jD(D.data)}};L4.create=(D)=>{return new L4({typeName:o.ZodAny,...Y0(D)})};v6=class v6 extends H0{constructor(){super(...arguments);this._unknown=!0}_parse(D){return jD(D.data)}};v6.create=(D)=>{return new v6({typeName:o.ZodUnknown,...Y0(D)})};E8=class E8 extends H0{_parse(D){let F=this._getOrReturnCtx(D);return k(F,{code:j.invalid_type,expected:S.never,received:F.parsedType}),c}};E8.create=(D)=>{return new E8({typeName:o.ZodNever,...Y0(D)})};W9=class W9 extends H0{_parse(D){if(this._getType(D)!==S.undefined){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.void,received:$.parsedType}),c}return jD(D.data)}};W9.create=(D)=>{return new W9({typeName:o.ZodVoid,...Y0(D)})};h1=class h1 extends H0{_parse(D){let{ctx:F,status:$}=this._processInputParams(D),J=this._def;if(F.parsedType!==S.array)return k(F,{code:j.invalid_type,expected:S.array,received:F.parsedType}),c;if(J.exactLength!==null){let B=F.data.length>J.exactLength.value,Y=F.data.length<J.exactLength.value;if(B||Y)k(F,{code:B?j.too_big:j.too_small,minimum:Y?J.exactLength.value:void 0,maximum:B?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)k(F,{code:j.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)k(F,{code:j.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((B,Y)=>{return J.type._parseAsync(new u1(F,B,F.path,Y))})).then((B)=>{return ND.mergeArray($,B)});let Q=[...F.data].map((B,Y)=>{return J.type._parseSync(new u1(F,B,F.path,Y))});return ND.mergeArray($,Q)}get element(){return this._def.type}min(D,F){return new h1({...this._def,minLength:{value:D,message:u.toString(F)}})}max(D,F){return new h1({...this._def,maxLength:{value:D,message:u.toString(F)}})}length(D,F){return new h1({...this._def,exactLength:{value:D,message:u.toString(F)}})}nonempty(D){return this.min(1,D)}};h1.create=(D,F)=>{return new h1({type:D,minLength:null,maxLength:null,exactLength:null,typeName:o.ZodArray,...Y0(F)})};i0=class i0 extends H0{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)!==S.object){let G=this._getOrReturnCtx(D);return k(G,{code:j.invalid_type,expected:S.object,received:G.parsedType}),c}let{status:$,ctx:J}=this._processInputParams(D),{shape:Q,keys:B}=this._getCached(),Y=[];if(!(this._def.catchall instanceof E8&&this._def.unknownKeys==="strip")){for(let G in J.data)if(!B.includes(G))Y.push(G)}let X=[];for(let G of B){let W=Q[G],q=J.data[G];X.push({key:{status:"valid",value:G},value:W._parse(new u1(J,q,J.path,G)),alwaysSet:G in J.data})}if(this._def.catchall instanceof E8){let G=this._def.unknownKeys;if(G==="passthrough")for(let W of Y)X.push({key:{status:"valid",value:W},value:{status:"valid",value:J.data[W]}});else if(G==="strict"){if(Y.length>0)k(J,{code:j.unrecognized_keys,keys:Y}),$.dirty()}else if(G==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let G=this._def.catchall;for(let W of Y){let q=J.data[W];X.push({key:{status:"valid",value:W},value:G._parse(new u1(J,q,J.path,W)),alwaysSet:W in J.data})}}if(J.common.async)return Promise.resolve().then(async()=>{let G=[];for(let W of X){let q=await W.key,K=await W.value;G.push({key:q,value:K,alwaysSet:W.alwaysSet})}return G}).then((G)=>{return ND.mergeObjectSync($,G)});else return ND.mergeObjectSync($,X)}get shape(){return this._def.shape()}strict(D){return u.errToObj,new i0({...this._def,unknownKeys:"strict",...D!==void 0?{errorMap:(F,$)=>{let J=this._def.errorMap?.(F,$).message??$.defaultError;if(F.code==="unrecognized_keys")return{message:u.errToObj(D).message??J};return{message:J}}}:{}})}strip(){return new i0({...this._def,unknownKeys:"strip"})}passthrough(){return new i0({...this._def,unknownKeys:"passthrough"})}extend(D){return new i0({...this._def,shape:()=>({...this._def.shape(),...D})})}merge(D){return new i0({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 i0({...this._def,catchall:D})}pick(D){let F={};for(let $ of V0.objectKeys(D))if(D[$]&&this.shape[$])F[$]=this.shape[$];return new i0({...this._def,shape:()=>F})}omit(D){let F={};for(let $ of V0.objectKeys(this.shape))if(!D[$])F[$]=this.shape[$];return new i0({...this._def,shape:()=>F})}deepPartial(){return e3(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 i0({...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 b1)Q=Q._def.innerType;F[$]=Q}return new i0({...this._def,shape:()=>F})}keyof(){return ox(V0.objectKeys(this.shape))}};i0.create=(D,F)=>{return new i0({shape:()=>D,unknownKeys:"strip",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};i0.strictCreate=(D,F)=>{return new i0({shape:()=>D,unknownKeys:"strict",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};i0.lazycreate=(D,F)=>{return new i0({shape:D,unknownKeys:"strip",catchall:E8.create(),typeName:o.ZodObject,...Y0(F)})};QF=class QF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$=this._def.options;function J(Q){for(let Y of Q)if(Y.result.status==="valid")return Y.result;for(let Y of Q)if(Y.result.status==="dirty")return F.common.issues.push(...Y.ctx.common.issues),Y.result;let B=Q.map((Y)=>new dD(Y.ctx.common.issues));return k(F,{code:j.invalid_union,unionErrors:B}),c}if(F.common.async)return Promise.all($.map(async(Q)=>{let B={...F,common:{...F.common,issues:[]},parent:null};return{result:await Q._parseAsync({data:F.data,path:F.path,parent:B}),ctx:B}})).then(J);else{let Q=void 0,B=[];for(let X of $){let G={...F,common:{...F.common,issues:[]},parent:null},W=X._parseSync({data:F.data,path:F.path,parent:G});if(W.status==="valid")return W;else if(W.status==="dirty"&&!Q)Q={result:W,ctx:G};if(G.common.issues.length)B.push(G.common.issues)}if(Q)return F.common.issues.push(...Q.ctx.common.issues),Q.result;let Y=B.map((X)=>new dD(X));return k(F,{code:j.invalid_union,unionErrors:Y}),c}}get options(){return this._def.options}};QF.create=(D,F)=>{return new QF({options:D,typeName:o.ZodUnion,...Y0(F)})};IJ=class IJ extends H0{_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.object)return k(F,{code:j.invalid_type,expected:S.object,received:F.parsedType}),c;let $=this.discriminator,J=F.data[$],Q=this.optionsMap.get(J);if(!Q)return k(F,{code:j.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[$]}),c;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 B=u8(Q.shape[D]);if(!B.length)throw Error(`A discriminator value for key \`${D}\` could not be extracted from all schema options`);for(let Y of B){if(J.has(Y))throw Error(`Discriminator property ${String(D)} has duplicate value ${String(Y)}`);J.set(Y,Q)}}return new IJ({typeName:o.ZodDiscriminatedUnion,discriminator:D,options:F,optionsMap:J,...Y0($)})}};BF=class BF extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D),J=(Q,B)=>{if(jJ(Q)||jJ(B))return c;let Y=aG(Q.value,B.value);if(!Y.valid)return k($,{code:j.invalid_intersection_types}),c;if(PJ(Q)||PJ(B))F.dirty();return{status:F.value,value:Y.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,B])=>J(Q,B));else return J(this._def.left._parseSync({data:$.data,path:$.path,parent:$}),this._def.right._parseSync({data:$.data,path:$.path,parent:$}))}};BF.create=(D,F,$)=>{return new BF({left:D,right:F,typeName:o.ZodIntersection,...Y0($)})};z8=class z8 extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.array)return k($,{code:j.invalid_type,expected:S.array,received:$.parsedType}),c;if($.data.length<this._def.items.length)return k($,{code:j.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),c;if(!this._def.rest&&$.data.length>this._def.items.length)k($,{code:j.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),F.dirty();let Q=[...$.data].map((B,Y)=>{let X=this._def.items[Y]||this._def.rest;if(!X)return null;return X._parse(new u1($,B,$.path,Y))}).filter((B)=>!!B);if($.common.async)return Promise.all(Q).then((B)=>{return ND.mergeArray(F,B)});else return ND.mergeArray(F,Q)}get items(){return this._def.items}rest(D){return new z8({...this._def,rest:D})}};z8.create=(D,F)=>{if(!Array.isArray(D))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new z8({items:D,typeName:o.ZodTuple,rest:null,...Y0(F)})};H9=class H9 extends H0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.object)return k($,{code:j.invalid_type,expected:S.object,received:$.parsedType}),c;let J=[],Q=this._def.keyType,B=this._def.valueType;for(let Y in $.data)J.push({key:Q._parse(new u1($,Y,$.path,Y)),value:B._parse(new u1($,$.data[Y],$.path,Y)),alwaysSet:Y in $.data});if($.common.async)return ND.mergeObjectAsync(F,J);else return ND.mergeObjectSync(F,J)}get element(){return this._def.valueType}static create(D,F,$){if(F instanceof H0)return new H9({keyType:D,valueType:F,typeName:o.ZodRecord,...Y0($)});return new H9({keyType:g1.create(),valueType:D,typeName:o.ZodRecord,...Y0(F)})}};q9=class q9 extends H0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.map)return k($,{code:j.invalid_type,expected:S.map,received:$.parsedType}),c;let J=this._def.keyType,Q=this._def.valueType,B=[...$.data.entries()].map(([Y,X],G)=>{return{key:J._parse(new u1($,Y,$.path,[G,"key"])),value:Q._parse(new u1($,X,$.path,[G,"value"]))}});if($.common.async){let Y=new Map;return Promise.resolve().then(async()=>{for(let X of B){let G=await X.key,W=await X.value;if(G.status==="aborted"||W.status==="aborted")return c;if(G.status==="dirty"||W.status==="dirty")F.dirty();Y.set(G.value,W.value)}return{status:F.value,value:Y}})}else{let Y=new Map;for(let X of B){let{key:G,value:W}=X;if(G.status==="aborted"||W.status==="aborted")return c;if(G.status==="dirty"||W.status==="dirty")F.dirty();Y.set(G.value,W.value)}return{status:F.value,value:Y}}}};q9.create=(D,F,$)=>{return new q9({valueType:F,keyType:D,typeName:o.ZodMap,...Y0($)})};M4=class M4 extends H0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==S.set)return k($,{code:j.invalid_type,expected:S.set,received:$.parsedType}),c;let J=this._def;if(J.minSize!==null){if($.data.size<J.minSize.value)k($,{code:j.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)k($,{code:j.too_big,maximum:J.maxSize.value,type:"set",inclusive:!0,exact:!1,message:J.maxSize.message}),F.dirty()}let Q=this._def.valueType;function B(X){let G=new Set;for(let W of X){if(W.status==="aborted")return c;if(W.status==="dirty")F.dirty();G.add(W.value)}return{status:F.value,value:G}}let Y=[...$.data.values()].map((X,G)=>Q._parse(new u1($,X,$.path,G)));if($.common.async)return Promise.all(Y).then((X)=>B(X));else return B(Y)}min(D,F){return new M4({...this._def,minSize:{value:D,message:u.toString(F)}})}max(D,F){return new M4({...this._def,maxSize:{value:D,message:u.toString(F)}})}size(D,F){return this.min(D,F).max(D,F)}nonempty(D){return this.min(1,D)}};M4.create=(D,F)=>{return new M4({valueType:D,minSize:null,maxSize:null,typeName:o.ZodSet,...Y0(F)})};DF=class DF extends H0{constructor(){super(...arguments);this.validate=this.implement}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.function)return k(F,{code:j.invalid_type,expected:S.function,received:F.parsedType}),c;function $(Y,X){return X9({data:Y,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,r3(),b8].filter((G)=>!!G),issueData:{code:j.invalid_arguments,argumentsError:X}})}function J(Y,X){return X9({data:Y,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,r3(),b8].filter((G)=>!!G),issueData:{code:j.invalid_return_type,returnTypeError:X}})}let Q={errorMap:F.common.contextualErrorMap},B=F.data;if(this._def.returns instanceof N4){let Y=this;return jD(async function(...X){let G=new dD([]),W=await Y._def.args.parseAsync(X,Q).catch((Z)=>{throw G.addIssue($(X,Z)),G}),q=await Reflect.apply(B,this,W);return await Y._def.returns._def.type.parseAsync(q,Q).catch((Z)=>{throw G.addIssue(J(q,Z)),G})})}else{let Y=this;return jD(function(...X){let G=Y._def.args.safeParse(X,Q);if(!G.success)throw new dD([$(X,G.error)]);let W=Reflect.apply(B,this,G.data),q=Y._def.returns.safeParse(W,Q);if(!q.success)throw new dD([J(W,q.error)]);return q.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...D){return new DF({...this._def,args:z8.create(D).rest(v6.create())})}returns(D){return new DF({...this._def,returns:D})}implement(D){return this.parse(D)}strictImplement(D){return this.parse(D)}static create(D,F,$){return new DF({args:D?D:z8.create([]).rest(v6.create()),returns:F||v6.create(),typeName:o.ZodFunction,...Y0($)})}};YF=class YF extends H0{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})}};YF.create=(D,F)=>{return new YF({getter:D,typeName:o.ZodLazy,...Y0(F)})};XF=class XF extends H0{_parse(D){if(D.data!==this._def.value){let F=this._getOrReturnCtx(D);return k(F,{received:F.data,code:j.invalid_literal,expected:this._def.value}),c}return{status:"valid",value:D.data}}get value(){return this._def.value}};XF.create=(D,F)=>{return new XF({value:D,typeName:o.ZodLiteral,...Y0(F)})};_6=class _6 extends H0{_parse(D){if(typeof D.data!=="string"){let F=this._getOrReturnCtx(D),$=this._def.values;return k(F,{expected:V0.joinValues($),received:F.parsedType,code:j.invalid_type}),c}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 k(F,{received:F.data,code:j.invalid_enum_value,options:$}),c}return jD(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 _6.create(D,{...this._def,...F})}exclude(D,F=this._def){return _6.create(this.options.filter(($)=>!D.includes($)),{...this._def,...F})}};_6.create=ox;GF=class GF extends H0{_parse(D){let F=V0.getValidEnumValues(this._def.values),$=this._getOrReturnCtx(D);if($.parsedType!==S.string&&$.parsedType!==S.number){let J=V0.objectValues(F);return k($,{expected:V0.joinValues(J),received:$.parsedType,code:j.invalid_type}),c}if(!this._cache)this._cache=new Set(V0.getValidEnumValues(this._def.values));if(!this._cache.has(D.data)){let J=V0.objectValues(F);return k($,{received:$.data,code:j.invalid_enum_value,options:J}),c}return jD(D.data)}get enum(){return this._def.values}};GF.create=(D,F)=>{return new GF({values:D,typeName:o.ZodNativeEnum,...Y0(F)})};N4=class N4 extends H0{unwrap(){return this._def.type}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==S.promise&&F.common.async===!1)return k(F,{code:j.invalid_type,expected:S.promise,received:F.parsedType}),c;let $=F.parsedType===S.promise?F.data:Promise.resolve(F.data);return jD($.then((J)=>{return this._def.type.parseAsync(J,{path:F.path,errorMap:F.common.contextualErrorMap})}))}};N4.create=(D,F)=>{return new N4({type:D,typeName:o.ZodPromise,...Y0(F)})};m1=class m1 extends H0{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:(B)=>{if(k($,B),B.fatal)F.abort();else F.dirty()},get path(){return $.path}};if(Q.addIssue=Q.addIssue.bind(Q),J.type==="preprocess"){let B=J.transform($.data,Q);if($.common.async)return Promise.resolve(B).then(async(Y)=>{if(F.value==="aborted")return c;let X=await this._def.schema._parseAsync({data:Y,path:$.path,parent:$});if(X.status==="aborted")return c;if(X.status==="dirty")return U4(X.value);if(F.value==="dirty")return U4(X.value);return X});else{if(F.value==="aborted")return c;let Y=this._def.schema._parseSync({data:B,path:$.path,parent:$});if(Y.status==="aborted")return c;if(Y.status==="dirty")return U4(Y.value);if(F.value==="dirty")return U4(Y.value);return Y}}if(J.type==="refinement"){let B=(Y)=>{let X=J.refinement(Y,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 Y};if($.common.async===!1){let Y=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(Y.status==="aborted")return c;if(Y.status==="dirty")F.dirty();return B(Y.value),{status:F.value,value:Y.value}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((Y)=>{if(Y.status==="aborted")return c;if(Y.status==="dirty")F.dirty();return B(Y.value).then(()=>{return{status:F.value,value:Y.value}})})}if(J.type==="transform")if($.common.async===!1){let B=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(!k6(B))return c;let Y=J.transform(B.value,Q);if(Y instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:F.value,value:Y}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((B)=>{if(!k6(B))return c;return Promise.resolve(J.transform(B.value,Q)).then((Y)=>({status:F.value,value:Y}))});V0.assertNever(J)}};m1.create=(D,F,$)=>{return new m1({schema:D,typeName:o.ZodEffects,effect:F,...Y0($)})};m1.createWithPreprocess=(D,F,$)=>{return new m1({schema:F,effect:{type:"preprocess",transform:D},typeName:o.ZodEffects,...Y0($)})};b1=class b1 extends H0{_parse(D){if(this._getType(D)===S.undefined)return jD(void 0);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};b1.create=(D,F)=>{return new b1({innerType:D,typeName:o.ZodOptional,...Y0(F)})};m8=class m8 extends H0{_parse(D){if(this._getType(D)===S.null)return jD(null);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};m8.create=(D,F)=>{return new m8({innerType:D,typeName:o.ZodNullable,...Y0(F)})};WF=class WF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$=F.data;if(F.parsedType===S.undefined)$=this._def.defaultValue();return this._def.innerType._parse({data:$,path:F.path,parent:F})}removeDefault(){return this._def.innerType}};WF.create=(D,F)=>{return new WF({innerType:D,typeName:o.ZodDefault,defaultValue:typeof F.default==="function"?F.default:()=>F.default,...Y0(F)})};HF=class HF extends H0{_parse(D){let{ctx:F}=this._processInputParams(D),$={...F,common:{...F.common,issues:[]}},J=this._def.innerType._parse({data:$.data,path:$.path,parent:{...$}});if(t3(J))return J.then((Q)=>{return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new dD($.common.issues)},input:$.data})}});else return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new dD($.common.issues)},input:$.data})}}removeCatch(){return this._def.innerType}};HF.create=(D,F)=>{return new HF({innerType:D,typeName:o.ZodCatch,catchValue:typeof F.catch==="function"?F.catch:()=>F.catch,...Y0(F)})};K9=class K9 extends H0{_parse(D){if(this._getType(D)!==S.nan){let $=this._getOrReturnCtx(D);return k($,{code:j.invalid_type,expected:S.nan,received:$.parsedType}),c}return{status:"valid",value:D.data}}};K9.create=(D)=>{return new K9({typeName:o.ZodNaN,...Y0(D)})};Aq0=Symbol("zod_brand");SJ=class SJ extends H0{_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}};E9=class E9 extends H0{_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 c;if(Q.status==="dirty")return F.dirty(),U4(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 c;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 E9({in:D,out:F,typeName:o.ZodPipeline})}};qF=class qF extends H0{_parse(D){let F=this._def.innerType._parse(D),$=(J)=>{if(k6(J))J.value=Object.freeze(J.value);return J};return t3(F)?F.then((J)=>$(J)):$(F)}unwrap(){return this._def.innerType}};qF.create=(D,F)=>{return new qF({innerType:D,typeName:o.ZodReadonly,...Y0(F)})};Lq0={object:i0.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={}));rx=g1.create,tx=y6.create,Nq0=K9.create,Cq0=x6.create,ex=FF.create,Rq0=A4.create,Oq0=G9.create,wq0=$F.create,Tq0=JF.create,jq0=L4.create,Pq0=v6.create,Iq0=E8.create,Sq0=W9.create,kq0=h1.create,vq0=i0.create,yq0=i0.strictCreate,xq0=QF.create,_q0=IJ.create,fq0=BF.create,gq0=z8.create,hq0=H9.create,bq0=q9.create,uq0=M4.create,mq0=DF.create,lq0=YF.create,pq0=XF.create,dq0=_6.create,cq0=GF.create,nq0=N4.create,iq0=m1.create,aq0=b1.create,oq0=m8.create,sq0=m1.createWithPreprocess,rq0=E9.create,FK0={string:(D)=>g1.create({...D,coerce:!0}),number:(D)=>y6.create({...D,coerce:!0}),boolean:(D)=>FF.create({...D,coerce:!0}),bigint:(D)=>x6.create({...D,coerce:!0}),date:(D)=>A4.create({...D,coerce:!0})},$K0=c});var l1={};MF(l1,{void:()=>Sq0,util:()=>V0,unknown:()=>Pq0,union:()=>xq0,undefined:()=>wq0,tuple:()=>gq0,transformer:()=>iq0,symbol:()=>Oq0,string:()=>rx,strictObject:()=>yq0,setErrorMap:()=>oH0,set:()=>uq0,record:()=>hq0,quotelessJson:()=>iH0,promise:()=>nq0,preprocess:()=>sq0,pipeline:()=>rq0,ostring:()=>tq0,optional:()=>aq0,onumber:()=>eq0,oboolean:()=>DK0,objectUtil:()=>dG,object:()=>vq0,number:()=>tx,nullable:()=>oq0,null:()=>Tq0,never:()=>Iq0,nativeEnum:()=>cq0,nan:()=>Nq0,map:()=>bq0,makeIssue:()=>X9,literal:()=>pq0,lazy:()=>lq0,late:()=>Lq0,isValid:()=>k6,isDirty:()=>PJ,isAsync:()=>t3,isAborted:()=>jJ,intersection:()=>fq0,instanceof:()=>Mq0,getParsedType:()=>K8,getErrorMap:()=>r3,function:()=>mq0,enum:()=>dq0,effect:()=>iq0,discriminatedUnion:()=>_q0,defaultErrorMap:()=>b8,datetimeRegex:()=>ax,date:()=>Rq0,custom:()=>sx,coerce:()=>FK0,boolean:()=>ex,bigint:()=>Cq0,array:()=>kq0,any:()=>jq0,addIssueToContext:()=>k,ZodVoid:()=>W9,ZodUnknown:()=>v6,ZodUnion:()=>QF,ZodUndefined:()=>$F,ZodType:()=>H0,ZodTuple:()=>z8,ZodTransformer:()=>m1,ZodSymbol:()=>G9,ZodString:()=>g1,ZodSet:()=>M4,ZodSchema:()=>H0,ZodRecord:()=>H9,ZodReadonly:()=>qF,ZodPromise:()=>N4,ZodPipeline:()=>E9,ZodParsedType:()=>S,ZodOptional:()=>b1,ZodObject:()=>i0,ZodNumber:()=>y6,ZodNullable:()=>m8,ZodNull:()=>JF,ZodNever:()=>E8,ZodNativeEnum:()=>GF,ZodNaN:()=>K9,ZodMap:()=>q9,ZodLiteral:()=>XF,ZodLazy:()=>YF,ZodIssueCode:()=>j,ZodIntersection:()=>BF,ZodFunction:()=>DF,ZodFirstPartyTypeKind:()=>o,ZodError:()=>dD,ZodEnum:()=>_6,ZodEffects:()=>m1,ZodDiscriminatedUnion:()=>IJ,ZodDefault:()=>WF,ZodDate:()=>A4,ZodCatch:()=>HF,ZodBranded:()=>SJ,ZodBoolean:()=>FF,ZodBigInt:()=>x6,ZodArray:()=>h1,ZodAny:()=>L4,Schema:()=>H0,ParseStatus:()=>ND,OK:()=>jD,NEVER:()=>$K0,INVALID:()=>c,EMPTY_PATH:()=>sH0,DIRTY:()=>U4,BRAND:()=>Aq0});var oG=P(()=>{TJ();nG();lx();Y9();D_();wJ()});var F_=P(()=>{oG();oG()});function QK0(){let D=r0.get("accounts");if(D&&Object.keys(D).length>0)return;let F=r0.get("apiKey"),$=r0.get("username");if(!F&&!$)return;try{let J=$||"default",Q={};for(let B of JK0){let Y=r0.get(B);if(Y!==void 0)Q[B]=Y}r0.store={activeAccount:J,accounts:{[J]:Q}}}catch(J){console.error("Config migration failed (legacy config preserved):",J)}}function z9(){return r0.get("activeAccount")}function C4(){return r0.get("accounts")||{}}function YD(){let D={apiUrl:kJ},F=z9();if(!F)return D;return C4()[F]||D}function $_(){return!!YD().sandboxCompleted}function l8(D,F){let $=z9()||"default",J=C4();if(!J[$])J[$]={apiUrl:kJ};J[$][D]=F,r0.store={...r0.store,accounts:J,activeAccount:$}}function sG(D){let F=z9();if(!F)return;let $=C4();if($[F])delete $[F][D],r0.set("accounts",$)}function J_(){let D=z9();if(!D){r0.clear();return}let F=C4();delete F[D];let $=Object.keys(F);if($.length>0)r0.store={...r0.store,accounts:F,activeAccount:$[0]};else r0.clear()}function Q_(){r0.clear()}function v0(){return!!YD().apiKey}function B_(){return r0.path}function V9(){let D=C4(),F=z9();return Object.entries(D).map(([$,J])=>({username:J.username||$,email:J.email,githubUsername:J.githubUsername,active:$===F}))}function Y_(D,F){let $=C4();$[D]=F,r0.store={...r0.store,accounts:$,activeAccount:D}}function X_(D){let F=C4();if(F[D])return r0.store={...r0.store,activeAccount:D},F[D];for(let[$,J]of Object.entries(F))if(J.githubUsername===D)return r0.store={...r0.store,activeAccount:$},J;return null}var kJ="https://nemar-api-dev.shirazi-10f.workers.dev",xj0,r0,JK0;var KF=P(()=>{ux();F_();xj0=l1.object({apiKey:l1.string().optional(),apiUrl:l1.string().url().default(kJ),username:l1.string().optional(),email:l1.string().email().optional(),githubUsername:l1.string().optional(),sandboxCompleted:l1.boolean().optional(),sandboxDatasetId:l1.string().optional()}),r0=new OJ({projectName:"nemar",schema:{activeAccount:{type:"string"},accounts:{type:"object"},apiKey:{type:"string"},apiUrl:{type:"string",default:kJ},username:{type:"string"},email:{type:"string"},githubUsername:{type:"string"},sandboxCompleted:{type:"boolean"},sandboxDatasetId:{type:"string"}},...process.env.NEMAR_CONFIG_DIR?{cwd:process.env.NEMAR_CONFIG_DIR}:{}}),JK0=["apiKey","apiUrl","username","email","githubUsername","sandboxCompleted","sandboxDatasetId"];QK0()});var W_;var G_=P(()=>{W_={name:"nemar-cli",version:"0.7.13-dev.424",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","docs:generate":"bun run scripts/generate-docs.ts","docs:serve":"mkdocs serve","docs:build":"mkdocs build",prepare:"husky",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://nemar-cli.pages.dev",engines:{bun:">=1.0.0"},files:["dist","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1",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"}}});var vJ;var rG=P(()=>{G_();vJ=W_.version});function p0(D){if(D instanceof Error)return D.message;return String(D)}function H_(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(YK0)return tG;return YD().apiUrl||tG}async function a(D,F={},$=!1){let J=`${H_()}${D}`,Q={"Content-Type":"application/json","X-CLI-Version":vJ,...F.headers};if($){let X=YD();if(!X.apiKey&&$===!0)throw new i(401,"Not authenticated. Run 'nemar auth login' first.");if(X.apiKey)Q.Authorization=`Bearer ${X.apiKey}`}let B;try{B=await fetch(J,{...F,headers:Q})}catch(X){throw new i(0,`Network error: Could not connect to ${H_()}`,{originalError:X instanceof Error?X.message:String(X)})}let Y;try{Y=await B.json()}catch{throw new i(B.status,`Invalid response from server (status ${B.status})`)}if(!B.ok)throw new i(B.status,Y.error||Y.message||"Request failed",Y.details);return Y}async function q_(D){return a(`/auth/check-username?username=${encodeURIComponent(D)}`)}async function K_(D){return a(`/auth/check-github?username=${encodeURIComponent(D)}`)}async function E_(D){return a("/auth/signup",{method:"POST",body:JSON.stringify(D)})}async function z_(D){return a("/auth/login",{method:"POST",body:JSON.stringify({api_key:D})})}async function V_(D){return a("/auth/resend-verification",{method:"POST",body:JSON.stringify({email:D})})}async function Z_(D,F){return a("/auth/retrieve-key",{method:"POST",body:JSON.stringify({email:D,password:F})})}async function U_(D){return a("/auth/request-key-regeneration",{method:"POST",body:JSON.stringify({email:D})})}async function xJ(){return a("/users/me",{},!0)}async function A_(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let J=$.toString()?`?${$.toString()}`:"";return a(`/admin/users${J}`,{},!0)}async function L_(D){return a(`/admin/approve/${D}`,{method:"POST"},!0)}async function M_(D){return a(`/admin/revoke/${D}`,{method:"POST"},!0)}async function N_(D,F){return a(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function C_(D){return a(`/admin/regenerate-iam/${D}`,{method:"POST"},!0)}async function eG(D,F){return a(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function R_(D){return a(`/datasets/${D}/publish`,{method:"POST"},!0)}async function O_(D){return a(`/admin/datasets/${D}/ci`,{},!0)}async function EF(D){return a(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function w_(D){return a(`/datasets/${D}/ci/status`,{},!0)}async function T_(D){return a(`/datasets/${D}/manifest`,{},!0)}async function j_(D,F){return a(`/datasets/${D}/manifest/${F}`,{},!0)}function P_(D){let F=D;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 I_(D=!1){let $=await a(`/datasets${D?"?mine=true":""}`,{},D?!0:"optional");return $.datasets=$.datasets.map(P_),$}async function cD(D){let F=await a(`/datasets/${D}`,{},"optional");return P_(F.dataset)}async function S_(D){return a(`/datasets/${D}/versions`,{},!0)}async function _J(D){return a("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function fJ(D){return a(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function R4(D,F){return a(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function gJ(D,F){return a(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function k_(D,F){return a(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function Z9(D){return a(`/admin/datasets/${D}/doi`,{},!0)}async function DW(D,F){return a(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function v_(D){return a(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function y_(D,F){return a(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function x_(D){return a(`/datasets/${D}/collaborators`,{},!0)}async function __(D){return a("/sandbox/complete",{method:"POST",body:JSON.stringify({dataset_id:D})},!0)}async function f_(){return a("/sandbox/reset",{method:"POST"},!0)}async function g_(){return a("/sandbox/status",{},!0)}async function hJ(D){return a(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function h_(D){return a(`/datasets/${D}/publish/status`,{},!0)}async function b_(D){return a(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function u_(D){let F=D?`?status=${D}`:"";return a(`/admin/publish/requests${F}`,{},!0)}async function m_(D,F){return a(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}async function bJ(D,F=!1,$=!1,J=!1){let Q,B,Y=[];do{if(B=await a(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:F,sandbox:$,s3_lock_offset:Q,skip_ci_check:J})},!0),B.step_results)Y.push(...B.step_results);if(B.hasMore&&B.s3_lock_offset!==void 0)Q=B.s3_lock_offset;else break}while(B.hasMore);if(Y.length>0)B.step_results=Y;return B}async function l_(D,F){return a(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}async function p_(D){return a(`/admin/datasets/${D}/files`,{},!0)}async function d_(D){let F=0,$=0,J=[],Q=0,B=!0;while(B){let Y=await a(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({offset:F})},!0);if($+=Y.locked,J.push(...Y.failed),Q=Y.total,B=Y.hasMore,B)F+=40}return{locked:$,total:Q,failed:J}}async function c_(D){return a(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function n_(D,F=!1){return a(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function i_(D){return a("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function a_(D){return a(`/admin/datasets/${D}/sync`,{method:"POST"},!0)}async function o_(){return a("/admin/sync/status",{},!0)}var tG="https://nemar-api-dev.shirazi-10f.workers.dev",yJ,i,YK0;var O4=P(()=>{KF();rG();yJ=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/;i=class i extends Error{statusCode;details;constructor(D,F,$){super(F);this.statusCode=D;this.details=$;this.name="ApiError"}};YK0=tG.includes("workers.dev")});function V8(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 r_(D){return`${V8(D)}/s`}function XK0(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 GK0(D,F=20){let $=Math.round(D/100*F),J=F-$;return`[${"=".repeat($)}${" ".repeat(J)}]`}class FW{filesCompleted=0;filesTotal;currentFileBytesTransferred=0;currentFileBytesTotal=0;currentFile="";startTime;lastUpdateTime;lastBytesTransferred=0;totalBytesTransferred=0;speedSamples=[];lastRenderedLine="";constructor(D=0){this.filesTotal=D,this.startTime=Date.now(),this.lastUpdateTime=this.startTime}processLine(D){if(D.ok===!0||D.success===!0){if(this.filesCompleted++,this.filesTotal===0||this.filesCompleted>this.filesTotal)this.filesTotal=this.filesCompleted;this.totalBytesTransferred+=this.currentFileBytesTotal||this.currentFileBytesTransferred,this.currentFileBytesTransferred=0,this.currentFileBytesTotal=0,this.render();return}if(D["byte-progress"]!==void 0){if(this.currentFile=D.file||this.currentFile,this.currentFileBytesTransferred=D["byte-progress"],D["total-size"]!==void 0)this.currentFileBytesTotal=D["total-size"];let F=Date.now(),$=(F-this.lastUpdateTime)/1000;if($>0.5){let Q=(this.totalBytesTransferred+this.currentFileBytesTransferred-this.lastBytesTransferred)/$;if(Q>0){if(this.speedSamples.push(Q),this.speedSamples.length>5)this.speedSamples.shift()}this.lastBytesTransferred=this.totalBytesTransferred+this.currentFileBytesTransferred,this.lastUpdateTime=F}this.render()}}incrementFilesCompleted(){if(this.filesCompleted++,this.filesTotal===0)this.filesTotal=this.filesCompleted}setFilesTotal(D){this.filesTotal=D}render(){let D=this.speedSamples.length>0?this.speedSamples.reduce((Y,X)=>Y+X,0)/this.speedSamples.length:0,F=this.totalBytesTransferred+this.currentFileBytesTransferred,$=this.filesTotal>0?Math.round(this.filesCompleted/this.filesTotal*100):0,J=GK0($),Q=this.filesTotal>0?`${this.filesCompleted}/${this.filesTotal} files`:`${this.filesCompleted} files`,B=`${J} ${$}% ${Q}`;if(F>0)B+=` | ${V8(F)}`;if(D>0)B+=` | ${r_(D)}`;if(D>0&&this.currentFileBytesTotal>0){let X=(this.currentFileBytesTotal-this.currentFileBytesTransferred)/D;if(X>0)B+=` | ETA ${XK0(X)}`}if(B!==this.lastRenderedLine)process.stderr.write(`\r${H.cyan(B)}${" ".repeat(10)}`),this.lastRenderedLine=B}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?`${r_(this.totalBytesTransferred/F)}`:"",J=[`${D} file${D!==1?"s":""} downloaded`,this.totalBytesTransferred>0?V8(this.totalBytesTransferred):"",$].filter(Boolean).join(" | ");process.stderr.write(`${H.green(J)}
|
|
92
|
+
`)}}}var $W=P(()=>{N1()});import{existsSync as Df,statSync as WK0}from"fs";import{join as JW}from"path";var{spawn:Ff}=globalThis.Bun;async function g(D,F={}){let $=Ff({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(),B=await $.exited;return{stdout:J,stderr:Q,exitCode:B}}function t_(D){return D.split(".").map((F)=>{let $=Number.parseInt(F.replace(/[^0-9]/g,""),10);return Number.isNaN($)?0:$})}function HK0(D,F){let $=t_(D),J=t_(F);for(let Q=0;Q<Math.max($.length,J.length);Q++){let B=$[Q]||0,Y=J[Q]||0;if(B>Y)return!0;if(B<Y)return!1}return!0}async function $f(){try{let{stdout:F,exitCode:$,stderr:J}=await g(["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+)/),B=Q?Q[1]:void 0;if(!B)console.warn("Could not parse git-annex version from output:",F);return{installed:!0,version:B,minVersion:"10.0",compatible:B?HK0(B,"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 qK0(){if(process.env.GH_TOKEN)return{accessible:!0,username:"token-auth",useHttps:!0};try{let{stdout:D,stderr:F}=await g(["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}}}function Jf(){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 uJ(){let[D,F]=await Promise.all([$f(),qK0()]),$=[];if(!D.installed)$.push(`git-annex is not installed. Install: ${Jf()}`);else if(D.compatible===!1)$.push(`git-annex version ${D.version} is too old. Required: >= ${D.minVersion}`);if(!F.accessible){if(!(await Bf()).token)$.push("GitHub authentication not configured. Run 'gh auth login' to authenticate.")}return{gitAnnex:D,githubSSH:F,allPassed:$.length===0,errors:$}}async function p8(D){if(!Df(JW(D,".git")))return!1;try{let{exitCode:F}=await g(["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 zF(D,F={}){if(!F.force&&await p8(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 g(["git","init",D],{...Object.keys($).length>0?{env:$}:{}});if(Q!==0)return{success:!1,error:J.trim()||"Failed to initialize git repository"};let{stderr:B,exitCode:Y}=await g(["git","annex","init"],{cwd:D,...Object.keys($).length>0?{env:$}:{}});if(Y!==0)return{success:!1,error:B.trim()||"Failed to initialize git-annex"};let{exitCode:X}=await g(["git","annex","adjust","--unlock"],{cwd:D,...Object.keys($).length>0?{env:$}:{}});if(X!==0)console.warn("Could not switch to unlocked mode; data files will be symlinks");return{success:!0}}catch($){return{success:!1,error:$.message}}}async function Qf(D){try{let{exitCode:F,stderr:$}=await g(["git","annex","info"],{cwd:D});if(F===0)return{success:!0};if($.includes("First run: git-annex init")){let{stderr:J,exitCode:Q}=await g(["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 VF(D,F){let J=F||"include=*.edf or include=*.bdf or include=*.set or include=*.fif or include=*.vhdr or include=*.eeg or include=*.cnt or include=*.fdt or largerthan=100kb";try{let{stderr:Q,exitCode:B}=await g(["git","annex","config","--set","annex.largefiles",J],{cwd:D});if(B!==0)return{success:!1,error:Q.trim()||"Failed to configure largefiles"};return{success:!0}}catch(Q){return{success:!1,error:Q.message}}}async function U9(D,F="."){try{let{stderr:$,exitCode:J}=await g(["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 nD(D){return{accessKeyId:D.access_key_id,secretAccessKey:D.secret_access_key,sessionToken:D.session_token}}async function w4(D,F,$){let J=["git","annex","initremote",F.name,"type=S3","encryption=none",`bucket=${F.bucket}`,`fileprefix=${F.prefix.replace(/\/$/,"")}/`,`datacenter=${F.region}`,"signature=v4","autoenable=true","protocol=https"];if(F.publicUrl)J.push(`publicurl=${F.publicUrl}`);let Q={AWS_ACCESS_KEY_ID:$.accessKeyId,AWS_SECRET_ACCESS_KEY:$.secretAccessKey};if($.sessionToken)Q.AWS_SESSION_TOKEN=$.sessionToken;try{let{stderr:B,exitCode:Y}=await g(J,{cwd:D,env:Q});if(Y!==0){if(B.includes("already exists")){let X=await g(["git","annex","enableremote",F.name],{cwd:D,env:Q});if(X.exitCode===0)return{success:!0};return{success:!1,error:X.stderr.trim()}}return{success:!1,error:B.trim()||"Failed to configure S3 remote"}}return{success:!0}}catch(B){return{success:!1,error:B.message}}}async function A1(D){let{join:F}=await import("path"),{readdirSync:$,unlinkSync:J}=await import("fs"),Q=F(D,".git","annex","creds"),B;try{B=$(Q)}catch(Y){if(Y.code==="ENOENT")return;console.warn(`Warning: Could not read ${Q}: ${Y.message}`);return}for(let Y of B)try{J(F(Q,Y))}catch(X){console.warn(`Warning: Could not delete ${Y}: ${X.message}`)}}async function ZF(D,F="nemar-s3",$){try{let J={};if($){if(J.AWS_ACCESS_KEY_ID=$.accessKeyId,J.AWS_SECRET_ACCESS_KEY=$.secretAccessKey,$.sessionToken)J.AWS_SESSION_TOKEN=$.sessionToken}let{stderr:Q,exitCode:B}=await g(["git","annex","enableremote",F],{cwd:D,...Object.keys(J).length>0&&{env:Object.fromEntries(Object.entries({...process.env,...J}).filter((Y)=>Y[1]!=null))}});if(B===0)return{success:!0,enabled:!0};if(Q.includes("there is no special remote named")||Q.includes("not a special remote")||Q.includes("Unknown remote")||Q.includes("not found"))return{success:!0,enabled:!1};return{success:!1,enabled:!1,error:Q.trim()}}catch(J){return{success:!1,enabled:!1,error:J.message}}}async function KK0(){try{let{exitCode:D,stderr:F}=await g(["ssh","-T","-o","BatchMode=yes","-o","ConnectTimeout=5","git@github.com"]),$=F.includes("successfully authenticated");if(!$)console.warn("SSH test to github.com failed:",{exitCode:D,stderr:F.trim().slice(0,500)});return{works:$,error:$?void 0:F.trim().slice(0,500)}}catch(D){let F=D instanceof Error?D.message:String(D);return console.warn("SSH test exception:",F),{works:!1,error:F}}}async function Bf(){try{let{stdout:D,exitCode:F,stderr:$}=await g(["gh","auth","token"]);if(F!==0)return console.warn("gh CLI returned non-zero exit code:",F),console.warn("stderr:",$),{token:null,error:`gh auth token failed: ${$.trim()||"unknown error"}`};if(!D.trim())return console.warn("gh auth token returned empty output"),{token:null,error:"gh CLI returned empty token"};return{token:D.trim()}}catch(D){let F=D instanceof Error?D.message:String(D);if(console.error("Failed to get GitHub token from gh CLI:",F),F.includes("ENOENT")||F.includes("not found"))return{token:null,error:"gh CLI not installed (command not found)"};return{token:null,error:`gh CLI error: ${F}`}}}async function mJ(D){try{let{stdout:F,exitCode:$,stderr:J}=await g(["gh","api","user","--jq",".login"]);if($!==0){if(J.includes("not logged in")||J.includes("auth login"))return{authenticated:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};return{authenticated:!1,error:`gh CLI error: ${J.trim()||"unknown error"}`}}let Q=F.trim();if(!Q)return{authenticated:!1,error:"gh CLI returned empty username"};if(D){let B=Q.toLowerCase()===D.toLowerCase();return{authenticated:!0,username:Q,matches:B,error:B?void 0:`gh CLI authenticated as '${Q}', expected '${D}'`}}return{authenticated:!0,username:Q}}catch(F){let $=F instanceof Error?F.message:String(F);if($.includes("ENOENT")||$.includes("not found"))return{authenticated:!1,error:"gh CLI not installed. Install from https://cli.github.com/"};return{authenticated:!1,error:`Failed to verify gh CLI: ${$}`}}}async function lJ(D){if(!/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(D))return{accepted:!1,error:`Invalid repository format: ${D}`};let{stdout:F,exitCode:$,stderr:J}=await g(["gh","api","/user/repository_invitations"]);if($!==0){if(J.includes("not logged in")||J.includes("auth login"))return{accepted:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};if(J.includes("API rate limit")||J.includes("403"))return{accepted:!1,error:"GitHub API rate limit exceeded. Please try again in a few minutes."};if(J.includes("ENOENT")||J.includes("not found"))return{accepted:!1,error:"gh CLI not installed. Install from https://cli.github.com/"};return{accepted:!1,error:`Failed to list invitations: ${J.trim()||"unknown error"}`}}let Q=null;try{Q=JSON.parse(F||"[]").find((W)=>W.repository.full_name===D)?.id??null}catch(X){let G=X instanceof Error?X.message:String(X);return console.error("Failed to parse GitHub invitations response:",G),console.error(" Raw response (first 500 chars):",(F||"").slice(0,500)),{accepted:!1,error:`Failed to parse GitHub API response: ${G}`}}if(!Q){let{exitCode:X}=await g(["gh","api",`/repos/${D}`,"--silent"]);if(X===0)return{accepted:!0,alreadyCollaborator:!0};return{accepted:!1,error:`No pending invitation found for ${D}. You may need to accept it manually via GitHub.`}}let{exitCode:B,stderr:Y}=await g(["gh","api","--method","PATCH",`/user/repository_invitations/${Q}`]);if(B!==0)return{accepted:!1,error:`Failed to accept invitation: ${Y.trim()||"unknown error"}`};return{accepted:!0}}async function f6(D,F,$="origin"){let J=F;if(process.env.GH_TOKEN&&F.startsWith("git@github.com:")){let Q=process.env.GH_TOKEN.trim();if(!Q||/\s/.test(Q))return{success:!1,error:"GH_TOKEN environment variable is set but appears malformed (empty or contains whitespace)"};J=`https://github.com/${F.replace("git@github.com:","")}`,await g(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${Q}'`],{cwd:D})}else if(F.startsWith("git@github.com:")){let Q=F.replace("git@github.com:",""),B=await Bf();if(B.token)J=`https://github.com/${Q}`,await g(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${B.token}'`],{cwd:D});else{let Y=await KK0();if(Y.works)J=F;else return{success:!1,error:`GitHub authentication not configured.
|
|
93
93
|
|
|
94
94
|
gh CLI failed: ${B.error||"could not get token"}
|
|
95
95
|
SSH failed: ${Y.error||"could not connect"}
|
|
@@ -113,15 +113,15 @@ Fix one of these:
|
|
|
113
113
|
`)){if(!J.trim())continue;try{let Q=JSON.parse(J),B=Q.key;if(!B)continue;let Y=[...Q.whereis||[],...Q.untrusted||[]];for(let X of Y){if(!Array.isArray(X.urls))continue;for(let G of X.urls)if(typeof G==="string"&&(G.startsWith("http")||G.startsWith("s3://"))){$.set(B,G);break}if($.has(B))break}}catch(Q){if(Q instanceof SyntaxError)continue;console.error(`Warning: failed to process whereis entry: ${Q instanceof Error?Q.message:String(Q)}`)}}return $}async function Uf(D,F){let $=await g(["git","config",`remote.${F}.annex-uuid`],{cwd:D});if($.exitCode!==0)return null;return $.stdout.trim()||null}async function AK0(D,F,$){return(await g(["git","annex","setpresentkey",F,$,"1"],{cwd:D})).exitCode===0}async function Af(D,F,$){let J=0,Q=0,B=50;for(let Y=0;Y<F.length;Y+=B){let X=F.slice(Y,Y+B),G=await Promise.all(X.map((W)=>AK0(D,W,$)));for(let W of G)if(W)J++;else Q++}return{success:J,failed:Q}}var e_,ZK0=102400,UK0;var j4=P(()=>{N1();$W();e_=/^[a-zA-Z0-9._-]+$/;UK0=new Set([".edf",".bdf",".eeg",".vhdr",".vmrk",".set",".fdt",".cnt",".mff",".fif",".nii",".nii.gz",".mat",".bin"])});var Cf={};MF(Cf,{importOpenNeuro:()=>vK0});import{existsSync as Nf,mkdirSync as LK0,mkdtempSync as MK0,readFileSync as NK0,writeFileSync as CK0}from"fs";import{tmpdir as RK0}from"os";import{join as N9}from"path";function wK0(D){let F=D.match(/^ds(\d{6})$/);if(!F)throw Error(`Invalid OpenNeuro ID "${D}". Expected format: ds###### (e.g., ds007262)`);return`on${F[1]}`}function TK0(D){let F=N9(D,"dataset_description.json");if(!Nf(F))throw Error(`dataset_description.json not found at ${F}`);try{return JSON.parse(NK0(F,"utf-8"))}catch($){throw Error(`Failed to parse dataset_description.json at ${F}: ${$ instanceof Error?$.message:String($)}`)}}function jK0(){let D=process.env.AWS_ACCESS_KEY_ID,F=process.env.AWS_SECRET_ACCESS_KEY;if(!D||!F)throw Error("AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set in environment for S3 operations");return{accessKeyId:D,secretAccessKey:F,sessionToken:process.env.AWS_SESSION_TOKEN}}function PK0(D){return typeof D.DatasetDOI==="string"?D.DatasetDOI.replace(/^doi:/,""):null}function IK0(D,F,$,J,Q){let B=N9(D,".nemar");if(!Nf(B))LK0(B,{recursive:!0});let Y=Q?[{identifier:Q,identifier_type:"DOI",relation_type:"IsIdenticalTo"}]:[],X={version:"2.0",dataset_id:F,source:"openneuro",source_id:$,title:J.Name||F,authors:Array.isArray(J.Authors)?Object.fromEntries(J.Authors.map((G)=>[G,{}])):{},license:J.License||"CC0",dataset_type:J.DatasetType||"raw",related_identifiers:Y,pipeline_stage:"seeded"};CK0(N9(B,"metadata.json"),`${JSON.stringify(X,null,2)}
|
|
114
114
|
`)}async function SK0(D,F,$){let J=await g(["bash","-c",`curl -sfL '${D}' | aws s3 cp - '${F}' --region '${$}'`],{});if(J.exitCode!==0)return{success:!1,error:J.stderr.trim()};return{success:!0}}async function kK0(D,F,$,J){let Q=0,B=[];for(let Y=0;Y<D.length;Y+=$){let X=D.slice(Y,Y+$),G=await Promise.allSettled(X.map(async(W)=>{let q=await SK0(W.sourceUrl,W.destUri,F);if(!q.success)throw Error(q.error||"Unknown S3 copy error");return W.key}));for(let W=0;W<G.length;W++){let q=G[W];if(q.status==="fulfilled")Q++;else B.push({key:X[W].key,error:q.reason?.message||"Unknown error"})}J?.(Q,D.length,X[X.length-1].key)}return{copied:Q,failed:B}}async function vK0(D,F={}){let $=wK0(D),J=F.workDir||MK0(N9(RK0(),`nemar-import-${$}-`)),Q=N9(J,$);console.log(H.cyan(`
|
|
115
115
|
Importing OpenNeuro dataset ${D} -> ${$}
|
|
116
|
-
`)),console.log(H.
|
|
116
|
+
`)),console.log(H.dim(`Working directory: ${J}`));let B=N("Cloning OpenNeuro dataset...").start(),Y=`https://github.com/${OK0}/${D}.git`,X=await U8(Y,Q);if(!X.success)B.fail(`Failed to clone: ${X.error}`),process.exit(1);B.succeed(`Cloned ${D}`);let G=TK0(Q),W=G.Name||D,q=PK0(G);if(console.log(H.dim(` Dataset: ${W}`)),q)console.log(H.dim(` OpenNeuro DOI: ${q}`));let K=N("Creating NEMAR dataset record...").start();try{let h=await i_({dataset_id:$,name:W,description:`Imported from OpenNeuro ${D}`,source:"openneuro",source_id:D});K.succeed(`Created ${h.dataset_id} (${h.github_repo})`)}catch(h){let t=h instanceof Error?h.message:String(h);if(t.includes("already exists")||t.includes("409"))K.warn(`Dataset ${$} already exists, continuing...`);else K.fail(`Failed to create dataset: ${t}`),process.exit(1)}let Z=N("Deploying CI workflows...").start();try{await EF($),Z.succeed("CI workflows deployed (BIDS validation, LLM enrichment, archive generation)")}catch(h){let t=h instanceof Error?h.message:String(h);Z.warn(`CI deployment failed (non-fatal): ${t}`),console.log(H.dim(` Workflows can be deployed later with: nemar admin ci add ${$}`))}let z=new Map;if(!F.skipData){let h=N("Mapping annexed files from OpenNeuro S3...").start(),t=await g(["git","annex","enableremote","s3-PUBLIC"],{cwd:Q});if(t.exitCode!==0)h.fail(`Failed to enable s3-PUBLIC remote: ${t.stderr.trim()}`),process.exit(1);if(z=await Zf(Q),z.size===0)h.warn("No annexed files found, skipping data copy");else h.succeed(`Found ${z.size} annexed files`)}let U=N("Configuring NEMAR remote...").start(),A=await g(["git","remote","remove","origin"],{cwd:Q});if(A.exitCode!==0&&!A.stderr.includes("No such remote"))U.fail(`Failed to remove OpenNeuro remote: ${A.stderr.trim()}`),process.exit(1);let M=`git@github.com:nemarDatasets/${$}.git`,L=await f6(Q,M,"origin");if(!L.success)U.fail(`Failed to configure remote: ${L.error}`),process.exit(1);if(U.succeed("Configured NEMAR remote"),!F.skipData&&z.size>0){let h=N("Setting up NEMAR S3 remote...").start(),t=jK0(),t0=await w4(Q,{name:"nemar-s3",bucket:Lf,prefix:`${$}/objects`,region:Mf},t);if(!t0.success)h.fail(`Failed to configure S3 remote: ${t0.error}`),process.exit(1);let R=await Uf(Q,"nemar-s3");if(!R)h.fail("Failed to get NEMAR S3 remote UUID"),process.exit(1);h.succeed("Configured NEMAR S3 remote");let A0=N("Preparing S3-to-S3 copy...").start(),d=[],p=[];for(let[GD,M8]of z){if(!M8.startsWith("http")){p.push(GD);continue}let N8=`s3://${Lf}/${$}/objects/${GD}`;d.push({key:GD,sourceUrl:M8,destUri:N8})}if(p.length>0)console.log(H.yellow(` Skipped ${p.length} keys (no source URL)`));A0.succeed(`Prepared ${d.length} files for S3-to-S3 copy`);let W0=N(`Copying ${d.length} files to NEMAR S3...`).start(),w0=await kK0(d,Mf,8,(GD,M8)=>{W0.text=`Copying files to NEMAR S3... ${GD}/${M8}`});if(w0.failed.length>0){console.error(H.red(`
|
|
117
117
|
Failed to copy ${w0.failed.length} files:`));for(let GD of w0.failed.slice(0,5))console.error(H.red(` ${GD.key}: ${GD.error}`));if(w0.failed.length>5)console.error(H.red(` ... and ${w0.failed.length-5} more`));W0.fail(`${w0.failed.length} of ${d.length} files failed to copy. Re-run to retry.`),process.exit(1)}W0.succeed(`Copied ${w0.copied} files to NEMAR S3`);let K0=N("Registering files in git-annex...").start(),XD=new Set(w0.failed.map((GD)=>GD.key)),x0=d.filter((GD)=>!XD.has(GD.key)).map((GD)=>GD.key),$1=await Af(Q,x0,R);if($1.failed>0)console.log(H.yellow(` ${$1.failed} keys failed to register (non-fatal)`));K0.succeed(`Registered ${$1.success} files in git-annex`)}let C=N("Seeding metadata...").start();try{IK0(Q,$,D,G,q)}catch(h){C.fail(`Failed to seed metadata: ${h instanceof Error?h.message:String(h)}`),process.exit(1)}let O=await g(["git","add",".nemar/metadata.json"],{cwd:Q});if(O.exitCode!==0)C.fail(`Failed to stage metadata: ${O.stderr.trim()}`),process.exit(1);let y=await g(["git","commit","-m",`Add NEMAR metadata (imported from OpenNeuro ${D})`],{cwd:Q});if(y.exitCode!==0&&!y.stdout.includes("nothing to commit"))C.fail(`Failed to commit metadata: ${y.stderr.trim()}`),process.exit(1);C.succeed("Seeded .nemar/metadata.json");let w=N("Pushing to nemarDatasets...").start(),I=await Z8(Q,"origin");if(!I.success)w.fail(`Failed to push: ${I.error}`),process.exit(1);w.succeed("Pushed to nemarDatasets");let T=N("Requesting publication...").start();try{await hJ($),T.succeed("Publication requested")}catch(h){let t=h instanceof Error?h.message:String(h);T.fail(`Failed to request publication: ${t}`),process.exit(1)}let f=N("Approving publication...").start(),n=10,s=!1;for(let h=1;h<=n;h++)try{await bJ($,h>1,!1,!1),s=!0;break}catch(t){let t0=t instanceof Error?t.message:String(t);if(h<n)f.text=`Approving publication... (attempt ${h+1}/${n})`,await new Promise((R)=>setTimeout(R,3000));else f.fail(`Failed to approve publication after ${n} attempts: ${t0}`),process.exit(1)}if(s)f.succeed("Publication approved");console.log(H.green(`
|
|
118
|
-
Import and publish complete: ${D} -> ${$}`)),console.log(H.
|
|
118
|
+
Import and publish complete: ${D} -> ${$}`)),console.log(H.dim(` GitHub: https://github.com/nemarDatasets/${$}`)),console.log(H.dim(` Working dir: ${Q}`))}var OK0="OpenNeuroDatasets",Lf="nemar",Mf="us-east-2";var Rf=P(()=>{N1();v3();O4();j4()});var Sf={};MF(Sf,{runE2ETest:()=>bK0});import{cpSync as yK0,existsSync as Pf,mkdirSync as xK0,mkdtempSync as Of,readFileSync as _K0,rmSync as wf,writeFileSync as BW}from"fs";import{tmpdir as Tf}from"os";import{join as h6,resolve as YW}from"path";var{spawn:fK0}=globalThis.Bun;function PD(D,...F){if(D.verbose)console.log(" ",...F)}async function If(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 gK0(D){let F=[];for(let{name:$,fn:J}of D){let Q=await If($,J);if(F.push(Q),!Q.passed)break}return F}async function C9(D,F={}){let $=fK0({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(),B=await $.exited;return{stdout:J,stderr:Q,exitCode:B}}function tD(D,F){if(!D.success)throw Error(`${F}: ${D.error}`)}function jf(D){if(!D.creds)throw Error("credentials not yet fetched");return D.creds}function hK0(){let D=[YW(__dirname,"../../test/fixtures/bids-minimal"),YW(__dirname,"../test/fixtures/bids-minimal"),YW(process.cwd(),"test/fixtures/bids-minimal")];for(let F of D)if(Pf(F))return F;throw Error("Could not find test/fixtures/bids-minimal. Run from the nemar-cli root directory.")}async function bK0(D){let F=D.verbose??!1,$=performance.now(),J=Of(h6(Tf(),"nemar-e2e-upload-")),Q=Of(h6(Tf(),"nemar-e2e-clone-")),B={uploadDir:J,cloneDir:Q,verbose:F},Y=[];if(!D.skipReset)Y.push({name:"Reset nm099999",fn:async()=>{let G=await c_(P4);if(PD(B,`S3 objects deleted: ${G.steps.s3_deleted}`),PD(B,`GitHub recreated: ${G.steps.github_recreated}`),PD(B,`D1 cleaned: ${G.steps.d1_cleaned}`),!G.success){let W=[];if(!G.steps.github_recreated)W.push("GitHub");if(!G.steps.d1_cleaned)W.push("D1");throw Error(`Reset partially failed: ${W.join(", ")}`)}}});Y.push({name:"Prepare upload",fn:async()=>{let G=hK0();yK0(G,J,{recursive:!0}),PD(B,`Copied fixtures to ${J}`)}},{name:"Init git + annex",fn:async()=>{tD(await zF(J,{force:!0}),"initDataset"),tD(await VF(J),"configureLargefiles"),PD(B,"Git + git-annex initialized")}},{name:"Configure remotes",fn:async()=>{B.creds=await R4(P4),PD(B,`S3 prefix: ${B.creds.s3.prefix}`),tD(await w4(J,{name:"nemar-s3",bucket:B.creds.s3.bucket,prefix:`${P4}/objects`,region:B.creds.s3.region,publicUrl:`https://${B.creds.s3.bucket}.s3.${B.creds.s3.region}.amazonaws.com/${P4}/objects`},nD(B.creds.credentials)),"configureS3Remote");let G=`git@github.com:nemarDatasets/${P4}.git`;tD(await f6(J,G),"configureGitHubRemote"),PD(B,"S3 + GitHub remotes configured")}},{name:"Upload to S3",fn:async()=>{tD(await U9(J),"gitAnnexAdd"),tD(await g6(J,"Initial BIDS dataset"),"saveDataset");let G=await T4(J,"nemar-s3",4,nD(jf(B).credentials));tD(G,"copyToAnnexRemote"),PD(B,`Files copied to S3: ${G.filesCopied}`),await A1(J)}},{name:"Push to GitHub",fn:async()=>{let G=await Z8(J);if(tD(G,"pushToGitHub"),G.warning)PD(B,`Warning: ${G.warning}`);PD(B,"Pushed to GitHub (main + git-annex branches)")}},{name:"Clone fresh",fn:async()=>{let G=`git@github.com:nemarDatasets/${P4}.git`;tD(await U8(G,Q),"cloneDataset");let W=await ZF(Q,"nemar-s3");if(!W.success)throw Error(`enableS3Remote: ${W.error}`);PD(B,`Clone at ${Q}, S3 remote enabled: ${W.enabled}`)}},{name:"Download + verify",fn:async()=>{let G=nD(jf(B).credentials),W={AWS_ACCESS_KEY_ID:G.accessKeyId,AWS_SECRET_ACCESS_KEY:G.secretAccessKey};if(G.sessionToken)W.AWS_SESSION_TOKEN=G.sessionToken;let{stdout:q,stderr:K,exitCode:Z}=await C9(["git","annex","get","."],{cwd:Q,env:W});if(Z!==0)throw Error(`getDatasetData: ${K.trim()}`);let z=q.match(/^get .+ ok$/gm);PD(B,`Files downloaded: ${z?z.length:0}`);let U=h6(Q,"sub-01/eeg/sub-01_task-rest_eeg.edf");if(!Pf(U))throw Error("EDF file not found after download");let{size:A}=Bun.file(U);if(A<512)throw Error(`EDF file too small: ${A} bytes`);PD(B,`EDF file verified: ${A} bytes`)}},{name:"Update cycle",fn:async()=>{let G=h6(Q,"sub-02/eeg");xK0(G,{recursive:!0});let W=Buffer.alloc(1024);W.write("0".padEnd(8),0,"ascii"),BW(h6(G,"sub-02_task-rest_eeg.edf"),W),BW(h6(G,"sub-02_task-rest_eeg.json"),JSON.stringify({TaskName:"rest",SamplingFrequency:256}));let q=_K0(h6(Q,"participants.tsv"),"utf-8");BW(h6(Q,"participants.tsv"),`${q.trimEnd()}
|
|
119
119
|
sub-02 30 F
|
|
120
120
|
`);let K=`e2e-update-${Date.now()}`,{exitCode:Z}=await C9(["git","checkout","-b",K],{cwd:Q});if(Z!==0)throw Error("Failed to create update branch");tD(await U9(Q),"gitAnnexAdd (update)"),tD(await g6(Q,"Add sub-02"),"saveDataset (update)"),B.creds=await R4(P4);let z=await T4(Q,"nemar-s3",4,nD(B.creds.credentials));tD(z,"copyToAnnexRemote (update)"),PD(B,`Update files copied to S3: ${z.filesCopied}`),await A1(Q);let U=await Z8(Q,"origin",K);tD(U,"pushToGitHub (update branch)");let{exitCode:A,stderr:M}=await C9(["git","push","origin","git-annex"],{cwd:Q});if(A!==0)throw Error(`Failed to push git-annex branch: ${M.trim()}`);PD(B,`Update pushed to branch: ${K}`)}});let X=await gK0(Y);if(!D.skipCleanup&&X.every((G)=>G.passed))X.push(await If("Cleanup",async()=>{await C9(["chmod","-R","u+w",J]),await C9(["chmod","-R","u+w",Q]),wf(J,{recursive:!0,force:!0}),wf(Q,{recursive:!0,force:!0}),PD(B,"Temp directories cleaned up")}));return uK0(X,$,J,Q,D.skipCleanup)}function uK0(D,F,$,J,Q){let B={passed:D.every((Y)=>Y.passed),steps:D,total_duration_ms:Math.round(performance.now()-F)};if(Q)B.upload_dir=$,B.clone_dir=J;return B}var __dirname="/home/runner/work/nemar-cli/nemar-cli/src/lib",P4="nm099999";var kf=P(()=>{O4();j4()});var Wg,JI0;var Hg=P(()=>{Wg=["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"],JI0=new Set(Wg)});function qg(D){return D.replace(/^(doi:|https?:\/\/(dx\.)?doi\.org\/)/i,"").trim()}function Kg(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 Eg=P(()=>{Hg()});var Ng={};MF(Ng,{queryDataCiteDoi:()=>Ag,queryCrossrefDoi:()=>Lg,matchCreatorsToAuthors:()=>Mg,extractDoisFromBids:()=>Zg,discoverOrcidsFromReferencedDois:()=>IE0});function Zg(D){let F=[],$=new Set,J=(Q,B)=>{let Y=qg(Q).trim();if(wE0.test(Y)&&!$.has(Y))$.add(Y),F.push({doi:Y,source:B})};if(Array.isArray(D.SourceDatasets))for(let Q of D.SourceDatasets){if(!Q||typeof Q!=="object")continue;let B=Q;if(typeof B.DOI==="string")J(B.DOI,"SourceDatasets");else if(typeof B.URL==="string"){let Y=B.URL.match(/(?:doi\.org\/|doi:)(10\.\d{4,}\/.+)/);if(Y)J(Y[1],"SourceDatasets")}}if(Array.isArray(D.ReferencesAndLinks))for(let Q of D.ReferencesAndLinks){if(typeof Q!=="string"||!Q)continue;let B=Q.match(/(?:doi\.org\/|^)(10\.\d{4,}\/[^\s]+)/);if(B)J(B[1],"ReferencesAndLinks")}return F}function Ug(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 Ag(D){try{let F=await fetch(`${jE0}/${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 Ug("DataCite",D,F),null}}async function Lg(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((B)=>{let Y=[];if(B.ORCID)Y.push({nameIdentifier:B.ORCID,nameIdentifierScheme:"ORCID"});return{name:B.family&&B.given?`${B.family}, ${B.given}`:B.name||B.family||"",givenName:B.given,familyName:B.family,nameIdentifiers:Y,affiliation:(B.affiliation||[]).filter((X)=>X.name)}}).filter((B)=>B.name.trim()!=="");return{doi:D,creators:Q}}catch(F){return Ug("Crossref",D,F),null}}async function PE0(D){return await Ag(D)??await Lg(D)}function A8(D){return D.normalize("NFD").replace(/\p{Diacritic}/gu,"").toLowerCase().trim()}function zg(D){if(!D)return"";return A8(D).charAt(0)}function Mg(D,F){let $=[],J=new Set,Q=new Set,B=F.map((Y)=>({original:Y,parsed:Kg(Y)}));for(let Y=0;Y<D.length;Y++){if(Q.has(Y))continue;let X=D[Y],G=A8(X.name);for(let W of B){if(J.has(W.original))continue;if(A8(W.original)===G){$.push({bidsAuthor:W.original,matchedCreator:X,confidence:"exact"}),J.add(W.original),Q.add(Y);break}if(W.parsed.familyName&&W.parsed.givenName){if(A8(`${W.parsed.givenName} ${W.parsed.familyName}`)===G){$.push({bidsAuthor:W.original,matchedCreator:X,confidence:"exact"}),J.add(W.original),Q.add(Y);break}}if(X.givenName&&X.familyName){let q=A8(`${X.givenName} ${X.familyName}`);if(A8(W.original)===q){$.push({bidsAuthor:W.original,matchedCreator:X,confidence:"exact"}),J.add(W.original),Q.add(Y);break}}}}for(let Y=0;Y<D.length;Y++){if(Q.has(Y))continue;let X=D[Y];if(!X.familyName)continue;let G=A8(X.familyName),W=zg(X.givenName);for(let q of B){if(J.has(q.original))continue;if(!q.parsed.familyName)continue;if(A8(q.parsed.familyName)!==G)continue;let Z=zg(q.parsed.givenName);if(Z&&W&&Z===W){$.push({bidsAuthor:q.original,matchedCreator:X,confidence:"high"}),J.add(q.original),Q.add(Y);break}}}for(let Y=0;Y<D.length;Y++){if(Q.has(Y))continue;let X=D[Y];if(!X.familyName)continue;let G=A8(X.familyName);for(let W of B){if(J.has(W.original))continue;if(!W.parsed.familyName)continue;if(A8(W.parsed.familyName)===G){$.push({bidsAuthor:W.original,matchedCreator:X,confidence:"medium"}),J.add(W.original),Q.add(Y);break}}}return $}async function IE0(D,F){let $=Zg(D);if($.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:0};let J=Array.isArray(D.Authors)?D.Authors.filter((W)=>typeof W==="string"):[];if(J.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:$.length};let Q=new Set;if(F){for(let[W,q]of Object.entries(F))if(q.orcid)Q.add(W)}let B=J.filter((W)=>!Q.has(W));if(B.length===0)return{discoveries:{},unresolvedDois:[],totalDoisQueried:$.length};let Y=[],X=new Map;for(let W=0;W<$.length;W+=Vg){let q=$.slice(W,W+Vg),K=await Promise.all(q.map((Z)=>PE0(Z.doi)));for(let Z=0;Z<q.length;Z++)if(K[Z])X.set(q[Z].doi,K[Z]?.creators??[]);else Y.push(q[Z].doi)}let G={};for(let[W,q]of X){let K=q.filter((z)=>z.nameIdentifiers?.some((U)=>U.nameIdentifierScheme==="ORCID"));if(K.length===0)continue;let Z=Mg(K,B);for(let z of Z){if(G[z.bidsAuthor])continue;let U=z.matchedCreator.nameIdentifiers.find((L)=>L.nameIdentifierScheme==="ORCID");if(!U)continue;let A=U.nameIdentifier.replace(/^https?:\/\/orcid\.org\//i,"").trim();if(!TE0.test(A))continue;let M=z.matchedCreator.affiliation?.filter((L)=>L.name).map((L)=>({name:L.name,...L.affiliationIdentifier&&{identifier:L.affiliationIdentifier},...L.affiliationIdentifierScheme&&{scheme:L.affiliationIdentifierScheme}}));G[z.bidsAuthor]={orcid:A,affiliations:M?.length?M:void 0,sourceDoi:W,confidence:z.confidence}}}return{discoveries:G,unresolvedDois:Y,totalDoisQueried:$.length}}var wE0,TE0,jE0="https://api.datacite.org/application/vnd.datacite.datacite+json",Vg=5;var Cg=P(()=>{Eg();wE0=/^10\.\d{4,}\/[^\s]+$/,TE0=/^\d{4}-\d{4}-\d{4}-[\dX]{4}$/});N1();var FH=e(DH(),1),{program:Xz0,createCommand:Gz0,createArgument:Wz0,createOption:Hz0,CommanderError:qz0,InvalidArgumentError:Kz0,InvalidOptionArgumentError:Ez0,Command:FD,Argument:zz0,Option:Vz0,Help:Zz0}=FH.default;var JH=process.argv.includes("--help-all");if(process.argv.includes("--no-color"))H.level=0;var $H=process.argv.indexOf("--help-all");if($H!==-1)process.argv[$H]="--help";var OF=FD.prototype.addHelpText,QH=`
|
|
121
121
|
Run with --help-all for examples and detailed descriptions.
|
|
122
122
|
`,y9=new WeakSet;FD.prototype.addHelpText=function(D,F){if(D==="after"||D==="afterAll"){if(JH)return OF.call(this,D,F);if(!y9.has(this))return y9.add(this),OF.call(this,D,QH);return this}return OF.call(this,D,F)};var mh={formatHelp(D,F){let $=F.padWidth(D,F),J=F.helpWidth??80,Q=2,B=2;function Y(U,A,M){if(M){let L=" ".repeat(Math.max(0,$+2-U.length)),C=`${A}${L}${M}`;return F.wrap(C,J-2,$+2)}return A}function X(U){return U.join(`
|
|
123
|
-
`).replace(/^/gm," ".repeat(2))}let G=[];G.push(`Usage: ${F.commandUsage(D)}`,"");let W=F.commandDescription(D);if(W.length>0)G.push(F.wrap(W,J,0),"");let q=F.visibleArguments(D).map((U)=>{let A=F.argumentTerm(U);return Y(A,H.
|
|
124
|
-
`)}};function BH(D){YH(D)}function YH(D){D.configureHelp(mh);for(let F of D.commands)YH(F)}function m6(D,F){if(JH)OF.call(D,"after",F);else if(!y9.has(D))y9.add(D),OF.call(D,"after",QH)}N1();import{existsSync as mK0}from"fs";import{join as lK0}from"path";N6();v3();O4();KF();N6();async function y0(D,F,$=!1){if(F.no)return"declined";if(F.yes)return"confirmed";try{let{confirmed:J}=await B0.prompt([{type:"confirm",name:"confirmed",message:D,default:$}]);return J?"confirmed":"cancelled"}catch(J){let Q=J instanceof Error?J.message:String(J);if(Q.includes("closed")||Q.includes("TTY")||Q.includes("SIGINT")||Q.includes("readline"))console.error("Interactive prompt unavailable (non-interactive terminal or interrupted)"),console.error(" Use --yes or --no flags for non-interactive mode");else console.error("Prompt error:",Q);return"cancelled"}}async function s_(D,F,$){if($.no)return"declined";if($.yes)return"confirmed";try{let{input:J}=await B0.prompt([{type:"input",name:"input",message:D,validate:(Q)=>{if(Q!==F)return`Input does not match. Expected: ${F}`;return!0}}]);return J===F?"confirmed":"cancelled"}catch(J){let Q=J instanceof Error?J.message:String(J);if(Q.includes("closed")||Q.includes("TTY")||Q.includes("SIGINT")||Q.includes("readline"))console.error("Interactive prompt unavailable (non-interactive terminal or interrupted)"),console.error(" Use --yes or --no flags for non-interactive mode");else console.error("Prompt error:",Q);return"cancelled"}}var I0="-y, --yes",a0="-n, --no",S0="Skip confirmation and proceed",g0="Skip confirmation and decline";j4();function eD(D,F,$,J){if(D instanceof i){F.fail(D.message);let Q=J?.[D.statusCode];if(Q)console.log(H.
|
|
123
|
+
`).replace(/^/gm," ".repeat(2))}let G=[];G.push(`Usage: ${F.commandUsage(D)}`,"");let W=F.commandDescription(D);if(W.length>0)G.push(F.wrap(W,J,0),"");let q=F.visibleArguments(D).map((U)=>{let A=F.argumentTerm(U);return Y(A,H.blue(A),F.argumentDescription(U))});if(q.length>0)G.push(H.bold("Arguments:"),X(q),"");let K=F.visibleOptions(D).map((U)=>{let A=F.optionTerm(U);return Y(A,H.cyan(A),F.optionDescription(U))});if(K.length>0)G.push(H.bold("Options:"),X(K),"");let z=F.visibleCommands(D).sort((U,A)=>U.name().localeCompare(A.name())).map((U)=>{let A=F.subcommandTerm(U);return Y(A,H.bold.cyan(A),F.subcommandDescription(U))});if(z.length>0)G.push(H.bold("Commands:"),X(z),"");return G.join(`
|
|
124
|
+
`)}};function BH(D){YH(D)}function YH(D){D.configureHelp(mh);for(let F of D.commands)YH(F)}function m6(D,F){if(JH)OF.call(D,"after",F);else if(!y9.has(D))y9.add(D),OF.call(D,"after",QH)}N1();import{existsSync as mK0}from"fs";import{join as lK0}from"path";N6();v3();O4();KF();N6();async function y0(D,F,$=!1){if(F.no)return"declined";if(F.yes)return"confirmed";try{let{confirmed:J}=await B0.prompt([{type:"confirm",name:"confirmed",message:D,default:$}]);return J?"confirmed":"cancelled"}catch(J){let Q=J instanceof Error?J.message:String(J);if(Q.includes("closed")||Q.includes("TTY")||Q.includes("SIGINT")||Q.includes("readline"))console.error("Interactive prompt unavailable (non-interactive terminal or interrupted)"),console.error(" Use --yes or --no flags for non-interactive mode");else console.error("Prompt error:",Q);return"cancelled"}}async function s_(D,F,$){if($.no)return"declined";if($.yes)return"confirmed";try{let{input:J}=await B0.prompt([{type:"input",name:"input",message:D,validate:(Q)=>{if(Q!==F)return`Input does not match. Expected: ${F}`;return!0}}]);return J===F?"confirmed":"cancelled"}catch(J){let Q=J instanceof Error?J.message:String(J);if(Q.includes("closed")||Q.includes("TTY")||Q.includes("SIGINT")||Q.includes("readline"))console.error("Interactive prompt unavailable (non-interactive terminal or interrupted)"),console.error(" Use --yes or --no flags for non-interactive mode");else console.error("Prompt error:",Q);return"cancelled"}}var I0="-y, --yes",a0="-n, --no",S0="Skip confirmation and proceed",g0="Skip confirmation and decline";j4();function eD(D,F,$,J){if(D instanceof i){F.fail(D.message);let Q=J?.[D.statusCode];if(Q)console.log(H.dim(` ${Q}`));else if(D.statusCode===403)console.log(H.dim(" This command requires admin privileges"))}else F.fail($),console.log(H.dim(` Error details: ${p0(D)}`))}async function vf(D,F){let{spawn:$}=awaitPromise.resolve(globalThis.Bun),J=F==="README"?`repos/${D}/readme`:`repos/${D}/contents/${F}`,Q=$({cmd:["gh","api",J,"--jq",".content"],stdout:"pipe",stderr:"pipe"}),B=await new Response(Q.stdout).text(),Y=await new Response(Q.stderr).text();if(await Q.exited!==0){if(Y.trim()&&!Y.includes("404"))console.warn(`[fetchGitHubFileContent] Error fetching ${F}: ${Y.trim()}`);return null}if(!B.trim())return null;return Buffer.from(B.trim(),"base64").toString("utf-8")}var KD=new FD("admin").description("Admin commands (requires admin privileges)").addHelpText("after",`
|
|
125
125
|
Description:
|
|
126
126
|
Administrative commands for managing NEMAR users and datasets.
|
|
127
127
|
These commands require admin privileges.
|
|
@@ -151,7 +151,7 @@ Examples:
|
|
|
151
151
|
$ nemar admin repo public nm000104 # Make dataset repo public
|
|
152
152
|
$ nemar admin ci check nm000104 # Check CI status
|
|
153
153
|
$ nemar admin s3 regenerate-iam john_doe # Regenerate AWS credentials
|
|
154
|
-
$ nemar admin doi create nm000104 # Create concept DOI`);function d0(){if(!v0())return console.log(H.red("Error: Not authenticated")),console.log(H.
|
|
154
|
+
$ nemar admin doi create nm000104 # Create concept DOI`);function d0(){if(!v0())return console.log(H.red("Error: Not authenticated")),console.log(H.dim(" Run 'nemar auth login' first")),!1;return!0}KD.command("users").description("List NEMAR users").option("--pending","Show only pending approval").option("--verified","Show only verified (awaiting approval)").option("--approved","Show only approved users").option("--revoked","Show only revoked users").option("--role <role>","Filter by role: owner, admin, or member").addHelpText("after",`
|
|
155
155
|
Examples:
|
|
156
156
|
$ nemar admin users # List all users
|
|
157
157
|
$ nemar admin users --verified # Users awaiting approval
|
|
@@ -159,11 +159,11 @@ Examples:
|
|
|
159
159
|
$ nemar admin users --role owner # List all owners
|
|
160
160
|
$ nemar admin users --approved --role member # Approved regular users`).action(async(D)=>{if(!d0())return;let F;if(D.pending)F="pending";else if(D.verified)F="verified";else if(D.approved)F="approved";else if(D.revoked)F="revoked";let $=D.role;if($&&!["owner","admin","member"].includes($))console.error(H.red(`Invalid role '${$}'. Must be: owner, admin, or member`)),process.exit(1);let J=N("Fetching users...").start();try{let Q=await A_(F,$);if(J.stop(),Q.users.length===0){let Y=[F,$].filter(Boolean).join(", ");console.log(H.yellow(`No users found${Y?` (filter: ${Y})`:""}`));return}let B=[F,$?`role=${$}`:""].filter(Boolean).join(", ");console.log(`
|
|
161
161
|
${H.cyan("NEMAR Users")} (${Q.count} total${B?`, filter: ${B}`:""})
|
|
162
|
-
`);for(let Y of Q.users){let X={pending:H.
|
|
162
|
+
`);for(let Y of Q.users){let X={pending:H.dim,verified:H.yellow,approved:H.green,revoked:H.red}[Y.status]||H.white,G=Y.role||"member",W=G==="owner"?H.red(" [owner]"):G==="admin"?H.magenta(" [admin]"):H.dim(" [member]"),q=Y.email_verified?"":H.dim(" (unverified)");console.log(` ${H.cyan(Y.username)}${W}`),console.log(` Email: ${Y.email}${q}`),console.log(` GitHub: @${Y.github_username}`),console.log(` Status: ${X(Y.status)}`),console.log(` Created: ${new Date(Y.created_at).toLocaleDateString()}`),console.log()}}catch(Q){eD(Q,J,"Failed to fetch users")}});KD.command("approve").description("Approve a pending user").argument("<username>","Username to approve").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;console.log(H.cyan(`
|
|
163
163
|
Approving user: ${D}
|
|
164
|
-
`)),console.log("This will:"),console.log(" 1. Set up S3 access for the user"),console.log(" 2. Notify them to retrieve their API key via CLI"),console.log();let $=await y0(`Approve ${D}?`,F,!0);if($!=="confirmed"){console.log(H.
|
|
164
|
+
`)),console.log("This will:"),console.log(" 1. Set up S3 access for the user"),console.log(" 2. Notify them to retrieve their API key via CLI"),console.log();let $=await y0(`Approve ${D}?`,F,!0);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N(`Approving ${D}...`).start();try{let Q=await L_(D);if(J.succeed(`Approved ${D}`),console.log(),console.log(` Email: ${Q.user.email}`),console.log(` Status: ${H.green(Q.user.status)}`),Q.iam_setup===!0)console.log(` S3 Access: ${H.green("configured")}`);else if(Q.iam_setup===!1)console.log(` S3 Access: ${H.red("NOT configured")}`);if(console.log(),Q.email_sent)console.log(H.green("User notified to retrieve their API key via 'nemar auth retrieve-key'"));else console.log(H.yellow("Warning: Notification email failed to send.")),console.log(H.yellow("Please notify the user manually to run 'nemar auth retrieve-key'"));if(Q.warning)console.log(),console.log(H.yellow(`Warning: ${Q.warning}`))}catch(Q){eD(Q,J,"Failed to approve user",{404:"User not found or not in 'verified' status"})}});KD.command("revoke").description("Revoke user access").argument("<username>","Username to revoke").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;if(YD().username===D){console.log(H.red("Error: Cannot revoke your own access"));return}console.log(H.red(`
|
|
165
165
|
Revoking access for: ${D}
|
|
166
|
-
`)),console.log(H.yellow("This will:")),console.log(" 1. Invalidate all API keys for this user"),console.log(" 2. Remove them from datasets they have access to"),console.log(" 3. Send them a notification email"),console.log();let J=await s_(`Type '${D}' to confirm revocation:`,D,F);if(J!=="confirmed"){console.log(H.
|
|
166
|
+
`)),console.log(H.yellow("This will:")),console.log(" 1. Invalidate all API keys for this user"),console.log(" 2. Remove them from datasets they have access to"),console.log(" 3. Send them a notification email"),console.log();let J=await s_(`Type '${D}' to confirm revocation:`,D,F);if(J!=="confirmed"){console.log(H.dim(J==="declined"?"Skipped":"Cancelled"));return}let Q=N(`Revoking ${D}...`).start();try{await M_(D),Q.succeed(`Revoked access for ${D}`)}catch(B){eD(B,Q,"Failed to revoke user",{404:"User not found"})}});KD.command("role").description("Change a user's role (owner only)").argument("<username>","Username to change role for").argument("<role>","New role: owner, admin, or member").option("-y, --yes","Skip confirmation prompt").addHelpText("after",`
|
|
167
167
|
Permission Model:
|
|
168
168
|
owner - Full access: can manage users, roles, datasets, DOIs, and system settings
|
|
169
169
|
admin - Can approve/revoke users, manage datasets and DOIs
|
|
@@ -178,21 +178,21 @@ Rules:
|
|
|
178
178
|
Examples:
|
|
179
179
|
$ nemar admin role john_doe admin # Promote to admin
|
|
180
180
|
$ nemar admin role john_doe member # Demote to member
|
|
181
|
-
$ nemar admin role jane_doe owner -y # Promote to owner (skip confirm)`).action(async(D,F,$)=>{if(!d0())return;if(!["owner","admin","member"].includes(F))console.error(H.red(`Invalid role '${F}'. Must be: owner, admin, or member`)),process.exit(1);if(!$.yes){let{confirmed:Q}=await B0.prompt([{type:"confirm",name:"confirmed",message:`Change ${D}'s role to '${F}'?`,default:!1}]);if(!Q){console.log(H.
|
|
181
|
+
$ nemar admin role jane_doe owner -y # Promote to owner (skip confirm)`).action(async(D,F,$)=>{if(!d0())return;if(!["owner","admin","member"].includes(F))console.error(H.red(`Invalid role '${F}'. Must be: owner, admin, or member`)),process.exit(1);if(!$.yes){let{confirmed:Q}=await B0.prompt([{type:"confirm",name:"confirmed",message:`Change ${D}'s role to '${F}'?`,default:!1}]);if(!Q){console.log(H.dim("Cancelled"));return}}let J=N(`Changing ${D}'s role to '${F}'...`).start();try{let Q=await N_(D,F);if(J.succeed(Q.message),Q.tokens_revoked!==void 0&&Q.tokens_revoked>0)console.log(H.yellow(` ${Q.tokens_revoked} token(s) revoked (user must re-login)`))}catch(Q){eD(Q,J,"Failed to change role",{400:"Invalid request (check if you are an owner)",403:"Owner access required",404:"User not found",409:"User already has that role"})}});var XW=new FD("s3").description("S3 and IAM credential management");XW.command("regenerate-iam").description("Regenerate AWS IAM credentials for a user").argument("<username>","Username to regenerate credentials for").option(I0,S0).option(a0,g0).action(yf);XW.command("lock").description("Apply S3 Object Lock (Governance mode) to a dataset").argument("<dataset-id>","Dataset ID to lock").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;console.log(H.cyan(`
|
|
182
182
|
Apply S3 Object Lock to ${D}
|
|
183
|
-
`)),console.log("This will:"),console.log(" \u2022 Set GOVERNANCE mode Object Lock on all objects"),console.log(" \u2022 Retention period: 100 years"),console.log(" \u2022 Objects cannot be deleted or modified without bypass"),console.log();let $=await y0(`Apply S3 Object Lock to ${D}?`,F);if($!=="confirmed"){console.log(H.
|
|
184
|
-
Failed objects:`));for(let B of Q.failed.slice(0,10))console.log(` \u2022 ${B}`);if(Q.failed.length>10)console.log(` ... and ${Q.failed.length-10} more`)}else J.succeed(`All ${Q.locked} objects locked successfully`)}catch(Q){J.fail("S3 lock failed"),console.log(H.
|
|
183
|
+
`)),console.log("This will:"),console.log(" \u2022 Set GOVERNANCE mode Object Lock on all objects"),console.log(" \u2022 Retention period: 100 years"),console.log(" \u2022 Objects cannot be deleted or modified without bypass"),console.log();let $=await y0(`Apply S3 Object Lock to ${D}?`,F);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N("Applying S3 Object Lock...").start();try{let Q=await d_(D);if(Q.failed.length>0){J.fail(`Partial lock: ${Q.locked}/${Q.total} locked, ${Q.failed.length} failed`),console.log(H.yellow(`
|
|
184
|
+
Failed objects:`));for(let B of Q.failed.slice(0,10))console.log(` \u2022 ${B}`);if(Q.failed.length>10)console.log(` ... and ${Q.failed.length-10} more`)}else J.succeed(`All ${Q.locked} objects locked successfully`)}catch(Q){J.fail("S3 lock failed"),console.log(H.dim(` ${p0(Q)}`))}});KD.addCommand(XW);KD.command("regenerate-iam",{hidden:!0}).argument("<username>").option(I0,S0).option(a0,g0).action(yf);async function yf(D,F){if(!d0())return;console.log(H.yellow(`
|
|
185
185
|
Regenerate IAM credentials for: ${D}
|
|
186
|
-
`)),console.log("This will:"),console.log(" 1. Create new AWS IAM access keys for the user"),console.log(" 2. Invalidate any existing access keys"),console.log(" 3. Restore S3 access to their datasets"),console.log(),console.log(H.
|
|
186
|
+
`)),console.log("This will:"),console.log(" 1. Create new AWS IAM access keys for the user"),console.log(" 2. Invalidate any existing access keys"),console.log(" 3. Restore S3 access to their datasets"),console.log(),console.log(H.dim("Use this if a user's credentials were compromised or lost.")),console.log();let $=await y0(`Regenerate IAM credentials for ${D}?`,F);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N(`Regenerating IAM credentials for ${D}...`).start();try{let Q=await C_(D);if(J.succeed(`Regenerated IAM credentials for ${D}`),console.log(),console.log(` IAM Username: ${H.cyan(Q.user.iam_username)}`),Q.user.role==="admin"||Q.user.role==="owner")console.log(` Access: ${H.magenta("full bucket access (admin/owner)")}`);if(console.log(` Datasets restored: ${H.green(Q.datasets_restored)}`),Q.warning)console.log(),console.log(H.yellow(` Warning: ${Q.warning}`)),console.log(H.dim(" Please verify old credentials are revoked in AWS console."));console.log(),console.log(H.dim("The user can now upload to their datasets again."))}catch(Q){eD(Q,J,"Failed to regenerate IAM credentials",{404:"User not found or not approved"})}}var GW=new FD("repo").description("Repository visibility management");GW.command("public").description("Make a dataset repository public").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;console.log(H.cyan(`
|
|
187
187
|
Making repository public: ${D}
|
|
188
|
-
`)),console.log(H.yellow("Warning: This will make the dataset visible to everyone.")),console.log();let $=await y0(`Make ${D} public?`,F);if($!=="confirmed"){console.log(H.
|
|
188
|
+
`)),console.log(H.yellow("Warning: This will make the dataset visible to everyone.")),console.log();let $=await y0(`Make ${D} public?`,F);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N(`Setting ${D} to public...`).start();try{await eG(D,"public"),J.succeed(`Repository ${D} is now public`)}catch(Q){eD(Q,J,"Failed to change visibility",{404:"Dataset not found"})}});GW.command("private").description("Make a dataset repository private").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;console.log(H.yellow(`
|
|
189
189
|
Making repository private: ${D}
|
|
190
|
-
`)),console.log("This will restrict access to collaborators only."),console.log();let $=await y0(`Make ${D} private?`,F);if($!=="confirmed"){console.log(H.
|
|
190
|
+
`)),console.log("This will restrict access to collaborators only."),console.log();let $=await y0(`Make ${D} private?`,F);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N(`Setting ${D} to private...`).start();try{await eG(D,"private"),J.succeed(`Repository ${D} is now private`)}catch(Q){eD(Q,J,"Failed to change visibility",{404:"Dataset not found"})}});KD.addCommand(GW);var WW=new FD("ci").description("CI workflow management");WW.command("check").description("Check CI workflow status for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!d0())return;let F=N(`Checking CI status for ${D}...`).start();try{let $=await O_(D);F.stop(),console.log(`
|
|
191
191
|
${H.cyan("CI Status:")} ${D}
|
|
192
|
-
`);let J=$.bids_validation.present,Q=J?H.green("[x]"):H.red("[ ]");if(console.log(` ${Q} BIDS Validation`),J){let X=$.bids_validation.status==="success"?H.green:$.bids_validation.status==="failure"?H.red:H.yellow;if(console.log(` Status: ${X($.bids_validation.status)}`),$.bids_validation.url)console.log(` URL: ${H.
|
|
192
|
+
`);let J=$.bids_validation.present,Q=J?H.green("[x]"):H.red("[ ]");if(console.log(` ${Q} BIDS Validation`),J){let X=$.bids_validation.status==="success"?H.green:$.bids_validation.status==="failure"?H.red:H.yellow;if(console.log(` Status: ${X($.bids_validation.status)}`),$.bids_validation.url)console.log(` URL: ${H.dim($.bids_validation.url)}`)}else console.log(` ${H.dim("Not deployed. Use 'nemar admin ci add' to deploy.")}`);let B=$.version_check.present,Y=B?H.green("[x]"):H.red("[ ]");if(console.log(` ${Y} Version Check`),!B)console.log(` ${H.dim("Not deployed. Use 'nemar admin ci add' to deploy.")}`);console.log()}catch($){eD($,F,"Failed to check CI status",{404:"Dataset not found"})}});WW.command("add").description("Deploy CI workflows to a dataset repository").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;console.log(H.cyan(`
|
|
193
193
|
Deploy CI workflows to: ${D}
|
|
194
|
-
`)),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();let $=await y0(`Deploy CI workflows to ${D}?`,F);if($!=="confirmed"){console.log(H.
|
|
195
|
-
Dataset already has a concept DOI:`)),console.log(` Concept DOI: ${H.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(H.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: ${H.yellow("SANDBOX (test DOI)")}`);console.log();let Q=F.provider==="zenodo"?"zenodo":"ezid";if(F.sandbox){if(console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow.bold(" SANDBOX MODE ENABLED")),console.log(H.yellow("\u2501".repeat(60))),Q==="zenodo")console.log(H.yellow(" \u2022 Using Zenodo sandbox (sandbox.zenodo.org)"));else console.log(H.yellow(" \u2022 Using EZID test shoulder (doi:10.5072/FK2)")),console.log(H.yellow(" \u2022 Test DOIs auto-delete after 2 weeks"));console.log(H.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(H.yellow(" \u2022 DOI will NOT resolve in production")),console.log(H.yellow(" \u2022 Use this for testing workflows only")),console.log(H.yellow("\u2501".repeat(60))),console.log()}console.log(H.red("WARNING: DOIs are PERMANENT and cannot be deleted!")),console.log(H.gray("The DOI will be pre-reserved but not published until the first version release.")),console.log(` Provider: ${H.cyan(Q.toUpperCase())}`),console.log();let B=F.sandbox?`Create TEST concept DOI via ${Q.toUpperCase()} SANDBOX?`:`Create PERMANENT concept DOI via ${Q.toUpperCase()} PRODUCTION?`,Y=await y0(B,F);if(Y!=="confirmed"){console.log(H.gray(Y==="declined"?"Skipped":"Cancelled"));return}let X=N(`Creating concept DOI via ${Q.toUpperCase()}...`).start();try{let G=await k_(D,{title:F.title,description:F.description,sandbox:F.sandbox,provider:Q});X.succeed("Concept DOI created successfully");let W=N("Applying branch protection...").start();try{let q=await fJ(D);if(q.warnings&&q.warnings.length>0){W.warn("Branch protection applied with warnings");for(let K of q.warnings)console.log(H.yellow(` Warning: ${K}`))}else W.succeed("Branch protection applied")}catch(q){if(W.warn("Could not apply branch protection"),q instanceof i){if(console.log(H.gray(` ${q.message}`)),q.statusCode===403)console.log(H.gray(" Check admin credentials and permissions"))}else console.log(H.gray(` ${q instanceof Error?q.message:"Unknown error"}`));console.log(H.gray(" Manual setup: Go to GitHub repo Settings > Branches > Add rule"))}if(console.log(),console.log(H.green("DOI Information:")),console.log(` Concept DOI: ${H.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(H.yellow(` Warning: ${G.metadata_warning}`));if(console.log(),console.log(H.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(H.gray("Note: This is a sandbox DOI and will not resolve in production."))}catch(G){if(G instanceof i){if(X.fail(G.message),G.statusCode===403)console.log(H.gray(" This command requires admin privileges"))}else X.fail("Failed to create concept DOI"),console.log(H.gray(` ${p0(G)}`))}});R9.command("info").description("Get DOI info for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!d0())return;let F=N("Fetching DOI info...").start();try{let $=await Z9(D);if(F.stop(),console.log(),console.log(H.cyan(`DOI Information for ${D}:`)),console.log(` Dataset Name: ${$.name}`),console.log(),$.concept_doi){if(console.log(H.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"?H.green:H.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(H.yellow("Mode: SANDBOX (test DOI)")),console.log(H.yellow(" This DOI is not indexed by DataCite and will not resolve in production"))}}else console.log(H.yellow("No concept DOI created yet")),console.log(H.gray(" Use 'nemar admin doi create' to create one"));if(console.log(),$.latest_version_doi){if(console.log(H.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(H.yellow("No version DOI published yet")),console.log(H.gray(" Version DOIs are created automatically on PR merge"))}catch($){if($ instanceof i){if(F.fail($.message),$.statusCode===404)console.log(H.gray(" Dataset not found"));else if($.statusCode===403)console.log(H.gray(" This command requires admin privileges"))}else F.fail("Failed to fetch DOI info")}});R9.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(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;if(!F.makePublic&&!F.refresh){console.log(H.yellow("No action specified. Use --make-public and/or --refresh."));return}if(F.makePublic){console.log(H.red("WARNING: Making a DOI public is PERMANENT!")),console.log(H.gray(" The DOI will be findable in DataCite and cannot be reverted.")),console.log();let J=await y0(`Make DOI for ${D} PUBLIC and permanent?`,F);if(J!=="confirmed"){console.log(H.gray(J==="declined"?"Skipped":"Cancelled"));return}}let $=N("Updating DOI...").start();try{let J=await DW(D,{status:F.makePublic?"public":void 0,refresh_metadata:F.refresh});$.succeed("DOI updated successfully"),console.log(),console.log(` EZID ID: ${H.cyan(J.ezid_identifier)}`),console.log(` Status: ${J.status==="public"?H.green(J.status):H.yellow(J.status)}`),console.log(` URL: ${J.doi_url}`)}catch(J){if(J instanceof i){if($.fail(J.message),J.statusCode===400)console.log(H.gray(" DOI update is only supported for EZID-managed DOIs"))}else $.fail("Failed to update DOI"),console.log(H.gray(` ${p0(J)}`))}});R9.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(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;let $=N("Fetching dataset and existing enrichment...").start(),J;try{J=await cD(D),$.succeed(`Dataset: ${J.name}`)}catch(z){if(z instanceof i)$.fail(z.message);else $.fail("Failed to fetch dataset");return}let Q,B=!1;try{Q=await Z9(D)}catch(z){if(z instanceof i&&z.statusCode===404);else B=!0,console.log(H.yellow(` Warning: Could not fetch DOI info: ${p0(z)}`))}if(Q?.concept_doi)console.log(` DOI: ${H.cyan(Q.concept_doi)}`);let Y={version:"2.0"};if(J.github_repo){let z=N("Reading existing metadata...").start(),U=await vf(J.github_repo,".nemar/metadata.json");if(U)try{let A=JSON.parse(U);if(A&&typeof A==="object"&&A.version==="2.0")Y=A,z.succeed(`Loaded existing metadata (stage: ${A.pipeline_stage||"unknown"})`);else z.warn("Existing metadata has unsupported version, starting fresh")}catch(A){z.warn(`Could not parse existing metadata (${A instanceof Error?A.message:String(A)}), starting fresh`)}else z.info("No existing .nemar/metadata.json found, starting fresh")}if(F.llm!==!1&&J.github_repo){console.log(),console.log(H.cyan("--- Running LLM enrichment pipeline (CI workflow) ---"));let z=N("Triggering llm-enrichment workflow...").start();try{let{spawn:U}=awaitPromise.resolve(globalThis.Bun),A=J.github_repo,M=U({cmd:["gh","workflow","run","llm-enrichment.yml","--repo",A,"--ref","main"],stdout:"pipe",stderr:"pipe"}),L=await new Response(M.stderr).text();if(await M.exited!==0)throw Error(`Failed to trigger workflow: ${L.trim()}`);z.text="Waiting for workflow to register...",await new Promise((T)=>setTimeout(T,3000)),z.text="Polling workflow status...";let O=60,y="",w=0;for(let T=0;T<O;T++){let f=U({cmd:["gh","run","list","--repo",A,"--workflow","llm-enrichment.yml","-L","1","--json","databaseId,status,conclusion"],stdout:"pipe",stderr:"pipe"}),n=await new Response(f.stdout).text(),s=await new Response(f.stderr).text();if(await f.exited!==0){if(w++,w>=3){z.warn(`gh CLI error: ${s.trim()}`);break}await new Promise((t)=>setTimeout(t,5000));continue}try{let t=JSON.parse(n.trim());if(w=0,t.length>0){let t0=t[0];if(t0.status==="completed"){y=t0.conclusion||"unknown";break}z.text=`Workflow ${t0.status}... (${T*5}s)`}}catch(t){if(w++,w>=3){z.warn(`Unable to parse workflow status: ${t instanceof Error?t.message:String(t)} (raw: ${n.trim().slice(0,200)})`);break}}await new Promise((t)=>setTimeout(t,5000))}let I=!1;if(!y)z.warn("Workflow timed out after 5 minutes (may still be running)");else if(y==="success"){z.succeed("LLM enrichment workflow completed successfully");let T=await vf(A,".nemar/metadata.json");if(T)try{let f=JSON.parse(T);if(f&&typeof f==="object"&&f.version==="2.0"){Object.assign(Y,f),I=!0;let n=f.pipeline_stage||"unknown";if(console.log(H.gray(` Pipeline stage: ${n}`)),Y.authors){let s=Object.keys(Y.authors).length;console.log(H.gray(` Authors: ${s}`))}}}catch(f){console.log(H.yellow(` Warning: Could not parse updated metadata: ${f instanceof Error?f.message:String(f)}`)),console.log(H.gray(" Using pre-workflow enrichment data"))}else console.log(H.yellow(" Warning: Could not fetch updated metadata after successful workflow.")),console.log(H.gray(" Author data below may be from a previous run."))}else z.fail(`LLM enrichment workflow failed (conclusion: ${y})`);if(!I)console.log(H.yellow(" ORCID discovery did not complete. Authors below may be from previous metadata."))}catch(U){z.fail("LLM enrichment pipeline failed"),console.log(H.gray(` ${p0(U)}`)),console.log(H.yellow(" ORCID discovery did not run. You will need to enter ORCIDs manually."))}}console.log(),console.log(H.cyan("--- Author ORCIDs ---"));let X=Y.authors||{},G=Object.keys(X);if(G.length>0){let z=G.filter((A)=>X[A]?.orcid),U=G.filter((A)=>!X[A]?.orcid);console.log(H.gray(` Discovered ${G.length} authors from pipeline:`));for(let A of z)console.log(H.green(` [x] ${A}: ${X[A]?.orcid}`));for(let A of U)console.log(H.yellow(` [ ] ${A}: no ORCID found`));if(U.length>0)console.log(H.gray(` ${U.length} author(s) missing ORCIDs.`))}let{updateAuthors:W}=await B0.prompt([{type:"confirm",name:"updateAuthors",message:G.length>0?"Add or correct author ORCIDs?":"Add author ORCIDs manually?",default:!1}]);if(W){let z={},U=!0;while(U){let{authorName:A}=await B0.prompt([{type:"input",name:"authorName",message:'Author name (as in BIDS, e.g., "Shirazi, Yahya"):'}]);if(!A)break;let M=X[A];if(M?.orcid)console.log(H.gray(` Current ORCID: ${M.orcid}`));let{orcid:L}=await B0.prompt([{type:"input",name:"orcid",message:`ORCID for "${A}" (Enter to ${M?.orcid?"keep current":"skip"}):`,validate:(w)=>{if(!w)return!0;return yJ.test(w)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]),C={};if(L)C.orcid=L;let{affiliation:O}=await B0.prompt([{type:"input",name:"affiliation",message:`Affiliation for "${A}" (optional):`}]);if(O)C.affiliations=[{name:O}];if(C.orcid||C.affiliations)z[A]=C;let{more:y}=await B0.prompt([{type:"confirm",name:"more",message:"Add another author?",default:!0}]);U=y}if(Object.keys(z).length>0){let A={...Y.authors||{}};for(let[M,L]of Object.entries(z)){let C=A[M]||{};A[M]={...C,...L,orcid:L.orcid||C.orcid}}Y.authors=A}}console.log(),console.log(H.cyan("--- Dataset stats ---"));let q=N("Computing dataset sizes and formats...").start();try{let z=await p_(D),U=V8(z.total_size);Y.sizes=[`${U} (${z.file_count} files)`],Y.formats=z.extensions,q.succeed(`Sizes: ${U} (${z.file_count} files), Formats: ${z.extensions.join(", ")}`)}catch(z){q.warn("Could not compute dataset stats"),console.log(H.gray(` ${p0(z)}`))}console.log(),console.log(H.cyan("--- Review ---")),console.log(JSON.stringify(Y,null,2)),console.log();let K=await y0("Commit to repo and refresh DOI?",F,!0);if(K!=="confirmed"){console.log(H.gray(K==="declined"?"Skipped":"Cancelled"));return}let Z=N("Saving enrichment...").start();try{let z=await l_(D,Y);if(Z.succeed(z.message),z.bidsignore_updated)console.log(H.gray(" .bidsignore updated to include .nemar/"));if(!Q&&B)try{Q=await Z9(D)}catch(U){if(process.env.DEBUG)console.error("[debug] DOI info re-fetch:",U)}if(Q?.ezid_identifier){let U=N("Refreshing DOI metadata...").start();try{await DW(D,{refresh_metadata:!0}),U.succeed("DOI metadata refreshed")}catch(A){U.warn("Could not refresh DOI metadata"),console.log(H.gray(` ${p0(A)}`))}}else if(B)console.log(H.yellow(" DOI refresh skipped: could not verify DOI exists. Run 'nemar admin doi update --refresh' manually."))}catch(z){if(z instanceof i)Z.fail(z.message);else Z.fail("Failed to save enrichment"),console.log(H.gray(` ${p0(z)}`))}});KD.addCommand(R9);var dJ=new FD("publish").description("Publication workflow management");dJ.command("list").description("List publication requests").option("-s, --status <status>","Filter by status (requested, approving, published, denied)").addHelpText("after",`
|
|
194
|
+
`)),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();let $=await y0(`Deploy CI workflows to ${D}?`,F);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N(`Deploying CI workflows to ${D}...`).start();try{let Q=await EF(D);J.succeed("CI workflows deployed"),console.log();for(let B of Q.workflows_deployed)console.log(` ${H.green("[x]")} ${B}`);console.log()}catch(Q){eD(Q,J,"Failed to deploy CI workflows",{404:"Dataset not found"})}});KD.addCommand(WW);var R9=new FD("doi").description("DOI management");R9.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(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;let $=N("Fetching dataset info...").start(),J;try{J=await cD(D),$.succeed(`Found dataset: ${J.name}`)}catch(G){if(G instanceof i){if($.fail(G.message),G.statusCode===404)console.log(H.dim(" Dataset not found"))}else $.fail("Failed to fetch dataset");return}try{let G=await Z9(D);if(G.concept_doi){if(console.log(H.yellow(`
|
|
195
|
+
Dataset already has a concept DOI:`)),console.log(` Concept DOI: ${H.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(H.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: ${H.yellow("SANDBOX (test DOI)")}`);console.log();let Q=F.provider==="zenodo"?"zenodo":"ezid";if(F.sandbox){if(console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow.bold(" SANDBOX MODE ENABLED")),console.log(H.yellow("\u2501".repeat(60))),Q==="zenodo")console.log(H.yellow(" \u2022 Using Zenodo sandbox (sandbox.zenodo.org)"));else console.log(H.yellow(" \u2022 Using EZID test shoulder (doi:10.5072/FK2)")),console.log(H.yellow(" \u2022 Test DOIs auto-delete after 2 weeks"));console.log(H.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(H.yellow(" \u2022 DOI will NOT resolve in production")),console.log(H.yellow(" \u2022 Use this for testing workflows only")),console.log(H.yellow("\u2501".repeat(60))),console.log()}console.log(H.red("WARNING: DOIs are PERMANENT and cannot be deleted!")),console.log(H.dim("The DOI will be pre-reserved but not published until the first version release.")),console.log(` Provider: ${H.cyan(Q.toUpperCase())}`),console.log();let B=F.sandbox?`Create TEST concept DOI via ${Q.toUpperCase()} SANDBOX?`:`Create PERMANENT concept DOI via ${Q.toUpperCase()} PRODUCTION?`,Y=await y0(B,F);if(Y!=="confirmed"){console.log(H.dim(Y==="declined"?"Skipped":"Cancelled"));return}let X=N(`Creating concept DOI via ${Q.toUpperCase()}...`).start();try{let G=await k_(D,{title:F.title,description:F.description,sandbox:F.sandbox,provider:Q});X.succeed("Concept DOI created successfully");let W=N("Applying branch protection...").start();try{let q=await fJ(D);if(q.warnings&&q.warnings.length>0){W.warn("Branch protection applied with warnings");for(let K of q.warnings)console.log(H.yellow(` Warning: ${K}`))}else W.succeed("Branch protection applied")}catch(q){if(W.warn("Could not apply branch protection"),q instanceof i){if(console.log(H.dim(` ${q.message}`)),q.statusCode===403)console.log(H.dim(" Check admin credentials and permissions"))}else console.log(H.dim(` ${q instanceof Error?q.message:"Unknown error"}`));console.log(H.dim(" Manual setup: Go to GitHub repo Settings > Branches > Add rule"))}if(console.log(),console.log(H.green("DOI Information:")),console.log(` Concept DOI: ${H.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(H.yellow(` Warning: ${G.metadata_warning}`));if(console.log(),console.log(H.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(H.dim("Note: This is a sandbox DOI and will not resolve in production."))}catch(G){if(G instanceof i){if(X.fail(G.message),G.statusCode===403)console.log(H.dim(" This command requires admin privileges"))}else X.fail("Failed to create concept DOI"),console.log(H.dim(` ${p0(G)}`))}});R9.command("info").description("Get DOI info for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").action(async(D)=>{if(!d0())return;let F=N("Fetching DOI info...").start();try{let $=await Z9(D);if(F.stop(),console.log(),console.log(H.cyan(`DOI Information for ${D}:`)),console.log(` Dataset Name: ${$.name}`),console.log(),$.concept_doi){if(console.log(H.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"?H.green:H.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(H.yellow("Mode: SANDBOX (test DOI)")),console.log(H.yellow(" This DOI is not indexed by DataCite and will not resolve in production"))}}else console.log(H.yellow("No concept DOI created yet")),console.log(H.dim(" Use 'nemar admin doi create' to create one"));if(console.log(),$.latest_version_doi){if(console.log(H.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(H.yellow("No version DOI published yet")),console.log(H.dim(" Version DOIs are created automatically on PR merge"))}catch($){if($ instanceof i){if(F.fail($.message),$.statusCode===404)console.log(H.dim(" Dataset not found"));else if($.statusCode===403)console.log(H.dim(" This command requires admin privileges"))}else F.fail("Failed to fetch DOI info")}});R9.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(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;if(!F.makePublic&&!F.refresh){console.log(H.yellow("No action specified. Use --make-public and/or --refresh."));return}if(F.makePublic){console.log(H.red("WARNING: Making a DOI public is PERMANENT!")),console.log(H.dim(" The DOI will be findable in DataCite and cannot be reverted.")),console.log();let J=await y0(`Make DOI for ${D} PUBLIC and permanent?`,F);if(J!=="confirmed"){console.log(H.dim(J==="declined"?"Skipped":"Cancelled"));return}}let $=N("Updating DOI...").start();try{let J=await DW(D,{status:F.makePublic?"public":void 0,refresh_metadata:F.refresh});$.succeed("DOI updated successfully"),console.log(),console.log(` EZID ID: ${H.cyan(J.ezid_identifier)}`),console.log(` Status: ${J.status==="public"?H.green(J.status):H.yellow(J.status)}`),console.log(` URL: ${J.doi_url}`)}catch(J){if(J instanceof i){if($.fail(J.message),J.statusCode===400)console.log(H.dim(" DOI update is only supported for EZID-managed DOIs"))}else $.fail("Failed to update DOI"),console.log(H.dim(` ${p0(J)}`))}});R9.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(I0,S0).option(a0,g0).action(async(D,F)=>{if(!d0())return;let $=N("Fetching dataset and existing enrichment...").start(),J;try{J=await cD(D),$.succeed(`Dataset: ${J.name}`)}catch(z){if(z instanceof i)$.fail(z.message);else $.fail("Failed to fetch dataset");return}let Q,B=!1;try{Q=await Z9(D)}catch(z){if(z instanceof i&&z.statusCode===404);else B=!0,console.log(H.yellow(` Warning: Could not fetch DOI info: ${p0(z)}`))}if(Q?.concept_doi)console.log(` DOI: ${H.cyan(Q.concept_doi)}`);let Y={version:"2.0"};if(J.github_repo){let z=N("Reading existing metadata...").start(),U=await vf(J.github_repo,".nemar/metadata.json");if(U)try{let A=JSON.parse(U);if(A&&typeof A==="object"&&A.version==="2.0")Y=A,z.succeed(`Loaded existing metadata (stage: ${A.pipeline_stage||"unknown"})`);else z.warn("Existing metadata has unsupported version, starting fresh")}catch(A){z.warn(`Could not parse existing metadata (${A instanceof Error?A.message:String(A)}), starting fresh`)}else z.info("No existing .nemar/metadata.json found, starting fresh")}if(F.llm!==!1&&J.github_repo){console.log(),console.log(H.cyan("--- Running LLM enrichment pipeline (CI workflow) ---"));let z=N("Triggering llm-enrichment workflow...").start();try{let{spawn:U}=awaitPromise.resolve(globalThis.Bun),A=J.github_repo,M=U({cmd:["gh","workflow","run","llm-enrichment.yml","--repo",A,"--ref","main"],stdout:"pipe",stderr:"pipe"}),L=await new Response(M.stderr).text();if(await M.exited!==0)throw Error(`Failed to trigger workflow: ${L.trim()}`);z.text="Waiting for workflow to register...",await new Promise((T)=>setTimeout(T,3000)),z.text="Polling workflow status...";let O=60,y="",w=0;for(let T=0;T<O;T++){let f=U({cmd:["gh","run","list","--repo",A,"--workflow","llm-enrichment.yml","-L","1","--json","databaseId,status,conclusion"],stdout:"pipe",stderr:"pipe"}),n=await new Response(f.stdout).text(),s=await new Response(f.stderr).text();if(await f.exited!==0){if(w++,w>=3){z.warn(`gh CLI error: ${s.trim()}`);break}await new Promise((t)=>setTimeout(t,5000));continue}try{let t=JSON.parse(n.trim());if(w=0,t.length>0){let t0=t[0];if(t0.status==="completed"){y=t0.conclusion||"unknown";break}z.text=`Workflow ${t0.status}... (${T*5}s)`}}catch(t){if(w++,w>=3){z.warn(`Unable to parse workflow status: ${t instanceof Error?t.message:String(t)} (raw: ${n.trim().slice(0,200)})`);break}}await new Promise((t)=>setTimeout(t,5000))}let I=!1;if(!y)z.warn("Workflow timed out after 5 minutes (may still be running)");else if(y==="success"){z.succeed("LLM enrichment workflow completed successfully");let T=await vf(A,".nemar/metadata.json");if(T)try{let f=JSON.parse(T);if(f&&typeof f==="object"&&f.version==="2.0"){Object.assign(Y,f),I=!0;let n=f.pipeline_stage||"unknown";if(console.log(H.dim(` Pipeline stage: ${n}`)),Y.authors){let s=Object.keys(Y.authors).length;console.log(H.dim(` Authors: ${s}`))}}}catch(f){console.log(H.yellow(` Warning: Could not parse updated metadata: ${f instanceof Error?f.message:String(f)}`)),console.log(H.dim(" Using pre-workflow enrichment data"))}else console.log(H.yellow(" Warning: Could not fetch updated metadata after successful workflow.")),console.log(H.dim(" Author data below may be from a previous run."))}else z.fail(`LLM enrichment workflow failed (conclusion: ${y})`);if(!I)console.log(H.yellow(" ORCID discovery did not complete. Authors below may be from previous metadata."))}catch(U){z.fail("LLM enrichment pipeline failed"),console.log(H.dim(` ${p0(U)}`)),console.log(H.yellow(" ORCID discovery did not run. You will need to enter ORCIDs manually."))}}console.log(),console.log(H.cyan("--- Author ORCIDs ---"));let X=Y.authors||{},G=Object.keys(X);if(G.length>0){let z=G.filter((A)=>X[A]?.orcid),U=G.filter((A)=>!X[A]?.orcid);console.log(H.dim(` Discovered ${G.length} authors from pipeline:`));for(let A of z)console.log(H.green(` [x] ${A}: ${X[A]?.orcid}`));for(let A of U)console.log(H.yellow(` [ ] ${A}: no ORCID found`));if(U.length>0)console.log(H.dim(` ${U.length} author(s) missing ORCIDs.`))}let{updateAuthors:W}=await B0.prompt([{type:"confirm",name:"updateAuthors",message:G.length>0?"Add or correct author ORCIDs?":"Add author ORCIDs manually?",default:!1}]);if(W){let z={},U=!0;while(U){let{authorName:A}=await B0.prompt([{type:"input",name:"authorName",message:'Author name (as in BIDS, e.g., "Shirazi, Yahya"):'}]);if(!A)break;let M=X[A];if(M?.orcid)console.log(H.dim(` Current ORCID: ${M.orcid}`));let{orcid:L}=await B0.prompt([{type:"input",name:"orcid",message:`ORCID for "${A}" (Enter to ${M?.orcid?"keep current":"skip"}):`,validate:(w)=>{if(!w)return!0;return yJ.test(w)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]),C={};if(L)C.orcid=L;let{affiliation:O}=await B0.prompt([{type:"input",name:"affiliation",message:`Affiliation for "${A}" (optional):`}]);if(O)C.affiliations=[{name:O}];if(C.orcid||C.affiliations)z[A]=C;let{more:y}=await B0.prompt([{type:"confirm",name:"more",message:"Add another author?",default:!0}]);U=y}if(Object.keys(z).length>0){let A={...Y.authors||{}};for(let[M,L]of Object.entries(z)){let C=A[M]||{};A[M]={...C,...L,orcid:L.orcid||C.orcid}}Y.authors=A}}console.log(),console.log(H.cyan("--- Dataset stats ---"));let q=N("Computing dataset sizes and formats...").start();try{let z=await p_(D),U=V8(z.total_size);Y.sizes=[`${U} (${z.file_count} files)`],Y.formats=z.extensions,q.succeed(`Sizes: ${U} (${z.file_count} files), Formats: ${z.extensions.join(", ")}`)}catch(z){q.warn("Could not compute dataset stats"),console.log(H.dim(` ${p0(z)}`))}console.log(),console.log(H.cyan("--- Review ---")),console.log(JSON.stringify(Y,null,2)),console.log();let K=await y0("Commit to repo and refresh DOI?",F,!0);if(K!=="confirmed"){console.log(H.dim(K==="declined"?"Skipped":"Cancelled"));return}let Z=N("Saving enrichment...").start();try{let z=await l_(D,Y);if(Z.succeed(z.message),z.bidsignore_updated)console.log(H.dim(" .bidsignore updated to include .nemar/"));if(!Q&&B)try{Q=await Z9(D)}catch(U){if(process.env.DEBUG)console.error("[debug] DOI info re-fetch:",U)}if(Q?.ezid_identifier){let U=N("Refreshing DOI metadata...").start();try{await DW(D,{refresh_metadata:!0}),U.succeed("DOI metadata refreshed")}catch(A){U.warn("Could not refresh DOI metadata"),console.log(H.dim(` ${p0(A)}`))}}else if(B)console.log(H.yellow(" DOI refresh skipped: could not verify DOI exists. Run 'nemar admin doi update --refresh' manually."))}catch(z){if(z instanceof i)Z.fail(z.message);else Z.fail("Failed to save enrichment"),console.log(H.dim(` ${p0(z)}`))}});KD.addCommand(R9);var dJ=new FD("publish").description("Publication workflow management");dJ.command("list").description("List publication requests").option("-s, --status <status>","Filter by status (requested, approving, published, denied)").addHelpText("after",`
|
|
196
196
|
Description:
|
|
197
197
|
List all publication requests from users, with optional filtering by status.
|
|
198
198
|
Shows dataset ID, status, requesting user, and current progress.
|
|
@@ -207,11 +207,11 @@ Examples:
|
|
|
207
207
|
$ nemar admin publish list # All requests
|
|
208
208
|
$ nemar admin publish list --status requested # Pending only
|
|
209
209
|
$ nemar admin publish list --status approving # In progress
|
|
210
|
-
$ nemar admin publish list --status denied # View denied`).action(async(D)=>{if(!d0())return;let F=N("Fetching publication requests...").start();try{let $=await u_(D.status);if(F.stop(),$.requests.length===0){console.log(H.
|
|
210
|
+
$ nemar admin publish list --status denied # View denied`).action(async(D)=>{if(!d0())return;let F=N("Fetching publication requests...").start();try{let $=await u_(D.status);if(F.stop(),$.requests.length===0){console.log(H.dim(`
|
|
211
211
|
No publication requests found.
|
|
212
212
|
`));return}console.log(`
|
|
213
213
|
${H.cyan("Publication Requests")} (${$.count})
|
|
214
|
-
`);for(let J of $.requests){let Q=J.status==="published"?H.green:J.status==="denied"?H.red:J.status==="approving"?H.yellow:H.white;if(console.log(` ${H.bold(J.dataset_id)} ${Q(J.status)} by ${J.requested_by_username} ${H.
|
|
214
|
+
`);for(let J of $.requests){let Q=J.status==="published"?H.green:J.status==="denied"?H.red:J.status==="approving"?H.yellow:H.white;if(console.log(` ${H.bold(J.dataset_id)} ${Q(J.status)} by ${J.requested_by_username} ${H.dim(J.requested_at)}`),J.current_step&&J.status==="approving")console.log(` ${H.yellow(">")} ${J.current_step.replace(/_/g," ")}${J.last_error?H.red(` (${J.last_error})`):""}`)}console.log()}catch($){eD($,F,"Failed to list publication requests")}});dJ.command("deny").description("Deny a publication request").argument("<dataset-id>","Dataset ID").option("-r, --reason <reason>","Reason for denial").option(I0,S0).option(a0,g0).addHelpText("after",`
|
|
215
215
|
Description:
|
|
216
216
|
Deny a user's publication request with a specific reason.
|
|
217
217
|
The user will receive an email notification with your reason.
|
|
@@ -227,7 +227,7 @@ Requirements:
|
|
|
227
227
|
Examples:
|
|
228
228
|
$ nemar admin publish deny nm000104 --reason "BIDS validation failing"
|
|
229
229
|
$ nemar admin publish deny nm000104 -r "Dataset incomplete - missing subjects"
|
|
230
|
-
$ nemar admin publish deny nm000104 # Prompts for reason interactively`).action(async(D,F)=>{if(!d0())return;let $=F.reason;if(!$){let{inputReason:B}=await B0.prompt([{type:"input",name:"inputReason",message:"Reason for denial:"}]);$=B}if(!$){console.log(H.red("Reason is required"));return}let J=await y0(`Deny publication of ${D}?`,F);if(J!=="confirmed"){console.log(H.
|
|
230
|
+
$ nemar admin publish deny nm000104 # Prompts for reason interactively`).action(async(D,F)=>{if(!d0())return;let $=F.reason;if(!$){let{inputReason:B}=await B0.prompt([{type:"input",name:"inputReason",message:"Reason for denial:"}]);$=B}if(!$){console.log(H.red("Reason is required"));return}let J=await y0(`Deny publication of ${D}?`,F);if(J!=="confirmed"){console.log(H.dim(J==="declined"?"Skipped":"Cancelled"));return}let Q=N(`Denying publication for ${D}...`).start();try{await m_(D,$),Q.succeed(`Publication denied for ${D}`),console.log(H.dim(" User has been notified."))}catch(B){eD(B,Q,"Failed to deny publication")}});dJ.command("approve").description("Approve and publish a dataset (runs orchestrator)").argument("<dataset-id>","Dataset ID").option("--resume","Resume from last failed step").option("--sandbox","Use Zenodo sandbox for testing").option("--skip-ci-check","Skip BIDS validation CI check (admin override)").option(I0,S0).option(a0,g0).addHelpText("after",`
|
|
231
231
|
Description:
|
|
232
232
|
Approve a publication request and run the automated 15-step orchestrator
|
|
233
233
|
to make the dataset publicly accessible with a permanent DOI.
|
|
@@ -271,17 +271,17 @@ After Approval:
|
|
|
271
271
|
- Tags are protected (prevents version manipulation)
|
|
272
272
|
- Data is protected by S3 Object Lock`).action(async(D,F)=>{if(!d0())return;let $=F.resume?`Resume publication of ${D}`:`Approve and publish ${D}`;if(console.log(H.cyan(`
|
|
273
273
|
${$}
|
|
274
|
-
`)),console.log("This will run the following 15-step orchestrator:"),console.log(" 1. Check CI 9. Create version tag"),console.log(" 2. Enrichment check 10. Create GitHub release"),console.log(" 3. Make repo public 11. Upload to Zenodo"),console.log(" 4. S3 public read 12. Publish DOI (irreversible)"),console.log(" 5. Tag protection 13. S3 Object Lock"),console.log(F.sandbox?" 6. Create DOI (SANDBOX) 14. Generate archive":" 6. Create DOI 14. Generate archive"),console.log(" 7. Update metadata 15. Notify user"),console.log(" 8. Update README"),console.log(),F.sandbox)console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow.bold(" SANDBOX MODE ENABLED")),console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow(" \u2022 DOI will be created in sandbox mode (EZID test shoulder)")),console.log(H.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(H.yellow(" \u2022 DOI will NOT resolve in production")),console.log(H.yellow(" \u2022 Use this for testing workflows only")),console.log(H.yellow("\u2501".repeat(60))),console.log();let J=await y0(`${$}?`,F);if(J!=="confirmed"){console.log(H.
|
|
274
|
+
`)),console.log("This will run the following 15-step orchestrator:"),console.log(" 1. Check CI 9. Create version tag"),console.log(" 2. Enrichment check 10. Create GitHub release"),console.log(" 3. Make repo public 11. Upload to Zenodo"),console.log(" 4. S3 public read 12. Publish DOI (irreversible)"),console.log(" 5. Tag protection 13. S3 Object Lock"),console.log(F.sandbox?" 6. Create DOI (SANDBOX) 14. Generate archive":" 6. Create DOI 14. Generate archive"),console.log(" 7. Update metadata 15. Notify user"),console.log(" 8. Update README"),console.log(),F.sandbox)console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow.bold(" SANDBOX MODE ENABLED")),console.log(H.yellow("\u2501".repeat(60))),console.log(H.yellow(" \u2022 DOI will be created in sandbox mode (EZID test shoulder)")),console.log(H.yellow(" \u2022 DOI will NOT be indexed by DataCite")),console.log(H.yellow(" \u2022 DOI will NOT resolve in production")),console.log(H.yellow(" \u2022 Use this for testing workflows only")),console.log(H.yellow("\u2501".repeat(60))),console.log();let J=await y0(`${$}?`,F);if(J!=="confirmed"){console.log(H.dim(J==="declined"?"Skipped":"Cancelled"));return}let Q=N("Running publication workflow (this may take a few minutes)...").start();try{let B=await bJ(D,!!F.resume,!!F.sandbox,!!F.skipCiCheck);if(Q.succeed(B.message),B.step_results&&B.step_results.length>0){console.log();let Y=B.step_results,X=Y.length;Y.forEach((G,W)=>{let q=`[${String(W+1).padStart(2," ")}/${X}]`,K=G.step.replace(/_/g," ");if(G.status==="completed"){let Z=(G.duration_ms/1000).toFixed(1),z=G.attempts>1?` (attempt ${G.attempts})`:"";console.log(` ${H.green("[x]")} ${H.dim(q)} ${K} ${H.dim(`(${Z}s${z})`)}`)}else if(G.status==="failed")console.log(` ${H.red("[!]")} ${H.dim(q)} ${K}${G.error?`: ${H.red(G.error)}`:""}`);else console.log(` ${H.dim("[-]")} ${H.dim(q)} ${H.dim(K)} ${H.dim("(skipped)")}`)}),console.log()}else if(B.steps_completed){console.log();for(let Y of B.steps_completed)console.log(` ${H.green("[x]")} ${Y.replace(/_/g," ")}`);console.log()}}catch(B){eD(B,Q,"Failed to approve publication",{422:"Fix the CI issues and retry with --resume"})}});KD.addCommand(dJ);KD.command("revert").description("Revert a dataset to a previous version (creates PR for review)").argument("<dataset-id>","Dataset ID (e.g., nm000104)").argument("[version]","Target version to revert to (e.g., 1.0.0)").option("--list","List available versions without reverting").option("--force","Direct push to main without PR (emergency only)").option("--message <msg>","Custom revert commit message").option("--dir <path>","Use existing local clone instead of cloning fresh").option(I0,S0).option(a0,g0).action(async(D,F,$)=>{if(!d0())return;let J=await A9();if(!J.allPassed){console.log(H.red("Error: Missing prerequisites"));for(let w of J.errors)console.log(H.dim(` - ${w}`));return}let Q,B=!0;if($.dir){if(!mK0($.dir)){console.log(H.red(`Error: Directory not found: ${$.dir}`));return}Q=$.dir,B=!1}else Q=lK0(process.cwd(),`${D}-revert-${Date.now()}`);let Y=N("Fetching dataset info...").start(),X;try{X=await cD(D),Y.succeed(`Found dataset: ${X.name}`)}catch(w){if(w instanceof i){if(Y.fail(w.message),w.statusCode===404)console.log(H.dim(" Dataset not found"))}else Y.fail("Failed to fetch dataset");return}if(!X.github_repo){console.log(H.red("Error: Dataset has no GitHub repository"));return}if(B){let w=N(`Cloning ${D}...`).start(),I=`https://github.com/${X.github_repo}.git`,T=await U8(I,Q);if(!T.success){w.fail(`Clone failed: ${T.error}`);return}w.succeed(`Cloned to ${Q}`)}let G=await Hf(Q);if(G.length===0){console.log(H.yellow("No versions found for this dataset")),console.log(H.dim(" Dataset may not have any tagged releases yet"));return}if($.list){console.log(`
|
|
275
275
|
${H.cyan("Available Versions:")}
|
|
276
|
-
`);for(let w of G)console.log(` ${H.green(w.version)} ${H.
|
|
276
|
+
`);for(let w of G)console.log(` ${H.green(w.version)} ${H.dim(w.date)} ${H.dim(w.commit)}`);return}let W=F;if(!W){console.log(`
|
|
277
277
|
${H.cyan("Available Versions:")}
|
|
278
|
-
`);for(let I of G)console.log(` ${H.green(I.version)} ${H.
|
|
278
|
+
`);for(let I of G)console.log(` ${H.green(I.version)} ${H.dim(I.date)}`);console.log();let{version:w}=await B0.prompt([{type:"list",name:"version",message:"Select version to revert to:",choices:G.map((I)=>({name:`${I.version} (${I.date})`,value:I.version}))}]);W=w}let q=await qf(Q,W);if(!q){console.log(H.red(`Error: Version ${W} not found`)),console.log(H.dim(" Use --list to see available versions"));return}if(console.log(),console.log(H.yellow("Revert Summary:")),console.log(` Dataset: ${H.cyan(D)}`),console.log(` Target version: ${H.green(W)}`),console.log(` Commit: ${H.dim(q)}`),$.force)console.log(` Mode: ${H.red("DIRECT PUSH (--force)")}`);else console.log(` Mode: ${H.green("Pull Request")}`);if(console.log(),$.force)console.log(H.red("WARNING: --force will push directly to main without PR review!")),console.log(H.red("This should only be used in emergencies.")),console.log();let K=$.force?`Directly push revert to ${W}?`:`Create PR to revert to ${W}?`,Z=await y0(K,$);if(Z!=="confirmed"){console.log(H.dim(Z==="declined"?"Skipped":"Cancelled"));return}let z=`revert-to-${W.replace(/\./g,"-")}-${Date.now()}`,U=N("Creating revert branch...").start(),A=await Kf(Q,W,z);if(!A.success){U.fail(`Failed to create branch: ${A.error}`);return}U.succeed(`Created branch: ${z}`);let M=N("Committing revert...").start(),L=$.message||`Revert to version ${W}`,C=await Ef(Q,W,L);if(!C.success){M.fail(`Failed to commit: ${C.error}`);return}M.succeed("Committed revert changes");let O=N("Pushing branch...").start(),y=await L9(Q,z);if(!y.success){O.fail(`Failed to push: ${y.error}`);return}if(O.succeed("Pushed branch to GitHub"),!$.force){let w=N("Creating pull request...").start();try{let{spawn:I}=await import("child_process"),T=`Revert to version ${W}`,f=`## Revert Request
|
|
279
279
|
|
|
280
280
|
This PR reverts the dataset to version ${W}.
|
|
281
281
|
|
|
282
282
|
**Reason:** Admin-initiated revert
|
|
283
283
|
**Target version:** ${W}
|
|
284
|
-
**Original commit:** ${q}`,n=I("gh",["pr","create","--repo",X.github_repo,"--head",z,"--base","main","--title",T,"--body",f],{cwd:Q}),s="";n.stdout.on("data",(h)=>{s+=h.toString()}),await new Promise((h,t)=>{n.on("close",(t0)=>{if(t0===0)h();else t(Error(`gh pr create failed with code ${t0}`))})}),w.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR URL:")} ${s.trim()}`),console.log(),console.log(H.green("Revert PR created successfully.")),console.log(H.
|
|
284
|
+
**Original commit:** ${q}`,n=I("gh",["pr","create","--repo",X.github_repo,"--head",z,"--base","main","--title",T,"--body",f],{cwd:Q}),s="";n.stdout.on("data",(h)=>{s+=h.toString()}),await new Promise((h,t)=>{n.on("close",(t0)=>{if(t0===0)h();else t(Error(`gh pr create failed with code ${t0}`))})}),w.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR URL:")} ${s.trim()}`),console.log(),console.log(H.green("Revert PR created successfully.")),console.log(H.dim("The PR will go through validation checks before it can be merged."))}catch(I){w.fail("Failed to create PR via gh CLI");let T=I instanceof Error?I.message:String(I);if(console.error(H.red(` Error: ${T}`)),T.includes("not found")||T.includes("command not found"))console.log(H.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(T.includes("auth")||T.includes("401"))console.log(H.yellow(" GitHub authentication failed.")),console.log(" \u2022 Run: gh auth login");console.log(H.dim(" You may need to create the PR manually on GitHub")),console.log(H.dim(` Branch: ${z}`))}}else console.log(H.yellow("Force mode: Merging directly to main...")),console.log(H.red("Direct merge not implemented for safety.")),console.log(H.dim("To force-merge, manually merge the branch on GitHub:")),console.log(H.dim(` git checkout main && git merge ${z} && git push`));if(B)console.log(),console.log(H.dim(`Working directory: ${Q}`)),console.log(H.dim("You can delete this directory after the PR is merged."))});KD.command("make-public").description("Publish a dataset (make repository and data public) - PERMANENT").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
285
285
|
Description:
|
|
286
286
|
Publish a dataset by making both the GitHub repository and S3 data publicly accessible.
|
|
287
287
|
|
|
@@ -315,13 +315,13 @@ Examples:
|
|
|
315
315
|
`).action(async(D)=>{if(!d0())return;let F=D.trim(),$;try{$=await cD(F)}catch(B){if(B instanceof i&&B.statusCode===404)console.error(H.red(`Dataset '${F}' not found`));else console.error(H.red(`Failed to fetch dataset: ${B instanceof Error?B.message:String(B)}`));process.exit(1)}if(console.log(H.yellow(`
|
|
316
316
|
WARNING: Publishing is PERMANENT and IRREVERSIBLE
|
|
317
317
|
`)),console.log("This will:"),console.log(" 1. Make the GitHub repository PUBLIC"),console.log(" 2. Allow public S3 access to all dataset files"),console.log(` 3. Update git-annex configuration for web access
|
|
318
|
-
`),console.log(`Dataset: ${H.cyan($.dataset_id)} - ${$.name}`),$.owner_username)console.log(`Owner: ${$.owner_username}`);if($.github_repo)console.log(`Repository: ${$.github_repo}`);if(console.log(),(await B0.prompt([{type:"input",name:"datasetId",message:`Type '${F}' to confirm:`,validate:(B)=>{if(B.trim()===F)return!0;return`Please type exactly '${F}' to confirm`}}])).datasetId!==F)console.log(H.
|
|
318
|
+
`),console.log(`Dataset: ${H.cyan($.dataset_id)} - ${$.name}`),$.owner_username)console.log(`Owner: ${$.owner_username}`);if($.github_repo)console.log(`Repository: ${$.github_repo}`);if(console.log(),(await B0.prompt([{type:"input",name:"datasetId",message:`Type '${F}' to confirm:`,validate:(B)=>{if(B.trim()===F)return!0;return`Please type exactly '${F}' to confirm`}}])).datasetId!==F)console.log(H.dim("Cancelled.")),process.exit(0);let Q=N("Publishing dataset...").start();try{let B=await R_(F);Q.succeed(H.green("Dataset published successfully")),console.log(`
|
|
319
319
|
GitHub: ${H.cyan(B.github_url)}`),console.log(`S3: ${H.cyan(B.s3_url)}`)}catch(B){if(Q.fail(H.red("Failed to publish dataset")),B instanceof i){if(console.error(H.red(`
|
|
320
|
-
${B.message}`)),B.details)console.error(H.
|
|
320
|
+
${B.message}`)),B.details)console.error(H.dim(JSON.stringify(B.details,null,2)));if(B.statusCode===403)console.log(H.dim(" You must be the dataset owner or an admin to publish"));else if(B.statusCode===400&&B.message.includes("sandbox"))console.log(H.dim(" Sandbox datasets cannot be published"))}else console.error(H.red(`
|
|
321
321
|
${B instanceof Error?B.message:String(B)}`));process.exit(1)}});KD.command("delete-dataset").description("Delete a dataset and all associated resources (GitHub, S3, D1)").argument("<dataset-id>","Dataset ID (e.g., nm000108)").option("--force","Force deletion of published datasets with DOIs (owner only)").action(async(D,F)=>{if(!d0())return;let $=N("Looking up dataset...").start();try{let J=await cD(D);if($.stop(),console.log(H.bold(`
|
|
322
322
|
Dataset: ${J.dataset_id}`)),console.log(` Name: ${J.name||"(unnamed)"}`),console.log(` Visibility: ${J.visibility}`),J.concept_doi){if(console.log(` DOI: ${J.concept_doi}`),console.log(H.yellow(`
|
|
323
|
-
WARNING: This dataset has a DOI. Only the NEMAR owner can delete it.`)),!F.force)console.log(H.
|
|
324
|
-
Deletion summary:`)),console.log(` GitHub repo: ${B.steps.github.success?H.green("deleted"):H.red("failed")}`),B.steps.s3.skipped)console.log(` S3 objects: ${H.yellow("skipped (published dataset)")}`);else{let Y=H.green(`${B.steps.s3.deleted} deleted`);if(B.steps.s3.failed.length>0)Y+=H.red(`, ${B.steps.s3.failed.length} failed`);console.log(` S3 objects: ${Y}`)}if(console.log(` Database: ${B.steps.d1.success?H.green("cleaned up"):H.red("failed")}`),B.steps.d1.versionsDeleted>0)console.log(H.
|
|
323
|
+
WARNING: This dataset has a DOI. Only the NEMAR owner can delete it.`)),!F.force)console.log(H.dim(" Use --force to confirm deletion of published datasets.")),process.exit(1)}let{proceed:Q}=await B0.prompt([{type:"confirm",name:"proceed",message:H.red(`Delete dataset ${D}? This will remove the GitHub repo, S3 data, and all database records. This cannot be undone.`),default:!1}]);if(!Q){console.log(H.dim("Cancelled."));return}$.start("Deleting dataset...");let B=await n_(D,F.force??!1);if(!B.deleted)$.fail("Dataset deletion incomplete");else if(B.warnings.length>0)$.warn("Dataset deleted with warnings");else $.succeed("Dataset deleted");if(console.log(H.bold(`
|
|
324
|
+
Deletion summary:`)),console.log(` GitHub repo: ${B.steps.github.success?H.green("deleted"):H.red("failed")}`),B.steps.s3.skipped)console.log(` S3 objects: ${H.yellow("skipped (published dataset)")}`);else{let Y=H.green(`${B.steps.s3.deleted} deleted`);if(B.steps.s3.failed.length>0)Y+=H.red(`, ${B.steps.s3.failed.length} failed`);console.log(` S3 objects: ${Y}`)}if(console.log(` Database: ${B.steps.d1.success?H.green("cleaned up"):H.red("failed")}`),B.steps.d1.versionsDeleted>0)console.log(H.dim(` ${B.steps.d1.versionsDeleted} version records removed`));if(B.steps.d1.pubRequestsDeleted>0)console.log(H.dim(` ${B.steps.d1.pubRequestsDeleted} publication requests removed`));if(B.warnings.length>0){console.log(H.yellow(`
|
|
325
325
|
Warnings:`));for(let Y of B.warnings)console.log(H.yellow(` - ${Y}`))}}catch(J){eD(J,$,"Failed to delete dataset",{403:"Published datasets can only be deleted by the NEMAR owner",404:"Dataset not found",409:"Cannot delete dataset with active publication requests"}),process.exit(1)}});KD.command("import-openneuro").description("Import an OpenNeuro dataset into NEMAR").argument("<openneuro-id>","OpenNeuro dataset ID (e.g., ds007262)").option("--dir <path>","Working directory for clone (default: temp dir)").option("--skip-data","Skip S3 data copy (metadata only)").action(async(D,F)=>{if(!d0())return;let{importOpenNeuro:$}=await Promise.resolve().then(() => (Rf(),Cf));try{await $(D,{workDir:F.dir,skipData:F.skipData})}catch(J){let Q=J instanceof Error?J.message:String(J);console.error(H.red(`
|
|
326
326
|
Import failed: ${Q}`)),process.exit(1)}});KD.command("e2e-test").description("Run end-to-end test against nm099999 (admin only)").option("--verbose","Show detailed output for each step").option("--skip-reset","Use existing nm099999 state (skip reset)").option("--skip-cleanup","Keep temp directories after test").addHelpText("after",`
|
|
327
327
|
Description:
|
|
@@ -338,7 +338,7 @@ Steps:
|
|
|
338
338
|
Requirements:
|
|
339
339
|
- Admin privileges (API role check)
|
|
340
340
|
- git-annex installed
|
|
341
|
-
- GitHub
|
|
341
|
+
- GitHub CLI authenticated (gh auth login)
|
|
342
342
|
- Active nemar auth session
|
|
343
343
|
|
|
344
344
|
Examples:
|
|
@@ -347,11 +347,11 @@ Examples:
|
|
|
347
347
|
$ nemar admin e2e-test --skip-cleanup # Keep temp dirs for inspection
|
|
348
348
|
$ nemar admin e2e-test --skip-reset # Reuse existing nm099999 state`).action(async(D)=>{if(!d0())return;console.log(H.cyan(`
|
|
349
349
|
NEMAR E2E Test (nm099999)
|
|
350
|
-
`));let{runE2ETest:F}=await Promise.resolve().then(() => (kf(),Sf)),$=await F({verbose:D.verbose,skipReset:D.skipReset,skipCleanup:D.skipCleanup});console.log();for(let Q of $.steps){let B=Q.passed?H.green("[x]"):H.red("[ ]"),Y=H.
|
|
351
|
-
Upload dir: ${$.upload_dir}`)),console.log(H.
|
|
350
|
+
`));let{runE2ETest:F}=await Promise.resolve().then(() => (kf(),Sf)),$=await F({verbose:D.verbose,skipReset:D.skipReset,skipCleanup:D.skipCleanup});console.log();for(let Q of $.steps){let B=Q.passed?H.green("[x]"):H.red("[ ]"),Y=H.dim(`(${Q.duration_ms}ms)`);if(console.log(` ${B} ${Q.name} ${Y}`),Q.error)console.log(H.red(` ${Q.error}`))}console.log();let J=($.total_duration_ms/1000).toFixed(1);if($.passed)console.log(H.green(`All ${$.steps.length} steps passed (${J}s)`));else{let Q=$.steps.filter((B)=>!B.passed).length;console.log(H.red(`${Q}/${$.steps.length} steps failed (${J}s)`))}if($.upload_dir)console.log(H.dim(`
|
|
351
|
+
Upload dir: ${$.upload_dir}`)),console.log(H.dim(`Clone dir: ${$.clone_dir}`));process.exit($.passed?0:1)});var HW=new FD("sync").description("Sync dataset metadata to nemar.org datapipeline");HW.command("run").description("Sync a dataset to nemar.org").argument("<dataset-id>","Dataset ID (e.g., nm000103)").action(async(D)=>{if(!d0())return;let F=N(`Syncing ${D} to nemar.org...`).start();try{let $=await a_(D);if($.synced)F.succeed(`${D} synced to nemar.org`);else{F.warn(`${D} sync completed with errors:`);for(let J of $.errors)console.log(H.red(` - ${J}`))}}catch($){F.fail(`Failed to sync ${D}`),console.error(H.red(p0($)))}});HW.command("status").description("Show nemar.org sync status for all published datasets").action(async()=>{if(!d0())return;let D=N("Fetching sync status...").start();try{let F=await o_();if(D.stop(),console.log(H.bold(`
|
|
352
352
|
nemar.org Sync Status (${F.total} datasets)
|
|
353
353
|
`)),console.log(` Synced: ${H.green(F.synced)} Failed: ${H.red(F.failed)} Pending: ${H.yellow(F.pending)}
|
|
354
|
-
`),F.datasets.length===0){console.log(H.
|
|
354
|
+
`),F.datasets.length===0){console.log(H.dim(" No published datasets found."));return}console.log(H.dim(` ${"ID".padEnd(12)} ${"Name".padEnd(40)} ${"Status".padEnd(10)} ${"Last Sync".padEnd(20)}`)),console.log(H.dim(` ${"\u2500".repeat(85)}`));for(let $ of F.datasets){let J=$.nemar_sync_status||"pending",Q=J==="synced"?H.green:J==="failed"?H.red:H.yellow,B=$.nemar_sync_at?new Date($.nemar_sync_at).toLocaleDateString():"-",Y=$.name||$.dataset_id,X=Y.length>38?`${Y.substring(0,35)}...`:Y;if(console.log(` ${$.dataset_id.padEnd(12)} ${X.padEnd(40)} ${Q(J.padEnd(10))} ${B}`),$.nemar_sync_error)console.log(H.red(` Error: ${$.nemar_sync_error}`))}}catch(F){D.fail("Failed to fetch sync status"),console.error(H.red(p0(F)))}});KD.addCommand(HW);N1();N6();v3();O4();KF();import{appendFileSync as pK0,existsSync as b6,mkdirSync as xf,readFileSync as nJ,writeFileSync as dK0}from"fs";import{homedir as cK0}from"os";import{join as cJ}from"path";var{spawn:_f}=globalThis.Bun;function I4(){let D=cJ(cK0(),".ssh");return{sshDir:D,privateKey:cJ(D,"nemar_ed25519"),publicKey:cJ(D,"nemar_ed25519.pub"),configFile:cJ(D,"config")}}function ff(){let D=I4();return b6(D.privateKey)&&b6(D.publicKey)}async function gf(D){let F=I4();if(!b6(F.sshDir))try{xf(F.sshDir,{mode:448})}catch($){return{success:!1,error:`Cannot create ~/.ssh directory: ${$.message}`}}if(b6(F.privateKey))try{return{success:!0,publicKey:nJ(F.publicKey,"utf-8").trim()}}catch($){return{success:!1,error:`NEMAR SSH key exists but cannot read public key: ${$.message}`}}try{let $=_f({cmd:["ssh-keygen","-t","ed25519","-f",F.privateKey,"-N","","-C",`nemar-cli-${D}`],stdout:"pipe",stderr:"pipe"}),J=await new Response($.stderr).text();if(await $.exited!==0)return{success:!1,error:`ssh-keygen failed: ${J}`};return{success:!0,publicKey:nJ(F.publicKey,"utf-8").trim()}}catch($){return{success:!1,error:`Failed to generate SSH key: ${$.message}`}}}function hf(){let D=I4();if(!b6(D.publicKey))return null;try{return nJ(D.publicKey,"utf-8").trim()}catch{return null}}function nK0(){let D=I4();if(!b6(D.configFile))return!1;try{let F=nJ(D.configFile,"utf-8");return F.includes("IdentityFile ~/.ssh/nemar_ed25519")||F.includes(`IdentityFile ${D.privateKey}`)}catch{return!1}}function bf(){let D=I4();if(!b6(D.sshDir))try{xf(D.sshDir,{mode:448})}catch($){return{success:!1,error:`Cannot create ~/.ssh directory: ${$.message}`}}if(nK0())return{success:!0};let F=`
|
|
355
355
|
# NEMAR CLI SSH key (auto-generated)
|
|
356
356
|
Host github.com
|
|
357
357
|
AddKeysToAgent yes
|
|
@@ -380,15 +380,15 @@ Examples:
|
|
|
380
380
|
$ nemar auth whoami # Alias for status
|
|
381
381
|
$ nemar auth switch # Switch between accounts
|
|
382
382
|
$ nemar auth logout # Clear active account
|
|
383
|
-
$ nemar auth logout --all # Clear all accounts`);async function KW(D){if(v0()){let J=YD();if(console.log(H.yellow(`Already logged in as ${J.username||"unknown"}`)),console.log(H.
|
|
383
|
+
$ nemar auth logout --all # Clear all accounts`);async function KW(D){if(v0()){let J=YD();if(console.log(H.yellow(`Already logged in as ${J.username||"unknown"}`)),console.log(H.dim(" This will add another account (use 'nemar auth switch' to switch)")),await y0("Log in with a different account?",D)!=="confirmed")return}let F=D.key||process.env.NEMAR_API_KEY;if(!F)F=(await B0.prompt([{type:"password",name:"apiKey",message:"Enter your API key:",mask:"*",validate:(Q)=>{if(!Q||Q.length<32)return"Please enter a valid API key";return!0}}])).apiKey;if(!F){console.log(H.red("No API key provided"));return}let $=N("Validating API key...").start();try{let J=await z_(F);if(!J.valid){$.fail("Invalid API key");return}if(Y_(J.user.username,{apiKey:F,apiUrl:"https://nemar-api-dev.shirazi-10f.workers.dev",username:J.user.username,email:J.user.email,githubUsername:J.user.github_username,sandboxCompleted:J.user.sandbox_completed,...J.user.sandbox_dataset_id?{sandboxDatasetId:J.user.sandbox_dataset_id}:{}}),$.succeed("Login successful"),console.log(),console.log(` Welcome back, ${H.cyan(J.user.username)}!`),J.user.role==="owner")console.log(` ${H.red("Owner access enabled")}`);else if(J.user.role==="admin")console.log(` ${H.magenta("Admin access enabled")}`);if(!J.user.sandbox_completed)console.log(),console.log(H.yellow(" Note: Sandbox training required before uploading datasets")),console.log(H.dim(" Run 'nemar sandbox' to complete training"))}catch(J){if(J instanceof i){if($.fail(J.message),J.statusCode===401)console.log(H.dim(" Check that your API key is correct"));else if(J.statusCode===403)console.log(H.dim(" Your account may not be approved yet"))}else $.fail("Connection failed"),console.log(H.dim(" Check your internet connection"))}}var iK0=D1.command("login").description("Authenticate with your NEMAR API key").option("-k, --key <key>","API key (alternative: set NEMAR_API_KEY env var)").option(I0,S0).option(a0,g0).action(KW);m6(iK0,`
|
|
384
384
|
Environment Variables:
|
|
385
385
|
NEMAR_API_KEY Your API key (alternative to -k flag)
|
|
386
386
|
|
|
387
387
|
Examples:
|
|
388
388
|
$ nemar auth login # Interactive prompt
|
|
389
389
|
$ nemar auth login -k nemar_abc123... # Provide key directly
|
|
390
|
-
$ NEMAR_API_KEY=nemar_abc... nemar auth login`);async function iJ(){console.log(H.cyan("NEMAR Account Registration")),console.log(H.
|
|
391
|
-
`));let D=await B0.prompt([{type:"input",name:"username",message:"Choose a username:",validate:async($)=>{if(!$||$.length<3)return"Username must be at least 3 characters";if($.length>30)return"Username must be at most 30 characters";if(!/^[a-zA-Z0-9_-]+$/.test($))return"Username can only contain letters, numbers, underscores, and hyphens";try{let J=await q_($);if(!J.available)return J.reason||`Username "${$}" is already taken`}catch(J){if(J instanceof i&&J.statusCode===0)return!0;return!0}return!0}},{type:"input",name:"email",message:"Email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}},{type:"password",name:"password",message:"Password (min 12 characters):",mask:"*",validate:($)=>{if(!$||$.length<12)return"Password must be at least 12 characters";if($.length>128)return"Password must be at most 128 characters";return!0}},{type:"password",name:"confirmPassword",message:"Confirm password:",mask:"*",validate:($,J)=>{if($!==J?.password)return"Passwords do not match";return!0}},{type:"input",name:"github_username",message:"GitHub username (for PR collaboration):",validate:async($)=>{if(!$||$.length<1)return"GitHub username is required for PR collaboration";if($.length>39)return"GitHub username is too long";try{if(!(await K_($)).valid)return`GitHub user "${$}" not found. Please check the username.`}catch(J){if(J instanceof i&&J.statusCode===0)return!0;return!0}return!0}},{type:"input",name:"orcid",message:"ORCID iD (optional, e.g. 0000-0002-1825-0097):",validate:($)=>{if(!$||$.trim()==="")return!0;if(!/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/.test($.trim()))return"ORCID must be in format 0000-0000-0000-000X";return!0}},{type:"input",name:"description",message:"Why do you need access to NEMAR? (1-2 sentences):",validate:($)=>{let J=$?.trim();if(!J||J.length<20)return"Please provide at least 20 characters describing why you need NEMAR access";if(J.length>500)return"Description must be at most 500 characters";return!0}}]),F=N("Creating account...").start();try{let $=await E_({username:D.username,email:D.email,password:D.password,github_username:D.github_username,description:D.description.trim(),orcid:D.orcid?.trim()||void 0});F.succeed("Account created"),console.log(),console.log(H.green("Registration successful!")),console.log(),console.log("Next steps:"),$.next_steps.forEach((J,Q)=>{console.log(` ${Q+1}. ${J}`)}),console.log(),console.log(H.
|
|
390
|
+
$ NEMAR_API_KEY=nemar_abc... nemar auth login`);async function iJ(){console.log(H.cyan("NEMAR Account Registration")),console.log(H.dim(`Create an account to upload and manage datasets
|
|
391
|
+
`));let D=await B0.prompt([{type:"input",name:"username",message:"Choose a username:",validate:async($)=>{if(!$||$.length<3)return"Username must be at least 3 characters";if($.length>30)return"Username must be at most 30 characters";if(!/^[a-zA-Z0-9_-]+$/.test($))return"Username can only contain letters, numbers, underscores, and hyphens";try{let J=await q_($);if(!J.available)return J.reason||`Username "${$}" is already taken`}catch(J){if(J instanceof i&&J.statusCode===0)return!0;return!0}return!0}},{type:"input",name:"email",message:"Email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}},{type:"password",name:"password",message:"Password (min 12 characters):",mask:"*",validate:($)=>{if(!$||$.length<12)return"Password must be at least 12 characters";if($.length>128)return"Password must be at most 128 characters";return!0}},{type:"password",name:"confirmPassword",message:"Confirm password:",mask:"*",validate:($,J)=>{if($!==J?.password)return"Passwords do not match";return!0}},{type:"input",name:"github_username",message:"GitHub username (for PR collaboration):",validate:async($)=>{if(!$||$.length<1)return"GitHub username is required for PR collaboration";if($.length>39)return"GitHub username is too long";try{if(!(await K_($)).valid)return`GitHub user "${$}" not found. Please check the username.`}catch(J){if(J instanceof i&&J.statusCode===0)return!0;return!0}return!0}},{type:"input",name:"orcid",message:"ORCID iD (optional, e.g. 0000-0002-1825-0097):",validate:($)=>{if(!$||$.trim()==="")return!0;if(!/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/.test($.trim()))return"ORCID must be in format 0000-0000-0000-000X";return!0}},{type:"input",name:"description",message:"Why do you need access to NEMAR? (1-2 sentences):",validate:($)=>{let J=$?.trim();if(!J||J.length<20)return"Please provide at least 20 characters describing why you need NEMAR access";if(J.length>500)return"Description must be at most 500 characters";return!0}}]),F=N("Creating account...").start();try{let $=await E_({username:D.username,email:D.email,password:D.password,github_username:D.github_username,description:D.description.trim(),orcid:D.orcid?.trim()||void 0});F.succeed("Account created"),console.log(),console.log(H.green("Registration successful!")),console.log(),console.log("Next steps:"),$.next_steps.forEach((J,Q)=>{console.log(` ${Q+1}. ${J}`)}),console.log(),console.log(H.dim("Once approved, use 'nemar auth retrieve-key' to get your API key"))}catch($){if($ instanceof i){if(F.fail($.message),$.details&&Array.isArray($.details))$.details.forEach((J)=>{console.log(H.dim(` - ${J}`))});if($.message.includes("already taken"))console.log(H.dim(" Try a different username"));else if($.message.includes("already registered"))console.log(H.dim(" Use 'nemar auth resend-verification' if you need a new verification link"))}else F.fail("Registration failed"),console.log(H.dim(` ${$ instanceof Error?$.message:"Unknown error"}`))}}D1.command("signup").description("Register for a new NEMAR account").action(iJ);async function aJ(D){if(!v0()){console.log(H.yellow("Not authenticated")),console.log(),console.log(" Run 'nemar auth login' to authenticate"),console.log(" Run 'nemar auth signup' to create an account");return}let F;if(D.refresh){let B=N("Fetching user info...").start();try{let Y=await xJ();l8("username",Y.username),l8("email",Y.email),l8("githubUsername",Y.github_username),F=Y.role,B.stop()}catch(Y){if(B.fail("Could not refresh user info"),Y instanceof i&&Y.statusCode===401)console.log(H.dim(" Your session may have expired. Try logging in again."))}}let $=YD();if(console.log(H.green("Authenticated")),console.log(),$.username)console.log(` Username: ${H.cyan($.username)}`);if($.email)console.log(` Email: ${$.email}`);if($.githubUsername)console.log(` GitHub: @${$.githubUsername}`);if(F){let B=F==="owner"?H.red("Owner"):F==="admin"?H.magenta("Admin"):H.white("Member");console.log(` Role: ${B}`)}console.log(` Config: ${H.dim(B_())}`);let Q=V9().filter((B)=>!B.active);if(Q.length>0)console.log(),console.log(` Other accounts: ${Q.map((B)=>H.dim(B.username)).join(", ")}`),console.log(H.dim(" Run 'nemar auth switch' to switch accounts"))}D1.command("status").description("Check current authentication status").option("--refresh","Refresh user info from server").action(aJ);D1.command("whoami").description("Show current user (alias for status)").option("--refresh","Refresh user info from server").action(aJ);async function aK0(D){try{let F=Bun.which("gh");if(!F){console.log(H.dim(" GitHub CLI (gh) not found in PATH, skipping"));return}let $=Bun.spawn({cmd:[F,"auth","switch","--user",D],stdout:"pipe",stderr:"pipe"}),J=await new Response($.stderr).text(),Q=await $.exited;if(Q===0)console.log(` GitHub CLI switched to ${H.cyan(`@${D}`)}`);else{let B=J.trim();if(B.includes("not found")||B.includes("no accounts"))console.log(H.dim(` GitHub CLI: @${D} not logged in (run 'gh auth login')`));else console.log(H.dim(` GitHub CLI switch failed: ${B||`exit code ${Q}`}`))}}catch(F){let $=F instanceof Error?F.message:String(F);console.log(H.dim(` GitHub CLI switch skipped: ${$}`))}}async function EW(D){let F=V9();if(F.length===0){console.log(H.yellow("No stored accounts")),console.log(" Run 'nemar auth login' to add an account");return}if(F.length===1){let B=F[0];if(B.active){console.log(H.yellow(`Only one account stored: ${B.username}`)),console.log(" Run 'nemar auth login' to add another account");return}}let $;if(D)$=D;else{let B=F.map((X)=>({name:`${X.username}${X.githubUsername?` (@${X.githubUsername})`:""}${X.active?H.green(" (active)"):""}`,value:X.username,short:X.username})),{selected:Y}=await B0.prompt([{type:"list",name:"selected",message:"Switch to account:",choices:B,default:F.find((X)=>X.active)?.username}]);$=Y}let J=F.find((B)=>B.active);if(J&&J.username===$){console.log(H.yellow(`Already using account ${$}`));return}let Q=X_($);if(!Q){console.log(H.red(`Account not found: ${$}`)),console.log(H.dim(" Provide a NEMAR username or GitHub username")),console.log(H.dim(` Available: ${F.map((B)=>B.username).join(", ")}`));return}if(console.log(H.green(`Switched to ${H.cyan(Q.username||$)}`)),Q.githubUsername)await aK0(Q.githubUsername)}var oK0=D1.command("switch [username]").description("Switch between stored accounts").action(EW);m6(oK0,`
|
|
392
392
|
Description:
|
|
393
393
|
Switch the active NEMAR account. You can specify a NEMAR username or
|
|
394
394
|
GitHub username. If no username is given, an interactive picker is shown.
|
|
@@ -398,22 +398,20 @@ Description:
|
|
|
398
398
|
Examples:
|
|
399
399
|
$ nemar auth switch # Interactive picker
|
|
400
400
|
$ nemar auth switch yahya # Switch by NEMAR username
|
|
401
|
-
$ nemar auth switch cool-vibers # Switch by GitHub username`);async function zW(D){if(!v0()){console.log(H.yellow("Not currently authenticated"));return}if(D.all){let Q=V9();if(await y0(`Log out all ${Q.length} stored account(s)?`,D)!=="confirmed")return;Q_(),console.log(H.green("All accounts removed"));return}let F=YD();if(await y0(`Log out ${F.username||"current user"}?`,D)!=="confirmed")return;J_(),console.log(H.green("Logged out successfully"));let J=V9();if(J.length>0){let Q=J.find((B)=>B.active);if(Q)console.log(` Switched to ${H.cyan(Q.username)}`)}}D1.command("logout").description("Remove the active account (use --all to remove all)").option(I0,S0).option(a0,g0).option("--all","Remove all stored accounts").action(zW);D1.command("resend-verification").description("Resend email verification link").action(async()=>{let{email:D}=await B0.prompt([{type:"input",name:"email",message:"Enter your email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}}]),F=N("Sending verification email...").start();try{let $=await V_(D);F.succeed($.message)}catch($){if($ instanceof i){if(F.fail($.message),$.statusCode===0)console.log(H.
|
|
402
|
-
`));let $=null,J=I4();if(ff()&&!D.force)console.log(H.
|
|
401
|
+
$ nemar auth switch cool-vibers # Switch by GitHub username`);async function zW(D){if(!v0()){console.log(H.yellow("Not currently authenticated"));return}if(D.all){let Q=V9();if(await y0(`Log out all ${Q.length} stored account(s)?`,D)!=="confirmed")return;Q_(),console.log(H.green("All accounts removed"));return}let F=YD();if(await y0(`Log out ${F.username||"current user"}?`,D)!=="confirmed")return;J_(),console.log(H.green("Logged out successfully"));let J=V9();if(J.length>0){let Q=J.find((B)=>B.active);if(Q)console.log(` Switched to ${H.cyan(Q.username)}`)}}D1.command("logout").description("Remove the active account (use --all to remove all)").option(I0,S0).option(a0,g0).option("--all","Remove all stored accounts").action(zW);D1.command("resend-verification").description("Resend email verification link").action(async()=>{let{email:D}=await B0.prompt([{type:"input",name:"email",message:"Enter your email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}}]),F=N("Sending verification email...").start();try{let $=await V_(D);F.succeed($.message)}catch($){if($ instanceof i){if(F.fail($.message),$.statusCode===0)console.log(H.dim(" Check your internet connection"))}else F.fail(`Failed to send verification email: ${$ instanceof Error?$.message:"Unknown error"}`),console.log(H.dim(" Check your internet connection"))}});async function sK0(D){if(!v0()){console.log(H.yellow("Not authenticated")),console.log(),console.log(" Run 'nemar auth login' first to authenticate");return}let F=YD();if(!D.force){let G=N("Checking existing SSH access...").start(),W=await qW();if(W.success){if(G.succeed("SSH access to GitHub already configured"),W.username)console.log(` GitHub user: ${H.cyan(W.username)}`);console.log(),console.log(H.dim("Use --force to regenerate SSH key anyway"));return}G.info("SSH access to GitHub not configured")}console.log(),console.log(H.cyan("Setting up SSH access for GitHub")),console.log(H.dim(`This will generate a dedicated SSH key for NEMAR uploads
|
|
402
|
+
`));let $=null,J=I4();if(ff()&&!D.force)console.log(H.dim(` Using existing key: ${J.privateKey}`)),$=hf();else{let G=N("Generating SSH key...").start(),W=await gf(F.email||"nemar-user");if(!W.success){G.fail("Failed to generate SSH key"),console.log(H.dim(` ${W.error}`));return}G.succeed("SSH key generated"),console.log(H.dim(` Private key: ${J.privateKey}`)),console.log(H.dim(` Public key: ${J.publicKey}`)),$=W.publicKey||null}if(!$){console.log(H.red("Could not read public key"));return}let Q=N("Configuring SSH...").start(),B=bf();if(!B.success){Q.fail("Failed to configure SSH"),console.log(H.dim(` ${B.error}`));return}Q.succeed("SSH configured for GitHub"),console.log();let Y=N("Testing SSH connection to GitHub...").start(),X=await qW();if(X.success){if(Y.succeed("SSH connection verified"),X.username)console.log(` GitHub user: ${H.cyan(X.username)}`);console.log(),console.log(H.green("SSH setup complete! You can now upload datasets."));return}Y.info("SSH key generated but not yet added to GitHub"),console.log(),console.log(H.yellow("To complete setup, add this SSH key to your GitHub account:")),console.log(),console.log(H.cyan(` ${$}`)),console.log(),console.log("Steps:"),console.log(" 1. Copy the key above"),console.log(` 2. Go to: ${H.underline("https://github.com/settings/ssh/new")}`),console.log(` 3. Title: ${H.dim("NEMAR CLI")}`),console.log(" 4. Paste the key and click 'Add SSH key'"),console.log(),console.log(H.dim("After adding the key, run 'nemar auth setup-ssh' again to verify."))}var rK0=D1.command("setup-ssh").description("Configure SSH access for GitHub (optional, gh CLI preferred)").option("-f, --force","Regenerate SSH key even if one exists").action(sK0);m6(rK0,`
|
|
403
403
|
Description:
|
|
404
|
-
|
|
405
|
-
|
|
404
|
+
Configures SSH access for GitHub as an alternative to gh CLI (HTTPS).
|
|
405
|
+
Most users should use 'gh auth login' instead; SSH is only needed if
|
|
406
|
+
you cannot use the GitHub CLI.
|
|
406
407
|
|
|
407
408
|
1. Generate a dedicated Ed25519 SSH key for NEMAR (~/.ssh/nemar_ed25519)
|
|
408
409
|
2. Configure SSH to use this key for GitHub
|
|
409
410
|
3. Verify the connection (prompts you to add the key to GitHub if needed)
|
|
410
411
|
|
|
411
|
-
This is a one-time setup. After running this command and adding the key
|
|
412
|
-
to GitHub, you can upload datasets.
|
|
413
|
-
|
|
414
412
|
Examples:
|
|
415
413
|
$ nemar auth setup-ssh # Set up SSH access
|
|
416
|
-
$ nemar auth setup-ssh --force # Regenerate key even if exists`);var tK0=D1.command("retrieve-key").description("Retrieve your API key after account approval (requires email and password)").action(async()=>{let D=await B0.prompt([{type:"input",name:"email",message:"Email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}},{type:"password",name:"password",message:"Password:",mask:"*",validate:($)=>{if(!$)return"Password is required";return!0}}]),F=N("Retrieving API key...").start();try{let $=await Z_(D.email,D.password);F.succeed("API key retrieved"),console.log(),console.log(H.yellow("Your API Key (store this securely):")),console.log(H.
|
|
414
|
+
$ nemar auth setup-ssh --force # Regenerate key even if exists`);var tK0=D1.command("retrieve-key").description("Retrieve your API key after account approval (requires email and password)").action(async()=>{let D=await B0.prompt([{type:"input",name:"email",message:"Email address:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}},{type:"password",name:"password",message:"Password:",mask:"*",validate:($)=>{if(!$)return"Password is required";return!0}}]),F=N("Retrieving API key...").start();try{let $=await Z_(D.email,D.password);F.succeed("API key retrieved"),console.log(),console.log(H.yellow("Your API Key (store this securely):")),console.log(H.dim(` ${$.api_key}`)),console.log(),console.log("Next step:"),console.log(` Run ${H.cyan("nemar auth login")} and paste your API key`)}catch($){if($ instanceof i){if($.statusCode===409){let J=$.details;if(F.info("API key already issued"),J?.api_key_prefix)console.log(),console.log(` Key prefix: ${H.dim(J.api_key_prefix)}`);console.log(),console.log(" If you lost your API key, regenerate it:"),console.log(` ${H.cyan("nemar auth regenerate-key")}`)}else if(F.fail($.message),$.statusCode===401)console.log(H.dim(" Check your email and password"));else if($.statusCode===403)console.log(H.dim(" Your account may not be approved yet"))}else{let J=$ instanceof Error?$.message:"Unknown error";F.fail(`Failed to retrieve API key: ${J}`)}}});m6(tK0,`
|
|
417
415
|
Description:
|
|
418
416
|
After an admin approves your account, use this command to securely
|
|
419
417
|
retrieve your API key. You will need the email and password you used
|
|
@@ -423,8 +421,8 @@ Description:
|
|
|
423
421
|
to obtain your key.
|
|
424
422
|
|
|
425
423
|
Examples:
|
|
426
|
-
$ nemar auth retrieve-key`);var eK0=D1.command("regenerate-key").description("Request a new API key (revokes current key, requires email verification)").action(async()=>{console.log(H.yellow("API Key Regeneration")),console.log(H.
|
|
427
|
-
`));let{email:D}=await B0.prompt([{type:"input",name:"email",message:"Email address associated with your account:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}}]),F=N("Sending verification email...").start();try{let $=await U_(D);F.succeed("Verification email sent"),console.log(),console.log("Next steps:"),console.log(" 1. Check your email for a verification link"),console.log(" 2. Click the link to generate your new API key"),console.log(" 3. Copy the new key and run 'nemar auth login'"),console.log(),console.log(H.
|
|
424
|
+
$ nemar auth retrieve-key`);var eK0=D1.command("regenerate-key").description("Request a new API key (revokes current key, requires email verification)").action(async()=>{console.log(H.yellow("API Key Regeneration")),console.log(H.dim(`This will revoke your current key and generate a new one
|
|
425
|
+
`));let{email:D}=await B0.prompt([{type:"input",name:"email",message:"Email address associated with your account:",validate:($)=>{if(!$||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test($))return"Please enter a valid email address";return!0}}]),F=N("Sending verification email...").start();try{let $=await U_(D);F.succeed("Verification email sent"),console.log(),console.log("Next steps:"),console.log(" 1. Check your email for a verification link"),console.log(" 2. Click the link to generate your new API key"),console.log(" 3. Copy the new key and run 'nemar auth login'"),console.log(),console.log(H.dim("The link expires in 1 hour"))}catch($){if($ instanceof i)F.fail($.message);else F.fail("Failed to send verification email"),console.log(H.dim(" Check your internet connection"))}});m6(eK0,`
|
|
428
426
|
Description:
|
|
429
427
|
If you lost your API key or it was compromised, use this command to
|
|
430
428
|
request a new one. A verification email will be sent to confirm the
|
|
@@ -504,7 +502,7 @@ Description:
|
|
|
504
502
|
Requirements:
|
|
505
503
|
- NEMAR account (nemar auth login)
|
|
506
504
|
- git-annex installed
|
|
507
|
-
- GitHub
|
|
505
|
+
- GitHub CLI authenticated (gh auth login)
|
|
508
506
|
|
|
509
507
|
Process:
|
|
510
508
|
1. Validates BIDS format (unless --skip-validation)
|
|
@@ -521,14 +519,14 @@ Examples:
|
|
|
521
519
|
$ nemar dataset upload ./my-eeg-dataset
|
|
522
520
|
$ nemar dataset upload ./ds -n "My EEG Study" -d "64-channel EEG data"
|
|
523
521
|
$ nemar dataset upload ./ds --dry-run # Preview without uploading
|
|
524
|
-
$ nemar dataset upload ./ds -j 16 # More parallel streams`).action(async(D,F)=>{let $=YD();if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(!$_())console.log(H.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(H.cyan(" nemar sandbox")),process.exit(1);let J=$D(D);if(!JD(J))console.log(H.red(`Error: Path does not exist: ${J}`)),process.exit(1);await rJ("upload");let Q=N("Checking prerequisites...").start(),B=await uJ();if(!B.allPassed){Q.fail("Prerequisites check failed"),console.log();for(let R of B.errors)console.log(H.red(` - ${R}`));process.exit(1)}if(Q.succeed("Prerequisites check passed"),console.log(H.
|
|
525
|
-
`),console.log(H.
|
|
522
|
+
$ nemar dataset upload ./ds -j 16 # More parallel streams`).action(async(D,F)=>{let $=YD();if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(!$_())console.log(H.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(H.cyan(" nemar sandbox")),process.exit(1);let J=$D(D);if(!JD(J))console.log(H.red(`Error: Path does not exist: ${J}`)),process.exit(1);await rJ("upload");let Q=N("Checking prerequisites...").start(),B=await uJ();if(!B.allPassed){Q.fail("Prerequisites check failed"),console.log();for(let R of B.errors)console.log(H.red(` - ${R}`));process.exit(1)}if(Q.succeed("Prerequisites check passed"),console.log(H.dim(` git-annex ${B.gitAnnex.version}`)),B.githubSSH.username)console.log(H.dim(` GitHub: ${B.githubSSH.username}`));console.log(),Q=N("Verifying GitHub CLI authentication...").start();let Y=await mJ($.githubUsername);if(!Y.authenticated)Q.fail("GitHub CLI not authenticated"),console.log(H.red(` ${Y.error}`)),console.log(),console.log("GitHub CLI is required for dataset uploads. Install and authenticate:"),console.log(H.cyan(" brew install gh # or visit https://cli.github.com/")),console.log(H.cyan(" gh auth login")),process.exit(1);if($.githubUsername&&!Y.matches)Q.warn("GitHub CLI user mismatch"),console.log(H.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(H.cyan(` gh auth login # Login as ${$.githubUsername}`)),console.log(),console.log(H.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}`);if(!F.skipValidation){Q=N("Validating BIDS dataset...").start();let R=$D(J,"dataset_description.json");if(!JD(R))Q.fail("Not a valid BIDS dataset"),console.log(H.red("Missing required file: dataset_description.json")),process.exit(1);if(!(await j9()).installed)Q.fail("Deno is required for BIDS validation"),console.log(),console.log(H.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(H.cyan(" # macOS/Linux (curl)")),console.log(" curl -fsSL https://deno.land/install.sh | sh"),console.log(),console.log(H.cyan(" # macOS (Homebrew)")),console.log(" brew install deno"),console.log(),console.log(H.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(H.dim("To skip validation (not recommended): nemar dataset upload --skip-validation")),process.exit(1);try{let d=await mf(J,{prune:!0});if(!d.valid)Q.fail("Dataset has validation errors"),console.log(),console.log(pf(d)),console.log(),console.log(H.yellow("Fix the errors above before uploading.")),console.log(H.dim("Or use --skip-validation to upload anyway (not recommended).")),process.exit(1);Q.succeed(`Dataset is valid BIDS (${d.warningCount} warnings)`)}catch(d){Q.fail("Validation failed"),console.log(H.red(d.message)),process.exit(1)}console.log()}Q=N("Analyzing dataset files...").start();let X={};try{let R=$D(J,"dataset_description.json");X=JSON.parse(L8(R,"utf-8"))}catch(R){if(R.code!=="ENOENT")console.log(H.yellow(`Warning: Could not read dataset_description.json: ${R.message}`))}let G=F.name||(typeof X.Name==="string"?X.Name:null)||vE0(J),W=await Vf(J);Q.succeed(`Found ${W.files.length} files (${W.dataFiles} data, ${W.metadataFiles} metadata)`);let q,K=$D(J,".nemar","metadata.json"),Z=$D(J,"nemar_metadata.json");if(JD(K))try{q=JSON.parse(L8(K,"utf-8")),console.log(H.dim(" Using existing .nemar/metadata.json (author ORCIDs from prior run)"))}catch(R){console.log(H.yellow(` Warning: Could not read .nemar/metadata.json: ${R instanceof Error?R.message:R}. Will re-collect author information.`))}else if(JD(Z))try{q=JSON.parse(L8(Z,"utf-8")),console.log(H.dim(" Using existing nemar_metadata.json (author ORCIDs from prior run)"))}catch(R){console.log(H.yellow(` Warning: Could not read nemar_metadata.json: ${R instanceof Error?R.message:R}. Will re-collect author information.`))}if(!q&&!F.skipOrcid&&process.stdin.isTTY){let R=X.Authors,A0=Array.isArray(R)?R.filter((d)=>typeof d==="string"):[];if(A0.length>0)try{let d,p;try{let K0=await xJ();d=K0.orcid||void 0,p=K0.username}catch(K0){console.log(H.dim(` Could not fetch profile: ${p0(K0)}`))}console.log(),console.log(H.cyan("Authors found:"),A0.join(" | "));let W0={},w0;if(d&&p){let K0=p.toLowerCase(),XD=A0.find((x0)=>x0.toLowerCase().includes(K0));if(XD)W0[XD]={orcid:d},w0=XD,console.log(` Your ORCID (from profile): ${H.green(d)} (matched to "${XD}")`)}try{let{discoverOrcidsFromReferencedDois:K0}=await Promise.resolve().then(() => (Cg(),Ng)),XD=N("Looking up author ORCIDs from referenced publications...").start(),x0=await K0(X,W0),$1=Object.keys(x0.discoveries).length;if($1>0){XD.succeed(`Found ${$1} ORCID(s) from referenced DOIs`);for(let[M8,N8]of Object.entries(x0.discoveries))console.log(` ${H.green(N8.orcid)} -> "${M8}" (from ${N8.sourceDoi}, ${N8.confidence} match)`);let{confirmOrcids:GD}=await B0.prompt([{type:"confirm",name:"confirmOrcids",message:"Accept these auto-discovered ORCIDs?",default:!0}]);if(GD)for(let[M8,N8]of Object.entries(x0.discoveries))W0[M8]={...W0[M8],orcid:N8.orcid,...N8.affiliations&&{affiliations:N8.affiliations}}}else XD.info("No ORCIDs found from referenced DOIs")}catch(K0){console.log(H.yellow(` Could not auto-discover ORCIDs: ${p0(K0)}`))}for(let K0 of A0){if(K0===w0)continue;if(W0[K0]?.orcid)continue;let{orcid:XD}=await B0.prompt([{type:"input",name:"orcid",message:`ORCID for "${K0}" (Enter to skip):`,validate:(x0)=>{if(!x0)return!0;return yJ.test(x0)||"Invalid ORCID format (XXXX-XXXX-XXXX-XXXX)"}}]);if(XD){let x0={orcid:XD},{affiliation:$1}=await B0.prompt([{type:"input",name:"affiliation",message:` Affiliation for "${K0}" (optional):`}]);if($1)x0.affiliations=[{name:$1}];W0[K0]=x0}}if(Object.keys(W0).length>0){q={version:"2.0",authors:W0};try{let K0=$D(J,".nemar");if(!JD(K0))Rg(K0,{recursive:!0});let XD=$D(K0,"metadata.json");k4(XD,JSON.stringify(q,null,2)),console.log(H.dim(" Saved .nemar/metadata.json with author ORCIDs"))}catch(K0){console.log(H.yellow(` Warning: Could not save .nemar/metadata.json: ${p0(K0)}`))}}console.log()}catch(d){if(d instanceof i)console.log(H.yellow(` Could not fetch profile: ${d.message}`));else console.log(H.yellow(` Could not collect ORCIDs: ${p0(d)}`));console.log(H.dim(" Continuing without author enrichment."))}}let z;if(process.stdin.isTTY&&!F.skipValidation){let R=rf(J);if(R.spdxId){if(console.log(),console.log(H.cyan("License detected:"),H.bold(R.spdxId),H.dim(`(from ${R.source==="dataset_description"?"dataset_description.json":"LICENSE file"})`)),!tf(R.spdxId))console.log(H.yellow(` Warning: "${R.spdxId}" is not in the list of known research-compatible licenses.`));let{keepLicense:d}=await B0.prompt([{type:"confirm",name:"keepLicense",message:`Use "${R.spdxId}" as the dataset license?`,default:!0}]);if(d)z=R.spdxId;else z=await OW(R.spdxId)}else{if(console.log(),R.source==="license_file")console.log(H.yellow("A LICENSE file was found but the license could not be identified automatically."));else console.log(H.yellow("No license found in this dataset."));console.log(H.dim("A license is required to publish on NEMAR.")),z=await OW()}try{let d=$D(J,"dataset_description.json");if(JD(d)){if(JSON.parse(L8(d,"utf-8")).License!==z)Dg(J,z),console.log(H.dim(` Updated dataset_description.json License -> ${z}`))}}catch(d){console.log(H.yellow(` Warning: Could not update license in dataset_description.json: ${p0(d)}`))}if(ef(J,z))console.log(H.dim(` Created LICENSE file (${z})`));console.log()}if(process.stdin.isTTY&&!F.skipValidation&&z){let R=await Fg(z);if(R.isDerived&&R.sourceDatasets&&R.sourceDatasets.length>0){try{let A0=$D(J,"dataset_description.json");if(JD(A0)){let d=JSON.parse(L8(A0,"utf-8")),p=Array.isArray(d.SourceDatasets)?d.SourceDatasets:[],W0=R.sourceDatasets.map((K0)=>K0.identifier),w0=Array.from(new Set([...p,...W0]));d.SourceDatasets=w0,k4(A0,`${JSON.stringify(d,null,2)}
|
|
523
|
+
`),console.log(H.dim(` Updated dataset_description.json SourceDatasets (${w0.length} source(s))`))}}catch(A0){console.log(H.yellow(` Warning: Could not update SourceDatasets: ${p0(A0)}`))}console.log()}}let U=MW(J);if(console.log(),U)console.log(H.bold.yellow("Resume Upload:")),console.log(` Dataset ID: ${H.cyan(U.dataset_id)}`),console.log(` Last attempt: ${U.last_upload_at||U.created_at}`);else console.log(H.bold("Upload Plan:"));if(console.log(` Name: ${G}`),console.log(` Path: ${J}`),console.log(` Files: ${W.files.length}`),console.log(` Size: ${V8(W.totalSize)}`),console.log(` Data files: ${W.dataFiles} (will be uploaded to S3)`),console.log(` Metadata files: ${W.metadataFiles} (will be stored in git)`),console.log(` Parallel jobs: ${F.jobs}`),console.log(),F.dryRun){console.log(H.yellow("Dry run mode - no changes made"));return}let A=await y0("Proceed with upload?",{yes:F.yes,no:F.no},!0);if(A!=="confirmed"){console.log(A==="declined"?"Upload skipped.":"Upload cancelled.");return}console.log();let M=W.files.filter((R)=>R.type==="data");if(F.restart)eJ(J),console.log(H.dim(" Upload progress cleared (--restart)")),console.log();let L=F.restart?null:Bg(J);if(L){let R=Gg(L);if(console.log(H.bold.cyan("Upload Progress:")),console.log(` Files: ${R.uploaded}/${R.total} uploaded, ${R.failed} failed, ${R.pending} pending`),R.completedSteps.length>0)console.log(` Completed steps: ${R.completedSteps.join(", ")}`);console.log()}let C=L?Xg(L,M):M,O;if(U!==null){Q=N(`Resuming upload for ${U.dataset_id}...`).start();try{await cD(U.dataset_id),O={dataset_id:U.dataset_id,ssh_url:U.ssh_url,s3_prefix:U.s3_prefix,github_url:U.github_url,upload_urls:{},s3_config:U.s3_config},Q.succeed(`Resuming upload: ${O.dataset_id}`)}catch(R){if(Q.fail("Failed to resume upload"),R instanceof i){if(console.log(H.red(` ${R.message}`)),R.statusCode===404)console.log(H.yellow(" The dataset may have been deleted. Try uploading as a new dataset.")),console.log(H.dim(` Remove ${J}/.nemar to start fresh.`))}else console.log(H.red(` ${R.message}`));process.exit(1)}}else{Q=N("Creating dataset in NEMAR...").start();try{let R=await _J({name:G,description:F.description,files:M.map((d)=>({path:d.path,size:d.size,type:d.type}))});O={dataset_id:R.dataset.dataset_id,ssh_url:R.dataset.ssh_url,s3_prefix:R.dataset.s3_prefix,github_url:R.dataset.github_url,upload_urls:R.upload_urls||{},s3_config:R.s3_config};let A0={dataset_id:O.dataset_id,github_url:O.github_url,ssh_url:O.ssh_url,s3_prefix:O.s3_prefix,s3_config:O.s3_config,created_at:new Date().toISOString()};NW(J,A0),Q.succeed(`Dataset created: ${O.dataset_id}`),await new Promise((d)=>setTimeout(d,1e4))}catch(R){if(Q.fail("Failed to create dataset"),R instanceof i)console.log(H.red(` ${R.message}`));else console.log(H.red(` ${R.message}`));process.exit(1)}}if(L&&L.dataset_id!==O.dataset_id)console.log(H.yellow(" Progress file is for a different dataset; starting fresh.")),eJ(J),L=null;Q=N("Accepting GitHub repository invitation...").start();let w=O.github_url?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),I=w?w[1].replace(/\.git$/,""):null;if(!I)Q.fail("Invalid GitHub repository URL from backend"),console.log(H.red(` Received: ${O.github_url||"(empty)"}`)),console.log(H.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 T=await lJ(I);if(T.accepted)if(T.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(H.yellow(` ${T.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(H.cyan(` https://github.com/${I}/invitations`)),console.log();Q=N("Initializing git-annex dataset...").start();let f=$.username&&$.email?{name:$.username,email:$.email}:void 0;if(!await p8(J)){let R=await zF(J,{author:f});if(!R.success)Q.fail("Failed to initialize git-annex dataset"),console.log(H.red(` ${R.error}`)),process.exit(1)}let s=await Qf(J);if(!s.success)Q.fail("Failed to initialize git-annex"),console.log(H.red(` ${s.error}`)),process.exit(1);let h=await VF(J);if(!h.success)Q.warn("Could not configure largefiles pattern"),console.log(H.dim(` ${h.error}`));Q.succeed("git-annex dataset initialized");try{let R=$D(J,".gitignore"),A0="";if(JD(R))A0=L8(R,"utf-8");if(!A0.includes(".nemar/")){let d=A0?`${A0.trimEnd()}
|
|
526
524
|
.nemar/
|
|
527
525
|
`:`.nemar/
|
|
528
|
-
`;k4(R,d)}}catch(R){console.log(H.yellow(` Warning: Could not update .gitignore: ${p0(R)}`))}Q=N("Configuring GitHub remote...").start();let t=await f6(J,O.ssh_url);if(!t.success)Q.fail("Failed to configure GitHub remote"),console.log(H.red(` ${t.error}`)),process.exit(1);if(Q.succeed("GitHub remote configured"),!await zf(J,{yes:F.yes}))process.exit(1);if(!L)L=Qg(J,O.dataset_id,M);else{for(let R of M)if(!L.files[R.path])L.files[R.path]={status:"pending",size:R.size,updated_at:new Date().toISOString()};p1(J,L)}if(!LF(L,"s3_upload")){if(C.length>0){Q=N("Requesting upload credentials...").start();let R;try{R=await R4(O.dataset_id),Q.succeed("Upload credentials received (2h expiry)")}catch(W0){Q.fail(`Could not get upload credentials: ${p0(W0)}`),console.log(H.red(" Upload credentials are required for S3 access.")),console.log(H.
|
|
526
|
+
`;k4(R,d)}}catch(R){console.log(H.yellow(` Warning: Could not update .gitignore: ${p0(R)}`))}Q=N("Configuring GitHub remote...").start();let t=await f6(J,O.ssh_url);if(!t.success)Q.fail("Failed to configure GitHub remote"),console.log(H.red(` ${t.error}`)),process.exit(1);if(Q.succeed("GitHub remote configured"),!await zf(J,{yes:F.yes}))process.exit(1);if(!L)L=Qg(J,O.dataset_id,M);else{for(let R of M)if(!L.files[R.path])L.files[R.path]={status:"pending",size:R.size,updated_at:new Date().toISOString()};p1(J,L)}if(!LF(L,"s3_upload")){if(C.length>0){Q=N("Requesting upload credentials...").start();let R;try{R=await R4(O.dataset_id),Q.succeed("Upload credentials received (2h expiry)")}catch(W0){Q.fail(`Could not get upload credentials: ${p0(W0)}`),console.log(H.red(" Upload credentials are required for S3 access.")),console.log(H.dim(" Re-run the command to retry.")),process.exit(1)}Q=N("Configuring S3 remote...").start();let A0=await w4(J,{name:"nemar-s3",bucket:R.s3.bucket,prefix:`${O.dataset_id}/objects`,region:R.s3.region,publicUrl:O.s3_config.public_url},nD(R.credentials));if(!A0.success)Q.fail(`Failed to configure S3 remote: ${A0.error}`),console.log(H.dim(" Re-run the command to retry.")),process.exit(1);Q.succeed("S3 remote configured"),Q=N("Tracking data files with git-annex...").start();let d=await U9(J);if(!d.success)Q.fail(`Failed to track data files: ${d.error}`),process.exit(1);Q.succeed("Data files tracked by git-annex"),Q=N(`Uploading ${C.length} data files to S3...`).start();let p=await T4(J,"nemar-s3",Number.parseInt(F.jobs,10),nD(R.credentials));if(await A1(J),!p.success)Q.fail(`S3 upload failed: ${p.error}`),console.log(H.yellow("Re-run the same command to resume uploading.")),process.exit(1);for(let W0 of C)Yg(L,W0.path);p1(J,L),Q.succeed(`Uploaded ${p.filesCopied} data files to S3`)}else console.log(H.dim("No data files to upload to S3"));AF(L,"s3_upload"),p1(J,L)}else console.log(H.dim(" S3 upload already completed (skipping)"));if(!LF(L,"metadata_write")){if(q)try{let R=$D(J,".nemar"),A0=$D(R,"metadata.json");if(!JD(A0)){if(!JD(R))Rg(R,{recursive:!0});k4(A0,JSON.stringify(q,null,2))}let d=$D(J,".bidsignore"),p="";if(JD(d))p=L8(d,"utf-8");if(!p.includes(".nemar/")){let W0=p?`${p.trimEnd()}
|
|
529
527
|
.nemar/
|
|
530
528
|
`:`.nemar/
|
|
531
|
-
`;k4(d,W0)}console.log(H.
|
|
529
|
+
`;k4(d,W0)}console.log(H.dim(" Updated .bidsignore for NEMAR metadata"))}catch(R){console.log(H.yellow(` Warning: Could not update .bidsignore: ${p0(R)}`)),console.log(H.dim(" Upload will continue without author enrichment."))}AF(L,"metadata_write"),p1(J,L)}else console.log(H.dim(" Metadata write already completed (skipping)"));if(!LF(L,"dataset_save")){Q=N("Saving dataset changes...").start();let R=await g6(J,"Initial NEMAR dataset upload",f);if(!R.success)p1(J,L),Q.fail("Failed to save dataset"),console.log(H.red(` ${R.error}`)),console.log(),console.log(H.yellow("Re-run the same command to resume from this step.")),process.exit(1);Q.succeed("Dataset changes saved"),AF(L,"dataset_save"),p1(J,L)}else console.log(H.dim(" Dataset save already completed (skipping)"));if(!LF(L,"github_push")){Q=N("Pushing metadata to GitHub...").start();let R=await Z8(J);if(!R.success)p1(J,L),Q.fail("Failed to push to GitHub"),console.log(H.red(` ${R.error}`)),console.log(),console.log(H.yellow("Re-run the same command to resume from this step.")),process.exit(1);if(R.warning)Q.warn("Metadata pushed to GitHub (with warning)"),console.log(H.yellow(` ${R.warning}`));else Q.succeed("Metadata pushed to GitHub");AF(L,"github_push"),p1(J,L)}else console.log(H.dim(" GitHub push already completed (skipping)"));if(!LF(L,"ci_deploy")){Q=N("Setting up BIDS validation CI...").start();try{await EF(O.dataset_id),Q.succeed("BIDS validation CI configured")}catch(R){if(R instanceof i&&R.statusCode===403)Q.info("CI workflow will be configured by an admin");else{let A0=R instanceof Error?R.message:String(R);Q.warn(`Could not configure CI: ${A0}`),console.log(H.dim(` An admin can add it later with: nemar admin ci add ${O.dataset_id}`))}}AF(L,"ci_deploy"),p1(J,L)}else console.log(H.dim(" CI deploy already completed (skipping)"));eJ(J),af(J),console.log(),console.log(H.green.bold("Upload complete!")),console.log(),console.log(` Dataset ID: ${H.cyan(O.dataset_id)}`),console.log(` GitHub: ${H.cyan(O.github_url)}`),console.log(),console.log(H.dim("To download this dataset:")),console.log(H.dim(` nemar dataset download ${O.dataset_id}`)),console.log(),console.log(H.yellow("Note: This dataset is private. Only the owner and designated collaborators can")),console.log(H.yellow("download it, and only through the NEMAR CLI (not direct git-annex commands).")),console.log(H.yellow("After publishing, the data will be publicly available for everyone."))});DD.command("download").description("Download a dataset from NEMAR").argument("<dataset-id>","Dataset ID (e.g., nm000104)").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)").addHelpText("after",`
|
|
532
530
|
Description:
|
|
533
531
|
Download a BIDS dataset from NEMAR. Uses git-annex for efficient
|
|
534
532
|
data transfer with parallel streams.
|
|
@@ -545,14 +543,14 @@ Examples:
|
|
|
545
543
|
$ nemar dataset download nm000104 # Download to ./nm000104
|
|
546
544
|
$ nemar dataset download nm000104 -o ./data # Custom output directory
|
|
547
545
|
$ nemar dataset download nm000104 --no-data # Metadata only (fast)
|
|
548
|
-
$ nemar dataset download nm000104 -j 8 # More parallel streams`).action(async(D,F)=>{await rJ("download");let $=N("Checking git-annex...").start(),J=await A9();if(!J.allPassed){$.fail("Prerequisites check failed"),console.log();for(let z of J.errors)console.log(H.red(` - ${z}`));process.exit(1)}$.succeed(`git-annex ${J.gitAnnex.version}`),$=N(`Fetching dataset info for ${D}...`).start();let Q;try{Q=await cD(D),$.succeed(`Found dataset: ${Q.name}`)}catch(z){if($.fail("Dataset not found"),z instanceof i)console.log(H.red(` ${z.message}`));else console.log(H.red(` ${z.message}`));process.exit(1)}if(!Q.github_repo)console.log(H.red("Error: Dataset repository not available")),process.exit(1);let B=F.output||D,Y=$D(B);if(JD(Y))console.log(H.red(`Error: Output path already exists: ${Y}`)),console.log("Remove or rename the existing directory and try again."),process.exit(1);if(console.log(),console.log(H.bold("Download Plan:")),console.log(` Dataset: ${Q.name} (${D})`),console.log(` Output: ${Y}`),console.log(` Data files: ${F.data===!1?"metadata only":"included"}`),F.data!==!1)console.log(` Parallel jobs: ${F.jobs}`);console.log();let X=`https://github.com/${Q.github_repo}.git`;$=N("Cloning metadata from GitHub...").start();let G=await U8(X,Y);if(!G.success)$.fail("Failed to clone dataset"),console.log(H.red(` ${G.error}`)),process.exit(1);$.succeed("Metadata cloned");let W=null;if(Q.visibility!=="public"){$=N("Requesting download credentials...").start();try{W=await gJ(D),$.succeed("Download credentials received (2h expiry)")}catch(z){$.fail("Failed to get download credentials"),console.log(H.red(` ${z.message}`)),console.log(H.
|
|
546
|
+
$ nemar dataset download nm000104 -j 8 # More parallel streams`).action(async(D,F)=>{await rJ("download");let $=N("Checking git-annex...").start(),J=await A9();if(!J.allPassed){$.fail("Prerequisites check failed"),console.log();for(let z of J.errors)console.log(H.red(` - ${z}`));process.exit(1)}$.succeed(`git-annex ${J.gitAnnex.version}`),$=N(`Fetching dataset info for ${D}...`).start();let Q;try{Q=await cD(D),$.succeed(`Found dataset: ${Q.name}`)}catch(z){if($.fail("Dataset not found"),z instanceof i)console.log(H.red(` ${z.message}`));else console.log(H.red(` ${z.message}`));process.exit(1)}if(!Q.github_repo)console.log(H.red("Error: Dataset repository not available")),process.exit(1);let B=F.output||D,Y=$D(B);if(JD(Y))console.log(H.red(`Error: Output path already exists: ${Y}`)),console.log("Remove or rename the existing directory and try again."),process.exit(1);if(console.log(),console.log(H.bold("Download Plan:")),console.log(` Dataset: ${Q.name} (${D})`),console.log(` Output: ${Y}`),console.log(` Data files: ${F.data===!1?"metadata only":"included"}`),F.data!==!1)console.log(` Parallel jobs: ${F.jobs}`);console.log();let X=`https://github.com/${Q.github_repo}.git`;$=N("Cloning metadata from GitHub...").start();let G=await U8(X,Y);if(!G.success)$.fail("Failed to clone dataset"),console.log(H.red(` ${G.error}`)),process.exit(1);$.succeed("Metadata cloned");let W=null;if(Q.visibility!=="public"){$=N("Requesting download credentials...").start();try{W=await gJ(D),$.succeed("Download credentials received (2h expiry)")}catch(z){$.fail("Failed to get download credentials"),console.log(H.red(` ${z.message}`)),console.log(H.dim("Private datasets require authentication. Run 'nemar auth login' first.")),process.exit(1)}}let q=W?nD(W.credentials):void 0,K=await ZF(Y,"nemar-s3",q);if(K.enabled)console.log(H.dim(" S3 remote enabled for data downloads"));else if(!K.success)console.log(H.yellow(` Warning: Could not enable S3 remote: ${K.error}`));if(F.data!==!1){console.log(H.bold(`Downloading data files (${F.jobs} parallel streams)...`));let z=new FW,U=await QW(Y,{jobs:Number.parseInt(F.jobs,10),credentials:q,onProgress:(A)=>z.processLine(A)});if(!U.success){if(z.finish(0),console.log(H.red(`Failed to download data files: ${U.error}`)),console.log(H.dim("The dataset was cloned but data files are not available locally.")),console.log(H.dim(`You can try again with: cd ${Y} && nemar dataset get`)),W)await A1(Y);process.exit(1)}z.finish(U.filesDownloaded||0),console.log(H.green(`Data downloaded (${U.filesDownloaded||0} files)`))}else console.log(H.dim("Skipping data files (--no-data flag)"));if(W)await A1(Y);let Z=await Wf(Y);if(console.log(),console.log(H.green.bold("Download complete!")),console.log(),console.log(` Location: ${H.cyan(Y)}`),Z){if(console.log(` Files: ${Z.files}`),Z.size!=="unknown")console.log(` Size: ${Z.size}`);if(Z.missingFiles>0)console.log(H.dim(` Missing files: ${Z.missingFiles} (use 'git annex get' to download)`))}console.log(),console.log(H.dim("To get additional data:")),console.log(H.dim(` cd ${Y} && git annex get <path>`))});DD.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",`
|
|
549
547
|
Description:
|
|
550
548
|
Show detailed information about a NEMAR dataset including owner,
|
|
551
549
|
creation date, GitHub repository, and DOI information.
|
|
552
550
|
|
|
553
551
|
Examples:
|
|
554
552
|
$ nemar dataset status nm000104
|
|
555
|
-
$ nemar dataset status nm000104 --json | jq '.concept_doi'`).action(async(D,F)=>{let $=N(`Fetching dataset info for ${D}...`).start(),J;try{J=await cD(D),$.stop()}catch(Q){if($.fail("Dataset not found"),Q instanceof i)console.log(H.red(` ${Q.message}`));else console.log(H.red(` ${Q.message}`));process.exit(1)}if(F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(H.bold(`Dataset: ${J.dataset_id}`)),console.log(),console.log(` Name: ${J.name}`),console.log(` Owner: ${J.owner_username}`),console.log(` Status: ${wg(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(H.
|
|
553
|
+
$ nemar dataset status nm000104 --json | jq '.concept_doi'`).action(async(D,F)=>{let $=N(`Fetching dataset info for ${D}...`).start(),J;try{J=await cD(D),$.stop()}catch(Q){if($.fail("Dataset not found"),Q instanceof i)console.log(H.red(` ${Q.message}`));else console.log(H.red(` ${Q.message}`));process.exit(1)}if(F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(H.bold(`Dataset: ${J.dataset_id}`)),console.log(),console.log(` Name: ${J.name}`),console.log(` Owner: ${J.owner_username}`),console.log(` Status: ${wg(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(H.dim("To download this dataset:")),console.log(H.dim(` nemar dataset download ${D}`))});function wg(D){switch(D.toLowerCase()){case"published":return H.green(D);case"active":return H.blue(D);case"archived":return H.dim(D);case"pending":return H.yellow(D);default:return D}}DD.command("list").description("List publicly available datasets on NEMAR").option("--mine","List only your datasets (both private and public)").option("--json","Output as JSON for scripting").option("--limit <n>","Limit number of results (default: 50)","50").addHelpText("after",`
|
|
556
554
|
Description:
|
|
557
555
|
By default, lists only PUBLIC datasets on NEMAR that anyone can access.
|
|
558
556
|
|
|
@@ -573,7 +571,7 @@ Examples:
|
|
|
573
571
|
$ nemar dataset list # List public datasets only
|
|
574
572
|
$ nemar dataset list --mine # List YOUR datasets (private + public)
|
|
575
573
|
$ nemar dataset list --json # JSON output for scripting
|
|
576
|
-
$ nemar dataset list --limit 10 # Show only 10 datasets`).action(async(D)=>{if(D.mine&&!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' to see your datasets"),process.exit(1);let F=N("Fetching datasets...").start(),$;try{$=await I_(!!D.mine),F.stop()}catch(q){if(F.fail("Failed to fetch datasets"),q instanceof i)console.log(H.red(` ${q.message}`));else console.log(H.red(` ${q.message}`));process.exit(1)}let J=$.datasets;if(D.mine){let K=YD().username;J=J.filter((Z)=>Z.owner_username===K)}let Q=Number.parseInt(D.limit,10);if(J.length>Q)J=J.slice(0,Q);if(D.json){console.log(JSON.stringify(J,null,2));return}if(J.length===0){if(console.log(),D.mine)console.log(H.yellow("You don't have any datasets yet.")),console.log(H.
|
|
574
|
+
$ nemar dataset list --limit 10 # Show only 10 datasets`).action(async(D)=>{if(D.mine&&!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' to see your datasets"),process.exit(1);let F=N("Fetching datasets...").start(),$;try{$=await I_(!!D.mine),F.stop()}catch(q){if(F.fail("Failed to fetch datasets"),q instanceof i)console.log(H.red(` ${q.message}`));else console.log(H.red(` ${q.message}`));process.exit(1)}let J=$.datasets;if(D.mine){let K=YD().username;J=J.filter((Z)=>Z.owner_username===K)}let Q=Number.parseInt(D.limit,10);if(J.length>Q)J=J.slice(0,Q);if(D.json){console.log(JSON.stringify(J,null,2));return}if(J.length===0){if(console.log(),D.mine)console.log(H.yellow("You don't have any datasets yet.")),console.log(H.dim("Create one with: nemar dataset upload <path>"));else console.log(H.yellow("No datasets found."));return}console.log(),console.log(H.bold(`Datasets (${J.length}${$.count>J.length?` of ${$.count}`:""}):`)),console.log();let B=Math.max(10,...J.map((q)=>q.dataset_id.length)),Y=Math.min(30,Math.max(10,...J.map((q)=>q.name.length))),X=Math.max(8,...J.map((q)=>q.owner_username.length)),G=10,W=["ID".padEnd(B),"Name".padEnd(Y),"Owner".padEnd(X),"Visibility".padEnd(G),"Status"].join(" ");console.log(H.dim(W)),console.log(H.dim("-".repeat(W.length)));for(let q of J){let K=q.name.length>Y?`${q.name.substring(0,Y-3)}...`:q.name,Z=q.visibility==="public"?H.green("public"):H.yellow("private"),z=[H.cyan(q.dataset_id.padEnd(B)),K.padEnd(Y),q.owner_username.padEnd(X),Z.padEnd(G+(Z.length-q.visibility.length)),wg(q.status)].join(" ");console.log(z)}console.log(),console.log(H.dim("For details: nemar dataset status <dataset-id>"))});DD.command("release").description("Create a version bump PR for a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("--type <type>","Bump type: patch, minor, or major").option("--version <version>","Explicit version (e.g., 2.0.0)").option("--dir <path>","Use existing local clone instead of cloning").option("--monitor","Watch CI checks and offer to merge").option(I0,S0).addHelpText("after",`
|
|
577
575
|
Description:
|
|
578
576
|
Create a pull request that bumps the dataset version in
|
|
579
577
|
dataset_description.json. The PR triggers CI checks (BIDS validation,
|
|
@@ -583,15 +581,15 @@ Description:
|
|
|
583
581
|
Examples:
|
|
584
582
|
$ nemar dataset release nm000104 --type patch
|
|
585
583
|
$ nemar dataset release nm000104 --version 2.0.0
|
|
586
|
-
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(await QD({cmd:["git","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: git is not installed")),process.exit(1);if(await QD({cmd:["gh","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: GitHub CLI (gh) is not installed")),console.log(" Install: brew install gh (or see https://cli.github.com)"),process.exit(1);let Q=N("Fetching dataset info...").start(),B;try{B=await cD(D),Q.succeed(`Dataset: ${B.name||D}`)}catch(T){if(T instanceof i)Q.fail(T.message);else Q.fail("Failed to fetch dataset");process.exit(1)}if(!B.github_repo)console.log(H.red("Error: Dataset has no GitHub repository")),process.exit(1);let Y;try{let T=await S_(D);if(Y=T.current_version,console.log(` Current version: ${H.cyan(Y)}`),T.versions.length>0){console.log(` Version DOIs: ${T.versions.length}`);for(let f of T.versions.slice(0,3))console.log(` ${f.version} - ${H.
|
|
584
|
+
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(await QD({cmd:["git","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: git is not installed")),process.exit(1);if(await QD({cmd:["gh","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: GitHub CLI (gh) is not installed")),console.log(" Install: brew install gh (or see https://cli.github.com)"),process.exit(1);let Q=N("Fetching dataset info...").start(),B;try{B=await cD(D),Q.succeed(`Dataset: ${B.name||D}`)}catch(T){if(T instanceof i)Q.fail(T.message);else Q.fail("Failed to fetch dataset");process.exit(1)}if(!B.github_repo)console.log(H.red("Error: Dataset has no GitHub repository")),process.exit(1);let Y;try{let T=await S_(D);if(Y=T.current_version,console.log(` Current version: ${H.cyan(Y)}`),T.versions.length>0){console.log(` Version DOIs: ${T.versions.length}`);for(let f of T.versions.slice(0,3))console.log(` ${f.version} - ${H.dim(f.doi)}`);if(T.versions.length>3)console.log(H.dim(` ... and ${T.versions.length-3} more`))}}catch(T){let f=T instanceof i?`${T.statusCode}: ${T.message}`:String(T);console.log(H.red(`Error: Could not fetch version history (${f})`)),console.log(" Cannot determine current version. Ensure the backend is reachable."),process.exit(1)}let X;if(F.version){if(!wW(F.version))console.log(H.red(`Error: Invalid version: ${F.version}`)),console.log(" Expected format: X.Y.Z (e.g., 2.0.0)"),process.exit(1);X=F.version.replace(/^v/,"")}else if(F.type){let T=F.type;if(!["patch","minor","major"].includes(T))console.log(H.red(`Error: Invalid bump type: ${F.type}`)),console.log(" Expected: patch, minor, or major"),process.exit(1);X=S4(Y,T)}else{if(!tJ(Y))console.log(H.red(`Error: Cannot parse current version: ${Y}`)),process.exit(1);let f=[{name:`patch ${Y} -> ${S4(Y,"patch")}`,value:"patch"},{name:`minor ${Y} -> ${S4(Y,"minor")}`,value:"minor"},{name:`major ${Y} -> ${S4(Y,"major")}`,value:"major"},{name:"custom version",value:"custom"}],{bumpType:n}=await B0.prompt([{type:"list",name:"bumpType",message:"Select version bump type:",choices:f}]);if(n==="custom"){let{customVersion:s}=await B0.prompt([{type:"input",name:"customVersion",message:"Enter version (X.Y.Z):",validate:(h)=>wW(h)||"Invalid format. Use X.Y.Z (e.g., 2.0.0)"}]);X=s.replace(/^v/,"")}else X=S4(Y,n)}if(console.log(),console.log(` ${H.bold("Version bump:")} ${Y} -> ${H.green(X)}`),await y0(`Create release PR for ${D} v${X}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let W,q=!0;if(F.dir){if(!JD(F.dir))console.log(H.red(`Error: Directory not found: ${F.dir}`)),process.exit(1);W=$D(F.dir),q=!1}else W=SE0(P9(kE0(),`nemar-release-${D}-`));if(q){let T=`https://github.com/${B.github_repo}.git`,f=N("Cloning dataset...").start(),n=await U8(T,W);if(!n.success)f.fail(`Clone failed: ${n.error}`),process.exit(1);f.succeed("Cloned dataset")}let K=`release/v${X}`,Z=N("Creating release branch...").start(),z=QD({cmd:["git","checkout","-b",K],cwd:W,stdout:"pipe",stderr:"pipe"});if(await z.exited!==0){let T=await new Response(z.stderr).text();Z.fail(`Failed to create branch: ${T.trim()}`),process.exit(1)}Z.succeed(`Created branch: ${K}`);let U=P9(W,"dataset_description.json");if(!JD(U))console.log(H.red("Error: dataset_description.json not found in repo")),process.exit(1);let A;try{A=JSON.parse(L8(U,"utf-8"))}catch(T){if(T instanceof SyntaxError)console.log(H.red("Error: dataset_description.json contains invalid JSON"));else console.log(H.red(`Error: Could not read dataset_description.json: ${T}`));process.exit(1)}A.Version=X,k4(U,`${JSON.stringify(A,null,2)}
|
|
587
585
|
`);let M=N("Committing version bump...").start(),L=QD({cmd:["git","add","dataset_description.json"],cwd:W,stdout:"pipe",stderr:"pipe"});if(await L.exited!==0){let T=await new Response(L.stderr).text();M.fail(`Failed to stage changes: ${T.trim()}`),process.exit(1)}let C=QD({cmd:["git","commit","-m",`Bump version to ${X}`],cwd:W,stdout:"pipe",stderr:"pipe"});if(await C.exited!==0){let T=await new Response(C.stderr).text();M.fail(`Commit failed: ${T.trim()}`),process.exit(1)}M.succeed("Committed version bump");let O=N("Pushing branch...").start(),y=await L9(W,K);if(!y.success)O.fail(`Push failed: ${y.error}`),process.exit(1);O.succeed("Pushed branch");let w=!1,I=N("Creating pull request...").start();try{let T=`Release v${X}`,f=`## Version Bump
|
|
588
586
|
|
|
589
587
|
Bumps ${D} from ${Y} to ${X}.
|
|
590
588
|
|
|
591
589
|
On merge, CI will:
|
|
592
590
|
- Tag the release (v${X})
|
|
593
|
-
- Publish a version DOI (if concept DOI exists)`,n=QD({cmd:["gh","pr","create","--repo",B.github_repo,"--head",K,"--base","main","--title",T,"--body",f],cwd:W,stdout:"pipe",stderr:"pipe"}),s=(await new Response(n.stdout).text()).trim();if(await n.exited!==0){let h=await new Response(n.stderr).text();throw Error(h.trim()||"gh pr create failed")}w=!0,I.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR:")} ${s}`)}catch(T){I.fail("Failed to create PR");let f=T instanceof Error?T.message:String(T);if(console.log(H.red(` ${f}`)),f.includes("not found")||f.includes("command not found"))console.log(H.yellow(" Install: brew install gh"));else if(f.includes("auth")||f.includes("401"))console.log(H.yellow(" Run: gh auth login"));console.log(H.
|
|
594
|
-
Timed out waiting for checks.`))}if(q)console.log(),console.log(H.
|
|
591
|
+
- Publish a version DOI (if concept DOI exists)`,n=QD({cmd:["gh","pr","create","--repo",B.github_repo,"--head",K,"--base","main","--title",T,"--body",f],cwd:W,stdout:"pipe",stderr:"pipe"}),s=(await new Response(n.stdout).text()).trim();if(await n.exited!==0){let h=await new Response(n.stderr).text();throw Error(h.trim()||"gh pr create failed")}w=!0,I.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR:")} ${s}`)}catch(T){I.fail("Failed to create PR");let f=T instanceof Error?T.message:String(T);if(console.log(H.red(` ${f}`)),f.includes("not found")||f.includes("command not found"))console.log(H.yellow(" Install: brew install gh"));else if(f.includes("auth")||f.includes("401"))console.log(H.yellow(" Run: gh auth login"));console.log(H.dim(` Branch ${K} has been pushed. Create the PR manually.`))}if(F.monitor&&w){console.log(),console.log(H.dim("Monitoring CI checks...")),console.log(H.dim(" Press Ctrl+C to stop monitoring"));let T=0,f=60;while(T<f){await new Promise((t)=>setTimeout(t,1e4)),T++;let n=QD({cmd:["gh","pr","checks","--repo",B.github_repo,K],cwd:W,stdout:"pipe",stderr:"pipe"}),s=await new Response(n.stdout).text();if(await n.exited===0){if(console.log(H.green(" All checks passed!")),await y0("Merge the PR?",{yes:F.yes})==="confirmed"){let t0=QD({cmd:["gh","pr","merge","--repo",B.github_repo,K,"--squash","--delete-branch"],cwd:W,stdout:"pipe",stderr:"pipe"});if(await t0.exited===0)console.log(H.green(" PR merged successfully!"));else{let A0=await new Response(t0.stderr).text();console.log(H.red(` Merge failed: ${A0.trim()}`))}}break}if(s.includes("fail")||s.includes("X")){console.log(H.red(" Some checks failed:")),console.log(s);break}process.stdout.write(H.dim("."))}if(T>=f)console.log(H.yellow(`
|
|
592
|
+
Timed out waiting for checks.`))}if(q)console.log(),console.log(H.dim(`Working directory: ${W}`)),console.log(H.dim("You can delete this directory after the PR is merged."))});DD.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(I0,S0).addHelpText("after",`
|
|
595
593
|
Description:
|
|
596
594
|
Push local changes (metadata or data files) to a dataset via a pull
|
|
597
595
|
request. Automatically bumps the version, commits, pushes, and creates
|
|
@@ -608,7 +606,7 @@ Examples:
|
|
|
608
606
|
$ cd nm000104 && nemar dataset update
|
|
609
607
|
$ nemar dataset update ./nm000104 --bump minor -m "Add new subjects"
|
|
610
608
|
$ nemar dataset update --branch fix/metadata -m "Fix participant ages"`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);if(await QD({cmd:["git","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: git is not installed")),process.exit(1);if(await QD({cmd:["gh","--version"],stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.red("Error: GitHub CLI (gh) is not installed")),console.log(" Install: brew install gh (or see https://cli.github.com)"),process.exit(1);let Q=$D(D||".");if(!JD(P9(Q,".git")))console.log(H.red("Error: Not a git repository")),console.log(" Run this from inside a dataset clone, or pass the path."),process.exit(1);let B=await UF(Q);if(!B)console.log(H.red("Error: Could not detect dataset ID from git remote")),process.exit(1);console.log(` Dataset: ${H.cyan(B)}`);let Y=await M9(Q);if(Y!=="main"){if(console.log(H.yellow(`Warning: Currently on branch '${Y}', expected 'main'`)),await y0("Continue anyway?",{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}}let X=QD({cmd:["git","status","--porcelain"],cwd:Q,stdout:"pipe",stderr:"pipe"}),G=(await new Response(X.stdout).text()).trim();if(await X.exited!==0)console.log(H.red("Error: Failed to check git status")),process.exit(1);if(!G){console.log(H.yellow("No changes detected.")),console.log(" Make changes to the dataset files, then run this command again.");return}let W=G.split(`
|
|
611
|
-
`),q=[],K=[];for(let p of W){let W0=p.substring(3).trim();if(/\.(edf|bdf|set|fdt|nwb|eeg|vhdr|vmrk|cnt|mff|gz)$/i.test(W0))q.push(W0);else K.push(W0)}if(console.log(),K.length>0){console.log(` ${H.bold("Metadata files:")} ${K.length}`);for(let p of K.slice(0,5))console.log(` ${p}`);if(K.length>5)console.log(H.
|
|
609
|
+
`),q=[],K=[];for(let p of W){let W0=p.substring(3).trim();if(/\.(edf|bdf|set|fdt|nwb|eeg|vhdr|vmrk|cnt|mff|gz)$/i.test(W0))q.push(W0);else K.push(W0)}if(console.log(),K.length>0){console.log(` ${H.bold("Metadata files:")} ${K.length}`);for(let p of K.slice(0,5))console.log(` ${p}`);if(K.length>5)console.log(H.dim(` ... and ${K.length-5} more`))}if(q.length>0){console.log(` ${H.bold("Data files:")} ${q.length}`);for(let p of q.slice(0,5))console.log(` ${p}`);if(q.length>5)console.log(H.dim(` ... and ${q.length-5} more`))}let Z=N("Fetching dataset info...").start(),z;try{z=await cD(B),Z.succeed()}catch(p){if(p instanceof i)Z.fail(p.message);else Z.fail("Failed to fetch dataset");process.exit(1)}if(!z.github_repo)console.log(H.red("Error: Dataset has no GitHub repository")),process.exit(1);let U,A=P9(Q,"dataset_description.json");if(!JD(A))console.log(H.red("Error: dataset_description.json not found")),console.log(" This file is required for BIDS datasets."),process.exit(1);try{let p=JSON.parse(L8(A,"utf-8"));if(typeof p.Version!=="string"||!p.Version)console.log(H.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);U=p.Version}catch(p){if(p instanceof SyntaxError)console.log(H.red("Error: dataset_description.json contains invalid JSON"));else console.log(H.red(`Error: Could not read dataset_description.json: ${p}`));process.exit(1)}let M=F.bump;if(!["patch","minor","major"].includes(M))console.log(H.red(`Error: Invalid bump type: ${F.bump}`)),process.exit(1);let L=S4(U,M);if(console.log(` ${H.bold("Version bump:")} ${U} -> ${H.green(L)}`),await y0(`Create update PR for ${B}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let O=Date.now().toString(36),y=F.branch||`update/${B}-${O}`,w=N("Creating update branch...").start(),I=QD({cmd:["git","checkout","-b",y],cwd:Q,stdout:"pipe",stderr:"pipe"});if(await I.exited!==0){let p=await new Response(I.stderr).text();w.fail(`Failed to create branch: ${p.trim()}`),process.exit(1)}w.succeed(`Created branch: ${y}`);let T=P9(Q,"dataset_description.json"),f;try{f=JSON.parse(L8(T,"utf-8"))}catch(p){if(p instanceof SyntaxError)console.log(H.red("Error: dataset_description.json contains invalid JSON"));else console.log(H.red(`Error: Could not read dataset_description.json: ${p}`));process.exit(1)}f.Version=L,k4(T,`${JSON.stringify(f,null,2)}
|
|
612
610
|
`);let n=N("Committing changes...").start(),s=QD({cmd:["git","add","-A"],cwd:Q,stdout:"pipe",stderr:"pipe"});if(await s.exited!==0){let p=await new Response(s.stderr).text();n.fail(`Failed to stage changes: ${p.trim()}`),process.exit(1)}let h=F.message||`Update ${B} to ${L}`,t=QD({cmd:["git","commit","-m",h],cwd:Q,stdout:"pipe",stderr:"pipe"});if(await t.exited!==0){let p=await new Response(t.stderr).text();n.fail(`Commit failed: ${p.trim()}`),process.exit(1)}if(n.succeed("Committed changes"),q.length>0)if(await QD({cmd:["git","annex","version"],cwd:Q,stdout:"pipe",stderr:"pipe"}).exited===0){let W0=N("Requesting upload credentials...").start(),w0=null;try{w0=await R4(B),W0.succeed("Upload credentials received")}catch(K0){W0.fail(`Could not get upload credentials: ${p0(K0)}`),console.log(H.yellow(" Data files will not be uploaded. Push manually after PR."))}if(w0){if((await pJ(Q)).length===0){W0=N("Configuring S3 remote...").start();let x0=await w4(Q,{name:"nemar-s3",bucket:w0.s3.bucket,prefix:`${B}/objects`,region:w0.s3.region,publicUrl:`https://${w0.s3.bucket}.s3.${w0.s3.region}.amazonaws.com`},nD(w0.credentials));if(!x0.success)W0.warn(`Failed to configure S3 remote: ${x0.error}`),console.log(H.yellow(" Data files will not be uploaded. Push manually after PR."));else W0.succeed("S3 remote configured")}if((await pJ(Q)).includes("nemar-s3")){W0=N("Uploading data files to S3...").start();let x0=await T4(Q,"nemar-s3",4,nD(w0.credentials));if(await A1(Q),!x0.success)W0.warn(`S3 upload issue: ${x0.error}`),console.log(H.yellow(" Data files may need manual upload after PR creation."));else W0.succeed(`Uploaded ${x0.filesCopied} data files to S3`)}}}else console.log(H.yellow(" git-annex not available; data files will be committed to git."));let t0=N("Pushing branch...").start(),R=await L9(Q,y);if(!R.success)t0.fail(`Push failed: ${R.error}`),process.exit(1);if(q.length>0){if(await QD({cmd:["git","push","origin","git-annex"],cwd:Q,stdout:"pipe",stderr:"pipe"}).exited!==0)console.log(H.yellow(" Warning: Failed to push git-annex branch"))}t0.succeed("Pushed branch");let A0=!1,d=N("Creating pull request...").start();try{let p=F.message?`${F.message} (v${L})`:`Update ${B} to v${L}`,W0=[...K,...q].slice(0,10).join(`
|
|
613
611
|
- `),w0=`## Dataset Update
|
|
614
612
|
|
|
@@ -616,7 +614,7 @@ Bumps ${B} from ${U} to ${L}.
|
|
|
616
614
|
|
|
617
615
|
### Changed files
|
|
618
616
|
- ${W0}${W.length>10?`
|
|
619
|
-
- ... and ${W.length-10} more`:""}`,K0=QD({cmd:["gh","pr","create","--repo",z.github_repo,"--head",y,"--base","main","--title",p,"--body",w0],cwd:Q,stdout:"pipe",stderr:"pipe"}),XD=(await new Response(K0.stdout).text()).trim();if(await K0.exited!==0){let x0=await new Response(K0.stderr).text();throw Error(x0.trim()||"gh pr create failed")}A0=!0,d.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR:")} ${XD}`)}catch(p){d.fail("Failed to create PR");let W0=p instanceof Error?p.message:String(p);console.log(H.red(` ${W0}`)),console.log(H.
|
|
617
|
+
- ... and ${W.length-10} more`:""}`,K0=QD({cmd:["gh","pr","create","--repo",z.github_repo,"--head",y,"--base","main","--title",p,"--body",w0],cwd:Q,stdout:"pipe",stderr:"pipe"}),XD=(await new Response(K0.stdout).text()).trim();if(await K0.exited!==0){let x0=await new Response(K0.stderr).text();throw Error(x0.trim()||"gh pr create failed")}A0=!0,d.succeed("Created pull request"),console.log(),console.log(` ${H.cyan("PR:")} ${XD}`)}catch(p){d.fail("Failed to create PR");let W0=p instanceof Error?p.message:String(p);console.log(H.red(` ${W0}`)),console.log(H.dim(` Branch ${y} has been pushed. Create the PR manually.`))}if(F.monitor&&A0){console.log(),console.log(H.dim("Monitoring CI checks..."));let p=0,W0=60;while(p<W0){await new Promise((x0)=>setTimeout(x0,1e4)),p++;let w0=QD({cmd:["gh","pr","checks","--repo",z.github_repo,y],cwd:Q,stdout:"pipe",stderr:"pipe"}),K0=await new Response(w0.stdout).text();if(await w0.exited===0){if(console.log(H.green(" All checks passed!")),await y0("Merge the PR?",{yes:F.yes})==="confirmed"){let $1=QD({cmd:["gh","pr","merge","--repo",z.github_repo,y,"--squash","--delete-branch"],cwd:Q,stdout:"pipe",stderr:"pipe"});if(await $1.exited===0)console.log(H.green(" PR merged successfully!"));else{let GD=await new Response($1.stderr).text();console.log(H.red(` Merge failed: ${GD.trim()}`))}}break}if(K0.includes("fail")||K0.includes("X")){console.log(H.red(" Some checks failed:")),console.log(K0);break}process.stdout.write(H.dim("."))}if(p>=W0)console.log(H.yellow(`
|
|
620
618
|
Timed out waiting for checks.`))}});DD.command("request-access").description("Request collaborator access to a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
621
619
|
Description:
|
|
622
620
|
Request access to a NEMAR dataset to push data via git-annex.
|
|
@@ -630,7 +628,7 @@ Requirements:
|
|
|
630
628
|
- Approved user status
|
|
631
629
|
|
|
632
630
|
Examples:
|
|
633
|
-
$ nemar dataset request-access nm000104`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Requesting access to ${D}...`).start();try{let $=await v_(D);F.succeed($.message),console.log(),console.log(` GitHub: https://github.com/${$.github_repo}`),console.log(),console.log(H.
|
|
631
|
+
$ nemar dataset request-access nm000104`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Requesting access to ${D}...`).start();try{let $=await v_(D);F.succeed($.message),console.log(),console.log(` GitHub: https://github.com/${$.github_repo}`),console.log(),console.log(H.dim("You can now push data to this dataset via git-annex."))}catch($){if($ instanceof i)F.fail($.message);else F.fail("Failed to request access"),console.log(H.red(` ${$.message}`));process.exit(1)}});DD.command("invite").description("Invite a user as collaborator to your dataset").argument("<username>","Username to invite").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
634
632
|
Description:
|
|
635
633
|
Invite a NEMAR user as a collaborator to your dataset.
|
|
636
634
|
Only dataset owners and admins can invite collaborators.
|
|
@@ -649,7 +647,7 @@ Description:
|
|
|
649
647
|
|
|
650
648
|
Examples:
|
|
651
649
|
$ nemar dataset collaborators nm000104
|
|
652
|
-
$ nemar dataset collaborators nm000104 --json`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let $=N(`Fetching collaborators for ${D}...`).start();try{let J=await x_(D);if($.stop(),F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(H.bold(`Collaborators for ${D} (${J.count}):`)),console.log(),J.collaborators.length===0){console.log(H.
|
|
650
|
+
$ nemar dataset collaborators nm000104 --json`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let $=N(`Fetching collaborators for ${D}...`).start();try{let J=await x_(D);if($.stop(),F.json){console.log(JSON.stringify(J,null,2));return}if(console.log(),console.log(H.bold(`Collaborators for ${D} (${J.count}):`)),console.log(),J.collaborators.length===0){console.log(H.dim(" No collaborators yet.")),console.log(),console.log(H.dim(`Invite users with: nemar dataset invite <username> ${D}`));return}let Q=["Username","GitHub","Access","Granted"].join(" ");console.log(H.dim(` ${Q}`)),console.log(H.dim(` ${"-".repeat(Q.length)}`));for(let B of J.collaborators){let Y=new Date(B.granted_at).toLocaleDateString(),X=B.access_type==="invited"?"invited":"requested",G=[B.username.padEnd(10),`@${B.github_username}`.padEnd(15),X.padEnd(10),Y].join(" ");console.log(` ${G}`)}console.log()}catch(J){if(J instanceof i)$.fail(J.message);else $.fail("Failed to fetch collaborators"),console.log(H.red(` ${J.message}`));process.exit(1)}});var DQ=new FD("publish").description("Publication workflow management");DQ.command("request").description("Request publication of a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
653
651
|
Description:
|
|
654
652
|
Submit a publication request to make your private dataset publicly accessible.
|
|
655
653
|
NEMAR admins will be notified and can approve or deny your request.
|
|
@@ -667,8 +665,8 @@ Status Flow:
|
|
|
667
665
|
|
|
668
666
|
Examples:
|
|
669
667
|
$ nemar dataset publish request nm000104
|
|
670
|
-
$ nemar dataset publish status nm000104 # Check request status`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Requesting publication for ${D}...`).start();try{let $=await hJ(D);F.succeed($.message),console.log(H.
|
|
671
|
-
Admins have been notified. Use 'nemar dataset publish status' to check progress.`))}catch($){if($ instanceof i){if(F.fail($.message),console.log(H.
|
|
668
|
+
$ nemar dataset publish status nm000104 # Check request status`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Requesting publication for ${D}...`).start();try{let $=await hJ(D);F.succeed($.message),console.log(H.dim(`
|
|
669
|
+
Admins have been notified. Use 'nemar dataset publish status' to check progress.`))}catch($){if($ instanceof i){if(F.fail($.message),console.log(H.dim(` ${$.message}`)),$.statusCode===409)console.log(H.dim(" Use 'nemar dataset publish resend' to remind admins."));else if($.statusCode===403)console.log(H.dim(" Only the dataset owner can request publication."))}else{F.fail("Failed to request publication");let J=$ instanceof Error?$.message:String($);console.log(H.dim(` Error details: ${J}`))}}});DQ.command("status").description("Check publication status of a dataset").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
672
670
|
Description:
|
|
673
671
|
Check the status of your publication request and see progress through
|
|
674
672
|
the approval workflow.
|
|
@@ -698,9 +696,9 @@ Steps in Approval Process:
|
|
|
698
696
|
Examples:
|
|
699
697
|
$ nemar dataset publish status nm000104`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Checking publication status for ${D}...`).start();try{let $=await h_(D);F.stop(),console.log(`
|
|
700
698
|
${H.cyan("Publication Status:")} ${D}
|
|
701
|
-
`);let Q={published:H.green,denied:H.red,approving:H.yellow}[$.status]||H.
|
|
699
|
+
`);let Q={published:H.green,denied:H.red,approving:H.yellow}[$.status]||H.dim;if(console.log(` Status: ${Q($.status)}`),$.requested_at)console.log(` Requested: ${H.dim($.requested_at)}`);if($.requested_by)console.log(` Requested by: ${H.dim($.requested_by)}`);if($.status==="denied"&&$.denied_reason)console.log(`
|
|
702
700
|
${H.red("Reason:")} ${$.denied_reason}`);if($.status==="approving"){let B=["ci_check","repo_public","s3_public_read","tag_protect","doi_create","update_metadata","update_readme","create_tag","create_release","upload_to_zenodo","publish_doi","s3_lock","generate_archive","notify_user"],Y=$.steps_completed||[];console.log(`
|
|
703
|
-
Steps:`);for(let X of B){let G=Y.includes(X),W=$.current_step===X,q=G?H.green("[x]"):W?H.yellow("[>]"):H.
|
|
701
|
+
Steps:`);for(let X of B){let G=Y.includes(X),W=$.current_step===X,q=G?H.green("[x]"):W?H.yellow("[>]"):H.dim("[ ]"),K=X.replace(/_/g," ");console.log(` ${q} ${K}${W&&$.last_error?H.red(` (error: ${$.last_error})`):""}`)}}if($.status==="published"&&$.approved_at)console.log(` Published: ${H.dim($.approved_at)}`);console.log()}catch($){if($ instanceof i)F.fail($.message),console.log(H.dim(` ${$.message}`));else{F.fail("Failed to check publication status");let J=$ instanceof Error?$.message:String($);console.log(H.dim(` Error details: ${J}`))}}});DQ.command("resend").description("Resend publication request notification to admins").argument("<dataset-id>","Dataset ID (e.g., nm000104)").addHelpText("after",`
|
|
704
702
|
Description:
|
|
705
703
|
Resend the publication request notification email to all NEMAR admins.
|
|
706
704
|
Use this if admins haven't responded to your original request.
|
|
@@ -714,7 +712,7 @@ When to Use:
|
|
|
714
712
|
- Your request status is still "requested"
|
|
715
713
|
|
|
716
714
|
Examples:
|
|
717
|
-
$ nemar dataset publish resend nm000104`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Resending notification for ${D}...`).start();try{let $=await b_(D);F.succeed($.message)}catch($){if($ instanceof i){if(F.fail($.message),console.log(H.
|
|
715
|
+
$ nemar dataset publish resend nm000104`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=N(`Resending notification for ${D}...`).start();try{let $=await b_(D);F.succeed($.message)}catch($){if($ instanceof i){if(F.fail($.message),console.log(H.dim(` ${$.message}`)),$.statusCode===404)console.log(H.dim(" Publication request not found for this dataset."))}else{F.fail("Failed to resend notification");let J=$ instanceof Error?$.message:String($);console.log(H.dim(` Error details: ${J}`))}}});DD.addCommand(DQ);DD.command("clone").description("Clone a dataset from NEMAR").argument("<dataset-id>","Dataset ID (e.g., nm000104)").option("-o, --output <path>","Output directory (default: ./<dataset-id>)").addHelpText("after",`
|
|
718
716
|
Description:
|
|
719
717
|
Clone a NEMAR dataset repository with git-annex initialized.
|
|
720
718
|
Data files are not downloaded; use 'nemar dataset get' afterward.
|
|
@@ -728,7 +726,7 @@ Requirements:
|
|
|
728
726
|
|
|
729
727
|
Examples:
|
|
730
728
|
$ nemar dataset clone nm000104
|
|
731
|
-
$ nemar dataset clone nm000104 -o ./my-dataset`).action(async(D,F)=>{await rJ("clone");let $=N("Checking prerequisites...").start(),J=await A9();if(!J.allPassed){$.fail("Prerequisites check failed");for(let K of J.errors)console.log(H.red(` - ${K}`));process.exit(1)}$.succeed("Prerequisites OK"),$=N(`Resolving dataset ${D}...`).start();let Q,B;try{let K=await cD(D);if(!K.github_repo||!/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(K.github_repo))$.fail("Dataset has no valid GitHub repository"),console.log(H.red(` Received: ${K.github_repo||"(empty)"}`)),process.exit(1);Q=`https://github.com/${K.github_repo}.git`,B=K.visibility,$.succeed(`Found: ${K.name}`)}catch(K){$.fail("Dataset not found");let Z=K instanceof Error?K.message:String(K);console.log(H.red(` ${Z}`)),process.exit(1)}let Y=$D(F.output||D);if(JD(Y))console.log(H.red(`Error: Path already exists: ${Y}`)),process.exit(1);let X=null;if(B!=="public"){$=N("Requesting download credentials...").start();try{X=await gJ(D),$.succeed("Download credentials received (2h expiry)")}catch(K){$.fail("Failed to get download credentials"),console.log(H.red(` ${K.message}`)),console.log(H.
|
|
729
|
+
$ nemar dataset clone nm000104 -o ./my-dataset`).action(async(D,F)=>{await rJ("clone");let $=N("Checking prerequisites...").start(),J=await A9();if(!J.allPassed){$.fail("Prerequisites check failed");for(let K of J.errors)console.log(H.red(` - ${K}`));process.exit(1)}$.succeed("Prerequisites OK"),$=N(`Resolving dataset ${D}...`).start();let Q,B;try{let K=await cD(D);if(!K.github_repo||!/^[a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+$/.test(K.github_repo))$.fail("Dataset has no valid GitHub repository"),console.log(H.red(` Received: ${K.github_repo||"(empty)"}`)),process.exit(1);Q=`https://github.com/${K.github_repo}.git`,B=K.visibility,$.succeed(`Found: ${K.name}`)}catch(K){$.fail("Dataset not found");let Z=K instanceof Error?K.message:String(K);console.log(H.red(` ${Z}`)),process.exit(1)}let Y=$D(F.output||D);if(JD(Y))console.log(H.red(`Error: Path already exists: ${Y}`)),process.exit(1);let X=null;if(B!=="public"){$=N("Requesting download credentials...").start();try{X=await gJ(D),$.succeed("Download credentials received (2h expiry)")}catch(K){$.fail("Failed to get download credentials"),console.log(H.red(` ${K.message}`)),console.log(H.dim("Private datasets require authentication. Run 'nemar auth login' first.")),process.exit(1)}}let G=X?nD(X.credentials):void 0;$=N("Cloning dataset...").start();let W=await U8(Q,Y);if(!W.success)$.fail("Clone failed"),console.log(H.red(` ${W.error}`)),process.exit(1);$.succeed("Dataset cloned");let q=await ZF(Y,"nemar-s3",G);if(q.enabled)console.log(H.dim(" S3 remote enabled for data downloads"));else if(!q.success)console.log(H.yellow(` Warning: Could not enable S3 remote: ${q.error}`));if(X)await A1(Y);console.log(),console.log(` Location: ${H.cyan(Y)}`),console.log(),console.log(H.dim("Data files are not downloaded yet. To get them:")),console.log(H.dim(` cd ${Y}`)),console.log(H.dim(" nemar dataset get"))});DD.command("get").description("Download annexed data files for the current dataset").argument("[files...]","Specific files/paths to get (default: all)").option("-j, --jobs <number>","Parallel download streams","4").addHelpText("after",`
|
|
732
730
|
Description:
|
|
733
731
|
Download data files from the remote for a cloned dataset.
|
|
734
732
|
Must be run inside a git-annex dataset directory.
|
|
@@ -739,7 +737,7 @@ Description:
|
|
|
739
737
|
Examples:
|
|
740
738
|
$ nemar dataset get # Get all files
|
|
741
739
|
$ nemar dataset get sub-01/eeg/ # Get specific directory
|
|
742
|
-
$ nemar dataset get *.edf -j 8 # Get EDF files with 8 streams`).action(async(D,F)=>{let $=process.cwd();if(!await p8($))console.log(H.red("Error: Not inside a git-annex dataset directory")),console.log(H.
|
|
740
|
+
$ nemar dataset get *.edf -j 8 # Get EDF files with 8 streams`).action(async(D,F)=>{let $=process.cwd();if(!await p8($))console.log(H.red("Error: Not inside a git-annex dataset directory")),console.log(H.dim("Use 'nemar dataset clone <id>' first, then cd into the dataset.")),process.exit(1);let J=Number.parseInt(F.jobs,10);if(Number.isNaN(J)||J<1)console.log(H.red("Error: --jobs must be a positive integer")),process.exit(1);let Q=null,B=await UF($);if(B){let Z=null;try{Z=await cD(B)}catch{}if(Z&&Z.visibility!=="public"){if(!v0())console.log(H.red("Error: This is a private dataset. Authentication required.")),console.log(H.dim("Run 'nemar auth login' first.")),process.exit(1);let z=N("Requesting download credentials...").start();try{Q=await gJ(B),z.succeed("Download credentials received (2h expiry)")}catch(U){z.fail("Failed to get download credentials"),console.log(H.red(` ${U.message}`)),console.log(H.dim("Private datasets require authentication. Run 'nemar auth login' first.")),process.exit(1)}}}let Y=Q?nD(Q.credentials):void 0,X=await ZF($,"nemar-s3",Y);if(!X.success&&!X.enabled)console.log(H.yellow(` Warning: Could not enable S3 remote: ${X.error}`));let G=D.length>0?D:void 0,W=G?`Getting ${G.length} path(s)...`:"Getting all data files...",q=N(W).start(),K=await QW($,{jobs:J,paths:G,credentials:Y});if(!K.success){if(q.fail("Failed to get data"),console.log(H.red(` ${K.error}`)),Q)await A1($);process.exit(1)}if(Q)await A1($);if(K.filesDownloaded===0)q.succeed("All data files already present");else q.succeed(`Downloaded ${K.filesDownloaded} file(s)`)});async function Tg(D){let F=process.cwd();if(!await p8(F))console.log(H.red("Error: Not inside a git-annex dataset directory")),process.exit(1);let $=N("Saving changes...").start(),J=await g6(F,D.message);if(!J.success)$.fail("Save failed"),console.log(H.red(` ${J.error}`)),process.exit(1);$.succeed("Changes saved")}DD.command("commit").description("Stage and commit changes in the current dataset").option("-m, --message <msg>","Commit message","Save changes").addHelpText("after",`
|
|
743
741
|
Description:
|
|
744
742
|
Stage all changes (git add -A) and commit them. Large files are
|
|
745
743
|
automatically handled by git-annex based on the dataset's largefiles config.
|
|
@@ -782,7 +780,7 @@ Examples:
|
|
|
782
780
|
$ nemar dataset push
|
|
783
781
|
$ nemar dataset push --no-s3 # Git only, skip S3
|
|
784
782
|
$ nemar dataset push -j 8 # More parallel S3 streams
|
|
785
|
-
$ nemar dataset push --pr -t "Add new recordings"`).action(async(D)=>{let F=process.cwd();if(!await p8(F))console.log(H.red("Error: Not inside a git-annex dataset directory")),process.exit(1);let $=N("Pushing to GitHub...").start(),J=await Z8(F);if(!J.success)$.fail("Git push failed"),console.log(H.red(` ${J.error}`)),process.exit(1);if(J.warning)$.warn("Git pushed with warning"),console.log(H.yellow(` ${J.warning}`));else $.succeed("Pushed to GitHub");if(D.s3!==!1){let Q=await pJ(F);if(Q.length>0){let B=Q[0];if(Q.length>1)console.log(H.
|
|
783
|
+
$ nemar dataset push --pr -t "Add new recordings"`).action(async(D)=>{let F=process.cwd();if(!await p8(F))console.log(H.red("Error: Not inside a git-annex dataset directory")),process.exit(1);let $=N("Pushing to GitHub...").start(),J=await Z8(F);if(!J.success)$.fail("Git push failed"),console.log(H.red(` ${J.error}`)),process.exit(1);if(J.warning)$.warn("Git pushed with warning"),console.log(H.yellow(` ${J.warning}`));else $.succeed("Pushed to GitHub");if(D.s3!==!1){let Q=await pJ(F);if(Q.length>0){let B=Q[0];if(Q.length>1)console.log(H.dim(` Multiple S3 remotes: ${Q.join(", ")}. Using: ${B}`));let Y=Number.parseInt(D.jobs,10);if(Number.isNaN(Y)||Y<1)console.log(H.red("Error: --jobs must be a positive integer")),process.exit(1);let X=await UF(F),G=null;if(X&&v0()){$=N("Requesting upload credentials...").start();try{G=await R4(X),$.succeed("Upload credentials received")}catch(K){$.warn(`Could not get upload credentials: ${p0(K)}. Trying environment credentials.`)}}$=N(`Copying data to S3 (${B})...`).start();let W=G?nD(G.credentials):void 0,q=await T4(F,B,Y,W);if(!q.success){if($.fail("S3 push failed"),console.log(H.red(` ${q.error}`)),!G)console.log(H.dim(" Ensure AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are set,")),console.log(H.dim(" or log in with 'nemar auth login' for automatic credentials."));console.log(H.dim(" Git changes were pushed successfully.")),process.exit(1)}await A1(F),$.succeed(`Copied ${q.filesCopied} file(s) to S3`)}else console.log(H.dim(" No S3 remote configured; skipping data push."))}if(D.pr){let Q=await M9(F);if(!Q)console.log(H.red(" Could not determine current branch")),console.log(H.dim(" Ensure you are inside a valid git repository.")),process.exit(1);if(Q==="main"||Q==="master")console.log(H.yellow(" Skipping PR: already on main branch"));else{$=N("Creating pull request...").start();let B=["gh","pr","create"];if(D.title)B.push("--title",D.title);else B.push("--title",`Update from branch ${Q}`);if(D.body)B.push("--body",D.body);else B.push("--body","");try{let Y=QD({cmd:B,cwd:F,env:process.env,stdout:"pipe",stderr:"pipe"}),X=await new Response(Y.stdout).text(),G=await new Response(Y.stderr).text();if(await Y.exited!==0)$.fail("Failed to create pull request"),console.log(H.red(` ${G.trim()||X.trim()}`)),process.exit(1);let q=X.trim();$.succeed("Pull request created"),console.log(` ${H.cyan(q)}`)}catch(Y){$.fail("Failed to create pull request");let X=Y instanceof Error?Y.message:String(Y);if(X.includes("ENOENT")||X.includes("not found"))console.log(H.red(" 'gh' CLI is not installed or not in PATH")),console.log(H.dim(" Install it: https://cli.github.com/"));else console.log(H.red(` ${X}`));process.exit(1)}}}});DD.command("drop").description("Free local copies of annexed files (keeps remote copies)").argument("[files...]","Specific files to drop (default: all)").addHelpText("after",`
|
|
786
784
|
Description:
|
|
787
785
|
Remove local copies of annexed data files. Git-annex verifies that
|
|
788
786
|
remote copies exist before dropping. Use 'nemar dataset get' to
|
|
@@ -791,7 +789,7 @@ Description:
|
|
|
791
789
|
Examples:
|
|
792
790
|
$ nemar dataset drop # Drop all local data
|
|
793
791
|
$ nemar dataset drop sub-01/eeg/ # Drop specific directory
|
|
794
|
-
$ nemar dataset drop *.edf # Drop EDF files`).action(async(D)=>{let F=process.cwd();if(!await p8(F))console.log(H.red("Error: Not inside a git-annex dataset directory")),process.exit(1);let $=D.length>0?D:void 0,J=$?`Dropping ${$.length} path(s)...`:"Dropping all local data...",Q=N(J).start(),B=await Gf(F,$);if(!B.success&&B.dropped===0)Q.fail("Drop failed"),console.log(H.red(` ${B.error}`)),process.exit(1);if(B.kept.length>0){Q.warn(`Dropped ${B.dropped} file(s), ${B.kept.length} kept (no remote copy)`);for(let Y of B.kept.slice(0,5))console.log(H.yellow(` kept: ${Y}`));if(B.kept.length>5)console.log(H.yellow(` ... and ${B.kept.length-5} more`));if(B.error)console.log(H.
|
|
792
|
+
$ nemar dataset drop *.edf # Drop EDF files`).action(async(D)=>{let F=process.cwd();if(!await p8(F))console.log(H.red("Error: Not inside a git-annex dataset directory")),process.exit(1);let $=D.length>0?D:void 0,J=$?`Dropping ${$.length} path(s)...`:"Dropping all local data...",Q=N(J).start(),B=await Gf(F,$);if(!B.success&&B.dropped===0)Q.fail("Drop failed"),console.log(H.red(` ${B.error}`)),process.exit(1);if(B.kept.length>0){Q.warn(`Dropped ${B.dropped} file(s), ${B.kept.length} kept (no remote copy)`);for(let Y of B.kept.slice(0,5))console.log(H.yellow(` kept: ${Y}`));if(B.kept.length>5)console.log(H.yellow(` ... and ${B.kept.length-5} more`));if(B.error)console.log(H.dim(` ${B.error}`));process.exit(1)}else Q.succeed(`Dropped ${B.dropped} file(s)`)});DD.command("ci").description("Check BIDS validation CI status for the current dataset").argument("[dataset-id]","Dataset ID (auto-detected from git remote if omitted)").addHelpText("after",`
|
|
795
793
|
Description:
|
|
796
794
|
Show the status of the BIDS validation CI workflow for a dataset.
|
|
797
795
|
When run inside a cloned dataset, the dataset ID is auto-detected
|
|
@@ -799,7 +797,7 @@ Description:
|
|
|
799
797
|
|
|
800
798
|
Examples:
|
|
801
799
|
$ nemar dataset ci # Auto-detect from CWD
|
|
802
|
-
$ nemar dataset ci nm000104 # Explicit dataset ID`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=D;if(!F){let J=process.cwd();if(await p8(J))F=await UF(J);if(!F)console.log(H.red("Error: Could not detect dataset ID from current directory")),console.log(H.
|
|
800
|
+
$ nemar dataset ci nm000104 # Explicit dataset ID`).action(async(D)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let F=D;if(!F){let J=process.cwd();if(await p8(J))F=await UF(J);if(!F)console.log(H.red("Error: Could not detect dataset ID from current directory")),console.log(H.dim("Provide dataset ID explicitly: nemar dataset ci <id>")),process.exit(1)}let $=N(`Checking CI status for ${F}...`).start();try{let J=await w_(F);$.stop(),console.log(H.bold(`CI Status: ${F}`)),console.log();let{bids_validation:Q}=J;if(!Q.present)console.log(` BIDS Validation: ${H.dim("not configured")}`),console.log(H.dim(` Ask an admin to run: nemar admin ci add ${F}`));else{let B=Q.status==="success"?H.green:Q.status==="failure"?H.red:H.yellow;if(console.log(` BIDS Validation: ${B(Q.status)}`),Q.url)console.log(` Latest run: ${H.cyan(Q.url)}`)}console.log()}catch(J){if(J instanceof i)$.fail(J.message);else{$.fail("Failed to check CI status");let Q=J instanceof Error?J.message:String(J);console.log(H.dim(` ${Q}`))}process.exit(1)}});DD.command("manifest").description("View version manifests for a dataset").argument("[version]","Version to view (lists available if omitted)").option("-d, --dataset <id>","Dataset ID (auto-detected from git remote if omitted)").option("--json","Output raw JSON").addHelpText("after",`
|
|
803
801
|
Description:
|
|
804
802
|
View version manifests that map file paths to S3 annex keys.
|
|
805
803
|
Manifests are generated when a version DOI is published.
|
|
@@ -810,7 +808,7 @@ Examples:
|
|
|
810
808
|
$ nemar dataset manifest # List available versions
|
|
811
809
|
$ nemar dataset manifest v1.0.0 # View specific version
|
|
812
810
|
$ nemar dataset manifest v1.0.0 --json # Raw JSON output
|
|
813
|
-
$ nemar dataset manifest -d nm000104 # Explicit dataset ID`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let $=F.dataset;if(!$){let Q=process.cwd();if(await p8(Q))$=await UF(Q);if(!$)console.log(H.red("Error: Could not detect dataset ID")),console.log(H.
|
|
811
|
+
$ nemar dataset manifest -d nm000104 # Explicit dataset ID`).action(async(D,F)=>{if(!v0())console.log(H.red("Error: Not authenticated")),console.log("Run 'nemar auth login' first"),process.exit(1);let $=F.dataset;if(!$){let Q=process.cwd();if(await p8(Q))$=await UF(Q);if(!$)console.log(H.red("Error: Could not detect dataset ID")),console.log(H.dim("Provide dataset ID: nemar dataset manifest -d <id>")),process.exit(1)}let J=N("Fetching manifest info...").start();try{if(!D){let Q=await T_($);if(J.stop(),console.log(H.bold(`Manifests: ${$}`)),console.log(),Q.versions.length===0)console.log(H.dim(" No manifests available yet.")),console.log(H.dim(" Manifests are generated when a version DOI is published."));else for(let B of Q.versions)console.log(` ${H.cyan(B)}`);console.log()}else{let Q=await j_($,D);if(J.stop(),F.json)console.log(JSON.stringify(Q,null,2));else{if(console.log(H.bold(`Manifest: ${$} ${Q.version}`)),Q.doi)console.log(` DOI: ${H.cyan(Q.doi)}`);if(Q.concept_doi)console.log(` Concept DOI: ${H.dim(Q.concept_doi)}`);console.log(` Created: ${Q.created}`),console.log();let B=Object.entries(Q.files),Y=B.filter(([,G])=>!G.key.startsWith("git:")),X=B.filter(([,G])=>G.key.startsWith("git:"));if(Y.length>0){console.log(H.bold(` Annexed files (${Y.length}):`));for(let[G,W]of Y){let q=Og(W.size);console.log(` ${G} ${H.dim(`(${q})`)}`)}}if(X.length>0){console.log(),console.log(H.bold(` Metadata files (${X.length}):`));for(let[G,W]of X){let q=Og(W.size);console.log(` ${G} ${H.dim(`(${q})`)}`)}}console.log()}}}catch(Q){if(Q instanceof i)J.fail(Q.message);else{J.fail("Failed to fetch manifest");let B=Q instanceof Error?Q.message:String(Q);console.log(H.dim(` ${B}`))}process.exit(1)}});function Og(D){if(D===0)return"0 B";let F=["B","KB","MB","GB","TB"],$=Math.floor(Math.log(D)/Math.log(1024));return`${(D/1024**$).toFixed($>0?1:0)} ${F[$]}`}N1();v3();O4();KF();j4();import{mkdirSync as xE0,rmSync as _E0,writeFileSync as I9}from"fs";import{tmpdir as fE0}from"os";import{join as u6}from"path";function gE0(D){let F=u6(D,"sub-01"),$=u6(F,"eeg");return{root:D,datasetDescription:u6(D,"dataset_description.json"),participants:u6(D,"participants.tsv"),readme:u6(D,"README"),subjectDir:F,eegDir:$,edfFile:u6($,"sub-01_task-rest_eeg.edf"),sidecarJson:u6($,"sub-01_task-rest_eeg.json")}}function jg(D){let F=D||u6(fE0(),`nemar-sandbox-${Date.now()}`),$=gE0(F);xE0($.eegDir,{recursive:!0});let J={Name:"NEMAR Sandbox Training Dataset",BIDSVersion:"1.9.0",DatasetType:"raw",License:"CC0",Authors:["NEMAR CLI Training"],HowToAcknowledge:"This is a sandbox dataset for testing the NEMAR upload workflow.",DatasetDOI:"n/a"};I9($.datasetDescription,JSON.stringify(J,null,2));let Q=`participant_id age sex
|
|
814
812
|
sub-01 25 M
|
|
815
813
|
`;I9($.participants,Q);let B=`# NEMAR Sandbox Training Dataset
|
|
816
814
|
|
|
@@ -845,7 +843,7 @@ Examples:
|
|
|
845
843
|
$ nemar sandbox # Run sandbox training
|
|
846
844
|
$ nemar sandbox status # Check if training is completed
|
|
847
845
|
$ nemar sandbox reset # Reset for re-training
|
|
848
|
-
`).action(bE0);async function bE0(){if(console.log(),console.log(H.bold("NEMAR Sandbox Training")),console.log(H.
|
|
846
|
+
`).action(bE0);async function bE0(){if(console.log(),console.log(H.bold("NEMAR Sandbox Training")),console.log(H.dim("Verify your setup and learn the upload workflow")),console.log(),!v0()){console.log(H.red("Not authenticated")),console.log(H.dim("Run 'nemar auth login' first"));return}let D=YD();if(D.sandboxCompleted){console.log(H.green("Sandbox training already completed!")),console.log(H.dim(`Dataset ID: ${D.sandboxDatasetId}`)),console.log(),console.log("You can upload real datasets with:"),console.log(H.cyan(" nemar dataset upload ./your-dataset")),console.log(),console.log(H.dim("To re-run training, use: nemar sandbox reset"));return}console.log(H.bold("Step 1/6: Checking prerequisites..."));let F=N("Checking prerequisites...").start(),$=await uJ();if(!$.allPassed){F.fail("Prerequisites check failed"),console.log(),console.log(H.red("Missing requirements:"));for(let I of $.errors)console.log(H.yellow(` - ${I}`));if($.errors.some((I)=>I.includes("GitHub")))console.log(H.dim(" Run 'gh auth login' to authenticate with GitHub"));return}F.succeed("All prerequisites met");let J=N("Verifying GitHub CLI authentication...").start(),Q=await mJ(D.githubUsername);if(!Q.authenticated){J.fail("GitHub CLI not authenticated"),console.log(H.red(` ${Q.error}`)),console.log(),console.log("GitHub CLI is required for sandbox training. Install and authenticate:"),console.log(H.cyan(" brew install gh # or visit https://cli.github.com/")),console.log(H.cyan(" gh auth login"));return}if(D.githubUsername&&!Q.matches)J.warn("GitHub CLI user mismatch"),console.log(H.yellow(` ${Q.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(H.cyan(` gh auth login # Login as ${D.githubUsername}`)),console.log(),console.log(H.yellow("WARNING: If upload fails with permission errors, this mismatch is the likely cause.")),console.log();else J.succeed(`GitHub CLI authenticated as ${Q.username}`);console.log(),console.log(H.bold("Step 2/6: Generating test dataset..."));let B=N("Creating minimal BIDS structure...").start(),Y;try{let I=jg();Y=I.root;let T=Pg(I);B.succeed(`Test dataset created (${V8(T)})`),console.log(H.dim(` Location: ${Y}`))}catch(I){B.fail("Failed to generate test dataset"),console.log(H.red(` ${I instanceof Error?I.message:"Unknown error"}`));return}console.log(),console.log(H.bold("Step 3/6: Registering sandbox dataset..."));let X=N("Creating dataset on NEMAR...").start(),G,W,q,K,Z,z;try{let I=await _J({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});G=I.dataset.dataset_id,W=I.dataset.ssh_url,q=I.dataset.github_url,K=I.s3_config,Z=I.dataset.s3_prefix,z=I.upload_urls||{},X.succeed(`Sandbox dataset created: ${H.cyan(G)}`),console.log(H.dim(` GitHub: ${q}`)),await new Promise((T)=>setTimeout(T,1e4))}catch(I){if(X.fail("Failed to create sandbox dataset"),I instanceof i)console.log(H.red(` ${I.message}`));else console.log(H.red(` ${I instanceof Error?I.message:"Unknown error"}`));d1(Y);return}let U=N("Accepting GitHub repository invitation...").start(),A=q?.match(/github\.com\/([a-zA-Z0-9_.-]+\/[a-zA-Z0-9_.-]+)/),M=A?A[1].replace(/\.git$/,""):null;if(!M){U.fail("Invalid GitHub repository URL from backend"),console.log(H.red(` Received: ${q||"(empty)"}`)),console.log(H.red(" Expected format: https://github.com/owner/repo")),console.log(),console.log("This may indicate a backend issue. Please contact support."),d1(Y);return}let L=await lJ(M);if(L.accepted)if(L.alreadyCollaborator)U.succeed("Already a collaborator on this repository");else U.succeed("GitHub invitation accepted");else U.warn("Could not auto-accept invitation"),console.log(H.yellow(` ${L.error}`)),console.log(),console.log("You may need to accept the invitation manually:"),console.log(H.cyan(` https://github.com/${M}/invitations`)),console.log();console.log(),console.log(H.bold("Step 4/6: Initializing repository..."));let C=N("Setting up git-annex...").start(),O=D.username&&D.email?{name:D.username,email:D.email}:void 0;try{await zF(Y,{author:O}),await VF(Y),await f6(Y,W),C.succeed("Repository initialized")}catch(I){C.fail("Failed to initialize repository"),console.log(H.red(` ${I instanceof Error?I.message:"Unknown error"}`)),d1(Y);return}if(console.log(),console.log(H.bold("Step 5/6: Uploading to S3...")),Object.keys(z).length===0)console.log(H.yellow(" No data files to upload (metadata only)"));else{let I=N("Uploading test data...").start();try{let f=0,n=Object.keys(z).length,s=await Yf(Y,z,{jobs:4,onProgress:(h)=>{if(h.status==="completed"||h.status==="failed")f++,I.text=`Uploading... ${f}/${n} files`}});if(s.failed.length>0){I.fail(`Upload failed for ${s.failed.length} file(s)`);for(let h of s.failed)console.log(H.red(` Failed: ${h}`));if(s.error)console.log(H.red(` Error: ${s.error}`));console.log(),console.log(H.yellow("Sandbox training aborted due to upload failures.")),console.log(H.dim("Please check your network connection and try again.")),d1(Y);return}I.succeed(`Uploaded ${s.uploaded} file(s)`)}catch(f){I.fail("Upload failed"),console.log(H.red(` ${f instanceof Error?f.message:"Unknown error"}`)),d1(Y);return}let T=N("Registering file URLs...").start();try{let f={};for(let s of Object.keys(z))f[s]=`${K.public_url}/${Z}/objects/${s}`;let n=await Xf(Y,f);if(!n.success){T.fail(`URL registration failed for ${n.failed.length} file(s)`);for(let s of n.failed)console.log(H.red(` Failed: ${s}`));console.log(),console.log(H.yellow("Sandbox training aborted due to URL registration failures.")),console.log(H.dim("This may indicate a git-annex configuration issue.")),d1(Y);return}T.succeed(`Registered ${n.registered} file URLs`)}catch(f){T.fail("Failed to register URLs"),console.log(H.red(` ${f instanceof Error?f.message:"Unknown error"}`)),d1(Y);return}}console.log(),console.log(H.bold("Step 6/6: Pushing to GitHub..."));let y=N("Saving and pushing...").start();try{await g6(Y,"Initial sandbox training upload",O),await Z8(Y),y.succeed("Pushed to GitHub")}catch(I){y.fail("Failed to push to GitHub"),console.log(H.red(` ${I instanceof Error?I.message:"Unknown error"}`)),d1(Y);return}let w=N("Finalizing...").start();try{await fJ(G),await __(G),l8("sandboxCompleted",!0),l8("sandboxDatasetId",G),w.succeed("Sandbox training complete!")}catch(I){w.fail("Failed to finalize"),console.log(H.red(` ${I instanceof Error?I.message:"Unknown error"}`)),d1(Y);return}d1(Y),console.log(),console.log(H.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(H.cyan(" nemar dataset upload ./your-dataset")),console.log(),console.log(H.dim(`Sandbox dataset: ${G}`))}FQ.command("status").description("Check sandbox training completion status").option("--refresh","Fetch latest status from server").action(async(D)=>{if(!v0()){console.log(H.red("Not authenticated")),console.log(H.dim("Run 'nemar auth login' first"));return}if(D.refresh){let F=N("Checking status...").start();try{let $=await g_();if(l8("sandboxCompleted",$.sandbox_completed),$.sandbox_dataset_id)l8("sandboxDatasetId",$.sandbox_dataset_id);if(F.stop(),$.sandbox_completed){if(console.log(H.green("Sandbox training: Completed")),console.log(H.dim(` Dataset ID: ${$.sandbox_dataset_id}`)),$.sandbox_completed_at)console.log(H.dim(` Completed: ${$.sandbox_completed_at}`))}else console.log(H.yellow("Sandbox training: Not completed")),console.log(),console.log("Run sandbox training with:"),console.log(H.cyan(" nemar sandbox"))}catch($){if(F.fail("Failed to check status"),$ instanceof i)console.log(H.red(` ${$.message}`))}}else{let F=YD();if(F.sandboxCompleted)console.log(H.green("Sandbox training: Completed")),console.log(H.dim(` Dataset ID: ${F.sandboxDatasetId}`));else console.log(H.yellow("Sandbox training: Not completed")),console.log(),console.log("Run sandbox training with:"),console.log(H.cyan(" nemar sandbox"))}});FQ.command("reset").description("Reset sandbox training status for re-training").option(I0,S0).option(a0,g0).action(async(D)=>{if(!v0()){console.log(H.red("Not authenticated")),console.log(H.dim("Run 'nemar auth login' first"));return}if(!YD().sandboxCompleted){console.log(H.yellow("Sandbox training not yet completed")),console.log(H.dim("Nothing to reset"));return}let $=await y0("Reset sandbox training status? You will need to complete training again.",D);if($!=="confirmed"){console.log(H.dim($==="declined"?"Skipped":"Cancelled"));return}let J=N("Resetting sandbox status...").start();try{await f_(),sG("sandboxCompleted"),sG("sandboxDatasetId"),J.succeed("Sandbox status reset"),console.log(),console.log("Run sandbox training again with:"),console.log(H.cyan(" nemar sandbox"))}catch(Q){if(J.fail("Failed to reset"),Q instanceof i)console.log(H.red(` ${Q.message}`));else console.log(H.red(` ${Q instanceof Error?Q.message:"Unknown error"}`))}});rG();var F1=new FD;F1.name("nemar").description(`CLI for NEMAR (Neuroelectromagnetic Data Archive and Tools Resource)
|
|
849
847
|
|
|
850
848
|
NEMAR is a curated repository for neurophysiology data in BIDS format.
|
|
851
849
|
This CLI provides tools for uploading, downloading, and managing datasets.`).version(vJ,"-v, --version","Output the current version").option("--no-color","Disable colored output").option("--verbose","Enable verbose output").option("--help-all","Show detailed help with examples and descriptions").addHelpText("after",`
|