nemar-cli 0.9.0-dev.1761 → 0.9.1-PR965.36702c1
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 +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -97,12 +97,12 @@ ${F}`,JW0,YW0,XW0=(D,F,$)=>{let Q=$===""?"":`with ${$.trim()}() `,J=QW0.bind(nul
|
|
|
97
97
|
depsCount: ${F},
|
|
98
98
|
deps: ${$}}`};var PR0={keyword:"dependencies",type:"object",schemaType:"object",error:ch.error,code(D){let[F,$]=IR0(D);ph(D,F),dh(D,$)}};function IR0({schema:D}){let F={},$={};for(let Q in D){if(Q==="__proto__")continue;let J=Array.isArray(D[Q])?F:$;J[Q]=D[Q]}return[F,$]}function ph(D,F=D.schema){let{gen:$,data:Q,it:J}=D;if(Object.keys(F).length===0)return;let Y=$.let("missing");for(let X in F){let B=F[X];if(B.length===0)continue;let G=(0,g7.propertyInData)($,Q,X,J.opts.ownProperties);if(D.setParams({property:X,depsCount:B.length,deps:B.join(", ")}),J.allErrors)$.if(G,()=>{for(let W of B)(0,g7.checkReportMissingProp)(D,W)});else $.if(dK._`${G} && (${(0,g7.checkMissingProp)(D,B,Y)})`),(0,g7.reportMissingProp)(D,Y),$.else()}}ch.validatePropertyDeps=ph;function dh(D,F=D.schema){let{gen:$,data:Q,keyword:J,it:Y}=D,X=$.name("valid");for(let B in F){if((0,wR0.alwaysValidSchema)(Y,F[B]))continue;$.if((0,g7.propertyInData)($,Q,B,Y.opts.ownProperties),()=>{let G=D.subschema({keyword:J,schemaProp:B},X);D.mergeValidEvaluated(G,X)},()=>$.var(X,!0)),D.ok(X)}}ch.validateSchemaDeps=dh;ch.default=PR0});var rh=V((sh)=>{Object.defineProperty(sh,"__esModule",{value:!0});var oh=z0(),vR0=S0(),yR0={message:"property name must be valid",params:({params:D})=>oh._`{propertyName: ${D.propertyName}}`},xR0={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:yR0,code(D){let{gen:F,schema:$,data:Q,it:J}=D;if((0,vR0.alwaysValidSchema)(J,$))return;let Y=F.name("valid");F.forIn("key",Q,(X)=>{D.setParams({propertyName:X}),D.subschema({keyword:"propertyNames",data:X,dataTypes:["string"],propertyName:X,compositeRule:!0},Y),F.if((0,oh.not)(Y),()=>{if(D.error(!0),!J.allErrors)F.break()})}),D.ok(Y)}};sh.default=xR0});var cK=V((th)=>{Object.defineProperty(th,"__esModule",{value:!0});var SY=h1(),q8=z0(),fR0=M6(),kY=S0(),bR0={message:"must NOT have additional properties",params:({params:D})=>q8._`{additionalProperty: ${D.additionalProperty}}`},gR0={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:bR0,code(D){let{gen:F,schema:$,parentSchema:Q,data:J,errsCount:Y,it:X}=D;if(!Y)throw Error("ajv implementation error");let{allErrors:B,opts:G}=X;if(X.props=!0,G.removeAdditional!=="all"&&(0,kY.alwaysValidSchema)(X,$))return;let W=(0,SY.allSchemaProperties)(Q.properties),q=(0,SY.allSchemaProperties)(Q.patternProperties);K(),D.ok(q8._`${Y} === ${fR0.default.errors}`);function K(){F.forIn("key",J,(M)=>{if(!W.length&&!q.length)E(M);else F.if(Z(M),()=>E(M))})}function Z(M){let A;if(W.length>8){let N=(0,kY.schemaRefOrVal)(X,Q.properties,"properties");A=(0,SY.isOwnProperty)(F,N,M)}else if(W.length)A=(0,q8.or)(...W.map((N)=>q8._`${M} === ${N}`));else A=q8.nil;if(q.length)A=(0,q8.or)(A,...q.map((N)=>q8._`${(0,SY.usePattern)(D,N)}.test(${M})`));return(0,q8.not)(A)}function z(M){F.code(q8._`delete ${J}[${M}]`)}function E(M){if(G.removeAdditional==="all"||G.removeAdditional&&$===!1){z(M);return}if($===!1){if(D.setParams({additionalProperty:M}),D.error(),!B)F.break();return}if(typeof $=="object"&&!(0,kY.alwaysValidSchema)(X,$)){let A=F.name("valid");if(G.removeAdditional==="failing")U(M,A,!1),F.if((0,q8.not)(A),()=>{D.reset(),z(M)});else if(U(M,A),!B)F.if((0,q8.not)(A),()=>F.break())}}function U(M,A,N){let O={keyword:"additionalProperties",dataProp:M,dataPropType:kY.Type.Str};if(N===!1)Object.assign(O,{compositeRule:!0,createErrors:!1,allErrors:!1});D.subschema(O,A)}}};th.default=gR0});var $u=V((Fu)=>{Object.defineProperty(Fu,"__esModule",{value:!0});var uR0=w7(),eh=h1(),nK=S0(),Du=cK(),mR0={keyword:"properties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,parentSchema:Q,data:J,it:Y}=D;if(Y.opts.removeAdditional==="all"&&Q.additionalProperties===void 0)Du.default.code(new uR0.KeywordCxt(Y,Du.default,"additionalProperties"));let X=(0,eh.allSchemaProperties)($);for(let K of X)Y.definedProperties.add(K);if(Y.opts.unevaluated&&X.length&&Y.props!==!0)Y.props=nK.mergeEvaluated.props(F,(0,nK.toHash)(X),Y.props);let B=X.filter((K)=>!(0,nK.alwaysValidSchema)(Y,$[K]));if(B.length===0)return;let G=F.name("valid");for(let K of B){if(W(K))q(K);else{if(F.if((0,eh.propertyInData)(F,J,K,Y.opts.ownProperties)),q(K),!Y.allErrors)F.else().var(G,!0);F.endIf()}D.it.definedProperties.add(K),D.ok(G)}function W(K){return Y.opts.useDefaults&&!Y.compositeRule&&$[K].default!==void 0}function q(K){D.subschema({keyword:"properties",schemaProp:K,dataProp:K},G)}}};Fu.default=mR0});var Bu=V((Xu)=>{Object.defineProperty(Xu,"__esModule",{value:!0});var Qu=h1(),vY=z0(),Ju=S0(),Yu=S0(),pR0={keyword:"patternProperties",type:"object",schemaType:"object",code(D){let{gen:F,schema:$,data:Q,parentSchema:J,it:Y}=D,{opts:X}=Y,B=(0,Qu.allSchemaProperties)($),G=B.filter((U)=>(0,Ju.alwaysValidSchema)(Y,$[U]));if(B.length===0||G.length===B.length&&(!Y.opts.unevaluated||Y.props===!0))return;let W=X.strictSchema&&!X.allowMatchingProperties&&J.properties,q=F.name("valid");if(Y.props!==!0&&!(Y.props instanceof vY.Name))Y.props=(0,Yu.evaluatedPropsToName)(F,Y.props);let{props:K}=Y;Z();function Z(){for(let U of B){if(W)z(U);if(Y.allErrors)E(U);else F.var(q,!0),E(U),F.if(q)}}function z(U){for(let M in W)if(new RegExp(U).test(M))(0,Ju.checkStrictMode)(Y,`property ${M} matches pattern ${U} (use allowMatchingProperties)`)}function E(U){F.forIn("key",Q,(M)=>{F.if(vY._`${(0,Qu.usePattern)(D,U)}.test(${M})`,()=>{let A=G.includes(U);if(!A)D.subschema({keyword:"patternProperties",schemaProp:U,dataProp:M,dataPropType:Yu.Type.Str},q);if(Y.opts.unevaluated&&K!==!0)F.assign(vY._`${K}[${M}]`,!0);else if(!A&&!Y.allErrors)F.if((0,vY.not)(q),()=>F.break())})})}}};Xu.default=pR0});var Wu=V((Gu)=>{Object.defineProperty(Gu,"__esModule",{value:!0});var cR0=S0(),nR0={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(D){let{gen:F,schema:$,it:Q}=D;if((0,cR0.alwaysValidSchema)(Q,$)){D.fail();return}let J=F.name("valid");D.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},J),D.failResult(J,()=>D.reset(),()=>D.error())},error:{message:"must NOT be valid"}};Gu.default=nR0});var qu=V((Hu)=>{Object.defineProperty(Hu,"__esModule",{value:!0});var aR0=h1(),oR0={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:aR0.validateUnion,error:{message:"must match a schema in anyOf"}};Hu.default=oR0});var zu=V((Ku)=>{Object.defineProperty(Ku,"__esModule",{value:!0});var yY=z0(),rR0=S0(),tR0={message:"must match exactly one schema in oneOf",params:({params:D})=>yY._`{passingSchemas: ${D.passing}}`},eR0={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:tR0,code(D){let{gen:F,schema:$,parentSchema:Q,it:J}=D;if(!Array.isArray($))throw Error("ajv implementation error");if(J.opts.discriminator&&Q.discriminator)return;let Y=$,X=F.let("valid",!1),B=F.let("passing",null),G=F.name("_valid");D.setParams({passing:B}),F.block(W),D.result(X,()=>D.reset(),()=>D.error(!0));function W(){Y.forEach((q,K)=>{let Z;if((0,rR0.alwaysValidSchema)(J,q))F.var(G,!0);else Z=D.subschema({keyword:"oneOf",schemaProp:K,compositeRule:!0},G);if(K>0)F.if(yY._`${G} && ${X}`).assign(X,!1).assign(B,yY._`[${B}, ${K}]`).else();F.if(G,()=>{if(F.assign(X,!0),F.assign(B,K),Z)D.mergeEvaluated(Z,yY.Name)})})}}};Ku.default=eR0});var Vu=V((Zu)=>{Object.defineProperty(Zu,"__esModule",{value:!0});var FO0=S0(),$O0={keyword:"allOf",schemaType:"array",code(D){let{gen:F,schema:$,it:Q}=D;if(!Array.isArray($))throw Error("ajv implementation error");let J=F.name("valid");$.forEach((Y,X)=>{if((0,FO0.alwaysValidSchema)(Q,Y))return;let B=D.subschema({keyword:"allOf",schemaProp:X},J);D.ok(J),D.mergeEvaluated(B)})}};Zu.default=$O0});var Mu=V((Lu)=>{Object.defineProperty(Lu,"__esModule",{value:!0});var xY=z0(),Uu=S0(),JO0={message:({params:D})=>xY.str`must match "${D.ifClause}" schema`,params:({params:D})=>xY._`{failingKeyword: ${D.ifClause}}`},YO0={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:JO0,code(D){let{gen:F,parentSchema:$,it:Q}=D;if($.then===void 0&&$.else===void 0)(0,Uu.checkStrictMode)(Q,'"if" without "then" and "else" is ignored');let J=Eu(Q,"then"),Y=Eu(Q,"else");if(!J&&!Y)return;let X=F.let("valid",!0),B=F.name("_valid");if(G(),D.reset(),J&&Y){let q=F.let("ifClause");D.setParams({ifClause:q}),F.if(B,W("then",q),W("else",q))}else if(J)F.if(B,W("then"));else F.if((0,xY.not)(B),W("else"));D.pass(X,()=>D.error(!0));function G(){let q=D.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},B);D.mergeEvaluated(q)}function W(q,K){return()=>{let Z=D.subschema({keyword:q},B);if(F.assign(X,B),D.mergeValidEvaluated(Z,X),K)F.assign(K,xY._`${q}`);else D.setParams({ifClause:q})}}}};function Eu(D,F){let $=D.schema[F];return $!==void 0&&!(0,Uu.alwaysValidSchema)(D,$)}Lu.default=YO0});var Nu=V((Au)=>{Object.defineProperty(Au,"__esModule",{value:!0});var BO0=S0(),GO0={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:D,parentSchema:F,it:$}){if(F.if===void 0)(0,BO0.checkStrictMode)($,`"${D}" without "if" is ignored`)}};Au.default=GO0});var Ru=V((Cu)=>{Object.defineProperty(Cu,"__esModule",{value:!0});var HO0=lK(),qO0=bh(),KO0=pK(),zO0=uh(),ZO0=lh(),VO0=ah(),EO0=rh(),UO0=cK(),LO0=$u(),MO0=Bu(),AO0=Wu(),NO0=qu(),CO0=zu(),RO0=Vu(),OO0=Mu(),jO0=Nu();function TO0(D=!1){let F=[AO0.default,NO0.default,CO0.default,RO0.default,OO0.default,jO0.default,EO0.default,UO0.default,VO0.default,LO0.default,MO0.default];if(D)F.push(qO0.default,zO0.default);else F.push(HO0.default,KO0.default);return F.push(ZO0.default),F}Cu.default=TO0});var ju=V((Ou)=>{Object.defineProperty(Ou,"__esModule",{value:!0});var qD=z0(),PO0={message:({schemaCode:D})=>qD.str`must match format "${D}"`,params:({schemaCode:D})=>qD._`{format: ${D}}`},IO0={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:PO0,code(D,F){let{gen:$,data:Q,$data:J,schema:Y,schemaCode:X,it:B}=D,{opts:G,errSchemaPath:W,schemaEnv:q,self:K}=B;if(!G.validateFormats)return;if(J)Z();else z();function Z(){let E=$.scopeValue("formats",{ref:K.formats,code:G.code.formats}),U=$.const("fDef",qD._`${E}[${X}]`),M=$.let("fType"),A=$.let("format");$.if(qD._`typeof ${U} == "object" && !(${U} instanceof RegExp)`,()=>$.assign(M,qD._`${U}.type || "string"`).assign(A,qD._`${U}.validate`),()=>$.assign(M,qD._`"string"`).assign(A,U)),D.fail$data((0,qD.or)(N(),O()));function N(){if(G.strictSchema===!1)return qD.nil;return qD._`${X} && !${A}`}function O(){let T=q.$async?qD._`(${U}.async ? await ${A}(${Q}) : ${A}(${Q}))`:qD._`${A}(${Q})`,C=qD._`(typeof ${A} == "function" ? ${T} : ${A}.test(${Q}))`;return qD._`${A} && ${A} !== true && ${M} === ${F} && !${C}`}}function z(){let E=K.formats[Y];if(!E){N();return}if(E===!0)return;let[U,M,A]=O(E);if(U===F)D.pass(T());function N(){if(G.strictSchema===!1){K.logger.warn(C());return}throw Error(C());function C(){return`unknown format "${Y}" ignored in schema at path "${W}"`}}function O(C){let j=C instanceof RegExp?(0,qD.regexpCode)(C):G.code.formats?qD._`${G.code.formats}${(0,qD.getProperty)(Y)}`:void 0,S=$.scopeValue("formats",{key:Y,ref:C,code:j});if(typeof C=="object"&&!(C instanceof RegExp))return[C.type||"string",C.validate,qD._`${S}.validate`];return["string",C,S]}function T(){if(typeof E=="object"&&!(E instanceof RegExp)&&E.async){if(!q.$async)throw Error("async format in sync schema");return qD._`await ${A}(${Q})`}return typeof M=="function"?qD._`${A}(${Q})`:qD._`${A}.test(${Q})`}}}};Ou.default=IO0});var wu=V((Tu)=>{Object.defineProperty(Tu,"__esModule",{value:!0});var kO0=ju(),vO0=[kO0.default];Tu.default=vO0});var Su=V((Pu)=>{Object.defineProperty(Pu,"__esModule",{value:!0});Pu.contentVocabulary=Pu.metadataVocabulary=void 0;Pu.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Pu.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var yu=V((vu)=>{Object.defineProperty(vu,"__esModule",{value:!0});var _O0=Fh(),fO0=Ph(),bO0=Ru(),gO0=wu(),ku=Su(),hO0=[_O0.default,fO0.default,(0,bO0.default)(),gO0.default,ku.metadataVocabulary,ku.contentVocabulary];vu.default=hO0});var bu=V((_u)=>{Object.defineProperty(_u,"__esModule",{value:!0});_u.DiscrError=void 0;var xu;(function(D){D.Tag="tag",D.Mapping="mapping"})(xu||(_u.DiscrError=xu={}))});var uu=V((hu)=>{Object.defineProperty(hu,"__esModule",{value:!0});var J5=z0(),iK=bu(),gu=MY(),mO0=P7(),lO0=S0(),pO0={message:({params:{discrError:D,tagName:F}})=>D===iK.DiscrError.Tag?`tag "${F}" must be string`:`value of tag "${F}" must be in oneOf`,params:({params:{discrError:D,tag:F,tagName:$}})=>J5._`{error: ${D}, tag: ${$}, tagValue: ${F}}`},dO0={keyword:"discriminator",type:"object",schemaType:"object",error:pO0,code(D){let{gen:F,data:$,schema:Q,parentSchema:J,it:Y}=D,{oneOf:X}=J;if(!Y.opts.discriminator)throw Error("discriminator: requires discriminator option");let B=Q.propertyName;if(typeof B!="string")throw Error("discriminator: requires propertyName");if(Q.mapping)throw Error("discriminator: mapping is not supported");if(!X)throw Error("discriminator: requires oneOf keyword");let G=F.let("valid",!1),W=F.const("tag",J5._`${$}${(0,J5.getProperty)(B)}`);F.if(J5._`typeof ${W} == "string"`,()=>q(),()=>D.error(!1,{discrError:iK.DiscrError.Tag,tag:W,tagName:B})),D.ok(G);function q(){let z=Z();F.if(!1);for(let E in z)F.elseIf(J5._`${W} === ${E}`),F.assign(G,K(z[E]));F.else(),D.error(!1,{discrError:iK.DiscrError.Mapping,tag:W,tagName:B}),F.endIf()}function K(z){let E=F.name("valid"),U=D.subschema({keyword:"oneOf",schemaProp:z},E);return D.mergeEvaluated(U,J5.Name),E}function Z(){var z;let E={},U=A(J),M=!0;for(let T=0;T<X.length;T++){let C=X[T];if((C===null||C===void 0?void 0:C.$ref)&&!(0,lO0.schemaHasRulesButRef)(C,Y.self.RULES)){let S=C.$ref;if(C=gu.resolveRef.call(Y.self,Y.schemaEnv.root,Y.baseId,S),C instanceof gu.SchemaEnv)C=C.schema;if(C===void 0)throw new mO0.default(Y.opts.uriResolver,Y.baseId,S)}let j=(z=C===null||C===void 0?void 0:C.properties)===null||z===void 0?void 0:z[B];if(typeof j!="object")throw Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${B}"`);M=M&&(U||A(C)),N(j,T)}if(!M)throw Error(`discriminator: "${B}" must be required`);return E;function A({required:T}){return Array.isArray(T)&&T.includes(B)}function N(T,C){if(T.const)O(T.const,C);else if(T.enum)for(let j of T.enum)O(j,C);else throw Error(`discriminator: "properties/${B}" must have "const" or "enum"`)}function O(T,C){if(typeof T!="string"||T in E)throw Error(`discriminator: "${B}" values must be unique strings`);E[T]=C}}}};hu.default=dO0});var mu=V((jn0,nO0)=>{nO0.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 pu=V((H1,aK)=>{Object.defineProperty(H1,"__esModule",{value:!0});H1.MissingRefError=H1.ValidationError=H1.CodeGen=H1.Name=H1.nil=H1.stringify=H1.str=H1._=H1.KeywordCxt=H1.Ajv=void 0;var iO0=cg(),aO0=yu(),oO0=uu(),lu=mu(),sO0=["/properties"],_Y="http://json-schema.org/draft-07/schema";class h7 extends iO0.default{_addVocabularies(){if(super._addVocabularies(),aO0.default.forEach((D)=>this.addVocabulary(D)),this.opts.discriminator)this.addKeyword(oO0.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let D=this.opts.$data?this.$dataMetaSchema(lu,sO0):lu;this.addMetaSchema(D,_Y,!1),this.refs["http://json-schema.org/schema"]=_Y}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(_Y)?_Y:void 0)}}H1.Ajv=h7;aK.exports=H1=h7;aK.exports.Ajv=h7;Object.defineProperty(H1,"__esModule",{value:!0});H1.default=h7;var rO0=w7();Object.defineProperty(H1,"KeywordCxt",{enumerable:!0,get:function(){return rO0.KeywordCxt}});var Y5=z0();Object.defineProperty(H1,"_",{enumerable:!0,get:function(){return Y5._}});Object.defineProperty(H1,"str",{enumerable:!0,get:function(){return Y5.str}});Object.defineProperty(H1,"stringify",{enumerable:!0,get:function(){return Y5.stringify}});Object.defineProperty(H1,"nil",{enumerable:!0,get:function(){return Y5.nil}});Object.defineProperty(H1,"Name",{enumerable:!0,get:function(){return Y5.Name}});Object.defineProperty(H1,"CodeGen",{enumerable:!0,get:function(){return Y5.CodeGen}});var tO0=UY();Object.defineProperty(H1,"ValidationError",{enumerable:!0,get:function(){return tO0.default}});var eO0=P7();Object.defineProperty(H1,"MissingRefError",{enumerable:!0,get:function(){return eO0.default}})});var cu=V((du)=>{Object.defineProperty(du,"__esModule",{value:!0});du.formatLimitDefinition=void 0;var $j0=pu(),K8=z0(),C4=K8.operators,fY={formatMaximum:{okStr:"<=",ok:C4.LTE,fail:C4.GT},formatMinimum:{okStr:">=",ok:C4.GTE,fail:C4.LT},formatExclusiveMaximum:{okStr:"<",ok:C4.LT,fail:C4.GTE},formatExclusiveMinimum:{okStr:">",ok:C4.GT,fail:C4.LTE}},Qj0={message:({keyword:D,schemaCode:F})=>K8.str`should be ${fY[D].okStr} ${F}`,params:({keyword:D,schemaCode:F})=>K8._`{comparison: ${fY[D].okStr}, limit: ${F}}`};du.formatLimitDefinition={keyword:Object.keys(fY),type:"string",schemaType:"string",$data:!0,error:Qj0,code(D){let{gen:F,data:$,schemaCode:Q,keyword:J,it:Y}=D,{opts:X,self:B}=Y;if(!X.validateFormats)return;let G=new $j0.KeywordCxt(Y,B.RULES.all.format.definition,"format");if(G.$data)W();else q();function W(){let Z=F.scopeValue("formats",{ref:B.formats,code:X.code.formats}),z=F.const("fmt",K8._`${Z}[${G.schemaCode}]`);D.fail$data((0,K8.or)(K8._`typeof ${z} != "object"`,K8._`${z} instanceof RegExp`,K8._`typeof ${z}.compare != "function"`,K(z)))}function q(){let Z=G.schema,z=B.formats[Z];if(!z||z===!0)return;if(typeof z!="object"||z instanceof RegExp||typeof z.compare!="function")throw Error(`"${J}": format "${Z}" does not define "compare" function`);let E=F.scopeValue("formats",{key:Z,ref:z,code:X.code.formats?K8._`${X.code.formats}${(0,K8.getProperty)(Z)}`:void 0});D.fail$data(K(E))}function K(Z){return K8._`${Z}.compare(${$}, ${Q}) ${fY[J].fail} 0`}},dependencies:["format"]};var Jj0=(D)=>{return D.addKeyword(du.formatLimitDefinition),D};du.default=Jj0});var ou=V((u7,au)=>{Object.defineProperty(u7,"__esModule",{value:!0});var X5=lf(),Xj0=cu(),sK=z0(),nu=new sK.Name("fullFormats"),Bj0=new sK.Name("fastFormats"),rK=(D,F={keywords:!0})=>{if(Array.isArray(F))return iu(D,F,X5.fullFormats,nu),D;let[$,Q]=F.mode==="fast"?[X5.fastFormats,Bj0]:[X5.fullFormats,nu],J=F.formats||X5.formatNames;if(iu(D,J,$,Q),F.keywords)(0,Xj0.default)(D);return D};rK.get=(D,F="full")=>{let Q=(F==="fast"?X5.fastFormats:X5.fullFormats)[D];if(!Q)throw Error(`Unknown format "${D}"`);return Q};function iu(D,F,$,Q){var J,Y;(J=(Y=D.opts.code).formats)!==null&&J!==void 0||(Y.formats=sK._`require("ajv-formats/dist/formats").${Q}`);for(let X of F)D.addFormat(X,$[X])}au.exports=u7=rK;Object.defineProperty(u7,"__esModule",{value:!0});u7.default=rK});var Gj0=(D,F={})=>{if(typeof D!=="function")throw TypeError(`Expected the first argument to be a function, got \`${typeof D}\``);let{wait:$=0,maxWait:Q=Number.POSITIVE_INFINITY,before:J=!1,after:Y=!0}=F;if($<0||Q<0)throw RangeError("`wait` and `maxWait` must not be negative.");if(!J&&!Y)throw Error("Both `before` and `after` are false, function wouldn't be called.");let X,B,G,W=function(...q){let K=this,Z=()=>{if(X=void 0,B)clearTimeout(B),B=void 0;if(Y)G=D.apply(K,q)},z=()=>{if(B=void 0,X)clearTimeout(X),X=void 0;if(Y)G=D.apply(K,q)},E=J&&!X;if(clearTimeout(X),X=setTimeout(Z,$),Q>0&&Q!==Number.POSITIVE_INFINITY&&!B)B=setTimeout(z,Q);if(E)G=D.apply(K,q);return G};return l9(W,D),W.cancel=()=>{if(X)clearTimeout(X),X=void 0;if(B)clearTimeout(B),B=void 0},W},tK;var su=P(()=>{PH();tK=Gj0});var m7=V((bn0,ru)=>{var Wj0=Number.MAX_SAFE_INTEGER||9007199254740991,Hj0=["major","premajor","minor","preminor","patch","prepatch","prerelease"];ru.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:Wj0,RELEASE_TYPES:Hj0,SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var l7=V((gn0,tu)=>{var qj0=typeof process==="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...D)=>console.error("SEMVER",...D):()=>{};tu.exports=qj0});var B5=V((c8,eu)=>{var{MAX_SAFE_COMPONENT_LENGTH:eK,MAX_SAFE_BUILD_LENGTH:Kj0,MAX_LENGTH:zj0}=m7(),Zj0=l7();c8=eu.exports={};var Vj0=c8.re=[],Ej0=c8.safeRe=[],u=c8.src=[],Uj0=c8.safeSrc=[],m=c8.t={},Lj0=0,Dz="[a-zA-Z0-9-]",Mj0=[["\\s",1],["\\d",zj0],[Dz,Kj0]],Aj0=(D)=>{for(let[F,$]of Mj0)D=D.split(`${F}*`).join(`${F}{0,${$}}`).split(`${F}+`).join(`${F}{1,${$}}`);return D},Y0=(D,F,$)=>{let Q=Aj0(F),J=Lj0++;Zj0(D,J,F),m[D]=J,u[J]=F,Uj0[J]=Q,Vj0[J]=new RegExp(F,$?"g":void 0),Ej0[J]=new RegExp(Q,$?"g":void 0)};Y0("NUMERICIDENTIFIER","0|[1-9]\\d*");Y0("NUMERICIDENTIFIERLOOSE","\\d+");Y0("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Dz}*`);Y0("MAINVERSION",`(${u[m.NUMERICIDENTIFIER]})\\.(${u[m.NUMERICIDENTIFIER]})\\.(${u[m.NUMERICIDENTIFIER]})`);Y0("MAINVERSIONLOOSE",`(${u[m.NUMERICIDENTIFIERLOOSE]})\\.(${u[m.NUMERICIDENTIFIERLOOSE]})\\.(${u[m.NUMERICIDENTIFIERLOOSE]})`);Y0("PRERELEASEIDENTIFIER",`(?:${u[m.NONNUMERICIDENTIFIER]}|${u[m.NUMERICIDENTIFIER]})`);Y0("PRERELEASEIDENTIFIERLOOSE",`(?:${u[m.NONNUMERICIDENTIFIER]}|${u[m.NUMERICIDENTIFIERLOOSE]})`);Y0("PRERELEASE",`(?:-(${u[m.PRERELEASEIDENTIFIER]}(?:\\.${u[m.PRERELEASEIDENTIFIER]})*))`);Y0("PRERELEASELOOSE",`(?:-?(${u[m.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${u[m.PRERELEASEIDENTIFIERLOOSE]})*))`);Y0("BUILDIDENTIFIER",`${Dz}+`);Y0("BUILD",`(?:\\+(${u[m.BUILDIDENTIFIER]}(?:\\.${u[m.BUILDIDENTIFIER]})*))`);Y0("FULLPLAIN",`v?${u[m.MAINVERSION]}${u[m.PRERELEASE]}?${u[m.BUILD]}?`);Y0("FULL",`^${u[m.FULLPLAIN]}$`);Y0("LOOSEPLAIN",`[v=\\s]*${u[m.MAINVERSIONLOOSE]}${u[m.PRERELEASELOOSE]}?${u[m.BUILD]}?`);Y0("LOOSE",`^${u[m.LOOSEPLAIN]}$`);Y0("GTLT","((?:<|>)?=?)");Y0("XRANGEIDENTIFIERLOOSE",`${u[m.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);Y0("XRANGEIDENTIFIER",`${u[m.NUMERICIDENTIFIER]}|x|X|\\*`);Y0("XRANGEPLAIN",`[v=\\s]*(${u[m.XRANGEIDENTIFIER]})(?:\\.(${u[m.XRANGEIDENTIFIER]})(?:\\.(${u[m.XRANGEIDENTIFIER]})(?:${u[m.PRERELEASE]})?${u[m.BUILD]}?)?)?`);Y0("XRANGEPLAINLOOSE",`[v=\\s]*(${u[m.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[m.XRANGEIDENTIFIERLOOSE]})(?:\\.(${u[m.XRANGEIDENTIFIERLOOSE]})(?:${u[m.PRERELEASELOOSE]})?${u[m.BUILD]}?)?)?`);Y0("XRANGE",`^${u[m.GTLT]}\\s*${u[m.XRANGEPLAIN]}$`);Y0("XRANGELOOSE",`^${u[m.GTLT]}\\s*${u[m.XRANGEPLAINLOOSE]}$`);Y0("COERCEPLAIN",`(^|[^\\d])(\\d{1,${eK}})(?:\\.(\\d{1,${eK}}))?(?:\\.(\\d{1,${eK}}))?`);Y0("COERCE",`${u[m.COERCEPLAIN]}(?:$|[^\\d])`);Y0("COERCEFULL",u[m.COERCEPLAIN]+`(?:${u[m.PRERELEASE]})?(?:${u[m.BUILD]})?(?:$|[^\\d])`);Y0("COERCERTL",u[m.COERCE],!0);Y0("COERCERTLFULL",u[m.COERCEFULL],!0);Y0("LONETILDE","(?:~>?)");Y0("TILDETRIM",`(\\s*)${u[m.LONETILDE]}\\s+`,!0);c8.tildeTrimReplace="$1~";Y0("TILDE",`^${u[m.LONETILDE]}${u[m.XRANGEPLAIN]}$`);Y0("TILDELOOSE",`^${u[m.LONETILDE]}${u[m.XRANGEPLAINLOOSE]}$`);Y0("LONECARET","(?:\\^)");Y0("CARETTRIM",`(\\s*)${u[m.LONECARET]}\\s+`,!0);c8.caretTrimReplace="$1^";Y0("CARET",`^${u[m.LONECARET]}${u[m.XRANGEPLAIN]}$`);Y0("CARETLOOSE",`^${u[m.LONECARET]}${u[m.XRANGEPLAINLOOSE]}$`);Y0("COMPARATORLOOSE",`^${u[m.GTLT]}\\s*(${u[m.LOOSEPLAIN]})$|^$`);Y0("COMPARATOR",`^${u[m.GTLT]}\\s*(${u[m.FULLPLAIN]})$|^$`);Y0("COMPARATORTRIM",`(\\s*)${u[m.GTLT]}\\s*(${u[m.LOOSEPLAIN]}|${u[m.XRANGEPLAIN]})`,!0);c8.comparatorTrimReplace="$1$2$3";Y0("HYPHENRANGE",`^\\s*(${u[m.XRANGEPLAIN]})\\s+-\\s+(${u[m.XRANGEPLAIN]})\\s*$`);Y0("HYPHENRANGELOOSE",`^\\s*(${u[m.XRANGEPLAINLOOSE]})\\s+-\\s+(${u[m.XRANGEPLAINLOOSE]})\\s*$`);Y0("STAR","(<|>)?=?\\s*\\*");Y0("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");Y0("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var bY=V((hn0,Dm)=>{var Nj0=Object.freeze({loose:!0}),Cj0=Object.freeze({}),Rj0=(D)=>{if(!D)return Cj0;if(typeof D!=="object")return Nj0;return D};Dm.exports=Rj0});var Fz=V((un0,Qm)=>{var Fm=/^[0-9]+$/,$m=(D,F)=>{if(typeof D==="number"&&typeof F==="number")return D===F?0:D<F?-1:1;let $=Fm.test(D),Q=Fm.test(F);if($&&Q)D=+D,F=+F;return D===F?0:$&&!Q?-1:Q&&!$?1:D<F?-1:1},Oj0=(D,F)=>$m(F,D);Qm.exports={compareIdentifiers:$m,rcompareIdentifiers:Oj0}});var _D=V((mn0,Ym)=>{var gY=l7(),{MAX_LENGTH:Jm,MAX_SAFE_INTEGER:hY}=m7(),{safeRe:uY,t:mY}=B5(),jj0=bY(),{compareIdentifiers:$z}=Fz();class z8{constructor(D,F){if(F=jj0(F),D instanceof z8)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>Jm)throw TypeError(`version is longer than ${Jm} characters`);gY("SemVer",D,F),this.options=F,this.loose=!!F.loose,this.includePrerelease=!!F.includePrerelease;let $=D.trim().match(F.loose?uY[mY.LOOSE]:uY[mY.FULL]);if(!$)throw TypeError(`Invalid Version: ${D}`);if(this.raw=D,this.major=+$[1],this.minor=+$[2],this.patch=+$[3],this.major>hY||this.major<0)throw TypeError("Invalid major version");if(this.minor>hY||this.minor<0)throw TypeError("Invalid minor version");if(this.patch>hY||this.patch<0)throw TypeError("Invalid patch version");if(!$[4])this.prerelease=[];else this.prerelease=$[4].split(".").map((Q)=>{if(/^[0-9]+$/.test(Q)){let J=+Q;if(J>=0&&J<hY)return J}return Q});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(gY("SemVer.compare",this.version,this.options,D),!(D instanceof z8)){if(typeof D==="string"&&D===this.version)return 0;D=new z8(D,this.options)}if(D.version===this.version)return 0;return this.compareMain(D)||this.comparePre(D)}compareMain(D){if(!(D instanceof z8))D=new z8(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 z8))D=new z8(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],Q=D.prerelease[F];if(gY("prerelease compare",F,$,Q),$===void 0&&Q===void 0)return 0;else if(Q===void 0)return 1;else if($===void 0)return-1;else if($===Q)continue;else return $z($,Q)}while(++F)}compareBuild(D){if(!(D instanceof z8))D=new z8(D,this.options);let F=0;do{let $=this.build[F],Q=D.build[F];if(gY("build compare",F,$,Q),$===void 0&&Q===void 0)return 0;else if(Q===void 0)return 1;else if($===void 0)return-1;else if($===Q)continue;else return $z($,Q)}while(++F)}inc(D,F,$){if(D.startsWith("pre")){if(!F&&$===!1)throw Error("invalid increment argument: identifier is empty");if(F){let Q=`-${F}`.match(this.options.loose?uY[mY.PRERELEASELOOSE]:uY[mY.PRERELEASE]);if(!Q||Q[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 Q=Number($)?1:0;if(this.prerelease.length===0)this.prerelease=[Q];else{let J=this.prerelease.length;while(--J>=0)if(typeof this.prerelease[J]==="number")this.prerelease[J]++,J=-2;if(J===-1){if(F===this.prerelease.join(".")&&$===!1)throw Error("invalid increment argument: identifier already exists");this.prerelease.push(Q)}}if(F){let J=[F,Q];if($===!1)J=[F];if($z(this.prerelease[0],F)===0){if(isNaN(this.prerelease[1]))this.prerelease=J}else this.prerelease=J}break}default:throw Error(`invalid increment argument: ${D}`)}if(this.raw=this.format(),this.build.length)this.raw+=`+${this.build.join(".")}`;return this}}Ym.exports=z8});var E3=V((ln0,Bm)=>{var Xm=_D(),Tj0=(D,F,$=!1)=>{if(D instanceof Xm)return D;try{return new Xm(D,F)}catch(Q){if(!$)return null;throw Q}};Bm.exports=Tj0});var Wm=V((pn0,Gm)=>{var wj0=E3(),Pj0=(D,F)=>{let $=wj0(D,F);return $?$.version:null};Gm.exports=Pj0});var qm=V((dn0,Hm)=>{var Ij0=E3(),Sj0=(D,F)=>{let $=Ij0(D.trim().replace(/^[=v]+/,""),F);return $?$.version:null};Hm.exports=Sj0});var Zm=V((cn0,zm)=>{var Km=_D(),kj0=(D,F,$,Q,J)=>{if(typeof $==="string")J=Q,Q=$,$=void 0;try{return new Km(D instanceof Km?D.version:D,$).inc(F,Q,J).version}catch(Y){return null}};zm.exports=kj0});var Um=V((nn0,Em)=>{var Vm=E3(),vj0=(D,F)=>{let $=Vm(D,null,!0),Q=Vm(F,null,!0),J=$.compare(Q);if(J===0)return null;let Y=J>0,X=Y?$:Q,B=Y?Q:$,G=!!X.prerelease.length;if(!!B.prerelease.length&&!G){if(!B.patch&&!B.minor)return"major";if(B.compareMain(X)===0){if(B.minor&&!B.patch)return"minor";return"patch"}}let q=G?"pre":"";if($.major!==Q.major)return q+"major";if($.minor!==Q.minor)return q+"minor";if($.patch!==Q.patch)return q+"patch";return"prerelease"};Em.exports=vj0});var Mm=V((in0,Lm)=>{var yj0=_D(),xj0=(D,F)=>new yj0(D,F).major;Lm.exports=xj0});var Nm=V((an0,Am)=>{var _j0=_D(),fj0=(D,F)=>new _j0(D,F).minor;Am.exports=fj0});var Rm=V((on0,Cm)=>{var bj0=_D(),gj0=(D,F)=>new bj0(D,F).patch;Cm.exports=gj0});var jm=V((sn0,Om)=>{var hj0=E3(),uj0=(D,F)=>{let $=hj0(D,F);return $&&$.prerelease.length?$.prerelease:null};Om.exports=uj0});var m1=V((rn0,wm)=>{var Tm=_D(),mj0=(D,F,$)=>new Tm(D,$).compare(new Tm(F,$));wm.exports=mj0});var Im=V((tn0,Pm)=>{var lj0=m1(),pj0=(D,F,$)=>lj0(F,D,$);Pm.exports=pj0});var km=V((en0,Sm)=>{var dj0=m1(),cj0=(D,F)=>dj0(D,F,!0);Sm.exports=cj0});var lY=V((Di0,ym)=>{var vm=_D(),nj0=(D,F,$)=>{let Q=new vm(D,$),J=new vm(F,$);return Q.compare(J)||Q.compareBuild(J)};ym.exports=nj0});var _m=V((Fi0,xm)=>{var ij0=lY(),aj0=(D,F)=>D.sort(($,Q)=>ij0($,Q,F));xm.exports=aj0});var bm=V(($i0,fm)=>{var oj0=lY(),sj0=(D,F)=>D.sort(($,Q)=>oj0(Q,$,F));fm.exports=sj0});var p7=V((Qi0,gm)=>{var rj0=m1(),tj0=(D,F,$)=>rj0(D,F,$)>0;gm.exports=tj0});var pY=V((Ji0,hm)=>{var ej0=m1(),DT0=(D,F,$)=>ej0(D,F,$)<0;hm.exports=DT0});var Qz=V((Yi0,um)=>{var FT0=m1(),$T0=(D,F,$)=>FT0(D,F,$)===0;um.exports=$T0});var Jz=V((Xi0,mm)=>{var QT0=m1(),JT0=(D,F,$)=>QT0(D,F,$)!==0;mm.exports=JT0});var dY=V((Bi0,lm)=>{var YT0=m1(),XT0=(D,F,$)=>YT0(D,F,$)>=0;lm.exports=XT0});var cY=V((Gi0,pm)=>{var BT0=m1(),GT0=(D,F,$)=>BT0(D,F,$)<=0;pm.exports=GT0});var Yz=V((Wi0,dm)=>{var WT0=Qz(),HT0=Jz(),qT0=p7(),KT0=dY(),zT0=pY(),ZT0=cY(),VT0=(D,F,$,Q)=>{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 WT0(D,$,Q);case"!=":return HT0(D,$,Q);case">":return qT0(D,$,Q);case">=":return KT0(D,$,Q);case"<":return zT0(D,$,Q);case"<=":return ZT0(D,$,Q);default:throw TypeError(`Invalid operator: ${F}`)}};dm.exports=VT0});var nm=V((Hi0,cm)=>{var ET0=_D(),UT0=E3(),{safeRe:nY,t:iY}=B5(),LT0=(D,F)=>{if(D instanceof ET0)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?nY[iY.COERCEFULL]:nY[iY.COERCE]);else{let G=F.includePrerelease?nY[iY.COERCERTLFULL]:nY[iY.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 Q=$[2],J=$[3]||"0",Y=$[4]||"0",X=F.includePrerelease&&$[5]?`-${$[5]}`:"",B=F.includePrerelease&&$[6]?`+${$[6]}`:"";return UT0(`${Q}.${J}.${Y}${X}${B}`,F)};cm.exports=LT0});var om=V((qi0,am)=>{class im{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 Q=this.map.keys().next().value;this.delete(Q)}this.map.set(D,F)}return this}}am.exports=im});var l1=V((Ki0,em)=>{var MT0=/\s+/g;class d7{constructor(D,F){if(F=NT0(F),D instanceof d7)if(D.loose===!!F.loose&&D.includePrerelease===!!F.includePrerelease)return D;else return new d7(D.raw,F);if(D instanceof Xz)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(MT0," "),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((Q)=>!rm(Q[0])),this.set.length===0)this.set=[$];else if(this.set.length>1){for(let Q of this.set)if(Q.length===1&&PT0(Q[0])){this.set=[Q];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&&TT0)|(this.options.loose&&wT0))+":"+D,Q=sm.get($);if(Q)return Q;let J=this.options.loose,Y=J?iD[fD.HYPHENRANGELOOSE]:iD[fD.HYPHENRANGE];D=D.replace(Y,gT0(this.options.includePrerelease)),a0("hyphen replace",D),D=D.replace(iD[fD.COMPARATORTRIM],RT0),a0("comparator trim",D),D=D.replace(iD[fD.TILDETRIM],OT0),a0("tilde trim",D),D=D.replace(iD[fD.CARETTRIM],jT0),a0("caret trim",D);let X=D.split(" ").map((q)=>IT0(q,this.options)).join(" ").split(/\s+/).map((q)=>bT0(q,this.options));if(J)X=X.filter((q)=>{return a0("loose invalid filter",q,this.options),!!q.match(iD[fD.COMPARATORLOOSE])});a0("range list",X);let B=new Map,G=X.map((q)=>new Xz(q,this.options));for(let q of G){if(rm(q))return[q];B.set(q.value,q)}if(B.size>1&&B.has(""))B.delete("");let W=[...B.values()];return sm.set($,W),W}intersects(D,F){if(!(D instanceof d7))throw TypeError("a Range is required");return this.set.some(($)=>{return tm($,F)&&D.set.some((Q)=>{return tm(Q,F)&&$.every((J)=>{return Q.every((Y)=>{return J.intersects(Y,F)})})})})}test(D){if(!D)return!1;if(typeof D==="string")try{D=new CT0(D,this.options)}catch(F){return!1}for(let F=0;F<this.set.length;F++)if(hT0(this.set[F],D,this.options))return!0;return!1}}em.exports=d7;var AT0=om(),sm=new AT0,NT0=bY(),Xz=c7(),a0=l7(),CT0=_D(),{safeRe:iD,t:fD,comparatorTrimReplace:RT0,tildeTrimReplace:OT0,caretTrimReplace:jT0}=B5(),{FLAG_INCLUDE_PRERELEASE:TT0,FLAG_LOOSE:wT0}=m7(),rm=(D)=>D.value==="<0.0.0-0",PT0=(D)=>D.value==="",tm=(D,F)=>{let $=!0,Q=D.slice(),J=Q.pop();while($&&Q.length)$=Q.every((Y)=>{return J.intersects(Y,F)}),J=Q.pop();return $},IT0=(D,F)=>{return D=D.replace(iD[fD.BUILD],""),a0("comp",D,F),D=vT0(D,F),a0("caret",D),D=ST0(D,F),a0("tildes",D),D=xT0(D,F),a0("xrange",D),D=fT0(D,F),a0("stars",D),D},aD=(D)=>!D||D.toLowerCase()==="x"||D==="*",ST0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>kT0($,F)).join(" ")},kT0=(D,F)=>{let $=F.loose?iD[fD.TILDELOOSE]:iD[fD.TILDE];return D.replace($,(Q,J,Y,X,B)=>{a0("tilde",D,Q,J,Y,X,B);let G;if(aD(J))G="";else if(aD(Y))G=`>=${J}.0.0 <${+J+1}.0.0-0`;else if(aD(X))G=`>=${J}.${Y}.0 <${J}.${+Y+1}.0-0`;else if(B)a0("replaceTilde pr",B),G=`>=${J}.${Y}.${X}-${B} <${J}.${+Y+1}.0-0`;else G=`>=${J}.${Y}.${X} <${J}.${+Y+1}.0-0`;return a0("tilde return",G),G})},vT0=(D,F)=>{return D.trim().split(/\s+/).map(($)=>yT0($,F)).join(" ")},yT0=(D,F)=>{a0("caret",D,F);let $=F.loose?iD[fD.CARETLOOSE]:iD[fD.CARET],Q=F.includePrerelease?"-0":"";return D.replace($,(J,Y,X,B,G)=>{a0("caret",D,J,Y,X,B,G);let W;if(aD(Y))W="";else if(aD(X))W=`>=${Y}.0.0${Q} <${+Y+1}.0.0-0`;else if(aD(B))if(Y==="0")W=`>=${Y}.${X}.0${Q} <${Y}.${+X+1}.0-0`;else W=`>=${Y}.${X}.0${Q} <${+Y+1}.0.0-0`;else if(G)if(a0("replaceCaret pr",G),Y==="0")if(X==="0")W=`>=${Y}.${X}.${B}-${G} <${Y}.${X}.${+B+1}-0`;else W=`>=${Y}.${X}.${B}-${G} <${Y}.${+X+1}.0-0`;else W=`>=${Y}.${X}.${B}-${G} <${+Y+1}.0.0-0`;else if(a0("no pr"),Y==="0")if(X==="0")W=`>=${Y}.${X}.${B}${Q} <${Y}.${X}.${+B+1}-0`;else W=`>=${Y}.${X}.${B}${Q} <${Y}.${+X+1}.0-0`;else W=`>=${Y}.${X}.${B} <${+Y+1}.0.0-0`;return a0("caret return",W),W})},xT0=(D,F)=>{return a0("replaceXRanges",D,F),D.split(/\s+/).map(($)=>_T0($,F)).join(" ")},_T0=(D,F)=>{D=D.trim();let $=F.loose?iD[fD.XRANGELOOSE]:iD[fD.XRANGE];return D.replace($,(Q,J,Y,X,B,G)=>{a0("xRange",D,Q,J,Y,X,B,G);let W=aD(Y),q=W||aD(X),K=q||aD(B),Z=K;if(J==="="&&Z)J="";if(G=F.includePrerelease?"-0":"",W)if(J===">"||J==="<")Q="<0.0.0-0";else Q="*";else if(J&&Z){if(q)X=0;if(B=0,J===">")if(J=">=",q)Y=+Y+1,X=0,B=0;else X=+X+1,B=0;else if(J==="<=")if(J="<",q)Y=+Y+1;else X=+X+1;if(J==="<")G="-0";Q=`${J+Y}.${X}.${B}${G}`}else if(q)Q=`>=${Y}.0.0${G} <${+Y+1}.0.0-0`;else if(K)Q=`>=${Y}.${X}.0${G} <${Y}.${+X+1}.0-0`;return a0("xRange return",Q),Q})},fT0=(D,F)=>{return a0("replaceStars",D,F),D.trim().replace(iD[fD.STAR],"")},bT0=(D,F)=>{return a0("replaceGTE0",D,F),D.trim().replace(iD[F.includePrerelease?fD.GTE0PRE:fD.GTE0],"")},gT0=(D)=>(F,$,Q,J,Y,X,B,G,W,q,K,Z)=>{if(aD(Q))$="";else if(aD(J))$=`>=${Q}.0.0${D?"-0":""}`;else if(aD(Y))$=`>=${Q}.${J}.0${D?"-0":""}`;else if(X)$=`>=${$}`;else $=`>=${$}${D?"-0":""}`;if(aD(W))G="";else if(aD(q))G=`<${+W+1}.0.0-0`;else if(aD(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()},hT0=(D,F,$)=>{for(let Q=0;Q<D.length;Q++)if(!D[Q].test(F))return!1;if(F.prerelease.length&&!$.includePrerelease){for(let Q=0;Q<D.length;Q++){if(a0(D[Q].semver),D[Q].semver===Xz.ANY)continue;if(D[Q].semver.prerelease.length>0){let J=D[Q].semver;if(J.major===F.major&&J.minor===F.minor&&J.patch===F.patch)return!0}}return!1}return!0}});var c7=V((zi0,Yl)=>{var n7=Symbol("SemVer ANY");class aY{static get ANY(){return n7}constructor(D,F){if(F=Dl(F),D instanceof aY)if(D.loose===!!F.loose)return D;else D=D.value;if(D=D.trim().split(/\s+/).join(" "),Gz("comparator",D,F),this.options=F,this.loose=!!F.loose,this.parse(D),this.semver===n7)this.value="";else this.value=this.operator+this.semver.version;Gz("comp",this)}parse(D){let F=this.options.loose?Fl[$l.COMPARATORLOOSE]:Fl[$l.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=n7;else this.semver=new Ql($[2],this.options.loose)}toString(){return this.value}test(D){if(Gz("Comparator.test",D,this.options.loose),this.semver===n7||D===n7)return!0;if(typeof D==="string")try{D=new Ql(D,this.options)}catch(F){return!1}return Bz(D,this.operator,this.semver,this.options)}intersects(D,F){if(!(D instanceof aY))throw TypeError("a Comparator is required");if(this.operator===""){if(this.value==="")return!0;return new Jl(D.value,F).test(this.value)}else if(D.operator===""){if(D.value==="")return!0;return new Jl(this.value,F).test(D.semver)}if(F=Dl(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(Bz(this.semver,"<",D.semver,F)&&this.operator.startsWith(">")&&D.operator.startsWith("<"))return!0;if(Bz(this.semver,">",D.semver,F)&&this.operator.startsWith("<")&&D.operator.startsWith(">"))return!0;return!1}}Yl.exports=aY;var Dl=bY(),{safeRe:Fl,t:$l}=B5(),Bz=Yz(),Gz=l7(),Ql=_D(),Jl=l1()});var i7=V((Zi0,Xl)=>{var uT0=l1(),mT0=(D,F,$)=>{try{F=new uT0(F,$)}catch(Q){return!1}return F.test(D)};Xl.exports=mT0});var Gl=V((Vi0,Bl)=>{var lT0=l1(),pT0=(D,F)=>new lT0(D,F).set.map(($)=>$.map((Q)=>Q.value).join(" ").trim().split(" "));Bl.exports=pT0});var Hl=V((Ei0,Wl)=>{var dT0=_D(),cT0=l1(),nT0=(D,F,$)=>{let Q=null,J=null,Y=null;try{Y=new cT0(F,$)}catch(X){return null}return D.forEach((X)=>{if(Y.test(X)){if(!Q||J.compare(X)===-1)Q=X,J=new dT0(Q,$)}}),Q};Wl.exports=nT0});var Kl=V((Ui0,ql)=>{var iT0=_D(),aT0=l1(),oT0=(D,F,$)=>{let Q=null,J=null,Y=null;try{Y=new aT0(F,$)}catch(X){return null}return D.forEach((X)=>{if(Y.test(X)){if(!Q||J.compare(X)===1)Q=X,J=new iT0(Q,$)}}),Q};ql.exports=oT0});var Vl=V((Li0,Zl)=>{var Wz=_D(),sT0=l1(),zl=p7(),rT0=(D,F)=>{D=new sT0(D,F);let $=new Wz("0.0.0");if(D.test($))return $;if($=new Wz("0.0.0-0"),D.test($))return $;$=null;for(let Q=0;Q<D.set.length;++Q){let J=D.set[Q],Y=null;if(J.forEach((X)=>{let B=new Wz(X.semver.version);switch(X.operator){case">":if(B.prerelease.length===0)B.patch++;else B.prerelease.push(0);B.raw=B.format();case"":case">=":if(!Y||zl(B,Y))Y=B;break;case"<":case"<=":break;default:throw Error(`Unexpected operation: ${X.operator}`)}}),Y&&(!$||zl($,Y)))$=Y}if($&&D.test($))return $;return null};Zl.exports=rT0});var Ul=V((Mi0,El)=>{var tT0=l1(),eT0=(D,F)=>{try{return new tT0(D,F).range||"*"}catch($){return null}};El.exports=eT0});var oY=V((Ai0,Nl)=>{var Dw0=_D(),Al=c7(),{ANY:Fw0}=Al,$w0=l1(),Qw0=i7(),Ll=p7(),Ml=pY(),Jw0=cY(),Yw0=dY(),Xw0=(D,F,$,Q)=>{D=new Dw0(D,Q),F=new $w0(F,Q);let J,Y,X,B,G;switch($){case">":J=Ll,Y=Jw0,X=Ml,B=">",G=">=";break;case"<":J=Ml,Y=Yw0,X=Ll,B="<",G="<=";break;default:throw TypeError('Must provide a hilo val of "<" or ">"')}if(Qw0(D,F,Q))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===Fw0)z=new Al(">=0.0.0");if(K=K||z,Z=Z||z,J(z.semver,K.semver,Q))K=z;else if(X(z.semver,Z.semver,Q))Z=z}),K.operator===B||K.operator===G)return!1;if((!Z.operator||Z.operator===B)&&Y(D,Z.semver))return!1;else if(Z.operator===G&&X(D,Z.semver))return!1}return!0};Nl.exports=Xw0});var Rl=V((Ni0,Cl)=>{var Bw0=oY(),Gw0=(D,F,$)=>Bw0(D,F,">",$);Cl.exports=Gw0});var jl=V((Ci0,Ol)=>{var Ww0=oY(),Hw0=(D,F,$)=>Ww0(D,F,"<",$);Ol.exports=Hw0});var Pl=V((Ri0,wl)=>{var Tl=l1(),qw0=(D,F,$)=>{return D=new Tl(D,$),F=new Tl(F,$),D.intersects(F,$)};wl.exports=qw0});var Sl=V((Oi0,Il)=>{var Kw0=i7(),zw0=m1();Il.exports=(D,F,$)=>{let Q=[],J=null,Y=null,X=D.sort((q,K)=>zw0(q,K,$));for(let q of X)if(Kw0(q,F,$)){if(Y=q,!J)J=q}else{if(Y)Q.push([J,Y]);Y=null,J=null}if(J)Q.push([J,null]);let B=[];for(let[q,K]of Q)if(q===K)B.push(q);else if(!K&&q===X[0])B.push("*");else if(!K)B.push(`>=${q}`);else if(q===X[0])B.push(`<=${K}`);else B.push(`${q} - ${K}`);let G=B.join(" || "),W=typeof F.raw==="string"?F.raw:String(F);return G.length<W.length?G:F}});var fl=V((ji0,_l)=>{var kl=l1(),qz=c7(),{ANY:Hz}=qz,a7=i7(),Kz=m1(),Zw0=(D,F,$={})=>{if(D===F)return!0;D=new kl(D,$),F=new kl(F,$);let Q=!1;D:for(let J of D.set){for(let Y of F.set){let X=Ew0(J,Y,$);if(Q=Q||X!==null,X)continue D}if(Q)return!1}return!0},Vw0=[new qz(">=0.0.0-0")],vl=[new qz(">=0.0.0")],Ew0=(D,F,$)=>{if(D===F)return!0;if(D.length===1&&D[0].semver===Hz)if(F.length===1&&F[0].semver===Hz)return!0;else if($.includePrerelease)D=Vw0;else D=vl;if(F.length===1&&F[0].semver===Hz)if($.includePrerelease)return!0;else F=vl;let Q=new Set,J,Y;for(let z of D)if(z.operator===">"||z.operator===">=")J=yl(J,z,$);else if(z.operator==="<"||z.operator==="<=")Y=xl(Y,z,$);else Q.add(z.semver);if(Q.size>1)return null;let X;if(J&&Y){if(X=Kz(J.semver,Y.semver,$),X>0)return null;else if(X===0&&(J.operator!==">="||Y.operator!=="<="))return null}for(let z of Q){if(J&&!a7(z,String(J),$))return null;if(Y&&!a7(z,String(Y),$))return null;for(let E of F)if(!a7(z,String(E),$))return!1;return!0}let B,G,W,q,K=Y&&!$.includePrerelease&&Y.semver.prerelease.length?Y.semver:!1,Z=J&&!$.includePrerelease&&J.semver.prerelease.length?J.semver:!1;if(K&&K.prerelease.length===1&&Y.operator==="<"&&K.prerelease[0]===0)K=!1;for(let z of F){if(q=q||z.operator===">"||z.operator===">=",W=W||z.operator==="<"||z.operator==="<=",J){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(B=yl(J,z,$),B===z&&B!==J)return!1}else if(J.operator===">="&&!a7(J.semver,String(z),$))return!1}if(Y){if(K){if(z.semver.prerelease&&z.semver.prerelease.length&&z.semver.major===K.major&&z.semver.minor===K.minor&&z.semver.patch===K.patch)K=!1}if(z.operator==="<"||z.operator==="<="){if(G=xl(Y,z,$),G===z&&G!==Y)return!1}else if(Y.operator==="<="&&!a7(Y.semver,String(z),$))return!1}if(!z.operator&&(Y||J)&&X!==0)return!1}if(J&&W&&!Y&&X!==0)return!1;if(Y&&q&&!J&&X!==0)return!1;if(Z||K)return!1;return!0},yl=(D,F,$)=>{if(!D)return F;let Q=Kz(D.semver,F.semver,$);return Q>0?D:Q<0?F:F.operator===">"&&D.operator===">="?F:D},xl=(D,F,$)=>{if(!D)return F;let Q=Kz(D.semver,F.semver,$);return Q<0?D:Q>0?F:F.operator==="<"&&D.operator==="<="?F:D};_l.exports=Zw0});var ul=V((Ti0,hl)=>{var zz=B5(),bl=m7(),Uw0=_D(),gl=Fz(),Lw0=E3(),Mw0=Wm(),Aw0=qm(),Nw0=Zm(),Cw0=Um(),Rw0=Mm(),Ow0=Nm(),jw0=Rm(),Tw0=jm(),ww0=m1(),Pw0=Im(),Iw0=km(),Sw0=lY(),kw0=_m(),vw0=bm(),yw0=p7(),xw0=pY(),_w0=Qz(),fw0=Jz(),bw0=dY(),gw0=cY(),hw0=Yz(),uw0=nm(),mw0=c7(),lw0=l1(),pw0=i7(),dw0=Gl(),cw0=Hl(),nw0=Kl(),iw0=Vl(),aw0=Ul(),ow0=oY(),sw0=Rl(),rw0=jl(),tw0=Pl(),ew0=Sl(),DP0=fl();hl.exports={parse:Lw0,valid:Mw0,clean:Aw0,inc:Nw0,diff:Cw0,major:Rw0,minor:Ow0,patch:jw0,prerelease:Tw0,compare:ww0,rcompare:Pw0,compareLoose:Iw0,compareBuild:Sw0,sort:kw0,rsort:vw0,gt:yw0,lt:xw0,eq:_w0,neq:fw0,gte:bw0,lte:gw0,cmp:hw0,coerce:uw0,Comparator:mw0,Range:lw0,satisfies:pw0,toComparators:dw0,maxSatisfying:cw0,minSatisfying:nw0,minVersion:iw0,validRange:aw0,outside:ow0,gtr:sw0,ltr:rw0,intersects:tw0,simplifyRange:ew0,subset:DP0,SemVer:Uw0,re:zz.re,src:zz.src,tokens:zz.t,SEMVER_SPEC_VERSION:bl.SEMVER_SPEC_VERSION,RELEASE_TYPES:bl.RELEASE_TYPES,compareIdentifiers:gl.compareIdentifiers,rcompareIdentifiers:gl.rcompareIdentifiers}});function ll(D,F,$){if(!D)return!1;if(D.constructor===F)return!0;return FP0.call(D)===$}function pl(D){return ll(D,Uint8Array,"[object Uint8Array]")}function $P0(D){return ll(D,ArrayBuffer,"[object ArrayBuffer]")}function QP0(D){return pl(D)||$P0(D)}function JP0(D){if(!pl(D))throw TypeError(`Expected \`Uint8Array\`, got \`${typeof D}\``)}function YP0(D){if(!QP0(D))throw TypeError(`Expected \`Uint8Array\` or \`ArrayBuffer\`, got \`${typeof D}\``)}function Zz(D,F){if(D.length===0)return new Uint8Array(0);F??=D.reduce((J,Y)=>J+Y.length,0);let $=new Uint8Array(F),Q=0;for(let J of D)JP0(J),$.set(J,Q),Q+=J.length;return $}function Vz(D,F="utf8"){return YP0(D),ml[F]??=new globalThis.TextDecoder(F),ml[F].decode(D)}function XP0(D){if(typeof D!=="string")throw TypeError(`Expected \`string\`, got \`${typeof D}\``)}function sY(D){return XP0(D),BP0.encode(D)}var FP0,ml,BP0,wi0;var dl=P(()=>{FP0=Object.prototype.toString;ml={utf8:new globalThis.TextDecoder("utf8")};BP0=new globalThis.TextEncoder;wi0=Array.from({length:256},(D,F)=>F.toString(16).padStart(2,"0"))});import{isDeepStrictEqual as GP0}from"util";import cl from"process";import U3 from"fs";import nl from"path";import o7 from"crypto";import WP0 from"assert";var al,ol,L3,HP0,il="aes-256-cbc",G5=()=>Object.create(null),qP0=(D)=>D!==void 0&&D!==null,KP0=(D,F)=>{let $=new Set(["undefined","symbol","function"]),Q=typeof F;if($.has(Q))throw TypeError(`Setting a value of type \`${Q}\` for key \`${D}\` is not allowed as it's not supported by JSON`)},rY="__internal__",Ez,tY;var sl=P(()=>{Qk();Yk();_k();su();dl();al=Q0(vf(),1),ol=Q0(ou(),1),L3=Q0(ul(),1),HP0=ol.default.default,Ez=`${rY}.migrations.version`;tY=class tY{path;events;#$;#F;#D;#J={};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=nH(F.projectName,{suffix:F.projectSuffix}).config}if(this.#D=F,F.schema??F.ajvOptions??F.rootSchema){if(F.schema&&typeof F.schema!=="object")throw TypeError("The `schema` option must be an object.");let Y=new al.Ajv2020({allErrors:!0,useDefaults:!0,...F.ajvOptions});HP0(Y);let X={...F.rootSchema,type:"object",properties:F.schema};this.#$=Y.compile(X);for(let[B,G]of Object.entries(F.schema??{}))if(G?.default)this.#J[B]=G.default}if(F.defaults)this.#J={...this.#J,...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=nl.resolve(F.cwd,`${F.configName??"config"}${$}`);let Q=this.store,J=Object.assign(G5(),F.defaults,Q);if(F.migrations){if(!F.projectVersion)throw Error("Please specify the `projectVersion` option.");this._migrate(F.migrations,F.projectVersion,F.beforeEachMigration)}this._validate(J);try{WP0.deepEqual(Q,J)}catch{this.store=J}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 ${rY} key, as it's used to manage this module internal operations.`);let{store:$}=this,Q=(J,Y)=>{if(KP0(J,Y),this.#D.accessPropertiesByDotNotation)pH($,J,Y);else $[J]=Y};if(typeof D==="object"){let J=D;for(let[Y,X]of Object.entries(J))Q(Y,X)}else Q(D,F);this.store=$}has(D){if(this.#D.accessPropertiesByDotNotation)return $k(this.store,D);return D in this.store}reset(...D){for(let F of D)if(qP0(this.#J[F]))this.set(F,this.#J[F])}delete(D){let{store:F}=this;if(this.#D.accessPropertiesByDotNotation)Fk(F,D);else delete F[D];this.store=F}clear(){this.store=G5();for(let D of Object.keys(this.#J))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=U3.readFileSync(this.path,this.#F?null:"utf8"),F=this._encryptData(D),$=this._deserialize(F);return this._validate($),Object.assign(G5(),$)}catch(D){if(D?.code==="ENOENT")return this._ensureDirectory(),G5();if(this.#D.clearInvalidConfig&&D.name==="SyntaxError")return G5();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:Vz(D);try{let F=D.slice(0,16),$=o7.pbkdf2Sync(this.#F,F.toString(),1e4,32,"sha512"),Q=o7.createDecipheriv(il,$,F),J=D.slice(17),Y=typeof J==="string"?sY(J):J;return Vz(Zz([Q.update(Y),Q.final()]))}catch{}return D.toString()}_handleChange(D,F){let $=D(),Q=()=>{let J=$,Y=D();if(GP0(Y,J))return;$=Y,F.call(this,Y,J)};return this.events.addEventListener("change",Q),()=>{this.events.removeEventListener("change",Q)}}_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:Q,message:J=""})=>`\`${Q.slice(1)}\` ${J}`);throw Error("Config schema violation: "+$.join("; "))}_ensureDirectory(){U3.mkdirSync(nl.dirname(this.path),{recursive:!0})}_write(D){let F=this._serialize(D);if(this.#F){let $=o7.randomBytes(16),Q=o7.pbkdf2Sync(this.#F,$.toString(),1e4,32,"sha512"),J=o7.createCipheriv(il,Q,$);F=Zz([$,sY(":"),J.update(sY(F)),J.final()])}if(cl.env.SNAP)U3.writeFileSync(this.path,F,{mode:this.#D.configFileMode});else try{Qq(this.path,F,{mode:this.#D.configFileMode})}catch($){if($?.code==="EXDEV"){U3.writeFileSync(this.path,F,{mode:this.#D.configFileMode});return}throw $}}_watch(){if(this._ensureDirectory(),!U3.existsSync(this.path))this._write(G5());if(cl.platform==="win32")U3.watch(this.path,{persistent:!1},tK(()=>{this.events.dispatchEvent(new Event("change"))},{wait:100}));else U3.watchFile(this.path,{persistent:!1},tK(()=>{this.events.dispatchEvent(new Event("change"))},{wait:5000}))}_migrate(D,F,$){let Q=this._get(Ez,"0.0.0"),J=Object.keys(D).filter((X)=>this._shouldPerformMigration(X,Q,F)),Y={...this.store};for(let X of J)try{if($)$(this,{fromVersion:Q,toVersion:X,finalVersion:F,versions:J});let B=D[X];B?.(this),this._set(Ez,X),Q=X,Y={...this.store}}catch(B){throw this.store=Y,Error(`Something went wrong during the migration! Changes applied to the store until this failed migration will be restored. ${B}`)}if(this._isVersionInRangeFormat(Q)||!L3.default.eq(Q,F))this._set(Ez,F)}_containsReservedKey(D){if(typeof D==="object"){if(Object.keys(D)[0]===rY)return!0}if(typeof D!=="string")return!1;if(this.#D.accessPropertiesByDotNotation){if(D.startsWith(`${rY}.`))return!0;return!1}return!1}_isVersionInRangeFormat(D){return L3.default.clean(D)===null}_shouldPerformMigration(D,F,$){if(this._isVersionInRangeFormat(D)){if(F!=="0.0.0"&&L3.default.satisfies(F,D))return!1;return L3.default.satisfies($,D)}if(L3.default.lte(D,F))return!1;if(L3.default.gt(D,$))return!1;return!0}_get(D,F){return Dk(this.store,D,F)}_set(D,F){let{store:$}=this;pH($,D,F),this.store=$}}});var M0,Uz,x,n8=(D)=>{switch(typeof D){case"undefined":return x.undefined;case"string":return x.string;case"number":return Number.isNaN(D)?x.nan:x.number;case"boolean":return x.boolean;case"function":return x.function;case"bigint":return x.bigint;case"symbol":return x.symbol;case"object":if(Array.isArray(D))return x.array;if(D===null)return x.null;if(D.then&&typeof D.then==="function"&&D.catch&&typeof D.catch==="function")return x.promise;if(typeof Map<"u"&&D instanceof Map)return x.map;if(typeof Set<"u"&&D instanceof Set)return x.set;if(typeof Date<"u"&&D instanceof Date)return x.date;return x.object;default:return x.unknown}};var s7=P(()=>{(function(D){D.assertEqual=(J)=>{};function F(J){}D.assertIs=F;function $(J){throw Error()}D.assertNever=$,D.arrayToEnum=(J)=>{let Y={};for(let X of J)Y[X]=X;return Y},D.getValidEnumValues=(J)=>{let Y=D.objectKeys(J).filter((B)=>typeof J[J[B]]!=="number"),X={};for(let B of Y)X[B]=J[B];return D.objectValues(X)},D.objectValues=(J)=>{return D.objectKeys(J).map(function(Y){return J[Y]})},D.objectKeys=typeof Object.keys==="function"?(J)=>Object.keys(J):(J)=>{let Y=[];for(let X in J)if(Object.prototype.hasOwnProperty.call(J,X))Y.push(X);return Y},D.find=(J,Y)=>{for(let X of J)if(Y(X))return X;return},D.isInteger=typeof Number.isInteger==="function"?(J)=>Number.isInteger(J):(J)=>typeof J==="number"&&Number.isFinite(J)&&Math.floor(J)===J;function Q(J,Y=" | "){return J.map((X)=>typeof X==="string"?`'${X}'`:X).join(Y)}D.joinValues=Q,D.jsonStringifyReplacer=(J,Y)=>{if(typeof Y==="bigint")return Y.toString();return Y}})(M0||(M0={}));(function(D){D.mergeShapes=(F,$)=>{return{...F,...$}}})(Uz||(Uz={}));x=M0.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"])});var k,zP0=(D)=>{return JSON.stringify(D,null,2).replace(/"([^"]+)":/g,"$1:")},q1;var eY=P(()=>{s7();k=M0.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"]);q1=class q1 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(J){return J.message},$={_errors:[]},Q=(J)=>{for(let Y of J.issues)if(Y.code==="invalid_union")Y.unionErrors.map(Q);else if(Y.code==="invalid_return_type")Q(Y.returnTypeError);else if(Y.code==="invalid_arguments")Q(Y.argumentsError);else if(Y.path.length===0)$._errors.push(F(Y));else{let X=$,B=0;while(B<Y.path.length){let G=Y.path[B];if(B!==Y.path.length-1)X[G]=X[G]||{_errors:[]};else X[G]=X[G]||{_errors:[]},X[G]._errors.push(F(Y));X=X[G],B++}}};return Q(this),$}static assert(D){if(!(D instanceof q1))throw Error(`Not a ZodError: ${D}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,M0.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(D=(F)=>F.message){let F={},$=[];for(let Q of this.issues)if(Q.path.length>0){let J=Q.path[0];F[J]=F[J]||[],F[J].push(D(Q))}else $.push(D(Q));return{formErrors:$,fieldErrors:F}}get formErrors(){return this.flatten()}};q1.create=(D)=>{return new q1(D)}});var ZP0=(D,F)=>{let $;switch(D.code){case k.invalid_type:if(D.received===x.undefined)$="Required";else $=`Expected ${D.expected}, received ${D.received}`;break;case k.invalid_literal:$=`Invalid literal value, expected ${JSON.stringify(D.expected,M0.jsonStringifyReplacer)}`;break;case k.unrecognized_keys:$=`Unrecognized key(s) in object: ${M0.joinValues(D.keys,", ")}`;break;case k.invalid_union:$="Invalid input";break;case k.invalid_union_discriminator:$=`Invalid discriminator value. Expected ${M0.joinValues(D.options)}`;break;case k.invalid_enum_value:$=`Invalid enum value. Expected ${M0.joinValues(D.options)}, received '${D.received}'`;break;case k.invalid_arguments:$="Invalid function arguments";break;case k.invalid_return_type:$="Invalid function return type";break;case k.invalid_date:$="Invalid date";break;case k.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 M0.assertNever(D.validation);else if(D.validation!=="regex")$=`Invalid ${D.validation}`;else $="Invalid";break;case k.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 k.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 k.custom:$="Invalid input";break;case k.invalid_intersection_types:$="Intersection results could not be merged";break;case k.not_multiple_of:$=`Number must be a multiple of ${D.multipleOf}`;break;case k.not_finite:$="Number must be finite";break;default:$=F.defaultError,M0.assertNever(D)}return{message:$}},C6;var Lz=P(()=>{eY();s7();C6=ZP0});function VP0(D){rl=D}function W5(){return rl}var rl;var DX=P(()=>{Lz();rl=C6});function g(D,F){let $=W5(),Q=r7({issueData:F,data:D.data,path:D.path,errorMaps:[D.common.contextualErrorMap,D.schemaErrorMap,$,$===C6?void 0:C6].filter((J)=>!!J)});D.common.issues.push(Q)}class PD{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 Q of F){if(Q.status==="aborted")return o;if(Q.status==="dirty")D.dirty();$.push(Q.value)}return{status:D.value,value:$}}static async mergeObjectAsync(D,F){let $=[];for(let Q of F){let J=await Q.key,Y=await Q.value;$.push({key:J,value:Y})}return PD.mergeObjectSync(D,$)}static mergeObjectSync(D,F){let $={};for(let Q of F){let{key:J,value:Y}=Q;if(J.status==="aborted")return o;if(Y.status==="aborted")return o;if(J.status==="dirty")D.dirty();if(Y.status==="dirty")D.dirty();if(J.value!=="__proto__"&&(typeof Y.value<"u"||Q.alwaysSet))$[J.value]=Y.value}return{status:D.value,value:$}}}var r7=(D)=>{let{data:F,path:$,errorMaps:Q,issueData:J}=D,Y=[...$,...J.path||[]],X={...J,path:Y};if(J.message!==void 0)return{...J,path:Y,message:J.message};let B="",G=Q.filter((W)=>!!W).slice().reverse();for(let W of G)B=W(X,{data:F,defaultError:B}).message;return{...J,path:Y,message:B}},EP0,o,M3=(D)=>({status:"dirty",value:D}),bD=(D)=>({status:"valid",value:D}),FX=(D)=>D.status==="aborted",$X=(D)=>D.status==="dirty",R4=(D)=>D.status==="valid",H5=(D)=>typeof Promise<"u"&&D instanceof Promise;var Mz=P(()=>{DX();Lz();EP0=[];o=Object.freeze({status:"aborted"})});var tl=()=>{};var d;var el=P(()=>{(function(D){D.errToObj=(F)=>typeof F==="string"?{message:F}:F||{},D.toString=(F)=>typeof F==="string"?F:F?.message})(d||(d={}))});class U8{constructor(D,F,$,Q){this._cachedPath=[],this.parent=D,this.data=F,this._path=$,this._key=Q}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 W0(D){if(!D)return{};let{errorMap:F,invalid_type_error:$,required_error:Q,description:J}=D;if(F&&($||Q))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(F)return{errorMap:F,description:J};return{errorMap:(X,B)=>{let{message:G}=D;if(X.code==="invalid_enum_value")return{message:G??B.defaultError};if(typeof B.data>"u")return{message:G??Q??B.defaultError};if(X.code!=="invalid_type")return{message:B.defaultError};return{message:G??$??B.defaultError}},description:J}}class Z0{get description(){return this._def.description}_getType(D){return n8(D.data)}_getOrReturnCtx(D,F){return F||{common:D.parent.common,data:D.data,parsedType:n8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}_processInputParams(D){return{status:new PD,ctx:{common:D.parent.common,data:D.data,parsedType:n8(D.data),schemaErrorMap:this._def.errorMap,path:D.path,parent:D.parent}}}_parseSync(D){let F=this._parse(D);if(H5(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:n8(D)},Q=this._parseSync({data:D,path:$.path,parent:$});return Dp($,Q)}"~validate"(D){let F={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:D,parsedType:n8(D)};if(!this["~standard"].async)try{let $=this._parseSync({data:D,path:[],parent:F});return R4($)?{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(($)=>R4($)?{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:n8(D)},Q=this._parse({data:D,path:$.path,parent:$}),J=await(H5(Q)?Q:Promise.resolve(Q));return Dp($,J)}refine(D,F){let $=(Q)=>{if(typeof F==="string"||typeof F>"u")return{message:F};else if(typeof F==="function")return F(Q);else return F};return this._refinement((Q,J)=>{let Y=D(Q),X=()=>J.addIssue({code:k.custom,...$(Q)});if(typeof Promise<"u"&&Y instanceof Promise)return Y.then((B)=>{if(!B)return X(),!1;else return!0});if(!Y)return X(),!1;else return!0})}refinement(D,F){return this._refinement(($,Q)=>{if(!D($))return Q.addIssue(typeof F==="function"?F($,Q):F),!1;else return!0})}_refinement(D){return new L8({schema:this,typeName:r.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 E8.create(this,this._def)}nullable(){return O6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return V8.create(this)}promise(){return R3.create(this,this._def)}or(D){return E5.create([this,D],this._def)}and(D){return U5.create(this,D,this._def)}transform(D){return new L8({...W0(this._def),schema:this,typeName:r.ZodEffects,effect:{type:"transform",transform:D}})}default(D){let F=typeof D==="function"?D:()=>D;return new N5({...W0(this._def),innerType:this,defaultValue:F,typeName:r.ZodDefault})}brand(){return new JX({typeName:r.ZodBranded,type:this,...W0(this._def)})}catch(D){let F=typeof D==="function"?D:()=>D;return new C5({...W0(this._def),innerType:this,catchValue:F,typeName:r.ZodCatch})}describe(D){return new this.constructor({...this._def,description:D})}pipe(D){return Q$.create(this,D)}readonly(){return R5.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}function Qp(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 yP0(D){return new RegExp(`^${Qp(D)}$`)}function Jp(D){let F=`${$p}T${Qp(D)}`,$=[];if($.push(D.local?"Z?":"Z"),D.offset)$.push("([+-]\\d{2}:?\\d{2})");return F=`${F}(${$.join("|")})`,new RegExp(`^${F}$`)}function xP0(D,F){if((F==="v4"||!F)&&TP0.test(D))return!0;if((F==="v6"||!F)&&PP0.test(D))return!0;return!1}function _P0(D,F){if(!CP0.test(D))return!1;try{let[$]=D.split(".");if(!$)return!1;let Q=$.replace(/-/g,"+").replace(/_/g,"/").padEnd($.length+(4-$.length%4)%4,"="),J=JSON.parse(atob(Q));if(typeof J!=="object"||J===null)return!1;if("typ"in J&&J?.typ!=="JWT")return!1;if(!J.alg)return!1;if(F&&J.alg!==F)return!1;return!0}catch{return!1}}function fP0(D,F){if((F==="v4"||!F)&&wP0.test(D))return!0;if((F==="v6"||!F)&&IP0.test(D))return!0;return!1}function bP0(D,F){let $=(D.toString().split(".")[1]||"").length,Q=(F.toString().split(".")[1]||"").length,J=$>Q?$:Q,Y=Number.parseInt(D.toFixed(J).replace(".","")),X=Number.parseInt(F.toFixed(J).replace(".",""));return Y%X/10**J}function q5(D){if(D instanceof JD){let F={};for(let $ in D.shape){let Q=D.shape[$];F[$]=E8.create(q5(Q))}return new JD({...D._def,shape:()=>F})}else if(D instanceof V8)return new V8({...D._def,type:q5(D.element)});else if(D instanceof E8)return E8.create(q5(D.unwrap()));else if(D instanceof O6)return O6.create(q5(D.unwrap()));else if(D instanceof a8)return a8.create(D.items.map((F)=>q5(F)));else return D}function Nz(D,F){let $=n8(D),Q=n8(F);if(D===F)return{valid:!0,data:D};else if($===x.object&&Q===x.object){let J=M0.objectKeys(F),Y=M0.objectKeys(D).filter((B)=>J.indexOf(B)!==-1),X={...D,...F};for(let B of Y){let G=Nz(D[B],F[B]);if(!G.valid)return{valid:!1};X[B]=G.data}return{valid:!0,data:X}}else if($===x.array&&Q===x.array){if(D.length!==F.length)return{valid:!1};let J=[];for(let Y=0;Y<D.length;Y++){let X=D[Y],B=F[Y],G=Nz(X,B);if(!G.valid)return{valid:!1};J.push(G.data)}return{valid:!0,data:J}}else if($===x.date&&Q===x.date&&+D===+F)return{valid:!0,data:D};else return{valid:!1}}function Yp(D,F){return new w4({values:D,typeName:r.ZodEnum,...W0(F)})}function Fp(D,F){let $=typeof D==="function"?D(F):typeof D==="string"?{message:D}:D;return typeof $==="string"?{message:$}:$}function Xp(D,F={},$){if(D)return N3.create().superRefine((Q,J)=>{let Y=D(Q);if(Y instanceof Promise)return Y.then((X)=>{if(!X){let B=Fp(F,Q),G=B.fatal??$??!0;J.addIssue({code:"custom",...B,fatal:G})}});if(!Y){let X=Fp(F,Q),B=X.fatal??$??!0;J.addIssue({code:"custom",...X,fatal:B})}return});return N3.create()}var Dp=(D,F)=>{if(R4(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 q1(D.common.issues);return this._error=$,this._error}}}},UP0,LP0,MP0,AP0,NP0,CP0,RP0,OP0,jP0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Az,TP0,wP0,PP0,IP0,SP0,kP0,$p="((\\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])))",vP0,Z8,j4,T4,z5,A3,t7,Z5,V5,N3,O4,i8,e7,V8,JD,E5,R6=(D)=>{if(D instanceof L5)return R6(D.schema);else if(D instanceof L8)return R6(D.innerType());else if(D instanceof M5)return[D.value];else if(D instanceof w4)return D.options;else if(D instanceof A5)return M0.objectValues(D.enum);else if(D instanceof N5)return R6(D._def.innerType);else if(D instanceof Z5)return[void 0];else if(D instanceof V5)return[null];else if(D instanceof E8)return[void 0,...R6(D.unwrap())];else if(D instanceof O6)return[null,...R6(D.unwrap())];else if(D instanceof JX)return R6(D.unwrap());else if(D instanceof R5)return R6(D.unwrap());else if(D instanceof C5)return R6(D._def.innerType);else return[]},QX,U5,a8,D$,F$,C3,K5,L5,M5,w4,A5,R3,L8,E8,O6,N5,C5,$$,gP0,JX,Q$,R5,hP0,r,uP0=(D,F={message:`Input not instance of ${D.name}`})=>Xp(($)=>$ instanceof D,F),Bp,Gp,mP0,lP0,Wp,pP0,dP0,cP0,nP0,iP0,aP0,oP0,sP0,rP0,tP0,eP0,DI0,FI0,$I0,QI0,JI0,YI0,XI0,BI0,GI0,WI0,HI0,qI0,KI0,zI0,ZI0,VI0,EI0,UI0,LI0=()=>Bp().optional(),MI0=()=>Gp().optional(),AI0=()=>Wp().optional(),NI0,CI0;var Hp=P(()=>{eY();DX();el();Mz();s7();UP0=/^c[^\s-]{8,}$/i,LP0=/^[0-9a-z]+$/,MP0=/^[0-9A-HJKMNP-TV-Z]{26}$/i,AP0=/^[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,NP0=/^[a-z0-9_-]{21}$/i,CP0=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,RP0=/^[-+]?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)?)??$/,OP0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,TP0=/^(?:(?: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])$/,wP0=/^(?:(?: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])$/,PP0=/^(([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]))$/,IP0=/^(([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])$/,SP0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,kP0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,vP0=new RegExp(`^${$p}$`);Z8=class Z8 extends Z0{_parse(D){if(this._def.coerce)D.data=String(D.data);if(this._getType(D)!==x.string){let J=this._getOrReturnCtx(D);return g(J,{code:k.invalid_type,expected:x.string,received:J.parsedType}),o}let $=new PD,Q=void 0;for(let J of this._def.checks)if(J.kind==="min"){if(D.data.length<J.value)Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),$.dirty()}else if(J.kind==="max"){if(D.data.length>J.value)Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),$.dirty()}else if(J.kind==="length"){let Y=D.data.length>J.value,X=D.data.length<J.value;if(Y||X){if(Q=this._getOrReturnCtx(D,Q),Y)g(Q,{code:k.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});else if(X)g(Q,{code:k.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});$.dirty()}}else if(J.kind==="email"){if(!OP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"email",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="emoji"){if(!Az)Az=new RegExp(jP0,"u");if(!Az.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"emoji",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="uuid"){if(!AP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"uuid",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="nanoid"){if(!NP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"nanoid",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="cuid"){if(!UP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"cuid",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="cuid2"){if(!LP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"cuid2",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="ulid"){if(!MP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"ulid",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="url")try{new URL(D.data)}catch{Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"url",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="regex"){if(J.regex.lastIndex=0,!J.regex.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"regex",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="trim")D.data=D.data.trim();else if(J.kind==="includes"){if(!D.data.includes(J.value,J.position))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:{includes:J.value,position:J.position},message:J.message}),$.dirty()}else if(J.kind==="toLowerCase")D.data=D.data.toLowerCase();else if(J.kind==="toUpperCase")D.data=D.data.toUpperCase();else if(J.kind==="startsWith"){if(!D.data.startsWith(J.value))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:{startsWith:J.value},message:J.message}),$.dirty()}else if(J.kind==="endsWith"){if(!D.data.endsWith(J.value))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:{endsWith:J.value},message:J.message}),$.dirty()}else if(J.kind==="datetime"){if(!Jp(J).test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:"datetime",message:J.message}),$.dirty()}else if(J.kind==="date"){if(!vP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:"date",message:J.message}),$.dirty()}else if(J.kind==="time"){if(!yP0(J).test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.invalid_string,validation:"time",message:J.message}),$.dirty()}else if(J.kind==="duration"){if(!RP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"duration",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="ip"){if(!xP0(D.data,J.version))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"ip",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="jwt"){if(!_P0(D.data,J.alg))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"jwt",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="cidr"){if(!fP0(D.data,J.version))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"cidr",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="base64"){if(!SP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"base64",code:k.invalid_string,message:J.message}),$.dirty()}else if(J.kind==="base64url"){if(!kP0.test(D.data))Q=this._getOrReturnCtx(D,Q),g(Q,{validation:"base64url",code:k.invalid_string,message:J.message}),$.dirty()}else M0.assertNever(J);return{status:$.value,value:D.data}}_regex(D,F,$){return this.refinement((Q)=>D.test(Q),{validation:F,code:k.invalid_string,...d.errToObj($)})}_addCheck(D){return new Z8({...this._def,checks:[...this._def.checks,D]})}email(D){return this._addCheck({kind:"email",...d.errToObj(D)})}url(D){return this._addCheck({kind:"url",...d.errToObj(D)})}emoji(D){return this._addCheck({kind:"emoji",...d.errToObj(D)})}uuid(D){return this._addCheck({kind:"uuid",...d.errToObj(D)})}nanoid(D){return this._addCheck({kind:"nanoid",...d.errToObj(D)})}cuid(D){return this._addCheck({kind:"cuid",...d.errToObj(D)})}cuid2(D){return this._addCheck({kind:"cuid2",...d.errToObj(D)})}ulid(D){return this._addCheck({kind:"ulid",...d.errToObj(D)})}base64(D){return this._addCheck({kind:"base64",...d.errToObj(D)})}base64url(D){return this._addCheck({kind:"base64url",...d.errToObj(D)})}jwt(D){return this._addCheck({kind:"jwt",...d.errToObj(D)})}ip(D){return this._addCheck({kind:"ip",...d.errToObj(D)})}cidr(D){return this._addCheck({kind:"cidr",...d.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,...d.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,...d.errToObj(D?.message)})}duration(D){return this._addCheck({kind:"duration",...d.errToObj(D)})}regex(D,F){return this._addCheck({kind:"regex",regex:D,...d.errToObj(F)})}includes(D,F){return this._addCheck({kind:"includes",value:D,position:F?.position,...d.errToObj(F?.message)})}startsWith(D,F){return this._addCheck({kind:"startsWith",value:D,...d.errToObj(F)})}endsWith(D,F){return this._addCheck({kind:"endsWith",value:D,...d.errToObj(F)})}min(D,F){return this._addCheck({kind:"min",value:D,...d.errToObj(F)})}max(D,F){return this._addCheck({kind:"max",value:D,...d.errToObj(F)})}length(D,F){return this._addCheck({kind:"length",value:D,...d.errToObj(F)})}nonempty(D){return this.min(1,d.errToObj(D))}trim(){return new Z8({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new Z8({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new Z8({...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}};Z8.create=(D)=>{return new Z8({checks:[],typeName:r.ZodString,coerce:D?.coerce??!1,...W0(D)})};j4=class j4 extends Z0{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)!==x.number){let J=this._getOrReturnCtx(D);return g(J,{code:k.invalid_type,expected:x.number,received:J.parsedType}),o}let $=void 0,Q=new PD;for(let J of this._def.checks)if(J.kind==="int"){if(!M0.isInteger(D.data))$=this._getOrReturnCtx(D,$),g($,{code:k.invalid_type,expected:"integer",received:"float",message:J.message}),Q.dirty()}else if(J.kind==="min"){if(J.inclusive?D.data<J.value:D.data<=J.value)$=this._getOrReturnCtx(D,$),g($,{code:k.too_small,minimum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),Q.dirty()}else if(J.kind==="max"){if(J.inclusive?D.data>J.value:D.data>=J.value)$=this._getOrReturnCtx(D,$),g($,{code:k.too_big,maximum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),Q.dirty()}else if(J.kind==="multipleOf"){if(bP0(D.data,J.value)!==0)$=this._getOrReturnCtx(D,$),g($,{code:k.not_multiple_of,multipleOf:J.value,message:J.message}),Q.dirty()}else if(J.kind==="finite"){if(!Number.isFinite(D.data))$=this._getOrReturnCtx(D,$),g($,{code:k.not_finite,message:J.message}),Q.dirty()}else M0.assertNever(J);return{status:Q.value,value:D.data}}gte(D,F){return this.setLimit("min",D,!0,d.toString(F))}gt(D,F){return this.setLimit("min",D,!1,d.toString(F))}lte(D,F){return this.setLimit("max",D,!0,d.toString(F))}lt(D,F){return this.setLimit("max",D,!1,d.toString(F))}setLimit(D,F,$,Q){return new j4({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:d.toString(Q)}]})}_addCheck(D){return new j4({...this._def,checks:[...this._def.checks,D]})}int(D){return this._addCheck({kind:"int",message:d.toString(D)})}positive(D){return this._addCheck({kind:"min",value:0,inclusive:!1,message:d.toString(D)})}negative(D){return this._addCheck({kind:"max",value:0,inclusive:!1,message:d.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:0,inclusive:!0,message:d.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:0,inclusive:!0,message:d.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:d.toString(F)})}finite(D){return this._addCheck({kind:"finite",message:d.toString(D)})}safe(D){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:d.toString(D)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:d.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"&&M0.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)}};j4.create=(D)=>{return new j4({checks:[],typeName:r.ZodNumber,coerce:D?.coerce||!1,...W0(D)})};T4=class T4 extends Z0{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)!==x.bigint)return this._getInvalidInput(D);let $=void 0,Q=new PD;for(let J of this._def.checks)if(J.kind==="min"){if(J.inclusive?D.data<J.value:D.data<=J.value)$=this._getOrReturnCtx(D,$),g($,{code:k.too_small,type:"bigint",minimum:J.value,inclusive:J.inclusive,message:J.message}),Q.dirty()}else if(J.kind==="max"){if(J.inclusive?D.data>J.value:D.data>=J.value)$=this._getOrReturnCtx(D,$),g($,{code:k.too_big,type:"bigint",maximum:J.value,inclusive:J.inclusive,message:J.message}),Q.dirty()}else if(J.kind==="multipleOf"){if(D.data%J.value!==BigInt(0))$=this._getOrReturnCtx(D,$),g($,{code:k.not_multiple_of,multipleOf:J.value,message:J.message}),Q.dirty()}else M0.assertNever(J);return{status:Q.value,value:D.data}}_getInvalidInput(D){let F=this._getOrReturnCtx(D);return g(F,{code:k.invalid_type,expected:x.bigint,received:F.parsedType}),o}gte(D,F){return this.setLimit("min",D,!0,d.toString(F))}gt(D,F){return this.setLimit("min",D,!1,d.toString(F))}lte(D,F){return this.setLimit("max",D,!0,d.toString(F))}lt(D,F){return this.setLimit("max",D,!1,d.toString(F))}setLimit(D,F,$,Q){return new T4({...this._def,checks:[...this._def.checks,{kind:D,value:F,inclusive:$,message:d.toString(Q)}]})}_addCheck(D){return new T4({...this._def,checks:[...this._def.checks,D]})}positive(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:d.toString(D)})}negative(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:d.toString(D)})}nonpositive(D){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:d.toString(D)})}nonnegative(D){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:d.toString(D)})}multipleOf(D,F){return this._addCheck({kind:"multipleOf",value:D,message:d.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}};T4.create=(D)=>{return new T4({checks:[],typeName:r.ZodBigInt,coerce:D?.coerce??!1,...W0(D)})};z5=class z5 extends Z0{_parse(D){if(this._def.coerce)D.data=Boolean(D.data);if(this._getType(D)!==x.boolean){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.boolean,received:$.parsedType}),o}return bD(D.data)}};z5.create=(D)=>{return new z5({typeName:r.ZodBoolean,coerce:D?.coerce||!1,...W0(D)})};A3=class A3 extends Z0{_parse(D){if(this._def.coerce)D.data=new Date(D.data);if(this._getType(D)!==x.date){let J=this._getOrReturnCtx(D);return g(J,{code:k.invalid_type,expected:x.date,received:J.parsedType}),o}if(Number.isNaN(D.data.getTime())){let J=this._getOrReturnCtx(D);return g(J,{code:k.invalid_date}),o}let $=new PD,Q=void 0;for(let J of this._def.checks)if(J.kind==="min"){if(D.data.getTime()<J.value)Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.too_small,message:J.message,inclusive:!0,exact:!1,minimum:J.value,type:"date"}),$.dirty()}else if(J.kind==="max"){if(D.data.getTime()>J.value)Q=this._getOrReturnCtx(D,Q),g(Q,{code:k.too_big,message:J.message,inclusive:!0,exact:!1,maximum:J.value,type:"date"}),$.dirty()}else M0.assertNever(J);return{status:$.value,value:new Date(D.data.getTime())}}_addCheck(D){return new A3({...this._def,checks:[...this._def.checks,D]})}min(D,F){return this._addCheck({kind:"min",value:D.getTime(),message:d.toString(F)})}max(D,F){return this._addCheck({kind:"max",value:D.getTime(),message:d.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}};A3.create=(D)=>{return new A3({checks:[],coerce:D?.coerce||!1,typeName:r.ZodDate,...W0(D)})};t7=class t7 extends Z0{_parse(D){if(this._getType(D)!==x.symbol){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.symbol,received:$.parsedType}),o}return bD(D.data)}};t7.create=(D)=>{return new t7({typeName:r.ZodSymbol,...W0(D)})};Z5=class Z5 extends Z0{_parse(D){if(this._getType(D)!==x.undefined){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.undefined,received:$.parsedType}),o}return bD(D.data)}};Z5.create=(D)=>{return new Z5({typeName:r.ZodUndefined,...W0(D)})};V5=class V5 extends Z0{_parse(D){if(this._getType(D)!==x.null){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.null,received:$.parsedType}),o}return bD(D.data)}};V5.create=(D)=>{return new V5({typeName:r.ZodNull,...W0(D)})};N3=class N3 extends Z0{constructor(){super(...arguments);this._any=!0}_parse(D){return bD(D.data)}};N3.create=(D)=>{return new N3({typeName:r.ZodAny,...W0(D)})};O4=class O4 extends Z0{constructor(){super(...arguments);this._unknown=!0}_parse(D){return bD(D.data)}};O4.create=(D)=>{return new O4({typeName:r.ZodUnknown,...W0(D)})};i8=class i8 extends Z0{_parse(D){let F=this._getOrReturnCtx(D);return g(F,{code:k.invalid_type,expected:x.never,received:F.parsedType}),o}};i8.create=(D)=>{return new i8({typeName:r.ZodNever,...W0(D)})};e7=class e7 extends Z0{_parse(D){if(this._getType(D)!==x.undefined){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.void,received:$.parsedType}),o}return bD(D.data)}};e7.create=(D)=>{return new e7({typeName:r.ZodVoid,...W0(D)})};V8=class V8 extends Z0{_parse(D){let{ctx:F,status:$}=this._processInputParams(D),Q=this._def;if(F.parsedType!==x.array)return g(F,{code:k.invalid_type,expected:x.array,received:F.parsedType}),o;if(Q.exactLength!==null){let Y=F.data.length>Q.exactLength.value,X=F.data.length<Q.exactLength.value;if(Y||X)g(F,{code:Y?k.too_big:k.too_small,minimum:X?Q.exactLength.value:void 0,maximum:Y?Q.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Q.exactLength.message}),$.dirty()}if(Q.minLength!==null){if(F.data.length<Q.minLength.value)g(F,{code:k.too_small,minimum:Q.minLength.value,type:"array",inclusive:!0,exact:!1,message:Q.minLength.message}),$.dirty()}if(Q.maxLength!==null){if(F.data.length>Q.maxLength.value)g(F,{code:k.too_big,maximum:Q.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Q.maxLength.message}),$.dirty()}if(F.common.async)return Promise.all([...F.data].map((Y,X)=>{return Q.type._parseAsync(new U8(F,Y,F.path,X))})).then((Y)=>{return PD.mergeArray($,Y)});let J=[...F.data].map((Y,X)=>{return Q.type._parseSync(new U8(F,Y,F.path,X))});return PD.mergeArray($,J)}get element(){return this._def.type}min(D,F){return new V8({...this._def,minLength:{value:D,message:d.toString(F)}})}max(D,F){return new V8({...this._def,maxLength:{value:D,message:d.toString(F)}})}length(D,F){return new V8({...this._def,exactLength:{value:D,message:d.toString(F)}})}nonempty(D){return this.min(1,D)}};V8.create=(D,F)=>{return new V8({type:D,minLength:null,maxLength:null,exactLength:null,typeName:r.ZodArray,...W0(F)})};JD=class JD extends Z0{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=M0.objectKeys(D);return this._cached={shape:D,keys:F},this._cached}_parse(D){if(this._getType(D)!==x.object){let G=this._getOrReturnCtx(D);return g(G,{code:k.invalid_type,expected:x.object,received:G.parsedType}),o}let{status:$,ctx:Q}=this._processInputParams(D),{shape:J,keys:Y}=this._getCached(),X=[];if(!(this._def.catchall instanceof i8&&this._def.unknownKeys==="strip")){for(let G in Q.data)if(!Y.includes(G))X.push(G)}let B=[];for(let G of Y){let W=J[G],q=Q.data[G];B.push({key:{status:"valid",value:G},value:W._parse(new U8(Q,q,Q.path,G)),alwaysSet:G in Q.data})}if(this._def.catchall instanceof i8){let G=this._def.unknownKeys;if(G==="passthrough")for(let W of X)B.push({key:{status:"valid",value:W},value:{status:"valid",value:Q.data[W]}});else if(G==="strict"){if(X.length>0)g(Q,{code:k.unrecognized_keys,keys:X}),$.dirty()}else if(G==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let G=this._def.catchall;for(let W of X){let q=Q.data[W];B.push({key:{status:"valid",value:W},value:G._parse(new U8(Q,q,Q.path,W)),alwaysSet:W in Q.data})}}if(Q.common.async)return Promise.resolve().then(async()=>{let G=[];for(let W of B){let q=await W.key,K=await W.value;G.push({key:q,value:K,alwaysSet:W.alwaysSet})}return G}).then((G)=>{return PD.mergeObjectSync($,G)});else return PD.mergeObjectSync($,B)}get shape(){return this._def.shape()}strict(D){return d.errToObj,new JD({...this._def,unknownKeys:"strict",...D!==void 0?{errorMap:(F,$)=>{let Q=this._def.errorMap?.(F,$).message??$.defaultError;if(F.code==="unrecognized_keys")return{message:d.errToObj(D).message??Q};return{message:Q}}}:{}})}strip(){return new JD({...this._def,unknownKeys:"strip"})}passthrough(){return new JD({...this._def,unknownKeys:"passthrough"})}extend(D){return new JD({...this._def,shape:()=>({...this._def.shape(),...D})})}merge(D){return new JD({unknownKeys:D._def.unknownKeys,catchall:D._def.catchall,shape:()=>({...this._def.shape(),...D._def.shape()}),typeName:r.ZodObject})}setKey(D,F){return this.augment({[D]:F})}catchall(D){return new JD({...this._def,catchall:D})}pick(D){let F={};for(let $ of M0.objectKeys(D))if(D[$]&&this.shape[$])F[$]=this.shape[$];return new JD({...this._def,shape:()=>F})}omit(D){let F={};for(let $ of M0.objectKeys(this.shape))if(!D[$])F[$]=this.shape[$];return new JD({...this._def,shape:()=>F})}deepPartial(){return q5(this)}partial(D){let F={};for(let $ of M0.objectKeys(this.shape)){let Q=this.shape[$];if(D&&!D[$])F[$]=Q;else F[$]=Q.optional()}return new JD({...this._def,shape:()=>F})}required(D){let F={};for(let $ of M0.objectKeys(this.shape))if(D&&!D[$])F[$]=this.shape[$];else{let J=this.shape[$];while(J instanceof E8)J=J._def.innerType;F[$]=J}return new JD({...this._def,shape:()=>F})}keyof(){return Yp(M0.objectKeys(this.shape))}};JD.create=(D,F)=>{return new JD({shape:()=>D,unknownKeys:"strip",catchall:i8.create(),typeName:r.ZodObject,...W0(F)})};JD.strictCreate=(D,F)=>{return new JD({shape:()=>D,unknownKeys:"strict",catchall:i8.create(),typeName:r.ZodObject,...W0(F)})};JD.lazycreate=(D,F)=>{return new JD({shape:D,unknownKeys:"strip",catchall:i8.create(),typeName:r.ZodObject,...W0(F)})};E5=class E5 extends Z0{_parse(D){let{ctx:F}=this._processInputParams(D),$=this._def.options;function Q(J){for(let X of J)if(X.result.status==="valid")return X.result;for(let X of J)if(X.result.status==="dirty")return F.common.issues.push(...X.ctx.common.issues),X.result;let Y=J.map((X)=>new q1(X.ctx.common.issues));return g(F,{code:k.invalid_union,unionErrors:Y}),o}if(F.common.async)return Promise.all($.map(async(J)=>{let Y={...F,common:{...F.common,issues:[]},parent:null};return{result:await J._parseAsync({data:F.data,path:F.path,parent:Y}),ctx:Y}})).then(Q);else{let J=void 0,Y=[];for(let B of $){let G={...F,common:{...F.common,issues:[]},parent:null},W=B._parseSync({data:F.data,path:F.path,parent:G});if(W.status==="valid")return W;else if(W.status==="dirty"&&!J)J={result:W,ctx:G};if(G.common.issues.length)Y.push(G.common.issues)}if(J)return F.common.issues.push(...J.ctx.common.issues),J.result;let X=Y.map((B)=>new q1(B));return g(F,{code:k.invalid_union,unionErrors:X}),o}}get options(){return this._def.options}};E5.create=(D,F)=>{return new E5({options:D,typeName:r.ZodUnion,...W0(F)})};QX=class QX extends Z0{_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==x.object)return g(F,{code:k.invalid_type,expected:x.object,received:F.parsedType}),o;let $=this.discriminator,Q=F.data[$],J=this.optionsMap.get(Q);if(!J)return g(F,{code:k.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[$]}),o;if(F.common.async)return J._parseAsync({data:F.data,path:F.path,parent:F});else return J._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 Q=new Map;for(let J of F){let Y=R6(J.shape[D]);if(!Y.length)throw Error(`A discriminator value for key \`${D}\` could not be extracted from all schema options`);for(let X of Y){if(Q.has(X))throw Error(`Discriminator property ${String(D)} has duplicate value ${String(X)}`);Q.set(X,J)}}return new QX({typeName:r.ZodDiscriminatedUnion,discriminator:D,options:F,optionsMap:Q,...W0($)})}};U5=class U5 extends Z0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D),Q=(J,Y)=>{if(FX(J)||FX(Y))return o;let X=Nz(J.value,Y.value);if(!X.valid)return g($,{code:k.invalid_intersection_types}),o;if($X(J)||$X(Y))F.dirty();return{status:F.value,value:X.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(([J,Y])=>Q(J,Y));else return Q(this._def.left._parseSync({data:$.data,path:$.path,parent:$}),this._def.right._parseSync({data:$.data,path:$.path,parent:$}))}};U5.create=(D,F,$)=>{return new U5({left:D,right:F,typeName:r.ZodIntersection,...W0($)})};a8=class a8 extends Z0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==x.array)return g($,{code:k.invalid_type,expected:x.array,received:$.parsedType}),o;if($.data.length<this._def.items.length)return g($,{code:k.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),o;if(!this._def.rest&&$.data.length>this._def.items.length)g($,{code:k.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),F.dirty();let J=[...$.data].map((Y,X)=>{let B=this._def.items[X]||this._def.rest;if(!B)return null;return B._parse(new U8($,Y,$.path,X))}).filter((Y)=>!!Y);if($.common.async)return Promise.all(J).then((Y)=>{return PD.mergeArray(F,Y)});else return PD.mergeArray(F,J)}get items(){return this._def.items}rest(D){return new a8({...this._def,rest:D})}};a8.create=(D,F)=>{if(!Array.isArray(D))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new a8({items:D,typeName:r.ZodTuple,rest:null,...W0(F)})};D$=class D$ extends Z0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==x.object)return g($,{code:k.invalid_type,expected:x.object,received:$.parsedType}),o;let Q=[],J=this._def.keyType,Y=this._def.valueType;for(let X in $.data)Q.push({key:J._parse(new U8($,X,$.path,X)),value:Y._parse(new U8($,$.data[X],$.path,X)),alwaysSet:X in $.data});if($.common.async)return PD.mergeObjectAsync(F,Q);else return PD.mergeObjectSync(F,Q)}get element(){return this._def.valueType}static create(D,F,$){if(F instanceof Z0)return new D$({keyType:D,valueType:F,typeName:r.ZodRecord,...W0($)});return new D$({keyType:Z8.create(),valueType:D,typeName:r.ZodRecord,...W0(F)})}};F$=class F$ extends Z0{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==x.map)return g($,{code:k.invalid_type,expected:x.map,received:$.parsedType}),o;let Q=this._def.keyType,J=this._def.valueType,Y=[...$.data.entries()].map(([X,B],G)=>{return{key:Q._parse(new U8($,X,$.path,[G,"key"])),value:J._parse(new U8($,B,$.path,[G,"value"]))}});if($.common.async){let X=new Map;return Promise.resolve().then(async()=>{for(let B of Y){let G=await B.key,W=await B.value;if(G.status==="aborted"||W.status==="aborted")return o;if(G.status==="dirty"||W.status==="dirty")F.dirty();X.set(G.value,W.value)}return{status:F.value,value:X}})}else{let X=new Map;for(let B of Y){let{key:G,value:W}=B;if(G.status==="aborted"||W.status==="aborted")return o;if(G.status==="dirty"||W.status==="dirty")F.dirty();X.set(G.value,W.value)}return{status:F.value,value:X}}}};F$.create=(D,F,$)=>{return new F$({valueType:F,keyType:D,typeName:r.ZodMap,...W0($)})};C3=class C3 extends Z0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.parsedType!==x.set)return g($,{code:k.invalid_type,expected:x.set,received:$.parsedType}),o;let Q=this._def;if(Q.minSize!==null){if($.data.size<Q.minSize.value)g($,{code:k.too_small,minimum:Q.minSize.value,type:"set",inclusive:!0,exact:!1,message:Q.minSize.message}),F.dirty()}if(Q.maxSize!==null){if($.data.size>Q.maxSize.value)g($,{code:k.too_big,maximum:Q.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Q.maxSize.message}),F.dirty()}let J=this._def.valueType;function Y(B){let G=new Set;for(let W of B){if(W.status==="aborted")return o;if(W.status==="dirty")F.dirty();G.add(W.value)}return{status:F.value,value:G}}let X=[...$.data.values()].map((B,G)=>J._parse(new U8($,B,$.path,G)));if($.common.async)return Promise.all(X).then((B)=>Y(B));else return Y(X)}min(D,F){return new C3({...this._def,minSize:{value:D,message:d.toString(F)}})}max(D,F){return new C3({...this._def,maxSize:{value:D,message:d.toString(F)}})}size(D,F){return this.min(D,F).max(D,F)}nonempty(D){return this.min(1,D)}};C3.create=(D,F)=>{return new C3({valueType:D,minSize:null,maxSize:null,typeName:r.ZodSet,...W0(F)})};K5=class K5 extends Z0{constructor(){super(...arguments);this.validate=this.implement}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==x.function)return g(F,{code:k.invalid_type,expected:x.function,received:F.parsedType}),o;function $(X,B){return r7({data:X,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,W5(),C6].filter((G)=>!!G),issueData:{code:k.invalid_arguments,argumentsError:B}})}function Q(X,B){return r7({data:X,path:F.path,errorMaps:[F.common.contextualErrorMap,F.schemaErrorMap,W5(),C6].filter((G)=>!!G),issueData:{code:k.invalid_return_type,returnTypeError:B}})}let J={errorMap:F.common.contextualErrorMap},Y=F.data;if(this._def.returns instanceof R3){let X=this;return bD(async function(...B){let G=new q1([]),W=await X._def.args.parseAsync(B,J).catch((Z)=>{throw G.addIssue($(B,Z)),G}),q=await Reflect.apply(Y,this,W);return await X._def.returns._def.type.parseAsync(q,J).catch((Z)=>{throw G.addIssue(Q(q,Z)),G})})}else{let X=this;return bD(function(...B){let G=X._def.args.safeParse(B,J);if(!G.success)throw new q1([$(B,G.error)]);let W=Reflect.apply(Y,this,G.data),q=X._def.returns.safeParse(W,J);if(!q.success)throw new q1([Q(W,q.error)]);return q.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...D){return new K5({...this._def,args:a8.create(D).rest(O4.create())})}returns(D){return new K5({...this._def,returns:D})}implement(D){return this.parse(D)}strictImplement(D){return this.parse(D)}static create(D,F,$){return new K5({args:D?D:a8.create([]).rest(O4.create()),returns:F||O4.create(),typeName:r.ZodFunction,...W0($)})}};L5=class L5 extends Z0{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})}};L5.create=(D,F)=>{return new L5({getter:D,typeName:r.ZodLazy,...W0(F)})};M5=class M5 extends Z0{_parse(D){if(D.data!==this._def.value){let F=this._getOrReturnCtx(D);return g(F,{received:F.data,code:k.invalid_literal,expected:this._def.value}),o}return{status:"valid",value:D.data}}get value(){return this._def.value}};M5.create=(D,F)=>{return new M5({value:D,typeName:r.ZodLiteral,...W0(F)})};w4=class w4 extends Z0{_parse(D){if(typeof D.data!=="string"){let F=this._getOrReturnCtx(D),$=this._def.values;return g(F,{expected:M0.joinValues($),received:F.parsedType,code:k.invalid_type}),o}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 g(F,{received:F.data,code:k.invalid_enum_value,options:$}),o}return bD(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 w4.create(D,{...this._def,...F})}exclude(D,F=this._def){return w4.create(this.options.filter(($)=>!D.includes($)),{...this._def,...F})}};w4.create=Yp;A5=class A5 extends Z0{_parse(D){let F=M0.getValidEnumValues(this._def.values),$=this._getOrReturnCtx(D);if($.parsedType!==x.string&&$.parsedType!==x.number){let Q=M0.objectValues(F);return g($,{expected:M0.joinValues(Q),received:$.parsedType,code:k.invalid_type}),o}if(!this._cache)this._cache=new Set(M0.getValidEnumValues(this._def.values));if(!this._cache.has(D.data)){let Q=M0.objectValues(F);return g($,{received:$.data,code:k.invalid_enum_value,options:Q}),o}return bD(D.data)}get enum(){return this._def.values}};A5.create=(D,F)=>{return new A5({values:D,typeName:r.ZodNativeEnum,...W0(F)})};R3=class R3 extends Z0{unwrap(){return this._def.type}_parse(D){let{ctx:F}=this._processInputParams(D);if(F.parsedType!==x.promise&&F.common.async===!1)return g(F,{code:k.invalid_type,expected:x.promise,received:F.parsedType}),o;let $=F.parsedType===x.promise?F.data:Promise.resolve(F.data);return bD($.then((Q)=>{return this._def.type.parseAsync(Q,{path:F.path,errorMap:F.common.contextualErrorMap})}))}};R3.create=(D,F)=>{return new R3({type:D,typeName:r.ZodPromise,...W0(F)})};L8=class L8 extends Z0{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===r.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(D){let{status:F,ctx:$}=this._processInputParams(D),Q=this._def.effect||null,J={addIssue:(Y)=>{if(g($,Y),Y.fatal)F.abort();else F.dirty()},get path(){return $.path}};if(J.addIssue=J.addIssue.bind(J),Q.type==="preprocess"){let Y=Q.transform($.data,J);if($.common.async)return Promise.resolve(Y).then(async(X)=>{if(F.value==="aborted")return o;let B=await this._def.schema._parseAsync({data:X,path:$.path,parent:$});if(B.status==="aborted")return o;if(B.status==="dirty")return M3(B.value);if(F.value==="dirty")return M3(B.value);return B});else{if(F.value==="aborted")return o;let X=this._def.schema._parseSync({data:Y,path:$.path,parent:$});if(X.status==="aborted")return o;if(X.status==="dirty")return M3(X.value);if(F.value==="dirty")return M3(X.value);return X}}if(Q.type==="refinement"){let Y=(X)=>{let B=Q.refinement(X,J);if($.common.async)return Promise.resolve(B);if(B instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return X};if($.common.async===!1){let X=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(X.status==="aborted")return o;if(X.status==="dirty")F.dirty();return Y(X.value),{status:F.value,value:X.value}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((X)=>{if(X.status==="aborted")return o;if(X.status==="dirty")F.dirty();return Y(X.value).then(()=>{return{status:F.value,value:X.value}})})}if(Q.type==="transform")if($.common.async===!1){let Y=this._def.schema._parseSync({data:$.data,path:$.path,parent:$});if(!R4(Y))return o;let X=Q.transform(Y.value,J);if(X instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:F.value,value:X}}else return this._def.schema._parseAsync({data:$.data,path:$.path,parent:$}).then((Y)=>{if(!R4(Y))return o;return Promise.resolve(Q.transform(Y.value,J)).then((X)=>({status:F.value,value:X}))});M0.assertNever(Q)}};L8.create=(D,F,$)=>{return new L8({schema:D,typeName:r.ZodEffects,effect:F,...W0($)})};L8.createWithPreprocess=(D,F,$)=>{return new L8({schema:F,effect:{type:"preprocess",transform:D},typeName:r.ZodEffects,...W0($)})};E8=class E8 extends Z0{_parse(D){if(this._getType(D)===x.undefined)return bD(void 0);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};E8.create=(D,F)=>{return new E8({innerType:D,typeName:r.ZodOptional,...W0(F)})};O6=class O6 extends Z0{_parse(D){if(this._getType(D)===x.null)return bD(null);return this._def.innerType._parse(D)}unwrap(){return this._def.innerType}};O6.create=(D,F)=>{return new O6({innerType:D,typeName:r.ZodNullable,...W0(F)})};N5=class N5 extends Z0{_parse(D){let{ctx:F}=this._processInputParams(D),$=F.data;if(F.parsedType===x.undefined)$=this._def.defaultValue();return this._def.innerType._parse({data:$,path:F.path,parent:F})}removeDefault(){return this._def.innerType}};N5.create=(D,F)=>{return new N5({innerType:D,typeName:r.ZodDefault,defaultValue:typeof F.default==="function"?F.default:()=>F.default,...W0(F)})};C5=class C5 extends Z0{_parse(D){let{ctx:F}=this._processInputParams(D),$={...F,common:{...F.common,issues:[]}},Q=this._def.innerType._parse({data:$.data,path:$.path,parent:{...$}});if(H5(Q))return Q.then((J)=>{return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new q1($.common.issues)},input:$.data})}});else return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new q1($.common.issues)},input:$.data})}}removeCatch(){return this._def.innerType}};C5.create=(D,F)=>{return new C5({innerType:D,typeName:r.ZodCatch,catchValue:typeof F.catch==="function"?F.catch:()=>F.catch,...W0(F)})};$$=class $$ extends Z0{_parse(D){if(this._getType(D)!==x.nan){let $=this._getOrReturnCtx(D);return g($,{code:k.invalid_type,expected:x.nan,received:$.parsedType}),o}return{status:"valid",value:D.data}}};$$.create=(D)=>{return new $$({typeName:r.ZodNaN,...W0(D)})};gP0=Symbol("zod_brand");JX=class JX extends Z0{_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}};Q$=class Q$ extends Z0{_parse(D){let{status:F,ctx:$}=this._processInputParams(D);if($.common.async)return(async()=>{let J=await this._def.in._parseAsync({data:$.data,path:$.path,parent:$});if(J.status==="aborted")return o;if(J.status==="dirty")return F.dirty(),M3(J.value);else return this._def.out._parseAsync({data:J.value,path:$.path,parent:$})})();else{let Q=this._def.in._parseSync({data:$.data,path:$.path,parent:$});if(Q.status==="aborted")return o;if(Q.status==="dirty")return F.dirty(),{status:"dirty",value:Q.value};else return this._def.out._parseSync({data:Q.value,path:$.path,parent:$})}}static create(D,F){return new Q$({in:D,out:F,typeName:r.ZodPipeline})}};R5=class R5 extends Z0{_parse(D){let F=this._def.innerType._parse(D),$=(Q)=>{if(R4(Q))Q.value=Object.freeze(Q.value);return Q};return H5(F)?F.then((Q)=>$(Q)):$(F)}unwrap(){return this._def.innerType}};R5.create=(D,F)=>{return new R5({innerType:D,typeName:r.ZodReadonly,...W0(F)})};hP0={object:JD.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"})(r||(r={}));Bp=Z8.create,Gp=j4.create,mP0=$$.create,lP0=T4.create,Wp=z5.create,pP0=A3.create,dP0=t7.create,cP0=Z5.create,nP0=V5.create,iP0=N3.create,aP0=O4.create,oP0=i8.create,sP0=e7.create,rP0=V8.create,tP0=JD.create,eP0=JD.strictCreate,DI0=E5.create,FI0=QX.create,$I0=U5.create,QI0=a8.create,JI0=D$.create,YI0=F$.create,XI0=C3.create,BI0=K5.create,GI0=L5.create,WI0=M5.create,HI0=w4.create,qI0=A5.create,KI0=R3.create,zI0=L8.create,ZI0=E8.create,VI0=O6.create,EI0=L8.createWithPreprocess,UI0=Q$.create,NI0={string:(D)=>Z8.create({...D,coerce:!0}),number:(D)=>j4.create({...D,coerce:!0}),boolean:(D)=>z5.create({...D,coerce:!0}),bigint:(D)=>T4.create({...D,coerce:!0}),date:(D)=>A3.create({...D,coerce:!0})},CI0=o});var I={};k6(I,{void:()=>sP0,util:()=>M0,unknown:()=>aP0,union:()=>DI0,undefined:()=>cP0,tuple:()=>QI0,transformer:()=>zI0,symbol:()=>dP0,string:()=>Bp,strictObject:()=>eP0,setErrorMap:()=>VP0,set:()=>XI0,record:()=>JI0,quotelessJson:()=>zP0,promise:()=>KI0,preprocess:()=>EI0,pipeline:()=>UI0,ostring:()=>LI0,optional:()=>ZI0,onumber:()=>MI0,oboolean:()=>AI0,objectUtil:()=>Uz,object:()=>tP0,number:()=>Gp,nullable:()=>VI0,null:()=>nP0,never:()=>oP0,nativeEnum:()=>qI0,nan:()=>mP0,map:()=>YI0,makeIssue:()=>r7,literal:()=>WI0,lazy:()=>GI0,late:()=>hP0,isValid:()=>R4,isDirty:()=>$X,isAsync:()=>H5,isAborted:()=>FX,intersection:()=>$I0,instanceof:()=>uP0,getParsedType:()=>n8,getErrorMap:()=>W5,function:()=>BI0,enum:()=>HI0,effect:()=>zI0,discriminatedUnion:()=>FI0,defaultErrorMap:()=>C6,datetimeRegex:()=>Jp,date:()=>pP0,custom:()=>Xp,coerce:()=>NI0,boolean:()=>Wp,bigint:()=>lP0,array:()=>rP0,any:()=>iP0,addIssueToContext:()=>g,ZodVoid:()=>e7,ZodUnknown:()=>O4,ZodUnion:()=>E5,ZodUndefined:()=>Z5,ZodType:()=>Z0,ZodTuple:()=>a8,ZodTransformer:()=>L8,ZodSymbol:()=>t7,ZodString:()=>Z8,ZodSet:()=>C3,ZodSchema:()=>Z0,ZodRecord:()=>D$,ZodReadonly:()=>R5,ZodPromise:()=>R3,ZodPipeline:()=>Q$,ZodParsedType:()=>x,ZodOptional:()=>E8,ZodObject:()=>JD,ZodNumber:()=>j4,ZodNullable:()=>O6,ZodNull:()=>V5,ZodNever:()=>i8,ZodNativeEnum:()=>A5,ZodNaN:()=>$$,ZodMap:()=>F$,ZodLiteral:()=>M5,ZodLazy:()=>L5,ZodIssueCode:()=>k,ZodIntersection:()=>U5,ZodFunction:()=>K5,ZodFirstPartyTypeKind:()=>r,ZodError:()=>q1,ZodEnum:()=>w4,ZodEffects:()=>L8,ZodDiscriminatedUnion:()=>QX,ZodDefault:()=>N5,ZodDate:()=>A3,ZodCatch:()=>C5,ZodBranded:()=>JX,ZodBoolean:()=>z5,ZodBigInt:()=>T4,ZodArray:()=>V8,ZodAny:()=>N3,Schema:()=>Z0,ParseStatus:()=>PD,OK:()=>bD,NEVER:()=>CI0,INVALID:()=>o,EMPTY_PATH:()=>EP0,DIRTY:()=>M3,BRAND:()=>gP0});var Cz=P(()=>{DX();Mz();tl();s7();Hp();eY()});var J$=P(()=>{Cz();Cz()});import{copyFileSync as RI0,existsSync as qp,mkdirSync as OI0}from"fs";import{homedir as XX}from"os";import{join as O5}from"path";function TI0(D){let F=D.trim().replace(/\/+$/,"");try{let $=new URL(F);return $.protocol=$.protocol.toLowerCase(),$.host=$.host.toLowerCase(),$.toString().replace(/\/+$/,"")}catch{return console.error(`[nemar] could not parse stored apiUrl ${JSON.stringify(D)}; leaving as-is`),F}}function wI0(){return process.env.NEMAR_CONFIG_DIR||O5(XX(),".config","nemar")}function PI0(D){if(process.env.NEMAR_CONFIG_DIR)return;let F=O5(D,"config.json");if(qp(F))return;let $=[];if(process.platform==="darwin")$.push(O5(XX(),"Library","Preferences","nemar-nodejs","config.json"));if(process.platform==="win32"){let Q=process.env.APPDATA||O5(XX(),"AppData","Roaming");$.push(O5(Q,"nemar-nodejs","config.json"))}$.push(O5(XX(),".config","nemar-nodejs","config.json"));for(let Q of $)if(qp(Q))try{OI0(D,{recursive:!0}),RI0(Q,F),console.error(`[nemar] Config migrated from ${Q} to ${F}
|
|
99
99
|
[nemar] You can safely remove the old file.`);return}catch(J){console.error(`[nemar] Failed to migrate config from ${Q}:`,J,`
|
|
100
|
-
[nemar] You can manually copy ${Q} to ${F}`)}}function M8(){let D=wI0();if(YX&&Kp===D)return YX;if(PI0(D),YX=new tY({projectName:"nemar",schema:{activeAccount:{type:"string"},accounts:{type:"object"},apiKey:{type:"string"},apiUrl:{type:"string"},username:{type:"string"},email:{type:"string"},githubUsername:{type:"string"},sandboxCompleted:{type:"boolean"},sandboxDatasetId:{type:"string"}},cwd:D}),Kp=D,!zp.has(D))zp.add(D),SI0(),kI0();return YX}function SI0(){let D=M8(),F=D.get("accounts");if(F&&Object.keys(F).length>0)return;let $=D.get("apiKey"),Q=D.get("username");if(!$&&!Q)return;try{let J=Q||"default",Y={};for(let X of II0){let B=D.get(X);if(B!==void 0)Y[X]=B}D.store={activeAccount:J,accounts:{[J]:Y}}}catch(J){console.error("Config migration failed (legacy config preserved):",J)}}function kI0(){let D=M8(),F=D.store,$=F.accounts,Q=!1;if($)for(let[Y,X]of Object.entries($)){let B=X?.apiUrl;if(!B)continue;if(jI0.has(TI0(B)))$[Y]={...X,apiUrl:O3},console.error(`[nemar] migrated stored apiUrl for account "${Y}": ${B} -> ${O3}`),Q=!0}let J=F.apiUrl;if($&&Object.keys($).length>0&&J!==void 0){let{apiUrl:Y,...X}=F;try{D.store=X,console.error(`[nemar] removed stale top-level apiUrl from config (was: ${J})`),Q=!1}catch(B){console.error("API URL cleanup failed (config file unchanged):",B)}}if(Q)try{D.store={...D.store,accounts:$}}catch(Y){console.error("API URL migration failed (config file unchanged):",Y)}}function BX(){return M8().get("activeAccount")}function j5(){return M8().get("accounts")||{}}function KD(){let D={apiUrl:O3},F=BX();if(!F)return D;return j5()[F]||D}function Zp(){return!!KD().sandboxCompleted}function A8(D,F){let $=M8(),Q=$.get("activeAccount")||"default",J=$.get("accounts")||{};if(!J[Q])J[Q]={apiUrl:O3};J[Q][D]=F,$.store={...$.store,accounts:J,activeAccount:Q}}function Rz(D){let F=BX();if(!F)return;let $=j5();if($[F])delete $[F][D],M8().set("accounts",$)}function Vp(){let D=M8(),F=BX();if(!F){D.clear();return}let $=j5();delete $[F];let Q=Object.keys($);if(Q.length>0)D.store={...D.store,accounts:$,activeAccount:Q[0]};else D.clear()}function Ep(){M8().clear()}function b0(){return!!KD().apiKey}function Up(){return M8().path}function Y$(){let D=j5(),F=BX();return Object.entries(D).map(([$,Q])=>({username:Q.username||$,email:Q.email,githubUsername:Q.githubUsername,active:$===F}))}function Lp(D,F){let $=M8(),Q=j5();Q[D]=F,$.store={...$.store,accounts:Q,activeAccount:D}}function Mp(D){let F=M8(),$=j5();if($[D])return F.store={...F.store,activeAccount:D},$[D];for(let[Q,J]of Object.entries($))if(J.githubUsername===D)return F.store={...F.store,activeAccount:Q},J;return null}var O3="https://
|
|
100
|
+
[nemar] You can manually copy ${Q} to ${F}`)}}function M8(){let D=wI0();if(YX&&Kp===D)return YX;if(PI0(D),YX=new tY({projectName:"nemar",schema:{activeAccount:{type:"string"},accounts:{type:"object"},apiKey:{type:"string"},apiUrl:{type:"string"},username:{type:"string"},email:{type:"string"},githubUsername:{type:"string"},sandboxCompleted:{type:"boolean"},sandboxDatasetId:{type:"string"}},cwd:D}),Kp=D,!zp.has(D))zp.add(D),SI0(),kI0();return YX}function SI0(){let D=M8(),F=D.get("accounts");if(F&&Object.keys(F).length>0)return;let $=D.get("apiKey"),Q=D.get("username");if(!$&&!Q)return;try{let J=Q||"default",Y={};for(let X of II0){let B=D.get(X);if(B!==void 0)Y[X]=B}D.store={activeAccount:J,accounts:{[J]:Y}}}catch(J){console.error("Config migration failed (legacy config preserved):",J)}}function kI0(){let D=M8(),F=D.store,$=F.accounts,Q=!1;if($)for(let[Y,X]of Object.entries($)){let B=X?.apiUrl;if(!B)continue;if(jI0.has(TI0(B)))$[Y]={...X,apiUrl:O3},console.error(`[nemar] migrated stored apiUrl for account "${Y}": ${B} -> ${O3}`),Q=!0}let J=F.apiUrl;if($&&Object.keys($).length>0&&J!==void 0){let{apiUrl:Y,...X}=F;try{D.store=X,console.error(`[nemar] removed stale top-level apiUrl from config (was: ${J})`),Q=!1}catch(B){console.error("API URL cleanup failed (config file unchanged):",B)}}if(Q)try{D.store={...D.store,accounts:$}}catch(Y){console.error("API URL migration failed (config file unchanged):",Y)}}function BX(){return M8().get("activeAccount")}function j5(){return M8().get("accounts")||{}}function KD(){let D={apiUrl:O3},F=BX();if(!F)return D;return j5()[F]||D}function Zp(){return!!KD().sandboxCompleted}function A8(D,F){let $=M8(),Q=$.get("activeAccount")||"default",J=$.get("accounts")||{};if(!J[Q])J[Q]={apiUrl:O3};J[Q][D]=F,$.store={...$.store,accounts:J,activeAccount:Q}}function Rz(D){let F=BX();if(!F)return;let $=j5();if($[F])delete $[F][D],M8().set("accounts",$)}function Vp(){let D=M8(),F=BX();if(!F){D.clear();return}let $=j5();delete $[F];let Q=Object.keys($);if(Q.length>0)D.store={...D.store,accounts:$,activeAccount:Q[0]};else D.clear()}function Ep(){M8().clear()}function b0(){return!!KD().apiKey}function Up(){return M8().path}function Y$(){let D=j5(),F=BX();return Object.entries(D).map(([$,Q])=>({username:Q.username||$,email:Q.email,githubUsername:Q.githubUsername,active:$===F}))}function Lp(D,F){let $=M8(),Q=j5();Q[D]=F,$.store={...$.store,accounts:Q,activeAccount:D}}function Mp(D){let F=M8(),$=j5();if($[D])return F.store={...F.store,activeAccount:D},$[D];for(let[Q,J]of Object.entries($))if(J.githubUsername===D)return F.store={...F.store,activeAccount:Q},J;return null}var O3="https://api.nemar.org",jI0,La0,YX=null,Kp=null,zp,II0;var P4=P(()=>{sl();J$();jI0=new Set(["https://api.osc.earth/nemar","https://nemar-api.neuromechanist.workers.dev","https://nemar-api-dev.shirazi-10f.workers.dev"]);La0=I.object({apiKey:I.string().optional(),apiUrl:I.string().url().default(O3),username:I.string().optional(),email:I.string().email().optional(),githubUsername:I.string().optional(),sandboxCompleted:I.boolean().optional(),sandboxDatasetId:I.string().optional(),dismissedNoticeIds:I.array(I.number()).optional()});zp=new Set;II0=["apiKey","apiUrl","username","email","githubUsername","sandboxCompleted","sandboxDatasetId","dismissedNoticeIds"]});function GX(D){if(Ap)return;Ap=!0;let F=H.yellow("\u2500".repeat(60)),$=H.yellow.bold("[MAINTENANCE]"),Q=H.dim(`mode: ${D.mode}`),J=D.eta?`
|
|
101
101
|
${H.dim(`eta: ${D.eta}`)}`:"";process.stderr.write(`${F}
|
|
102
102
|
${$} ${D.message}
|
|
103
103
|
${Q}${J}
|
|
104
104
|
${F}
|
|
105
|
-
`)}var Ap=!1;var Oz=P(()=>{t0()});var Cp;var Np=P(()=>{Cp={name:"nemar-cli",version:"0.9.0-dev.1761",description:"CLI for NEMAR (Neuroelectromagnetic Data Archive and Tools Resource) dataset management",type:"module",main:"dist/index.js",bin:{nemar:"dist/index.js"},scripts:{dev:"bun run src/index.ts",build:"bun build src/index.ts --outdir dist --target bun --minify && sed '1s|#!/usr/bin/env node|#!/usr/bin/env bun|' dist/index.js > dist/index.js.tmp && mv dist/index.js.tmp dist/index.js",test:"bun test",lint:"biome check src/","lint:fix":"biome check --fix src/",format:"biome format --write src/",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",prepare:"husky",postinstall:"bun scripts/postinstall-check.mjs",deploy:"wrangler deploy",preview:"wrangler dev"},keywords:["nemar","bids","neuroimaging","eeg","emg","datalad","cli"],author:"NEMAR Team",license:"CC-BY-NC-ND-4.0",repository:{type:"git",url:"git+https://github.com/nemarOrg/nemar-cli.git"},bugs:{url:"https://github.com/nemarOrg/nemar-cli/issues"},homepage:"https://docs.nemar.org",engines:{bun:">=1.0.0"},files:["dist","scripts/postinstall-check.mjs","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1","fuse.js":"^7.1.0",inquirer:"^9.2.15",ora:"^8.0.1",zod:"^3.23.8"},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --fix"],"backend/src/**/*.{ts,tsx}":["biome check --fix"]},devDependencies:{"@biomejs/biome":"1.9.4","@types/bcryptjs":"^3.0.0","@types/bun":"latest","@types/inquirer":"^9.0.7",ajv:"^8.20.0","ajv-formats":"^3.0.1",bcryptjs:"^3.0.3",husky:"^9.1.7","lint-staged":"^16.3.2",typescript:"^5.5.4",wrangler:"^4.70.0",yaml:"^2.8.4"}}});var j3;var WX=P(()=>{Np();j3=Cp.version});function $0(D){if(D instanceof Error)return D.message;return String(D)}var f,T3;var K1=P(()=>{f=class f extends Error{statusCode;details;step;constructor(D,F,$,Q){super(F);this.statusCode=D;this.details=$;this.step=Q;this.name="ApiError"}};T3=class T3 extends f{mode;eta;constructor(D,F,$,Q){super(503,F,Q);this.mode=D;this.eta=$;this.name="MaintenanceError"}}});function Rp(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(Tz)return jz;return KD().apiUrl||jz}async function _(D,F={},$=!1,Q){let J=`${Rp()}${D}`,Y={"Content-Type":"application/json","X-CLI-Version":j3,...F.headers};if($){let G=KD();if(!G.apiKey&&$===!0)throw new f(401,"Not authenticated. Run 'nemar auth login' first.");if(G.apiKey)Y.Authorization=`Bearer ${G.apiKey}`}let X;try{X=await fetch(J,{...F,headers:Y})}catch(G){throw new f(0,`Network error: Could not connect to ${Rp()}`,{originalError:G instanceof Error?G.message:String(G)})}let B;try{B=await X.json()}catch{throw new f(X.status,`Invalid response from server (status ${X.status})`)}if(!X.ok){if(X.status===503&&(B.mode==="read-only"||B.mode==="full")){let G=typeof B.message==="string"?B.message:"NEMAR is in maintenance mode. Please retry shortly.",W=typeof B.eta==="string"?B.eta:null,q=new T3(B.mode,G,W,B.details);throw GX(q),q}throw new f(X.status,B.error||B.message||"Request failed",B.details,typeof B.step==="string"?B.step:void 0)}if(Q){let G=Q.safeParse(B);if(!G.success)throw new f(X.status,`Response for ${D} did not match the expected NEMAR contract`,{issues:G.error.issues});return G.data}return B}var jz="https://nemar-api-dev.sccn-org.workers.dev",Tz;var I4=P(()=>{P4();Oz();WX();K1();Tz=jz.includes("workers.dev")});async function Op(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let Q=$.toString()?`?${$.toString()}`:"";return _(`/admin/users${Q}`,{},!0)}async function jp(D){return _(`/admin/approve/${D}`,{method:"POST"},!0)}async function Tp(D){return _(`/admin/revoke/${D}`,{method:"POST"},!0)}async function wp(D,F){return _(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function wz(D,F){return _(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function Pp(D){return _(`/datasets/${D}/publish`,{method:"POST"},!0)}async function Ip(D){return _(`/admin/datasets/${D}/ci`,{},!0)}async function j6(D){return _(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function Pz(D){return _(`/admin/datasets/${D}/ci/validate`,{method:"POST"},!0)}async function Iz(D){return _(`/admin/datasets/${D}/ci/sync`,{method:"POST"},!0)}async function Sp(D,F){return _(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function X$(D){return _(`/admin/datasets/${D}/doi`,{},!0)}async function Sz(D,F){return _(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function kp(D){return _(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function vp(D,F=!1){return _(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function yp(D){return _("/admin/datasets/bulk-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dataset_ids:D})},!0)}async function xp(D){return _("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function _p(D){return _("/admin/datasets/exemplar",{method:"POST",body:JSON.stringify(D)},!0)}async function fp(D){return _(`/admin/datasets/${D}/exemplar/remint-dois`,{method:"POST"},!0)}async function bp(D){let F=D?`?status=${encodeURIComponent(D)}`:"";return _(`/admin/imports${F}`,{},!0)}async function gp(D){return _(`/admin/imports/${D}/rollback`,{method:"POST"},!0)}async function hp(D){return _(`/admin/imports/${D}/retry`,{method:"POST"},!0)}async function T5(D,F){return _(`/admin/datasets/${D}/reindex`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F??{})},!0)}async function up(D,F){return _("/admin/datasets/reindex/bulk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filter:D,...F??{}})},!0)}async function mp(D){let F=D?.limit??15;return _(`/admin/datasets/hed-sweep?limit=${encodeURIComponent(String(F))}`,{method:"POST",headers:{"Content-Type":"application/json"}},!0)}async function lp(){return _("/admin/datasets/hed-sweep?reset=1",{method:"POST",headers:{"Content-Type":"application/json"}},!0)}async function pp(D){let F=new URLSearchParams;if(D?.prefix)F.set("prefix",D.prefix);if(D?.visibility)F.set("visibility",D.visibility);if(D?.limit)F.set("limit",String(D.limit));let $=F.toString()?`?${F.toString()}`:"";return _(`/admin/fleet/drift${$}`,{},!0)}async function w5(D,F){return _(`/admin/datasets/${D}/enforce`,{method:"POST",body:JSON.stringify({dry_run:F})},!0)}async function dp(D){return _("/admin/datasets/enforce/bulk",{method:"POST",body:JSON.stringify({prefix:D.prefix,visibility:D.visibility,limit:D.limit,dry_run:D.dryRun})},!0)}async function cp(D,F=!1){return _(`/admin/datasets/${D}/revalidate${F?"?force=true":""}`,{method:"POST"},!0)}async function np(D){let F=D?`?user=${encodeURIComponent(D)}`:"";return _(`/admin/email-preferences${F}`,{},!0)}async function ip(D,F){let $=F?`?user=${encodeURIComponent(F)}`:"";return _(`/admin/email-preferences${$}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)},!0)}async function kz(D){return _("/admin/notify",{method:"POST",body:JSON.stringify(D)},!0)}async function ap(){return _("/admin/summary/coverage",{},!0)}async function op(D,F,$){return _("/admin/manifest/dispatch",{method:"POST",body:JSON.stringify({dataset_id:D,version:F,skip_canary:$?.skipCanary??!1})},!0)}var P5=P(()=>{I4()});async function o8(D,F){return _(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function vz(D,F){return _(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function sp(D){return _(`/admin/datasets/${D}/files`,{},!0)}async function rp(D){let F,$=0,Q=[],J=!0;while(J){let Y=await _(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({continuation_token:F})},!0);if($+=Y.locked,Y.failed?.length)Q.push(...Y.failed);if(J=Y.hasMore,F=Y.continuation_token,J&&!F)throw new f(500,"S3 lock paginated response missing continuation_token; aborting to avoid infinite loop")}return{locked:$,failed:Q}}var I5=P(()=>{I4();K1()});async function qX(D){return _(`/datasets/${D}/ci/status`,{},!0)}async function tp(D){return _(`/datasets/${D}/manifest`,{},!0)}async function KX(D,F){return _(`/datasets/${D}/manifest/${F}`,{},!0)}function ep(D){let F=D;if(!F.status)F.status="active";else if(!["active","archived","deleted"].includes(F.status))throw Error(`Invalid dataset status: ${F.status}`);if(!F.visibility)F.visibility="private";else if(!["public","private"].includes(F.visibility))throw Error(`Invalid dataset visibility: ${F.visibility}`);return F}async function S5(D={}){let F=new URLSearchParams;if(D.mine)F.set("mine","true");if(D.search)F.set("search",D.search);if(D.modality)F.set("modality",D.modality);if(D.author)F.set("author",D.author);if(D.task)F.set("task",D.task);if(D.license)F.set("license",D.license);if(D.hasDoi)F.set("has_doi","true");if(D.hasHed)F.set("has_hed","1");if(D.recent)F.set("recent",String(D.recent));if(D.sort)F.set("sort",D.sort);if(D.limit!=null)F.set("limit",String(D.limit));if(D.offset!=null)F.set("offset",String(D.offset));if(D.owner)F.set("owner",D.owner);let $=F.toString()?`?${F.toString()}`:"",Q=await _(`/datasets${$}`,{},D.mine?!0:"optional");return Q.datasets=Q.datasets.map(ep),Q}async function Dd(D){return _(`/datasets/resolve/${D}`,{},"optional")}async function Fd(D,F={}){let $=new URLSearchParams({q:D});if(F.modality)$.set("modality",F.modality);if(F.limit)$.set("limit",String(F.limit));if(F.hasHed)$.set("has_hed","1");return _(`/datasets/search?${$.toString()}`,{},"optional")}async function ID(D){let F=await _(`/datasets/${D}`,{},"optional");return ep(F.dataset)}async function $d(D){return _(`/datasets/${D}/versions`,{},!0)}async function zX(D){return _("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function ZX(D){return _(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function yz(D){return _(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function Qd(D,F){let $=F?`?status=${F}`:"";return _(`/datasets/${D}/access-requests${$}`,{},!0)}async function Jd(D,F){return _(`/datasets/${D}/access-requests/${F}/approve`,{method:"POST"},!0)}async function Yd(D,F){return _(`/datasets/${D}/access-requests/${F}/deny`,{method:"POST"},!0)}async function Xd(D,F){return _(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function Bd(D){return _(`/datasets/${D}/collaborators`,{},!0)}async function Gd(D,F){return _(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}var HX;var w3=P(()=>{I4();HX=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/});var k5;var zd=P(()=>{k5=["ci_check","enrichment_check","s3_public_read","repo_public","tag_protect","doi_create","update_metadata","update_readme","create_tag","create_release","upload_to_zenodo","publish_doi","version_doi","s3_lock","sync_nemar","notify_user"]});async function v5(D){return _(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function Vd(D){return _(`/datasets/${D}/publish/status`,{},!0)}async function Ed(D){return _(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function Ud(D){let F=D?`?status=${D}`:"";return _(`/admin/publish/requests${F}`,{},!0)}async function Ld(D,F){return _(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}function yI0(D,F=[]){if(D){let $=k5.indexOf(D);if($>=0)return $+1}return Math.min(F.length+1,k5.length)}function xI0(D){if(!(D instanceof f))return!1;if(D.statusCode===0)return!0;if(D.statusCode===429)return!0;if(D.statusCode>=500&&D.statusCode<600)return!0;if(D.statusCode===403&&/repository has been locked/i.test(D.message))return!0;return!1}async function y5(D,F=!1,$=!1,Q=!1,J,Y){let G,W,q=0,K=!1,Z,z=F,E=[],U;function M(A,N,O,T){if(!Y)return;Y({step:A,stepIndex:yI0(A,N),stepTotal:k5.length,s3LockLocked:O,s3LockTotal:T,s3LockResumed:A==="s3_lock"&&K?!0:void 0})}for(let A=1;A<=5;A++)try{let N,O=!0;do{if(N=await _(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:O?z:!0,sandbox:$,s3_lock_continuation_token:G,s3_lock_total:W,skip_ci_check:Q})},!0),O=!1,N.step_results)E.push(...N.step_results);if(N.s3_lock_total!==void 0)W=N.s3_lock_total;if(N.s3_lock_batch_count!==void 0)q+=N.s3_lock_batch_count;let T=N.step??N.step_results?.[N.step_results.length-1]?.step;if(T&&(T!==Z||T==="s3_lock"))M(T,N.steps_completed??[],T==="s3_lock"?q:void 0,T==="s3_lock"?W:void 0),Z=T;if(N.hasMore&&N.s3_lock_continuation_token!==void 0)G=N.s3_lock_continuation_token;else break}while(N.hasMore);if(E.length>0)N.step_results=Zd(E);return N}catch(N){if(U=N,A===5||!xI0(N)){if(N instanceof f&&E.length>0)N.stepResults=Zd(E);throw N}let T=N;if(J?.({attempt:A,maxAttempts:5,delayMs:1e4,step:T.step,error:T.message}),await new Promise((C)=>setTimeout(C,1e4)),z=!0,G!==void 0)K=!0}throw U}function Zd(D){let F=new Map;for(let $ of D)F.set($.step,$);return Array.from(F.values())}var B$=P(()=>{zd();I4();K1()});function Nd(D){_z=D}function fz(){return _z}function G$(D){if(_z)process.stderr.write(`${D}
|
|
105
|
+
`)}var Ap=!1;var Oz=P(()=>{t0()});var Cp;var Np=P(()=>{Cp={name:"nemar-cli",version:"0.9.1-PR965.36702c1",description:"CLI for NEMAR (Neuroelectromagnetic Data Archive and Tools Resource) dataset management",type:"module",main:"dist/index.js",bin:{nemar:"dist/index.js"},scripts:{dev:"bun run src/index.ts",build:"bun build src/index.ts --outdir dist --target bun --minify && sed '1s|#!/usr/bin/env node|#!/usr/bin/env bun|' dist/index.js > dist/index.js.tmp && mv dist/index.js.tmp dist/index.js",test:"bun test",lint:"biome check src/","lint:fix":"biome check --fix src/",format:"biome format --write src/",typecheck:"tsc --noEmit",prepublishOnly:"bun run build",prepare:"husky",postinstall:"bun scripts/postinstall-check.mjs",deploy:"wrangler deploy",preview:"wrangler dev"},keywords:["nemar","bids","neuroimaging","eeg","emg","datalad","cli"],author:"NEMAR Team",license:"CC-BY-NC-ND-4.0",repository:{type:"git",url:"git+https://github.com/nemarOrg/nemar-cli.git"},bugs:{url:"https://github.com/nemarOrg/nemar-cli/issues"},homepage:"https://docs.nemar.org",engines:{bun:">=1.0.0"},files:["dist","scripts/postinstall-check.mjs","README.md","LICENSE"],dependencies:{chalk:"^5.3.0",commander:"^12.1.0",conf:"^13.0.1","fuse.js":"^7.1.0",inquirer:"^9.2.15",ora:"^8.0.1",zod:"^3.23.8"},"lint-staged":{"src/**/*.{ts,tsx}":["biome check --fix"],"backend/src/**/*.{ts,tsx}":["biome check --fix"]},devDependencies:{"@biomejs/biome":"1.9.4","@types/bcryptjs":"^3.0.0","@types/bun":"latest","@types/inquirer":"^9.0.7",ajv:"^8.20.0","ajv-formats":"^3.0.1",bcryptjs:"^3.0.3",husky:"^9.1.7","lint-staged":"^16.3.2",typescript:"^5.5.4",wrangler:"^4.70.0",yaml:"^2.8.4"}}});var j3;var WX=P(()=>{Np();j3=Cp.version});function $0(D){if(D instanceof Error)return D.message;return String(D)}var f,T3;var K1=P(()=>{f=class f extends Error{statusCode;details;step;constructor(D,F,$,Q){super(F);this.statusCode=D;this.details=$;this.step=Q;this.name="ApiError"}};T3=class T3 extends f{mode;eta;constructor(D,F,$,Q){super(503,F,Q);this.mode=D;this.eta=$;this.name="MaintenanceError"}}});function Rp(){if(process.env.TEST_API_URL)return process.env.TEST_API_URL;if(Tz)return jz;return KD().apiUrl||jz}async function _(D,F={},$=!1,Q){let J=`${Rp()}${D}`,Y={"Content-Type":"application/json","X-CLI-Version":j3,...F.headers};if($){let G=KD();if(!G.apiKey&&$===!0)throw new f(401,"Not authenticated. Run 'nemar auth login' first.");if(G.apiKey)Y.Authorization=`Bearer ${G.apiKey}`}let X;try{X=await fetch(J,{...F,headers:Y})}catch(G){throw new f(0,`Network error: Could not connect to ${Rp()}`,{originalError:G instanceof Error?G.message:String(G)})}let B;try{B=await X.json()}catch{throw new f(X.status,`Invalid response from server (status ${X.status})`)}if(!X.ok){if(X.status===503&&(B.mode==="read-only"||B.mode==="full")){let G=typeof B.message==="string"?B.message:"NEMAR is in maintenance mode. Please retry shortly.",W=typeof B.eta==="string"?B.eta:null,q=new T3(B.mode,G,W,B.details);throw GX(q),q}throw new f(X.status,B.error||B.message||"Request failed",B.details,typeof B.step==="string"?B.step:void 0)}if(Q){let G=Q.safeParse(B);if(!G.success)throw new f(X.status,`Response for ${D} did not match the expected NEMAR contract`,{issues:G.error.issues});return G.data}return B}var jz="https://api.nemar.org",Tz;var I4=P(()=>{P4();Oz();WX();K1();Tz=jz.includes("workers.dev")});async function Op(D,F){let $=new URLSearchParams;if(D)$.set("status",D);if(F)$.set("role",F);let Q=$.toString()?`?${$.toString()}`:"";return _(`/admin/users${Q}`,{},!0)}async function jp(D){return _(`/admin/approve/${D}`,{method:"POST"},!0)}async function Tp(D){return _(`/admin/revoke/${D}`,{method:"POST"},!0)}async function wp(D,F){return _(`/admin/users/${D}/role`,{method:"POST",body:JSON.stringify({role:F})},!0)}async function wz(D,F){return _(`/admin/datasets/${D}/visibility`,{method:"PATCH",body:JSON.stringify({visibility:F})},!0)}async function Pp(D){return _(`/datasets/${D}/publish`,{method:"POST"},!0)}async function Ip(D){return _(`/admin/datasets/${D}/ci`,{},!0)}async function j6(D){return _(`/admin/datasets/${D}/ci`,{method:"POST"},!0)}async function Pz(D){return _(`/admin/datasets/${D}/ci/validate`,{method:"POST"},!0)}async function Iz(D){return _(`/admin/datasets/${D}/ci/sync`,{method:"POST"},!0)}async function Sp(D,F){return _(`/admin/datasets/${D}/doi/concept`,{method:"POST",body:JSON.stringify(F)},!0)}async function X$(D){return _(`/admin/datasets/${D}/doi`,{},!0)}async function Sz(D,F){return _(`/admin/datasets/${D}/doi/update`,{method:"POST",body:JSON.stringify(F)},!0)}async function kp(D){return _(`/admin/datasets/${D}/reset`,{method:"POST"},!0)}async function vp(D,F=!1){return _(`/admin/datasets/${D}`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({force:F})},!0)}async function yp(D){return _("/admin/datasets/bulk-delete",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({dataset_ids:D})},!0)}async function xp(D){return _("/admin/datasets/import",{method:"POST",body:JSON.stringify(D)},!0)}async function _p(D){return _("/admin/datasets/exemplar",{method:"POST",body:JSON.stringify(D)},!0)}async function fp(D){return _(`/admin/datasets/${D}/exemplar/remint-dois`,{method:"POST"},!0)}async function bp(D){let F=D?`?status=${encodeURIComponent(D)}`:"";return _(`/admin/imports${F}`,{},!0)}async function gp(D){return _(`/admin/imports/${D}/rollback`,{method:"POST"},!0)}async function hp(D){return _(`/admin/imports/${D}/retry`,{method:"POST"},!0)}async function T5(D,F){return _(`/admin/datasets/${D}/reindex`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(F??{})},!0)}async function up(D,F){return _("/admin/datasets/reindex/bulk",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({filter:D,...F??{}})},!0)}async function mp(D){let F=D?.limit??15;return _(`/admin/datasets/hed-sweep?limit=${encodeURIComponent(String(F))}`,{method:"POST",headers:{"Content-Type":"application/json"}},!0)}async function lp(){return _("/admin/datasets/hed-sweep?reset=1",{method:"POST",headers:{"Content-Type":"application/json"}},!0)}async function pp(D){let F=new URLSearchParams;if(D?.prefix)F.set("prefix",D.prefix);if(D?.visibility)F.set("visibility",D.visibility);if(D?.limit)F.set("limit",String(D.limit));let $=F.toString()?`?${F.toString()}`:"";return _(`/admin/fleet/drift${$}`,{},!0)}async function w5(D,F){return _(`/admin/datasets/${D}/enforce`,{method:"POST",body:JSON.stringify({dry_run:F})},!0)}async function dp(D){return _("/admin/datasets/enforce/bulk",{method:"POST",body:JSON.stringify({prefix:D.prefix,visibility:D.visibility,limit:D.limit,dry_run:D.dryRun})},!0)}async function cp(D,F=!1){return _(`/admin/datasets/${D}/revalidate${F?"?force=true":""}`,{method:"POST"},!0)}async function np(D){let F=D?`?user=${encodeURIComponent(D)}`:"";return _(`/admin/email-preferences${F}`,{},!0)}async function ip(D,F){let $=F?`?user=${encodeURIComponent(F)}`:"";return _(`/admin/email-preferences${$}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)},!0)}async function kz(D){return _("/admin/notify",{method:"POST",body:JSON.stringify(D)},!0)}async function ap(){return _("/admin/summary/coverage",{},!0)}async function op(D,F,$){return _("/admin/manifest/dispatch",{method:"POST",body:JSON.stringify({dataset_id:D,version:F,skip_canary:$?.skipCanary??!1})},!0)}var P5=P(()=>{I4()});async function o8(D,F){return _(`/datasets/${D}/upload-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function vz(D,F){return _(`/datasets/${D}/download-credentials`,{method:"POST",body:JSON.stringify({duration_seconds:F})},!0)}async function sp(D){return _(`/admin/datasets/${D}/files`,{},!0)}async function rp(D){let F,$=0,Q=[],J=!0;while(J){let Y=await _(`/admin/datasets/${D}/s3-lock`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({continuation_token:F})},!0);if($+=Y.locked,Y.failed?.length)Q.push(...Y.failed);if(J=Y.hasMore,F=Y.continuation_token,J&&!F)throw new f(500,"S3 lock paginated response missing continuation_token; aborting to avoid infinite loop")}return{locked:$,failed:Q}}var I5=P(()=>{I4();K1()});async function qX(D){return _(`/datasets/${D}/ci/status`,{},!0)}async function tp(D){return _(`/datasets/${D}/manifest`,{},!0)}async function KX(D,F){return _(`/datasets/${D}/manifest/${F}`,{},!0)}function ep(D){let F=D;if(!F.status)F.status="active";else if(!["active","archived","deleted"].includes(F.status))throw Error(`Invalid dataset status: ${F.status}`);if(!F.visibility)F.visibility="private";else if(!["public","private"].includes(F.visibility))throw Error(`Invalid dataset visibility: ${F.visibility}`);return F}async function S5(D={}){let F=new URLSearchParams;if(D.mine)F.set("mine","true");if(D.search)F.set("search",D.search);if(D.modality)F.set("modality",D.modality);if(D.author)F.set("author",D.author);if(D.task)F.set("task",D.task);if(D.license)F.set("license",D.license);if(D.hasDoi)F.set("has_doi","true");if(D.hasHed)F.set("has_hed","1");if(D.recent)F.set("recent",String(D.recent));if(D.sort)F.set("sort",D.sort);if(D.limit!=null)F.set("limit",String(D.limit));if(D.offset!=null)F.set("offset",String(D.offset));if(D.owner)F.set("owner",D.owner);let $=F.toString()?`?${F.toString()}`:"",Q=await _(`/datasets${$}`,{},D.mine?!0:"optional");return Q.datasets=Q.datasets.map(ep),Q}async function Dd(D){return _(`/datasets/resolve/${D}`,{},"optional")}async function Fd(D,F={}){let $=new URLSearchParams({q:D});if(F.modality)$.set("modality",F.modality);if(F.limit)$.set("limit",String(F.limit));if(F.hasHed)$.set("has_hed","1");return _(`/datasets/search?${$.toString()}`,{},"optional")}async function ID(D){let F=await _(`/datasets/${D}`,{},"optional");return ep(F.dataset)}async function $d(D){return _(`/datasets/${D}/versions`,{},!0)}async function zX(D){return _("/datasets",{method:"POST",body:JSON.stringify(D)},!0)}async function ZX(D){return _(`/datasets/${D}/finalize`,{method:"POST"},!0)}async function yz(D){return _(`/datasets/${D}/request-access`,{method:"POST"},!0)}async function Qd(D,F){let $=F?`?status=${F}`:"";return _(`/datasets/${D}/access-requests${$}`,{},!0)}async function Jd(D,F){return _(`/datasets/${D}/access-requests/${F}/approve`,{method:"POST"},!0)}async function Yd(D,F){return _(`/datasets/${D}/access-requests/${F}/deny`,{method:"POST"},!0)}async function Xd(D,F){return _(`/datasets/${D}/invite`,{method:"POST",body:JSON.stringify({username:F})},!0)}async function Bd(D){return _(`/datasets/${D}/collaborators`,{},!0)}async function Gd(D,F){return _(`/admin/datasets/${D}/enrichment`,{method:"POST",body:JSON.stringify(F)},!0)}var HX;var w3=P(()=>{I4();HX=/^\d{4}-\d{4}-\d{4}-\d{3}[\dX]$/});var k5;var zd=P(()=>{k5=["ci_check","enrichment_check","s3_public_read","repo_public","tag_protect","doi_create","update_metadata","update_readme","create_tag","create_release","upload_to_zenodo","publish_doi","version_doi","s3_lock","sync_nemar","notify_user"]});async function v5(D){return _(`/datasets/${D}/publish/request`,{method:"POST"},!0)}async function Vd(D){return _(`/datasets/${D}/publish/status`,{},!0)}async function Ed(D){return _(`/datasets/${D}/publish/resend`,{method:"POST"},!0)}async function Ud(D){let F=D?`?status=${D}`:"";return _(`/admin/publish/requests${F}`,{},!0)}async function Ld(D,F){return _(`/admin/publish/${D}/deny`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:F})},!0)}function yI0(D,F=[]){if(D){let $=k5.indexOf(D);if($>=0)return $+1}return Math.min(F.length+1,k5.length)}function xI0(D){if(!(D instanceof f))return!1;if(D.statusCode===0)return!0;if(D.statusCode===429)return!0;if(D.statusCode>=500&&D.statusCode<600)return!0;if(D.statusCode===403&&/repository has been locked/i.test(D.message))return!0;return!1}async function y5(D,F=!1,$=!1,Q=!1,J,Y){let G,W,q=0,K=!1,Z,z=F,E=[],U;function M(A,N,O,T){if(!Y)return;Y({step:A,stepIndex:yI0(A,N),stepTotal:k5.length,s3LockLocked:O,s3LockTotal:T,s3LockResumed:A==="s3_lock"&&K?!0:void 0})}for(let A=1;A<=5;A++)try{let N,O=!0;do{if(N=await _(`/admin/publish/${D}/approve`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({resume:O?z:!0,sandbox:$,s3_lock_continuation_token:G,s3_lock_total:W,skip_ci_check:Q})},!0),O=!1,N.step_results)E.push(...N.step_results);if(N.s3_lock_total!==void 0)W=N.s3_lock_total;if(N.s3_lock_batch_count!==void 0)q+=N.s3_lock_batch_count;let T=N.step??N.step_results?.[N.step_results.length-1]?.step;if(T&&(T!==Z||T==="s3_lock"))M(T,N.steps_completed??[],T==="s3_lock"?q:void 0,T==="s3_lock"?W:void 0),Z=T;if(N.hasMore&&N.s3_lock_continuation_token!==void 0)G=N.s3_lock_continuation_token;else break}while(N.hasMore);if(E.length>0)N.step_results=Zd(E);return N}catch(N){if(U=N,A===5||!xI0(N)){if(N instanceof f&&E.length>0)N.stepResults=Zd(E);throw N}let T=N;if(J?.({attempt:A,maxAttempts:5,delayMs:1e4,step:T.step,error:T.message}),await new Promise((C)=>setTimeout(C,1e4)),z=!0,G!==void 0)K=!0}throw U}function Zd(D){let F=new Map;for(let $ of D)F.set($.step,$);return Array.from(F.values())}var B$=P(()=>{zd();I4();K1()});function Nd(D){_z=D}function fz(){return _z}function G$(D){if(_z)process.stderr.write(`${D}
|
|
106
106
|
`)}var _z=!1;var Cd={};k6(Cd,{runCommand:()=>w});var{spawn:_I0}=globalThis.Bun;async function w(D,F={}){let $={...process.env,GIT_TERMINAL_PROMPT:"0",...F.env};for(let W of F.unsetEnv??[])delete $[W];let Q=_I0({cmd:D,cwd:F.cwd,stdout:"pipe",stderr:"pipe",env:$}),J=!1,Y;if(F.timeout)Y=setTimeout(()=>{J=!0,Q.kill()},F.timeout);if(fz()){let W=F.cwd?` (cwd=${F.cwd})`:"";G$(H.dim(`$ ${D.join(" ")}${W}`))}let X=await new Response(Q.stdout).text(),B=await new Response(Q.stderr).text(),G=await Q.exited;if(Y)clearTimeout(Y);if(fz()){if(X.trim())G$(H.dim(X.trimEnd()));if(B.trim())G$(H.yellow(B.trimEnd()));G$(H.dim(`(exit ${G})`))}if(J)return{stdout:X,stderr:B||`Command timed out after ${Math.round(F.timeout/1000)}s`,exitCode:G??1};return{stdout:X,stderr:B,exitCode:G}}var z1=P(()=>{t0()});async function fI0(){try{let{exitCode:D,stderr:F}=await w(["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 W$(){try{let{stdout:D,exitCode:F,stderr:$}=await w(["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 VX(D){try{let{stdout:F,exitCode:$,stderr:Q}=await w(["gh","api","user","--jq",".login"]);if($!==0){if(Q.includes("not logged in")||Q.includes("auth login"))return{authenticated:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};return{authenticated:!1,error:`gh CLI error: ${Q.trim()||"unknown error"}`}}let J=F.trim();if(!J)return{authenticated:!1,error:"gh CLI returned empty username"};if(D){let Y=J.toLowerCase()===D.toLowerCase();return{authenticated:!0,username:J,matches:Y,error:Y?void 0:`gh CLI authenticated as '${J}', expected '${D}'`}}return{authenticated:!0,username:J}}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 EX(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:Q}=await w(["gh","api","/user/repository_invitations"]);if($!==0){if(Q.includes("not logged in")||Q.includes("auth login"))return{accepted:!1,error:"gh CLI not authenticated. Run 'gh auth login' to authenticate."};if(Q.includes("API rate limit")||Q.includes("403"))return{accepted:!1,error:"GitHub API rate limit exceeded. Please try again in a few minutes."};if(Q.includes("ENOENT")||Q.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: ${Q.trim()||"unknown error"}`}}let J=null;try{J=JSON.parse(F||"[]").find((W)=>W.repository.full_name===D)?.id??null}catch(B){let G=B instanceof Error?B.message:String(B);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(!J){let{exitCode:B}=await w(["gh","api",`/repos/${D}`,"--silent"]);if(B===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:Y,stderr:X}=await w(["gh","api","--method","PATCH",`/user/repository_invitations/${J}`]);if(Y!==0)return{accepted:!1,error:`Failed to accept invitation: ${X.trim()||"unknown error"}`};return{accepted:!0}}async function s8(D,F,$="origin"){let Q=F;if(process.env.GH_TOKEN&&F.startsWith("git@github.com:")){let J=process.env.GH_TOKEN.trim();if(!J||/\s/.test(J))return{success:!1,error:"GH_TOKEN environment variable is set but appears malformed (empty or contains whitespace)"};Q=`https://github.com/${F.replace("git@github.com:","")}`,await w(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${J}'`],{cwd:D})}else if(F.startsWith("git@github.com:")){let J=F.replace("git@github.com:",""),Y=await W$();if(Y.token)Q=`https://github.com/${J}`,await w(["git","config","credential.https://github.com.helper",`!printf 'username=x-access-token\\npassword=${Y.token}'`],{cwd:D});else{let X=await fI0();if(X.works)Q=F;else return{success:!1,error:`GitHub authentication not configured.
|
|
107
107
|
|
|
108
108
|
gh CLI failed: ${Y.error||"could not get token"}
|
|
@@ -408,7 +408,7 @@ Import Jobs (${Q.total})
|
|
|
408
408
|
${G} of ${B.length} fleet entries failed`)),process.exit(1);return}if(!D)console.error(H.red("An xx-id argument is required unless --all is passed")),process.exit(1);if(!nS0.test(D))console.error(H.red(`Invalid exemplar id "${D}". Expected xx099900-xx099999.`)),process.exit(1);let X=F.source;if(!X)try{X=Q(J).find((G)=>G.xx_id===D)?.source_id}catch(B){console.error(H.red(`Failed to load fleet file: ${$0(B)}`)),process.exit(1)}if(!X)console.error(H.red(`No source dataset for ${D}. Pass --source <nm/on id> or add it to the fleet file.`)),process.exit(1);if(!iS0.test(X))console.error(H.red(`Invalid source id "${X}". Expected an nm/on dataset id.`)),process.exit(1);try{await $({xxId:D,sourceId:X,...Y})}catch(B){console.error(H.red(`
|
|
409
409
|
Exemplar clone failed: ${$0(B)}`)),process.exit(1)}});vX.command("status").description("Show which fleet entries have been cloned and their current state").option("--fleet-file <path>","Path to the fleet JSON (default: scripts/exemplar-fleet.json)").action(async(D)=>{if(!T0())return;let{loadExemplarFleet:F}=await Promise.resolve().then(() => (XZ(),YZ)),$=D.fleetFile||dc(),Q;try{Q=F($)}catch(J){console.error(H.red(`Failed to load fleet file: ${$0(J)}`)),process.exit(1)}console.log(H.bold(`
|
|
410
410
|
Exemplar Fleet (${Q.length})
|
|
411
|
-
`));for(let J of Q)try{let Y=await ID(J.xx_id);console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.green(Y.visibility)} doi=${Y.concept_doi??"none"}`)}catch(Y){if(Y instanceof f&&Y.statusCode===404)console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.dim("not created")}`);else console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.red(`status check failed (${$0(Y)})`)}`)}});vX.command("remint-dois").description("Re-mint an exemplar's sandbox concept DOI (idempotent)").argument("<xx-id>","Exemplar dataset id (e.g., xx099900)").action(async(D)=>{if(!T0())return;let F=R(`Re-minting DOIs for ${D}...`).start();try{let $=await fp(D);F.succeed(`Re-minted ${$.concept_doi} (status: ${$.status})`);for(let Q of $.warnings??[])console.log(H.yellow(` ${Q}`))}catch($){o0($,F,"Failed to re-mint exemplar DOIs",{400:"Not an exemplar dataset",403:"Exemplar DOI re-mint is disabled in production",404:"Dataset not found"}),process.exit(1)}});d0.addCommand(vX);function gc(D,F){let $=D.enrichment.status,Q=$==="ok"?H.green("enrich:ok"):$==="failed"?H.red("enrich:failed"):H.dim("enrich:skipped"),J=D.sync.status,Y=J==="ok"?H.green("sync:ok"):J==="failed"?H.red("sync:failed"):H.dim("sync:skipped"),X=D.sync.metadata_columns_written===!0?H.green("cols:written"):D.sync.metadata_columns_error?H.red("cols:failed"):"",B=F?.showRef&&D.enrichment.ref?H.dim(`@${D.enrichment.ref}`):"";if(console.log(` ${D.dataset_id.padEnd(12)} ${Q}${B} ${Y} ${X}`),D.enrichment.error)console.log(H.red(` enrichment: ${D.enrichment.error}`));if(D.sync.metadata_columns_error)console.log(H.red(` metadata columns: ${D.sync.metadata_columns_error}`))}var yX=new y0("fleet").description("Governance drift reporting and enforcement (epic #713)");yX.command("drift").description("Report dataset repos that are off the governance spec").option("--prefix <prefix>","Filter datasets by id prefix (e.g. nm, on)").option("--visibility <vis>","Filter by visibility: public or private").option("--limit <n>","Max repos to scan (default 25, max 50)","25").option("--json","Output raw JSON").action(async(D)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);if(D.visibility&&!["public","private"].includes(D.visibility))console.log(H.red("Error: --visibility must be public or private")),process.exit(1);let F=R("Scanning fleet for drift...").start();try{let $=await pp({prefix:D.prefix,visibility:D.visibility,limit:Number.parseInt(D.limit,10)||25});if(F.stop(),D.json){console.log(JSON.stringify($,null,2));return}console.log(),console.log(H.bold(`Fleet drift (scanned ${$.scanned}):`));let Q=["PUBLIC_UNPROTECTED","RED_REQUIRED_CHECK","CONTEXT_NAME_MISMATCH","MISSING_REQUIRED_WORKFLOW","PRIVATE_WITH_STRAY_READ","DEFAULT_BRANCH_OUTLIER","DEPRECATED_WORKFLOW_PRESENT","COMPLIANT"];for(let J of Q){let Y=$.buckets[J];if(!Y||Y.length===0)continue;let X=J==="COMPLIANT"?H.green:H.yellow;if(console.log(` ${X(J.padEnd(28))} ${Y.length}`),J!=="COMPLIANT"){let B=Y.slice(0,20).join(", ");console.log(H.dim(` ${B}${Y.length>20?` ... +${Y.length-20}`:""}`))}}console.log()}catch($){if($ instanceof f)F.fail($.message);else F.fail("Failed to scan fleet"),console.log(H.red(` ${$.message}`));process.exit(1)}});yX.command("enforce").description("Bring dataset repos to the governance spec (single or --all). Dry-run by default.").argument("[dataset-id]","Dataset to enforce (omit when using --all)").option("--all","Bulk enforce across a filtered set (owner-only)").option("--apply","Actually apply changes (default is a dry run)").option("--prefix <prefix>","Bulk: filter by id prefix").option("--visibility <vis>","Bulk: filter by visibility (public|private)").option("--limit <n>","Bulk: max repos (default 25, max 50)","25").option("--json","Output raw JSON").action(async(D,F)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);if(!D&&!F.all)console.log(H.red("Error: provide a dataset-id or use --all")),process.exit(1);if(D&&F.all)console.log(H.red("Error: provide a dataset-id OR --all, not both")),process.exit(1);let $=!F.apply,Q=$?"[dry-run] ":"",J=R(`${Q}Enforcing spec...`).start();try{if(D){let Y=await w5(D,$);if(J.succeed(`${Q}${D} (${Y.result.visibility})`),F.json){console.log(JSON.stringify(Y,null,2));return}for(let[X,B]of Object.entries(Y.result.steps)){let G=B.status==="ok"?H.green:B.status==="skipped"?H.yellow:H.red;console.log(` ${G(B.status.padEnd(8))} ${X}${B.detail?H.dim(` (${B.detail})`):""}`)}}else{let Y=await dp({prefix:F.prefix,visibility:F.visibility,limit:Number.parseInt(F.limit,10)||25,dryRun:$});if(J.succeed(`${Q}processed ${Y.count} repo(s)`),F.json){console.log(JSON.stringify(Y,null,2));return}for(let X of Y.results){if(X.error){console.log(` ${H.red("error")} ${X.dataset_id}: ${X.error}`);continue}let B=Object.entries(X.steps??{}).filter(([,W])=>W.status!=="ok").map(([W,q])=>`${W}=${q.status}`),G=B.length?H.yellow("drift"):H.green("ok");console.log(` ${G} ${X.dataset_id}${B.length?H.dim(` (${B.join(", ")})`):""}`)}}}catch(Y){if(Y instanceof f)J.fail(Y.message);else J.fail("Enforcement failed"),console.log(H.red(` ${Y.message}`));process.exit(1)}});var IX=(D)=>new Promise((F)=>setTimeout(F,D));async function aS0(D,F,$){let Q=Date.now()+F,J="no probe completed";while(Date.now()<Q){try{let Y=(await w5(D,!0)).result?.steps?.branch_ruleset;if(Y?.status==="ok")return{status:"green"};if(Y?.detail)J=Y.detail}catch(Y){J=Y instanceof f?Y.message:String(Y)}await IX($)}return{status:"timeout",detail:J}}yX.command("revalidate").description("Re-run BIDS validation on main HEAD for unprotected datasets, then optionally enforce (epic #713)").argument("[dataset-id]","Dataset to revalidate (omit when using --all/--prefix)").option("--all","Revalidate across unprotected public datasets").option("--prefix <prefix>","Filter by id prefix (with --all), e.g. nm000 / on").option("--enforce","After a dataset goes green, run enforce (dry-run unless --apply)").option("--apply","With --enforce, actually apply the ruleset (default is a dry run)").option("--force","Override the live-dataset guard (nm000103-107)").option("--limit <n>","Max repos for --all/--prefix (default 25)","25").option("--json","Output raw JSON").action(async(D,F)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);let $=Boolean(F.all||!D&&F.prefix);if(!D&&!$)console.log(H.red("Error: provide a dataset-id, or --all/--prefix")),process.exit(1);let Q;if(D)Q=[D];else{let q=R("Fetching dataset list...").start();try{let K=[];for(let z=0;;z+=200){let E=await S5({limit:200,offset:z});if(K.push(...E.datasets),E.datasets.length<200||K.length>=E.total_count)break}let Z=Number.parseInt(F.limit,10)||25;Q=Ad(K,{prefix:F.prefix}).slice(0,Z),q.succeed(`${Q.length} target(s) (from ${K.length} datasets)`)}catch(K){o0(K,q,"Failed to fetch datasets");return}}let J=Boolean(F.enforce),Y=Boolean(F.apply),X={revalidated:0,green:0,locked:0,stillRed:0,skipped:0,errors:0},B=[],G=[],W=0;for(let q of Q){if(W++,xz.has(q)&&!F.force){console.log(` [${W}/${Q.length}] ${H.dim(`${q}: skip (live; use --force)`)}`),X.skipped++;continue}try{let K=await cp(q,F.force);if(B.push(K),K.skipped)console.log(` [${W}/${Q.length}] ${q}: ${H.dim(`skipped (${K.skipped})`)}`),X.skipped++;else X.revalidated++,G.push(q),console.log(` [${W}/${Q.length}] ${q}: ${H.cyan(`revalidating (${K.triggered_by})`)}`)}catch(K){X.errors++,console.log(` [${W}/${Q.length}] ${q}: ${H.red(K instanceof f?K.message:String(K))}`)}if(W<Q.length)await IX(4000)}if(J&&G.length>0)if(D){let q=G[0],K=R(`Waiting for ${q} validation to land...`).start(),Z=await aS0(q,300000,15000);if(Z.status!=="green")K.warn(`${q}: not green within 5m \u2014 last: ${Z.detail} (real errors or still running)`),X.stillRed++;else if(X.green++,!Y)K.succeed(`${q}: green (would lock; pass --apply)`);else{let z=await w5(q,!1);if(z.result?.steps?.branch_ruleset?.status==="ok")K.succeed(`${q}: LOCKED`),X.locked++;else K.warn(`${q}: enforce ${z.result?.steps?.branch_ruleset?.status??"?"}`)}}else{let q=R("Waiting ~90s for validations to drain...").start();await IX(90000),q.text="Enforcing green datasets...";for(let K of G)try{if((await w5(K,!0)).result?.steps?.branch_ruleset?.status!=="ok"){X.stillRed++;continue}if(X.green++,Y){if((await w5(K,!1)).result?.steps?.branch_ruleset?.status==="ok")X.locked++}}catch{X.errors++}q.stop()}if(F.json){console.log(JSON.stringify({tally:X,raw:B},null,2));return}console.log(),console.log(H.cyan(`Done: revalidated=${X.revalidated} green=${X.green} locked=${X.locked} still-red=${X.stillRed} skipped=${X.skipped} errors=${X.errors}`))});d0.addCommand(yX);var cc=new y0("reindex").description("Refresh dataset metadata: enrichment + nemar.org sync + first-class D1 columns");cc.argument("[dataset-id]","Dataset ID to reindex (e.g., nm000103)").option("--all","Reindex every dataset with a GitHub repo").option("--missing-metadata","Reindex only datasets with NULL metadata columns").option("--stale","Reindex only datasets whose metadata is older than --older-than days").option("--older-than <days>","Threshold in days. Default 30 for --stale, 1 (24h) for --missing-metadata recency guard.").option("--skip-enrichment","Skip the LLM enrichment step").option("--skip-sync","Skip the nemar.org sync + D1 column refresh step").option("--ref <ref>","Ref to enrich from (single-dataset only; default: main)").option("--dry-run","List matched datasets without firing the reindex (bulk only)").action(async(D,F)=>{if(!T0())return;let $=[F.all,F.missingMetadata,F.stale].filter(Boolean).length;if(D&&$>0)console.error(H.red("Provide either a dataset-id OR a bulk flag (--all/--missing-metadata/--stale), not both")),process.exit(1);if(!D&&$===0)console.error(H.red("Provide a dataset-id or one of: --all, --missing-metadata, --stale")),process.exit(1);if($>1)console.error(H.red("Use only one of --all, --missing-metadata, --stale")),process.exit(1);if(F.skipEnrichment&&F.skipSync)console.error(H.red("--skip-enrichment and --skip-sync cannot both be set")),process.exit(1);if(D){let K=R(`Reindexing ${D}...`).start();try{let Z={skip_enrichment:F.skipEnrichment===!0,skip_sync:F.skipSync===!0,...F.ref&&{ref:F.ref}},z=await T5(D,Z),E=z.enrichment.status!=="failed"&&z.sync.status!=="failed";if(E)K.succeed(`${D} reindexed`);else K.warn(`${D} reindexed with errors`);if(console.log(),gc(z,{showRef:!0}),!E)process.exit(1)}catch(Z){K.fail(`Failed to reindex ${D}`),console.error(H.red($0(Z))),process.exit(1)}return}let Q=F.all?"all":F.missingMetadata?"missing-metadata":"stale",J={skip_enrichment:F.skipEnrichment===!0,skip_sync:F.skipSync===!0,dry_run:F.dryRun===!0};if(F.olderThan!==void 0){let K=Number.parseInt(F.olderThan,10);if(!Number.isFinite(K)||K<0)console.error(H.red(`Invalid --older-than: "${F.olderThan}"`)),process.exit(1);J.older_than_days=K}else if(Q==="missing-metadata")J.older_than_days=1;else if(Q==="stale")J.older_than_days=30;let Y=F.dryRun?`Listing ${Q} datasets...`:`Reindexing ${Q} datasets...`,X=R(Y).start(),B;try{B=await up(Q,J)}catch(K){X.fail("Bulk reindex failed"),console.error(H.red($0(K))),process.exit(1)}if(B.dry_run){if(X.succeed(`${B.total} datasets match filter=${Q} (dry run, no changes)`),B.datasets)for(let K of B.datasets)console.log(H.dim(` - ${K}`));return}let G=B.results??[],W=G.filter((K)=>K.enrichment.status!=="failed"&&K.sync.status!=="failed").length,q=G.length-W;if(q===0)X.succeed(`${G.length}/${G.length} datasets reindexed in ${(B.elapsed_ms/1000).toFixed(1)}s`);else X.warn(`${W}/${G.length} ok; ${q} failed in ${(B.elapsed_ms/1000).toFixed(1)}s`);console.log();for(let K of G)gc(K);if(q>0)process.exit(1)});d0.addCommand(cc);var nc=new y0("hed-sweep").description("Backfill HED detection (has_hed / hed_version) for existing datasets (#869)");nc.option("--limit <n>","Datasets per batch (server clamps to [1,30])","15").option("--reset","Clear every probed HED row so a corrected detector can re-sweep").option("--verbose","Print per-batch progress").option("--json","Output raw JSON instead of the human summary").action(async(D)=>{if(!T0())return;if(D.reset){let B=R("Resetting HED sweep state...").start();try{let G=await lp();if(B.succeed(`Cleared ${G.reset} probed HED row(s); eligible datasets are candidates again`),D.json)console.log(JSON.stringify(G,null,2))}catch(G){B.fail("Reset failed"),console.error(H.red($0(G))),process.exit(1)}return}let F=Number.parseInt(D.limit??"15",10)||15,$={processed:0,withHed:0,withoutHed:0,unknown:0,errors:0},Q=R("Sweeping datasets for HED...").start(),J=0,Y=null,X=null;try{let B;do{if(B=await mp({limit:F}),J++,$.processed+=B.processed,$.withHed+=B.withHed,$.withoutHed+=B.withoutHed,$.unknown+=B.unknown,$.errors+=B.errors.length,Y=B.remaining,D.verbose){Q.stop(),console.log(` [batch ${J}] processed=${B.processed} hed=${B.withHed} no-hed=${B.withoutHed} unknown=${B.unknown} errors=${B.errors.length} remaining=${Y??"?"}`);for(let G of B.errors)console.log(` ${H.red(G.dataset_id)}: ${G.error}`);Q.start("Sweeping datasets for HED...")}else Q.text=`Sweeping datasets for HED... ${$.processed} processed, ${Y??"?"} remaining`;if(Y!=null&&X!=null&&Y>=X){Q.warn(`No progress (remaining stuck at ${Y}); stopping - see errors`);break}if(X=Y,(Y??0)>0)await IX(1000)}while((Y??0)>0);Q.stop()}catch(B){Q.fail("HED sweep failed"),console.error(H.red($0(B))),process.exit(1)}if(D.json)console.log(JSON.stringify({...$,batches:J,remaining:Y},null,2));else{if(console.log(),Y===null)console.log(H.yellow("Warning: backend returned a null remaining count; the sweep may be incomplete - check server logs."));console.log(H.cyan(`Done in ${J} batch(es): processed=${$.processed} hed=${$.withHed} no-hed=${$.withoutHed} unknown=${$.unknown} errors=${$.errors} remaining=${Y??"unknown"}`))}if($.errors>0||Y===null)process.exit(1)});d0.addCommand(nc);var WZ=new y0("email-preferences").description("Manage email notification preferences");WZ.command("show").description("Show email notification preferences").option("--user <username>","(owner only) show another user's preferences").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let F=R("Fetching email preferences...").start();try{let $=await np(D.user),Q=$.username?`${$.username}'s`:"Your";F.succeed(`${Q} email notification preferences:`),console.log();let J=[{key:"user_approval",label:"User approval notifications"},{key:"publication_request",label:"Publication request notifications"},{key:"announcements",label:"Announcement emails"}];for(let Y of J){let B=$[Y.key]?H.green("enabled"):H.dim("disabled");console.log(` ${Y.label.padEnd(40)} ${B}`)}console.log(),console.log(H.dim(" Use 'nemar admin email-preferences update' to change settings."))}catch($){F.fail("Failed to fetch preferences"),console.error(H.red($0($)))}});WZ.command("update").description("Update email notification preferences").option("--user-approval <bool>","Enable/disable user approval notifications").option("--publication-request <bool>","Enable/disable publication request notifications").option("--announcements <bool>","Enable/disable announcement emails").option("--all <bool>","Enable/disable all notifications").option("--user <username>","(owner only) update another user's preferences").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);function F(J){if(J===void 0)return;let Y=J.toLowerCase();if(Y==="true"||Y==="1"||Y==="on"||Y==="yes")return!0;if(Y==="false"||Y==="0"||Y==="off"||Y==="no")return!1;console.error(H.red(`Invalid boolean value: "${J}". Use true/false, on/off, yes/no.`)),process.exit(1)}let $={};if(D.all!==void 0){let J=F(D.all);$.user_approval=J,$.publication_request=J,$.announcements=J}else{let J=F(D.userApproval),Y=F(D.publicationRequest),X=F(D.announcements);if(J===void 0&&Y===void 0&&X===void 0)console.error(H.red("No preferences specified.")),console.log(" --user-approval <bool> User approval notifications"),console.log(" --publication-request <bool> Publication request notifications"),console.log(" --announcements <bool> Announcement emails"),console.log(" --all <bool> All notifications"),process.exit(1);if(J!==void 0)$.user_approval=J;if(Y!==void 0)$.publication_request=Y;if(X!==void 0)$.announcements=X}let Q=R("Updating email preferences...").start();try{let J=await ip($,D.user),Y=J.username?`${J.username}'s`:"Your";Q.succeed(`${Y} email preferences updated:`),console.log(),console.log(` User approval: ${J.user_approval?H.green("enabled"):H.dim("disabled")}`),console.log(` Publication request: ${J.publication_request?H.green("enabled"):H.dim("disabled")}`),console.log(` Announcements: ${J.announcements?H.green("enabled"):H.dim("disabled")}`)}catch(J){Q.fail("Failed to update preferences"),console.error(H.red($0(J)))}});d0.addCommand(WZ);var xX=new y0("notice").description("Manage system notices displayed to CLI users");xX.command("list").description("List all notices (including expired)").action(async()=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let D=R("Fetching notices...").start();try{let{notices:F}=await Hd();if(F.length===0){D.succeed("No notices found.");return}D.succeed(`${F.length} notice(s):`),console.log();for(let $ of F){let J={critical:H.red.bold,warning:H.yellow,info:H.blue}[$.level]||H.white,Y=$.expires_at&&new Date($.expires_at)<new Date?H.dim(" (expired)"):"";if(console.log(` ${H.dim(`#${$.id}`)} ${J(`[${$.level.toUpperCase()}]`)} ${H.dim(`scope:${$.scope}`)}${Y}`),console.log(` ${$.message}`),console.log(` ${H.dim(`Created: ${$.created_at}`)}`),$.expires_at)console.log(` ${H.dim(`Expires: ${$.expires_at}`)}`);console.log()}}catch(F){o0(F,D,"Failed to fetch notices")}});xX.command("set").description("Create a new system notice").requiredOption("-m, --message <text>","Notice message text").option("-l, --level <level>","Notice level: info, warning, critical","info").option("-s, --scope <scope>","Target scope: all, admins, members","all").option("-e, --expires <datetime>","Expiry datetime (ISO 8601)").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);if(!["info","warning","critical"].includes(D.level))console.error(H.red(`Invalid level: ${D.level}. Use info, warning, or critical.`)),process.exit(1);if(!["all","admins","members"].includes(D.scope))console.error(H.red(`Invalid scope: ${D.scope}. Use all, admins, or members.`)),process.exit(1);let F=R("Creating notice...").start();try{let $=await qd({message:D.message,level:D.level,scope:D.scope,expires_at:D.expires});if(F.succeed(`Notice created (ID: ${$.id})`),console.log(` Level: ${$.level}`),console.log(` Scope: ${$.scope}`),console.log(` Message: ${$.message}`),$.expires_at)console.log(` Expires: ${$.expires_at}`)}catch($){o0($,F,"Failed to create notice")}});xX.command("clear <id>").description("Delete a notice by ID").option(k0,v0).option(p0,g0).action(async(D,F)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let $=Number.parseInt(D,10);if(Number.isNaN($))console.error(H.red("Invalid notice ID")),process.exit(1);if(!await x0(`Delete notice #${$}?`,F,!1))return;let J=R("Deleting notice...").start();try{await Kd($),J.succeed(`Notice #${$} deleted`)}catch(Y){o0(Y,J,"Failed to delete notice")}});d0.addCommand(xX);d0.command("notify").description("Send an email to a group or a single user").option("--to <group>","Recipient group: all, admins, members").option("--user <username>","Send to a single user by username").requiredOption("--subject <text>","Email subject line").option("--body <text>","Email body (markdown)").option("--body-file <path>","Read email body from file (markdown)").option("--dry-run","Preview recipients without sending").option(k0,v0).option(p0,g0).action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);if(D.to&&D.user)console.error(H.red("--to and --user are mutually exclusive. Provide exactly one.")),process.exit(1);if(!D.to&&!D.user)console.error(H.red("Provide either --to <group> or --user <username>.")),process.exit(1);if(D.to&&!["all","admins","members"].includes(D.to))console.error(H.red(`Invalid group: ${D.to}. Use all, admins, or members.`)),process.exit(1);let F;if(D.bodyFile){if(!uc(D.bodyFile))console.error(H.red(`File not found: ${D.bodyFile}`)),process.exit(1);F=dS0(D.bodyFile,"utf-8")}else if(D.body)F=D.body;else console.error(H.red("Email body required. Use --body or --body-file.")),process.exit(1);let $=D.user?`user:${D.user}`:D.to,Q=D.user?{user:D.user,subject:D.subject,body:F}:{to:D.to,subject:D.subject,body:F};if(D.dryRun){let B=R("Checking recipients...").start();try{let G=await kz({...Q,dry_run:!0});if("dry_run"in G){B.succeed(`Dry run: ${G.recipient_count} recipient(s) for "${G.recipient_group}"`),console.log();for(let W of G.recipients)console.log(` ${W}`)}}catch(G){o0(G,B,"Failed to check recipients")}return}console.log(H.bold("Email preview:")),console.log(` To: ${H.cyan($)}`),console.log(` Subject: ${D.subject}`),console.log(` Body: ${F.length>100?`${F.substring(0,100)}...`:F}`),console.log();let J=D.user?`Send this email to ${D.user}?`:"Send this broadcast email?";if(!await x0(J,D,!1))return;let X=R(D.user?`Sending to ${D.user}...`:"Sending broadcast...").start();try{let B=await kz(Q);if("broadcast_id"in B)if(B.failure_count>0){X.warn(`Email send: ${B.recipient_count} delivered, ${B.failure_count} failed`);for(let G of B.failed_recipients)console.log(H.red(` Failed: ${G}`))}else{let G=D.user?`Email sent to ${D.user}`:`Broadcast sent to ${B.recipient_count} recipient(s)`;X.succeed(`${G} (ID: ${B.broadcast_id})`)}}catch(B){o0(B,X,"Failed to send email")}});var oS0=1500;function sS0(D){switch(D.kind){case"ok":return H.green(`ok ${D.schema_version}`);case"stale":return H.yellow(`stale ${D.schema_version}`);case"missing":return H.red("missing");case"error":return H.red(`error ${D.status||"?"}: ${D.message}`)}}function rS0(D){return D.kind==="stale"||D.kind==="missing"}function tS0(D){let $=D.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${$}$`)}var ic=new y0("summary").description("summary.json coverage across published dataset versions");ic.command("check").description("Report which (dataset_id, version) pairs have stale or missing summary.json").option("--fix","Dispatch generate-manifest for every stale/missing version").option("--id <id>","Limit to a single dataset_id (exact match)").option("--match <glob>","Limit to dataset_ids matching a glob pattern: `*` matches any run of chars, `?` matches one char. Examples: `on*`, `nm00010?`, `*99999`. Can be combined with --id (id wins if both passed).").option("--only-stale","Print only rows that are not ok (suppresses ok rows)").option("--json","Emit the full report as JSON instead of a table").option(k0,v0).option(p0,g0).action(async(D)=>{if(!T0())return;let F=R("Building coverage report...").start(),$;try{$=await ap()}catch(Z){o0(Z,F,"Failed to fetch coverage report");return}F.succeed(`Coverage: target=schema ${$.target_schema}, versions=${$.totals.versions}`);let Q=$.versions,J=null;if(D.id){if(Q=Q.filter((Z)=>Z.dataset_id===D.id),J=`dataset_id=${D.id}`,Q.length===0){console.log(H.yellow(`No rows for ${J}`));return}}else if(D.match){let Z=tS0(D.match);if(Q=Q.filter((z)=>Z.test(z.dataset_id)),J=`--match ${D.match}`,Q.length===0){console.log(H.yellow(`No rows match ${J}`));return}console.log(H.dim(`Scoped to ${Q.length} version(s) matching ${D.match}`))}if(D.json){console.log(JSON.stringify(J?{...$,versions:Q,totals:hc(Q)}:$,null,2));return}let Y=D.onlyStale?Q.filter((Z)=>Z.state.kind!=="ok"):Q;if(Y.length===0)console.log(H.green("All versions at target schema \u2014 no drift."));else{let Z=Math.max(...Y.map((E)=>E.dataset_id.length),10),z=Math.max(...Y.map((E)=>E.version.length),7);for(let E of Y)console.log(` ${E.dataset_id.padEnd(Z)} ${E.version.padEnd(z)} ${sS0(E.state)}`)}let X=J?hc(Q):$.totals;if(console.log(),console.log(` Total: ${X.versions} ${H.green(`ok=${X.ok}`)} ${H.yellow(`stale=${X.stale}`)} ${H.red(`missing=${X.missing}`)} ${H.red(`error=${X.error}`)}`),!D.fix){if(X.stale+X.missing>0)console.log(H.dim(`
|
|
411
|
+
`));for(let J of Q)try{let Y=await ID(J.xx_id);console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.green(Y.visibility)} doi=${Y.concept_doi??"none"}`)}catch(Y){if(Y instanceof f&&Y.statusCode===404)console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.dim("not created")}`);else console.log(` ${J.xx_id.padEnd(10)} ${J.modality.padEnd(6)} <- ${J.source_id.padEnd(10)} ${H.red(`status check failed (${$0(Y)})`)}`)}});vX.command("remint-dois").description("Re-mint an exemplar's sandbox concept DOI (idempotent)").argument("<xx-id>","Exemplar dataset id (e.g., xx099900)").action(async(D)=>{if(!T0())return;let F=R(`Re-minting DOIs for ${D}...`).start();try{let $=await fp(D);F.succeed(`Re-minted ${$.concept_doi} (status: ${$.status})`);for(let Q of $.warnings??[])console.log(H.yellow(` ${Q}`))}catch($){o0($,F,"Failed to re-mint exemplar DOIs",{400:"Not an exemplar dataset",403:"Exemplar DOI re-mint is disabled in production",404:"Dataset not found"}),process.exit(1)}});d0.addCommand(vX);function gc(D,F){let $=D.enrichment.status,Q=$==="ok"?H.green("enrich:ok"):$==="failed"?H.red("enrich:failed"):H.dim("enrich:skipped"),J=D.sync.status,Y=J==="ok"?H.green("sync:ok"):J==="failed"?H.red("sync:failed"):H.dim("sync:skipped"),X=D.sync.metadata_columns_written===!0?H.green("cols:written"):D.sync.metadata_columns_error?H.red("cols:failed"):"",B=F?.showRef&&D.enrichment.ref?H.dim(`@${D.enrichment.ref}`):"";if(console.log(` ${D.dataset_id.padEnd(12)} ${Q}${B} ${Y} ${X}`),D.enrichment.error)console.log(H.red(` enrichment: ${D.enrichment.error}`));if(D.sync.metadata_columns_error)console.log(H.red(` metadata columns: ${D.sync.metadata_columns_error}`))}var yX=new y0("fleet").description("Governance drift reporting and enforcement (epic #713)");yX.command("drift").description("Report dataset repos that are off the governance spec").option("--prefix <prefix>","Filter datasets by id prefix (e.g. nm, on)").option("--visibility <vis>","Filter by visibility: public or private").option("--limit <n>","Max repos to scan (default 25, max 50)","25").option("--json","Output raw JSON").action(async(D)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);if(D.visibility&&!["public","private"].includes(D.visibility))console.log(H.red("Error: --visibility must be public or private")),process.exit(1);let F=R("Scanning fleet for drift...").start();try{let $=await pp({prefix:D.prefix,visibility:D.visibility,limit:Number.parseInt(D.limit,10)||25});if(F.stop(),D.json){console.log(JSON.stringify($,null,2));return}console.log(),console.log(H.bold(`Fleet drift (scanned ${$.scanned}):`));let Q=["PUBLIC_UNPROTECTED","RED_REQUIRED_CHECK","CONTEXT_NAME_MISMATCH","MISSING_REQUIRED_WORKFLOW","PRIVATE_WITH_STRAY_READ","DEFAULT_BRANCH_OUTLIER","DEPRECATED_WORKFLOW_PRESENT","COMPLIANT"];for(let J of Q){let Y=$.buckets[J];if(!Y||Y.length===0)continue;let X=J==="COMPLIANT"?H.green:H.yellow;if(console.log(` ${X(J.padEnd(28))} ${Y.length}`),J!=="COMPLIANT"){let B=Y.slice(0,20).join(", ");console.log(H.dim(` ${B}${Y.length>20?` ... +${Y.length-20}`:""}`))}}console.log()}catch($){if($ instanceof f)F.fail($.message);else F.fail("Failed to scan fleet"),console.log(H.red(` ${$.message}`));process.exit(1)}});yX.command("enforce").description("Bring dataset repos to the governance spec (single or --all). Dry-run by default.").argument("[dataset-id]","Dataset to enforce (omit when using --all)").option("--all","Bulk enforce across a filtered set (owner-only)").option("--apply","Actually apply changes (default is a dry run)").option("--prefix <prefix>","Bulk: filter by id prefix").option("--visibility <vis>","Bulk: filter by visibility (public|private)").option("--limit <n>","Bulk: max repos (default 25, max 50)","25").option("--json","Output raw JSON").action(async(D,F)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);if(!D&&!F.all)console.log(H.red("Error: provide a dataset-id or use --all")),process.exit(1);if(D&&F.all)console.log(H.red("Error: provide a dataset-id OR --all, not both")),process.exit(1);let $=!F.apply,Q=$?"[dry-run] ":"",J=R(`${Q}Enforcing spec...`).start();try{if(D){let Y=await w5(D,$);if(J.succeed(`${Q}${D} (${Y.result.visibility})`),F.json){console.log(JSON.stringify(Y,null,2));return}for(let[X,B]of Object.entries(Y.result.steps)){let G=B.status==="ok"?H.green:B.status==="skipped"?H.yellow:H.red;console.log(` ${G(B.status.padEnd(8))} ${X}${B.detail?H.dim(` (${B.detail})`):""}`)}}else{let Y=await dp({prefix:F.prefix,visibility:F.visibility,limit:Number.parseInt(F.limit,10)||25,dryRun:$});if(J.succeed(`${Q}processed ${Y.count} repo(s)`),F.json){console.log(JSON.stringify(Y,null,2));return}for(let X of Y.results){if(X.error){console.log(` ${H.red("error")} ${X.dataset_id}: ${X.error}`);continue}let B=Object.entries(X.steps??{}).filter(([,W])=>W.status!=="ok").map(([W,q])=>`${W}=${q.status}`),G=B.length?H.yellow("drift"):H.green("ok");console.log(` ${G} ${X.dataset_id}${B.length?H.dim(` (${B.join(", ")})`):""}`)}}}catch(Y){if(Y instanceof f)J.fail(Y.message);else J.fail("Enforcement failed"),console.log(H.red(` ${Y.message}`));process.exit(1)}});var IX=(D)=>new Promise((F)=>setTimeout(F,D));async function aS0(D,F,$){let Q=Date.now()+F,J="no probe completed";while(Date.now()<Q){try{let Y=(await w5(D,!0)).result?.steps?.branch_ruleset;if(Y?.status==="ok")return{status:"green"};if(Y?.detail)J=Y.detail}catch(Y){J=Y instanceof f?Y.message:String(Y)}await IX($)}return{status:"timeout",detail:J}}yX.command("revalidate").description("Re-run BIDS validation on main HEAD for unprotected datasets, then optionally enforce (epic #713)").argument("[dataset-id]","Dataset to revalidate (omit when using --all/--prefix)").option("--all","Revalidate across unprotected public datasets").option("--prefix <prefix>","Filter by id prefix (with --all), e.g. nm000 / on").option("--enforce","After a dataset goes green, run enforce (dry-run unless --apply)").option("--apply","With --enforce, actually apply the ruleset (default is a dry run)").option("--force","Override the live-dataset guard (nm000103-107)").option("--limit <n>","Max repos for --all/--prefix (default 25)","25").option("--json","Output raw JSON").action(async(D,F)=>{if(!b0())console.log(H.red("Error: Not authenticated")),process.exit(1);let $=Boolean(F.all||!D&&F.prefix);if(!D&&!$)console.log(H.red("Error: provide a dataset-id, or --all/--prefix")),process.exit(1);let Q;if(D)Q=[D];else{let q=R("Fetching dataset list...").start();try{let K=[];for(let z=0;;z+=200){let E=await S5({limit:200,offset:z});if(K.push(...E.datasets),E.datasets.length<200||K.length>=E.total_count)break}let Z=Number.parseInt(F.limit,10)||25;Q=Ad(K,{prefix:F.prefix}).slice(0,Z),q.succeed(`${Q.length} target(s) (from ${K.length} datasets)`)}catch(K){o0(K,q,"Failed to fetch datasets");return}}let J=Boolean(F.enforce),Y=Boolean(F.apply),X={revalidated:0,green:0,locked:0,stillRed:0,skipped:0,errors:0},B=[],G=[],W=0;for(let q of Q){if(W++,xz.has(q)&&!F.force){console.log(` [${W}/${Q.length}] ${H.dim(`${q}: skip (live; use --force)`)}`),X.skipped++;continue}try{let K=await cp(q,F.force);if(B.push(K),K.skipped)console.log(` [${W}/${Q.length}] ${q}: ${H.dim(`skipped (${K.skipped})`)}`),X.skipped++;else X.revalidated++,G.push(q),console.log(` [${W}/${Q.length}] ${q}: ${H.cyan(`revalidating (${K.triggered_by})`)}`)}catch(K){X.errors++,console.log(` [${W}/${Q.length}] ${q}: ${H.red(K instanceof f?K.message:String(K))}`)}if(W<Q.length)await IX(4000)}if(J&&G.length>0)if(D){let q=G[0],K=R(`Waiting for ${q} validation to land...`).start(),Z=await aS0(q,300000,15000);if(Z.status!=="green")K.warn(`${q}: not green within 5m \u2014 last: ${Z.detail} (real errors or still running)`),X.stillRed++;else if(X.green++,!Y)K.succeed(`${q}: green (would lock; pass --apply)`);else{let z=await w5(q,!1);if(z.result?.steps?.branch_ruleset?.status==="ok")K.succeed(`${q}: LOCKED`),X.locked++;else K.warn(`${q}: enforce ${z.result?.steps?.branch_ruleset?.status??"?"}`)}}else{let q=R("Waiting ~90s for validations to drain...").start();await IX(90000),q.text="Enforcing green datasets...";for(let K of G)try{if((await w5(K,!0)).result?.steps?.branch_ruleset?.status!=="ok"){X.stillRed++;continue}if(X.green++,Y){if((await w5(K,!1)).result?.steps?.branch_ruleset?.status==="ok")X.locked++}}catch{X.errors++}q.stop()}if(F.json){console.log(JSON.stringify({tally:X,raw:B},null,2));return}console.log(),console.log(H.cyan(`Done: revalidated=${X.revalidated} green=${X.green} locked=${X.locked} still-red=${X.stillRed} skipped=${X.skipped} errors=${X.errors}`))});d0.addCommand(yX);var cc=new y0("reindex").description("Refresh dataset metadata: enrichment + first-class D1 columns");cc.argument("[dataset-id]","Dataset ID to reindex (e.g., nm000103)").option("--all","Reindex every dataset with a GitHub repo").option("--missing-metadata","Reindex only datasets with NULL metadata columns").option("--stale","Reindex only datasets whose metadata is older than --older-than days").option("--older-than <days>","Threshold in days. Default 30 for --stale, 1 (24h) for --missing-metadata recency guard.").option("--skip-enrichment","Skip the LLM enrichment step").option("--skip-sync","Skip the D1 metadata-column refresh step").option("--ref <ref>","Ref to enrich from (single-dataset only; default: main)").option("--dry-run","List matched datasets without firing the reindex (bulk only)").action(async(D,F)=>{if(!T0())return;let $=[F.all,F.missingMetadata,F.stale].filter(Boolean).length;if(D&&$>0)console.error(H.red("Provide either a dataset-id OR a bulk flag (--all/--missing-metadata/--stale), not both")),process.exit(1);if(!D&&$===0)console.error(H.red("Provide a dataset-id or one of: --all, --missing-metadata, --stale")),process.exit(1);if($>1)console.error(H.red("Use only one of --all, --missing-metadata, --stale")),process.exit(1);if(F.skipEnrichment&&F.skipSync)console.error(H.red("--skip-enrichment and --skip-sync cannot both be set")),process.exit(1);if(D){let K=R(`Reindexing ${D}...`).start();try{let Z={skip_enrichment:F.skipEnrichment===!0,skip_sync:F.skipSync===!0,...F.ref&&{ref:F.ref}},z=await T5(D,Z),E=z.enrichment.status!=="failed"&&z.sync.status!=="failed";if(E)K.succeed(`${D} reindexed`);else K.warn(`${D} reindexed with errors`);if(console.log(),gc(z,{showRef:!0}),!E)process.exit(1)}catch(Z){K.fail(`Failed to reindex ${D}`),console.error(H.red($0(Z))),process.exit(1)}return}let Q=F.all?"all":F.missingMetadata?"missing-metadata":"stale",J={skip_enrichment:F.skipEnrichment===!0,skip_sync:F.skipSync===!0,dry_run:F.dryRun===!0};if(F.olderThan!==void 0){let K=Number.parseInt(F.olderThan,10);if(!Number.isFinite(K)||K<0)console.error(H.red(`Invalid --older-than: "${F.olderThan}"`)),process.exit(1);J.older_than_days=K}else if(Q==="missing-metadata")J.older_than_days=1;else if(Q==="stale")J.older_than_days=30;let Y=F.dryRun?`Listing ${Q} datasets...`:`Reindexing ${Q} datasets...`,X=R(Y).start(),B;try{B=await up(Q,J)}catch(K){X.fail("Bulk reindex failed"),console.error(H.red($0(K))),process.exit(1)}if(B.dry_run){if(X.succeed(`${B.total} datasets match filter=${Q} (dry run, no changes)`),B.datasets)for(let K of B.datasets)console.log(H.dim(` - ${K}`));return}let G=B.results??[],W=G.filter((K)=>K.enrichment.status!=="failed"&&K.sync.status!=="failed").length,q=G.length-W;if(q===0)X.succeed(`${G.length}/${G.length} datasets reindexed in ${(B.elapsed_ms/1000).toFixed(1)}s`);else X.warn(`${W}/${G.length} ok; ${q} failed in ${(B.elapsed_ms/1000).toFixed(1)}s`);console.log();for(let K of G)gc(K);if(q>0)process.exit(1)});d0.addCommand(cc);var nc=new y0("hed-sweep").description("Backfill HED detection (has_hed / hed_version) for existing datasets (#869)");nc.option("--limit <n>","Datasets per batch (server clamps to [1,30])","15").option("--reset","Clear every probed HED row so a corrected detector can re-sweep").option("--verbose","Print per-batch progress").option("--json","Output raw JSON instead of the human summary").action(async(D)=>{if(!T0())return;if(D.reset){let B=R("Resetting HED sweep state...").start();try{let G=await lp();if(B.succeed(`Cleared ${G.reset} probed HED row(s); eligible datasets are candidates again`),D.json)console.log(JSON.stringify(G,null,2))}catch(G){B.fail("Reset failed"),console.error(H.red($0(G))),process.exit(1)}return}let F=Number.parseInt(D.limit??"15",10)||15,$={processed:0,withHed:0,withoutHed:0,unknown:0,errors:0},Q=R("Sweeping datasets for HED...").start(),J=0,Y=null,X=null;try{let B;do{if(B=await mp({limit:F}),J++,$.processed+=B.processed,$.withHed+=B.withHed,$.withoutHed+=B.withoutHed,$.unknown+=B.unknown,$.errors+=B.errors.length,Y=B.remaining,D.verbose){Q.stop(),console.log(` [batch ${J}] processed=${B.processed} hed=${B.withHed} no-hed=${B.withoutHed} unknown=${B.unknown} errors=${B.errors.length} remaining=${Y??"?"}`);for(let G of B.errors)console.log(` ${H.red(G.dataset_id)}: ${G.error}`);Q.start("Sweeping datasets for HED...")}else Q.text=`Sweeping datasets for HED... ${$.processed} processed, ${Y??"?"} remaining`;if(Y!=null&&X!=null&&Y>=X){Q.warn(`No progress (remaining stuck at ${Y}); stopping - see errors`);break}if(X=Y,(Y??0)>0)await IX(1000)}while((Y??0)>0);Q.stop()}catch(B){Q.fail("HED sweep failed"),console.error(H.red($0(B))),process.exit(1)}if(D.json)console.log(JSON.stringify({...$,batches:J,remaining:Y},null,2));else{if(console.log(),Y===null)console.log(H.yellow("Warning: backend returned a null remaining count; the sweep may be incomplete - check server logs."));console.log(H.cyan(`Done in ${J} batch(es): processed=${$.processed} hed=${$.withHed} no-hed=${$.withoutHed} unknown=${$.unknown} errors=${$.errors} remaining=${Y??"unknown"}`))}if($.errors>0||Y===null)process.exit(1)});d0.addCommand(nc);var WZ=new y0("email-preferences").description("Manage email notification preferences");WZ.command("show").description("Show email notification preferences").option("--user <username>","(owner only) show another user's preferences").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let F=R("Fetching email preferences...").start();try{let $=await np(D.user),Q=$.username?`${$.username}'s`:"Your";F.succeed(`${Q} email notification preferences:`),console.log();let J=[{key:"user_approval",label:"User approval notifications"},{key:"publication_request",label:"Publication request notifications"},{key:"announcements",label:"Announcement emails"}];for(let Y of J){let B=$[Y.key]?H.green("enabled"):H.dim("disabled");console.log(` ${Y.label.padEnd(40)} ${B}`)}console.log(),console.log(H.dim(" Use 'nemar admin email-preferences update' to change settings."))}catch($){F.fail("Failed to fetch preferences"),console.error(H.red($0($)))}});WZ.command("update").description("Update email notification preferences").option("--user-approval <bool>","Enable/disable user approval notifications").option("--publication-request <bool>","Enable/disable publication request notifications").option("--announcements <bool>","Enable/disable announcement emails").option("--all <bool>","Enable/disable all notifications").option("--user <username>","(owner only) update another user's preferences").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);function F(J){if(J===void 0)return;let Y=J.toLowerCase();if(Y==="true"||Y==="1"||Y==="on"||Y==="yes")return!0;if(Y==="false"||Y==="0"||Y==="off"||Y==="no")return!1;console.error(H.red(`Invalid boolean value: "${J}". Use true/false, on/off, yes/no.`)),process.exit(1)}let $={};if(D.all!==void 0){let J=F(D.all);$.user_approval=J,$.publication_request=J,$.announcements=J}else{let J=F(D.userApproval),Y=F(D.publicationRequest),X=F(D.announcements);if(J===void 0&&Y===void 0&&X===void 0)console.error(H.red("No preferences specified.")),console.log(" --user-approval <bool> User approval notifications"),console.log(" --publication-request <bool> Publication request notifications"),console.log(" --announcements <bool> Announcement emails"),console.log(" --all <bool> All notifications"),process.exit(1);if(J!==void 0)$.user_approval=J;if(Y!==void 0)$.publication_request=Y;if(X!==void 0)$.announcements=X}let Q=R("Updating email preferences...").start();try{let J=await ip($,D.user),Y=J.username?`${J.username}'s`:"Your";Q.succeed(`${Y} email preferences updated:`),console.log(),console.log(` User approval: ${J.user_approval?H.green("enabled"):H.dim("disabled")}`),console.log(` Publication request: ${J.publication_request?H.green("enabled"):H.dim("disabled")}`),console.log(` Announcements: ${J.announcements?H.green("enabled"):H.dim("disabled")}`)}catch(J){Q.fail("Failed to update preferences"),console.error(H.red($0(J)))}});d0.addCommand(WZ);var xX=new y0("notice").description("Manage system notices displayed to CLI users");xX.command("list").description("List all notices (including expired)").action(async()=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let D=R("Fetching notices...").start();try{let{notices:F}=await Hd();if(F.length===0){D.succeed("No notices found.");return}D.succeed(`${F.length} notice(s):`),console.log();for(let $ of F){let J={critical:H.red.bold,warning:H.yellow,info:H.blue}[$.level]||H.white,Y=$.expires_at&&new Date($.expires_at)<new Date?H.dim(" (expired)"):"";if(console.log(` ${H.dim(`#${$.id}`)} ${J(`[${$.level.toUpperCase()}]`)} ${H.dim(`scope:${$.scope}`)}${Y}`),console.log(` ${$.message}`),console.log(` ${H.dim(`Created: ${$.created_at}`)}`),$.expires_at)console.log(` ${H.dim(`Expires: ${$.expires_at}`)}`);console.log()}}catch(F){o0(F,D,"Failed to fetch notices")}});xX.command("set").description("Create a new system notice").requiredOption("-m, --message <text>","Notice message text").option("-l, --level <level>","Notice level: info, warning, critical","info").option("-s, --scope <scope>","Target scope: all, admins, members","all").option("-e, --expires <datetime>","Expiry datetime (ISO 8601)").action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);if(!["info","warning","critical"].includes(D.level))console.error(H.red(`Invalid level: ${D.level}. Use info, warning, or critical.`)),process.exit(1);if(!["all","admins","members"].includes(D.scope))console.error(H.red(`Invalid scope: ${D.scope}. Use all, admins, or members.`)),process.exit(1);let F=R("Creating notice...").start();try{let $=await qd({message:D.message,level:D.level,scope:D.scope,expires_at:D.expires});if(F.succeed(`Notice created (ID: ${$.id})`),console.log(` Level: ${$.level}`),console.log(` Scope: ${$.scope}`),console.log(` Message: ${$.message}`),$.expires_at)console.log(` Expires: ${$.expires_at}`)}catch($){o0($,F,"Failed to create notice")}});xX.command("clear <id>").description("Delete a notice by ID").option(k0,v0).option(p0,g0).action(async(D,F)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);let $=Number.parseInt(D,10);if(Number.isNaN($))console.error(H.red("Invalid notice ID")),process.exit(1);if(!await x0(`Delete notice #${$}?`,F,!1))return;let J=R("Deleting notice...").start();try{await Kd($),J.succeed(`Notice #${$} deleted`)}catch(Y){o0(Y,J,"Failed to delete notice")}});d0.addCommand(xX);d0.command("notify").description("Send an email to a group or a single user").option("--to <group>","Recipient group: all, admins, members").option("--user <username>","Send to a single user by username").requiredOption("--subject <text>","Email subject line").option("--body <text>","Email body (markdown)").option("--body-file <path>","Read email body from file (markdown)").option("--dry-run","Preview recipients without sending").option(k0,v0).option(p0,g0).action(async(D)=>{if(!b0())console.error(H.red("Not authenticated. Run: nemar auth login")),process.exit(1);if(D.to&&D.user)console.error(H.red("--to and --user are mutually exclusive. Provide exactly one.")),process.exit(1);if(!D.to&&!D.user)console.error(H.red("Provide either --to <group> or --user <username>.")),process.exit(1);if(D.to&&!["all","admins","members"].includes(D.to))console.error(H.red(`Invalid group: ${D.to}. Use all, admins, or members.`)),process.exit(1);let F;if(D.bodyFile){if(!uc(D.bodyFile))console.error(H.red(`File not found: ${D.bodyFile}`)),process.exit(1);F=dS0(D.bodyFile,"utf-8")}else if(D.body)F=D.body;else console.error(H.red("Email body required. Use --body or --body-file.")),process.exit(1);let $=D.user?`user:${D.user}`:D.to,Q=D.user?{user:D.user,subject:D.subject,body:F}:{to:D.to,subject:D.subject,body:F};if(D.dryRun){let B=R("Checking recipients...").start();try{let G=await kz({...Q,dry_run:!0});if("dry_run"in G){B.succeed(`Dry run: ${G.recipient_count} recipient(s) for "${G.recipient_group}"`),console.log();for(let W of G.recipients)console.log(` ${W}`)}}catch(G){o0(G,B,"Failed to check recipients")}return}console.log(H.bold("Email preview:")),console.log(` To: ${H.cyan($)}`),console.log(` Subject: ${D.subject}`),console.log(` Body: ${F.length>100?`${F.substring(0,100)}...`:F}`),console.log();let J=D.user?`Send this email to ${D.user}?`:"Send this broadcast email?";if(!await x0(J,D,!1))return;let X=R(D.user?`Sending to ${D.user}...`:"Sending broadcast...").start();try{let B=await kz(Q);if("broadcast_id"in B)if(B.failure_count>0){X.warn(`Email send: ${B.recipient_count} delivered, ${B.failure_count} failed`);for(let G of B.failed_recipients)console.log(H.red(` Failed: ${G}`))}else{let G=D.user?`Email sent to ${D.user}`:`Broadcast sent to ${B.recipient_count} recipient(s)`;X.succeed(`${G} (ID: ${B.broadcast_id})`)}}catch(B){o0(B,X,"Failed to send email")}});var oS0=1500;function sS0(D){switch(D.kind){case"ok":return H.green(`ok ${D.schema_version}`);case"stale":return H.yellow(`stale ${D.schema_version}`);case"missing":return H.red("missing");case"error":return H.red(`error ${D.status||"?"}: ${D.message}`)}}function rS0(D){return D.kind==="stale"||D.kind==="missing"}function tS0(D){let $=D.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${$}$`)}var ic=new y0("summary").description("summary.json coverage across published dataset versions");ic.command("check").description("Report which (dataset_id, version) pairs have stale or missing summary.json").option("--fix","Dispatch generate-manifest for every stale/missing version").option("--id <id>","Limit to a single dataset_id (exact match)").option("--match <glob>","Limit to dataset_ids matching a glob pattern: `*` matches any run of chars, `?` matches one char. Examples: `on*`, `nm00010?`, `*99999`. Can be combined with --id (id wins if both passed).").option("--only-stale","Print only rows that are not ok (suppresses ok rows)").option("--json","Emit the full report as JSON instead of a table").option(k0,v0).option(p0,g0).action(async(D)=>{if(!T0())return;let F=R("Building coverage report...").start(),$;try{$=await ap()}catch(Z){o0(Z,F,"Failed to fetch coverage report");return}F.succeed(`Coverage: target=schema ${$.target_schema}, versions=${$.totals.versions}`);let Q=$.versions,J=null;if(D.id){if(Q=Q.filter((Z)=>Z.dataset_id===D.id),J=`dataset_id=${D.id}`,Q.length===0){console.log(H.yellow(`No rows for ${J}`));return}}else if(D.match){let Z=tS0(D.match);if(Q=Q.filter((z)=>Z.test(z.dataset_id)),J=`--match ${D.match}`,Q.length===0){console.log(H.yellow(`No rows match ${J}`));return}console.log(H.dim(`Scoped to ${Q.length} version(s) matching ${D.match}`))}if(D.json){console.log(JSON.stringify(J?{...$,versions:Q,totals:hc(Q)}:$,null,2));return}let Y=D.onlyStale?Q.filter((Z)=>Z.state.kind!=="ok"):Q;if(Y.length===0)console.log(H.green("All versions at target schema \u2014 no drift."));else{let Z=Math.max(...Y.map((E)=>E.dataset_id.length),10),z=Math.max(...Y.map((E)=>E.version.length),7);for(let E of Y)console.log(` ${E.dataset_id.padEnd(Z)} ${E.version.padEnd(z)} ${sS0(E.state)}`)}let X=J?hc(Q):$.totals;if(console.log(),console.log(` Total: ${X.versions} ${H.green(`ok=${X.ok}`)} ${H.yellow(`stale=${X.stale}`)} ${H.red(`missing=${X.missing}`)} ${H.red(`error=${X.error}`)}`),!D.fix){if(X.stale+X.missing>0)console.log(H.dim(`
|
|
412
412
|
Run with --fix to dispatch generate-manifest for the ${X.stale+X.missing} drifted version(s).`));return}let B=Q.filter((Z)=>rS0(Z.state));if(B.length===0){console.log(H.green(`
|
|
413
413
|
Nothing to dispatch.`));return}let G=J?` (scoped to ${J})`:"",W=await x0(`Dispatch generate-manifest for ${B.length} version(s)${G}? Each dispatch queues a runner job on nemarDatasets/.github.`,D);if(W!=="confirmed"){console.log(H.dim(W==="declined"?"Skipped":"Cancelled"));return}let q=0,K=0;console.log();for(let[Z,z]of B.entries()){let E=`${z.dataset_id}@${z.version}`,U=R(`[${Z+1}/${B.length}] dispatching ${E}...`).start();try{await op(z.dataset_id,z.version),U.succeed(`[${Z+1}/${B.length}] dispatched ${E}`),q++}catch(M){U.fail(`[${Z+1}/${B.length}] ${E}: ${$0(M)}`),K++}if(Z<B.length-1)await new Promise((M)=>setTimeout(M,oS0))}if(console.log(),console.log(K===0?H.green(`All ${q} dispatches succeeded.`):H.yellow(`${q} succeeded, ${K} failed.`)),console.log(H.dim("Workflow runs will appear on https://github.com/nemarDatasets/.github/actions. Re-run `nemar admin summary check` once they complete to verify drift cleared.")),K>0)process.exitCode=1});function hc(D){return{versions:D.length,ok:D.filter((F)=>F.state.kind==="ok").length,stale:D.filter((F)=>F.state.kind==="stale").length,missing:D.filter((F)=>F.state.kind==="missing").length,error:D.filter((F)=>F.state.kind==="error").length}}d0.addCommand(ic);t0();z6();D8();J$();var eS0=/^v?\d+\.\d+\.\d+(?:-(?:rc|alpha|beta)\d*)?$/,Dk0=/^v\d+\.\d+\.\d+(?:-(?:rc|alpha|beta)\d*)?$/;function Fk0(D){return D.startsWith("v")?D:`v${D}`}var ac=I.string().regex(eS0,"must be a semver version, optionally v-prefixed").transform(Fk0),hs0=I.string().regex(Dk0,"must be the canonical v-prefixed tag (vX.Y.Z)");J$();var $k0=I.object({id:I.number().int(),username:I.string().nullable(),email:I.string(),github_username:I.string().nullable(),role:I.string(),orcid:I.string().nullable().optional(),created_at:I.string().optional(),approved_at:I.string().nullable().optional(),dataset_count:I.number().int().optional(),sandbox_completed:I.boolean().optional(),sandbox_completed_at:I.string().nullable().optional(),sandbox_dataset_id:I.string().nullable().optional()}).passthrough(),Qk0=I.object({prefix:I.string(),created_at:I.string(),last_used_at:I.string().nullable()}).passthrough().nullable(),oc=I.object({user:$k0,token:Qk0.optional()}).passthrough();J$();var Jk0="0.3.0",Yk0=I.enum(["openneuro","nemar","gin","other"]),sc=I.union([I.literal(0),I.literal(1)]).nullable(),rc=I.object({dataset_id:I.string(),id:I.string().optional(),name:I.string(),description:I.string().nullable().optional(),status:I.string(),visibility:I.string(),concept_doi:I.string().nullable().optional(),doi:I.string().nullable().optional(),created_at:I.string(),updated_at:I.string().optional(),owner_username:I.string().nullable().optional(),source:I.string().nullable().optional(),modalities:I.string().optional(),participants:I.number().int().nonnegative(),tasks:I.string().optional(),authors:I.string().optional(),license:I.string().optional(),file_size:I.number().nonnegative(),file_size_formatted:I.string().optional(),num_citations:I.number().int().nonnegative().optional(),n_channels:I.number().int().nullable().optional(),electrode_system:I.string().nullable().optional(),has_hed:sc.optional(),hed_version:I.string().nullable().optional(),latest_version:ac.nullable().optional()}).passthrough(),Xk0=rc.extend({file_size:I.number().nonnegative().nullable(),modalities:I.string().nullable().optional(),tasks:I.string().nullable().optional(),authors:I.string().nullable().optional(),license:I.string().nullable().optional(),owner_github:I.string().nullable().optional()}).passthrough(),Bk0=I.object({id:I.string(),name:I.string(),modalities:I.string().nullable().optional(),participants:I.number().int().nullable().optional(),doi:I.string().nullable().optional(),tasks:I.string().nullable().optional(),authors:I.string().nullable().optional(),has_hed:sc.optional(),score:I.number().optional(),snippet:I.string().optional()}).passthrough(),cs0=I.object({datasets:I.array(rc),count:I.number().int().nonnegative(),total_count:I.number().int().nonnegative().optional(),limit:I.number().int().optional(),offset:I.number().int().optional()}).passthrough(),ns0=I.object({results:I.array(Bk0),count:I.number().int().nonnegative(),method:I.string().optional(),min_score:I.number().optional()}).passthrough(),is0=I.object({dataset:Xk0}).passthrough(),as0=I.object({schema_version:I.literal(Jk0),doc_type:I.literal("dataset"),dataset_id:I.string().regex(/^[a-z]{2}\d+$/,"neuroschema dataset_id pattern"),name:I.string(),source:Yk0,recording_modality:I.array(I.string()).min(1),description:I.string().nullable().optional(),bids_version:I.string().nullable().optional(),license:I.string().nullable().optional()}).passthrough();I4();async function tc(D){return _(`/auth/check-username?username=${encodeURIComponent(D)}`)}async function ec(D){return _(`/auth/check-github?username=${encodeURIComponent(D)}`)}async function Dn(D){return _("/auth/signup",{method:"POST",body:JSON.stringify(D)})}async function HZ(D){return _("/auth/login",{method:"POST",body:JSON.stringify({api_key:D})})}async function Fn(D){return _("/auth/resend-verification",{method:"POST",body:JSON.stringify({email:D})})}async function $n(D,F){return _("/auth/retrieve-key",{method:"POST",body:JSON.stringify({email:D,password:F})})}async function Qn(D){return _("/auth/request-key-regeneration",{method:"POST",body:JSON.stringify({email:D})})}async function _X(){return(await _("/users/me",{},!0,oc)).user}async function Jn(D){return _("/sandbox/complete",{method:"POST",body:JSON.stringify({dataset_id:D})},!0)}async function Yn(){return _("/sandbox/reset",{method:"POST"},!0)}async function Xn(){return _("/sandbox/status",{},!0)}K1();P4();z1();var Bn={git:{name:"git",purpose:"version control for dataset metadata",cmd:["git","--version"],required:!0,installInstructions:{macos:"brew install git (or install Xcode Command Line Tools)",linux:"sudo apt-get install git OR sudo dnf install git",windows:"winget install Git.Git (or https://git-scm.com/download/win)"}},"git-annex":{name:"git-annex",purpose:"large-file data transfer (upload/download)",cmd:["git-annex","version"],required:!0,installInstructions:{macos:"brew install git-annex",linux:"sudo apt-get install git-annex OR sudo dnf install git-annex",windows:"Download the installer from https://git-annex.branchable.com/install/Windows/"}},gh:{name:"GitHub CLI (gh)",purpose:"GitHub authentication + repository operations",cmd:["gh","--version"],required:!0,installInstructions:{macos:"brew install gh",linux:"See https://cli.github.com/manual/installation",windows:"winget install GitHub.cli (or: scoop install gh)"}},aws:{name:"AWS CLI",purpose:"S3 data upload/download",cmd:["aws","--version"],required:!0,installInstructions:{macos:"brew install awscli",linux:"pip install awscli OR sudo snap install aws-cli --classic",windows:"winget install Amazon.AWSCLI (or the MSI from https://aws.amazon.com/cli/)"}},deno:{name:"Deno",purpose:"BIDS validation",cmd:["deno","--version"],required:!0,installInstructions:{macos:"brew install deno (or: curl -fsSL https://deno.land/install.sh | sh)",linux:"curl -fsSL https://deno.land/install.sh | sh",windows:"winget install DenoLand.Deno (or: irm https://deno.land/install.ps1 | iex)"}}},Gk0={upload:["git-annex","gh","aws","deno"],download:["gh"],clone:["git","gh"],push:["git-annex","gh"],publish:["gh","aws"],update:["git","gh"],release:["git","gh"]};function Wk0(){if(process.platform==="darwin")return"macos";if(process.platform==="win32")return"windows";return"linux"}function Gn(D,F=Wk0()){return D.installInstructions[F]}function Hk0(D){let F=D.match(/(\d+\.\d+(?:\.\d+)?)/);return F?F[1]:void 0}async function Wn(D){try{let{exitCode:F,stdout:$}=await w(D.cmd);if(F!==0)return{available:!1};return{available:!0,version:Hk0($)}}catch(F){let $=F instanceof Error?F.message:String(F);if(!$.includes("ENOENT")&&!$.includes("not found"))console.error(` Warning: ${D.name} check failed unexpectedly: ${$}`);return{available:!1}}}async function qZ(){let D=Object.entries(Bn);return Promise.all(D.map(async([F,$])=>{let{available:Q,version:J}=await Wn($);return{key:F,name:$.name,purpose:$.purpose,required:$.required,available:Q,version:J,installInstruction:Gn($)}}))}async function Hn(){let F=(await qZ()).filter(($)=>$.required&&!$.available);if(F.length===0)return[];console.warn(`
|
|
414
414
|
Heads up: some tools NEMAR needs for uploading/validating aren't installed yet:`);for(let $ of F)console.warn(` - ${$.name} (${$.purpose})`),console.warn(` Install: ${$.installInstruction}`);return console.warn("Run `nemar doctor` anytime to re-check. You can finish signup without them.\n"),F}async function k3(D){let $=Gk0[D].map((X)=>Bn[X]).filter(Boolean),J=(await Promise.all($.map(async(X)=>({check:X,available:(await Wn(X)).available})))).filter((X)=>!X.available&&X.check.required).map((X)=>({tool:X.check.name,installInstruction:Gn(X.check)}));if(J.length===0)return;let Y=[`
|
|
@@ -700,7 +700,7 @@ Description:
|
|
|
700
700
|
Examples:
|
|
701
701
|
$ nemar dataset release nm000104 --type patch
|
|
702
702
|
$ nemar dataset release nm000104 --version 2.0.0
|
|
703
|
-
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{sD(),await k3("release");let $=R("Fetching dataset info...").start(),Q;try{Q=await ID(D),$.succeed(`Dataset: ${Q.name||D}`)}catch(C){if(C instanceof f)$.fail(C.message);else $.fail("Failed to fetch dataset");process.exit(1)}if(!Q.github_repo)console.log(H.red("Error: Dataset has no GitHub repository")),process.exit(1);let J;try{let C=await $d(D);if(J=C.current_version,console.log(` Current version: ${H.cyan(J)}`),C.versions.length>0){console.log(` Version DOIs: ${C.versions.length}`);for(let j of C.versions.slice(0,3))console.log(` ${j.version} - ${H.dim(j.doi)}`);if(C.versions.length>3)console.log(H.dim(` ... and ${C.versions.length-3} more`))}}catch(C){let j=C instanceof f?`${C.statusCode}: ${C.message}`:String(C);console.log(H.red(`Error: Could not fetch version history (${j})`)),console.log(" Cannot determine current version. Ensure the backend is reachable."),process.exit(1)}let Y;if(F.version){if(!OZ(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);Y=F.version.replace(/^v/,"")}else if(F.type){let C=F.type;if(!["patch","minor","major"].includes(C))console.log(H.red(`Error: Invalid bump type: ${F.type}`)),console.log(" Expected: patch, minor, or major"),process.exit(1);Y=x3(J,C)}else{if(!m5(J))console.log(H.red(`Error: Cannot parse current version: ${J}`)),process.exit(1);let j=[{name:`patch ${J} -> ${x3(J,"patch")}`,value:"patch"},{name:`minor ${J} -> ${x3(J,"minor")}`,value:"minor"},{name:`major ${J} -> ${x3(J,"major")}`,value:"major"},{name:"custom version",value:"custom"}],{bumpType:S}=await e.prompt([{type:"list",name:"bumpType",message:"Select version bump type:",choices:j}]);if(S==="custom"){let{customVersion:l}=await e.prompt([{type:"input",name:"customVersion",message:"Enter version (X.Y.Z):",validate:(y)=>OZ(y)||"Invalid format. Use X.Y.Z (e.g., 2.0.0)"}]);Y=l.replace(/^v/,"")}else Y=x3(J,S)}if(console.log(),console.log(` ${H.bold("Version bump:")} ${J} -> ${H.green(Y)}`),await x0(`Create release PR for ${D} v${Y}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let B,G=!0;if(F.dir){if(!j1(F.dir))console.log(H.red(`Error: Directory not found: ${F.dir}`)),process.exit(1);B=S6(F.dir),G=!1}else B=Nv0(l5(Cv0(),`nemar-release-${D}-`));if(G){let C=`https://github.com/${Q.github_repo}.git`,j=R("Cloning dataset...").start(),S=await Z1(C,B);if(!S.success)j.fail(`Clone failed: ${S.error}`),process.exit(1);j.succeed("Cloned dataset")}let W=`release/v${Y}`,q=R("Creating release branch...").start(),K=SD({cmd:["git","checkout","-b",W],cwd:B,stdout:"pipe",stderr:"pipe"});if(await K.exited!==0){let C=await new Response(K.stderr).text();q.fail(`Failed to create branch: ${C.trim()}`),process.exit(1)}q.succeed(`Created branch: ${W}`);let Z=l5(B,"dataset_description.json");if(!j1(Z))console.log(H.red("Error: dataset_description.json not found in repo")),process.exit(1);let z;try{z=JSON.parse(dX(Z,"utf-8"))}catch(C){if(C 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: ${C}`));process.exit(1)}z.Version=Y,hi(Z,`${JSON.stringify(z,null,2)}
|
|
703
|
+
$ nemar dataset release nm000104 # interactive prompt`).action(async(D,F)=>{sD(),await k3("release");let $=R("Fetching dataset info...").start(),Q;try{Q=await ID(D),$.succeed(`Dataset: ${Q.name||D}`)}catch(C){if(C instanceof f)$.fail(C.message);else $.fail("Failed to fetch dataset");process.exit(1)}if(!Q.github_repo)console.log(H.red("Error: Dataset has no GitHub repository")),process.exit(1);let J;try{let C=await $d(D);if(J=C.current_version.replace(/^v/,""),console.log(` Current version: ${H.cyan(J)}`),C.versions.length>0){console.log(` Version DOIs: ${C.versions.length}`);for(let j of C.versions.slice(0,3))console.log(` ${j.version} - ${H.dim(j.doi)}`);if(C.versions.length>3)console.log(H.dim(` ... and ${C.versions.length-3} more`))}}catch(C){let j=C instanceof f?`${C.statusCode}: ${C.message}`:String(C);console.log(H.red(`Error: Could not fetch version history (${j})`)),console.log(" Cannot determine current version. Ensure the backend is reachable."),process.exit(1)}let Y;if(F.version){if(!OZ(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);Y=F.version.replace(/^v/,"")}else if(F.type){let C=F.type;if(!["patch","minor","major"].includes(C))console.log(H.red(`Error: Invalid bump type: ${F.type}`)),console.log(" Expected: patch, minor, or major"),process.exit(1);Y=x3(J,C)}else{if(!m5(J))console.log(H.red(`Error: Cannot parse current version: ${J}`)),process.exit(1);let j=[{name:`patch ${J} -> ${x3(J,"patch")}`,value:"patch"},{name:`minor ${J} -> ${x3(J,"minor")}`,value:"minor"},{name:`major ${J} -> ${x3(J,"major")}`,value:"major"},{name:"custom version",value:"custom"}],{bumpType:S}=await e.prompt([{type:"list",name:"bumpType",message:"Select version bump type:",choices:j}]);if(S==="custom"){let{customVersion:l}=await e.prompt([{type:"input",name:"customVersion",message:"Enter version (X.Y.Z):",validate:(y)=>OZ(y)||"Invalid format. Use X.Y.Z (e.g., 2.0.0)"}]);Y=l.replace(/^v/,"")}else Y=x3(J,S)}if(console.log(),console.log(` ${H.bold("Version bump:")} ${J} -> ${H.green(Y)}`),await x0(`Create release PR for ${D} v${Y}?`,{yes:F.yes})!=="confirmed"){console.log("Cancelled.");return}let B,G=!0;if(F.dir){if(!j1(F.dir))console.log(H.red(`Error: Directory not found: ${F.dir}`)),process.exit(1);B=S6(F.dir),G=!1}else B=Nv0(l5(Cv0(),`nemar-release-${D}-`));if(G){let C=`https://github.com/${Q.github_repo}.git`,j=R("Cloning dataset...").start(),S=await Z1(C,B);if(!S.success)j.fail(`Clone failed: ${S.error}`),process.exit(1);j.succeed("Cloned dataset")}let W=`release/v${Y}`,q=R("Creating release branch...").start(),K=SD({cmd:["git","checkout","-b",W],cwd:B,stdout:"pipe",stderr:"pipe"});if(await K.exited!==0){let C=await new Response(K.stderr).text();q.fail(`Failed to create branch: ${C.trim()}`),process.exit(1)}q.succeed(`Created branch: ${W}`);let Z=l5(B,"dataset_description.json");if(!j1(Z))console.log(H.red("Error: dataset_description.json not found in repo")),process.exit(1);let z;try{z=JSON.parse(dX(Z,"utf-8"))}catch(C){if(C 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: ${C}`));process.exit(1)}z.Version=Y,hi(Z,`${JSON.stringify(z,null,2)}
|
|
704
704
|
`);let E=R("Committing version bump...").start(),U=SD({cmd:["git","add","dataset_description.json"],cwd:B,stdout:"pipe",stderr:"pipe"});if(await U.exited!==0){let C=await new Response(U.stderr).text();E.fail(`Failed to stage changes: ${C.trim()}`),process.exit(1)}let M=SD({cmd:["git","commit","-m",`Bump version to ${Y}`],cwd:B,stdout:"pipe",stderr:"pipe"});if(await M.exited!==0){let C=await new Response(M.stderr).text();E.fail(`Commit failed: ${C.trim()}`),process.exit(1)}E.succeed("Committed version bump");let A=R("Pushing branch...").start(),N=await H$(B,W);if(!N.success)A.fail(`Push failed: ${N.error}`),process.exit(1);A.succeed("Pushed branch");let O=!1,T=R("Creating pull request...").start();try{let C=`Release v${Y}`,j=`## Version Bump
|
|
705
705
|
|
|
706
706
|
Bumps ${D} from ${J} to ${Y}.
|
package/package.json
CHANGED