@gjsify/cli 0.27.0 → 0.28.0

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/cli.gjs.mjs CHANGED
@@ -630,10 +630,12 @@ ${[...S,a].map((n,a)=>`${a+1}. ${n}`).join(`
630
630
  `+` `.repeat(a)),Array(Fg).fill(0).map((n,a)=>`\r`+` `.repeat(a)),Array(Fg).fill(0).map((n,a)=>`\r
631
631
  `+` `.repeat(a)),(function(n){n.DEFAULT={allowTrailingComma:!1}})(Ig||={}),r(Pe,`parse$1`),r(We,`visit`),(function(n){n[n.None=0]=`None`,n[n.UnexpectedEndOfComment=1]=`UnexpectedEndOfComment`,n[n.UnexpectedEndOfString=2]=`UnexpectedEndOfString`,n[n.UnexpectedEndOfNumber=3]=`UnexpectedEndOfNumber`,n[n.InvalidUnicode=4]=`InvalidUnicode`,n[n.InvalidEscapeCharacter=5]=`InvalidEscapeCharacter`,n[n.InvalidCharacter=6]=`InvalidCharacter`})(Lg||={}),(function(n){n[n.OpenBraceToken=1]=`OpenBraceToken`,n[n.CloseBraceToken=2]=`CloseBraceToken`,n[n.OpenBracketToken=3]=`OpenBracketToken`,n[n.CloseBracketToken=4]=`CloseBracketToken`,n[n.CommaToken=5]=`CommaToken`,n[n.ColonToken=6]=`ColonToken`,n[n.NullKeyword=7]=`NullKeyword`,n[n.TrueKeyword=8]=`TrueKeyword`,n[n.FalseKeyword=9]=`FalseKeyword`,n[n.StringLiteral=10]=`StringLiteral`,n[n.NumericLiteral=11]=`NumericLiteral`,n[n.LineCommentTrivia=12]=`LineCommentTrivia`,n[n.BlockCommentTrivia=13]=`BlockCommentTrivia`,n[n.LineBreakTrivia=14]=`LineBreakTrivia`,n[n.Trivia=15]=`Trivia`,n[n.Unknown=16]=`Unknown`,n[n.EOF=17]=`EOF`})(Rg||={}),zg=Pe,(function(n){n[n.InvalidSymbol=1]=`InvalidSymbol`,n[n.InvalidNumberFormat=2]=`InvalidNumberFormat`,n[n.PropertyNameExpected=3]=`PropertyNameExpected`,n[n.ValueExpected=4]=`ValueExpected`,n[n.ColonExpected=5]=`ColonExpected`,n[n.CommaExpected=6]=`CommaExpected`,n[n.CloseBraceExpected=7]=`CloseBraceExpected`,n[n.CloseBracketExpected=8]=`CloseBracketExpected`,n[n.EndOfFileExpected=9]=`EndOfFileExpected`,n[n.InvalidCommentToken=10]=`InvalidCommentToken`,n[n.UnexpectedEndOfComment=11]=`UnexpectedEndOfComment`,n[n.UnexpectedEndOfString=12]=`UnexpectedEndOfString`,n[n.UnexpectedEndOfNumber=13]=`UnexpectedEndOfNumber`,n[n.InvalidUnicode=14]=`InvalidUnicode`,n[n.InvalidEscapeCharacter=15]=`InvalidEscapeCharacter`,n[n.InvalidCharacter=16]=`InvalidCharacter`})(Bg||={}),Vg=r((n,a)=>zg(kg(a,n,`utf8`)),`readJsonc`),Hg=Symbol(`implicitBaseUrl`),Ug="${configDir}",Wg=r(()=>{let{findPnpApi:n}=rs;return n&&n(process.cwd())},`getPnpApi`),Gg=r((n,a,S,C)=>{let N=`resolveFromPackageJsonPath:${n}:${a}:${S}`;if(C!=null&&C.has(N))return C.get(N);let F=Vg(n,C);if(!F)return;let I=a||`tsconfig.json`;if(!S&&F.exports)try{let[n]=v(F.exports,a,[`require`,`types`]);I=n}catch{return!1}else!a&&F.tsconfig&&(I=F.tsconfig);return I=Ds.join(n,`..`,I),C?.set(N,I),I},`resolveFromPackageJsonPath`),Kg=`package.json`,qg=`tsconfig.json`,Jg=r((n,a,S)=>{let C=n;if(n===`..`&&(C=Ds.join(C,qg)),n[0]===`.`&&(C=Ds.resolve(a,C)),Ds.isAbsolute(C)){if(Og(S,C)){if(Ag(S,C).isFile())return C}else if(!C.endsWith(`.json`)){let n=`${C}.json`;if(Og(S,n))return n}return}let[N,...F]=n.split(`/`),I=N[0]===`@`?`${N}/${F.shift()}`:N,H=F.join(`/`),W=Wg();if(W){let{resolveRequest:C}=W;try{if(I===n){let n=C(Ds.join(I,Kg),a);if(n){let a=Gg(n,H,!1,S);if(a&&Og(S,a))return a}}else{let S;try{S=C(n,a,{extensions:[`.json`]})}catch{S=C(Ds.join(n,qg),a)}if(S)return S}}catch{}}let K=jg(Ds.resolve(a),Ds.join(`node_modules`,I),S);if(!K||!Ag(S,K).isDirectory())return;let q=Ds.join(K,Kg);if(Og(S,q)){let n=Gg(q,H,!1,S);if(n===!1)return;if(n&&Og(S,n)&&Ag(S,n).isFile())return n}let Y=Ds.join(K,H),X=Y.endsWith(`.json`);if(!X){let n=`${Y}.json`;if(Og(S,n))return n}if(Og(S,Y)){if(Ag(S,Y).isDirectory()){let n=Ds.join(Y,Kg);if(Og(S,n)){let a=Gg(n,``,!0,S);if(a&&Og(S,a))return a}let a=Ds.join(Y,qg);if(Og(S,a))return a}else if(X)return Y}},`resolveExtendsPath`),Yg=r((n,a)=>Ng(Ds.relative(n,a)),`pathRelative`),Xg=[`files`,`include`,`exclude`],Zg=r((n,a,S)=>{let C=Ds.join(a,S);return h$1(Ds.relative(n,C))||`./`},`resolveAndRelativize`),Qg=r((n,a,S)=>{let C=Ds.relative(n,a);return C?h$1(`${C}/${S.startsWith(`./`)?S.slice(2):S}`):S},`prefixPattern`),$g=r((n,a,S,C)=>{let N=Jg(n,a,C);if(!N)throw Error(`File '${n}' not found.`);if(S.has(N))throw Error(`Circularity detected while resolving configuration: ${N}`);S.add(N);let F=Ds.dirname(N),I=t_(N,C,S);delete I.references;let{compilerOptions:H}=I;if(H){let{baseUrl:n}=H;n&&!n.startsWith(Ug)&&(H.baseUrl=Zg(a,F,n));let{outDir:S}=H;S&&!S.startsWith(Ug)&&(H.outDir=Zg(a,F,S));let{declarationDir:C}=H;C&&!C.startsWith(Ug)&&(H.declarationDir=Zg(a,F,C));let{rootDir:N}=H;N&&!N.startsWith(Ug)&&(H.rootDir=Zg(a,F,N));let{rootDirs:I}=H;I&&(H.rootDirs=I.map(n=>n.startsWith(Ug)?n:Zg(a,F,n)));let{typeRoots:W}=H;W&&(H.typeRoots=W.map(n=>n.startsWith(Ug)?n:Zg(a,F,n)))}for(let n of Xg){let S=I[n];S&&(I[n]=S.map(n=>n.startsWith(Ug)?n:Qg(a,F,n)))}return I},`resolveExtends`),e_=[`outDir`,`declarationDir`],t_=r((n,a,S=new Set)=>{let C;try{C=Vg(n,a)||{}}catch{throw Error(`Cannot resolve tsconfig at path: ${n}`)}if(typeof C!=`object`)throw SyntaxError(`Failed to parse tsconfig at: ${n}`);let N=Ds.dirname(n);if(C.compilerOptions){let{compilerOptions:n}=C;n.paths&&!n.baseUrl&&(n[Hg]=N)}if(C.extends){let n=Array.isArray(C.extends)?C.extends:[C.extends];delete C.extends;for(let F of n.reverse()){let n=$g(F,N,new Set(S),a),I={...n,...C,compilerOptions:{...n.compilerOptions,...C.compilerOptions}};n.watchOptions&&(I.watchOptions={...n.watchOptions,...C.watchOptions}),C=I}}if(C.compilerOptions){let{compilerOptions:n}=C;for(let a of[`baseUrl`,`rootDir`]){let S=n[a];if(S&&!S.startsWith(Ug)){let C=Ds.resolve(N,S);n[a]=Yg(N,C)}}for(let a of e_){let S=n[a];S&&(Array.isArray(C.exclude)||(C.exclude=e_.map(a=>n[a]).filter(Boolean)),S.startsWith(Ug)||(S=Ng(S)),n[a]=S)}}else C.compilerOptions={};if(C.include&&=C.include.map(h$1),C.files&&=C.files.map(n=>n.startsWith(Ug)?n:Ng(n)),C.watchOptions){let{watchOptions:n}=C;n.excludeDirectories&&=n.excludeDirectories.map(n=>h$1(Ds.resolve(N,n))),n.excludeFiles&&=n.excludeFiles.map(n=>h$1(Ds.resolve(N,n))),n.watchFile&&=n.watchFile.toLowerCase(),n.watchDirectory&&=n.watchDirectory.toLowerCase(),n.fallbackPolling&&=n.fallbackPolling.toLowerCase()}return C},`_parseTsconfig`),n_=r((n,a)=>{if(n.startsWith(Ug))return h$1(Ds.join(a,n.slice(12)))},`interpolateConfigDir`),r_=[`outDir`,`declarationDir`,`outFile`,`rootDir`,`baseUrl`,`tsBuildInfoFile`],i_=r(n=>{if(n.strict)for(let a of[`noImplicitAny`,`noImplicitThis`,`strictNullChecks`,`strictFunctionTypes`,`strictBindCallApply`,`strictPropertyInitialization`,`strictBuiltinIteratorReturn`,`alwaysStrict`,`useUnknownInCatchVariables`])n[a]===void 0&&(n[a]=!0);if(n.composite&&(n.declaration??=!0,n.incremental??=!0),n.target){let a=n.target.toLowerCase();a===`es2015`&&(a=`es6`),n.target=a,a===`esnext`&&(n.module??=`es6`,n.useDefineForClassFields??=!0),(a===`es6`||a===`es2016`||a===`es2017`||a===`es2018`||a===`es2019`||a===`es2020`||a===`es2021`||a===`es2022`||a===`es2023`||a===`es2024`)&&(n.module??=`es6`),(a===`es2022`||a===`es2023`||a===`es2024`)&&(n.useDefineForClassFields??=!0)}if(n.module){let a=n.module.toLowerCase();if(a===`es2015`&&(a=`es6`),n.module=a,(a===`es6`||a===`es2020`||a===`es2022`||a===`esnext`||a===`none`||a===`system`||a===`umd`||a===`amd`)&&(n.moduleResolution??=`classic`),a===`system`&&(n.allowSyntheticDefaultImports??=!0),(a===`node16`||a===`node18`||a===`node20`||a===`nodenext`||a===`preserve`)&&(n.esModuleInterop??=!0,n.allowSyntheticDefaultImports??=!0),(a===`node16`||a===`node18`||a===`node20`||a===`nodenext`)&&(n.moduleDetection??=`force`),a===`node16`&&(n.target??=`es2022`,n.moduleResolution??=`node16`),a===`node18`&&(n.target??=`es2022`,n.moduleResolution??=`node16`),a===`node20`&&(n.target??=`es2023`,n.moduleResolution??=`node16`,n.resolveJsonModule??=!0),a===`nodenext`&&(n.target??=`esnext`,n.moduleResolution??=`nodenext`,n.resolveJsonModule??=!0),a===`node16`||a===`node18`||a===`node20`||a===`nodenext`){let a=n.target;(a===`es3`||a===`es2022`||a===`es2023`||a===`es2024`||a===`esnext`)&&(n.useDefineForClassFields??=!0)}a===`preserve`&&(n.moduleResolution??=`bundler`)}if(n.moduleResolution){let a=n.moduleResolution.toLowerCase();a===`node`&&(a=`node10`),n.moduleResolution=a,(a===`node16`||a===`nodenext`||a===`bundler`)&&(n.resolvePackageJsonExports??=!0,n.resolvePackageJsonImports??=!0),a===`bundler`&&(n.allowSyntheticDefaultImports??=!0,n.resolveJsonModule??=!0)}n.jsx&&=n.jsx.toLowerCase(),n.moduleDetection&&=n.moduleDetection.toLowerCase(),n.importsNotUsedAsValues&&=n.importsNotUsedAsValues.toLowerCase(),n.newLine&&=n.newLine.toLowerCase(),n.esModuleInterop&&(n.allowSyntheticDefaultImports??=!0),n.verbatimModuleSyntax&&(n.isolatedModules??=!0,n.preserveConstEnums??=!0),n.isolatedModules&&(n.preserveConstEnums??=!0),n.rewriteRelativeImportExtensions&&(n.allowImportingTsExtensions??=!0),n.lib&&=n.lib.map(n=>n.toLowerCase()),n.checkJs&&(n.allowJs??=!0)},`normalizeCompilerOptions`),a_=r((n,a=new Map)=>{let S=Ds.resolve(n),C=t_(S,a),N=Ds.dirname(S),{compilerOptions:F}=C;if(F){for(let n of r_){let a=F[n];if(a){let S=n_(a,N);F[n]=S?Yg(N,S):a}}for(let n of[`rootDirs`,`typeRoots`]){let a=F[n];a&&(F[n]=a.map(n=>{let a=n_(n,N);return a?Yg(N,a):Ng(n)}))}let{paths:n}=F;if(n)for(let a of Object.keys(n))n[a]=n[a].map(n=>n_(n,N)??n);i_(F)}for(let n of Xg){let a=C[n];a&&(C[n]=a.map(n=>n_(n,N)??n))}return C},`parseTsconfig`),o_=Object.defineProperty,s_=r((n,a)=>o_(n,`name`,{value:a,configurable:!0}),`s`),c_=s_(n=>{let a=``;for(let S=0;S<n.length;S+=1){let C=n[S],N=C.toUpperCase();a+=C===N?C.toLowerCase():N}return a},`invertCase`),l_=new Map,u_=s_((n,a)=>{let S=Ds.join(n,`.is-fs-case-sensitive-test-${process.pid}`);try{return a.writeFileSync(S,``),!a.existsSync(c_(S))}finally{try{a.unlinkSync(S)}catch{}}},`checkDirectoryCaseWithWrite`),d_=s_((n,a,S)=>{try{return u_(n,S)}catch(n){if(a===void 0)return u_(lm.tmpdir(),S);throw n}},`checkDirectoryCaseWithFallback`),f_=s_((n,a=hl,S=!0)=>{let C=n??process.cwd();if(S&&l_.has(C))return l_.get(C);let N,F=c_(C);return N=F!==C&&a.existsSync(C)?!a.existsSync(F):d_(C,n,a),S&&l_.set(C,N),N},`isFsCaseSensitive`),{join:p_}=Ds.posix,m_={ts:[`.ts`,`.tsx`,`.d.ts`],cts:[`.cts`,`.d.cts`],mts:[`.mts`,`.d.mts`]},h_=r(n=>{let a=[...m_.ts],S=[...m_.cts],C=[...m_.mts];return n!=null&&n.allowJs&&(a.push(`.js`,`.jsx`),S.push(`.cjs`),C.push(`.mjs`)),[...a,...S,...C]},`getSupportedExtensions`),g_=r(n=>{let a=[];if(!n)return a;let{outDir:S,declarationDir:C}=n;return S&&a.push(S),C&&a.push(C),a},`getDefaultExcludeSpec`),__=r(n=>n.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),`escapeForRegexp`),v_=`(?!(${[`node_modules`,`bower_components`,`jspm_packages`].join(`|`)})(/|$))`,y_=/(?:^|\/)[^.*?]+$/,b_=`**/*`,x_=`[^/]`,S_=`[^./]`,C_=process.platform===`win32`,w_=r(({config:n,path:a},S=f_())=>{if(`extends`in n)throw Error(`tsconfig#extends must be resolved. Use getTsconfig or parseTsconfig to resolve it.`);if(!Ds.isAbsolute(a))throw Error(`The tsconfig path must be absolute`);C_&&(a=h$1(a));let C=Ds.dirname(a),{files:N,include:F,exclude:I,compilerOptions:H}=n,W=r(n=>Ds.isAbsolute(n)?n:p_(C,n),`resolvePattern`),K=N?.map(W),q=h_(H),Y=S?``:`i`,X=(I||g_(H)).map(n=>{let a=W(n),S=__(a).replaceAll(String.raw`\*\*/`,`(.+/)?`).replaceAll(String.raw`\*`,`${x_}*`).replaceAll(String.raw`\?`,x_);return RegExp(`^${S}($|/)`,Y)}),te=N||F?F:[b_],ne=te?te.map(n=>{let a=W(n);y_.test(a)&&(a=p_(a,b_));let S=__(a).replaceAll(String.raw`/\*\*`,`(/${v_}${S_}${x_}*)*?`).replaceAll(/(\/)?\\\*/g,(n,a)=>{let S=`(${S_}|(\\.(?!min\\.js$))?)*`;return a?`/${v_}${S_}${S}`:S}).replaceAll(/(\/)?\\\?/g,(n,a)=>{let S=x_;return a?`/${v_}${S}`:S});return RegExp(`^${S}$`,Y)}):void 0;return a=>{if(!Ds.isAbsolute(a))throw Error(`filePath must be absolute`);if(C_&&(a=h$1(a)),K!=null&&K.includes(a)||!(!q.some(n=>a.endsWith(n))||X.some(n=>n.test(a)))&&ne&&ne.some(n=>n.test(a)))return n}},`createFilesMatcher`),T_=r((n,a,S)=>{let C=Ds.resolve(n),N=h$1(n);for(;;){let n=jg(N,a,S);if(!n)return;let F=Ds.resolve(n),I=a_(F,S),H={path:h$1(F),config:I};if(w_(H)(C))return H;let W=Ds.dirname(n),K=Ds.dirname(W);if(K===W)return;N=K}},`findConfigApplicable`),E_=r((n=process.cwd(),a=`tsconfig.json`,S=new Map,C=!1)=>C?T_(n,a,S)?.path:jg(h$1(n),a,S),`findTsconfig`),D_=r((n=process.cwd(),a=`tsconfig.json`,S=new Map,C=!1)=>{if(!C){let C=E_(n,a,S);return C?{path:C,config:a_(C,S)}:null}return T_(n,a,S)??null},`getTsconfig`),O_=/\*/g,k_=r((n,a)=>{let S=n.match(O_);if(S&&S.length>1)throw Error(a)},`assertStarCount`),A_=r(n=>{if(n.includes(`*`)){let[a,S]=n.split(`*`);return{prefix:a,suffix:S}}return n},`parsePattern`),j_=r(({prefix:n,suffix:a},S)=>S.startsWith(n)&&S.endsWith(a),`isPatternMatch`),M_=r((n,a,S)=>Object.entries(n).map(([n,C])=>(k_(n,`Pattern '${n}' can have at most one '*' character.`),{pattern:A_(n),substitutions:C.map(C=>{if(k_(C,`Substitution '${C}' in pattern '${n}' can have at most one '*' character.`),!a&&!Mg.test(C)&&!Ds.isAbsolute(C))throw Error(`Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?`);return Ds.resolve(S,C)})})),`parsePaths`),r(n=>{let{compilerOptions:a}=n.config;if(!a)return null;let{baseUrl:S,paths:C}=a;if(!S&&!C)return null;let N=Hg in a&&a[Hg],F=Ds.resolve(Ds.dirname(n.path),S||N||`.`),I=C?M_(C,S,F):[];return n=>{if(Mg.test(n))return[];let a=[];for(let S of I){if(S.pattern===n)return S.substitutions.map(h$1);typeof S.pattern!=`string`&&a.push(S)}let C,N=-1;for(let S of a)j_(S.pattern,n)&&S.pattern.prefix.length>N&&(N=S.pattern.prefix.length,C=S);if(!C)return S?[h$1(Ds.join(F,n))]:[];let H=n.slice(C.pattern.prefix.length,n.length-C.pattern.suffix.length);return C.substitutions.map(n=>h$1(n.replace(`*`,H)))}},`createPathsMatcher`)});function workspacesForChangedFiles(n,a){let S=new Set,C=[],N={children:new Map};for(let a of n){if(a.relativeLocation===`.`||a.relativeLocation===``)continue;let n=a.relativeLocation.split(`/`).filter(Boolean),S=N;for(let a of n){let n=S.children.get(a);n||(n={children:new Map},S.children.set(a,n)),S=n}S.ws=a.name}for(let n of a){if(!n)continue;let a=n.replace(/\\/g,`/`).split(`/`).filter(Boolean),F=N,I;for(let n of a){if(F=F.children.get(n),!F)break;F.ws&&(I=F.ws)}I?S.add(I):C.push(n)}return{matched:S,unmatched:C}}var P_=__esmMin(()=>{});function expandPattern$1(n,a){let S=a.split(`/`).filter(Boolean),C=[ms(n)];for(let n of S){let a=[];for(let S of C)if(n===`*`){let n=[];try{n=readdirSync(S)}catch{continue}for(let C of n){if(C.startsWith(`.`))continue;let n=_s(S,C);try{statSync(n).isDirectory()&&a.push(n)}catch{}}}else if(n.includes(`*`)){let C=globToRegex$1(n),N=[];try{N=readdirSync(S)}catch{continue}for(let n of N){if(n.startsWith(`.`)||!C.test(n))continue;let N=_s(S,n);try{statSync(N).isDirectory()&&a.push(N)}catch{}}}else{let C=_s(S,n);if(existsSync(C))try{statSync(C).isDirectory()&&a.push(C)}catch{}}C=a}return C}function globToRegex$1(n){let a=n.replace(/[.+?^${}()|[\]\\]/g,`\\$&`).replace(/\*/g,`[^/]*`);return RegExp(`^${a}$`)}var F_=__esmMin(()=>{gl(),Os(),__name$1(expandPattern$1,`expandPattern`),__name$1(globToRegex$1,`globToRegex`)});function discoverWorkspaces(n,a={}){let S=_s(n,`package.json`);if(!existsSync(S))throw Error(`@gjsify/workspace: no package.json at ${n}`);let C=JSON.parse(readFileSync(S,`utf-8`)),N=a.patterns??extractWorkspacePatterns(C),F=N.filter(n=>!n.startsWith(`!`)),I=N.filter(n=>n.startsWith(`!`)).map(n=>globToRegex$1(n.slice(1))),H=[],W=new Set;a.includeRoot&&C.name&&(H.push({location:n,relativeLocation:`.`,name:C.name,version:C.version??`0.0.0`,manifest:C,private:C.private===!0}),W.add(n));for(let a of F)for(let S of expandPattern$1(n,a)){if(W.has(S))continue;let a=vs(n,S).split(Ts).join(`/`);if(I.some(n=>n.test(a)))continue;let C=_s(S,`package.json`);if(!existsSync(C))continue;let N;try{N=JSON.parse(readFileSync(C,`utf-8`))}catch{continue}N.name&&(W.add(S),H.push({location:S,relativeLocation:a,name:N.name,version:N.version??`0.0.0`,manifest:N,private:N.private===!0}))}return H.sort((n,a)=>n.relativeLocation.localeCompare(a.relativeLocation)),H}function filterWorkspaces(n,a){let S=a.include?.map(globToRegex$1),C=a.exclude?.map(globToRegex$1);return n.filter(n=>!(a.noPrivate&&n.private||S&&S.length>0&&!S.some(a=>a.test(n.name))||C&&C.some(a=>a.test(n.name))))}function extractWorkspacePatterns(n){let a=n.workspaces;return a?Array.isArray(a)?a:a.packages??[]:[]}function indexByName(n){let a=new Map;for(let S of n)a.set(S.name,S);return a}var I_=__esmMin(()=>{F_(),gl(),Os()});function buildDependencyGraph(n,a={}){let S=a.includeDev??!1,C=a.includePeer??!1,N=a.includeOptional??!0,F=indexByName(n),I=new Map;for(let a of n){let n=new Set,H=a.manifest;for(let a of[H.dependencies,S?H.devDependencies:void 0,C?H.peerDependencies:void 0,N?H.optionalDependencies:void 0])if(a)for(let[S,C]of Object.entries(a))typeof C==`string`&&C.startsWith(`workspace:`)&&F.has(S)&&n.add(S);I.set(a.name,n)}return{edges:I,byName:F}}function topologicalSort(n){let a=new Map,S=new Map;for(let C of n.edges.keys())a.set(C,new Set),S.set(C,0);for(let[C,N]of n.edges)for(let n of N)a.has(n)&&(a.get(n).add(C),S.set(C,(S.get(C)??0)+1));let C=[];for(let[n,a]of S)a===0&&C.push(n);C.sort();let N=[];for(;C.length>0;){let F=C.shift(),I=n.byName.get(F);I&&N.push(I);let H=a.get(F);if(H){let n=[];for(let a of H){let C=(S.get(a)??1)-1;S.set(a,C),C===0&&n.push(a)}n.sort(),C.push(...n)}}if(N.length!==S.size){let n=[...S.entries()].filter(([,n])=>n>0).map(([n])=>n);throw Error(`@gjsify/workspace: dependency cycle detected involving ${n.join(`, `)}`)}return N}function buildReverseDependencyGraph(n,a={}){let S=buildDependencyGraph(n,a),C=new Map;for(let n of S.edges.keys())C.set(n,new Set);for(let[n,a]of S.edges)for(let S of a){let a=C.get(S);a&&a.add(n)}return{edges:C,byName:S.byName}}function affectedClosure(n,a){let S=new Set,C=[];for(let N of a)n.byName.has(N)&&(S.has(N)||(S.add(N),C.push(N)));for(;C.length>0;){let a=C.shift(),N=n.edges.get(a);if(N)for(let n of N)S.has(n)||(S.add(n),C.push(n))}return S}var L_=__esmMin(()=>{I_()}),R_=__esmMin(()=>{P_(),I_(),L_(),Os()});function stripBom(n){return n.charCodeAt(0)===65279?n.slice(1):n}function readPackageJson$2(n){try{return JSON.parse(stripBom(readFileSync(n,`utf-8`)))}catch{return null}}var z_=__esmMin(()=>{gl(),__name$1(readPackageJson$2,`readPackageJson`)});function findWorkspaceRoot(n){let a=n;for(let S=0;S<12;S++){let S=_s(a,`package.json`);if(existsSync(S)&&readPackageJson$2(S)?.workspaces!==void 0)try{let S=discoverWorkspaces(a);if(a===n||S.some(a=>a.location===n))return a}catch{}let C=ms(a,`..`);if(C===a)break;a=C}return null}var B_=__esmMin(()=>{gl(),Os(),R_(),z_()});function resolveNpmPackage(n,a={}){let S=a.cwd??process.cwd(),C=process.env.GJSIFY_NODE_PATH;if(C)for(let a of C.split(Es).filter(Boolean)){let S=tryResolveFromDir(n,ms(a));if(S)return S}let N=tryResolveFromDir(n,S);if(N)return N;let F=findWorkspaceRoot(S);if(F&&F!==S){let a=tryResolveFromDir(n,F);if(a)return a}if(a.bundleUrl)try{return createRequire(a.bundleUrl).resolve(n)}catch{}let I=ms(S,`..`);for(let a=0;a<8;a++){let a=tryResolveFromDir(n,I);if(a)return a;let S=ms(I,`..`);if(S===I)break;I=S}return null}function tryResolveFromDir(n,a){try{let S=pathToFileURL(_s(a,`__gjsify_resolve__.js`)).href;return createRequire(S).resolve(n)}catch{return null}}var V_=__esmMin(()=>{is(),rn(),Os(),B_()});async function loadNpmRolldown(){if(isGjs())throw Error("gjsify build: no usable bundler engine under GJS — `@gjsify/rolldown-native` is not loadable, and the npm `rolldown` engine is a Rust napi crate that cannot run under GJS.\n"+diagnoseNativeEngine());return(await import(resolveImportTargetForGjs(`rolldown`))).rolldown}function diagnoseNativeEngine(){let n=null;try{let a=bs(new URL(import.meta.url).pathname);n=findRolldownNativeDir(process.cwd(),a)}catch{n=null}if(n===null)return`\`@gjsify/rolldown-native\` is NOT INSTALLED — no node_modules/@gjsify/rolldown-native was found walking up from ${process.cwd()} or from the CLI bundle's own directory.\nInstall it: \`gjsify install @gjsify/rolldown-native\` (in the gjsify repo: \`gjsify install\`). Running the build under Node also works — there the npm \`rolldown\` crate is used instead.`;let a=_s(n,`lib`,`esm`,`index.js`);return existsSync(a)?`The JS facade is built, so this is the typelib/prebuild lookup failing. Most likely the CLI bundle was invoked DIRECTLY (\`gjs -m …/cli.gjs.mjs\`, or by executing dist/cli.gjs.mjs), which bypasses the \`gjsify\` launcher that exports GI_TYPELIB_PATH / LD_LIBRARY_PATH for the prebuilds. The typelib lookup happens inside the GJS runtime, so those must be set BEFORE the process starts — the CLI cannot repair it from the inside. Run through the \`gjsify\` bin instead (\`node_modules/.bin/gjsify …\`, or the globally installed shim), or export the env yourself:
632
632
  P=${_s(n,`prebuilds`,`${process.platform??`linux`}-${process.arch??`x64`}`)}\n GI_TYPELIB_PATH=\$P LD_LIBRARY_PATH=\$P gjs -m …/cli.gjs.mjs build …
633
- Otherwise: no prebuild exists for this architecture. Running the build under Node also works.`:`The engine's JS facade is NOT BUILT: ${a} does not exist.\nIt is a BUILD OUTPUT, not something \`gjsify install\` produces — so a freshly cloned or freshly installed tree never has it, and every \`gjsify build\` under GJS fails here until it is built once. Building it needs a bundler, which is why it cannot bootstrap itself under GJS; the Node CLI entry does it instead. From the gjsify repo root:
633
+ Otherwise: no prebuild exists for this architecture. Running the build under Node also works.`:`The engine's JS facade is NOT BUILT: ${a} does not exist.\nIt is a BUILD OUTPUT, so this is almost certainly a clone of the gjsify REPOSITORY rather than a consumer install: in a clone, node_modules/@gjsify/rolldown-native is a symlink to the workspace package, whose \`lib/\` no \`gjsify install\` produces. An installed package from npm is NOT affected — the published tarball does contain \`lib/esm/index.js\` (verified against 0.26.1), so a consumer that hit this message should report it.
634
+ Building it needs a bundler, which is why it cannot bootstrap itself under GJS; the Node CLI entry does it instead. From the gjsify repo root — NOTE both of these REQUIRE Node:
634
635
  gjsify run build:infra # the full cold-tree chain (recommended)
635
636
  node scripts/bootstrap-native-facades.mjs # just the facades, if the rest is already built
636
- Both are idempotent and skip already-built facades in seconds.`}function resolveImportTargetForGjs(n){if(!isGjs())return n;let a=resolveNpmPackage(n,{bundleUrl:import.meta.url});return a?pathToFileURL(a).href:n}async function bundleToChunks(n){if(await shouldUseNative()){let a=await tryLoadNative();if(!a)throw Error(`@gjsify/rolldown-native not loadable`);let S=n.rolldownInput.plugins??[],C=[];for(let n of S)isPluginObject(n)&&C.push(toNativePlugin(n));let N=liftTransformExtras(stripUnserializable({...n.rolldownInput,input:normalizeInputForNative(n.rolldownInput.input),format:n.format}));delete N.plugins;let F=await a.bundleWithPlugins(N,C);reportNativeWarnings(F,n.rolldownInput);let I=[];for(let n of F.output)n.type===`chunk`&&I.push(n.code);return I}let a=await(await loadNpmRolldown())(n.rolldownInput);try{let S=await a.generate({format:n.format,minify:!1,sourcemap:!1}),C=[];for(let n of S.output)n.type===`chunk`&&C.push(n.code);return C}finally{await a.close()}}async function runWatch(n){if(await shouldUseNative())throw Error("`gjsify build --watch` requires the npm `rolldown` engine. The native engine (`@gjsify/rolldown-native`) does not expose a watcher API. Run the watch loop under Node (`node lib/index.js build … --watch`) or set `GJSIFY_BUNDLER=npm`.");let a=await import(resolveImportTargetForGjs(`rolldown`)),S=n.output??{};return a.watch({...n,output:S})}async function runBundle(n){if(await shouldUseNative())return await runNativeBundle(n);let a=await(await loadNpmRolldown())(n);try{return await a.write(n.output??{})}finally{await a.close()}}async function shouldUseNative(){let n=(globalThis.process?.env??{}).GJSIFY_BUNDLER;if(n===`npm`)return!1;if(n===`native`){if(!await tryLoadNative())throw Error(`GJSIFY_BUNDLER=native but @gjsify/rolldown-native is not loadable (no prebuild for this architecture, or not running under GJS).`);return!0}return isGjs()?await tryLoadNative()!==null:!1}function findRolldownNativeDir(n,a){let S=_s(`node_modules`,`@gjsify`,`rolldown-native`,`package.json`),C=[n];a&&a!==n&&C.push(a);for(let n of C){let a=n;for(let n=0;n<12;n++){if(existsSync(_s(a,S)))return _s(a,`node_modules`,`@gjsify`,`rolldown-native`);let n=ms(a,`..`);if(n===a)break;a=n}}return null}async function tryLoadNative(){return H_||(H_=(async()=>{if(!isGjs())return null;try{let n=`@gjsify/rolldown-native`,a=n;if(isGjs()){let S=bs(new URL(import.meta.url).pathname),C=resolveNpmPackage(n,{bundleUrl:import.meta.url}),N=C?null:(()=>{let a=findRolldownNativeDir(process.cwd(),S);if(!a)return null;try{return createRequire(pathToFileURL(_s(a,`__gjsify_resolve__.js`)).href).resolve(n)}catch{return null}})();a=pathToFileURL(C??N??createRequire(import.meta.url).resolve(n)).href}let S=await import(a);return S.hasNativeRolldown()?S:null}catch{return null}})(),H_)}async function runNativeBundle(n){let a=await tryLoadNative();if(!a)throw Error(`@gjsify/rolldown-native not loadable`);let S=n.plugins??[],C=[];for(let n of S)isPluginObject(n)&&C.push(toNativePlugin(n));let{output:N,plugins:F,...I}=n,H=liftTransformExtras(stripUnserializable({...I,...N,input:normalizeInputForNative(n.input)}));globalThis.process?.env?.GJSIFY_DEBUG_NATIVE_OPTS&&ge.error(`[gjsify-bundler-pick] native opts JSON:`,JSON.stringify(H));let W=await a.bundleWithPlugins(H,C);reportNativeWarnings(W,n);let K=n.output??{},q=K.dir??(K.file?bs(K.file):process.cwd());q&&await Kc.mkdir(q,{recursive:!0});for(let n of W.output){let a=K.file&&n.type===`chunk`&&W.output.length===1?K.file:_s(q,n.fileName);await Kc.mkdir(bs(a),{recursive:!0}),n.type===`chunk`?(await Kc.writeFile(a,n.code,`utf8`),typeof n.map==`string`&&await Kc.writeFile(`${a}.map`,n.map,`utf8`)):n.sourceText!==void 0&&await Kc.writeFile(a,n.sourceText,`utf8`)}return synthRolldownOutput(W)}function reportNativeWarnings(n,a){if(a.logLevel===`silent`||!Array.isArray(n.warnings)||n.warnings.length===0)return;let S=new Set;for(let a of n.warnings)S.has(a)||(S.add(a),ge.warn(`[gjsify-bundler] ${a}`))}function stripUnserializable(n){let a={};for(let[S,C]of Object.entries(n)){if(typeof C==`function`){if(!U_.has(S)){U_.add(S);let n=S===`external`?" Function `external` predicates are NOT supported by the native engine — pass exact names as a string array and/or enforce shape rules via a resolveId plugin returning `{ external: true }` (see externalsPlugin in @gjsify/rolldown-plugin-gjsify).":` Function-valued options do not survive the JSON boundary to the Rust core.`;ge.warn(`[gjsify-bundler] dropping non-serializable option "${S}" for the native rolldown engine — behavior may diverge from npm rolldown.${n}`)}continue}if(S===`external`&&Array.isArray(C)){let n=C.find(n=>typeof n!=`string`);if(n!==void 0)throw Error(`gjsify build: \`external\` entries must be exact string names under the native rolldown engine (got ${n instanceof RegExp?n.toString():typeof n}). RegExp/function externals are only supported by npm rolldown — use exact names or a resolveId plugin returning \`{ external: true }\`.`);a[S]=C;continue}if(S===`sourcemap`){let n=translateSourcemapOption(C);n!==void 0&&(a[S]=n);continue}a[S]=C}return a}function translateSourcemapOption(n){if(n===!0||n===`file`||n===`File`)return`File`;if(n===`inline`||n===`Inline`)return`Inline`;if(n===`hidden`||n===`Hidden`)return`Hidden`}function liftTransformExtras(n){let a=n.transform;if(!a)return n;let S={},C={...a};for(let n of[`define`,`inject`])n in C&&(S[n]=C[n],delete C[n]);return S.inject!==void 0&&!Array.isArray(S.inject)&&(S.inject=mapToInjectArray(S.inject)),{...n,transform:Object.keys(C).length===0?void 0:C,...S}}function mapToInjectArray(n){let a=[];for(let[S,C]of Object.entries(n))if(typeof C==`string`)a.push({type:`named`,imported:`default`,from:C,alias:S});else{let[n,N]=C;N===`*`?a.push({type:`namespace`,from:n,alias:S}):a.push({type:`named`,from:n,imported:N,alias:S})}return a}function normalizeInputForNative(n){return n===void 0?[]:typeof n==`string`?[{import:n}]:Array.isArray(n)?n.map(n=>typeof n==`string`?{import:n}:n):Object.entries(n).map(([n,a])=>({name:n,import:a}))}function isPluginObject(n){return typeof n==`object`&&!!n&&!Array.isArray(n)}function pickHook(n){if(typeof n==`function`)return{fn:n};if(typeof n==`object`&&n&&`handler`in n){let a=n,S=filterToRegexSource(a.filter?.id),C={fn:a.handler};return S!==void 0&&(C.idFilter=S),C}}function filterToRegexSource(n){if(n!==void 0){if(Array.isArray(n)){let a=n.map(oneToSource).filter(n=>n!==void 0);return a.length===0?void 0:a.length===1?a[0]:`(?:${a.join(`|`)})`}return oneToSource(n)}}function oneToSource(n){if(n instanceof RegExp)return n.source;if(typeof n==`string`)return n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function toNativePlugin(n){let a={name:typeof n.name==`string`?n.name:`unnamed-plugin`},S={},C=pickHook(n.load);C&&(a.load=C.fn,C.idFilter&&(S.load=C.idFilter));let N=pickHook(n.transform);N&&(a.transform=N.fn,N.idFilter&&(S.transform=N.idFilter));let F=pickHook(n.resolveId);F&&(a.resolveId=F.fn,F.idFilter&&(S.resolveId=F.idFilter));let I=pickHook(n.renderChunk);I&&(a.renderChunk=I.fn);let H=pickHook(n.banner);H&&(a.banner=H.fn);let W=pickHook(n.footer);W&&(a.footer=W.fn);let K=pickHook(n.intro);K&&(a.intro=K.fn);let q=pickHook(n.outro);q&&(a.outro=q.fn);let Y=pickHook(n.buildStart);Y&&(a.buildStart=Y.fn);let X=pickHook(n.buildEnd);X&&(a.buildEnd=X.fn);let te=pickHook(n.generateBundle);te&&(a.generateBundle=te.fn);let ne=pickHook(n.writeBundle);ne&&(a.writeBundle=ne.fn);let re=pickHook(n.closeBundle);return re&&(a.closeBundle=re.fn),Object.keys(S).length>0&&(a.idFilter=S),a}function synthRolldownOutput(n){return{output:n.output.map(n=>n.type===`chunk`?{type:`chunk`,fileName:n.fileName,code:n.code,name:n.name,isEntry:n.isEntry,isDynamicEntry:n.isDynamicEntry,map:n.map??null,sourcemapFileName:n.sourcemapFilename??null,imports:n.imports,dynamicImports:n.dynamicImports,facadeModuleId:null,moduleIds:[],modules:{},exports:[],referencedFiles:[],importedBindings:{}}:{type:`asset`,fileName:n.fileName,names:n.names,originalFileNames:n.originalFileNames,source:n.sourceText??``,needsCodeReference:!1})}}var H_,U_,W_=__esmMin(()=>{_e(),gl(),Os(),is(),rn(),V_(),Tm(),H_=null,U_=new Set}),G_=__esmMin(()=>{}),K_=__esmMin(()=>{}),q_=__esmMin(()=>{}),J_=__esmMin(()=>{G_(),K_(),q_()});function collectPlatformEntries(n){let a=new Set;if(!n||typeof n!=`object`)return a;for(let S of X_)S!==`gjs`&&Object.prototype.hasOwnProperty.call(n,`./${S}`)&&a.add(S);return a}function findScanRoots(){let n=[],a=bs(fileURLToPath(import.meta.url));for(let S=0;S<8;S++){let S=ms(a,`packages`);existsSync(S)&&[`node`,`web`,`dom`,`framework`,`infra`].some(n=>existsSync(_s(S,n)))&&n.push({kind:`workspace`,dir:S});let C=ms(a,`node_modules`,`@gjsify`);existsSync(C)&&n.push({kind:`installed`,dir:C});let N=bs(a);if(N===a)break;a=N}try{let a=ms(process.cwd(),`node_modules`,`@gjsify`);existsSync(a)&&n.push({kind:`installed`,dir:a})}catch{}return n}function ingestPackageDirSync(n,a){let S=_s(n,`package.json`);if(existsSync(S))try{let C=readFileSync(S,`utf8`),N=JSON.parse(C),F=typeof N.name==`string`?N.name:null,I=N?.gjsify?.runtimes;if(F&&F.startsWith(`@gjsify/`)&&!a.has(F)&&I&&typeof I==`object`){let S={};for(let n of X_){let a=I[n];typeof a==`string`&&Y_.has(a)&&(S[n]=a)}let C=existsSync(_s(n,`globals.mjs`)),H=collectPlatformEntries(N?.exports);a.set(F,{name:F,dir:n,runtimes:S,hasGlobals:C,platformEntries:H})}}catch{}}function getCacheSync(){if(Z_)return Z_;let n=findScanRoots(),a=new Map;if(n.length===0)return Z_=a,Z_;function walkWorkspace(n){let S;try{S=readdirSync(n,{withFileTypes:!0})}catch{return}if(existsSync(_s(n,`package.json`))){ingestPackageDirSync(n,a);return}for(let a of S)a.isDirectory()&&(a.name===`node_modules`||a.name===`lib`||a.name===`dist`||a.name.startsWith(`.`)||walkWorkspace(_s(n,a.name)))}function walkInstalled(n){let S;try{S=readdirSync(n,{withFileTypes:!0})}catch{return}for(let C of S)!C.isDirectory()&&!C.isSymbolicLink()||C.name.startsWith(`.`)||ingestPackageDirSync(_s(n,C.name),a)}for(let a of n)a.kind===`workspace`?walkWorkspace(a.dir):walkInstalled(a.dir);return Z_=a,Z_}function warnOnce(n,a){Q_.has(n)||(Q_.add(n),ge.warn(`[@gjsify/resolve-npm] ${a}`))}function resolveSlot(n,a){let S=n.runtimes[a];if(!S)return null;switch(S){case`polyfill`:return a!==`gjs`&&n.platformEntries?.has(a)?`${n.name}/${a}`:null;case`partial`:return null;case`native`:return n.hasGlobals?`${n.name}/globals`:(warnOnce(`${n.name}-${a}-native-missing-globals`,`${n.name} declares runtimes.${a}="native" but ships no globals.mjs — falling back to @gjsify/empty for --app ${a} builds.`),`@gjsify/empty`);case`none`:return null;default:return null}}function getDerivedAliasesSync(n){if(!X_.has(n))return{};let a=getCacheSync(),S={};for(let C of a.values()){let a=resolveSlot(C,n);a!==null&&a!==C.name&&(S[C.name]=a)}return S}var Y_,X_,Z_,Q_,$_=__esmMin(()=>{_e(),Jc(),gl(),Os(),rn(),Y_=new Set([`polyfill`,`native`,`partial`,`none`]),X_=new Set([`gjs`,`node`,`browser`,`nativescript`]),Z_=null,Q_=new Set});function withDerivedSlotRouting(n,a){let S=null,materialise=()=>{if(S)return S;let C=getDerivedAliasesSync(a),N={};for(let[a,S]of Object.entries(n))N[a]=Object.prototype.hasOwnProperty.call(C,S)?C[S]:S;return S=N,S};return new Proxy(n,{get:(a,S)=>typeof S==`string`?materialise()[S]:Reflect.get(n,S),has:(n,a)=>Reflect.has(materialise(),a),ownKeys:()=>Reflect.ownKeys(materialise()),getOwnPropertyDescriptor:(n,a)=>Reflect.getOwnPropertyDescriptor(materialise(),a)})}var ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv=__esmMin(()=>{$_(),ev=`assert.assert/strict.async_hooks.buffer.child_process.cluster.console.constants.crypto.dgram.diagnostics_channel.dns.dns/promises.domain.events.fs.fs/promises.http.http2.https.inspector.module.net.os.path.path/posix.path/win32.perf_hooks.process.punycode.querystring.readline.readline/promises.repl.stream.stream/web.stream/consumers.stream/promises.string_decoder.sys.test.timers.timers/promises.tls.tty.url.util.util/types.v8.vm.wasi.sqlite.worker_threads.zlib`.split(`.`),tv=[`readable-stream`,`node-fetch`],nv={jsdom:`@gjsify/empty`,"./polling-xhr.node.js":`./polling-xhr.js`,"./websocket.node.js":`./websocket.js`,"./globals.node.js":`./globals.js`},rv={assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert/strict`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,child_process:`@gjsify/child_process`,cluster:`@gjsify/cluster`,console:`@gjsify/console`,constants:`@gjsify/constants`,crypto:`@gjsify/crypto`,dgram:`@gjsify/dgram`,diagnostics_channel:`@gjsify/diagnostics_channel`,dns:`@gjsify/dns`,"dns/promises":`@gjsify/dns/promises`,domain:`@gjsify/domain`,events:`@gjsify/events`,fs:`@gjsify/fs`,"fs/promises":`@gjsify/fs/promises`,http:`@gjsify/http`,http2:`@gjsify/http2`,https:`@gjsify/https`,inspector:`@gjsify/inspector`,module:`@gjsify/module`,net:`@gjsify/net`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,perf_hooks:`@gjsify/perf_hooks`,process:`@gjsify/process`,punycode:`@gjsify/punycode`,querystring:`@gjsify/querystring`,readline:`@gjsify/readline`,"readline/promises":`@gjsify/readline/promises`,repl:`@gjsify/repl`,stream:`@gjsify/stream`,"stream/web":`@gjsify/stream/web`,"stream/consumers":`@gjsify/stream/consumers`,"stream/promises":`@gjsify/stream/promises`,string_decoder:`@gjsify/string_decoder`,sys:`@gjsify/sys`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,tls:`@gjsify/tls`,tty:`@gjsify/tty`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,v8:`@gjsify/v8`,vm:`@gjsify/vm`,wasi:`@gjsify/wasi`,sqlite:`@gjsify/sqlite`,worker_threads:`@gjsify/worker_threads`,zlib:`@gjsify/zlib`,"node-fetch":`@gjsify/fetch`,ws:`@gjsify/ws`,"isomorphic-ws":`@gjsify/websocket`},iv={assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert/strict`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,child_process:`@gjsify/child_process/browser`,cluster:`@gjsify/empty`,console:`@gjsify/console`,constants:`@gjsify/constants`,crypto:`@gjsify/crypto/browser`,dgram:`@gjsify/empty`,diagnostics_channel:`@gjsify/diagnostics_channel`,dns:`@gjsify/dns/browser`,"dns/promises":`@gjsify/empty`,domain:`@gjsify/domain`,events:`@gjsify/events`,fs:`@gjsify/fs/browser`,"fs/promises":`@gjsify/fs/browser/promises`,http:`@gjsify/http/browser`,http2:`@gjsify/empty`,https:`@gjsify/https/browser`,inspector:`@gjsify/empty`,module:`@gjsify/module/browser`,net:`@gjsify/net/browser`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,perf_hooks:`@gjsify/perf_hooks`,process:`@gjsify/process`,punycode:`@gjsify/punycode`,querystring:`@gjsify/querystring`,readline:`@gjsify/empty`,"readline/promises":`@gjsify/empty`,repl:`@gjsify/empty`,stream:`@gjsify/stream`,"stream/web":`@gjsify/stream/web`,"stream/consumers":`@gjsify/stream/consumers`,"stream/promises":`@gjsify/stream/promises`,string_decoder:`@gjsify/string_decoder`,sys:`@gjsify/sys`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,tls:`@gjsify/tls/browser`,tty:`@gjsify/empty`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,v8:`@gjsify/empty`,vm:`@gjsify/vm`,wasi:`@gjsify/empty`,sqlite:`@gjsify/sqlite/browser`,worker_threads:`@gjsify/worker_threads/browser`,zlib:`@gjsify/zlib/browser`,"node-fetch":`@gjsify/empty`,ws:`@gjsify/ws/browser`,"isomorphic-ws":`@gjsify/empty`},av=withDerivedSlotRouting(iv,`browser`),ov={child_process:`@gjsify/empty`,cluster:`@gjsify/empty`,dgram:`@gjsify/empty`,dns:`@gjsify/empty`,"dns/promises":`@gjsify/empty`,inspector:`@gjsify/empty`,net:`@gjsify/empty`,tls:`@gjsify/empty`,tty:`@gjsify/empty`,http:`@gjsify/empty`,https:`@gjsify/empty`,http2:`@gjsify/empty`,readline:`@gjsify/empty`,repl:`@gjsify/empty`,v8:`@gjsify/empty`,vm:`@gjsify/empty`,worker_threads:`@gjsify/empty`,perf_hooks:`@gjsify/empty`,diagnostics_channel:`@gjsify/empty`,domain:`@gjsify/empty`,sqlite:`@gjsify/empty`,sys:`@gjsify/empty`,zlib:`@gjsify/empty`,assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,module:`@gjsify/module`,crypto:`@gjsify/crypto`,events:`@gjsify/events`,fs:`@gjsify/native-fs-bridge`,"fs/promises":`@gjsify/native-fs-bridge`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,process:`@gjsify/process`,stream:`@gjsify/stream`,"stream/promises":`@gjsify/stream/promises`,"stream/web":`@gjsify/stream/web`,string_decoder:`@gjsify/string_decoder`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,querystring:`@gjsify/querystring`,console:`@gjsify/console`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,"node-fetch":`@gjsify/empty`,ws:`@gjsify/empty`,"isomorphic-ws":`@gjsify/empty`},sv={"abort-controller":`@gjsify/abort-controller`,"compression-streams":`@gjsify/compression-streams`,"dom-events":`@gjsify/dom-events`,"dom-exception":`@gjsify/dom-exception`,"event-target-shim":`@gjsify/dom-events`,"message-channel":`@gjsify/message-channel`,eventsource:`@gjsify/eventsource`,fetch:`@gjsify/fetch`,formdata:`@gjsify/formdata`,"html-image-element":`@gjsify/html-image-element`,webcrypto:`@gjsify/webcrypto`,webgl:`@gjsify/webgl`,websocket:`@gjsify/websocket`,webstorage:`@gjsify/webstorage`,"abort-controller/register":`@gjsify/abort-controller/register`,"compression-streams/register":`@gjsify/compression-streams/register`,"dom-events/register":`@gjsify/dom-events/register`,"dom-events/register/event-target":`@gjsify/dom-events/register/event-target`,"dom-events/register/custom-events":`@gjsify/dom-events/register/custom-events`,"dom-events/register/ui-events":`@gjsify/dom-events/register/ui-events`,"dom-exception/register":`@gjsify/dom-exception/register`,"message-channel/register":`@gjsify/message-channel/register`,"eventsource/register":`@gjsify/eventsource/register`,"websocket/register":`@gjsify/websocket/register`,"fetch/register":`@gjsify/fetch/register`,"fetch/register/fetch":`@gjsify/fetch/register/fetch`,"fetch/register/xhr":`@gjsify/fetch/register/xhr`,"webcrypto/register":`@gjsify/webcrypto/register`,"web-streams/register":`@gjsify/web-streams/register`,"web-streams/register/readable":`@gjsify/web-streams/register/readable`,"web-streams/register/writable":`@gjsify/web-streams/register/writable`,"web-streams/register/transform":`@gjsify/web-streams/register/transform`,"web-streams/register/text-streams":`@gjsify/web-streams/register/text-streams`,"web-streams/register/queuing":`@gjsify/web-streams/register/queuing`,xmlhttprequest:`@gjsify/fetch`,"xmlhttprequest/register":`@gjsify/fetch/register/xhr`,"@gjsify/xmlhttprequest":`@gjsify/fetch`,"@gjsify/xmlhttprequest/register":`@gjsify/fetch/register/xhr`,domparser:`@gjsify/domparser`,"domparser/register":`@gjsify/domparser/register`,webaudio:`@gjsify/webaudio`,"webaudio/register":`@gjsify/webaudio/register`,gamepad:`@gjsify/gamepad`,"gamepad/register":`@gjsify/gamepad/register`,webrtc:`@gjsify/webrtc`,"webrtc/register":`@gjsify/webrtc/register`,"webrtc/register/peer-connection":`@gjsify/webrtc/register/peer-connection`,"webrtc/register/data-channel":`@gjsify/webrtc/register/data-channel`,"webrtc/register/error":`@gjsify/webrtc/register/error`,"webrtc/register/media":`@gjsify/webrtc/register/media`,"webrtc/register/media-devices":`@gjsify/webrtc/register/media-devices`,webassembly:`@gjsify/webassembly`,"webassembly/register":`@gjsify/webassembly/register`,"webassembly/register/promise":`@gjsify/webassembly/register/promise`},cv={"@gjsify/node-globals":`@gjsify/empty`,"@gjsify/node-globals/register":`@gjsify/empty`,"@gjsify/node-globals/register/process":`@gjsify/empty`,"@gjsify/node-globals/register/buffer":`@gjsify/empty`,"@gjsify/node-globals/register/timers":`@gjsify/empty`,"@gjsify/node-globals/register/encoding":`@gjsify/empty`,"@gjsify/node-globals/register/url":`@gjsify/empty`,"@gjsify/node-globals/register/structured-clone":`@gjsify/empty`,"@gjsify/node-globals/register/microtask":`@gjsify/empty`,"@gjsify/web-globals":`@gjsify/empty`,"@gjsify/web-globals/register":`@gjsify/empty`,"@gjsify/web-globals/register/performance":`@gjsify/empty`,"@gjsify/web-globals/register/formdata":`@gjsify/empty`},lv={system:`@gjsify/node-gi/system`,gettext:`@gjsify/node-gi/gettext`,cairo:`@gjsify/node-gi/cairo`},uv={"abort-controller":`@gjsify/abort-controller/globals`,"compression-streams":`@gjsify/compression-streams/globals`,"dom-events":`@gjsify/dom-events`,"dom-exception":`@gjsify/dom-exception/globals`,"message-channel":`@gjsify/message-channel/globals`,eventsource:`@gjsify/eventsource`,fetch:`@gjsify/fetch/globals`,formdata:`@gjsify/formdata/globals`,"html-image-element":`@gjsify/html-image-element`,webcrypto:`@gjsify/webcrypto/globals`,webgl:`@gjsify/webgl`,websocket:`@gjsify/websocket/globals`,webstorage:`@gjsify/webstorage`,"abort-controller/register":`@gjsify/empty`,"compression-streams/register":`@gjsify/empty`,"dom-events/register":`@gjsify/empty`,"dom-events/register/event-target":`@gjsify/empty`,"dom-events/register/custom-events":`@gjsify/empty`,"dom-events/register/ui-events":`@gjsify/empty`,"dom-exception/register":`@gjsify/empty`,"message-channel/register":`@gjsify/empty`,"eventsource/register":`@gjsify/empty`,"websocket/register":`@gjsify/empty`,"fetch/register":`@gjsify/empty`,"fetch/register/fetch":`@gjsify/empty`,"fetch/register/xhr":`@gjsify/empty`,"webcrypto/register":`@gjsify/empty`,"web-streams/register":`@gjsify/empty`,"web-streams/register/readable":`@gjsify/empty`,"web-streams/register/writable":`@gjsify/empty`,"web-streams/register/transform":`@gjsify/empty`,"web-streams/register/text-streams":`@gjsify/empty`,"web-streams/register/queuing":`@gjsify/empty`,"@gjsify/abort-controller/register":`@gjsify/empty`,"@gjsify/compression-streams/register":`@gjsify/empty`,"@gjsify/dom-events/register":`@gjsify/empty`,"@gjsify/dom-events/register/event-target":`@gjsify/empty`,"@gjsify/dom-events/register/custom-events":`@gjsify/empty`,"@gjsify/dom-events/register/ui-events":`@gjsify/empty`,"@gjsify/dom-exception/register":`@gjsify/empty`,"@gjsify/message-channel/register":`@gjsify/empty`,"@gjsify/eventsource/register":`@gjsify/empty`,"@gjsify/websocket/register":`@gjsify/empty`,"@gjsify/fetch/register":`@gjsify/empty`,"@gjsify/fetch/register/fetch":`@gjsify/empty`,"@gjsify/fetch/register/xhr":`@gjsify/empty`,"@gjsify/webcrypto/register":`@gjsify/empty`,"@gjsify/web-streams/register":`@gjsify/empty`,"@gjsify/web-streams/register/readable":`@gjsify/empty`,"@gjsify/web-streams/register/writable":`@gjsify/empty`,"@gjsify/web-streams/register/transform":`@gjsify/empty`,"@gjsify/web-streams/register/text-streams":`@gjsify/empty`,"@gjsify/web-streams/register/queuing":`@gjsify/empty`,"@gjsify/dom-elements/register":`@gjsify/empty`,"@gjsify/dom-elements/register/document":`@gjsify/empty`,"@gjsify/dom-elements/register/canvas":`@gjsify/empty`,"@gjsify/dom-elements/register/image":`@gjsify/empty`,"@gjsify/dom-elements/register/observers":`@gjsify/empty`,"@gjsify/dom-elements/register/font-face":`@gjsify/empty`,"@gjsify/dom-elements/register/match-media":`@gjsify/empty`,"@gjsify/dom-elements/register/location":`@gjsify/empty`,"@gjsify/dom-elements/register/navigator":`@gjsify/empty`,"@gjsify/canvas2d/register":`@gjsify/empty`,"@gjsify/iframe/register":`@gjsify/empty`,"@gjsify/webgl/register":`@gjsify/empty`,"@gjsify/buffer/register":`@gjsify/empty`,xmlhttprequest:`@gjsify/empty`,"xmlhttprequest/register":`@gjsify/empty`,"@gjsify/xmlhttprequest":`@gjsify/empty`,"@gjsify/xmlhttprequest/register":`@gjsify/empty`,domparser:`@gjsify/empty`,"domparser/register":`@gjsify/empty`,"@gjsify/domparser/register":`@gjsify/empty`,webaudio:`@gjsify/empty`,"webaudio/register":`@gjsify/empty`,"@gjsify/webaudio/register":`@gjsify/empty`,gamepad:`@gjsify/empty`,"gamepad/register":`@gjsify/empty`,"@gjsify/gamepad/register":`@gjsify/empty`,webrtc:`@gjsify/empty`,"webrtc/register":`@gjsify/empty`,"webrtc/register/peer-connection":`@gjsify/empty`,"webrtc/register/data-channel":`@gjsify/empty`,"webrtc/register/error":`@gjsify/empty`,"webrtc/register/media":`@gjsify/empty`,"webrtc/register/media-devices":`@gjsify/empty`,"@gjsify/webrtc":`@gjsify/empty`,"@gjsify/webrtc/register":`@gjsify/empty`,"@gjsify/webrtc/register/peer-connection":`@gjsify/empty`,"@gjsify/webrtc/register/data-channel":`@gjsify/empty`,"@gjsify/webrtc/register/error":`@gjsify/empty`,"@gjsify/webrtc/register/media":`@gjsify/empty`,"@gjsify/webrtc/register/media-devices":`@gjsify/empty`,webassembly:`@gjsify/webassembly/globals`,"webassembly/register":`@gjsify/empty`,"webassembly/register/promise":`@gjsify/empty`,"@gjsify/webassembly/register":`@gjsify/empty`,"@gjsify/webassembly/register/promise":`@gjsify/empty`}}),setNodeAliasPrefix,getAliasesGeneralForGjs,getAliasesNodeForGjs,getAliasesWebForGjs,getAliasesGeneralForNode,getAliasesGjsForNode,getAliasesWebForNode,getAliasesForGjs,getAliasesForNode,fv=__esmMin(()=>{dv(),setNodeAliasPrefix=n=>{for(let a in n){if(a.startsWith(`node:`))continue;let S=`node:${a}`;n[S]||(n[S]=n[a])}return n},getAliasesGeneralForGjs=n=>nv,getAliasesNodeForGjs=n=>setNodeAliasPrefix(rv),getAliasesWebForGjs=n=>sv,getAliasesGeneralForNode=n=>cv,getAliasesGjsForNode=n=>lv,getAliasesWebForNode=n=>uv,getAliasesForGjs=n=>({...getDerivedAliasesSync(`gjs`),...getAliasesGeneralForGjs(n),...getAliasesNodeForGjs(n),...getAliasesWebForGjs(n)}),getAliasesForNode=n=>({...getDerivedAliasesSync(`node`),...getAliasesGeneralForNode(n),...getAliasesGjsForNode(n),...getAliasesWebForNode(n)}),[...ev,...ev.map(n=>`node:${n}`)],[...tv]}),pv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.splitWhen=n.flatten=void 0;function flatten(n){return n.reduce((n,a)=>[].concat(n,a),[])}n.flatten=flatten;function splitWhen(n,a){let S=[[]],C=0;for(let N of n)a(N)?(C++,S[C]=[]):S[C].push(N);return S}n.splitWhen=splitWhen})),mv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isEnoentCodeError=void 0;function isEnoentCodeError(n){return n.code===`ENOENT`}n.isEnoentCodeError=isEnoentCodeError})),hv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createDirentFromStats=void 0;var DirentFromStats=class{constructor(n,a){this.name=n,this.isBlockDevice=a.isBlockDevice.bind(a),this.isCharacterDevice=a.isCharacterDevice.bind(a),this.isDirectory=a.isDirectory.bind(a),this.isFIFO=a.isFIFO.bind(a),this.isFile=a.isFile.bind(a),this.isSocket=a.isSocket.bind(a),this.isSymbolicLink=a.isSymbolicLink.bind(a)}};function createDirentFromStats(n,a){return new DirentFromStats(n,a)}n.createDirentFromStats=createDirentFromStats})),gv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.convertPosixPathToPattern=n.convertWindowsPathToPattern=n.convertPathToPattern=n.escapePosixPath=n.escapeWindowsPath=n.escape=n.removeLeadingDotSegment=n.makeAbsolute=n.unixify=void 0;let a=(um(),__toCommonJS(nm)),S=(Os(),__toCommonJS(ps)),C=a.platform()===`win32`,N=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,F=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,I=/^\\\\([.?])/,H=/\\(?![!()+@[\]{}])/g;function unixify(n){return n.replace(/\\/g,`/`)}n.unixify=unixify;function makeAbsolute(n,a){return S.resolve(n,a)}n.makeAbsolute=makeAbsolute;function removeLeadingDotSegment(n){if(n.charAt(0)===`.`){let a=n.charAt(1);if(a===`/`||a===`\\`)return n.slice(2)}return n}n.removeLeadingDotSegment=removeLeadingDotSegment,n.escape=C?escapeWindowsPath:escapePosixPath;function escapeWindowsPath(n){return n.replace(F,`\\$2`)}n.escapeWindowsPath=escapeWindowsPath;function escapePosixPath(n){return n.replace(N,`\\$2`)}n.escapePosixPath=escapePosixPath,n.convertPathToPattern=C?convertWindowsPathToPattern:convertPosixPathToPattern;function convertWindowsPathToPattern(n){return escapeWindowsPath(n).replace(I,`//$1`).replace(H,`/`)}n.convertWindowsPathToPattern=convertWindowsPathToPattern;function convertPosixPathToPattern(n){return escapePosixPath(n)}n.convertPosixPathToPattern=convertPosixPathToPattern})),_v=__commonJSMin$1(((n,a)=>{
637
+ Both are idempotent and skip already-built facades in seconds.
638
+ ON A NODE-LESS GJS HOST there is currently no in-repo way out, and saying so is the point — this message used to recommend those two commands unconditionally, and on such a host BOTH fail (the second directly, the first at \`@gjsify/create-app\`'s \`node scripts/process-template.mjs\`). Until that is closed, seed \`lib/\` from the published package — which ships it — or from a host that has Node. Tracked in \`status/open-todos.md\` ("A Node-less host cannot bootstrap a fresh CLONE").`}function resolveImportTargetForGjs(n){if(!isGjs())return n;let a=resolveNpmPackage(n,{bundleUrl:import.meta.url});return a?pathToFileURL(a).href:n}async function bundleToChunks(n){if(await shouldUseNative()){let a=await tryLoadNative();if(!a)throw Error(`@gjsify/rolldown-native not loadable`);let S=n.rolldownInput.plugins??[],C=[];for(let n of S)isPluginObject(n)&&C.push(toNativePlugin(n));let N=liftTransformExtras(stripUnserializable({...n.rolldownInput,input:normalizeInputForNative(n.rolldownInput.input),format:n.format}));delete N.plugins;let F=await a.bundleWithPlugins(N,C);reportNativeWarnings(F,n.rolldownInput);let I=[];for(let n of F.output)n.type===`chunk`&&I.push(n.code);return I}let a=await(await loadNpmRolldown())(n.rolldownInput);try{let S=await a.generate({format:n.format,minify:!1,sourcemap:!1}),C=[];for(let n of S.output)n.type===`chunk`&&C.push(n.code);return C}finally{await a.close()}}async function runWatch(n){if(await shouldUseNative())throw Error("`gjsify build --watch` requires the npm `rolldown` engine. The native engine (`@gjsify/rolldown-native`) does not expose a watcher API. Run the watch loop under Node (`node lib/index.js build … --watch`) or set `GJSIFY_BUNDLER=npm`.");let a=await import(resolveImportTargetForGjs(`rolldown`)),S=n.output??{};return a.watch({...n,output:S})}async function runBundle(n){if(await shouldUseNative())return await runNativeBundle(n);let a=await(await loadNpmRolldown())(n);try{return await a.write(n.output??{})}finally{await a.close()}}async function shouldUseNative(){let n=(globalThis.process?.env??{}).GJSIFY_BUNDLER;if(n===`npm`)return!1;if(n===`native`){if(!await tryLoadNative())throw Error(`GJSIFY_BUNDLER=native but @gjsify/rolldown-native is not loadable (no prebuild for this architecture, or not running under GJS).`);return!0}return isGjs()?await tryLoadNative()!==null:!1}function findRolldownNativeDir(n,a){let S=_s(`node_modules`,`@gjsify`,`rolldown-native`,`package.json`),C=[n];a&&a!==n&&C.push(a);for(let n of C){let a=n;for(let n=0;n<12;n++){if(existsSync(_s(a,S)))return _s(a,`node_modules`,`@gjsify`,`rolldown-native`);let n=ms(a,`..`);if(n===a)break;a=n}}return null}async function tryLoadNative(){return H_||(H_=(async()=>{if(!isGjs())return null;try{let n=`@gjsify/rolldown-native`,a=n;if(isGjs()){let S=bs(new URL(import.meta.url).pathname),C=resolveNpmPackage(n,{bundleUrl:import.meta.url}),N=C?null:(()=>{let a=findRolldownNativeDir(process.cwd(),S);if(!a)return null;try{return createRequire(pathToFileURL(_s(a,`__gjsify_resolve__.js`)).href).resolve(n)}catch{return null}})();a=pathToFileURL(C??N??createRequire(import.meta.url).resolve(n)).href}let S=await import(a);return S.hasNativeRolldown()?S:null}catch{return null}})(),H_)}async function runNativeBundle(n){let a=await tryLoadNative();if(!a)throw Error(`@gjsify/rolldown-native not loadable`);let S=n.plugins??[],C=[];for(let n of S)isPluginObject(n)&&C.push(toNativePlugin(n));let{output:N,plugins:F,...I}=n,H=liftTransformExtras(stripUnserializable({...I,...N,input:normalizeInputForNative(n.input)}));globalThis.process?.env?.GJSIFY_DEBUG_NATIVE_OPTS&&ge.error(`[gjsify-bundler-pick] native opts JSON:`,JSON.stringify(H));let W=await a.bundleWithPlugins(H,C);reportNativeWarnings(W,n);let K=n.output??{},q=K.dir??(K.file?bs(K.file):process.cwd());q&&await Kc.mkdir(q,{recursive:!0});for(let n of W.output){let a=K.file&&n.type===`chunk`&&W.output.length===1?K.file:_s(q,n.fileName);await Kc.mkdir(bs(a),{recursive:!0}),n.type===`chunk`?(await Kc.writeFile(a,n.code,`utf8`),typeof n.map==`string`&&await Kc.writeFile(`${a}.map`,n.map,`utf8`)):n.sourceText!==void 0&&await Kc.writeFile(a,n.sourceText,`utf8`)}return synthRolldownOutput(W)}function reportNativeWarnings(n,a){if(a.logLevel===`silent`||!Array.isArray(n.warnings)||n.warnings.length===0)return;let S=new Set;for(let a of n.warnings)S.has(a)||(S.add(a),ge.warn(`[gjsify-bundler] ${a}`))}function stripUnserializable(n){let a={};for(let[S,C]of Object.entries(n)){if(typeof C==`function`){if(!U_.has(S)){U_.add(S);let n=S===`external`?" Function `external` predicates are NOT supported by the native engine — pass exact names as a string array and/or enforce shape rules via a resolveId plugin returning `{ external: true }` (see externalsPlugin in @gjsify/rolldown-plugin-gjsify).":` Function-valued options do not survive the JSON boundary to the Rust core.`;ge.warn(`[gjsify-bundler] dropping non-serializable option "${S}" for the native rolldown engine — behavior may diverge from npm rolldown.${n}`)}continue}if(S===`external`&&Array.isArray(C)){let n=C.find(n=>typeof n!=`string`);if(n!==void 0)throw Error(`gjsify build: \`external\` entries must be exact string names under the native rolldown engine (got ${n instanceof RegExp?n.toString():typeof n}). RegExp/function externals are only supported by npm rolldown — use exact names or a resolveId plugin returning \`{ external: true }\`.`);a[S]=C;continue}if(S===`sourcemap`){let n=translateSourcemapOption(C);n!==void 0&&(a[S]=n);continue}a[S]=C}return a}function translateSourcemapOption(n){if(n===!0||n===`file`||n===`File`)return`File`;if(n===`inline`||n===`Inline`)return`Inline`;if(n===`hidden`||n===`Hidden`)return`Hidden`}function liftTransformExtras(n){let a=n.transform;if(!a)return n;let S={},C={...a};for(let n of[`define`,`inject`])n in C&&(S[n]=C[n],delete C[n]);return S.inject!==void 0&&!Array.isArray(S.inject)&&(S.inject=mapToInjectArray(S.inject)),{...n,transform:Object.keys(C).length===0?void 0:C,...S}}function mapToInjectArray(n){let a=[];for(let[S,C]of Object.entries(n))if(typeof C==`string`)a.push({type:`named`,imported:`default`,from:C,alias:S});else{let[n,N]=C;N===`*`?a.push({type:`namespace`,from:n,alias:S}):a.push({type:`named`,from:n,imported:N,alias:S})}return a}function normalizeInputForNative(n){return n===void 0?[]:typeof n==`string`?[{import:n}]:Array.isArray(n)?n.map(n=>typeof n==`string`?{import:n}:n):Object.entries(n).map(([n,a])=>({name:n,import:a}))}function isPluginObject(n){return typeof n==`object`&&!!n&&!Array.isArray(n)}function pickHook(n){if(typeof n==`function`)return{fn:n};if(typeof n==`object`&&n&&`handler`in n){let a=n,S=filterToRegexSource(a.filter?.id),C={fn:a.handler};return S!==void 0&&(C.idFilter=S),C}}function filterToRegexSource(n){if(n!==void 0){if(Array.isArray(n)){let a=n.map(oneToSource).filter(n=>n!==void 0);return a.length===0?void 0:a.length===1?a[0]:`(?:${a.join(`|`)})`}return oneToSource(n)}}function oneToSource(n){if(n instanceof RegExp)return n.source;if(typeof n==`string`)return n.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function toNativePlugin(n){let a={name:typeof n.name==`string`?n.name:`unnamed-plugin`},S={},C=pickHook(n.load);C&&(a.load=C.fn,C.idFilter&&(S.load=C.idFilter));let N=pickHook(n.transform);N&&(a.transform=N.fn,N.idFilter&&(S.transform=N.idFilter));let F=pickHook(n.resolveId);F&&(a.resolveId=F.fn,F.idFilter&&(S.resolveId=F.idFilter));let I=pickHook(n.renderChunk);I&&(a.renderChunk=I.fn);let H=pickHook(n.banner);H&&(a.banner=H.fn);let W=pickHook(n.footer);W&&(a.footer=W.fn);let K=pickHook(n.intro);K&&(a.intro=K.fn);let q=pickHook(n.outro);q&&(a.outro=q.fn);let Y=pickHook(n.buildStart);Y&&(a.buildStart=Y.fn);let X=pickHook(n.buildEnd);X&&(a.buildEnd=X.fn);let te=pickHook(n.generateBundle);te&&(a.generateBundle=te.fn);let ne=pickHook(n.writeBundle);ne&&(a.writeBundle=ne.fn);let re=pickHook(n.closeBundle);return re&&(a.closeBundle=re.fn),Object.keys(S).length>0&&(a.idFilter=S),a}function synthRolldownOutput(n){return{output:n.output.map(n=>n.type===`chunk`?{type:`chunk`,fileName:n.fileName,code:n.code,name:n.name,isEntry:n.isEntry,isDynamicEntry:n.isDynamicEntry,map:n.map??null,sourcemapFileName:n.sourcemapFilename??null,imports:n.imports,dynamicImports:n.dynamicImports,facadeModuleId:null,moduleIds:[],modules:{},exports:[],referencedFiles:[],importedBindings:{}}:{type:`asset`,fileName:n.fileName,names:n.names,originalFileNames:n.originalFileNames,source:n.sourceText??``,needsCodeReference:!1})}}var H_,U_,W_=__esmMin(()=>{_e(),gl(),Os(),is(),rn(),V_(),Tm(),H_=null,U_=new Set}),G_=__esmMin(()=>{}),K_=__esmMin(()=>{}),q_=__esmMin(()=>{}),J_=__esmMin(()=>{G_(),K_(),q_()});function collectPlatformEntries(n){let a=new Set;if(!n||typeof n!=`object`)return a;for(let S of X_)S!==`gjs`&&Object.prototype.hasOwnProperty.call(n,`./${S}`)&&a.add(S);return a}function findScanRoots(){let n=[],a=bs(fileURLToPath(import.meta.url));for(let S=0;S<8;S++){let S=ms(a,`packages`);existsSync(S)&&[`node`,`web`,`dom`,`framework`,`infra`].some(n=>existsSync(_s(S,n)))&&n.push({kind:`workspace`,dir:S});let C=ms(a,`node_modules`,`@gjsify`);existsSync(C)&&n.push({kind:`installed`,dir:C});let N=bs(a);if(N===a)break;a=N}try{let a=ms(process.cwd(),`node_modules`,`@gjsify`);existsSync(a)&&n.push({kind:`installed`,dir:a})}catch{}return n}function ingestPackageDirSync(n,a){let S=_s(n,`package.json`);if(existsSync(S))try{let C=readFileSync(S,`utf8`),N=JSON.parse(C),F=typeof N.name==`string`?N.name:null,I=N?.gjsify?.runtimes;if(F&&F.startsWith(`@gjsify/`)&&!a.has(F)&&I&&typeof I==`object`){let S={};for(let n of X_){let a=I[n];typeof a==`string`&&Y_.has(a)&&(S[n]=a)}let C=existsSync(_s(n,`globals.mjs`)),H=collectPlatformEntries(N?.exports);a.set(F,{name:F,dir:n,runtimes:S,hasGlobals:C,platformEntries:H})}}catch{}}function getCacheSync(){if(Z_)return Z_;let n=findScanRoots(),a=new Map;if(n.length===0)return Z_=a,Z_;function walkWorkspace(n){let S;try{S=readdirSync(n,{withFileTypes:!0})}catch{return}if(existsSync(_s(n,`package.json`))){ingestPackageDirSync(n,a);return}for(let a of S)a.isDirectory()&&(a.name===`node_modules`||a.name===`lib`||a.name===`dist`||a.name.startsWith(`.`)||walkWorkspace(_s(n,a.name)))}function walkInstalled(n){let S;try{S=readdirSync(n,{withFileTypes:!0})}catch{return}for(let C of S)!C.isDirectory()&&!C.isSymbolicLink()||C.name.startsWith(`.`)||ingestPackageDirSync(_s(n,C.name),a)}for(let a of n)a.kind===`workspace`?walkWorkspace(a.dir):walkInstalled(a.dir);return Z_=a,Z_}function warnOnce(n,a){Q_.has(n)||(Q_.add(n),ge.warn(`[@gjsify/resolve-npm] ${a}`))}function resolveSlot(n,a){let S=n.runtimes[a];if(!S)return null;switch(S){case`polyfill`:return a!==`gjs`&&n.platformEntries?.has(a)?`${n.name}/${a}`:null;case`partial`:return null;case`native`:return n.hasGlobals?`${n.name}/globals`:(warnOnce(`${n.name}-${a}-native-missing-globals`,`${n.name} declares runtimes.${a}="native" but ships no globals.mjs — falling back to @gjsify/empty for --app ${a} builds.`),`@gjsify/empty`);case`none`:return null;default:return null}}function getDerivedAliasesSync(n){if(!X_.has(n))return{};let a=getCacheSync(),S={};for(let C of a.values()){let a=resolveSlot(C,n);a!==null&&a!==C.name&&(S[C.name]=a)}return S}var Y_,X_,Z_,Q_,$_=__esmMin(()=>{_e(),Jc(),gl(),Os(),rn(),Y_=new Set([`polyfill`,`native`,`partial`,`none`]),X_=new Set([`gjs`,`node`,`browser`,`nativescript`]),Z_=null,Q_=new Set});function withDerivedSlotRouting(n,a){let S=null,materialise=()=>{if(S)return S;let C=getDerivedAliasesSync(a),N={};for(let[a,S]of Object.entries(n))N[a]=Object.prototype.hasOwnProperty.call(C,S)?C[S]:S;return S=N,S};return new Proxy(n,{get:(a,S)=>typeof S==`string`?materialise()[S]:Reflect.get(n,S),has:(n,a)=>Reflect.has(materialise(),a),ownKeys:()=>Reflect.ownKeys(materialise()),getOwnPropertyDescriptor:(n,a)=>Reflect.getOwnPropertyDescriptor(materialise(),a)})}var ev,tv,nv,rv,iv,av,ov,sv,cv,lv,uv,dv=__esmMin(()=>{$_(),ev=`assert.assert/strict.async_hooks.buffer.child_process.cluster.console.constants.crypto.dgram.diagnostics_channel.dns.dns/promises.domain.events.fs.fs/promises.http.http2.https.inspector.module.net.os.path.path/posix.path/win32.perf_hooks.process.punycode.querystring.readline.readline/promises.repl.stream.stream/web.stream/consumers.stream/promises.string_decoder.sys.test.timers.timers/promises.tls.tty.url.util.util/types.v8.vm.wasi.sqlite.worker_threads.zlib`.split(`.`),tv=[`readable-stream`,`node-fetch`],nv={jsdom:`@gjsify/empty`,"./polling-xhr.node.js":`./polling-xhr.js`,"./websocket.node.js":`./websocket.js`,"./globals.node.js":`./globals.js`},rv={assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert/strict`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,child_process:`@gjsify/child_process`,cluster:`@gjsify/cluster`,console:`@gjsify/console`,constants:`@gjsify/constants`,crypto:`@gjsify/crypto`,dgram:`@gjsify/dgram`,diagnostics_channel:`@gjsify/diagnostics_channel`,dns:`@gjsify/dns`,"dns/promises":`@gjsify/dns/promises`,domain:`@gjsify/domain`,events:`@gjsify/events`,fs:`@gjsify/fs`,"fs/promises":`@gjsify/fs/promises`,http:`@gjsify/http`,http2:`@gjsify/http2`,https:`@gjsify/https`,inspector:`@gjsify/inspector`,module:`@gjsify/module`,net:`@gjsify/net`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,perf_hooks:`@gjsify/perf_hooks`,process:`@gjsify/process`,punycode:`@gjsify/punycode`,querystring:`@gjsify/querystring`,readline:`@gjsify/readline`,"readline/promises":`@gjsify/readline/promises`,repl:`@gjsify/repl`,stream:`@gjsify/stream`,"stream/web":`@gjsify/stream/web`,"stream/consumers":`@gjsify/stream/consumers`,"stream/promises":`@gjsify/stream/promises`,string_decoder:`@gjsify/string_decoder`,sys:`@gjsify/sys`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,tls:`@gjsify/tls`,tty:`@gjsify/tty`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,v8:`@gjsify/v8`,vm:`@gjsify/vm`,wasi:`@gjsify/wasi`,sqlite:`@gjsify/sqlite`,worker_threads:`@gjsify/worker_threads`,zlib:`@gjsify/zlib`,"node-fetch":`@gjsify/fetch`,ws:`@gjsify/ws`,"isomorphic-ws":`@gjsify/websocket`},iv={assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert/strict`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,child_process:`@gjsify/child_process/browser`,cluster:`@gjsify/empty`,console:`@gjsify/console`,constants:`@gjsify/constants`,crypto:`@gjsify/crypto/browser`,dgram:`@gjsify/empty`,diagnostics_channel:`@gjsify/diagnostics_channel`,dns:`@gjsify/dns/browser`,"dns/promises":`@gjsify/empty`,domain:`@gjsify/domain`,events:`@gjsify/events`,fs:`@gjsify/fs/browser`,"fs/promises":`@gjsify/fs/browser/promises`,http:`@gjsify/http/browser`,http2:`@gjsify/empty`,https:`@gjsify/https/browser`,inspector:`@gjsify/empty`,module:`@gjsify/module/browser`,net:`@gjsify/net/browser`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,perf_hooks:`@gjsify/perf_hooks`,process:`@gjsify/process`,punycode:`@gjsify/punycode`,querystring:`@gjsify/querystring`,readline:`@gjsify/empty`,"readline/promises":`@gjsify/empty`,repl:`@gjsify/empty`,stream:`@gjsify/stream`,"stream/web":`@gjsify/stream/web`,"stream/consumers":`@gjsify/stream/consumers`,"stream/promises":`@gjsify/stream/promises`,string_decoder:`@gjsify/string_decoder`,sys:`@gjsify/sys`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,tls:`@gjsify/tls/browser`,tty:`@gjsify/empty`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,v8:`@gjsify/empty`,vm:`@gjsify/vm`,wasi:`@gjsify/empty`,sqlite:`@gjsify/sqlite/browser`,worker_threads:`@gjsify/worker_threads/browser`,zlib:`@gjsify/zlib/browser`,"node-fetch":`@gjsify/empty`,ws:`@gjsify/ws/browser`,"isomorphic-ws":`@gjsify/empty`},av=withDerivedSlotRouting(iv,`browser`),ov={child_process:`@gjsify/empty`,cluster:`@gjsify/empty`,dgram:`@gjsify/empty`,dns:`@gjsify/empty`,"dns/promises":`@gjsify/empty`,inspector:`@gjsify/empty`,net:`@gjsify/empty`,tls:`@gjsify/empty`,tty:`@gjsify/empty`,http:`@gjsify/empty`,https:`@gjsify/empty`,http2:`@gjsify/empty`,readline:`@gjsify/empty`,repl:`@gjsify/empty`,v8:`@gjsify/empty`,vm:`@gjsify/empty`,worker_threads:`@gjsify/empty`,perf_hooks:`@gjsify/empty`,diagnostics_channel:`@gjsify/empty`,domain:`@gjsify/empty`,sqlite:`@gjsify/empty`,sys:`@gjsify/empty`,zlib:`@gjsify/empty`,assert:`@gjsify/assert`,"assert/strict":`@gjsify/assert`,async_hooks:`@gjsify/async_hooks`,buffer:`@gjsify/buffer`,module:`@gjsify/module`,crypto:`@gjsify/crypto`,events:`@gjsify/events`,fs:`@gjsify/native-fs-bridge`,"fs/promises":`@gjsify/native-fs-bridge`,os:`@gjsify/os`,path:`@gjsify/path`,"path/posix":`@gjsify/path/posix`,"path/win32":`@gjsify/path/win32`,process:`@gjsify/process`,stream:`@gjsify/stream`,"stream/promises":`@gjsify/stream/promises`,"stream/web":`@gjsify/stream/web`,string_decoder:`@gjsify/string_decoder`,url:`@gjsify/url`,util:`@gjsify/util`,"util/types":`@gjsify/util/types`,querystring:`@gjsify/querystring`,console:`@gjsify/console`,timers:`@gjsify/timers`,"timers/promises":`@gjsify/timers/promises`,"node-fetch":`@gjsify/empty`,ws:`@gjsify/empty`,"isomorphic-ws":`@gjsify/empty`},sv={"abort-controller":`@gjsify/abort-controller`,"compression-streams":`@gjsify/compression-streams`,"dom-events":`@gjsify/dom-events`,"dom-exception":`@gjsify/dom-exception`,"event-target-shim":`@gjsify/dom-events`,"message-channel":`@gjsify/message-channel`,eventsource:`@gjsify/eventsource`,fetch:`@gjsify/fetch`,formdata:`@gjsify/formdata`,"html-image-element":`@gjsify/html-image-element`,webcrypto:`@gjsify/webcrypto`,webgl:`@gjsify/webgl`,websocket:`@gjsify/websocket`,webstorage:`@gjsify/webstorage`,"abort-controller/register":`@gjsify/abort-controller/register`,"compression-streams/register":`@gjsify/compression-streams/register`,"dom-events/register":`@gjsify/dom-events/register`,"dom-events/register/event-target":`@gjsify/dom-events/register/event-target`,"dom-events/register/custom-events":`@gjsify/dom-events/register/custom-events`,"dom-events/register/ui-events":`@gjsify/dom-events/register/ui-events`,"dom-exception/register":`@gjsify/dom-exception/register`,"message-channel/register":`@gjsify/message-channel/register`,"eventsource/register":`@gjsify/eventsource/register`,"websocket/register":`@gjsify/websocket/register`,"fetch/register":`@gjsify/fetch/register`,"fetch/register/fetch":`@gjsify/fetch/register/fetch`,"fetch/register/xhr":`@gjsify/fetch/register/xhr`,"webcrypto/register":`@gjsify/webcrypto/register`,"web-streams/register":`@gjsify/web-streams/register`,"web-streams/register/readable":`@gjsify/web-streams/register/readable`,"web-streams/register/writable":`@gjsify/web-streams/register/writable`,"web-streams/register/transform":`@gjsify/web-streams/register/transform`,"web-streams/register/text-streams":`@gjsify/web-streams/register/text-streams`,"web-streams/register/queuing":`@gjsify/web-streams/register/queuing`,xmlhttprequest:`@gjsify/fetch`,"xmlhttprequest/register":`@gjsify/fetch/register/xhr`,"@gjsify/xmlhttprequest":`@gjsify/fetch`,"@gjsify/xmlhttprequest/register":`@gjsify/fetch/register/xhr`,domparser:`@gjsify/domparser`,"domparser/register":`@gjsify/domparser/register`,webaudio:`@gjsify/webaudio`,"webaudio/register":`@gjsify/webaudio/register`,gamepad:`@gjsify/gamepad`,"gamepad/register":`@gjsify/gamepad/register`,webrtc:`@gjsify/webrtc`,"webrtc/register":`@gjsify/webrtc/register`,"webrtc/register/peer-connection":`@gjsify/webrtc/register/peer-connection`,"webrtc/register/data-channel":`@gjsify/webrtc/register/data-channel`,"webrtc/register/error":`@gjsify/webrtc/register/error`,"webrtc/register/media":`@gjsify/webrtc/register/media`,"webrtc/register/media-devices":`@gjsify/webrtc/register/media-devices`,webassembly:`@gjsify/webassembly`,"webassembly/register":`@gjsify/webassembly/register`,"webassembly/register/promise":`@gjsify/webassembly/register/promise`},cv={"@gjsify/node-globals":`@gjsify/empty`,"@gjsify/node-globals/register":`@gjsify/empty`,"@gjsify/node-globals/register/process":`@gjsify/empty`,"@gjsify/node-globals/register/buffer":`@gjsify/empty`,"@gjsify/node-globals/register/timers":`@gjsify/empty`,"@gjsify/node-globals/register/encoding":`@gjsify/empty`,"@gjsify/node-globals/register/url":`@gjsify/empty`,"@gjsify/node-globals/register/structured-clone":`@gjsify/empty`,"@gjsify/node-globals/register/microtask":`@gjsify/empty`,"@gjsify/web-globals":`@gjsify/empty`,"@gjsify/web-globals/register":`@gjsify/empty`,"@gjsify/web-globals/register/performance":`@gjsify/empty`,"@gjsify/web-globals/register/formdata":`@gjsify/empty`},lv={system:`@gjsify/node-gi/system`,gettext:`@gjsify/node-gi/gettext`,cairo:`@gjsify/node-gi/cairo`},uv={"abort-controller":`@gjsify/abort-controller/globals`,"compression-streams":`@gjsify/compression-streams/globals`,"dom-events":`@gjsify/dom-events`,"dom-exception":`@gjsify/dom-exception/globals`,"message-channel":`@gjsify/message-channel/globals`,eventsource:`@gjsify/eventsource`,fetch:`@gjsify/fetch/globals`,formdata:`@gjsify/formdata/globals`,"html-image-element":`@gjsify/html-image-element`,webcrypto:`@gjsify/webcrypto/globals`,webgl:`@gjsify/webgl`,websocket:`@gjsify/websocket/globals`,webstorage:`@gjsify/webstorage`,"abort-controller/register":`@gjsify/empty`,"compression-streams/register":`@gjsify/empty`,"dom-events/register":`@gjsify/empty`,"dom-events/register/event-target":`@gjsify/empty`,"dom-events/register/custom-events":`@gjsify/empty`,"dom-events/register/ui-events":`@gjsify/empty`,"dom-exception/register":`@gjsify/empty`,"message-channel/register":`@gjsify/empty`,"eventsource/register":`@gjsify/empty`,"websocket/register":`@gjsify/empty`,"fetch/register":`@gjsify/empty`,"fetch/register/fetch":`@gjsify/empty`,"fetch/register/xhr":`@gjsify/empty`,"webcrypto/register":`@gjsify/empty`,"web-streams/register":`@gjsify/empty`,"web-streams/register/readable":`@gjsify/empty`,"web-streams/register/writable":`@gjsify/empty`,"web-streams/register/transform":`@gjsify/empty`,"web-streams/register/text-streams":`@gjsify/empty`,"web-streams/register/queuing":`@gjsify/empty`,"@gjsify/abort-controller/register":`@gjsify/empty`,"@gjsify/compression-streams/register":`@gjsify/empty`,"@gjsify/dom-events/register":`@gjsify/empty`,"@gjsify/dom-events/register/event-target":`@gjsify/empty`,"@gjsify/dom-events/register/custom-events":`@gjsify/empty`,"@gjsify/dom-events/register/ui-events":`@gjsify/empty`,"@gjsify/dom-exception/register":`@gjsify/empty`,"@gjsify/message-channel/register":`@gjsify/empty`,"@gjsify/eventsource/register":`@gjsify/empty`,"@gjsify/websocket/register":`@gjsify/empty`,"@gjsify/fetch/register":`@gjsify/empty`,"@gjsify/fetch/register/fetch":`@gjsify/empty`,"@gjsify/fetch/register/xhr":`@gjsify/empty`,"@gjsify/webcrypto/register":`@gjsify/empty`,"@gjsify/web-streams/register":`@gjsify/empty`,"@gjsify/web-streams/register/readable":`@gjsify/empty`,"@gjsify/web-streams/register/writable":`@gjsify/empty`,"@gjsify/web-streams/register/transform":`@gjsify/empty`,"@gjsify/web-streams/register/text-streams":`@gjsify/empty`,"@gjsify/web-streams/register/queuing":`@gjsify/empty`,"@gjsify/dom-elements/register":`@gjsify/empty`,"@gjsify/dom-elements/register/document":`@gjsify/empty`,"@gjsify/dom-elements/register/canvas":`@gjsify/empty`,"@gjsify/dom-elements/register/image":`@gjsify/empty`,"@gjsify/dom-elements/register/observers":`@gjsify/empty`,"@gjsify/dom-elements/register/font-face":`@gjsify/empty`,"@gjsify/dom-elements/register/match-media":`@gjsify/empty`,"@gjsify/dom-elements/register/location":`@gjsify/empty`,"@gjsify/dom-elements/register/navigator":`@gjsify/empty`,"@gjsify/canvas2d/register":`@gjsify/empty`,"@gjsify/iframe/register":`@gjsify/empty`,"@gjsify/webgl/register":`@gjsify/empty`,"@gjsify/buffer/register":`@gjsify/empty`,xmlhttprequest:`@gjsify/empty`,"xmlhttprequest/register":`@gjsify/empty`,"@gjsify/xmlhttprequest":`@gjsify/empty`,"@gjsify/xmlhttprequest/register":`@gjsify/empty`,domparser:`@gjsify/empty`,"domparser/register":`@gjsify/empty`,"@gjsify/domparser/register":`@gjsify/empty`,webaudio:`@gjsify/empty`,"webaudio/register":`@gjsify/empty`,"@gjsify/webaudio/register":`@gjsify/empty`,gamepad:`@gjsify/empty`,"gamepad/register":`@gjsify/empty`,"@gjsify/gamepad/register":`@gjsify/empty`,webrtc:`@gjsify/empty`,"webrtc/register":`@gjsify/empty`,"webrtc/register/peer-connection":`@gjsify/empty`,"webrtc/register/data-channel":`@gjsify/empty`,"webrtc/register/error":`@gjsify/empty`,"webrtc/register/media":`@gjsify/empty`,"webrtc/register/media-devices":`@gjsify/empty`,"@gjsify/webrtc":`@gjsify/empty`,"@gjsify/webrtc/register":`@gjsify/empty`,"@gjsify/webrtc/register/peer-connection":`@gjsify/empty`,"@gjsify/webrtc/register/data-channel":`@gjsify/empty`,"@gjsify/webrtc/register/error":`@gjsify/empty`,"@gjsify/webrtc/register/media":`@gjsify/empty`,"@gjsify/webrtc/register/media-devices":`@gjsify/empty`,webassembly:`@gjsify/webassembly/globals`,"webassembly/register":`@gjsify/empty`,"webassembly/register/promise":`@gjsify/empty`,"@gjsify/webassembly/register":`@gjsify/empty`,"@gjsify/webassembly/register/promise":`@gjsify/empty`}}),setNodeAliasPrefix,getAliasesGeneralForGjs,getAliasesNodeForGjs,getAliasesWebForGjs,getAliasesGeneralForNode,getAliasesGjsForNode,getAliasesWebForNode,getAliasesForGjs,getAliasesForNode,fv=__esmMin(()=>{dv(),setNodeAliasPrefix=n=>{for(let a in n){if(a.startsWith(`node:`))continue;let S=`node:${a}`;n[S]||(n[S]=n[a])}return n},getAliasesGeneralForGjs=n=>nv,getAliasesNodeForGjs=n=>setNodeAliasPrefix(rv),getAliasesWebForGjs=n=>sv,getAliasesGeneralForNode=n=>cv,getAliasesGjsForNode=n=>lv,getAliasesWebForNode=n=>uv,getAliasesForGjs=n=>({...getDerivedAliasesSync(`gjs`),...getAliasesGeneralForGjs(n),...getAliasesNodeForGjs(n),...getAliasesWebForGjs(n)}),getAliasesForNode=n=>({...getDerivedAliasesSync(`node`),...getAliasesGeneralForNode(n),...getAliasesGjsForNode(n),...getAliasesWebForNode(n)}),[...ev,...ev.map(n=>`node:${n}`)],[...tv]}),pv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.splitWhen=n.flatten=void 0;function flatten(n){return n.reduce((n,a)=>[].concat(n,a),[])}n.flatten=flatten;function splitWhen(n,a){let S=[[]],C=0;for(let N of n)a(N)?(C++,S[C]=[]):S[C].push(N);return S}n.splitWhen=splitWhen})),mv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.isEnoentCodeError=void 0;function isEnoentCodeError(n){return n.code===`ENOENT`}n.isEnoentCodeError=isEnoentCodeError})),hv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.createDirentFromStats=void 0;var DirentFromStats=class{constructor(n,a){this.name=n,this.isBlockDevice=a.isBlockDevice.bind(a),this.isCharacterDevice=a.isCharacterDevice.bind(a),this.isDirectory=a.isDirectory.bind(a),this.isFIFO=a.isFIFO.bind(a),this.isFile=a.isFile.bind(a),this.isSocket=a.isSocket.bind(a),this.isSymbolicLink=a.isSymbolicLink.bind(a)}};function createDirentFromStats(n,a){return new DirentFromStats(n,a)}n.createDirentFromStats=createDirentFromStats})),gv=__commonJSMin$1((n=>{Object.defineProperty(n,"__esModule",{value:!0}),n.convertPosixPathToPattern=n.convertWindowsPathToPattern=n.convertPathToPattern=n.escapePosixPath=n.escapeWindowsPath=n.escape=n.removeLeadingDotSegment=n.makeAbsolute=n.unixify=void 0;let a=(um(),__toCommonJS(nm)),S=(Os(),__toCommonJS(ps)),C=a.platform()===`win32`,N=/(\\?)([()*?[\]{|}]|^!|[!+@](?=\()|\\(?![!()*+?@[\]{|}]))/g,F=/(\\?)([()[\]{}]|^!|[!+@](?=\())/g,I=/^\\\\([.?])/,H=/\\(?![!()+@[\]{}])/g;function unixify(n){return n.replace(/\\/g,`/`)}n.unixify=unixify;function makeAbsolute(n,a){return S.resolve(n,a)}n.makeAbsolute=makeAbsolute;function removeLeadingDotSegment(n){if(n.charAt(0)===`.`){let a=n.charAt(1);if(a===`/`||a===`\\`)return n.slice(2)}return n}n.removeLeadingDotSegment=removeLeadingDotSegment,n.escape=C?escapeWindowsPath:escapePosixPath;function escapeWindowsPath(n){return n.replace(F,`\\$2`)}n.escapeWindowsPath=escapeWindowsPath;function escapePosixPath(n){return n.replace(N,`\\$2`)}n.escapePosixPath=escapePosixPath,n.convertPathToPattern=C?convertWindowsPathToPattern:convertPosixPathToPattern;function convertWindowsPathToPattern(n){return escapeWindowsPath(n).replace(I,`//$1`).replace(H,`/`)}n.convertWindowsPathToPattern=convertWindowsPathToPattern;function convertPosixPathToPattern(n){return escapePosixPath(n)}n.convertPosixPathToPattern=convertPosixPathToPattern})),_v=__commonJSMin$1(((n,a)=>{
637
639
  /*!
638
640
  * is-extglob <https://github.com/jonschlinkert/is-extglob>
639
641
  *
@@ -685,7 +687,8 @@ Defaulting to 2020, but this will stop working in the future.`)),a.ecmaVersion=1
685
687
  // injected @gjsify/* register bodies install their GJS-semantics versions.
686
688
  for (const __k of ${JSON.stringify(I.sort())}) { try { delete globalThis[__k]; } catch {} }\n`,a=`auto-globals-override-${createHash(`sha1`).update(n).digest(`hex`).slice(0,10)}.mjs`;await writeFile$1(_s(C,a),n,`utf-8`),F.push(`import './${a}';`)}for(let n of N)F.push(`import '${n}';`);let H=F.join(`
687
689
  `)+`
688
- `,W=_s(C,`auto-globals-${createHash(`sha1`).update(H).digest(`hex`).slice(0,10)}.mjs`);return await writeFile$1(W,H,`utf-8`),W}var Yx,Xx,Zx,Qx,$x=__esmMin(()=>{_e(),Jc(),gl(),xo(),Os(),Bx(),dv(),Yx=Lx,Xx=Ix,Zx=Rx,Qx=sv});function inlineStaticReads(n,a){if(!n.includes(`readFileSync`)&&!n.includes(`readdirSync`)&&!n.includes(`existsSync`))return{contents:n,inlined:0};let S;try{S=parse$1(n,{ecmaVersion:`latest`,sourceType:`module`,allowAwaitOutsideFunction:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0})}catch{return{contents:n,inlined:0}}let C={sourceUrl:pathToFileURL(a).href},N=[];if(simple(S,{CallExpression(a){let S=tryInlineCall(a,C,n);S&&N.push(S)}}),N.length===0)return{contents:n,inlined:0};let F=[];N.sort((n,a)=>n.start-a.start||a.end-n.end);for(let n of N){let a=F[F.length-1];a&&n.start>=a.start&&n.end<=a.end||F.push(n)}F.sort((n,a)=>a.start-n.start);let I=n;for(let n of F)I=I.slice(0,n.start)+n.replacement+I.slice(n.end);return{contents:I,inlined:F.length}}function tryInlineCall(n,a,S){let C=n.callee;if(C.type===`MemberExpression`&&!C.computed&&C.object.type===`Identifier`&&C.object.name===`JSON`&&C.property.type===`Identifier`&&C.property.name===`parse`&&n.arguments.length>=1&&n.arguments[0].type===`CallExpression`){let S=n.arguments[0],C=tryInlineReadFile(S,a,!0);if(C!==void 0)try{let a=JSON.parse(JSON.parse(C));return{start:n.start,end:n.end,replacement:jsLiteral(a)}}catch{}}let N=identifierName(C);if(N===`readFileSync`){let S=tryInlineReadFile(n,a,!1);if(S!==void 0)return{start:n.start,end:n.end,replacement:S}}if(N===`readdirSync`){if(hasWithFileTypes(n.arguments[1]))return;let S=evalPathExpr(n.arguments[0],a);if(S&&existsSync(S)&&isDirectorySafe(S))try{let a=readdirSync(S);return{start:n.start,end:n.end,replacement:jsLiteral(a)}}catch{}}if(N===`existsSync`){let S=evalPathExpr(n.arguments[0],a);if(S!==void 0)return{start:n.start,end:n.end,replacement:existsSync(S)?`true`:`false`}}if(N===`createRequire`){let S=evalPathExpr(n.arguments[0],a),C=S!==void 0&&S.includes(`.zip/`);if(S!==void 0&&(C||!existsSync(S)))return{start:n.start,end:n.end,replacement:`(() => { const _r = (id) => { throw new Error("[gjsify] createRequire stub: '" + id + "' was not bundled (anchor path: " + ${jsStringLiteral(S)} + ")"); }; _r.resolve = _r; _r.cache = {}; _r.extensions = {}; _r.main = void 0; return _r; })()`}}}function tryInlineReadFile(n,a,S){if(n.arguments.length<1)return;let C=evalPathExpr(n.arguments[0],a);if(!C||!existsSync(C)||isDirectorySafe(C))return;let N;if(S)N=`utf8`;else if(n.arguments.length>=2&&(N=evalEncodingExpr(n.arguments[1]),N===void 0))return;try{if(N)return jsStringLiteral(readFileSync(C,N));{let n=readFileSync(C);return`new Uint8Array([${Array.from(n).join(`,`)}])`}}catch{return}}function evalPathExpr(n,a){let S=evalExpr(n,a);if(S instanceof URL)return S.protocol===`file:`?fileURLToPath(S):void 0;if(typeof S==`string`){if(S.startsWith(`file://`))return fileURLToPath(S);if(isAbsoluteFsPath(S))return S}}function isAbsoluteFsPath(n,a=process.platform){return(a===`win32`?ds:ls).isAbsolute(n)}function evalExpr(n,a){if(n)switch(n.type){case`Literal`:return typeof n.value==`string`?n.value:void 0;case`TemplateLiteral`:{let a=n;return a.expressions.length>0?void 0:a.quasis.map(n=>n.value.cooked??``).join(``)}case`BinaryExpression`:{let S=n;if(S.operator!==`+`)return;let C=evalExpr(S.left,a),N=evalExpr(S.right,a);return typeof C!=`string`||typeof N!=`string`?void 0:C+N}case`Identifier`:{let S=n;return S.name===`__dirname`?fileURLToPath(new URL(`.`,a.sourceUrl)):S.name===`__filename`?fileURLToPath(a.sourceUrl):void 0}case`MemberExpression`:{let S=n;if(S.object.type===`MetaProperty`&&S.object.meta.name===`import`&&S.object.property.name===`meta`&&S.property.type===`Identifier`&&S.property.name===`url`)return a.sourceUrl;if(!S.computed&&S.property.type===`Identifier`){let n=evalExpr(S.object,a),C=S.property.name;if(n instanceof URL){if(C===`href`)return n.href;if(C===`pathname`)return n.pathname}if(typeof n==`string`){if(C===`href`)return n;if(C===`pathname`)try{return new URL(n).pathname}catch{return}}}return}case`NewExpression`:{let S=n;if(identifierName(S.callee)===`URL`){if(S.arguments.length===0)return;let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;if(S.arguments.length===1)try{return new URL(n)}catch{return}let C=evalExpr(S.arguments[1],a),N=C instanceof URL?C.href:typeof C==`string`?C:void 0;if(!N)return;try{return new URL(n,N)}catch{return}}return}case`CallExpression`:{let S=n,C=identifierName(S.callee);if(C===`fileURLToPath`){let n=evalExpr(S.arguments[0],a),C=n instanceof URL?n.href:typeof n==`string`?n:void 0;if(!C)return;try{return fileURLToPath(C)}catch{return}}if(C===`pathToFileURL`){let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;try{return pathToFileURL(n)}catch{return}}if(C===`join`||C===`resolve`){let n=[];for(let C of S.arguments){let S=evalExpr(C,a);if(typeof S!=`string`)return;n.push(S)}return C===`join`?_s(...n):ms(...n)}if(C===`dirname`||C===`basename`||C===`extname`){let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;if(C===`dirname`)return bs(n);if(C===`basename`){let C=S.arguments.length>=2?evalExpr(S.arguments[1],a):void 0;return xs(n,typeof C==`string`?C:void 0)}if(C===`extname`)return Ss(n)}if(C===`relative`){let n=evalExpr(S.arguments[0],a),C=evalExpr(S.arguments[1],a);return typeof n!=`string`||typeof C!=`string`?void 0:vs(n,C)}return}}}function evalEncodingExpr(n){if(n){if(n.type===`Literal`){let a=n.value;return typeof a==`string`?canonicalEncoding(a):void 0}if(n.type===`ObjectExpression`){for(let a of n.properties)if(!(a.type!==`Property`||a.computed)&&(a.key.type===`Identifier`?a.key.name:a.key.type===`Literal`?String(a.key.value):void 0)===`encoding`)return a.value.type===`Literal`&&typeof a.value.value==`string`?canonicalEncoding(a.value.value):void 0}}}function hasWithFileTypes(n){if(!n||n.type!==`ObjectExpression`)return!1;for(let a of n.properties)if(!(a.type!==`Property`||a.computed)&&(a.key.type===`Identifier`?a.key.name:a.key.type===`Literal`?String(a.key.value):void 0)===`withFileTypes`)return a.value.type===`Literal`&&a.value.value===!0;return!1}function canonicalEncoding(n){let a=n.toLowerCase();if(a===`utf8`||a===`utf-8`)return`utf8`;if(a===`ascii`)return`ascii`;if(a===`latin1`||a===`binary`)return`latin1`}function identifierName(n){if(n){if(n.type===`Identifier`)return n.name;if(n.type===`MemberExpression`&&!n.computed){let a=n;if(a.property.type!==`Identifier`||a.object.type!==`Identifier`)return;let S=a.object.name;return eS.has(S)?a.property.name:void 0}}}function jsLiteral(n){if(typeof n==`string`)return jsStringLiteral(n);if(typeof n==`number`)return Number.isFinite(n)?String(n):`null`;if(typeof n==`boolean`)return n?`true`:`false`;if(n===null)return`null`;if(Array.isArray(n))return`[`+n.map(jsLiteral).join(`,`)+`]`;if(typeof n==`object`){let a=[];for(let[S,C]of Object.entries(n))a.push(`${jsStringLiteral(S)}:${jsLiteral(C)}`);return`{`+a.join(`,`)+`}`}return`undefined`}function jsStringLiteral(n){return JSON.stringify(n)}function isDirectorySafe(n){try{return statSync(n).isDirectory()}catch{return!1}}var eS,tS=__esmMin(()=>{Nx(),Fx(),Os(),rn(),gl(),eS=new Set([`path`,`fs`])});function isGjsifyVirtualModuleId(n){return typeof n==`string`&&n.startsWith(`\0gjsify-`)}var nS,rS=__esmMin(()=>{nS=`\0gjsify-`}),iS=__esmMin(()=>{fv(),Ly(),Ry(),Tm(),zy(),Jx(),$x(),tS(),rS()});function aliasPlugin(n){let a=n.entries;return{name:`gjsify-alias`,resolveId:{order:`pre`,async handler(n,S,C){if(isGjsifyVirtualModuleId(S)||!Object.prototype.hasOwnProperty.call(a,n))return null;let N=a[n];if(N===n)return null;let F=await this.resolve(N,S,{skipSelf:!0,kind:C?.kind});return F===null?null:F}}}}var aS=__esmMin(()=>{rS()});function externalsPlugin(n,a){return{name:a?.name??`gjsify-externalize`,resolveId(a,S,C){return S===void 0||C?.isEntry?null:n(a)?{id:a,external:!0}:null}}}var oS=__esmMin(()=>{});function isMusl(n){return n===`linux`&&existsSync(`/etc/alpine-release`)}function hostTarget(){let n=process.env.npm_config_platform||process.platform,a=process.env.npm_config_arch||process.arch,S=process.versions?process.versions.modules:void 0,C=(process.versions&&process.versions.uv||``).split(`.`)[0]||``,N=process.env.ARM_VERSION||(a===`arm64`?`8`:``)||``;return{platform:n,arch:a,libc:process.env.LIBC===`musl`||isMusl(n)?`musl`:`glibc`,abi:S,uv:C,armv:N,runtime:`node`}}function readdirSafe(n){try{return readdirSync(n)}catch{return[]}}function firstNodeFile(n){let a=readdirSafe(n).filter(n=>n.endsWith(`.node`)).sort();return a.length===0?null:{file:a[0],all:a}}function parseTuple(n){let a=n.split(`-`);if(a.length!==2)return null;let S=a[0],C=a[1].split(`+`);return!S||C.length===0||!C.every(Boolean)?null:{name:n,platform:S,architectures:C}}function parseTags(n){let a=n.split(`.`),S=a.pop(),C={file:n,specificity:0};if(S!==`node`)return null;for(let n of a){if(n===`node`||n===`electron`||n===`node-webkit`)C.runtime=n;else if(n===`napi`)C.napi=!0;else if(n.slice(0,3)===`abi`)C.abi=n.slice(3);else if(n.slice(0,2)===`uv`)C.uv=n.slice(2);else if(n.slice(0,4)===`armv`)C.armv=n.slice(4);else if(n===`glibc`||n===`musl`)C.libc=n;else continue;C.specificity++}return C}function runtimeAgnostic(n){return n.runtime===`node`&&n.napi===!0}function resolvePrebuild(n,a){let S=_s(n,`prebuilds`),C=readdirSafe(S).map(parseTuple).filter(n=>n!==null&&n.platform===a.platform&&n.architectures.includes(a.arch)).sort((n,a)=>n.architectures.length-a.architectures.length)[0];if(!C)return null;let N=_s(S,C.name),F=readdirSafe(N).map(parseTags).filter(n=>!(n===null||n.runtime&&n.runtime!==a.runtime&&!runtimeAgnostic(n)||n.abi&&n.abi!==a.abi&&!n.napi||n.uv&&n.uv!==a.uv||n.armv&&n.armv!==a.armv||n.libc&&n.libc!==a.libc)).sort((n,S)=>n.runtime===S.runtime?n.abi===S.abi?n.specificity===S.specificity?0:n.specificity>S.specificity?-1:1:n.abi?-1:1:n.runtime===a.runtime?-1:1)[0];return F?_s(N,F.file):null}function resolveAddonPath(n,a){let S=hostTarget();for(let S of[`Release`,`Debug`]){let C=_s(n,`build`,S),N=firstNodeFile(C);if(N)return N.all.length>1&&a?.warn&&a.warn(`[gjsify-napi-addon] ${N.all.length} .node files in ${C} (${N.all.join(`, `)}); picking '${N.file}'. If wrong, import the .node directly.`),_s(C,N.file)}let C=resolvePrebuild(n,S);if(C)return C;throw new AddonNotBuiltError(n)}function nearestPackageRoot(n){let a=gs(n)?bs(n):bs(ms(n));for(let n=0;n<64;n++){if(existsSync(_s(a,`package.json`)))return a;let n=bs(a);if(n===a)break;a=n}return null}function directNodeShim(n){return`import { loadAddon } from ${JSON.stringify(cS)};\nexport default loadAddon(${JSON.stringify(n)});\n`}function nodeGypBuildShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nfunction load() { return loadAddon(${JSON.stringify(n)}); }\nload.path = function () { return ${JSON.stringify(n)}; };\nload.resolve = load.path;\nmodule.exports = load;\n`}function bindingsShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nfunction bindings() { return loadAddon(${JSON.stringify(n)}); }\nmodule.exports = bindings;\n`}function napiRsShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nmodule.exports = loadAddon(${JSON.stringify(n)});\n`}function shimFor(n,a){switch(n){case`direct`:return directNodeShim(a);case`node-gyp-build`:return nodeGypBuildShim(a);case`bindings`:return bindingsShim(a);case`napi-rs`:case`napi-rs-entry`:return napiRsShim(a)}}function encodeVirtual(n,a){return`${sS}${n}:${a}`}function decodeVirtual(n){if(!n.startsWith(sS))return null;let a=n.slice(sS.length),S=a.indexOf(`:`);return S===-1?null:{kind:a.slice(0,S),addonPath:a.slice(S+1)}}function classifySpecifier(n){if(n===`node-gyp-build`||n===`node-gyp-build/index.js`)return{kind:`node-gyp-build`};if(n===`bindings`||n===`bindings/bindings.js`)return{kind:`bindings`};if(n.endsWith(`.node`))return{kind:`direct-node`};let a=n.split(`/`).pop()??n;return!n.startsWith(`.`)&&lS.test(a)?{kind:`napi-rs-candidate`}:null}function isNapiRsPackageJson(n){if(n&&typeof n.napi==`object`&&n.napi!==null)return!0;let a=n?.optionalDependencies;if(a){for(let S of Object.keys(a))if(isNapiRsSibling(n,S))return!0}return!1}function readPackageJsonSafe(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return null}}function detectNapiRsEntry(n){if(!gs(n)||!/\.[cm]?js$/.test(n))return null;let a=nearestPackageRoot(n);if(a===null)return null;let S=readPackageJsonSafe(a);if(S===null||!isNapiRsPackageJson(S))return null;let C=stripJsExt(ms(n));return nativeEntrySpecs(S).some(n=>stripJsExt(ms(a,n))===C)?{pkgRoot:a,pkg:S}:null}function stripJsExt(n){return n.replace(/\.[cm]?js$/,``)}function nativeEntrySpecs(n){let a=[],add=n=>{typeof n==`string`&&n&&!a.includes(n)&&a.push(n)};add(n.main),add(n.module);let walk=(n,a)=>{if(typeof n==`string`)return add(n);if(!(a>4||typeof n!=`object`||!n||Array.isArray(n)))for(let[S,C]of Object.entries(n))S===`browser`||S===`types`||walk(C,a+1)},S=n.exports;if(typeof S==`string`)add(S);else if(typeof S==`object`&&S&&!Array.isArray(S)){let n=S;walk(Object.keys(n).some(n=>n.startsWith(`.`))?n[`.`]:n,0)}return a.length===0&&a.push(`index.js`),a}function napiBinaryName(n){let a=n.napi;if(a&&typeof a==`object`){let n=a,S=typeof n.binaryName==`string`?n.binaryName:n.name;if(typeof S==`string`&&S)return S}return typeof n.name==`string`&&n.name?n.name.replace(/^@[^/]+\//,``):null}function napiSiblingPrefixes(n){let a=[],S=n.napi;if(S&&typeof S==`object`){let{packageName:n}=S;typeof n==`string`&&n&&a.push(n)}return typeof n.name==`string`&&n.name&&!a.includes(n.name)&&a.push(n.name),a}function isNapiRsSibling(n,a){return lS.test(a)?napiSiblingPrefixes(n).some(n=>a.startsWith(`${n}-`)):!1}function hostNapiRsTriple(){let n=process.platform,a=process.arch,S={x64:`x64`,arm64:`arm64`,arm:`arm`,ia32:`ia32`,ppc64:`ppc64`,s390x:`s390x`,riscv64:`riscv64`}[a];if(!S)return null;switch(n){case`linux`:return a===`arm`?`linux-arm-gnueabihf`:`linux-${S}-${process.env.LIBC===`musl`||isMusl(`linux`)?`musl`:`gnu`}`;case`darwin`:return`darwin-${S}`;case`win32`:return`win32-${S}-msvc`;case`freebsd`:return`freebsd-${S}`;case`android`:return a===`arm`?`android-arm-eabi`:`android-${S}`;default:return null}}function rawAddonPath(n){let a=decodeVirtual(n);return a?a.addonPath:n}async function resolveNapiRsEntryAddon(n,a,S,C){let N=Object.keys(S.optionalDependencies??{}).filter(n=>isNapiRsSibling(S,n)),F=hostNapiRsTriple(),I=F===null?N:N.filter(n=>n.endsWith(`-${F}`));for(let a of I){let S=await n.resolve(a,C,{skipSelf:!0});if(!S)continue;let N=rawAddonPath(S.id);if(N.endsWith(`.node`)&&existsSync(N))return N}let H=napiBinaryName(S);if(H&&F){let n=_s(a,`${H}.${F}.node`);if(existsSync(n))return n}return null}function warnSafe(n,a){typeof n.warn==`function`&&n.warn(a)}async function resolveNodeFile(n,a,S){if(gs(a))return existsSync(a)?a:null;if(S!==void 0){let C=ms(bs(S),a);if(existsSync(C))return C;let N=await n.resolve(a,S,{skipSelf:!0});return N&&N.id.endsWith(`.node`)&&existsSync(N.id)?N.id:null}return null}function napiNodeAddonPlugin(n={}){let a=n.warnOnMissingNapi!==!1,S=!1,C=new Map;function detectNapiRsEntryCached(n){let a=C.get(n);if(a!==void 0)return a;let S=detectNapiRsEntry(n);return C.set(n,S),S}let N=new Map;async function entryFileFor(n,a,S){if(gs(a))return a;if(!uS.test(a)||a===cS||a.startsWith(`${cS}/`))return null;let C=`${a}\0${S===void 0?``:bs(S)}`,F=N.get(C);if(F!==void 0)return F;let I=null;try{let C=await n.resolve(a,S,{skipSelf:!0});C&&gs(C.id)&&existsSync(C.id)&&(I=C.id)}catch{}return N.set(C,I),I}let F=null;async function ensureNapiAvailable(n,C){if(F!==null)return F;let N=!1;try{N=!!await n.resolve(cS,C,{skipSelf:!0})}catch{}return F=N,!N&&a&&!S&&(S=!0,warnSafe(n,`[gjsify-napi-addon] a native .node addon was found but '${cS}' is not resolvable — leaving it to normal resolution. Install it to route the addon through N-API on GJS: gjsify install ${cS}`)),N}return{name:`gjsify-napi-node-addon`,resolveId:{order:`pre`,filter:{id:dS},async handler(n,a){let S=this,C=typeof a==`string`?a:void 0,N=classifySpecifier(n);if(N!==null){if(N.kind===`direct-node`){let a=await resolveNodeFile(S,n,C);return a===null||!await ensureNapiAvailable(S,C)?null:{id:encodeVirtual(`direct`,a)}}if(N.kind===`napi-rs-candidate`){let a=await S.resolve(n,C,{skipSelf:!0});return!a||!a.id.endsWith(`.node`)||!await ensureNapiAvailable(S,C)?null:{id:encodeVirtual(`napi-rs`,a.id)}}if(C===void 0)return null;let a=nearestPackageRoot(C);if(a===null||!await ensureNapiAvailable(S,C))return null;let F=resolveAddonPath(a,{warn:n=>warnSafe(S,n)});return{id:encodeVirtual(N.kind,F)}}let F=await entryFileFor(S,n,C);if(F===null)return null;let I=detectNapiRsEntryCached(F);if(I!==null){let n=await resolveNapiRsEntryAddon(S,I.pkgRoot,I.pkg,F);if(n!==null)return await ensureNapiAvailable(S,C)?{id:encodeVirtual(`napi-rs-entry`,n)}:null}return null}},load(n){let a=decodeVirtual(n);return a===null?null:{code:shimFor(a.kind,a.addonPath),moduleSideEffects:!1}}}}var sS,cS,lS,uS,dS,AddonNotBuiltError,fS=__esmMin(()=>{gl(),Os(),rS(),sS=`${nS}napi-addon:`,cS=`@gjsify/napi`,lS=/-(?:linux|darwin|win32|freebsd|openbsd|sunos|android|aix)-(?:x64|arm64|arm|ia32|ppc64|s390x|riscv64|loong64)(?:-(?:gnu|musl|msvc|eabi|eabihf|androideabi|gnueabihf))?$/,uS=/^[^.\\/:\s\x00][^:\s\x00]*$/,dS=new RegExp([`\\.node$`,`^node-gyp-build(?:\\/index\\.js)?$`,`^bindings(?:\\/bindings\\.js)?$`,lS.source,`[/\\\\]index\\.[cm]?js$`,uS.source].join(`|`)),AddonNotBuiltError=class extends Error{constructor(n){super(`[gjsify-napi-addon] no compiled .node found for '${n}'. Build it (node-gyp / prebuildify) or install a prebuild before bundling for --app gjs.`),this.name=`AddonNotBuiltError`}}});function isWorkspaceSpecifier(n){if(!n.startsWith(pS)||n.includes(`\0`))return!1;let a=n.slice(8);return a.length>0&&!a.startsWith(`/`)}function classifyImport(n){let{source:a,importer:S,aliases:C,isExternal:N}=n;if(S===void 0)return{verdict:`ignore`,reason:`entry`};if(a.startsWith(`.`)||a.startsWith(`/`)||a.startsWith(`\0`))return{verdict:`ignore`,reason:`not-bare`};if(N?.(a))return{verdict:`ignore`,reason:`declared-external`};let F=C?.[a],I=F??a;return I!==a&&N?.(I)?{verdict:`ignore`,reason:`declared-external`}:isWorkspaceSpecifier(I)?F===void 0?{verdict:`check`,candidate:I}:{verdict:`check`,candidate:I,aliasTarget:F}:{verdict:`ignore`,reason:`out-of-scope`}}function formatUnresolvedWorkspaceImport(n){let{target:a,source:S,candidate:C,aliasTarget:N,aliasedFrom:F,importer:I}=n,H=F??[],W=N===void 0?H.length<=mS?H:[]:[S],K=W.map(n=>`\`${n}\``).join(`, `),q=W.length===0?`gjsify build --app ${a}: cannot resolve the workspace package \`${C}\`.`:`gjsify build --app ${a}: cannot resolve \`${C}\`, the \`--app ${a}\` substitution for ${K}.`,Y=W.length===0?[S]:W,X=a===`gjs`?Y.some(n=>n.startsWith(`node:`))?` Stock GJS aborts the whole module graph at load: "ImportError: Unsupported URI scheme for importing: node".`:' Stock GJS would fail at load with "Module not found" — its ESM loader has no node_modules walker and does not follow `package.json#exports` for bare specifiers.':``,te=(W.length===0?`Leaving it unresolved would silently externalise \`${S}\` into the bundle, which the \`--app ${a}\` runtime cannot resolve.`:`Leaving it unresolved would silently externalise the ORIGINAL ${W.length===1?`specifier`:`specifiers`} ${K} into the bundle, defeating the substitution the \`--app ${a}\` target exists to perform.`)+X;return[q,` imported by: ${I}`,``,te,``,`Likely causes:`," - `node_modules` is missing or incomplete — run `gjsify install` (`--immutable` in CI).",' - the workspace package is not built: its `exports["."]` names a `lib/` that does not exist —'," run `gjsify run build:infra`, or `gjsify workspace <pkg> build` for the one package.",` - \`${C}\` is genuinely not a dependency of this project — add it.`].join(`
690
+ `,W=_s(C,`auto-globals-${createHash(`sha1`).update(H).digest(`hex`).slice(0,10)}.mjs`);return await writeFile$1(W,H,`utf-8`),W}var Yx,Xx,Zx,Qx,$x=__esmMin(()=>{_e(),Jc(),gl(),xo(),Os(),Bx(),dv(),Yx=Lx,Xx=Ix,Zx=Rx,Qx=sv});function inlineStaticReads(n,a){if(!n.includes(`readFileSync`)&&!n.includes(`readdirSync`)&&!n.includes(`existsSync`))return{contents:n,inlined:0};let S;try{S=parse$1(n,{ecmaVersion:`latest`,sourceType:`module`,allowAwaitOutsideFunction:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0})}catch{return{contents:n,inlined:0}}let C={sourceUrl:pathToFileURL(a).href},N=[];if(simple(S,{CallExpression(a){let S=tryInlineCall(a,C,n);S&&N.push(S)}}),N.length===0)return{contents:n,inlined:0};let F=[];N.sort((n,a)=>n.start-a.start||a.end-n.end);for(let n of N){let a=F[F.length-1];a&&n.start>=a.start&&n.end<=a.end||F.push(n)}F.sort((n,a)=>a.start-n.start);let I=n;for(let n of F)I=I.slice(0,n.start)+n.replacement+I.slice(n.end);return{contents:I,inlined:F.length}}function tryInlineCall(n,a,S){let C=n.callee;if(C.type===`MemberExpression`&&!C.computed&&C.object.type===`Identifier`&&C.object.name===`JSON`&&C.property.type===`Identifier`&&C.property.name===`parse`&&n.arguments.length>=1&&n.arguments[0].type===`CallExpression`){let S=n.arguments[0],C=tryInlineReadFile(S,a,!0);if(C!==void 0)try{let a=JSON.parse(JSON.parse(C));return{start:n.start,end:n.end,replacement:jsLiteral(a)}}catch{}}let N=identifierName(C);if(N===`readFileSync`){let S=tryInlineReadFile(n,a,!1);if(S!==void 0)return{start:n.start,end:n.end,replacement:S}}if(N===`readdirSync`){if(hasWithFileTypes(n.arguments[1]))return;let S=evalPathExpr(n.arguments[0],a);if(S&&existsSync(S)&&isDirectorySafe(S))try{let a=readdirSync(S);return{start:n.start,end:n.end,replacement:jsLiteral(a)}}catch{}}if(N===`existsSync`){let S=evalPathExpr(n.arguments[0],a);if(S!==void 0)return{start:n.start,end:n.end,replacement:existsSync(S)?`true`:`false`}}if(N===`createRequire`){let S=evalPathExpr(n.arguments[0],a),C=S!==void 0&&S.includes(`.zip/`);if(S!==void 0&&(C||!existsSync(S)))return{start:n.start,end:n.end,replacement:`(() => { const _r = (id) => { throw new Error("[gjsify] createRequire stub: '" + id + "' was not bundled (anchor path: " + ${jsStringLiteral(S)} + ")"); }; _r.resolve = _r; _r.cache = {}; _r.extensions = {}; _r.main = void 0; return _r; })()`}}}function tryInlineReadFile(n,a,S){if(n.arguments.length<1)return;let C=evalPathExpr(n.arguments[0],a);if(!C||!existsSync(C)||isDirectorySafe(C))return;let N;if(S)N=`utf8`;else if(n.arguments.length>=2&&(N=evalEncodingExpr(n.arguments[1]),N===void 0))return;try{if(N)return jsStringLiteral(readFileSync(C,N));{let n=readFileSync(C);return`new Uint8Array([${Array.from(n).join(`,`)}])`}}catch{return}}function evalPathExpr(n,a){let S=evalExpr(n,a);if(S instanceof URL)return S.protocol===`file:`?fileURLToPath(S):void 0;if(typeof S==`string`){if(S.startsWith(`file://`))return fileURLToPath(S);if(isAbsoluteFsPath(S))return S}}function isAbsoluteFsPath(n,a=process.platform){return(a===`win32`?ds:ls).isAbsolute(n)}function evalExpr(n,a){if(n)switch(n.type){case`Literal`:return typeof n.value==`string`?n.value:void 0;case`TemplateLiteral`:{let a=n;return a.expressions.length>0?void 0:a.quasis.map(n=>n.value.cooked??``).join(``)}case`BinaryExpression`:{let S=n;if(S.operator!==`+`)return;let C=evalExpr(S.left,a),N=evalExpr(S.right,a);return typeof C!=`string`||typeof N!=`string`?void 0:C+N}case`Identifier`:{let S=n;return S.name===`__dirname`?fileURLToPath(new URL(`.`,a.sourceUrl)):S.name===`__filename`?fileURLToPath(a.sourceUrl):void 0}case`MemberExpression`:{let S=n;if(S.object.type===`MetaProperty`&&S.object.meta.name===`import`&&S.object.property.name===`meta`&&S.property.type===`Identifier`&&S.property.name===`url`)return a.sourceUrl;if(!S.computed&&S.property.type===`Identifier`){let n=evalExpr(S.object,a),C=S.property.name;if(n instanceof URL){if(C===`href`)return n.href;if(C===`pathname`)return n.pathname}if(typeof n==`string`){if(C===`href`)return n;if(C===`pathname`)try{return new URL(n).pathname}catch{return}}}return}case`NewExpression`:{let S=n;if(identifierName(S.callee)===`URL`){if(S.arguments.length===0)return;let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;if(S.arguments.length===1)try{return new URL(n)}catch{return}let C=evalExpr(S.arguments[1],a),N=C instanceof URL?C.href:typeof C==`string`?C:void 0;if(!N)return;try{return new URL(n,N)}catch{return}}return}case`CallExpression`:{let S=n,C=identifierName(S.callee);if(C===`fileURLToPath`){let n=evalExpr(S.arguments[0],a),C=n instanceof URL?n.href:typeof n==`string`?n:void 0;if(!C)return;try{return fileURLToPath(C)}catch{return}}if(C===`pathToFileURL`){let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;try{return pathToFileURL(n)}catch{return}}if(C===`join`||C===`resolve`){let n=[];for(let C of S.arguments){let S=evalExpr(C,a);if(typeof S!=`string`)return;n.push(S)}return C===`join`?_s(...n):ms(...n)}if(C===`dirname`||C===`basename`||C===`extname`){let n=evalExpr(S.arguments[0],a);if(typeof n!=`string`)return;if(C===`dirname`)return bs(n);if(C===`basename`){let C=S.arguments.length>=2?evalExpr(S.arguments[1],a):void 0;return xs(n,typeof C==`string`?C:void 0)}if(C===`extname`)return Ss(n)}if(C===`relative`){let n=evalExpr(S.arguments[0],a),C=evalExpr(S.arguments[1],a);return typeof n!=`string`||typeof C!=`string`?void 0:vs(n,C)}return}}}function evalEncodingExpr(n){if(n){if(n.type===`Literal`){let a=n.value;return typeof a==`string`?canonicalEncoding(a):void 0}if(n.type===`ObjectExpression`){for(let a of n.properties)if(!(a.type!==`Property`||a.computed)&&(a.key.type===`Identifier`?a.key.name:a.key.type===`Literal`?String(a.key.value):void 0)===`encoding`)return a.value.type===`Literal`&&typeof a.value.value==`string`?canonicalEncoding(a.value.value):void 0}}}function hasWithFileTypes(n){if(!n||n.type!==`ObjectExpression`)return!1;for(let a of n.properties)if(!(a.type!==`Property`||a.computed)&&(a.key.type===`Identifier`?a.key.name:a.key.type===`Literal`?String(a.key.value):void 0)===`withFileTypes`)return a.value.type===`Literal`&&a.value.value===!0;return!1}function canonicalEncoding(n){let a=n.toLowerCase();if(a===`utf8`||a===`utf-8`)return`utf8`;if(a===`ascii`)return`ascii`;if(a===`latin1`||a===`binary`)return`latin1`}function identifierName(n){if(n){if(n.type===`Identifier`)return n.name;if(n.type===`MemberExpression`&&!n.computed){let a=n;if(a.property.type!==`Identifier`||a.object.type!==`Identifier`)return;let S=a.object.name;return eS.has(S)?a.property.name:void 0}}}function jsLiteral(n){if(typeof n==`string`)return jsStringLiteral(n);if(typeof n==`number`)return Number.isFinite(n)?String(n):`null`;if(typeof n==`boolean`)return n?`true`:`false`;if(n===null)return`null`;if(Array.isArray(n))return`[`+n.map(jsLiteral).join(`,`)+`]`;if(typeof n==`object`){let a=[];for(let[S,C]of Object.entries(n))a.push(`${jsStringLiteral(S)}:${jsLiteral(C)}`);return`{`+a.join(`,`)+`}`}return`undefined`}function jsStringLiteral(n){return JSON.stringify(n)}function isDirectorySafe(n){try{return statSync(n).isDirectory()}catch{return!1}}var eS,tS=__esmMin(()=>{Nx(),Fx(),Os(),rn(),gl(),eS=new Set([`path`,`fs`])});function isGjsifyVirtualModuleId(n){return typeof n==`string`&&n.startsWith(`\0gjsify-`)}var nS,rS=__esmMin(()=>{nS=`\0gjsify-`}),iS=__esmMin(()=>{fv(),Ly(),Ry(),Tm(),zy(),Jx(),$x(),tS(),rS()});function aliasPlugin(n){let a=n.entries;return{name:`gjsify-alias`,resolveId:{order:`pre`,async handler(n,S,C){if(isGjsifyVirtualModuleId(S)||!Object.prototype.hasOwnProperty.call(a,n))return null;let N=a[n];if(N===n)return null;let F=await this.resolve(N,S,{skipSelf:!0,kind:C?.kind});return F===null?null:F}}}}var aS=__esmMin(()=>{rS()});function externalsPlugin(n,a){return{name:a?.name??`gjsify-externalize`,resolveId(a,S,C){return S===void 0||C?.isEntry?null:n(a)?{id:a,external:!0}:null}}}var oS=__esmMin(()=>{});function isMusl(n){return n===`linux`&&existsSync(`/etc/alpine-release`)}function hostTarget(){let n=process.env.npm_config_platform||process.platform,a=process.env.npm_config_arch||process.arch,S=process.versions?process.versions.modules:void 0,C=(process.versions&&process.versions.uv||``).split(`.`)[0]||``,N=process.env.ARM_VERSION||(a===`arm64`?`8`:``)||``;return{platform:n,arch:a,libc:process.env.LIBC===`musl`||isMusl(n)?`musl`:`glibc`,abi:S,uv:C,armv:N,runtime:`node`}}function readdirSafe(n){try{return readdirSync(n)}catch{return[]}}function firstNodeFile(n){let a=readdirSafe(n).filter(n=>n.endsWith(`.node`)).sort();return a.length===0?null:{file:a[0],all:a}}function parseTuple(n){let a=n.split(`-`);if(a.length!==2)return null;let S=a[0],C=a[1].split(`+`);return!S||C.length===0||!C.every(Boolean)?null:{name:n,platform:S,architectures:C}}function parseTags(n){let a=n.split(`.`),S=a.pop(),C={file:n,specificity:0};if(S!==`node`)return null;for(let n of a){if(n===`node`||n===`electron`||n===`node-webkit`)C.runtime=n;else if(n===`napi`)C.napi=!0;else if(n.slice(0,3)===`abi`)C.abi=n.slice(3);else if(n.slice(0,2)===`uv`)C.uv=n.slice(2);else if(n.slice(0,4)===`armv`)C.armv=n.slice(4);else if(n===`glibc`||n===`musl`)C.libc=n;else continue;C.specificity++}return C}function runtimeAgnostic(n){return n.runtime===`node`&&n.napi===!0}function resolvePrebuild(n,a){let S=_s(n,`prebuilds`),C=readdirSafe(S).map(parseTuple).filter(n=>n!==null&&n.platform===a.platform&&n.architectures.includes(a.arch)).sort((n,a)=>n.architectures.length-a.architectures.length)[0];if(!C)return null;let N=_s(S,C.name),F=readdirSafe(N).map(parseTags).filter(n=>!(n===null||n.runtime&&n.runtime!==a.runtime&&!runtimeAgnostic(n)||n.abi&&n.abi!==a.abi&&!n.napi||n.uv&&n.uv!==a.uv||n.armv&&n.armv!==a.armv||n.libc&&n.libc!==a.libc)).sort((n,S)=>n.runtime===S.runtime?n.abi===S.abi?n.specificity===S.specificity?0:n.specificity>S.specificity?-1:1:n.abi?-1:1:n.runtime===a.runtime?-1:1)[0];return F?_s(N,F.file):null}function resolveAddonPath(n,a){let S=hostTarget();for(let S of[`Release`,`Debug`]){let C=_s(n,`build`,S),N=firstNodeFile(C);if(N)return N.all.length>1&&a?.warn&&a.warn(`[gjsify-napi-addon] ${N.all.length} .node files in ${C} (${N.all.join(`, `)}); picking '${N.file}'. If wrong, import the .node directly.`),_s(C,N.file)}let C=resolvePrebuild(n,S);if(C)return C;throw new AddonNotBuiltError(n)}function nearestPackageRoot(n){let a=gs(n)?bs(n):bs(ms(n));for(let n=0;n<64;n++){if(existsSync(_s(a,`package.json`)))return a;let n=bs(a);if(n===a)break;a=n}return null}function directNodeShim(n){return`import { loadAddon } from ${JSON.stringify(cS)};\nexport default loadAddon(${JSON.stringify(n)});\n`}function nodeGypBuildShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nfunction load() { return loadAddon(${JSON.stringify(n)}); }\nload.path = function () { return ${JSON.stringify(n)}; };\nload.resolve = load.path;\nmodule.exports = load;\n`}function bindingsShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nfunction bindings() { return loadAddon(${JSON.stringify(n)}); }\nmodule.exports = bindings;\n`}function napiRsShim(n){return`const { loadAddon } = require(${JSON.stringify(cS)});\nmodule.exports = loadAddon(${JSON.stringify(n)});\n`}function shimFor(n,a){switch(n){case`direct`:return directNodeShim(a);case`node-gyp-build`:return nodeGypBuildShim(a);case`bindings`:return bindingsShim(a);case`napi-rs`:case`napi-rs-entry`:return napiRsShim(a)}}function encodeVirtual(n,a){return`${sS}${n}:${a}`}function decodeVirtual(n){if(!n.startsWith(sS))return null;let a=n.slice(sS.length),S=a.indexOf(`:`);return S===-1?null:{kind:a.slice(0,S),addonPath:a.slice(S+1)}}function classifySpecifier(n){if(n===`node-gyp-build`||n===`node-gyp-build/index.js`)return{kind:`node-gyp-build`};if(n===`bindings`||n===`bindings/bindings.js`)return{kind:`bindings`};if(n.endsWith(`.node`))return{kind:`direct-node`};let a=n.split(`/`).pop()??n;return!n.startsWith(`.`)&&lS.test(a)?{kind:`napi-rs-candidate`}:null}function isGjsifyNativeBridge(n){let a=n?.gjsify;if(typeof a!=`object`||!a)return!1;let{platforms:S,prebuilds:C}=a;return Array.isArray(S)||typeof C==`string`}function isNapiRsPackageJson(n){if(n&&typeof n.napi==`object`&&n.napi!==null)return!0;let a=n?.optionalDependencies;if(a){for(let S of Object.keys(a))if(isNapiRsSibling(n,S))return!0}return!1}function readPackageJsonSafe(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return null}}function detectNapiRsEntry(n){if(!gs(n)||!/\.[cm]?js$/.test(n))return null;let a=nearestPackageRoot(n);if(a===null)return null;let S=readPackageJsonSafe(a);if(S===null||!isNapiRsPackageJson(S))return null;let C=stripJsExt(ms(n));return nativeEntrySpecs(S).some(n=>stripJsExt(ms(a,n))===C)?{pkgRoot:a,pkg:S}:null}function stripJsExt(n){return n.replace(/\.[cm]?js$/,``)}function nativeEntrySpecs(n){let a=[],add=n=>{typeof n==`string`&&n&&!a.includes(n)&&a.push(n)};add(n.main),add(n.module);let walk=(n,a)=>{if(typeof n==`string`)return add(n);if(!(a>4||typeof n!=`object`||!n||Array.isArray(n)))for(let[S,C]of Object.entries(n))S===`browser`||S===`types`||walk(C,a+1)},S=n.exports;if(typeof S==`string`)add(S);else if(typeof S==`object`&&S&&!Array.isArray(S)){let n=S;walk(Object.keys(n).some(n=>n.startsWith(`.`))?n[`.`]:n,0)}return a.length===0&&a.push(`index.js`),a}function napiBinaryName(n){let a=n.napi;if(a&&typeof a==`object`){let n=a,S=typeof n.binaryName==`string`?n.binaryName:n.name;if(typeof S==`string`&&S)return S}return typeof n.name==`string`&&n.name?n.name.replace(/^@[^/]+\//,``):null}function napiSiblingPrefixes(n){let a=[],S=n.napi;if(S&&typeof S==`object`){let{packageName:n}=S;typeof n==`string`&&n&&a.push(n)}return typeof n.name==`string`&&n.name&&!a.includes(n.name)&&a.push(n.name),a}function isNapiRsSibling(n,a){return!lS.test(a)||isGjsifyNativeBridge(n)?!1:napiSiblingPrefixes(n).some(n=>a.startsWith(`${n}-`))}function hostNapiRsTriple(){let n=process.platform,a=process.arch,S={x64:`x64`,arm64:`arm64`,arm:`arm`,ia32:`ia32`,ppc64:`ppc64`,s390x:`s390x`,riscv64:`riscv64`}[a];if(!S)return null;switch(n){case`linux`:return a===`arm`?`linux-arm-gnueabihf`:`linux-${S}-${process.env.LIBC===`musl`||isMusl(`linux`)?`musl`:`gnu`}`;case`darwin`:return`darwin-${S}`;case`win32`:return`win32-${S}-msvc`;case`freebsd`:return`freebsd-${S}`;case`android`:return a===`arm`?`android-arm-eabi`:`android-${S}`;default:return null}}function rawAddonPath(n){let a=decodeVirtual(n);return a?a.addonPath:n}async function resolveNapiRsEntryAddon(n,a,S,C){let N=Object.keys(S.optionalDependencies??{}).filter(n=>isNapiRsSibling(S,n)),F=hostNapiRsTriple(),I=F===null?N:N.filter(n=>n.endsWith(`-${F}`));for(let N of I){let F=null;try{F=await n.resolve(N,C,{skipSelf:!0})}catch(C){warnSafe(n,`[gjsify-napi] probing the platform sibling "${N}" of "${S.name??a}" failed; not rewriting its entry (${C instanceof Error?C.message.split(`
691
+ `)[0]:String(C)})`);continue}if(!F)continue;let I=rawAddonPath(F.id);if(I.endsWith(`.node`)&&existsSync(I))return I}let H=napiBinaryName(S);if(H&&F){let n=_s(a,`${H}.${F}.node`);if(existsSync(n))return n}return null}function warnSafe(n,a){typeof n.warn==`function`&&n.warn(a)}async function resolveNodeFile(n,a,S){if(gs(a))return existsSync(a)?a:null;if(S!==void 0){let C=ms(bs(S),a);if(existsSync(C))return C;let N=await n.resolve(a,S,{skipSelf:!0});return N&&N.id.endsWith(`.node`)&&existsSync(N.id)?N.id:null}return null}function napiNodeAddonPlugin(n={}){let a=n.warnOnMissingNapi!==!1,S=!1,C=new Map;function detectNapiRsEntryCached(n){let a=C.get(n);if(a!==void 0)return a;let S=detectNapiRsEntry(n);return C.set(n,S),S}let N=new Map;async function entryFileFor(n,a,S){if(gs(a))return a;if(!uS.test(a)||a===cS||a.startsWith(`${cS}/`))return null;let C=`${a}\0${S===void 0?``:bs(S)}`,F=N.get(C);if(F!==void 0)return F;let I=null;try{let C=await n.resolve(a,S,{skipSelf:!0});C&&gs(C.id)&&existsSync(C.id)&&(I=C.id)}catch{}return N.set(C,I),I}let F=null;async function ensureNapiAvailable(n,C){if(F!==null)return F;let N=!1;try{N=!!await n.resolve(cS,C,{skipSelf:!0})}catch{}return F=N,!N&&a&&!S&&(S=!0,warnSafe(n,`[gjsify-napi-addon] a native .node addon was found but '${cS}' is not resolvable — leaving it to normal resolution. Install it to route the addon through N-API on GJS: gjsify install ${cS}`)),N}return{name:`gjsify-napi-node-addon`,resolveId:{order:`pre`,filter:{id:dS},async handler(n,a){let S=this,C=typeof a==`string`?a:void 0,N=classifySpecifier(n);if(N!==null){if(N.kind===`direct-node`){let a=await resolveNodeFile(S,n,C);return a===null||!await ensureNapiAvailable(S,C)?null:{id:encodeVirtual(`direct`,a)}}if(N.kind===`napi-rs-candidate`){let a=await S.resolve(n,C,{skipSelf:!0});return!a||!a.id.endsWith(`.node`)||!await ensureNapiAvailable(S,C)?null:{id:encodeVirtual(`napi-rs`,a.id)}}if(C===void 0)return null;let a=nearestPackageRoot(C);if(a===null||!await ensureNapiAvailable(S,C))return null;let F=resolveAddonPath(a,{warn:n=>warnSafe(S,n)});return{id:encodeVirtual(N.kind,F)}}let F=await entryFileFor(S,n,C);if(F===null)return null;let I=detectNapiRsEntryCached(F);if(I!==null){let n=await resolveNapiRsEntryAddon(S,I.pkgRoot,I.pkg,F);if(n!==null)return await ensureNapiAvailable(S,C)?{id:encodeVirtual(`napi-rs-entry`,n)}:null}return null}},load(n){let a=decodeVirtual(n);return a===null?null:{code:shimFor(a.kind,a.addonPath),moduleSideEffects:!1}}}}var sS,cS,lS,uS,dS,AddonNotBuiltError,fS=__esmMin(()=>{gl(),Os(),rS(),sS=`${nS}napi-addon:`,cS=`@gjsify/napi`,lS=/-(?:linux|darwin|win32|freebsd|openbsd|sunos|android|aix)-(?:x64|arm64|arm|ia32|ppc64|s390x|riscv64|loong64)(?:-(?:gnu|musl|msvc|eabi|eabihf|androideabi|gnueabihf))?$/,uS=/^[^.\\/:\s\x00][^:\s\x00]*$/,dS=new RegExp([`\\.node$`,`^node-gyp-build(?:\\/index\\.js)?$`,`^bindings(?:\\/bindings\\.js)?$`,lS.source,`[/\\\\]index\\.[cm]?js$`,uS.source].join(`|`)),AddonNotBuiltError=class extends Error{constructor(n){super(`[gjsify-napi-addon] no compiled .node found for '${n}'. Build it (node-gyp / prebuildify) or install a prebuild before bundling for --app gjs.`),this.name=`AddonNotBuiltError`}}});function isWorkspaceSpecifier(n){if(!n.startsWith(pS)||n.includes(`\0`))return!1;let a=n.slice(8);return a.length>0&&!a.startsWith(`/`)}function classifyImport(n){let{source:a,importer:S,aliases:C,isExternal:N}=n;if(S===void 0)return{verdict:`ignore`,reason:`entry`};if(a.startsWith(`.`)||a.startsWith(`/`)||a.startsWith(`\0`))return{verdict:`ignore`,reason:`not-bare`};if(N?.(a))return{verdict:`ignore`,reason:`declared-external`};let F=C?.[a],I=F??a;return I!==a&&N?.(I)?{verdict:`ignore`,reason:`declared-external`}:isWorkspaceSpecifier(I)?F===void 0?{verdict:`check`,candidate:I}:{verdict:`check`,candidate:I,aliasTarget:F}:{verdict:`ignore`,reason:`out-of-scope`}}function formatUnresolvedWorkspaceImport(n){let{target:a,source:S,candidate:C,aliasTarget:N,aliasedFrom:F,importer:I}=n,H=F??[],W=N===void 0?H.length<=mS?H:[]:[S],K=W.map(n=>`\`${n}\``).join(`, `),q=W.length===0?`gjsify build --app ${a}: cannot resolve the workspace package \`${C}\`.`:`gjsify build --app ${a}: cannot resolve \`${C}\`, the \`--app ${a}\` substitution for ${K}.`,Y=W.length===0?[S]:W,X=a===`gjs`?Y.some(n=>n.startsWith(`node:`))?` Stock GJS aborts the whole module graph at load: "ImportError: Unsupported URI scheme for importing: node".`:' Stock GJS would fail at load with "Module not found" — its ESM loader has no node_modules walker and does not follow `package.json#exports` for bare specifiers.':``,te=(W.length===0?`Leaving it unresolved would silently externalise \`${S}\` into the bundle, which the \`--app ${a}\` runtime cannot resolve.`:`Leaving it unresolved would silently externalise the ORIGINAL ${W.length===1?`specifier`:`specifiers`} ${K} into the bundle, defeating the substitution the \`--app ${a}\` target exists to perform.`)+X;return[q,` imported by: ${I}`,``,te,``,`Likely causes:`," - `node_modules` is missing or incomplete — run `gjsify install` (`--immutable` in CI).",' - the workspace package is not built: its `exports["."]` names a `lib/` that does not exist —'," run `gjsify run build:infra`, or `gjsify workspace <pkg> build` for the one package.",` - \`${C}\` is genuinely not a dependency of this project — add it.`].join(`
689
692
  `)}function buildReverseAliasIndex(n){let a=new Map;if(!n)return a;for(let[S,C]of Object.entries(n)){let n=a.get(C);n?n.push(S):a.set(C,[S])}for(let n of a.values())n.sort();return a}function unresolvedWorkspaceImportPlugin(n){let{target:a,aliases:S,isExternal:C}=n,N=new Set,F=buildReverseAliasIndex(S),I=new Map;return{name:`gjsify-unresolved-workspace-import`,resolveId:{order:`post`,async handler(n,H,W){let K=typeof H==`string`?H:void 0;if(W?.isEntry)return null;let q=classifyImport({source:n,importer:K,aliases:S,isExternal:C});if(q.verdict===`ignore`)return null;let Y=`${q.candidate}\0${K===void 0?``:bs(K)}\0${W?.kind??``}`,X=I.get(Y);if(X)return X;if(N.has(Y))return null;N.add(Y);let te;try{te=await this.resolve(q.candidate,K,{skipSelf:!0,kind:W?.kind})}finally{N.delete(Y)}if(te)return I.set(Y,te),te;throw new UnresolvedWorkspaceImportError({target:a,source:n,candidate:q.candidate,aliasTarget:q.aliasTarget,aliasedFrom:F.get(q.candidate)?.filter(a=>a!==n),importer:K??`<entry>`})}}}}var pS,mS,UnresolvedWorkspaceImportError,hS=__esmMin(()=>{Os(),pS=`@gjsify/`,mS=4,UnresolvedWorkspaceImportError=class extends Error{details;constructor(n){super(formatUnresolvedWorkspaceImport(n)),this.name=`UnresolvedWorkspaceImportError`,this.details=n}}});function ensureNodeFactory(n){return`factory`in n&&n.factory!=null?normalizeNodeFactory(n.factory):`updateSourceFileNode`in n?createNodeFactory(n):normalizeNodeFactory(n)}function splitDecoratorsAndModifiers(n){let a=n?.filter(n=>`expression`in n)??[],S=n?.filter(n=>!(`expression`in n))??[];return[a==null||a.length<1?void 0:a,S==null||S.length<1?void 0:S]}function normalizeNodeFactory(n){if(n.__compatUpgraded)return n;let a=!1;try{a=n.createImportEqualsDeclaration([],!1,``,n.createIdentifier(``)).decorators!=null}catch{a=n.createImportEqualsDeclaration([],[],!1,``,n.createIdentifier(``)).decorators!=null}let S=a&&n.createImportEqualsDeclaration.length===4,C=a&&n.createImportSpecifier.length===2,N=a&&n.createExportSpecifier.length===2,F=a&&n.createImportTypeNode.length<5,I=a&&n.createMappedTypeNode.length===4,H=a&&n.createMappedTypeNode.length===5,W=a&&n.createTypeParameterDeclaration.length===3,K=n.createSatisfiesExpression==null,q=n.createClassStaticBlockDeclaration==null,Y=n.createUniquePrivateName==null,X=n.getGeneratedPrivateNameForNode==null,te=n.createPrivateIdentifier==null,ne=n.createAssertClause==null,re=n.createAssertEntry==null,ie=n.createImportTypeAssertionContainer==null,ae=n.createJSDocMemberName==null,oe=n.createJSDocLinkCode==null,Z=n.createJSDocLinkPlain==null;if(S||C||N||F||I||H||W||K||q||Y||X||te||ne||re||ie||a){let se=`original`in n.updateBlock(n.createBlock([]),[]),setOriginalNode=(n,a)=>(n.original=a,n),setTextRangeEnd=(n,a)=>(n.end=a,n),setTextRangePos=(n,a)=>(n.pos=a,n),setTextRangePosEnd=(n,a,S)=>setTextRangeEnd(setTextRangePos(n,a),S),setTextRange=(n,a)=>a==null?n:setTextRangePosEnd(n,a.pos,a.end),updateWithoutOriginal=(n,a)=>(n!==a&&setTextRange(n,a),n),updateWithOriginal=(n,a)=>(n!==a&&(setOriginalNode(n,a),setTextRange(n,a)),n),ce=se?updateWithOriginal:updateWithoutOriginal,le=te?function(a){return n.createIdentifier(a)}:n.createPrivateIdentifier;return{__compatUpgraded:!0,...n,createPrivateIdentifier:le,...S?(()=>{function createImportEqualsDeclaration(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?C:N,q=I?N:F;return n.createImportEqualsDeclaration(H,W,K,q)}function updateImportEqualsDeclaration(a,S,C,N,F,I){let H=arguments.length<=5,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?N:F,Y=H?F:I;return n.updateImportEqualsDeclaration(a,W,K,q,Y)}return{createImportEqualsDeclaration,updateImportEqualsDeclaration}})():{},...C?{createImportSpecifier(a,S,C){return n.createImportSpecifier(S,C)},updateImportSpecifier(a,S,C,N){return n.updateImportSpecifier(a,C,N)}}:{},...N?{createExportSpecifier(a,S,C){return n.createExportSpecifier(S,C)},updateExportSpecifier(a,S,C,N){return n.updateExportSpecifier(a,C,N)}}:{},...F?(()=>{function createImportTypeNode(a,S,C,N,F){return arguments.length<5?n.createImportTypeNode(a,S,C,N):n.createImportTypeNode(a,C,N,F)}function updateImportTypeNode(a,S,C,N,F,I){return arguments.length<6?n.updateImportTypeNode(a,S,C,N,F):n.updateImportTypeNode(a,S,N,F,I)}return{createImportTypeNode,updateImportTypeNode}})():{},...I?{createMappedTypeNode(a,S,C,N,F){return n.createMappedTypeNode(a,S,N,F)},updateMappedTypeNode(a,S,C,N,F,I){return n.updateMappedTypeNode(a,S,C,F,I)}}:{},...H?{createMappedTypeNode(a,S,C,N,F,I){return n.createMappedTypeNode(a,S,C,N,F)},updateMappedTypeNode(a,S,C,N,F,I,H){return n.updateMappedTypeNode(a,S,C,N,F,I)}}:{},...W?(()=>{function createTypeParameterDeclaration(a,S,C,N){let F=typeof a==`string`||a!=null&&!Array.isArray(a)&&`escapedText`in a,I=F?void 0:a,H=F?a:S,W=F?S:C,K=F?C:N,q=n.createTypeParameterDeclaration(H,W,K);return I!=null&&(q.modifiers=n.createNodeArray(I)),q}function updateTypeParameterDeclaration(a,S,C,N,F){let I=S!=null&&!Array.isArray(S)&&`escapedText`in S,H=I?void 0:S,W=I?S:C,K=I?C:N,q=I?N:F,Y=n.updateTypeParameterDeclaration(a,W,K,q);return H!=null&&(Y.modifiers=n.createNodeArray(H)),Y}return{createTypeParameterDeclaration,updateTypeParameterDeclaration}})():{},...K?(()=>{function createSatisfiesExpression(n,a){return{...n}}function updateSatisfiesExpression(n,a,S){return a===n.expression&&S===n.type?n:ce(createSatisfiesExpression(a,S),n)}return{createSatisfiesExpression,updateSatisfiesExpression}})():{},...Y?(()=>{function createUniquePrivateName(n){if(n!=null&&!n.startsWith(`#`))throw TypeError(`First character of private identifier must be #: `+n);return le(n??``)}return{createUniquePrivateName}})():{},...X?(()=>{function getGeneratedPrivateNameForNode(n){return le(``)}return{getGeneratedPrivateNameForNode}})():{},...q?(()=>{function createClassStaticBlockDeclaration(a,S,C){let N=arguments.length>=3?C:a,F=n.createEmptyStatement();return F.body=N,F.transformFlags=8388608,F}function updateClassStaticBlockDeclaration(n,a,S,C){let N=arguments.length>=4?C:a;return N===n.body?n:ce(createClassStaticBlockDeclaration(N),n)}return{createClassStaticBlockDeclaration,updateClassStaticBlockDeclaration}})():{},...ne?(()=>{function createAssertClause(a,S){let C=n.createEmptyStatement();return C.elements=a,C.multiLine=S,C.transformFlags|=4,C}function updateAssertClause(n,a,S){return n.elements!==a||n.multiLine!==S?ce(createAssertClause(a,S),n):n}return{createAssertClause,updateAssertClause}})():{},...re?(()=>{function createAssertEntry(a,S){let C=n.createEmptyStatement();return C.name=a,C.value=S,C.transformFlags|=4,C}function updateAssertEntry(n,a,S){return n.name!==a||n.value!==S?ce(createAssertEntry(a,S),n):n}return{createAssertEntry,updateAssertEntry}})():{},...ie?(()=>{function createImportTypeAssertionContainer(a,S){let C=n.createEmptyStatement();return C.assertClause=a,C.multiLine=S,C}function updateImportTypeAssertionContainer(n,a,S){return n.assertClause!==a||n.multiLine!==S?ce(createImportTypeAssertionContainer(a,S),n):n}return{createImportTypeAssertionContainer,updateImportTypeAssertionContainer}})():{},...ae?(()=>{function createJSDocMemberName(a,S){let C=n.createJSDocComment(void 0,void 0);delete C.comment,delete C.tags;let N=C;return N.left=a,N.right=S,N}function updateJSDocMemberName(n,a,S){return a===n.left&&S===n.right?n:ce(createJSDocMemberName(a,S),n)}return{createJSDocMemberName,updateJSDocMemberName}})():{},...oe?(()=>{function createJSDocLinkCode(a,S){let C=n.createJSDocComment(void 0,void 0);delete C.comment,delete C.tags;let N=C;return N.name=a,N.text=S,N}function updateJSDocLinkCode(n,a,S){return a===n.name&&S===n.text?n:ce(createJSDocLinkCode(a,S),n)}return{createJSDocLinkCode,updateJSDocLinkCode}})():{},...Z?(()=>{function createJSDocLinkPlain(a,S){let C=n.createJSDocComment(void 0,void 0);delete C.comment,delete C.tags;let N=C;return N.name=a,N.text=S,N}function updateJSDocLinkPlain(n,a,S){return a===n.name&&S===n.text?n:ce(createJSDocLinkPlain(a,S),n)}return{createJSDocLinkPlain,updateJSDocLinkPlain}})():{},...a?(()=>{function createParameterDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&C.kind!==25,K=W?splitDecoratorsAndModifiers(a)[0]:a,q=W?splitDecoratorsAndModifiers(a)[1]:S,Y=W?S:C,X=W?C:N,te=W?N:F,ne=W?F:I,re=W?I:H;return n.createParameterDeclaration(K,q,Y,X,te,ne,re)}function updateParameterDeclaration(a,S,C,N,F,I,H,W){let K=typeof N==`string`||N!=null&&N.kind!==25,q=K?splitDecoratorsAndModifiers(S)[0]:S,Y=K?splitDecoratorsAndModifiers(S)[1]:C,X=K?C:N,te=K?N:F,ne=K?F:I,re=K?I:H,ie=K?H:W;return n.updateParameterDeclaration(a,q,Y,X,te,ne,re,ie)}function createPropertyDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S),W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createPropertyDeclaration(W,K,q,Y,X,te)}function updatePropertyDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C),K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updatePropertyDeclaration(a,K,q,Y,X,te,ne)}function createMethodDeclaration(a,S,C,N,F,I,H,W,K){let q=typeof C==`string`||C!=null&&C.kind!==41,Y=q?splitDecoratorsAndModifiers(a)[0]:a,X=q?splitDecoratorsAndModifiers(a)[1]:S,te=q?S:C,ne=q?C:N,re=q?N:F,ie=q?F:I,ae=q?I:H,oe=q?H:W,Z=q?W:K;return n.createMethodDeclaration(Y,X,te,ne,re,ie,ae,oe,Z)}function updateMethodDeclaration(a,S,C,N,F,I,H,W,K,q){let Y=typeof N==`string`||N!=null&&N.kind!==41,X=Y?splitDecoratorsAndModifiers(S)[0]:S,te=Y?splitDecoratorsAndModifiers(S)[1]:C,ne=Y?C:N,re=Y?N:F,ie=Y?F:I,ae=Y?I:H,oe=Y?H:W,Z=Y?W:K,se=Y?K:q;return n.updateMethodDeclaration(a,X,te,ne,re,ie,ae,oe,Z,se)}function createConstructorDeclaration(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createConstructorDeclaration(I,H,W,K)}function updateConstructorDeclaration(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateConstructorDeclaration(a,H,W,K,q)}function createGetAccessorDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S),W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createGetAccessorDeclaration(W,K,q,Y,X,te)}function updateGetAccessorDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C),K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateGetAccessorDeclaration(a,K,q,Y,X,te,ne)}function createSetAccessorDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createSetAccessorDeclaration(H,W,K,q,Y)}function updateSetAccessorDeclaration(a,S,C,N,F,I){let H=typeof C==`string`||C!=null&&!Array.isArray(C),W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateSetAccessorDeclaration(a,W,K,q,Y,X)}function createIndexSignature(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createIndexSignature(I,H,W,K)}function updateIndexSignature(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateIndexSignature(a,H,W,K,q)}function createClassStaticBlockDeclaration(a,S,C){let N=arguments.length<=1?a:C;if(q){let a=n.createEmptyStatement();return a.body=N,a.transformFlags=8388608,a}else return n.createClassStaticBlockDeclaration(void 0,void 0,N)}function updateClassStaticBlockDeclaration(a,S,C,N){let F=arguments.length<=2?S:N;return q?F===a.body?a:ce(createClassStaticBlockDeclaration(F),a):n.updateClassStaticBlockDeclaration(a,void 0,void 0,F)}function createClassExpression(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createClassExpression(W,K,q,Y,X,te)}function updateClassExpression(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateClassExpression(a,K,q,Y,X,te,ne)}function createFunctionDeclaration(a,S,C,N,F,I,H,W){let K=arguments.length<=7,q=K?splitDecoratorsAndModifiers(a)[0]:a,Y=K?splitDecoratorsAndModifiers(a)[1]:S,X=K?S:C,te=K?C:N,ne=K?N:F,re=K?F:I,ie=K?I:H,ae=K?H:W;return n.createFunctionDeclaration(q,Y,X,te,ne,re,ie,ae)}function updateFunctionDeclaration(a,S,C,N,F,I,H,W,K){let q=arguments.length<=8,Y=q?splitDecoratorsAndModifiers(S)[0]:S,X=q?splitDecoratorsAndModifiers(S)[1]:C,te=q?C:N,ne=q?N:F,re=q?F:I,ie=q?I:H,ae=q?H:W,oe=q?W:K;return n.updateFunctionDeclaration(a,Y,X,te,ne,re,ie,ae,oe)}function createClassDeclaration(a,S,C,N,F,I){let H=arguments.length<=5,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createClassDeclaration(W,K,q,Y,X,te)}function updateClassDeclaration(a,S,C,N,F,I,H){let W=arguments.length<=6,K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateClassDeclaration(a,K,q,Y,X,te,ne)}function createInterfaceDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createInterfaceDeclaration(W,K,q,Y,X,te)}function updateInterfaceDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateInterfaceDeclaration(a,K,q,Y,X,te,ne)}function createTypeAliasDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createTypeAliasDeclaration(H,W,K,q,Y)}function updateTypeAliasDeclaration(a,S,C,N,F,I){let H=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateTypeAliasDeclaration(a,W,K,q,Y,X)}function createEnumDeclaration(a,S,C,N){let F=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createEnumDeclaration(I,H,W,K)}function updateEnumDeclaration(a,S,C,N,F){let I=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateEnumDeclaration(a,H,W,K,q)}function createModuleDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S)&&(`escapedText`in S||`_literalExpressionBrand`in S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createModuleDeclaration(H,W,K,q,Y)}function updateModuleDeclaration(a,S,C,N,F){let I=typeof C==`string`||C!=null&&!Array.isArray(C)&&(`escapedText`in C||`_literalExpressionBrand`in C),H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateModuleDeclaration(a,H,W,K,q)}function createImportEqualsDeclaration(a,C,N,F,I){let H=arguments.length<=4,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:C,q=(H?C:N)??!1,Y=H?N:F,X=H?F:I;return S?n.createImportEqualsDeclaration(W,K,Y,X):n.createImportEqualsDeclaration(W,K,q,Y,X)}function updateImportEqualsDeclaration(a,C,N,F,I,H){let W=arguments.length<=5,K=W?splitDecoratorsAndModifiers(C)[0]:C,q=W?splitDecoratorsAndModifiers(C)[1]:N,Y=W?N:F,X=W?F:I,te=W?I:H;return S?n.updateImportEqualsDeclaration(a,K,q,X,te):n.updateImportEqualsDeclaration(a,K,q,Y,X,te)}function createImportDeclaration(a,S,C,N,F){let I=S!=null&&!Array.isArray(S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createImportDeclaration(H,W,K,q,Y)}function updateImportDeclaration(a,S,C,N,F,I){let H=N!=null&&N.kind!==267,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateImportDeclaration(a,W,K,q,Y,X)}function createExportAssignment(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createExportAssignment(I,H,W,K)}function updateExportAssignment(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(S)[0]:S,H=F?splitDecoratorsAndModifiers(S)[1]:C,W=F?C:N;return n.updateExportAssignment(a,I,H,W)}function createExportDeclaration(a,S,C,N,F,I){let H=!(typeof S!=`boolean`&&(arguments.length>=6||Array.isArray(S))),W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createExportDeclaration(W,K,q,Y,X,te)}function updateExportDeclaration(a,S,C,N,F,I,H){let W=!(typeof C!=`boolean`&&(arguments.length>=7||Array.isArray(C))),K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateExportDeclaration(a,K,q,Y,X,te,ne)}return{createParameterDeclaration,updateParameterDeclaration,createPropertyDeclaration,updatePropertyDeclaration,createMethodDeclaration,updateMethodDeclaration,createConstructorDeclaration,updateConstructorDeclaration,createGetAccessorDeclaration,updateGetAccessorDeclaration,createSetAccessorDeclaration,updateSetAccessorDeclaration,createIndexSignature,updateIndexSignature,createClassStaticBlockDeclaration,updateClassStaticBlockDeclaration,createClassExpression,updateClassExpression,createFunctionDeclaration,updateFunctionDeclaration,createClassDeclaration,updateClassDeclaration,createInterfaceDeclaration,updateInterfaceDeclaration,createTypeAliasDeclaration,updateTypeAliasDeclaration,createEnumDeclaration,updateEnumDeclaration,createModuleDeclaration,updateModuleDeclaration,createImportEqualsDeclaration,updateImportEqualsDeclaration,createImportDeclaration,updateImportDeclaration,createExportAssignment,updateExportAssignment,createExportDeclaration,updateExportDeclaration}})():{}}}return n}function createNodeFactory(n){function createToken(a){return n.createToken(a)}function createConstructorTypeNode(a,S,C,N){return arguments.length>=4?n.createConstructorTypeNode(S,C,N):n.createConstructorTypeNode(a,S,C)}function updateConstructorTypeNode(a,S,C,N,F){return arguments.length>=5?n.updateConstructorTypeNode(a,C,N,F):n.updateConstructorTypeNode(a,S,C,N)}function createNamedTupleMember(a,S,C,N){let F=n.createNode(n.SyntaxKind.NamedTupleMember??n.SyntaxKind.TupleType);return F.dotDotDotToken=a,F.name=S,F.questionToken=C,F.type=N,F.transformFlags=1,F}function createJSDocComment(a,S){if(`createJSDocComment`in n)return n.createJSDocComment(a,S);let C=n.createNode(n.SyntaxKind.JSDocComment);return C.comment=a,C.tags=n.createNodeArray(S),C}function createJSDocParameterTag(a,S,C,N,F,I){if(`createJSDocParameterTag`in n)return n.createJSDocParameterTag(a,S,C,N,F,I);let H=n.createNode(n.SyntaxKind.JSDocParameterTag??n.SyntaxKind.JSDocComment);return a!=null&&(H.tagName=a),H.name=S,H.isBracketed=C,H.typeExpression=N,F!=null&&(H.isNameFirst=F),H.comment=I,H}function createJSDocPrivateTag(a,S){if(`createJSDocPrivateTag`in n)return n.createJSDocPrivateTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocPrivateTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocAugmentsTag(a,S,C){if(`createJSDocAugmentsTag`in n)return n.createJSDocAugmentsTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocAugmentsTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.class=S,N.comment=C,N}function createJSDocDeprecatedTag(a,S){let C=n.createNode(n.SyntaxKind.JSDocDeprecatedTag??n.SyntaxKind.JSDocComment);return C.tagName=a,C.comment=S,C}function createJSDocFunctionType(a,S){let C=n.createNode(n.SyntaxKind.JSDocFunctionType??n.SyntaxKind.JSDocComment);return C.parameters=n.createNodeArray(a),C.type=S,C}function createJSDocLink(a,S){let C=n.createNode(n.SyntaxKind.JSDocLink??n.SyntaxKind.JSDocComment);return C.name=a,C.text=S,C}function createJSDocNameReference(a){let S=n.createNode(n.SyntaxKind.JSDocNameReference??n.SyntaxKind.JSDocComment);return S.name=a,S}function createJSDocNamepathType(a){let S=n.createNode(n.SyntaxKind.JSDocNamepathType??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocNonNullableType(a){let S=n.createNode(n.SyntaxKind.JSDocNonNullableType??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocNullableType(a){let S=n.createNode(n.SyntaxKind.JSDocNullableType??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocOptionalType(a){let S=n.createNode(n.SyntaxKind.JSDocOptionalType??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocOverrideTag(a,S){let C=n.createNode(n.SyntaxKind.JSDocOverrideTag??n.SyntaxKind.JSDocComment);return C.tagName=a,C.comment=S,C}function createJSDocSeeTag(a,S,C){let N=n.createNode(n.SyntaxKind.JSDocSeeTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.name=S,N.comment=C,N}function createJSDocText(a){let S=n.createNode(n.SyntaxKind.JSDocText??n.SyntaxKind.JSDocComment);return S.text=a,S}function createJSDocUnknownTag(a,S){let C=n.createNode(n.SyntaxKind.JSDocTag??n.SyntaxKind.JSDocComment);return C.tagName=a,C.comment=S,C}function createJSDocUnknownType(){return n.createNode(n.SyntaxKind.JSDocUnknownType??n.SyntaxKind.JSDocComment)}function createJSDocVariadicType(a){let S=n.createNode(n.SyntaxKind.JSDocVariadicType??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocAllType(){return n.createNode(n.SyntaxKind.JSDocAllType??n.SyntaxKind.JSDocComment)}function createTemplateLiteralType(a,S){let C=n.createNode(n.SyntaxKind.TemplateLiteralType??n.SyntaxKind.StringLiteral);return C.head=a,C.templateSpans=n.createNodeArray(S),C.transformFlags=1,C}function createTemplateLiteralTypeSpan(a,S){let C=n.createNode(n.SyntaxKind.TemplateLiteralTypeSpan??n.SyntaxKind.StringLiteral);return C.type=a,C.literal=S,C.transformFlags=1,C}function createJSDocAuthorTag(a,S){if(`createJSDocAuthorTag`in n)return n.createJSDocAuthorTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocAuthorTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocCallbackTag(a,S,C,N){if(`createJSDocCallbackTag`in n)return n.createJSDocCallbackTag(a,S,C,N);let F=n.createNode(n.SyntaxKind.JSDocCallbackTag??n.SyntaxKind.JSDocComment);return a!=null&&(F.tagName=a),F.typeExpression=S,F.fullName=C,F.comment=N,F}function createJSDocClassTag(a,S){if(`createJSDocClassTag`in n)return n.createJSDocClassTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocClassTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocEnumTag(a,S,C){if(`createJSDocEnumTag`in n)return n.createJSDocEnumTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocEnumTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.typeExpression=S,N.comment=C,N}function createJSDocImplementsTag(a,S,C){if(`createJSDocImplementsTag`in n)return n.createJSDocImplementsTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocImplementsTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.class=S,N.comment=C,N}function createJSDocPropertyTag(a,S,C,N,F,I){if(`createJSDocPropertyTag`in n)return n.createJSDocPropertyTag(a,S,C,N,F,I);let H=n.createNode(n.SyntaxKind.JSDocPropertyTag??n.SyntaxKind.JSDocComment);return a!=null&&(H.tagName=a),H.name=S,H.isBracketed=C,H.typeExpression=N,F!=null&&(H.isNameFirst=F),H.comment=I,H}function createJSDocProtectedTag(a,S){if(`createJSDocProtectedTag`in n)return n.createJSDocProtectedTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocProtectedTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocPublicTag(a,S){if(`createJSDocPublicTag`in n)return n.createJSDocPublicTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocPublicTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocReadonlyTag(a,S){if(`createJSDocReadonlyTag`in n)return n.createJSDocReadonlyTag(a,S);let C=n.createNode(n.SyntaxKind.JSDocReadonlyTag??n.SyntaxKind.JSDocComment);return a!=null&&(C.tagName=a),C.comment=S,C}function createJSDocReturnTag(a,S,C){if(`createJSDocReturnTag`in n)return n.createJSDocReturnTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocReturnTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.typeExpression=S,N.comment=C,N}function createJSDocSignature(a,S,C){if(`createJSDocSignature`in n)return n.createJSDocSignature(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocSignature??n.SyntaxKind.JSDocComment);return N.typeParameters=a,N.parameters=S,N.type=C,N}function createJSDocTemplateTag(a,S,C,N){if(`createJSDocTemplateTag`in n)return n.createJSDocTemplateTag(a,S,C,N);let F=n.createNode(n.SyntaxKind.JSDocTemplateTag??n.SyntaxKind.JSDocComment);return a!=null&&(F.tagName=a),F.constraint=S,F.typeParameters=n.createNodeArray(C),F.comment=N,F}function createJSDocThisTag(a,S,C){if(`createJSDocThisTag`in n)return n.createJSDocThisTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocThisTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.typeExpression=S,N.comment=C,N}function createJSDocTypeExpression(a){if(`createJSDocTypeExpression`in n)return n.createJSDocTypeExpression(a);let S=n.createNode(n.SyntaxKind.JSDocTypeExpression??n.SyntaxKind.JSDocComment);return S.type=a,S}function createJSDocTypeLiteral(a,S){if(`createJSDocTypeLiteral`in n)return n.createJSDocTypeLiteral(a,S);let C=n.createNode(n.SyntaxKind.JSDocTypeLiteral??n.SyntaxKind.JSDocComment);return C.jsDocPropertyTags=a,S!=null&&(C.isArrayType=S),C}function createJSDocTypeTag(a,S,C){if(`createJSDocTypeTag`in n)return n.createJSDocTypeTag(a,S,C);let N=n.createNode(n.SyntaxKind.JSDocTypeTag??n.SyntaxKind.JSDocComment);return a!=null&&(N.tagName=a),N.typeExpression=S,N.comment=C,N}function createJSDocTypedefTag(a,S,C,N){if(`createJSDocTypedefTag`in n)return n.createJSDocTypedefTag(a,S,C,N);let F=n.createNode(n.SyntaxKind.JSDocTypedefTag??n.SyntaxKind.JSDocComment);return a!=null&&(F.tagName=a),F.typeExpression=S,F.fullName=C,F.comment=N,F}function createJSDocMemberName(a,S){let C=n.createNode(n.SyntaxKind.JSDocMemberName??n.SyntaxKind.JSDocComment);return C.left=a,C.right=S,C}function createJSDocLinkCode(a,S){let C=n.createNode(n.SyntaxKind.JSDocLinkCode??n.SyntaxKind.JSDocComment);return C.name=a,C.text=S,C}function createJSDocLinkPlain(a,S){let C=n.createNode(n.SyntaxKind.JSDocLinkPlain??n.SyntaxKind.JSDocComment);return C.name=a,C.text=S,C}function createClassStaticBlockDeclaration(a,S,C){let N=arguments.length<=1?a:C,F=n.createEmptyStatement();return F.body=N,F.transformFlags=8388608,F}function updateClassStaticBlockDeclaration(a,S,C,N){let F=arguments.length<=2?S:N;return F===a.body?a:n.setTextRange(createClassStaticBlockDeclaration(F),a)}function createSatisfiesExpression(n,a){return{...n}}function updateSatisfiesExpression(a,S,C){return S===a.expression&&C===a.type?a:n.setTextRange(createSatisfiesExpression(S,C),a)}function createAssertClause(a,S){let C=n.createEmptyStatement();return C.elements=a,C.multiLine=S,C.transformFlags|=4,C}function createAssertEntry(a,S){let C=n.createEmptyStatement();return C.name=a,C.value=S,C.transformFlags|=4,C}function createImportTypeAssertionContainer(a,S){let C=n.createEmptyStatement();return C.assertClause=a,C.multiLine=S,C}function createImportTypeNode(a,S,C,N,F){if(`createImportTypeNode`in n)return arguments.length<5?n.createImportTypeNode(a,S,C,N):n.createImportTypeNode(a,C,N,F);{let I=S&&`assertClause`in S?S:void 0,H=S&&n.isEntityName(S)?S:C&&!Array.isArray(C)?C:void 0,W=Array.isArray(C)?C:Array.isArray(N)?N:void 0;F=typeof N==`boolean`?N:typeof F==`boolean`?F:!1;let K=n.createNode(200);return K.argument=a,K.assertions=I,K.qualifier=H,K.typeArguments=W==null?void 0:n.createNodeArray(W),K.isTypeOf=F,K.transformFlags=1,K}}function updateImportTypeNode(a,S,C,N,F,I){if(`updateImportTypeNode`in n)return arguments.length<6?n.updateImportTypeNode(a,S,C,N,F):n.updateImportTypeNode(a,S,N,F,I);{let H=C&&`assertClause`in C?C:void 0,W=C&&n.isEntityName(C)?C:N&&!Array.isArray(N)?N:void 0,K=Array.isArray(N)?N:Array.isArray(F)?F:void 0;return I=typeof F==`boolean`?F:typeof I==`boolean`?I:a.isTypeOf,a.argument!==S||a.assertions!==H||a.qualifier!==W||a.typeArguments!==K||a.isTypeOf!==I?n.setTextRange(createImportTypeNode(S,C,N,F,I),a):a}}function createClassExpression(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,W=H?splitDecoratorsAndModifiers(a)[1]:S,K=H?S:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.createClassExpression(W,K,q,Y,X)}function updateClassExpression(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,K=W?splitDecoratorsAndModifiers(S)[1]:C,q=W?C:N,Y=W?N:F,X=W?F:I,te=W?I:H;return n.updateClassExpression(a,K,q,Y,X,te)}function createExportDeclaration(a,S,C,N,F){let I=!(typeof S!=`boolean`&&(arguments.length>=6||Array.isArray(S))),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createExportDeclaration(H,W,q,Y,K)}function updateExportDeclaration(a,S,C,N,F,I){let H=!(typeof C!=`boolean`&&(arguments.length>=7||Array.isArray(C))),W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateExportDeclaration(a,W,K,Y,X,q)}function createConstructorDeclaration(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createConstructor(I,H,W,K)}function updateConstructorDeclaration(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateConstructor(a,H,W,K,q)}function createMethodDeclaration(a,S,C,N,F,I,H,W,K){let q=typeof C==`string`||C!=null&&C.kind!==41,Y=q?splitDecoratorsAndModifiers(a)[0]:a,X=q?splitDecoratorsAndModifiers(a)[1]:S,te=q?S:C,ne=q?C:N,re=q?N:F,ie=q?F:I,ae=q?I:H,oe=q?H:W,Z=q?W:K;return n.createMethod(Y,X,te,ne,re,ie,ae,oe,Z)}function updateMethodDeclaration(a,S,C,N,F,I,H,W,K,q){let Y=N?.kind!==41,X=Y?splitDecoratorsAndModifiers(S)[0]:S,te=Y?splitDecoratorsAndModifiers(S)[1]:C,ne=Y?C:N,re=Y?N:F,ie=Y?F:I,ae=Y?I:H,oe=Y?H:W,Z=Y?W:K,se=Y?K:q;return n.updateMethod(a,X,te,ne,re,ie,ae,oe,Z,se)}function createParameterDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&C.kind!==25,K=W?splitDecoratorsAndModifiers(a)[0]:a,q=W?splitDecoratorsAndModifiers(a)[1]:S,Y=W?S:C,X=W?C:N,te=W?N:F,ne=W?F:I,re=W?I:H;return n.createParameter(K,q,Y,X,te,ne,re)}function updateParameterDeclaration(a,S,C,N,F,I,H,W){let K=typeof N==`string`||N!=null&&N.kind!==25,q=K?splitDecoratorsAndModifiers(S)[0]:S,Y=K?splitDecoratorsAndModifiers(S)[1]:C,X=K?C:N,te=K?N:F,ne=K?F:I,re=K?I:H,ie=K?H:W;return n.updateParameter(a,q,Y,X,te,ne,re,ie)}function createPropertyDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S),W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createProperty(W,K,q,Y,X,te)}function updatePropertyDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C),K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateProperty(a,K,q,Y,X,te,ne)}function createSetAccessorDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createSetAccessor(H,W,K,q,Y)}function updateSetAccessorDeclaration(a,S,C,N,F,I){let H=typeof C==`string`||C!=null&&!Array.isArray(C),W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateSetAccessor(a,W,K,q,Y,X)}function createGetAccessorDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S),W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createGetAccessor(W,K,q,Y,X,te)}function updateGetAccessorDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C),K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateGetAccessor(a,K,q,Y,X,te,ne)}function createImportEqualsDeclaration(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;if(n.createImportEqualsDeclaration.length===4)return n.createImportEqualsDeclaration(H,W,q,Y);{let a=typeof q==`string`?n.createIdentifier(q):q;return n.createImportEqualsDeclaration(H,W,K,a,Y)}}function updateImportEqualsDeclaration(a,S,C,N,F,I){let H=arguments.length<=5,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I,te=typeof Y==`string`?n.createIdentifier(Y):Y;return n.updateImportEqualsDeclaration.length===5?n.updateImportEqualsDeclaration(a,W,K,te,X):n.updateImportEqualsDeclaration(a,W,K,q,te,X)}function createIndexSignature(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createIndexSignature(I,H,W,K)}function updateIndexSignature(a,S,C,N,F){let I=arguments.length<=4,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateIndexSignature(a,H,W,K,q)}function createImportDeclaration(a,S,C,N,F){let I=S!=null&&!Array.isArray(S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createImportDeclaration(H,W,K,q,Y)}function updateImportDeclaration(a,S,C,N,F,I){let H=N!=null&&N.kind!==267,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateImportDeclaration(a,W,K,q,Y,X)}let a=n.createPrivateIdentifier??function(a){return n.createIdentifier(a)};function createUniquePrivateName(n){if(n!=null&&!n.startsWith(`#`))throw TypeError(`First character of private identifier must be #: `+n);return a(n??``)}function getGeneratedPrivateNameForNode(n){return a(``)}function createTypeAliasDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createTypeAliasDeclaration(H,W,K,q,Y)}function updateTypeAliasDeclaration(a,S,C,N,F,I){let H=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,W=H?splitDecoratorsAndModifiers(S)[0]:S,K=H?splitDecoratorsAndModifiers(S)[1]:C,q=H?C:N,Y=H?N:F,X=H?F:I;return n.updateTypeAliasDeclaration(a,W,K,q,Y,X)}function createFunctionDeclaration(a,S,C,N,F,I,H,W){let K=arguments.length<=7,q=K?splitDecoratorsAndModifiers(a)[0]:a,Y=K?splitDecoratorsAndModifiers(a)[1]:S,X=K?S:C,te=K?C:N,ne=K?N:F,re=K?F:I,ie=K?I:H,ae=K?H:W;return n.createFunctionDeclaration(q,Y,X,te,ne,re,ie,ae)}function updateFunctionDeclaration(a,S,C,N,F,I,H,W,K){let q=arguments.length<=8,Y=q?splitDecoratorsAndModifiers(S)[0]:S,X=q?splitDecoratorsAndModifiers(S)[1]:C,te=q?C:N,ne=q?N:F,re=q?F:I,ie=q?I:H,ae=q?H:W,oe=q?W:K;return n.updateFunctionDeclaration(a,Y,X,te,ne,re,ie,ae,oe)}function createClassDeclaration(a,S,C,N,F,I){let H=arguments.length<=5,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createClassDeclaration(W,K,q,Y,X,te)}function updateClassDeclaration(a,S,C,N,F,I,H){let W=arguments.length<=6,K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateClassDeclaration(a,K,q,Y,X,te,ne)}function createInterfaceDeclaration(a,S,C,N,F,I){let H=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,W=H?splitDecoratorsAndModifiers(a)[0]:a,K=H?splitDecoratorsAndModifiers(a)[1]:S,q=H?S:C,Y=H?C:N,X=H?N:F,te=H?F:I;return n.createInterfaceDeclaration(W,K,q,Y,X,te)}function updateInterfaceDeclaration(a,S,C,N,F,I,H){let W=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,K=W?splitDecoratorsAndModifiers(S)[0]:S,q=W?splitDecoratorsAndModifiers(S)[1]:C,Y=W?C:N,X=W?N:F,te=W?F:I,ne=W?I:H;return n.updateInterfaceDeclaration(a,K,q,Y,X,te,ne)}function createEnumDeclaration(a,S,C,N){let F=typeof S==`string`||S!=null&&!Array.isArray(S)&&`escapedText`in S,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createEnumDeclaration(I,H,W,K)}function updateEnumDeclaration(a,S,C,N,F){let I=typeof C==`string`||C!=null&&!Array.isArray(C)&&`escapedText`in C,H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateEnumDeclaration(a,H,W,K,q)}function createModuleDeclaration(a,S,C,N,F){let I=typeof S==`string`||S!=null&&!Array.isArray(S)&&(`escapedText`in S||`_literalExpressionBrand`in S),H=I?splitDecoratorsAndModifiers(a)[0]:a,W=I?splitDecoratorsAndModifiers(a)[1]:S,K=I?S:C,q=I?C:N,Y=I?N:F;return n.createModuleDeclaration(H,W,K,q,Y)}function updateModuleDeclaration(a,S,C,N,F){let I=typeof C==`string`||C!=null&&!Array.isArray(C)&&(`escapedText`in C||`_literalExpressionBrand`in C),H=I?splitDecoratorsAndModifiers(S)[0]:S,W=I?splitDecoratorsAndModifiers(S)[1]:C,K=I?C:N,q=I?N:F;return n.updateModuleDeclaration(a,H,W,K,q)}function createExportAssignment(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(a)[0]:a,H=F?splitDecoratorsAndModifiers(a)[1]:S,W=F?S:C,K=F?C:N;return n.createExportAssignment(I,H,W,K)}function updateExportAssignment(a,S,C,N){let F=arguments.length<=3,I=F?splitDecoratorsAndModifiers(S)[0]:S,H=F?splitDecoratorsAndModifiers(S)[1]:C,W=F?C:N;return n.updateExportAssignment(a,I,H,W)}function createTypeParameterDeclaration(a,S,C,N){let F=typeof a==`string`||a!=null&&!Array.isArray(a)&&`escapedText`in a,I=F?void 0:a,H=F?a:S,W=F?S:C,K=F?C:N,q=n.createTypeParameterDeclaration(H,W,K);return I!=null&&(q.modifiers=n.createNodeArray(I)),q}function updateTypeParameterDeclaration(a,S,C,N,F){let I=S!=null&&!Array.isArray(S)&&`escapedText`in S,H=I?void 0:S,W=I?S:C,K=I?C:N,q=I?N:F,Y=n.updateTypeParameterDeclaration(a,W,K,q);return H!=null&&(Y.modifiers=n.createNodeArray(H)),Y}let{updateSourceFileNode:S,...C}=n;return{__compatUpgraded:!0,...C,createToken,createConstructorTypeNode,updateConstructorTypeNode,createImportTypeNode,updateImportTypeNode,createJSDocComment,createJSDocParameterTag,createJSDocPrivateTag,createJSDocAugmentsTag,createJSDocAuthorTag,createJSDocCallbackTag,createJSDocClassTag,createJSDocEnumTag,createJSDocImplementsTag,createJSDocPropertyTag,createJSDocProtectedTag,createJSDocPublicTag,createJSDocReadonlyTag,createJSDocReturnTag,createJSDocSignature,createJSDocTemplateTag,createJSDocThisTag,createJSDocTypeExpression,createJSDocTypeLiteral,createJSDocTypeTag,createJSDocTypedefTag,createJSDocAllType,createJSDocDeprecatedTag,createJSDocFunctionType,createJSDocLink,createJSDocNameReference,createJSDocNamepathType,createJSDocNonNullableType,createJSDocNullableType,createJSDocOptionalType,createJSDocOverrideTag,createJSDocSeeTag,createJSDocText,createJSDocUnknownTag,createJSDocUnknownType,createJSDocVariadicType,createJSDocMemberName,createJSDocLinkCode,createJSDocLinkPlain,createTemplateLiteralType,createTemplateLiteralTypeSpan,createClassStaticBlockDeclaration,createAssertClause,createAssertEntry,createImportTypeAssertionContainer,createIndexSignature,updateIndexSignature,createSatisfiesExpression,updateSatisfiesExpression,createImportDeclaration,updateImportDeclaration,createUniquePrivateName,createPrivateIdentifier:a,getGeneratedPrivateNameForNode,createTypeAliasDeclaration,updateTypeAliasDeclaration,createFunctionDeclaration,updateFunctionDeclaration,createClassDeclaration,updateClassDeclaration,createInterfaceDeclaration,updateInterfaceDeclaration,createEnumDeclaration,updateEnumDeclaration,createModuleDeclaration,updateModuleDeclaration,createExportAssignment,updateExportAssignment,createTypeParameterDeclaration,updateTypeParameterDeclaration,createComma(a,S){return n.createComma(a,S)},createAssignment(a,S){return n.createAssignment(a,S)},createLessThan(a,S){return n.createLessThan(a,S)},createSourceFile(a,S,C){let N=n.createSourceFile(``,``,0,void 0,0);return N.endOfFileToken=S,N.flags|=C,N.statements=n.createNodeArray(a),N},createClassExpression,createExpressionWithTypeArguments(a,S){return n.createExpressionWithTypeArguments(S,a)},updateExpressionWithTypeArguments(a,S,C){return n.updateExpressionWithTypeArguments(a,C,S)},updateImportClause(a,S,C,N){return n.updateImportClause(a,C,N,S)},updateExportDeclaration,createTypePredicateNode(a,S,C){return n.createTypePredicateNode(S,C)},updateTypePredicateNode(a,S,C,N){return n.updateTypePredicateNode(a,C,N)},createMethodSignature(a,S,C,N,F,I){let H=n.createMethodSignature(N,F,I,S,C);return a!=null&&(H.modifiers=n.createNodeArray(a)),H},updateMethodSignature(a,S,C,N,F,I,H){let W=n.updateMethodSignature(a,F,I,H,C,N);return S!==W.modifiers&&(W.modifiers=S==null?S:n.createNodeArray(S)),W},updatePropertySignature(a,S,C,N,F){return n.updatePropertySignature(a,S,C,N,F,void 0)},createAwaitExpression(a){return n.createAwait(a)},createBinaryExpression(a,S,C){return n.createBinary(a,S,C)},createBitwiseAnd(a,S){return n.createBinary(a,n.SyntaxKind.AmpersandToken,S)},createBitwiseNot(a){return n.createPrefix(n.SyntaxKind.TildeToken,a)},createBitwiseOr(a,S){return n.createBinary(a,n.SyntaxKind.BarToken,S)},createBitwiseXor(a,S){return n.createBinary(a,n.SyntaxKind.CaretToken,S)},createBreakStatement(a){return n.createBreak(a)},createCommaListExpression(a){return n.createCommaList(a)},createConditionalExpression(a,S,C,N,F){return S==null||N==null?n.createConditional(a,C,F):n.createConditional(a,S,C,N,F)},createConstructorDeclaration,createContinueStatement(a){return n.createContinue(a)},createDeleteExpression(a){return n.createDelete(a)},createDivide(a,S){return n.createBinary(a,n.SyntaxKind.SlashToken,S)},createDoStatement(a,S){return n.createDo(a,S)},createElementAccessExpression(a,S){return n.createElementAccess(a,S)},createEquality(a,S){return n.createBinary(a,n.SyntaxKind.EqualsEqualsToken,S)},createExponent(a,S){return n.createBinary(a,n.SyntaxKind.AsteriskAsteriskToken,S)},createForInStatement(a,S,C){return n.createForIn(a,S,C)},createForOfStatement(a,S,C,N){return n.createForOf(a,S,C,N)},createForStatement(a,S,C,N){return n.createFor(a,S,C,N)},createGreaterThan(a,S){return n.createBinary(a,n.SyntaxKind.GreaterThanToken,S)},createGreaterThanEquals(a,S){return n.createBinary(a,n.SyntaxKind.GreaterThanEqualsToken,S)},createIfStatement(a,S,C){return n.createIf(a,S,C)},createInequality(a,S){return n.createBinary(a,n.SyntaxKind.ExclamationEqualsToken,S)},createLabeledStatement(a,S){return n.createLabel(a,S)},createLeftShift(a,S){return n.createBinary(a,n.SyntaxKind.LessThanLessThanToken,S)},createLessThanEquals(a,S){return n.createBinary(a,n.SyntaxKind.LessThanEqualsToken,S)},createMethodDeclaration,createModulo(a,S){return n.createBinary(a,n.SyntaxKind.PercentToken,S)},createMultiply(a,S){return n.createBinary(a,n.SyntaxKind.AsteriskToken,S)},createNamedTupleMember,createNewExpression(a,S,C){return n.createNew(a,S,C)},createParameterDeclaration,createParenthesizedExpression(a){return n.createParen(a)},createPostfixDecrement(a){return n.createPostfix(a,n.SyntaxKind.MinusMinusToken)},createPostfixUnaryExpression(a,S){return n.createPostfix(a,S)},createPrefixDecrement(a){return n.createPrefix(n.SyntaxKind.MinusMinusToken,a)},createPrefixIncrement(a){return n.createPrefix(n.SyntaxKind.PlusPlusToken,a)},createPrefixMinus(a){return n.createPrefix(n.SyntaxKind.MinusToken,a)},createPrefixPlus(a){return n.createPrefix(n.SyntaxKind.PlusToken,a)},createPrefixUnaryExpression(a,S){return n.createPrefix(a,S)},createPropertyDeclaration,createRightShift(a,S){return n.createBinary(a,n.SyntaxKind.GreaterThanGreaterThanToken,S)},createSetAccessorDeclaration,createSpreadElement(a){return n.createSpread(a)},createSwitchStatement(a,S){return n.createSwitch(a,S)},createTaggedTemplateExpression(a,S,C){return n.createTaggedTemplate(a,S,C)},createThrowStatement(a){return n.createThrow(a)},createTryStatement(a,S,C){return n.createTry(a,S,C)},createTypeOfExpression(a){return n.createTypeOf(a)},createUnsignedRightShift(a,S){return n.createBinary(a,n.SyntaxKind.GreaterThanGreaterThanGreaterThanToken,S)},createVoidExpression(a){return n.createVoid(a)},createWhileStatement(a,S){return n.createWhile(a,S)},createWithStatement(a,S){return n.createWith(a,S)},createYieldExpression(a,S){return n.createYield(a,S)},restoreOuterExpressions(n,a,S){return a},updateAwaitExpression(a,S){return n.updateAwait(a,S)},updateBinaryExpression(a,S,C,N){return n.updateBinary(a,S,N,C)},updateBreakStatement(a,S){return n.updateBreak(a,S)},updateCommaListExpression(a,S){return n.updateCommaList(a,S)},updateConditionalExpression(a,S,C,N,F,I){return n.updateConditional(a,S,C,N,F,I)},updateContinueStatement(a,S){return n.updateContinue(a,S)},updateDeleteExpression(a,S){return n.updateDelete(a,S)},updateDoStatement(a,S,C){return n.updateDo(a,S,C)},updateElementAccessExpression(a,S,C){return n.updateElementAccess(a,S,C)},updateForInStatement(a,S,C,N){return n.updateForIn(a,S,C,N)},updateForOfStatement(a,S,C,N,F){return n.updateForOf(a,S,C,N,F)},updateForStatement(a,S,C,N,F){return n.updateFor(a,S,C,N,F)},updateIfStatement(a,S,C,N){return n.updateIf(a,S,C,N)},updateJSDocAugmentsTag(a,S,C,N){return S===a.tagName&&C===a.class&&N===a.comment?a:n.setTextRange(createJSDocAugmentsTag(S,C,N),a)},updateJSDocAuthorTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocAuthorTag(S,C),a)},updateJSDocCallbackTag(a,S,C,N,F){return S===a.tagName&&C===a.typeExpression&&N===a.fullName&&F===a.comment?a:n.setTextRange(createJSDocCallbackTag(S,C,N,F),a)},updateJSDocClassTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocClassTag(S,C),a)},updateJSDocComment(a,S,C){return S===a.comment&&C===a.tags?a:n.setTextRange(createJSDocComment(S,C),a)},updateJSDocDeprecatedTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocDeprecatedTag(S,C),a)},updateJSDocEnumTag(a,S,C,N){return S===a.tagName&&C===a.typeExpression?a:n.setTextRange(createJSDocEnumTag(S,C,N),a)},updateJSDocFunctionType(a,S,C){return S===a.parameters&&C===a.type?a:n.setTextRange(createJSDocFunctionType(S,C),a)},updateJSDocImplementsTag(a,S,C,N){return S===a.tagName&&C===a.class&&N===a.comment?a:n.setTextRange(createJSDocImplementsTag(S,C,N),a)},updateJSDocLink(a,S,C){return S===a.name&&C===a.text?a:n.setTextRange(createJSDocLink(S,C),a)},updateJSDocNameReference(a,S){return S===a.name?a:n.setTextRange(createJSDocNameReference(S),a)},updateJSDocNamepathType(a,S){return S===a.type?a:n.setTextRange(createJSDocNamepathType(S),a)},updateJSDocNonNullableType(a,S){return S===a.type?a:n.setTextRange(createJSDocNonNullableType(S),a)},updateJSDocNullableType(a,S){return S===a.type?a:n.setTextRange(createJSDocNullableType(S),a)},updateJSDocOptionalType(a,S){return S===a.type?a:n.setTextRange(createJSDocOptionalType(S),a)},updateJSDocOverrideTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocOverrideTag(S,C),a)},updateJSDocParameterTag(a,S,C,N,F,I,H){return S===a.tagName&&C===a.name&&N===a.isBracketed&&F===a.typeExpression&&I===a.isNameFirst&&H===a.comment?a:n.setTextRange(createJSDocParameterTag(S,C,N,F,I,H),a)},updateJSDocPrivateTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocPrivateTag(S,C),a)},updateJSDocPropertyTag(a,S,C,N,F,I,H){return S===a.tagName&&C===a.name&&N===a.isBracketed&&F===a.typeExpression&&I===a.isNameFirst&&H===a.comment?a:n.setTextRange(createJSDocPropertyTag(S,C,N,F,I,H),a)},updateJSDocProtectedTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocProtectedTag(S,C),a)},updateJSDocPublicTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocPublicTag(S,C),a)},updateJSDocReadonlyTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocReadonlyTag(S,C),a)},updateJSDocReturnTag(a,S,C,N){return S===a.tagName&&N===a.comment&&C===a.typeExpression?a:n.setTextRange(createJSDocReturnTag(S,C,N),a)},updateJSDocSeeTag(a,S,C,N){return S===a.tagName&&C===a.name&&N===a.comment?a:n.setTextRange(createJSDocSeeTag(S,C,N),a)},updateJSDocSignature(a,S,C,N){return S===a.typeParameters&&C===a.parameters&&N===a.type?a:n.setTextRange(createJSDocSignature(S,C,N),a)},updateJSDocTemplateTag(a,S,C,N,F){return S===a.tagName&&C===a.constraint&&N===a.typeParameters&&F===a.comment?a:n.setTextRange(createJSDocTemplateTag(S,C,N,F),a)},updateJSDocText(a,S){return S===a.text?a:n.setTextRange(createJSDocText(S),a)},updateJSDocThisTag(a,S,C,N){return S===a.tagName&&C===a.typeExpression&&N===a.comment?a:n.setTextRange(createJSDocThisTag(S,C,N),a)},updateJSDocTypeExpression(a,S){return S===a.type?a:n.setTextRange(createJSDocTypeExpression(S),a)},updateJSDocTypeLiteral(a,S,C){return S===a.jsDocPropertyTags&&C===a.isArrayType?a:n.setTextRange(createJSDocTypeLiteral(S,C),a)},updateJSDocTypeTag(a,S,C,N){return S===a.tagName&&C===a.typeExpression&&N===a.comment?a:n.setTextRange(createJSDocTypeTag(S,C,N),a)},updateJSDocTypedefTag(a,S,C,N,F){return S===a.tagName&&C===a.typeExpression&&N===a.fullName&&F===a.comment?a:n.setTextRange(createJSDocTypedefTag(S,C,N,F),a)},updateJSDocUnknownTag(a,S,C){return S===a.tagName&&C===a.comment?a:n.setTextRange(createJSDocUnknownTag(S,C),a)},updateJSDocVariadicType(a,S){return S===a.type?a:n.setTextRange(createJSDocVariadicType(S),a)},updateJSDocMemberName(a,S,C){return S===a.left&&C===a.right?a:n.setTextRange(createJSDocMemberName(S,C),a)},updateJSDocLinkCode(a,S,C){return S===a.name&&C===a.text?a:n.setTextRange(createJSDocLinkCode(S,C),a)},updateJSDocLinkPlain(a,S,C){return S===a.name&&C===a.text?a:n.setTextRange(createJSDocLinkPlain(S,C),a)},updateLabeledStatement(a,S,C){return n.updateLabel(a,S,C)},updateMethodDeclaration,updateNamedTupleMember(a,S,C,N,F){return S===a.dotDotDotToken&&C===a.name&&N===a.questionToken&&F===a.type?a:n.setTextRange(createNamedTupleMember(S,C,N,F),a)},updateNewExpression(a,S,C,N){return n.updateNew(a,S,C,N)},updateObjectLiteralExpression(a,S){return n.updateObjectLiteral(a,S)},updateParameterDeclaration,updateParenthesizedExpression(a,S){return n.updateParen(a,S)},updatePostfixUnaryExpression(a,S){return n.updatePostfix(a,S)},updatePrefixUnaryExpression(a,S){return n.updatePrefix(a,S)},updatePropertyAccessExpression(a,S,C){return n.updatePropertyAccess(a,S,C)},updatePropertyDeclaration,updateReturnStatement(a,S){return n.updateReturn(a,S)},updateSetAccessorDeclaration,updateSpreadElement(a,S){return n.updateSpread(a,S)},updateSwitchStatement(a,S,C){return n.updateSwitch(a,S,C)},updateTaggedTemplateExpression(a,S,C,N){return n.updateTaggedTemplate(a,S,C,N)},updateTemplateLiteralType(a,S,C){return S===a.head&&C===a.templateSpans?a:n.setTextRange(createTemplateLiteralType(S,C),a)},updateTemplateLiteralTypeSpan(a,S,C){return S===a.type&&C===a.literal?a:n.setTextRange(createTemplateLiteralTypeSpan(S,C),a)},updateClassStaticBlockDeclaration,updateAssertClause(a,S,C){return a.elements!==S||a.multiLine!==C?n.setTextRange(createAssertClause(S,C),a):a},updateAssertEntry(a,S,C){return a.name!==S||a.value!==C?n.setTextRange(createAssertEntry(S,C),a):a},updateImportTypeAssertionContainer(a,S,C){return a.assertClause!==S||a.multiLine!==C?n.setTextRange(createImportTypeAssertionContainer(S,C),a):a},updateThrowStatement(a,S){return n.updateThrow(a,S)},updateTryStatement(a,S,C,N){return n.updateTry(a,S,C,N)},updateTypeOfExpression(a,S){return n.updateTypeOf(a,S)},updateVoidExpression(a,S){return n.updateVoid(a,S)},updateWhileStatement(a,S,C){return n.updateWhile(a,S,C)},updateWithStatement(a,S,C){return n.updateWith(a,S,C)},updateYieldExpression(a,S,C){return n.updateYield(a,S,C)},createImportClause(a,S,C){return n.createImportClause(S,C,a)},createCallExpression(a,S,C){return n.createCall(a,S,C)},updateCallExpression(a,S,C,N){return n.updateCall(a,S,C,N)},createArrayLiteralExpression(a,S){return n.createArrayLiteral(a,S)},updateArrayLiteralExpression(a,S){return n.updateArrayLiteral(a,S)},updateSourceFile(a,S,C,N,F,I,H){return n.updateSourceFileNode(a,S,C,N,F,I,H)},updateClassExpression,createPropertyAccessExpression(a,S){return n.createPropertyAccess(a,S)},createGetAccessorDeclaration,updateGetAccessorDeclaration,createReturnStatement(a){return n.createReturn(a)},createObjectLiteralExpression(a,S){return n.createObjectLiteral(a,S)},createVariableDeclaration(a,S,C,N){return n.createVariableDeclaration.length===4?n.createVariableDeclaration(a,S,C,N):n.createVariableDeclaration(a,C,N)},updateVariableDeclaration(a,S,C,N,F){return n.updateVariableDeclaration.length===4?n.updateVariableDeclaration(a,S,N,F):n.updateVariableDeclaration(a,S,C,N,F)},createPropertyAccessChain(a,S,C){if(`createPropertyAccessChain`in n)return n.createPropertyAccessChain(a,S,C);let N=n.createPropertyAccess(a,C);return N.questionDotToken=S,N},updatePropertyAccessChain(a,S,C,N){if(`updatePropertyAccessChain`in n)return n.updatePropertyAccessChain(a,S,C,N);let F=n.updatePropertyAccess(a,S,N);return F.questionDotToken=C,F},createImportEqualsDeclaration,updateImportEqualsDeclaration,createMappedTypeNode(a,S,C,N,F,I){return n.createMappedTypeNode(a,S,N,F)},updateMappedTypeNode(a,S,C,N,F,I,H){return n.updateMappedTypeNode(a,S,C,F,I)},createImportSpecifier(a,S,C){return n.createImportSpecifier(S,C)},updateImportSpecifier(a,S,C,N){return n.updateImportSpecifier(a,C,N)},createExportSpecifier(a,S,C){return n.createExportSpecifier(S,C)},updateExportSpecifier(a,S,C,N){return n.updateExportSpecifier(a,C,N)},createExportDeclaration,updateConstructorDeclaration,createNumericLiteral(a,S){return n.createNumericLiteral(String(a),S)}}}var gS=__esmMin(()=>{});function cloneIdentifier(n,a){let S=`text`in n?n.text:a.typescript.unescapeLeadingUnderscores(n.escapedText);return a.factory.createIdentifier(a.hook(`text`,S,S))}function cloneTypeAliasDeclaration(n,a){return a.factory.createTypeAliasDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneToken(n,a){return a.factory.createToken(a.hook(`kind`,n.kind,n.kind))}function cloneDecorator(n,a){return a.factory.createDecorator(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneTypeParameterDeclaration(n,a){return a.factory.createTypeParameterDeclaration(void 0,a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`constraint`,a.nextNode(n.constraint),n.constraint),a.hook(`default`,a.nextNode(n.default),n.default))}function cloneQualifiedName(n,a){return a.factory.createQualifiedName(a.hook(`left`,a.nextNode(n.left),n.left),a.hook(`right`,a.nextNode(n.right),n.right))}function cloneComputedPropertyName(n,a){return a.factory.createComputedPropertyName(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneCallSignatureDeclaration(n,a){return a.factory.createCallSignature(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneConstructSignatureDeclaration(n,a){return a.factory.createConstructSignature(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneVariableDeclaration(n,a){let S=a.factory.createVariableDeclaration(a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`exclamationToken`,a.nextNode(n.exclamationToken),n.exclamationToken),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer));return n.initializer!=null&&S.initializer!=null&&!a.typescript.isParenthesizedExpression(n.initializer)&&a.typescript.isParenthesizedExpression(S.initializer)&&(S.initializer=S.initializer.expression),S}function cloneVariableDeclarationList(n,a){return a.factory.createVariableDeclarationList(a.hook(`declarations`,a.nextNodes(n.declarations),n.declarations),a.hook(`flags`,n.flags,n.flags))}function cloneVariableStatement(n,a){return a.factory.createVariableStatement(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`declarationList`,a.nextNode(n.declarationList),n.declarationList))}function cloneParameterDeclaration(n,a){return a.factory.createParameterDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`dotDotDotToken`,a.nextNode(n.dotDotDotToken),n.dotDotDotToken),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer))}function cloneBindingElement(n,a){return a.factory.createBindingElement(a.hook(`dotDotDotToken`,a.nextNode(n.dotDotDotToken),n.dotDotDotToken),a.hook(`propertyName`,a.nextNode(n.propertyName),n.propertyName),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer))}function clonePropertySignature(n,a){return a.factory.createPropertySignature(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`type`,a.nextNode(n.type),n.type))}function clonePropertyDeclaration(n,a){return a.factory.createPropertyDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),n.questionToken==null?a.hook(`exclamationToken`,a.nextNode(n.exclamationToken),n.exclamationToken):a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer))}function clonePropertyAssignment(n,a){let S=a.factory.createPropertyAssignment(a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer));return!a.typescript.isParenthesizedExpression(n.initializer)&&a.typescript.isParenthesizedExpression(S.initializer)&&(S.initializer=S.initializer.expression),S}function cloneShorthandPropertyAssignment(n,a){return a.factory.createShorthandPropertyAssignment(a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`objectAssignmentInitializer`,a.nextNode(n.objectAssignmentInitializer),n.objectAssignmentInitializer))}function cloneSpreadAssignment(n,a){return a.factory.createSpreadAssignment(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneObjectBindingPattern(n,a){return a.factory.createObjectBindingPattern(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneArrayBindingPattern(n,a){return a.factory.createArrayBindingPattern(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneFunctionDeclaration(n,a){return a.factory.createFunctionDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`asteriskToken`,a.nextNode(n.asteriskToken),n.asteriskToken),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneMethodSignature(n,a){return a.factory.createMethodSignature(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneMethodDeclaration(n,a){return a.factory.createMethodDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`asteriskToken`,a.nextNode(n.asteriskToken),n.asteriskToken),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneConstructorDeclaration(n,a){return a.factory.createConstructorDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneSemicolonClassElement(n,a){return a.factory.createSemicolonClassElement()}function cloneGetAccessorDeclaration(n,a){return a.factory.createGetAccessorDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneSetAccessorDeclaration(n,a){return a.factory.createSetAccessorDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneIndexSignatureDeclaration(n,a){return a.factory.createIndexSignature(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type))}function isKeywordTypeNode(n,a){switch(n.kind){case a.SyntaxKind.AnyKeyword:case a.SyntaxKind.UnknownKeyword:case a.SyntaxKind.BigIntKeyword:case a.SyntaxKind.ObjectKeyword:case a.SyntaxKind.BooleanKeyword:case a.SyntaxKind.StringKeyword:case a.SyntaxKind.SymbolKeyword:case a.SyntaxKind.VoidKeyword:case a.SyntaxKind.UndefinedKeyword:case a.SyntaxKind.NullKeyword:case a.SyntaxKind.NeverKeyword:return!0}return!1}function cloneKeywordTypeNode(n,a){return a.factory.createKeywordTypeNode(a.hook(`kind`,n.kind,n.kind))}function cloneImportTypeNode(n,a){return a.factory.createImportTypeNode(a.hook(`argument`,a.nextNode(n.argument),n.argument),a.hook(`assertions`,a.nextNode(n.assertions),n.assertions),a.hook(`qualifier`,a.nextNode(n.qualifier),n.qualifier),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`isTypeOf`,n.isTypeOf,n.isTypeOf))}function cloneThisTypeNode(n,a){return a.factory.createThisTypeNode()}function cloneFunctionTypeNode(n,a){return a.factory.createFunctionTypeNode(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type))}function isNodeArray(n){return n!=null&&Array.isArray(n)&&`pos`in n}function ensureNodeArray(n,a){return n==null||isNodeArray(n)?n:a.createNodeArray(n)}function cloneConstructorTypeNode(n,a){let S=a.factory.createConstructorTypeNode(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type));return S.modifiers=ensureNodeArray(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.factory),S}function cloneTypeReferenceNode(n,a){return a.factory.createTypeReferenceNode(a.hook(`typeName`,a.nextNode(n.typeName),n.typeName),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments))}function cloneTypePredicateNode(n,a){return a.factory.createTypePredicateNode(a.hook(`assertsModifier`,a.nextNode(n.assertsModifier),n.assertsModifier),a.hook(`parameterName`,a.nextNode(n.parameterName),n.parameterName),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneSourceFile(n,a){let S=a.factory.updateSourceFile(n,a.hook(`statements`,a.nextNodes(n.statements),n.statements),n.isDeclarationFile,n.referencedFiles,n.typeReferenceDirectives,n.hasNoDefaultLib,n.libReferenceDirectives);return S.pos=-1,S.end=-1,S}function cloneTypeQueryNode(n,a){return a.factory.createTypeQueryNode(a.hook(`exprName`,a.nextNode(n.exprName),n.exprName))}function cloneTypeLiteralNode(n,a){return a.factory.createTypeLiteralNode(a.hook(`members`,a.nextNodes(n.members),n.members))}function cloneArrayTypeNode(n,a){return a.factory.createArrayTypeNode(a.hook(`elementType`,a.nextNode(n.elementType),n.elementType))}function cloneTupleTypeNode(n,a){if(`elementTypes`in n){let S=n;return a.factory.createTupleTypeNode(a.hook(`elements`,a.nextNodes(S.elementTypes),S.elementTypes))}else return a.factory.createTupleTypeNode(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneOptionalTypeNode(n,a){return a.factory.createOptionalTypeNode(a.hook(`type`,a.nextNode(n.type),n.type))}function isOptionalTypeNode$1(n,a){return`isOptionalTypeNode`in a?a.isOptionalTypeNode(n):n.kind===a.SyntaxKind.OptionalType}function cloneRestTypeNode(n,a){return a.factory.createRestTypeNode(a.hook(`type`,a.nextNode(n.type),n.type))}function isRestTypeNode(n,a){return`isRestTypeNode`in a?a.isRestTypeNode(n):n.kind===a.SyntaxKind.RestType}function cloneUnionTypeNode(n,a){return a.factory.createUnionTypeNode(a.hook(`types`,a.nextNodes(n.types),n.types))}function cloneIntersectionTypeNode(n,a){return a.factory.createIntersectionTypeNode(a.hook(`types`,a.nextNodes(n.types),n.types))}function cloneLiteralTypeNode(n,a){return a.factory.createLiteralTypeNode(a.hook(`literal`,a.nextNode(n.literal),n.literal))}function cloneStringLiteral(n,a){return a.factory.createStringLiteral(a.hook(`text`,n.text,n.text))}function isBooleanLiteral(n,a){switch(n.kind){case a.SyntaxKind.TrueKeyword:case a.SyntaxKind.FalseKeyword:return!0;default:return!1}}function cloneBooleanLiteral(n,a){return n.kind===a.typescript.SyntaxKind.TrueKeyword?a.factory.createTrue():a.factory.createFalse()}function clonePrefixUnaryExpression(n,a){return a.factory.createPrefixUnaryExpression(a.hook(`operator`,n.operator,n.operator),a.hook(`operand`,a.nextNode(n.operand),n.operand))}function cloneRegularExpressionLiteral(n,a){return a.factory.createRegularExpressionLiteral(a.hook(`text`,n.text,n.text))}function cloneNoSubstitutionTemplateLiteral(n,a){return a.factory.createNoSubstitutionTemplateLiteral(a.hook(`text`,n.text,n.text),a.hook(`rawText`,n.rawText,n.text))}function cloneNumericLiteral(n,a){return a.factory.createNumericLiteral(a.hook(`text`,n.text,n.text))}function cloneBigIntLiteral(n,a){return a.factory.createBigIntLiteral(a.hook(`text`,n.text,n.text))}function cloneConditionalTypeNode(n,a){return a.factory.createConditionalTypeNode(a.hook(`checkType`,a.nextNode(n.checkType),n.checkType),a.hook(`extendsType`,a.nextNode(n.extendsType),n.extendsType),a.hook(`trueType`,a.nextNode(n.trueType),n.trueType),a.hook(`falseType`,a.nextNode(n.falseType),n.falseType))}function cloneInferTypeNode(n,a){return a.factory.createInferTypeNode(a.hook(`typeParameter`,a.nextNode(n.typeParameter),n.typeParameter))}function cloneBlock(n,a){return a.factory.createBlock(a.hook(`statements`,a.nextNodes(n.statements),n.statements))}function cloneThrowStatement(n,a){return a.factory.createThrowStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneNewExpression(n,a){return a.factory.createNewExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`arguments`,a.nextNodes(n.arguments),n.arguments))}function cloneCallExpression(n,a){let S=a.factory.createCallExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`arguments`,a.nextNodes(n.arguments),n.arguments));for(let C=0;C<S.arguments.length;C++){let N=S.arguments[C];!a.typescript.isParenthesizedExpression(n.arguments[C])&&a.typescript.isParenthesizedExpression(N)&&(S.arguments[C]=N.expression)}return S}function cloneExpressionStatement(n,a){return a.factory.createExpressionStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneExpressionWithTypeArguments(n,a){return a.factory.createExpressionWithTypeArguments(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments))}function clonePropertyAccessExpression(n,a){return a.factory.createPropertyAccessExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`name`,a.nextNode(n.name),n.name))}function cloneElementAccessExpression(n,a){return a.factory.createElementAccessExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`argumentExpression`,a.nextNode(n.argumentExpression),n.argumentExpression))}function cloneArrayLiteralExpression(n,a){return a.factory.createArrayLiteralExpression(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneObjectLiteralExpression(n,a){return a.factory.createObjectLiteralExpression(a.hook(`properties`,a.nextNodes(n.properties),n.properties))}function cloneTemplateExpression(n,a){return a.factory.createTemplateExpression(a.hook(`head`,a.nextNode(n.head),n.head),a.hook(`templateSpans`,a.nextNodes(n.templateSpans),n.templateSpans))}function cloneTemplateSpan(n,a){return a.factory.createTemplateSpan(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`literal`,a.nextNode(n.literal),n.literal))}function cloneTemplateHead(n,a){return a.factory.createTemplateHead(a.hook(`text`,n.text,n.text),a.hook(`rawText`,n.rawText,n.rawText))}function cloneTemplateMiddle(n,a){return a.factory.createTemplateMiddle(a.hook(`text`,n.text,n.text),a.hook(`rawText`,n.rawText,n.rawText))}function cloneTemplateTail(n,a){return a.factory.createTemplateTail(a.hook(`text`,n.text,n.text),a.hook(`rawText`,n.rawText,n.rawText))}function cloneConditionalExpression(n,a){return a.factory.createConditionalExpression(a.hook(`condition`,a.nextNode(n.condition),n.condition),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`whenTrue`,a.nextNode(n.whenTrue),n.whenTrue),a.hook(`colonToken`,a.nextNode(n.colonToken),n.colonToken),a.hook(`whenFalse`,a.nextNode(n.whenFalse),n.whenFalse))}function cloneBinaryExpression(n,a){return a.factory.createBinaryExpression(a.hook(`left`,a.nextNode(n.left),n.left),a.hook(`operatorToken`,a.nextNode(n.operatorToken),n.operatorToken),a.hook(`right`,a.nextNode(n.right),n.right))}function cloneParenthesizedExpression(n,a){return a.factory.createParenthesizedExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneParenthesizedTypeNode(n,a){return a.factory.createParenthesizedType(a.hook(`type`,a.nextNode(n.type),n.type))}function cloneArrowFunction(n,a){return a.factory.createArrowFunction(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`equalsGreaterThanToken`,a.nextNode(n.equalsGreaterThanToken),n.equalsGreaterThanToken),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneClassDeclaration(n,a){return a.factory.createClassDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`heritageClauses`,a.nextNodes(n.heritageClauses),n.heritageClauses),a.hook(`members`,a.nextNodes(n.members),n.members))}function cloneClassExpression(n,a){return a.factory.createClassExpression(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`heritageClauses`,a.nextNodes(n.heritageClauses),n.heritageClauses),a.hook(`members`,a.nextNodes(n.members),n.members))}function cloneEnumDeclaration(n,a){return a.factory.createEnumDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`members`,a.nextNodes(n.members),n.members))}function cloneInterfaceDeclaration(n,a){return a.factory.createInterfaceDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`heritageClauses`,a.nextNodes(n.heritageClauses),n.heritageClauses),a.hook(`members`,a.nextNodes(n.members),n.members))}function cloneEnumMember(n,a){return a.factory.createEnumMember(a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer))}function cloneHeritageClause(n,a){return a.factory.createHeritageClause(a.hook(`token`,n.token,n.token),a.hook(`types`,a.nextNodes(n.types),n.types))}function cloneEmptyStatement(n,a){return a.factory.createEmptyStatement()}function cloneTypeOperatorNode(n,a){return a.factory.createTypeOperatorNode(a.hook(`operator`,n.operator,n.operator),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneIndexedAccessTypeNode(n,a){return a.factory.createIndexedAccessTypeNode(a.hook(`objectType`,a.nextNode(n.objectType),n.objectType),a.hook(`indexType`,a.nextNode(n.indexType),n.indexType))}function cloneMappedTypeNode(n,a){return a.factory.createMappedTypeNode(a.hook(`readonlyToken`,a.nextNode(n.readonlyToken),n.readonlyToken),a.hook(`typeParameter`,a.nextNode(n.typeParameter),n.typeParameter),a.hook(`nameType`,a.nextNode(n.nameType),n.nameType),a.hook(`questionToken`,a.nextNode(n.questionToken),n.questionToken),a.hook(`type`,a.nextNode(n.type),n.type),ensureNodeArray(a.hook(`members`,a.nextNodes(n.members),n.members),a.factory))}function cloneOmittedExpression(n,a){return a.factory.createOmittedExpression()}function clonePartiallyEmittedExpression(n,a){return a.factory.createPartiallyEmittedExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function isPartiallyEmittedExpression(n,a){return`isPartiallyEmittedExpression`in a?a.isPartiallyEmittedExpression(n):n.kind===a.SyntaxKind.PartiallyEmittedExpression}function clonePostfixUnaryExpression(n,a){return a.factory.createPostfixUnaryExpression(a.hook(`operand`,a.nextNode(n.operand),n.operand),a.hook(`operator`,n.operator,n.operator))}function isNullLiteral(n,a){return n.kind===a.SyntaxKind.NullKeyword}function cloneNullLiteral(n,a){return a.factory.createNull()}function isThisExpression(n,a){return n.kind===a.SyntaxKind.ThisKeyword}function cloneThisExpression(n,a){return a.factory.createThis()}function cloneReturnStatement(n,a){return a.factory.createReturnStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function isSuperExpression(n,a){return n.kind===a.SyntaxKind.SuperKeyword}function cloneSuperExpression(n,a){return a.factory.createSuper()}function cloneDeleteExpression(n,a){return a.factory.createDeleteExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneAsExpression(n,a){return a.factory.createAsExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`type`,a.nextNode(n.type),n.type))}function cloneTypeAssertion(n,a){return a.factory.createTypeAssertion(a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneAwaitExpression(n,a){return a.factory.createAwaitExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneYieldExpression(n,a){return a.factory.createYieldExpression(a.hook(`asteriskToken`,a.nextNode(n.asteriskToken),n.asteriskToken),a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneForOfStatement(n,a){return a.factory.createForOfStatement(a.hook(`awaitModifier`,a.nextNode(n.awaitModifier),n.awaitModifier),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer),a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneForInStatement(n,a){return a.factory.createForInStatement(a.hook(`initializer`,a.nextNode(n.initializer),n.initializer),a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneForStatement(n,a){return a.factory.createForStatement(a.hook(`initializer`,a.nextNode(n.initializer),n.initializer),a.hook(`condition`,a.nextNode(n.condition),n.condition),a.hook(`incrementor`,a.nextNode(n.incrementor),n.incrementor),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneWhileStatement(n,a){return a.factory.createWhileStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneLabeledStatement(n,a){return a.factory.createLabeledStatement(a.hook(`label`,a.nextNode(n.label),n.label),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneBreakStatement(n,a){return a.factory.createBreakStatement(a.hook(`label`,a.nextNode(n.label),n.label))}function cloneContinueStatement(n,a){return a.factory.createContinueStatement(a.hook(`label`,a.nextNode(n.label),n.label))}function cloneIfStatement(n,a){return a.factory.createIfStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`thenStatement`,a.nextNode(n.thenStatement),n.thenStatement),a.hook(`elseStatement`,a.nextNode(n.elseStatement),n.elseStatement))}function cloneDoStatement(n,a){return a.factory.createDoStatement(a.hook(`statement`,a.nextNode(n.statement),n.statement),a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneNonNullExpression(n,a){return a.factory.createNonNullExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneTypeOfExpression(n,a){return a.factory.createTypeOfExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneVoidExpression(n,a){return a.factory.createVoidExpression(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneFunctionExpression(n,a){return a.factory.createFunctionExpression(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`asteriskToken`,a.nextNode(n.asteriskToken),n.asteriskToken),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type),a.hook(`body`,a.nextNode(n.body),n.body))}function cloneSpreadElement(n,a){return a.factory.createSpreadElement(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneTaggedTemplateExpression(n,a){return a.factory.createTaggedTemplateExpression(a.hook(`tag`,a.nextNode(n.tag),n.tag),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`template`,a.nextNode(n.template),n.template))}function cloneMetaProperty(n,a){return a.factory.createMetaProperty(a.hook(`keywordToken`,n.keywordToken,n.keywordToken),a.hook(`name`,a.nextNode(n.name),n.name))}function cloneJsxElement(n,a){return a.factory.createJsxElement(a.hook(`openingElement`,a.nextNode(n.openingElement),n.openingElement),a.hook(`children`,a.nextNodes(n.children),n.children),a.hook(`closingElement`,a.nextNode(n.closingElement),n.closingElement))}function cloneJsxAttributes(n,a){return a.factory.createJsxAttributes(a.hook(`properties`,a.nextNodes(n.properties),n.properties))}function cloneJsxOpeningElement(n,a){return a.factory.createJsxOpeningElement(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`attributes`,a.nextNode(n.attributes),n.attributes))}function cloneJsxSelfClosingElement(n,a){return a.factory.createJsxSelfClosingElement(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeArguments`,a.nextNodes(n.typeArguments),n.typeArguments),a.hook(`attributes`,a.nextNode(n.attributes),n.attributes))}function cloneJsxFragment(n,a){return a.factory.createJsxFragment(a.hook(`openingFragment`,a.nextNode(n.openingFragment),n.openingFragment),a.hook(`children`,a.nextNodes(n.children),n.children),a.hook(`closingFragment`,a.nextNode(n.closingFragment),n.closingFragment))}function cloneJsxOpeningFragment(n,a){return a.factory.createJsxOpeningFragment()}function cloneJsxClosingFragment(n,a){return a.factory.createJsxJsxClosingFragment()}function cloneJsxAttribute(n,a){return a.factory.createJsxAttribute(a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`initializer`,a.nextNode(n.initializer),n.initializer))}function cloneJsxSpreadAttribute(n,a){return a.factory.createJsxSpreadAttribute(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneJsxClosingElement(n,a){return a.factory.createJsxClosingElement(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName))}function cloneJsxExpression(n,a){return a.factory.createJsxExpression(a.hook(`dotDotDotToken`,a.nextNode(n.dotDotDotToken),n.dotDotDotToken),a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneJsxText(n,a){return a.factory.createJsxText(a.hook(`text`,n.text,n.text),a.hook(`containsOnlyTriviaWhiteSpaces`,n.containsOnlyTriviaWhiteSpaces,n.containsOnlyTriviaWhiteSpaces))}function isNotEmittedStatement(n,a){return`isNotEmittedStatement`in a?a.isNotEmittedStatement(n):n.kind===a.SyntaxKind.NotEmittedStatement}function cloneNotEmittedStatement(n,a){return a.factory.createNotEmittedStatement(n)}function isCommaListExpression(n,a){return`isCommaListExpression`in a?a.isCommaListExpression(n):n.kind===a.SyntaxKind.CommaListExpression}function cloneCommaListExpression(n,a){return a.factory.createCommaListExpression(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneDebuggerStatement(n,a){return a.factory.createDebuggerStatement()}function cloneWithStatement(n,a){return a.factory.createWithStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`statement`,a.nextNode(n.statement),n.statement))}function cloneSwitchStatement(n,a){return a.factory.createSwitchStatement(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`caseBlock`,a.nextNode(n.caseBlock),n.caseBlock))}function cloneCaseBlock(n,a){return a.factory.createCaseBlock(a.hook(`clauses`,a.nextNodes(n.clauses),n.clauses))}function cloneCaseClause(n,a){return a.factory.createCaseClause(a.hook(`expression`,a.nextNode(n.expression),n.expression),a.hook(`statements`,a.nextNodes(n.statements),n.statements))}function cloneDefaultClause(n,a){return a.factory.createDefaultClause(a.hook(`statements`,a.nextNodes(n.statements),n.statements))}function cloneTryStatement(n,a){return a.factory.createTryStatement(a.hook(`tryBlock`,a.nextNode(n.tryBlock),n.tryBlock),a.hook(`catchClause`,a.nextNode(n.catchClause),n.catchClause),a.hook(`finallyBlock`,a.nextNode(n.finallyBlock),n.finallyBlock))}function cloneCatchClause(n,a){return a.factory.createCatchClause(a.hook(`variableDeclaration`,a.nextNode(n.variableDeclaration),n.variableDeclaration),a.hook(`block`,a.nextNode(n.block),n.block))}function cloneModuleDeclaration(n,a){return a.factory.createModuleDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`body`,a.nextNode(n.body),n.body),a.hook(`flags`,n.flags,n.flags))}function cloneModuleBlock(n,a){return a.factory.createModuleBlock(a.hook(`statements`,a.nextNodes(n.statements),n.statements))}function cloneImportDeclaration(n,a){return a.factory.createImportDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`importClause`,a.nextNode(n.importClause),n.importClause),a.hook(`moduleSpecifier`,a.nextNode(n.moduleSpecifier),n.moduleSpecifier),a.hook(`assertClause`,a.nextNode(n.assertClause),n.assertClause))}function cloneImportEqualsDeclaration(n,a){return a.factory.createImportEqualsDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`isTypeOnly`,n.isTypeOnly,n.isTypeOnly),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`moduleReference`,a.nextNode(n.moduleReference),n.moduleReference))}function cloneImportClause(n,a){return a.factory.createImportClause(a.hook(`isTypeOnly`,n.isTypeOnly,n.isTypeOnly),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`namedBindings`,a.nextNode(n.namedBindings),n.namedBindings))}function cloneNamedImports(n,a){return a.factory.createNamedImports(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneNamespaceImport(n,a){return a.factory.createNamespaceImport(a.hook(`name`,a.nextNode(n.name),n.name))}function cloneImportSpecifier(n,a){return a.factory.createImportSpecifier(a.hook(`isTypeOnly`,n.isTypeOnly,n.isTypeOnly),a.hook(`propertyName`,a.nextNode(n.propertyName),n.propertyName),a.hook(`name`,a.nextNode(n.name),n.name))}function cloneExternalModuleReference(n,a){return a.factory.createExternalModuleReference(a.hook(`expression`,a.nextNode(n.expression),n.expression))}function cloneNamespaceExportDeclaration(n,a){return a.factory.createNamespaceExportDeclaration(a.hook(`name`,a.nextNode(n.name),n.name))}function cloneExportDeclaration(n,a){return a.factory.createExportDeclaration(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`isTypeOnly`,n.isTypeOnly,n.isTypeOnly),a.hook(`exportClause`,a.nextNode(n.exportClause),n.exportClause),a.hook(`moduleSpecifier`,a.nextNode(n.moduleSpecifier),n.moduleSpecifier))}function cloneNamedExports(n,a){return a.factory.createNamedExports(a.hook(`elements`,a.nextNodes(n.elements),n.elements))}function cloneExportSpecifier(n,a){return a.factory.createExportSpecifier(a.hook(`isTypeOnly`,n.isTypeOnly,n.isTypeOnly),a.hook(`propertyName`,a.nextNode(n.propertyName),n.propertyName),a.hook(`name`,a.nextNode(n.name),n.name))}function cloneExportAssignment(n,a){return a.factory.createExportAssignment(a.hook(`modifiers`,a.nextNodes(n.modifiers),n.modifiers),a.hook(`isExportEquals`,n.isExportEquals,n.isExportEquals),a.hook(`expression`,a.nextNode(n.expression),n.expression))}function toInternalOptions(n){let a=n.typescript??_S.default;return{...n,typescript:a,factory:ensureNodeFactory(n.factory??a),setParents:n.setParents??!1,setOriginalNodes:n.setOriginalNodes??!1,preserveSymbols:n.preserveSymbols??!1,preserveComments:n.preserveComments??!0,commentRanges:new Set,debug:n.debug??!1,depth:0,hook:n.hook??(()=>({})),finalize:n.finalize??(()=>{})}}function isJsDocComment(n,a){return`isJSDoc`in a?a.isJSDoc(n):n.kind===a.SyntaxKind.JSDocComment}function cloneJsDoc(n,a){let S=a.factory.createJSDocComment(a.hook(`comment`,n.comment,n.comment),ensureNodeArray(a.hook(`tags`,a.nextNodes(n.tags),n.tags),a.factory));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocUnknownTag(n,a){return`isJSDocUnknownTag`in a?a.isJSDocUnknownTag(n):n.kind===a.SyntaxKind.JSDocTag}function isJsDocParameterTag(n,a){return`isJSDocParameterTag`in a?a.isJSDocParameterTag(n):n.kind===a.SyntaxKind.JSDocParameterTag}function cloneJsDocParameterTag(n,a){let S=a.factory.createJSDocParameterTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`isBracketed`,n.isBracketed,n.isBracketed),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`isNameFirst`,n.isNameFirst,n.isNameFirst),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocReturnTag(n,a){return`isJSDocReturnTag`in a?a.isJSDocReturnTag(n):n.kind===a.SyntaxKind.JSDocReturnTag}function cloneJsDocReturnTag(n,a){let S=a.factory.createJSDocReturnTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocTypeExpression(n,a){return`isJSDocTypeExpression`in a?a.isJSDocTypeExpression(n):n.kind===a.SyntaxKind.JSDocTypeExpression}function cloneJsDocTypeExpression(n,a){let S=a.factory.createJSDocTypeExpression(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocEnumTag(n,a){return`isJSDocEnumTag`in a?a.isJSDocEnumTag(n):n.kind===a.SyntaxKind.JSDocEnumTag}function cloneJsDocEnumTag(n,a){let S=a.factory.createJSDocEnumTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocTypeTag(n,a){return`isJSDocTypeTag`in a?a.isJSDocTypeTag(n):n.kind===a.SyntaxKind.JSDocTypeTag}function cloneJsDocTypeTag(n,a){let S=a.factory.createJSDocTypeTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocAllType(n,a){return`isJSDocAllType`in a?a.isJSDocAllType(n):n.kind===a.SyntaxKind.JSDocAllType}function cloneJsDocAllType(n,a){let S=a.factory.createJSDocAllType();return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocUnknownType(n,a){return`isJSDocUnknownType`in a?a.isJSDocUnknownType(n):n.kind===a.SyntaxKind.JSDocUnknownType}function cloneJsDocUnknownType(n,a){let S=a.factory.createJSDocUnknownType();return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocNonNullableType(n,a){return`isJSDocNonNullableType`in a?a.isJSDocNonNullableType(n):n.kind===a.SyntaxKind.JSDocNonNullableType}function cloneJsDocNonNullableType(n,a){let S=a.factory.createJSDocNonNullableType(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocNullableType(n,a){return`isJSDocNullableType`in a?a.isJSDocNullableType(n):n.kind===a.SyntaxKind.JSDocNullableType}function cloneJsDocNullableType(n,a){let S=a.factory.createJSDocNullableType(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocOptionalType(n,a){return`isJSDocOptionalType`in a?a.isJSDocOptionalType(n):n.kind===a.SyntaxKind.JSDocOptionalType}function cloneJsDocOptionalType(n,a){let S=a.factory.createJSDocOptionalType(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocFunctionType(n,a){return`isJSDocFunctionType`in a?a.isJSDocFunctionType(n):n.kind===a.SyntaxKind.JSDocFunctionType}function cloneJsDocFunctionType(n,a){let S=a.factory.createJSDocFunctionType(a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,n.type,n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocVariadicType(n,a){return`isJSDocVariadicType`in a?a.isJSDocVariadicType(n):n.kind===a.SyntaxKind.JSDocVariadicType}function cloneJsDocVariadicType(n,a){let S=a.factory.createJSDocVariadicType(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocNamepathType(n,a){return`isJSDocNamepathType`in a?a.isJSDocNamepathType(n):n.kind===a.SyntaxKind.JSDocNamepathType}function cloneJsDocNamepathType(n,a){let S=a.factory.createJSDocNamepathType(a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function cloneJsDocUnknownTag(n,a){let S=a.factory.createJSDocUnknownTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocAugmentsTag(n,a){return`isJSDocAugmentsTag`in a?a.isJSDocAugmentsTag(n):n.kind===a.SyntaxKind.JSDocAugmentsTag}function cloneJsDocAugmentsTag(n,a){let S=a.factory.createJSDocAugmentsTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`class`,a.nextNode(n.class),n.class),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocAuthorTag(n,a){return`isJSDocAuthorTag`in a?a.isJSDocAuthorTag(n):n.kind===a.SyntaxKind.JSDocAuthorTag}function cloneJsDocAuthorTag(n,a){let S=a.factory.createJSDocAuthorTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocClassTag(n,a){return`isJSDocClassTag`in a?a.isJSDocClassTag(n):n.kind===a.SyntaxKind.JSDocClassTag}function cloneJsDocClassTag(n,a){let S=a.factory.createJSDocClassTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocThisTag(n,a){return`isJSDocThisTag`in a?a.isJSDocThisTag(n):n.kind===a.SyntaxKind.JSDocThisTag}function cloneJsDocThisTag(n,a){let S=a.factory.createJSDocThisTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocTemplateTag(n,a){return`isJSDocTemplateTag`in a?a.isJSDocTemplateTag(n):n.kind===a.SyntaxKind.JSDocTemplateTag}function cloneJsDocTemplateTag(n,a){let S=a.factory.createJSDocTemplateTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`constraint`,a.nextNode(n.constraint),n.constraint),ensureNodeArray(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.factory),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocTypedefTag(n,a){return`isJSDocTypedefTag`in a?a.isJSDocTypedefTag(n):n.kind===a.SyntaxKind.JSDocTypedefTag}function cloneJsDocTypedefTag(n,a){let S=a.factory.createJSDocTypedefTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`fullName`,a.nextNode(n.fullName),n.fullName),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S.name=a.hook(`name`,a.nextNode(n.name),n.name),S}function isJsDocCallbackTag(n,a){return`isJSDocCallbackTag`in a?a.isJSDocCallbackTag(n):n.kind===a.SyntaxKind.JSDocCallbackTag}function cloneJsDocCallbackTag(n,a){let S=a.factory.createJSDocCallbackTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`fullName`,a.nextNode(n.fullName),n.fullName),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S.name=a.hook(`name`,a.nextNode(n.name),n.name),S}function isJsDocSignature(n,a){return`isJSDocSignature`in a?a.isJSDocSignature(n):n.kind===a.SyntaxKind.JSDocSignature}function cloneJsDocSignature(n,a){let S=a.factory.createJSDocSignature(a.hook(`typeParameters`,a.nextNodes(n.typeParameters),n.typeParameters),a.hook(`parameters`,a.nextNodes(n.parameters),n.parameters),a.hook(`type`,a.nextNode(n.type),n.type));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocPropertyTag(n,a){return`isJSDocPropertyTag`in a?a.isJSDocPropertyTag(n):n.kind===a.SyntaxKind.JSDocPropertyTag}function cloneJsDocPropertyTag(n,a){let S=a.factory.createJSDocPropertyTag(a.hook(`tagName`,a.nextNode(n.tagName),n.tagName),a.hook(`name`,a.nextNode(n.name),n.name),a.hook(`isBracketed`,n.isBracketed,n.isBracketed),a.hook(`typeExpression`,a.nextNode(n.typeExpression),n.typeExpression),a.hook(`isNameFirst`,n.isNameFirst,n.isNameFirst),a.hook(`comment`,n.comment,n.comment));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function isJsDocTypeLiteral(n,a){return`isJSDocTypeLiteral`in a?a.isJSDocTypeLiteral(n):n.kind===a.SyntaxKind.JSDocTypeLiteral}function cloneJsDocTypeLiteral(n,a){let S=a.factory.createJSDocTypeLiteral(a.hook(`jsDocPropertyTags`,a.nextNodes(n.jsDocPropertyTags),n.jsDocPropertyTags),a.hook(`isArrayType`,n.isArrayType,n.isArrayType));return S.flags=a.hook(`flags`,n.flags|=8,n.flags|=8),S}function fixupParentReferences(n,{deep:a,propertyName:S,typescript:C}){let N=n;C.forEachChild(n,visitNode);function visitNode(n){if(n[S]!==N){n[S]=N;let F=N;if(N=n,a&&C.forEachChild(n,visitNode),n.jsDoc!=null)for(let a of n.jsDoc)a[S]=n,N=a,C.forEachChild(a,visitNode);N=F}}}function setParents(n,a){return fixupParentReferences(n,a),n}function getOriginalNode(n,a){return n._original==null?a.typescript.getOriginalNode(n)??n:getOriginalNode(n._original,a)}function formatCommentRange({pos:n,end:a}){return`${n}:${a}`}function getCommentRanges(n,a){let S=[],C=getOriginalNode(n,a),N=C.getSourceFile();if(N==null||C.pos===-1||C.end===-1)return[];let F=N.getFullText(),I=C.getFullStart(),H=C.getEnd(),W=a.typescript.getLeadingCommentRanges(F,I)??[],K=a.typescript.getTrailingCommentRanges(F,H)??[];if(W.length<1){let n=C.getFullText().trim();(n.startsWith(`//`)||n.startsWith(`/*`))&&W.push(...a.typescript.getTrailingCommentRanges(F,I)??[])}let q=[...W.map(n=>({...n,hasTrailingNewLine:!!n.hasTrailingNewLine,isLeading:!0})),...K.map(n=>({...n,hasTrailingNewLine:!!n.hasTrailingNewLine,isLeading:!1}))];for(let n of q){if(a.commentRanges.has(formatCommentRange(n)))continue;a.commentRanges.add(formatCommentRange(n));let C=N.text.substring(n.pos,n.end);if(!C.startsWith(`//`)&&!C.startsWith(`/*`))continue;let F=C.includes(`\r
690
693
  `),I=C.startsWith(`/**`);C=C.split(/\r?\n/).map(n=>n.trim()).map(n=>!I||n.startsWith(`/**`)?n:` ${n}`).join(F?`\r
691
694
  `:`
@@ -772,7 +775,7 @@ No install command available for your package manager. Install manually.`),proce
772
775
  `)}),()=>{F.length>0&&(a.write(F),F=``)}}var HM=__esmMin(()=>{});function lookupEnv(n,a){let S=a.toLowerCase();for(let a of Object.keys(n))if(a.toLowerCase()===S&&n[a]!==void 0)return n[a]}function escapeCmdCommand(n){return n.replace(KM,`^$1`)}function escapeCmdArgument(n,a=!1){let S=`${n}`;return S=S.replace(/(?=(\\+?)?)\1"/g,`$1$1\\"`),S=S.replace(/(?=(\\+?)?)\1$/,`$1$1`),S=`"${S}"`,S=S.replace(KM,`^$1`),a&&(S=S.replace(KM,`^$1`)),S}function buildCmdExeInvocation(n,a,S=`cmd.exe`){let C=GM.test(n);return{cmd:S,args:[`/d`,`/s`,`/c`,`"${[escapeCmdCommand(n),...a.map(n=>escapeCmdArgument(n,C))].join(` `)}"`],windowsVerbatimArguments:!0}}function isBareName(n){return!n.includes(`/`)&&!n.includes(`\\`)&&!/\.[^.]+$/.test(n)}function lookupOnPath(n,a){let S=(lookupEnv(a.env,`PATH`)??``).split(`;`).filter(Boolean),C=(lookupEnv(a.env,`PATHEXT`)??UM).split(`;`).filter(Boolean);for(let N of S)for(let S of C){let C=a.join(N,n+S);if(a.exists(C))return C}}function resolveWin32Command(n,a,S){if(S.platform!==`win32`||!isBareName(n))return;let C=lookupOnPath(n,S);if(C)return WM.test(C)?{cmd:C,args:[...a]}:buildCmdExeInvocation(C,a,lookupEnv(S.env,`COMSPEC`)??`cmd.exe`)}var UM,WM,GM,KM,qM=__esmMin(()=>{UM=`.COM;.EXE;.BAT;.CMD`,WM=/\.(?:com|exe)$/i,GM=/node_modules[\\/]\.bin[\\/][^\\/]+\.cmd$/i,KM=/([()\][%!^"`<>&|;, *?])/g});function resolveEnv(n){if(!n.color)return n.env;let a=n.env??process.env,S=process.env.FORCE_COLOR!==void 0||process.env.NO_COLOR!==void 0?{}:{FORCE_COLOR:`1`};return{...a,...S}}function forWin32(n,a,S){return resolveWin32Command(n,a,{platform:process.platform,env:S??process.env,exists:existsSync,join:_s})??{cmd:n,args:[...a]}}function mapSpawnError(n,a){return n.code===`ENOENT`&&a.notFound?a.notFound(n):n}function mustBlock(n){return isGjs()&&n.completion===`return`}function spawnToCompletion(n,a,S){let C=resolveEnv(S);if(mustBlock(S)){let N=forWin32(n,a,C),F=spawnSync(N.cmd,N.args,{stdio:[`inherit`,`pipe`,`pipe`],cwd:S.cwd,env:C,maxBuffer:S.maxBuffer??JM,windowsVerbatimArguments:N.windowsVerbatimArguments});return F.error?Promise.reject(mapSpawnError(F.error,S)):(F.stdout&&F.stdout.length>0&&process.stdout.write(F.stdout),F.stderr&&F.stderr.length>0&&process.stderr.write(F.stderr),Promise.resolve({code:F.status,signal:F.signal??null}))}return new Promise((N,F)=>{let I=forWin32(n,a,C),H={cwd:S.cwd,stdio:S.stdio===`pipe`?[`ignore`,`pipe`,`pipe`]:`inherit`};C&&(H.env=C),I.windowsVerbatimArguments&&(H.windowsVerbatimArguments=!0);let W=spawn(I.cmd,I.args,H);S.onSpawn?.(W),W.on(`close`,(n,a)=>{N({code:n,signal:a})}),W.on(`error`,n=>{F(mapSpawnError(n,S))})})}var JM,YM=__esmMin(()=>{Xm(),gl(),Os(),Tm(),qM(),JM=64*1024*1024});function dirLinkTarget(n,a,S=XM){return S===`junction`?ms(a):vs(bs(n),a)}function linkDirSync(n,a){assertAbsolute(a),symlinkSync(dirLinkTarget(n,a),n,ZM)}function replicateLinkSync(n,a){let S=readlinkSync(n);if(!dirLinksAreJunctions()){symlinkSync(S,a);return}let C=ms(bs(n),S),N;try{N=statSync(C).isDirectory()}catch{symlinkSync(S,a);return}N?symlinkSync(C,a,`junction`):symlinkSync(S,a,`file`)}function assertAbsolute(n){if(ms(n)!==n)throw TypeError(`linkDir: target must be an absolute path, got ${JSON.stringify(n)}. Node resolves a Windows junction target against the process CWD rather than the link's own directory, so a relative target silently points somewhere else there.`)}var XM,ZM,dirLinksAreJunctions,QM=__esmMin(()=>{gl(),Jc(),Os(),XM=process.platform===`win32`?`junction`:`symlink`,ZM=XM===`junction`?`junction`:void 0,dirLinksAreJunctions=()=>XM===`junction`});function buildCacheEnabledByEnv(n=process.env){let a=n.GJSIFY_BUILD_CACHE;return a===void 0?!1:a!==``&&a!==`0`&&a!==`false`}function buildCacheRoot(n){return _s(n,`node_modules`,`.cache`,`gjsify`,`build`)}function sanitizePackageDirName(n){return`${n.replace(/^@/,``).replace(/[^A-Za-z0-9._-]/g,`-`)}-${createHash(`sha256`).update(n).digest(`hex`).slice(0,8)}`}function hashFileStream(n){let a=createHash(`sha256`),S=openSync(n,`r`);try{let n=Buffer.alloc(64*1024);for(;;){let C=readSync(S,n,0,n.length,null);if(C<=0)break;a.update(n.subarray(0,C))}}finally{closeSync(S)}return a.digest(`hex`)}function walkFiles(n,a,S){let C;try{C=readdirSync(n)}catch{return}C.sort();for(let N of C){if(N===`node_modules`)continue;let C=_s(n,N),F=a===``?N:`${a}/${N}`,I;try{I=lstatSync(C)}catch{continue}if(I.isSymbolicLink())try{let n=readlinkSync(C);S.push({rel:F,abs:C,link:n})}catch{}else I.isDirectory()?walkFiles(C,F,S):I.isFile()&&S.push({rel:F,abs:C})}}function hashPackageInputs(n){let a=[],S=_s(n,`package.json`);existsSync(S)&&a.push({rel:`package.json`,abs:S});let C=[];try{C=readdirSync(n)}catch{}for(let S of C.sort())/^tsconfig.*\.json$/.test(S)&&a.push({rel:S,abs:_s(n,S)});let N=_s(n,`src`);existsSync(N)&&walkFiles(N,`src`,a);let F=createHash(`sha256`);F.update(`gjsify-build-cache-inputs/v3
773
776
  `);for(let n of a){if(n.link!==void 0){let a;try{a=hashFileStream(n.abs)}catch{a=`link:${n.link}`}F.update(`${n.rel} ${a}\n`);continue}try{F.update(`${n.rel} ${hashFileStream(n.abs)}\n`)}catch{F.update(`${n.rel} unreadable\n`)}}return F.digest(`hex`)}function hashOutputDirs(n,a){let S=createHash(`sha256`);S.update(`gjsify-build-cache-outputs/v3
774
777
  `);for(let C of[...a].sort()){let a=_s(n,C);if(!existsSync(a)){S.update(`${C} absent\n`);continue}let N=[];walkFiles(a,C,N);for(let n of N){if(n.link!==void 0){S.update(`${n.rel} link:${n.link}\n`);continue}try{S.update(`${n.rel} ${hashFileStream(n.abs)}\n`)}catch{S.update(`${n.rel} unreadable\n`)}}}return S.digest(`hex`)}function outputUnits(n){let a=[];for(let S of $M){let C=_s(n,S);if(!existsSync(C))continue;let N;try{N=readdirSync(C).filter(n=>n!==`node_modules`&&!isBuildInfo(n))}catch{continue}let F=N.every(n=>{try{return lstatSync(_s(C,n)).isDirectory()}catch{return!1}});if(N.length===0||!F){a.push(S);continue}for(let n of[...N].sort())a.push(`${S}/${n}`)}return a}function signatureOf(n,a){let S=[];walkFiles(_s(n,a),a,S);let C=createHash(`sha256`);for(let n of S){let a=`link`;if(n.link===void 0)try{let S=lstatSync(n.abs);a=`${S.size}:${S.mtimeMs}`}catch{a=`gone`}C.update(`${n.rel} ${a}\n`)}return C.digest(`hex`)}function snapshotOutputDirs(n){let a={};for(let n of $M)a[n]=null;for(let S of outputUnits(n))a[S]=signatureOf(n,S);return a}function modifiedOutputDirs(n,a){let S=[];for(let C of outputUnits(n))signatureOf(n,C)!==(a[C]??null)&&S.push(C);return S.sort()}function composeCacheKey(n){let a=createHash(`sha256`);a.update(`gjsify-build-cache/v3
775
- `),a.update(`script:${n.script}\n`);for(let S of n.args??[])a.update(`arg:${S}\n`);for(let S of Object.keys(n.toolchain).sort())a.update(`tool:${S}@${n.toolchain[S]}\n`);a.update(`self:${n.ownHash}\n`);let S=n.depHashes instanceof Map?n.depHashes:new Map(Object.entries(n.depHashes));for(let n of[...S.keys()].sort())a.update(`dep:${n} ${S.get(n)}\n`);return a.digest(`hex`).slice(0,32)}function resolveToolchainVersions(n){let a={};for(let S of eN){let C=`none`;try{let a=readFileSync(_s(n,`node_modules`,...S.split(`/`),`package.json`),`utf-8`),N=JSON.parse(a);typeof N.version==`string`&&(C=N.version)}catch{}S===`@gjsify/cli`&&C===`none`&&(C=readOwnCliVersion()??`none`),a[S]=C}return a}function readOwnCliVersion(){try{let n=bs(fileURLToPath(import.meta.url));for(let a=0;a<4;a++){let a=_s(n,`package.json`);if(existsSync(a)){let n=JSON.parse(readFileSync(a,`utf-8`));if(n.name===`@gjsify/cli`&&typeof n.version==`string`)return n.version}n=bs(n)}}catch{}return null}function copyDirRecursive(n,a){mkdirSync(a,{recursive:!0});for(let S of readdirSync(n).sort()){let C=_s(n,S),N=_s(a,S),F=lstatSync(C);if(F.isSymbolicLink())replicateLinkSync(C,N);else if(F.isDirectory())copyDirRecursive(C,N);else if(F.isFile()){copyFileSync(C,N);try{chmodSync(N,F.mode&511)}catch{}}}}function buildCacheEntryDir(n,a,S){return _s(n,sanitizePackageDirName(a),S)}function readCacheEntry(n,a,S){let C=_s(tN(n,a,S),`manifest.json`);try{let N=JSON.parse(readFileSync(C,`utf-8`));if(N.version!==1||N.layout!==`v3`||N.package!==a||N.key!==S||!Array.isArray(N.dirs))return null;for(let C of N.dirs)if(!existsSync(_s(tN(n,a,S),`outputs`,C)))return null;return N}catch{return null}}function storeCacheEntry(n,a,S,C,N){let F=tN(n,a.name,S),I=`${F}.tmp-${process.pid}`;try{rmSync(I,{recursive:!0,force:!0}),mkdirSync(_s(I,`outputs`),{recursive:!0});for(let n of N)copyDirRecursive(_s(a.location,n),_s(I,`outputs`,n));let H=new Date().toISOString(),W={version:1,layout:`v3`,package:a.name,script:C,key:S,dirs:[...N],outputsHash:hashOutputDirs(a.location,N),createdAt:H,usedAt:H};return writeFileSync(_s(I,`manifest.json`),JSON.stringify(W,null,2)),rmSync(F,{recursive:!0,force:!0}),renameSync(I,F),pruneCacheEntries(n,a.name),W}catch{try{rmSync(I,{recursive:!0,force:!0})}catch{}return null}}function restoreCacheEntry(n,a,S){let C=tN(n,a.name,S.key);try{if(S.dirs.length>0&&hashOutputDirs(a.location,S.dirs)===S.outputsHash)return touchManifestUsed(C,S),`up-to-date`;for(let n of S.dirs){let S=_s(a.location,n);rmSync(S,{recursive:!0,force:!0}),copyDirRecursive(_s(C,`outputs`,n),S)}return touchManifestUsed(C,S),S.dirs.length>0?`restored`:`up-to-date`}catch{return null}}function touchManifestUsed(n,a){try{a.usedAt=new Date().toISOString(),writeFileSync(_s(n,`manifest.json`),JSON.stringify(a,null,2))}catch{}}function pruneCacheEntries(n,a,S=2){let C=_s(n,sanitizePackageDirName(a)),N;try{N=readdirSync(C)}catch{return}let F=[];for(let n of N){if(n.includes(`.tmp-`)){try{rmSync(_s(C,n),{recursive:!0,force:!0})}catch{}continue}let a=``;try{let S=JSON.parse(readFileSync(_s(C,n,`manifest.json`),`utf-8`));a=S.usedAt??S.createdAt??``}catch{}F.push({name:n,stamp:a})}if(!(F.length<=S)){F.sort((n,a)=>n.stamp<a.stamp?1:n.stamp>a.stamp?-1:0);for(let n of F.slice(S))try{rmSync(_s(C,n.name),{recursive:!0,force:!0})}catch{}}}function buildCacheOptedOut(n){return n.manifest.gjsify?.buildCache===!1}var $M,eN,isBuildInfo,tN,BuildCacheRunner,nN=__esmMin(()=>{_e(),xo(),gl(),Os(),rn(),R_(),QM(),$M=[`lib`,`dist`,`dist-templates`],eN=[`@gjsify/cli`,`@gjsify/tsc`,`rolldown`,`typescript`],isBuildInfo=n=>n.endsWith(`.tsbuildinfo`),tN=buildCacheEntryDir,BuildCacheRunner=class{options;cacheRoot;graph;toolchain;ownHashes=new Map;closures=new Map;keys=new Map;log;constructor(n){this.options=n,this.cacheRoot=buildCacheRoot(n.root),this.graph=buildDependencyGraph(n.workspaces,{includeDev:!0,includePeer:!0,includeOptional:!0}),this.toolchain=resolveToolchainVersions(n.root),this.log=n.log??(n=>ge.error(n));for(let a of n.targets??[])if(this.graph.byName.has(a)){this.ownHashOf(a);for(let n of this.closureOf(a))this.ownHashOf(n)}}ownHashOf(n){let a=this.ownHashes.get(n);if(a===void 0){let S=this.graph.byName.get(n);a=S?hashPackageInputs(S.location):`unknown-workspace`,this.ownHashes.set(n,a)}return a}closureOf(n){let a=this.closures.get(n);if(a===void 0){let S=new Set,C=[...this.graph.edges.get(n)??[]];for(;C.length>0;){let a=C.shift();if(!(a===n||S.has(a))){S.add(a);for(let N of this.graph.edges.get(a)??[])!S.has(N)&&N!==n&&C.push(N)}}a=[...S].sort(),this.closures.set(n,a)}return a}keyFor(n){let a=this.keys.get(n.name);if(a===void 0){let S=new Map;for(let a of this.closureOf(n.name))S.set(a,this.ownHashOf(a));a=composeCacheKey({script:this.options.script,args:this.options.args,toolchain:this.toolchain,ownHash:this.ownHashOf(n.name),depHashes:S}),this.keys.set(n.name,a)}return a}tryRestore(n){try{if(buildCacheOptedOut(n))return this.log(`[gjsify build-cache] ${n.name}: opted out (gjsify.buildCache=false) — running uncached`),!1;let a=this.keyFor(n),S=readCacheEntry(this.cacheRoot,n.name,a);if(!S||S.script!==this.options.script)return this.log(`[gjsify build-cache] ${n.name}: miss ${a} — running "${this.options.script}"`),!1;let C=restoreCacheEntry(this.cacheRoot,n,S);if(C===null)return this.log(`[gjsify build-cache] ${n.name}: entry ${a} unrestorable — running "${this.options.script}"`),!1;let N=S.dirs.length>0?S.dirs.join(`, `):`no output dirs`;return this.log(`[gjsify build-cache] ${n.name}: hit ${a} — ${C===`restored`?`restored ${N}`:`${N} up to date`} (skipped "${this.options.script}")`),!0}catch(a){return this.log(`[gjsify build-cache] ${n.name}: cache error (${a.message}) — running uncached`),!1}}snapshotOutputs(n){try{return snapshotOutputDirs(n.location)}catch{return{}}}storeAfterSuccess(n,a){try{if(buildCacheOptedOut(n))return;let S=this.keyFor(n),C=modifiedOutputDirs(n.location,a);if(storeCacheEntry(this.cacheRoot,n,S,this.options.script,C)){let a=C.length>0?C.join(`, `):`no output dirs modified`;this.log(`[gjsify build-cache] ${n.name}: stored ${S} (${a})`)}}catch(a){this.log(`[gjsify build-cache] ${n.name}: store failed (${a.message}) — continuing`)}}}});function editDistance(n,a){if(n===a)return 0;if(n.length===0)return a.length;if(a.length===0)return n.length;let S=Array.from({length:a.length+1},(n,a)=>a),C=Array.from({length:a.length+1},()=>0);for(let N=1;N<=n.length;N++){C[0]=N;for(let F=1;F<=a.length;F++){let I=n[N-1]===a[F-1]?0:1;C[F]=Math.min(S[F]+1,C[F-1]+1,S[F-1]+I)}[S,C]=[C,S]}return S[a.length]}function suggestClosest(n,a){if(a.length===0)return;let S=n.toLowerCase(),C=Math.max(2,Math.floor(n.length/3)),N,F=1/0;for(let n of a){let a=editDistance(S,n.toLowerCase());a<F&&(F=a,N=n)}return N!==void 0&&F<=C?N:void 0}var rN=__esmMin(()=>{});function collectTransitiveClosure(n,a,S){let C=new Map;for(let n of a)C.set(n.name,n);let N=new Set,F=[],I=[n];for(;I.length>0;){let n=I.pop();if(N.has(n.name))continue;N.add(n.name),F.push(n);let a=n.manifest,H=[a.dependencies,S?a.devDependencies:void 0,a.optionalDependencies];for(let n of H)if(n)for(let[a,S]of Object.entries(n)){if(typeof S!=`string`||!S.startsWith(`workspace:`))continue;let n=C.get(a);n&&(N.has(n.name)||I.push(n))}}return F}async function runOne$1(n,a,S,C,N,F){if(F&&F.tryRestore(n))return;let I=F?.snapshotOutputs(n),H=C===`gjsify`?[`run`,a,...S]:[`run`,a,...S.length>0?[`--`,...S]:[]];N&&ge.error(`[${n.name}] $ ${C} ${H.join(` `)}`);let{code:W}=await spawnToCompletion(C,H,{completion:`exit`,cwd:n.location,color:!0});if(W!==0)throw Error(`${C} ${H.join(` `)} exited with code ${W}`);F&&I&&F.storeAfterSuccess(n,I)}function detectPackageManager$1(){if(isGjs())return`gjsify`;let n=process.env.npm_config_user_agent??``;return n.startsWith(`yarn/`)?`yarn`:n.startsWith(`gjsify/`)?`gjsify`:`npm`}var iN,aN=__esmMin(()=>{_e(),YM(),R_(),B_(),nN(),Tm(),rN(),iN={command:`workspace <name> <script> [args..]`,description:"Run a workspace script. Both `workspace <name> <script>` and the yarn spelling `workspace <name> run <script>` work.",builder:n=>n.positional(`name`,{description:"Workspace name (matches package.json `name` field).",type:`string`,demandOption:!0}).positional(`script`,{description:`Script name to run inside that workspace.`,type:`string`,demandOption:!0}).positional(`args`,{description:`Extra arguments forwarded to the script.`,type:`string`,array:!0}).option(`with-dependencies`,{description:"Pre-build the target workspace's transitive workspace dependencies in topological order before running the script in the target. Deps that don't declare the script are skipped (--if-present behaviour). Replaces manual `gjsify workspace A build && gjsify workspace B build && …` chains.",type:`boolean`,alias:[`d`,`t`,`topological`],default:!1}).option(`include-dev`,{description:"When --with-dependencies is set, also walk devDependencies (production deps only by default — matches `gjsify foreach -t`).",type:`boolean`,default:!1}).option(`continue-on-error`,{description:`When --with-dependencies is set, keep running remaining deps after one fails (default: stop on first failure).`,type:`boolean`,default:!1}).option(`verbose`,{description:`Echo every spawned command before running it.`,type:`boolean`,alias:`v`,default:!1}).option(`cached`,{description:`Content-hash build cache (ADR 0006): skip the script for a workspace whose inputs (src/**, package.json, tsconfig*.json, transitive workspace deps, toolchain versions) are unchanged and restore its stored outputs instead; on miss run it and store the output dirs it modified. Also applies to the deps run via --with-dependencies. Default from GJSIFY_BUILD_CACHE=1.`,type:`boolean`}),handler:async n=>{let a=findWorkspaceRoot(process.cwd())??process.cwd(),S=discoverWorkspaces(a),C=S.find(a=>a.name===n.name);if(!C){let C=suggestClosest(n.name,S.map(n=>n.name)),N=C?` — did you mean "${C}"?`:``;return ge.error(`gjsify workspace: no workspace named "${n.name}"${N} (discovered ${S.length} workspace(s) under ${a})`),process.exit(1)}let N=detectPackageManager$1(),F=n.verbose===!0,I=n[`with-dependencies`]===!0,H=n[`continue-on-error`]===!0,W=n.script,K=n.args??[];W===`run`&&K.length>0&&([W,...K]=K);let q=C.manifest.scripts??{};if(typeof q[W]!=`string`){let a=suggestClosest(W,Object.keys(q));return ge.error(`gjsify workspace: workspace "${n.name}" has no script "${W}"`+(a?` — did you mean "${a}"?`:``)),process.exit(1)}let Y;Y=I?topologicalSort(buildDependencyGraph(collectTransitiveClosure(C,S,n[`include-dev`]===!0),{includeDev:n[`include-dev`]===!0})):[C];let X=n.cached??buildCacheEnabledByEnv()?new BuildCacheRunner({root:a,workspaces:S,script:W,args:K,targets:Y.map(n=>n.name)}):void 0,te=[];for(let n of Y){if(typeof(n.manifest.scripts??{})[W]!=`string`){F&&ge.error(`[${n.name}] (no "${W}" script — skipping)`);continue}try{await runOne$1(n,W,K,N,F,X)}catch(a){let S=a instanceof Error?a:Error(String(a));if(ge.error(`[${n.name}] ${S.message}`),!H)return process.exit(1);te.push({workspace:n.name,error:S})}}return te.length>0?(ge.error(`gjsify workspace: ${te.length} workspace(s) failed: ${te.map(n=>n.workspace).join(`, `)}`),process.exit(1)):process.exit(0)}},__name$1(runOne$1,`runOne`),__name$1(detectPackageManager$1,`detectPackageManager`)});async function runCheck(n,a){let S=[],C=detectPackageManager$1();if(C===`gjsify`&&readPackageJson$2(_s(n.location,`package.json`))?.scripts?.check===void 0)return 0;let N=C===`gjsify`?[`run`,`check`]:[`run`,`check`,`--if-present`];try{let{code:F}=await spawnToCompletion(C,N,{completion:`exit`,cwd:n.location,stdio:a===null?`inherit`:`pipe`,onSpawn:n=>{let C=!process.stdout.isTTY;if(a!==null&&n.stdout&&n.stderr){let N=`[${a}] `;S.push(prefixLines(n.stdout,process.stdout,N,C)),S.push(prefixLines(n.stderr,process.stderr,N,C))}}});for(let n of S)n();return F??1}catch{for(let n of S)n();return 1}}var oN,sN=__esmMin(()=>{_e(),HM(),YM(),z_(),Os(),um(),R_(),B_(),aN(),oN={command:`check`,description:"Run `npm run check` (TypeScript type-check) across the current workspace. In a workspace root: walks every package with a `check` script (excludes @girs/*; honours --include/--exclude). In a single package: runs the local `check` script directly. Symmetric peer of `gjsify format` / `lint` / `fix`. (Legacy system-dep `gjsify check` is now `gjsify system-check` — see #254.)",builder:n=>n.option(`include`,{description:`Only run in workspaces matching these glob patterns (repeatable).`,type:`string`,array:!0}).option(`exclude`,{description:`Skip workspaces matching these glob patterns (repeatable). Always excludes @girs/*.`,type:`string`,array:!0}).option(`parallel`,{description:`Run workspace checks in parallel (default). Use --no-parallel to run them sequentially with full per-workspace output.`,type:`boolean`,alias:`p`,default:!0}).option(`jobs`,{description:`Max parallel workers (when --parallel). Default: os.cpus().length.`,type:`number`,alias:`j`}).option(`verbose`,{description:`Log the per-workspace command before spawning.`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=findWorkspaceRoot(a);if(S&&a!==S&&readPackageJson$2(_s(a,`package.json`))?.scripts?.check){n.verbose&&ge.log(`[check] cwd=${a} → npm run check`);let{code:S}=await spawnToCompletion(detectPackageManager$1(),[`run`,`check`],{cwd:a,completion:`exit`});return process.exit(S??1)}if(!S)return ge.error("gjsify check: no workspace root found from cwd. Run inside a workspace (or a package within one) with `npm run check` defined."),process.exit(1);let C=discoverWorkspaces(S),N=[`@girs/*`,...n.exclude??[]],F=filterWorkspaces(C,{include:n.include,exclude:N}).filter(n=>n.manifest.scripts?.check!==void 0);if(F.length===0)return ge.error("gjsify check: no workspaces with a `check` script found."),process.exit(1);if(n.verbose&&ge.log(`[check] root=${S} workspaces=${F.length} parallel=${n.parallel?`yes`:`no`}`),!n.parallel){let a=0,S=0;for(let C of F){n.verbose&&ge.log(`[check] → ${C.name}`);let N=await runCheck(C,null);N!==0&&(S++,a===0&&(a=N))}return a!==0&&ge.error(`gjsify check: failures in ${S} workspace(s)`),process.exit(a)}let I=n.jobs??Math.max(1,cpus().length),H=[],W=0,K=[];for(let n=0;n<I;n++)K.push((async()=>{for(;;){let n=W++;if(n>=F.length)return;let a=F[n],S=await runCheck(a,a.name);S!==0&&H.push({name:a.name,code:S})}})());if(await Promise.all(K),H.length>0){ge.error(`\ngjsify check: ${H.length} of ${F.length} workspace(s) failed:`);for(let n of H)ge.error(` ✗ ${n.name} (exit ${n.code})`);return process.exit(1)}n.verbose&&ge.log(`\ngjsify check: ${F.length} workspace(s) green.`),process.exit(0)}}});function manifestPath(){let n=bs(fileURLToPath(import.meta.url)),a=[_s(n,`..`,`..`,`showcases.json`),_s(n,`..`,`showcases.json`)];return a.find(n=>existsSync(n))??a[0]}function discoverShowcases(){let n=manifestPath();if(!existsSync(n))return[];let a;try{a=JSON.parse(readFileSync(n,`utf-8`))}catch{return[]}if(!Array.isArray(a.showcases))return[];let S=a.showcases.map(n=>({name:n.name,packageName:n.package,category:n.category,description:n.description??``,needsWebgl:!!n.needsWebgl}));return S.sort((n,a)=>n.category.localeCompare(a.category)||n.name.localeCompare(a.name)),S}function findShowcase(n){return discoverShowcases().find(a=>a.name===n)}var cN=__esmMin(()=>{gl(),Os(),rn()});function parseSpec$1(n){if(!n)throw Error(`dlx: empty package spec`);if(n.startsWith(`./`)||n.startsWith(`../`)||gs(n)||existsSync(n))return{kind:`local`,path:ms(n)};let a=n,S,C=n.lastIndexOf(`@`);if(C>0&&(a=n.slice(0,C),S=n.slice(C+1)),!lN.test(a))throw Error(`dlx: invalid package name "${a}"`);return{kind:`registry`,name:a,version:S,spec:n}}var lN,uN=__esmMin(()=>{gl(),Os(),lN=/^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,__name$1(parseSpec$1,`parseSpec`)});function resolveGjsEntry(n,a){let S=_s(n,`package.json`);if(!existsSync(S))throw Error(`dlx: no package.json found at ${n}`);let C=JSON.parse(readFileSync(S,`utf-8`)),N=C.gjsify?.bin,F=C.gjsify?.main,I=C.main,H,W=null,K=!1;if(a!==null){if(!N||!N[a]){let S=N?Object.keys(N).join(`, `):`(none)`;throw Error(`dlx: package "${C.name??n}" has no GJS bin named "${a}" — known: ${S}`)}H=N[a],W=a}else if(N&&Object.keys(N).length===1){let n=Object.keys(N)[0];H=N[n],W=n}else F?H=F:I&&(H=I,K=!0);if(N&&Object.keys(N).length>1&&a===null){let a=Object.keys(N).join(`, `);throw Error(`dlx: package "${C.name??n}" defines multiple GJS bins — pass one of: ${a}`)}if(!H)throw Error(`dlx: package "${C.name??n}" has no GJS entry — set \`gjsify.main\` (or \`gjsify.bin\`) in its package.json`);let q=ms(n,H);if(!existsSync(q))throw Error(`dlx: GJS entry not found: ${q}`);return{bundlePath:q,binName:W,fromFallback:K}}function resolveNodeEntry(n){let a=_s(n,`package.json`);if(!existsSync(a))throw Error(`no package.json found at ${n}`);let S=JSON.parse(readFileSync(a,`utf-8`)),C=S.gjsify?.example?.node;if(C){let a=ms(n,C);if(!existsSync(a))throw Error(`declared node entry not found: ${a} (gjsify.example.node)`);return a}let N=S.gjsify?.main??(S.gjsify?.bin?Object.values(S.gjsify.bin)[0]:void 0)??S.main;if(!N)throw Error(`package "${S.name??n}" has no entry to derive a node bundle from — set \`gjsify.example.node\` to its \`--app node\` bundle path.`);let F=N.replace(/\.gjs\.(js|mjs|cjs)$/,``).replace(/\.(js|mjs|cjs)$/,``),I=[`${F}.node.mjs`,`${F}.node.js`,`${F}.node.cjs`];for(let a of I){let S=ms(n,a);if(existsSync(S))return S}throw Error(`package "${S.name??n}" has no \`--app node\` bundle — looked for ${I.join(`, `)}.\n Build one (e.g. \`gjsify build src/app.ts --app node --outfile dist/app.node.mjs\`) or set \`gjsify.example.node\` to its path.`)}var dN=__esmMin(()=>{gl(),Os()});function lexCompare(n,a){return n<a?-1:+(n>a)}function createCacheKey(n){let a=[...n.packages].sort(lexCompare),S=Object.entries(n.registries??{}).sort(([n],[a])=>lexCompare(n,a)),C=JSON.stringify([a,S]);return createHash(`sha256`).update(C).digest(`hex`)}function dlxCacheRoot(){let n=process.env.XDG_CACHE_HOME,a=_s(n&&n.length>0?n:_s(homedir(),`.cache`),`gjsify`,`dlx`);return mkdirSync(a,{recursive:!0}),a}function cacheDirFor(n){let a=_s(dlxCacheRoot(),n);return mkdirSync(a,{recursive:!0}),a}function makePrepareDir(n){let a=_s(n,`${Date.now().toString(16)}-${process.pid.toString(16)}`);return mkdirSync(a,{recursive:!0}),a}function getValidCachedPkg(n,a=pN){let S=_s(n,`pkg`),C;try{C=lstatSync(S)}catch(n){if(n.code===`ENOENT`)return;throw n}if(!C.isSymbolicLink())return;let N;try{N=realpathSync(S)}catch{return}return Date.now()-C.mtime.getTime()<=a*fN?N:void 0}function symlinkSwap(n,a,S={}){let C=S.junctions??dirLinksAreJunctions(),N=_s(n,`pkg`),F=_s(n,`pkg.tmp-${Date.now().toString(16)}-${process.pid.toString(16)}`);linkDirSync(F,a);try{C&&rmSync(N,{force:!0,recursive:!1,maxRetries:10,retryDelay:100}),renameSync(F,N)}catch(n){let S=n.code;if(S===`EBUSY`||S===`EPERM`||S===`EEXIST`||S===`EACCES`){rmSync(F,{force:!0});try{return realpathSync(N)}catch{return realpathSync(a)}}throw n}return realpathSync(N)}function resolveInstalledPkgDir(n,a){return ms(n,`node_modules`,a)}var fN,pN,mN=__esmMin(()=>{xo(),gl(),um(),Os(),QM(),fN=6e4,pN=1440*7});function makeProgressReporter(n={}){if(n.enabled===!1)return gN;let a=n.stream??process.stderr,S=!!a.isTTY;return n.enabled??!0?S?makeTtyReporter(a):makePlainReporter(a):gN}function makeTtyReporter(n){let a=0,S=``;function render(C,N=!1){let F=Date.now();!N&&F-a<33&&C===S||(a=F,S=C,n.write(`\r\x1B[2K`+C))}function clearLine(){n.write(`\r\x1B[2K`),S=``}return{beginPhase(a,S){render(formatBar(a,0,S,void 0,n.columns??80),!0)},update(a){render(formatBar(a.phase,a.current,a.total,a.name,n.columns??80))},endPhase(a){let S=hN[a];clearLine(),n.write(`gjsify install: ${S} done\n`)}}}function makePlainReporter(n){let a=0,S=0;return{beginPhase(C,N){a=Date.now(),S=0,n.write(`gjsify install: ${hN[C]} ${N} package(s)\n`)},update(C){let N=Date.now();if(N-a<_N||C.current<=S)return;a=N,S=C.current;let F=C.total>0?Math.round(C.current/C.total*100):0;n.write(`gjsify install: ${hN[C.phase]} ${C.current}/${C.total} (${F}%)\n`)},endPhase(a){n.write(`gjsify install: ${hN[a]} done\n`)}}}function formatBar(n,a,S,C,N){let F=hN[n],I=S>0?Math.min(1,a/S):0,H=`${a}/${S}`,W=`gjsify install: ${F} `,K=` ${H}`+(C?` ${C}`:``),q=Math.max(8,Math.min(40,N-W.length-K.length-4)),Y=Math.round(I*q),X=`█`.repeat(Y)+`░`.repeat(q-Y),te=`${W}[${X}]${K}`;if(te.length>N){let n=te.length-N+1,a=C&&C.length>n?C.slice(0,C.length-n-1)+`…`:``;te=`${W}[${X}] ${H}${a?` `+a:``}`}return te}var hN,gN,_N,vN=__esmMin(()=>{hN={resolve:`resolving`,download:`downloading`,extract:`extracting`,link:`linking bins`},gN={update(){},beginPhase(){},endPhase(){}},_N=5e3});function parse(n){try{return new SemVer(n)}catch{return null}}function compare(n,a){let S=n instanceof SemVer?n:new SemVer(n),C=a instanceof SemVer?a:new SemVer(a);return S.compare(C)}function satisfies(n,a){let S=a instanceof xN?a:new xN(a),C=n instanceof SemVer?n:parse(String(n));return C?S.test(C):!1}function maxSatisfying(n,a){let S=a instanceof xN?a:new xN(a),C=null;for(let a of n){let n=parse(a);!n||!S.test(n)||(C===null||n.compare(C)>0)&&(C=n)}return C?C.version:null}function testComparator(n,a){if(n.semver===null)return!0;let S=a.compare(n.semver);switch(n.operator){case``:case`=`:return S===0;case`<`:return S<0;case`<=`:return S<=0;case`>`:return S>0;case`>=`:return S>=0}}function formatComparator(n){return n.semver===null?`*`:`${n.operator}${n.semver.version}`}function parseRangePart(n){let a=n.trim();if(a===``||a===`*`||a.toLowerCase()===`latest`)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=a.match(/^\s*(\S+)\s+-\s+(\S+)\s*$/);if(S)return hyphenRange(S[1],S[2]);let C=a.replace(/(<=|>=|<|>|=)\s+(?=\S)/g,`$1`).split(/\s+/),N=[];for(let n of C)N.push(...parseSimple(n));return N}function parseSimple(n){if(n===`*`||n===``||n.toLowerCase()===`latest`)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];if(n.startsWith(`^`))return caretRange(n.slice(1));if(n.startsWith(`~`))return tildeRange(n.slice(1).replace(/^>/,``));let a=n.match(/^(<=|>=|<|>|=)\s*(.+)$/);if(a){let n=a[1];return primitiveRange(n,a[2])}return partialRange(n)}function parsePartial(n){let a=n.trim().replace(/^v/,``);if(a===``||a===`*`)return{major:null,minor:null,patch:null,pre:``,build:``};let S=``,C=``,N=a,F=N.indexOf(`+`);F>=0&&(C=N.slice(F+1),N=N.slice(0,F));let I=N.indexOf(`-`);I>=0&&(S=N.slice(I+1),N=N.slice(0,I));let H=N.split(`.`),xr=a=>{if(a===void 0||a===``||a===`x`||a===`X`||a===`*`)return null;if(!/^\d+$/.test(a))throw TypeError(`Invalid partial version: ${n}`);return Number(a)};return{major:xr(H[0]),minor:xr(H[1]),patch:xr(H[2]),pre:S,build:C}}function partialToVersion(n){return`${n.major??0}.${n.minor??0}.${n.patch??0}${n.pre?`-${n.pre}`:``}${n.build?`+${n.build}`:``}`}function partialRange(n){let a=parsePartial(n);return a.major===null?[{operator:`>=`,semver:new SemVer(`0.0.0`)}]:a.minor===null?[{operator:`>=`,semver:new SemVer(`${a.major}.0.0`)},{operator:`<`,semver:new SemVer(`${a.major+1}.0.0`)}]:a.patch===null?[{operator:`>=`,semver:new SemVer(`${a.major}.${a.minor}.0`)},{operator:`<`,semver:new SemVer(`${a.major}.${a.minor+1}.0`)}]:[{operator:`=`,semver:new SemVer(partialToVersion(a))}]}function caretRange(n){let a=parsePartial(n);if(a.major===null)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=`${a.major}.${a.minor??0}.${a.patch??0}${a.pre?`-${a.pre}`:``}`,C;return C=a.major>0||a.minor===null?`${a.major+1}.0.0`:a.minor>0||a.patch===null?`0.${a.minor+1}.0`:`0.0.${a.patch+1}`,[{operator:`>=`,semver:new SemVer(S)},{operator:`<`,semver:new SemVer(C)}]}function tildeRange(n){let a=parsePartial(n);if(a.major===null)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=`${a.major}.${a.minor??0}.${a.patch??0}${a.pre?`-${a.pre}`:``}`,C=a.minor===null?`${a.major+1}.0.0`:`${a.major}.${a.minor+1}.0`;return[{operator:`>=`,semver:new SemVer(S)},{operator:`<`,semver:new SemVer(C)}]}function primitiveRange(n,a){let S=parsePartial(a);return S.major===null?[{operator:`>=`,semver:new SemVer(`0.0.0`)}]:n===`=`||n===``?partialRange(a):n===`>`?S.minor===null?[{operator:`>=`,semver:new SemVer(`${S.major+1}.0.0`)}]:S.patch===null?[{operator:`>=`,semver:new SemVer(`${S.major}.${S.minor+1}.0`)}]:[{operator:`>`,semver:new SemVer(partialToVersion(S))}]:n===`<`?S.minor===null?[{operator:`<`,semver:new SemVer(`${S.major}.0.0`)}]:S.patch===null?[{operator:`<`,semver:new SemVer(`${S.major}.${S.minor}.0`)}]:[{operator:`<`,semver:new SemVer(partialToVersion(S))}]:n===`>=`?[{operator:`>=`,semver:new SemVer(partialToVersion(S))}]:S.minor===null?[{operator:`<`,semver:new SemVer(`${S.major+1}.0.0`)}]:S.patch===null?[{operator:`<`,semver:new SemVer(`${S.major}.${S.minor+1}.0`)}]:[{operator:`<=`,semver:new SemVer(partialToVersion(S))}]}function hyphenRange(n,a){let S=parsePartial(n),C=parsePartial(a),N=S.major===null?{operator:`>=`,semver:new SemVer(`0.0.0`)}:{operator:`>=`,semver:new SemVer(`${S.major}.${S.minor??0}.${S.patch??0}${S.pre?`-${S.pre}`:``}`)},F;return F=C.major===null?{operator:`>=`,semver:new SemVer(`0.0.0`)}:C.minor===null?{operator:`<`,semver:new SemVer(`${C.major+1}.0.0`)}:C.patch===null?{operator:`<`,semver:new SemVer(`${C.major}.${C.minor+1}.0`)}:{operator:`<=`,semver:new SemVer(`${C.major}.${C.minor}.${C.patch}${C.pre?`-${C.pre}`:``}`)},[N,F]}var yN,bN,SemVer,xN,SN=__esmMin(()=>{yN=/^(0|[1-9]\d*)$/,bN=/^(\d+)\.(\d+)\.(\d+)(?:-((?:[0-9A-Za-z-]+)(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,SemVer=class{major;minor;patch;prerelease;build;version;constructor(n){let a=String(n).trim().replace(/^v/,``),S=bN.exec(a);if(!S)throw TypeError(`Invalid Version: ${n}`);this.major=Number(S[1]),this.minor=Number(S[2]),this.patch=Number(S[3]),this.prerelease=S[4]?S[4].split(`.`).map(n=>yN.test(n)?Number(n):n):[],this.build=S[5]?S[5].split(`.`):[],this.version=`${this.major}.${this.minor}.${this.patch}`+(this.prerelease.length?`-${this.prerelease.join(`.`)}`:``)+(this.build.length?`+${this.build.join(`.`)}`:``)}compare(n){return this.major===n.major?this.minor===n.minor?this.patch===n.patch?this.comparePre(n):this.patch<n.patch?-1:1:this.minor<n.minor?-1:1:this.major<n.major?-1:1}comparePre(n){let a=this.prerelease,S=n.prerelease;if(a.length===0&&S.length===0)return 0;if(a.length===0)return 1;if(S.length===0)return-1;for(let n=0;;n++){let C=a[n],N=S[n];if(C===void 0&&N===void 0)return 0;if(N===void 0)return 1;if(C===void 0)return-1;if(C===N)continue;let F=typeof C==`number`,I=typeof N==`number`;return F&&!I?-1:!F&&I?1:C<N?-1:1}}toString(){return this.version}},xN=class Range{raw;set;constructor(n){if(n instanceof Range){this.raw=n.raw,this.set=n.set;return}this.raw=String(n).trim();let a=this.raw.split(/\s*\|\|\s*/),S=[];for(let n of a){let a=parseRangePart(n);if(a.length===0)throw TypeError(`Invalid range: ${this.raw}`);S.push(a)}if(S.length===0)throw TypeError(`Invalid range: ${this.raw}`);this.set=S}test(n){let a=n instanceof SemVer?n:parse(String(n));if(!a)return!1;for(let n of this.set)if(n.every(n=>testComparator(n,a))){if(a.prerelease.length>0&&!n.some(n=>n.semver!==null&&n.semver.prerelease.length>0&&n.semver.major===a.major&&n.semver.minor===a.minor&&n.semver.patch===a.patch))continue;return!0}return!1}format(){return this.set.map(n=>n.map(formatComparator).join(` `)).join(` || `)}toString(){return this.format()}}});function buildHeaders(n,a){let S={"user-agent":`gjsify-install/0.27.0`,"accept-encoding":a.acceptEncoding??`identity`};if(a.npmrc){let C=resolveAuthForUrl(n,a.npmrc);C&&(S.authorization=C)}if(a.headers)for(let[n,C]of Object.entries(a.headers))S[n.toLowerCase()]=C;return S}function resolveAuthForUrl(n,a){let S=pathPrefixes(new URL(n));for(let n of S){let S=a.authTokens[n];if(S)return`Bearer ${S}`;let C=a.basicAuth[n];if(C)return`Basic ${btoa(`${C.username}:${C.password}`)}`}return null}function pathPrefixes(n){let a=n.pathname.split(`/`).filter(Boolean),S=[];for(let C=a.length;C>=0;C--){let N=a.slice(0,C).join(`/`);S.push(N?`//${n.host}/${N}`:`//${n.host}`)}return S}var CN=__esmMin(()=>{}),PackageNotFoundError,IntegrityError,RegistryTimeoutError,wN=__esmMin(()=>{PackageNotFoundError=class extends Error{name;url;constructor(n,a){super(`Package not found in registry: ${n} (${a})`),this.name=n,this.url=a,this.name=`PackageNotFoundError`}},IntegrityError=class extends Error{url;integrity;constructor(n,a){super(`Tarball integrity mismatch for ${n} (expected ${a})`),this.url=n,this.integrity=a,this.name=`IntegrityError`}},RegistryTimeoutError=class extends Error{url;timeoutMs;attempts;constructor(n,a,S){let C=Math.round(a/100)/10,N=Math.round(a*S/100)/10;super(`@gjsify/npm-registry: GET ${n} timed out after ${C}s × ${S} attempt(s) (total ~${N}s). This usually means the registry CDN is slow or unreachable.`),this.url=n,this.timeoutMs=a,this.attempts=S,this.name=`RegistryTimeoutError`}}});function registryFor(n,a){if(a&&n.startsWith(`@`)){let S=n.slice(0,n.indexOf(`/`)),C=a.scopes[S];if(C)return ensureTrailingSlash$1(C)}return a?.registry?ensureTrailingSlash$1(a.registry):TN}function parseNpmrc(n){let a={registry:TN,scopes:{},authTokens:{},basicAuth:{}},S=n.split(/\r?\n/),C={};for(let n of S){let S=n.replace(/^\s+|\s+$/g,``);if(!S||S.startsWith(`#`)||S.startsWith(`;`))continue;let N=S.indexOf(`=`);if(N<0)continue;let F=S.slice(0,N).trim(),I=expandEnv(stripQuotes(S.slice(N+1).trim()));if(F===`registry`){a.registry=ensureTrailingSlash$1(I);continue}let H=F.match(/^(@[^:]+):registry$/);if(H){a.scopes[H[1]]=ensureTrailingSlash$1(I);continue}let W=F.match(/^\/\/(.+):_authToken$/);if(W){a.authTokens[normalizeAuthHost(W[1])]=I;continue}let K=F.match(/^\/\/(.+):username$/);if(K){(C[normalizeAuthHost(K[1])]??={}).user=I;continue}let q=F.match(/^\/\/(.+):_password$/);if(q){let n=base64Decode(I);(C[normalizeAuthHost(q[1])]??={}).pass=n;continue}}for(let[n,S]of Object.entries(C))S.user&&S.pass!==void 0&&(a.basicAuth[n]={username:S.user,password:S.pass});return a}function normalizeAuthHost(n){return`//${n.replace(/\/+$/,``)}`}function ensureTrailingSlash$1(n){return n.endsWith(`/`)?n:n+`/`}function stripQuotes(n){return n.startsWith(`"`)&&n.endsWith(`"`)||n.startsWith(`'`)&&n.endsWith(`'`)?n.slice(1,-1):n}function expandEnv(n){return n.replace(/\$\{([A-Z0-9_]+)\}/gi,(n,a)=>globalThis.process?.env?.[a]??``)}function base64Decode(n){return atob(n)}var TN,EN=__esmMin(()=>{TN=`https://registry.npmjs.org/`,__name$1(ensureTrailingSlash$1,`ensureTrailingSlash`)});async function fetchWithRetry(n,a,S){let C=S.fetch??globalThis.fetch;if(!C)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let N=Math.max(0,S.retries??3),F=Math.max(0,S.retryDelayMs??250),I=Math.max(0,S.timeoutMs??3e4),H=S.retryNotFound??!1,W=0,K,q=0;for(;;){if(a.signal?.aborted)throw signalAbortError(a.signal);let Y=I>0?new AbortController:null,X=Y===null?null:setTimeout(()=>Y.abort(Error(`@gjsify/npm-registry: per-request timeout ${I}ms`)),I),te=composeSignals(a.signal,Y?.signal);try{let S=await C(n,{...a,signal:te}),F=isRetryableStatus(S.status)||H&&S.status===404;if(S.ok||!F||W>=N)return S;try{await S.arrayBuffer()}catch{}K=Error(`HTTP ${S.status} ${S.statusText}`)}catch(S){let C=Y!==null&&Y.signal.aborted,F=a.signal?.aborted===!0;if(C&&!F){if(q++,W>=N)throw new RegistryTimeoutError(n,I,q);K=S}else if(F)throw signalAbortError(a.signal);else{if(!isRetryableError(S)||W>=N)throw S;K=S}}finally{X!==null&&clearTimeout(X)}let ne=Math.min(F*2**W,8e3);S.onRetry?.({attempt:W+1,error:K,delayMs:ne}),await delay$1(ne,a.signal),W++}}function composeSignals(n,a){return n?a?AbortSignal.any([n,a]):n:a}function isRetryableStatus(n){return n===408||n===425||n===429||n===500||n===502||n===503||n===504||n===521||n===522||n===524||n===525}function isRetryableError(n){if(n&&typeof n==`object`&&`name`in n&&n.name===`AbortError`)return!1;if(n instanceof TypeError)return!0;if(n&&typeof n==`object`&&`name`in n){let a=n.name;if(a===`FetchError`)return!0;if(a===`AbortError`)return!1}let a=n?.cause;if(a&&typeof a==`object`&&`code`in a){let n=a.code;if(typeof n==`string`)return n===`ECONNRESET`||n===`ECONNREFUSED`||n===`ENETUNREACH`||n===`ENOTFOUND`||n===`ETIMEDOUT`||n===`EAI_AGAIN`||n===`UND_ERR_SOCKET`||n===`UND_ERR_CONNECT_TIMEOUT`}return!1}function delay$1(n,a){return n<=0?Promise.resolve():new Promise((S,C)=>{let N=setTimeout(()=>{a?.removeEventListener?.(`abort`,onAbort),S()},n),onAbort=()=>{clearTimeout(N),C(signalAbortError(a))};if(a?.aborted){clearTimeout(N),C(signalAbortError(a));return}a?.addEventListener?.(`abort`,onAbort,{once:!0})})}function signalAbortError(n){let a=n&&`reason`in n?n.reason:void 0;if(a instanceof Error)return a;let S=Error(`Aborted`);return S.name=`AbortError`,S}var DN=__esmMin(()=>{wN(),__name$1(delay$1,`delay`)});async function verifyIntegrity(n,a){let S=a.trim().split(/\s+/);for(let a of S){let S=a.indexOf(`-`);if(S<0)continue;let C=a.slice(0,S).toLowerCase(),N=a.slice(S+1),F=globalThis.crypto?.subtle;if(!F)throw Error(`@gjsify/npm-registry: globalThis.crypto.subtle is missing`);let I=subriToWebCryptoAlgo(C);if(!I)continue;let H=await F.digest(I,dataAsArrayBuffer(n));if(bytesToBase64(new Uint8Array(H))===N)return!0}return!1}function subriToWebCryptoAlgo(n){switch(n){case`sha1`:return`SHA-1`;case`sha256`:return`SHA-256`;case`sha384`:return`SHA-384`;case`sha512`:return`SHA-512`;default:return null}}function dataAsArrayBuffer(n){if(n.byteOffset===0&&n.byteLength===n.buffer.byteLength)return n.buffer;let a=new Uint8Array(n.byteLength);return a.set(n),a.buffer}function bytesToBase64(n){let a=``;for(let S=0;S<n.length;S++)a+=String.fromCharCode(n[S]);return btoa(a)}var ON=__esmMin(()=>{});function assertPackument(n,a){if(!a||typeof a!=`object`)throw TypeError(`registry: ${n} packument is not an object`);let S=a;if(typeof S.name!=`string`)throw TypeError(`registry: ${n} packument missing string name`);if(!S.versions||typeof S.versions!=`object`)throw TypeError(`registry: ${n} packument missing versions map`)}function packumentUrl(n,a){let S=ensureTrailingSlash$1(a);if(n.startsWith(`@`)){let a=n.indexOf(`/`);if(a<0)throw TypeError(`Invalid scoped package name: ${n}`);let C=n.slice(0,a),N=n.slice(a+1);return`${S}${encodeURIComponent(C)}/${encodeURIComponent(N)}`}return`${S}${encodeURIComponent(n)}`}async function fetchPackumentConditional(n,a={}){let S=packumentUrl(n,a.registry??registryFor(n,a.npmrc)),C=buildHeaders(S,{...a,acceptEncoding:`gzip`});C.accept??=a.fullMetadata?`application/json`:`application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*`,a.ifNoneMatch&&(C[`if-none-match`]=a.ifNoneMatch);let N=await fetchWithRetry(S,{headers:C,signal:a.signal},{fetch:a.fetch,retries:a.retries,retryDelayMs:a.retryDelayMs,timeoutMs:a.timeoutMs,onRetry:a.onRetry});if(N.status===304){try{await N.arrayBuffer()}catch{}return{status:`not-modified`,etag:a.ifNoneMatch}}if(!N.ok)throw N.status===404||N.status===406?new PackageNotFoundError(n,S):Error(`registry GET ${S} -> ${N.status} ${N.statusText}`);let F=N.headers.get(`etag`)??void 0,I=await decodeJsonBody(N);return assertPackument(n,I),{status:`fresh`,packument:I,etag:F}}async function decodeJsonBody(n){return n.json()}async function fetchPackument(n,a={}){let S=await fetchPackumentConditional(n,a);if(!S.packument)throw Error(`registry: ${n} returned 304 Not Modified to an unconditional request`);return S.packument}var kN=__esmMin(()=>{CN(),wN(),EN(),DN()});async function fetchTarball(n,a={}){let S=buildHeaders(n,{...a,acceptEncoding:`identity`});S.accept??=`application/octet-stream`;let C=await fetchWithRetry(n,{headers:S,signal:a.signal},{fetch:a.fetch,retries:a.retries,retryDelayMs:a.retryDelayMs,timeoutMs:a.timeoutMs,onRetry:a.onRetry,retryNotFound:a.retryNotFound??!0});if(!C.ok)throw Error(`tarball GET ${n} -> ${C.status} ${C.statusText}`);let N=new Uint8Array(await C.arrayBuffer());if(a.integrity&&!await verifyIntegrity(N,a.integrity))throw new IntegrityError(n,a.integrity);return N}var AN=__esmMin(()=>{CN(),wN(),DN(),ON()});async function whoami(n,a){let S=`${ensureTrailingSlash$1(n)}-/whoami`,C=buildHeaders(S,{npmrc:a});C.accept=`application/json`;let N=globalThis.fetch;if(!N)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let F=await N(S,{method:`GET`,headers:C});if(!F.ok)throw Error(`whoami GET ${S} -> ${F.status} ${F.statusText}`);let I=await F.json();if(I&&typeof I==`object`&&`username`in I){let n=I.username;if(typeof n==`string`&&n.length>0)return{username:n}}return{}}var jN=__esmMin(()=>{CN(),EN()}),MN=__esmMin(()=>{CN(),EN(),kN(),AN(),jN()});function parseTar(n){let a=[],S=null,C=null,N=null,F=0;for(;F+512<=n.length;){let I=n.subarray(F,F+512);if(allZeros(I)){let a=n.subarray(F+512,F+2*512);if(a.length===512&&allZeros(a))break;F+=512;continue}if(!validateChecksum(I))throw new TarParseError(`Bad header checksum at offset ${F} — file is not a valid tar archive`);let H=readString(I,0,100),W=parseOctal(I,100,8),K=parseOctal(I,124,12),q=parseOctal(I,136,12),Y=String.fromCharCode(I[156]||0),X=readString(I,157,100),te=readString(I,257,6),ne=readString(I,345,155),re=readString(I,265,32),ie=readString(I,297,32);F+=512;let ae=n.subarray(F,F+K);if(F+=alignToBlock(K),Y===`x`){S=parsePaxRecords(ae);continue}if(Y===`g`)continue;if(Y===`L`){C=bytesToString(ae).replace(/\0+$/,``);continue}if(Y===`K`){N=bytesToString(ae).replace(/\0+$/,``);continue}let oe=H;te===`ustar`&&ne!==``&&(oe=`${ne}/${H}`),C!==null&&(oe=C,C=null);let Z=X;if(N!==null&&(Z=N,N=null),S!==null){let C=S.get(`path`);C!==void 0&&(oe=C);let N=S.get(`linkpath`);N!==void 0&&(Z=N);let I=S.get(`size`);if(I!==void 0){let C=Number(I);if(Number.isFinite(C)){let N=F-alignToBlock(K),I=n.subarray(N,N+C);F=N+alignToBlock(C),S=null,a.push(buildEntry(oe,Z,Y,W,q,re,ie,I));continue}}S=null}a.push(buildEntry(oe,Z,Y,W,q,re,ie,ae))}return a}function buildEntry(n,a,S,C,N,F,I,H){return{name:n,linkname:a,type:typeflagToType(S,n),mode:C,mtime:N,body:H,uname:F,gname:I}}function typeflagToType(n,a){switch(n){case`0`:case`\0`:case``:return a.endsWith(`/`)?`directory`:`file`;case`1`:return`hardlink`;case`2`:return`symlink`;case`5`:return`directory`;case`x`:return`pax-header`;case`g`:return`pax-global`;case`L`:return`gnu-longname`;case`K`:return`gnu-longlink`;default:return`unknown`}}function parsePaxRecords(n){let a=new Map,S=0;for(;S<n.length;){let C=S;for(;C<n.length&&n[C]!==32;)C++;if(C>=n.length)break;let N=bytesToString(n.subarray(S,C)),F=Number(N);if(!Number.isFinite(F)||F<=0)break;let I=S+F;if(I>n.length)break;let H=bytesToString(n.subarray(C+1,I-1)),W=H.indexOf(`=`);if(W>0){let n=H.slice(0,W),S=H.slice(W+1);a.set(n,S)}S=I}return a}function readString(n,a,S){let C=a,N=a+S;for(;C<N&&n[C]!==0;)C++;return bytesToString(n.subarray(a,C))}function bytesToString(n){return new TextDecoder(`utf-8`,{fatal:!1}).decode(n)}function parseOctal(n,a,S){if(S>0&&n[a]&128){let C=n[a]&127;for(let N=1;N<S;N++)C=C*256+n[a+N];return C}let C=``;for(let N=0;N<S;N++){let S=n[a+N];S===0||S===32||(C+=String.fromCharCode(S))}return C===``?0:parseInt(C,8)}function alignToBlock(n){return Math.ceil(n/512)*512}function allZeros(n){for(let a=0;a<n.length;a++)if(n[a]!==0)return!1;return!0}function validateChecksum(n){let a=parseOctal(n,148,8),S=0,C=0;for(let a=0;a<512;a++){let N=a>=148&&a<156?32:n[a];S+=N,C+=N>127?N-256:N}return a===S||a===C}var TarParseError,NN=__esmMin(()=>{TarParseError=class extends Error{constructor(n){super(n),this.name=`TarParseError`}}});function createTarball(n){let a=[];for(let S of n){if(`directory`in S&&S.directory===!0){a.push(buildHeader(ensureTrailingSlash(S.name),0,`5`,S.mode??493,S.mtime??0));continue}let n=S,C=typeof n.body==`string`?new TextEncoder().encode(n.body):n.body,N=n.mode??defaultFileMode(C);a.push(buildHeader(n.name,C.byteLength,`0`,N,n.mtime??0)),a.push(C);let F=padTo512(C.byteLength);F>0&&a.push(new Uint8Array(F))}return a.push(new Uint8Array(512*2)),concatChunks(a)}function buildHeader(n,a,S,C,N){let{prefix:F,basename:I}=splitPathForUstar(n),H=new Uint8Array(512);writeAscii(H,I,0,100),writeOctal(H,C&4095,100,7),H[107]=0,writeOctal(H,0,108,7),H[115]=0,writeOctal(H,0,116,7),H[123]=0,writeOctal(H,a,124,11),H[135]=0,writeOctal(H,N,136,11),H[147]=0;for(let n=148;n<156;n++)H[n]=32;H[156]=S.charCodeAt(0),writeAscii(H,`ustar\0`,257,6),writeAscii(H,`00`,263,2),F&&writeAscii(H,F,345,155);let W=0;for(let n=0;n<512;n++)W+=H[n];return writeAscii(H,W.toString(8).padStart(6,`0`),148,6),H[154]=0,H[155]=32,H}function splitPathForUstar(n){if(n.length<=100)return{prefix:``,basename:n};if(n.length>255)throw Error(`createTarball: path too long (${n.length} > 255 chars): ${n}`);for(let a=Math.min(n.length-1,155);a>0;a--)if(n[a]===`/`&&n.length-a-1<=100)return{prefix:n.slice(0,a),basename:n.slice(a+1)};throw Error(`createTarball: cannot split path into ustar prefix+basename (basename slot is 100 chars): ${n}`)}function writeAscii(n,a,S,C){let N=new TextEncoder().encode(a);if(N.length>C)throw Error(`createTarball: field too long (${N.length} > ${C}): "${a}"`);n.set(N,S)}function writeOctal(n,a,S,C){writeAscii(n,a.toString(8).padStart(C,`0`),S,C)}function padTo512(n){let a=n%512;return a===0?0:512-a}function ensureTrailingSlash(n){return n.endsWith(`/`)?n:`${n}/`}function defaultFileMode(n){return n.length>=2&&n[0]===35&&n[1]===33?493:420}function concatChunks(n){let a=0;for(let S of n)a+=S.byteLength;let S=new Uint8Array(a),C=0;for(let a of n)S.set(a,C),C+=a.byteLength;return S}var PN=__esmMin(()=>{});async function extractTarball(n,a,S={}){let C=n instanceof Uint8Array?n:new Uint8Array(n),N=parseTar(S.gzip??(C.length>=2&&C[0]===31&&C[1]===139)?await gunzip(C):C);mkdirSync(a,{recursive:!0});let F=S.strip??1,I=S.preventEscape??!0,H={files:[],directories:[],symlinks:[],skipped:0};for(let n of N){let C=stripComponents(n.name,F);if(C===null||C===``){H.skipped++;continue}let N=ms(a,C);if(I&&!isInside$1(N,a))throw Error(`tar: refusing to extract ${n.name} outside ${a} (resolved=${N})`);if(S.filter&&!S.filter(n,N)){H.skipped++;continue}if(n.type===`directory`){mkdirSync(N,{recursive:!0}),H.directories.push(N);continue}if(n.type===`file`){mkdirSync(bs(N),{recursive:!0}),writeFileSync(N,n.body);let a=S.chmod?.(n,N)??n.mode&511;if(a>0)try{chmodSync(N,a)}catch{}H.files.push(N);continue}if(n.type===`symlink`){mkdirSync(bs(N),{recursive:!0});try{symlinkSync(n.linkname,N),H.symlinks.push(N)}catch{writeFileSync(N,n.linkname),H.files.push(N)}continue}H.skipped++}return H}async function gunzip(n){let a=globalThis.DecompressionStream;if(typeof a!=`function`)throw Error(`@gjsify/tar: globalThis.DecompressionStream is not available — import '@gjsify/compression-streams/register' on GJS to register it`);return drainStream(new Blob([new Uint8Array(n)]).stream().pipeThrough(new a(`gzip`)))}async function gzip(n){let a=globalThis.CompressionStream;if(typeof a!=`function`)throw Error(`@gjsify/tar: globalThis.CompressionStream is not available — import '@gjsify/compression-streams/register' on GJS to register it`);return drainStream(new Blob([new Uint8Array(n)]).stream().pipeThrough(new a(`gzip`)))}async function drainStream(n){let a=[],S=0,C=n.getReader();for(;;){let{value:n,done:N}=await C.read();if(N)break;let F=n instanceof Uint8Array?n:new Uint8Array(n);a.push(F),S+=F.length}let N=new Uint8Array(S),F=0;for(let n of a)N.set(n,F),F+=n.length;return N}function stripComponents(n,a){if(a<=0)return n;let S=n.split(`/`).filter(n=>n!==``);return S.length<=a?null:S.slice(a).join(`/`)}function isInside$1(n,a){let S=vs(a,n);return S!==``&&!S.startsWith(`..`)&&!gs(S)}var FN=__esmMin(()=>{NN(),gl(),Os(),__name$1(isInside$1,`isInside`)}),IN=__exportAll$4({BLOCK_SIZE:()=>512,TarParseError:()=>TarParseError,createTarball:()=>createTarball,extractTarball:()=>extractTarball,gunzip:()=>gunzip,gzip:()=>gzip,parseTar:()=>parseTar}),LN=__esmMin(()=>{NN(),PN(),FN()});function gjsifyCacheRoot(n,a){let S=process.env.XDG_CACHE_HOME;return _s(S&&S.length>0?S:_s(homedir(),`.cache`),`gjsify`,n,a)}function atomicWrite(n,a){try{atomicWriteStrict(n,a)}catch{}}function atomicWriteStrict(n,a){mkdirSync(_s(n,`..`),{recursive:!0});let S=`${n}.tmp.${process.pid}`;writeFileSync(S,a),renameSync(S,n)}function readCacheFile(n){if(!existsSync(n))return null;try{let a=readFileSync(n);return a.length===0?null:a}catch{return null}}var RN=__esmMin(()=>{gl(),um(),Os()});function staleMs(){let n=process.env.GJSIFY_INSTALL_LOCK_STALE_MS;if(n!==void 0){let a=Number(n);if(Number.isFinite(a)&&a>0)return a}return VN}function lockingDisabled(){let n=process.env.GJSIFY_INSTALL_LOCK;if(n===void 0)return!1;let a=n.trim();return a===`0`||a===`false`}function isPidAlive(n){if(existsSync(`/proc/self`))return existsSync(`/proc/${n}`);try{return process.kill(n,0),!0}catch(n){return n.code===`EPERM`}}function mtimeMs(n){try{return statSync(n).mtimeMs}catch{return null}}function assessLock(n){let a=_s(n,BN),S=null;try{S=JSON.parse(readFileSync(a,`utf-8`))}catch{S=null}let C=Date.now();if(S&&typeof S.pid==`number`){if(!isPidAlive(S.pid))return{stale:!0,reason:`owner pid ${S.pid} is gone`,ownerPid:S.pid};let n=typeof S.startedAt==`number`?S.startedAt:mtimeMs(a);return n!==null&&C-n>staleMs()?{stale:!0,reason:`owner pid ${S.pid} exceeded the ${staleMs()}ms staleness budget`,ownerPid:S.pid}:{stale:!1,ownerPid:S.pid}}let N=mtimeMs(n);return N===null?{stale:!1}:C-N>HN?{stale:!0,reason:`no owner recorded within the acquire grace period`}:{stale:!1}}function stealStaleLock(n){let a=`${n}.stale-${process.pid}-${++KN}`;try{renameSync(n,a)}catch{return!1}try{rmSync(a,{recursive:!0,force:!0})}catch{}return!0}function abortErr(n){let a=n&&`reason`in n?n.reason:void 0;if(a instanceof Error)return a;let S=Error(`Aborted`);return S.name=`AbortError`,S}function delay(n,a){return n<=0?Promise.resolve():new Promise((S,C)=>{let onAbort=()=>{clearTimeout(N),C(abortErr(a))},N=setTimeout(()=>{a?.removeEventListener?.(`abort`,onAbort),S()},n);if(a?.aborted){clearTimeout(N),C(abortErr(a));return}a?.addEventListener?.(`abort`,onAbort,{once:!0})})}function makeHandle(n){let a=!1;return{release(){if(a)return;a=!0;let S=GN.get(n);if(S&&(S.count--,!(S.count>0))){GN.delete(n);try{let a=JSON.parse(readFileSync(_s(n,BN),`utf-8`));if(a.nonce!==void 0&&a.nonce!==S.nonce)return}catch{}try{rmSync(n,{recursive:!0,force:!0})}catch{}}}}}async function acquireInstallLock(n,a={}){if(lockingDisabled())return{release(){}};let S;try{S=realpathSync(n)}catch{S=ms(n)}let C=_s(S,`node_modules`,zN),N=GN.get(C);if(N)return N.count++,makeHandle(C);mkdirSync(bs(C),{recursive:!0});let F=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,I=UN,H=!1;for(;;){if(a.signal?.aborted)throw abortErr(a.signal);try{return mkdirSync(C),writeFileSync(_s(C,BN),JSON.stringify({pid:process.pid,nonce:F,startedAt:Date.now()})),GN.set(C,{count:1,nonce:F}),makeHandle(C)}catch(n){if(n.code!==`EEXIST`)throw n}let n=assessLock(C);if(n.stale){stealStaleLock(C)&&ge.warn(`gjsify install: removed stale install lock (${n.reason}) — ${C}`);continue}if(!H){H=!0;let a=n.ownerPid===void 0?``:` (pid ${n.ownerPid})`;ge.warn(`gjsify install: waiting for a concurrent install${a} to release ${C} …`)}await delay(I,a.signal),I=Math.min(Math.round(I*1.6),WN)}}var zN,BN,VN,HN,UN,WN,GN,KN,qN=__esmMin(()=>{_e(),gl(),Os(),zN=`.gjsify-install-lock`,BN=`owner.json`,VN=35*6e4,HN=15e3,UN=150,WN=1e3,GN=new Map,KN=0});function cacheRoot$1(){return gjsifyCacheRoot(`tarballs`,JN)}function parseSri$1(n){if(!n)return null;let a=n.indexOf(`-`);if(a<=0||a===n.length-1)return null;let S=n.slice(0,a),C=n.slice(a+1).replace(/=+$/,``),N=Ke.from(C,`base64`).toString(`hex`);return N.length<4?null:{algorithm:S,hex:N}}function pathFor$1(n){let a=parseSri$1(n);if(!a)return null;let S=a.hex.slice(0,2);return _s(cacheRoot$1(),a.algorithm,S,`${a.hex}.tgz`)}function getCachedTarball(n){let a=pathFor$1(n);return a?readCacheFile(a):null}function putCachedTarball(n,a){let S=pathFor$1(n);S&&(existsSync(S)||atomicWrite(S,a))}function npmCacacheContentDir(){let n=process.env.GJSIFY_NPM_CACHE;if(n!==void 0){let a=n.trim();return a===``||a===`0`||a===`false`?null:_s(a.endsWith(`_cacache`)?a:_s(a,`_cacache`),`content-v2`)}let a=process.env.npm_config_cache;return _s(a&&a.length>0?a:_s(homedir(),`.npm`),`_cacache`,`content-v2`)}function npmCachePathFor(n){let a=npmCacacheContentDir();if(!a)return null;let S=parseSri$1(n);return S?_s(a,S.algorithm,S.hex.slice(0,2),S.hex.slice(2,4),S.hex.slice(4)):null}function getForeignCachedTarball(n){let a=npmCachePathFor(n);return a?readCacheFile(a):null}var JN,YN=__esmMin(()=>{tt(),gl(),um(),Os(),RN(),JN=`v1`,__name$1(cacheRoot$1,`cacheRoot`),__name$1(parseSri$1,`parseSri`),__name$1(pathFor$1,`pathFor`)});function isEnabled(){let n=process.env.GJSIFY_PACKUMENT_CACHE;if(n===void 0)return!0;let a=n.trim();return!(a===`0`||a===`false`||a===``)}function cacheRoot(){return gjsifyCacheRoot(`metadata`,XN)}function shardFor(n){let a=2166136261;for(let S=0;S<n.length;S++)a^=n.charCodeAt(S),a=Math.imul(a,16777619);return(a>>>0&255).toString(16).padStart(2,`0`)}function encodePart(n){return encodeURIComponent(n).replace(/\*/g,`%2A`)}function packumentCacheKey(n,a,S){return`${S},${encodePart(n)},${encodePart(a)}`}function pathFor(n,a,S){if(!isEnabled())return null;let C=packumentCacheKey(n,a,S);return _s(cacheRoot(),shardFor(C),`${C}.json`)}function getCachedPackument(n,a,S=`corgi`){let C=pathFor(n,a,S);if(!C)return null;let N=readCacheFile(C);if(!N)return null;try{let n=JSON.parse(N.toString(`utf-8`));return typeof n.etag!=`string`||!n.etag||!n.packument||typeof n.packument!=`object`?null:{etag:n.etag,packument:n.packument}}catch{return null}}function putCachedPackument(n,a,S,C,N=`corgi`){if(!S)return;let F=pathFor(n,a,N);F&&atomicWrite(F,JSON.stringify({etag:S,packument:C}))}var XN,ZN=__esmMin(()=>{Os(),RN(),XN=`v3`});function parseNodeMajor(n){return Number.parseInt(String(n).split(`.`,1)[0]??``,10)}function nativeBackendNodeError(n,a){if(!a)return null;let S=parseNodeMajor(n);return!Number.isFinite(S)||S>=24?null:`gjsify install (native backend) requires Node ≥ 24, but this is Node ${n}. Its prebuilt native modules are ABI-locked to Node 24 and crash on older majors. Use Node 24 (nvm/asdf locally, actions/setup-node in CI), or run with --backend npm.`}function onRealNode(){return gjsSystemVersion()===void 0?isNode():!1}function assertNativeBackendNodeVersion(){let n=nativeBackendNodeError(process.versions.node,onRealNode());if(n)throw Error(n)}var QN=__esmMin(()=>{Tm()});function parseShebang(n){let a=$N.exec(n.trim());return a?{variables:a[1]??``,prog:a[2]??``,args:a[3]??``}:null}function replaceDollarWithPercentPair(n){return n.replace(/\$\{?([^$@#?\- \t{}:]+)\}?/g,(n,a)=>`%${a}%`)}function convertToSetCommands(n){let a=``;for(let S of n.split(` `)){let n=S.indexOf(`=`);if(n<=0)continue;let C=S.slice(0,n).trim(),N=S.slice(n+1).trim();C&&N&&(a+=`@SET ${C}=${replaceDollarWithPercentPair(N)}\r\n`)}return a}function buildCmdShim(n,a){let S=n.split(`\\`).join(`/`),C=S.split(`/`).join(`\\`),N=S,F=a?.prog??``,I=a?.args??``,H=a?.variables??``,W=F?F.split(`\\`).join(`/`):``,K=W?`"${W}$exe"`:``,q=``,Y=``,X=``;F?(q=`"%dp0%\\${F}.exe"`,Y=`"$basedir/${F}"`,X=`"$basedir/${F}$exe"`,C=`"%dp0%\\${C}"`,S=`"$basedir_win/${S}"`,N=`"$basedir/${N}"`):(F=`"%dp0%\\${C}"`,W=`"$basedir/${S}"`,K=W,I=``,C=``,S=``,N=``);let te;if(q){let n=I.trim();te=eP+convertToSetCommands(H)+`\r
778
+ `),a.update(`script:${n.script}\n`);for(let S of n.args??[])a.update(`arg:${S}\n`);for(let S of Object.keys(n.toolchain).sort())a.update(`tool:${S}@${n.toolchain[S]}\n`);a.update(`self:${n.ownHash}\n`);let S=n.depHashes instanceof Map?n.depHashes:new Map(Object.entries(n.depHashes));for(let n of[...S.keys()].sort())a.update(`dep:${n} ${S.get(n)}\n`);return a.digest(`hex`).slice(0,32)}function resolveToolchainVersions(n){let a={};for(let S of eN){let C=`none`;try{let a=readFileSync(_s(n,`node_modules`,...S.split(`/`),`package.json`),`utf-8`),N=JSON.parse(a);typeof N.version==`string`&&(C=N.version)}catch{}S===`@gjsify/cli`&&C===`none`&&(C=readOwnCliVersion()??`none`),a[S]=C}return a}function readOwnCliVersion(){try{let n=bs(fileURLToPath(import.meta.url));for(let a=0;a<4;a++){let a=_s(n,`package.json`);if(existsSync(a)){let n=JSON.parse(readFileSync(a,`utf-8`));if(n.name===`@gjsify/cli`&&typeof n.version==`string`)return n.version}n=bs(n)}}catch{}return null}function copyDirRecursive(n,a){mkdirSync(a,{recursive:!0});for(let S of readdirSync(n).sort()){let C=_s(n,S),N=_s(a,S),F=lstatSync(C);if(F.isSymbolicLink())replicateLinkSync(C,N);else if(F.isDirectory())copyDirRecursive(C,N);else if(F.isFile()){copyFileSync(C,N);try{chmodSync(N,F.mode&511)}catch{}}}}function buildCacheEntryDir(n,a,S){return _s(n,sanitizePackageDirName(a),S)}function readCacheEntry(n,a,S){let C=_s(tN(n,a,S),`manifest.json`);try{let N=JSON.parse(readFileSync(C,`utf-8`));if(N.version!==1||N.layout!==`v3`||N.package!==a||N.key!==S||!Array.isArray(N.dirs))return null;for(let C of N.dirs)if(!existsSync(_s(tN(n,a,S),`outputs`,C)))return null;return N}catch{return null}}function storeCacheEntry(n,a,S,C,N){let F=tN(n,a.name,S),I=`${F}.tmp-${process.pid}`;try{rmSync(I,{recursive:!0,force:!0}),mkdirSync(_s(I,`outputs`),{recursive:!0});for(let n of N)copyDirRecursive(_s(a.location,n),_s(I,`outputs`,n));let H=new Date().toISOString(),W={version:1,layout:`v3`,package:a.name,script:C,key:S,dirs:[...N],outputsHash:hashOutputDirs(a.location,N),createdAt:H,usedAt:H};return writeFileSync(_s(I,`manifest.json`),JSON.stringify(W,null,2)),rmSync(F,{recursive:!0,force:!0}),renameSync(I,F),pruneCacheEntries(n,a.name),W}catch{try{rmSync(I,{recursive:!0,force:!0})}catch{}return null}}function restoreCacheEntry(n,a,S){let C=tN(n,a.name,S.key);try{if(S.dirs.length>0&&hashOutputDirs(a.location,S.dirs)===S.outputsHash)return touchManifestUsed(C,S),`up-to-date`;for(let n of S.dirs){let S=_s(a.location,n);rmSync(S,{recursive:!0,force:!0}),copyDirRecursive(_s(C,`outputs`,n),S)}return touchManifestUsed(C,S),S.dirs.length>0?`restored`:`up-to-date`}catch{return null}}function touchManifestUsed(n,a){try{a.usedAt=new Date().toISOString(),writeFileSync(_s(n,`manifest.json`),JSON.stringify(a,null,2))}catch{}}function pruneCacheEntries(n,a,S=2){let C=_s(n,sanitizePackageDirName(a)),N;try{N=readdirSync(C)}catch{return}let F=[];for(let n of N){if(n.includes(`.tmp-`)){try{rmSync(_s(C,n),{recursive:!0,force:!0})}catch{}continue}let a=``;try{let S=JSON.parse(readFileSync(_s(C,n,`manifest.json`),`utf-8`));a=S.usedAt??S.createdAt??``}catch{}F.push({name:n,stamp:a})}if(!(F.length<=S)){F.sort((n,a)=>n.stamp<a.stamp?1:n.stamp>a.stamp?-1:0);for(let n of F.slice(S))try{rmSync(_s(C,n.name),{recursive:!0,force:!0})}catch{}}}function buildCacheOptedOut(n){return n.manifest.gjsify?.buildCache===!1}var $M,eN,isBuildInfo,tN,BuildCacheRunner,nN=__esmMin(()=>{_e(),xo(),gl(),Os(),rn(),R_(),QM(),$M=[`lib`,`dist`,`dist-templates`],eN=[`@gjsify/cli`,`@gjsify/tsc`,`rolldown`,`typescript`],isBuildInfo=n=>n.endsWith(`.tsbuildinfo`),tN=buildCacheEntryDir,BuildCacheRunner=class{options;cacheRoot;graph;toolchain;ownHashes=new Map;closures=new Map;keys=new Map;log;constructor(n){this.options=n,this.cacheRoot=buildCacheRoot(n.root),this.graph=buildDependencyGraph(n.workspaces,{includeDev:!0,includePeer:!0,includeOptional:!0}),this.toolchain=resolveToolchainVersions(n.root),this.log=n.log??(n=>ge.error(n));for(let a of n.targets??[])if(this.graph.byName.has(a)){this.ownHashOf(a);for(let n of this.closureOf(a))this.ownHashOf(n)}}ownHashOf(n){let a=this.ownHashes.get(n);if(a===void 0){let S=this.graph.byName.get(n);a=S?hashPackageInputs(S.location):`unknown-workspace`,this.ownHashes.set(n,a)}return a}closureOf(n){let a=this.closures.get(n);if(a===void 0){let S=new Set,C=[...this.graph.edges.get(n)??[]];for(;C.length>0;){let a=C.shift();if(!(a===n||S.has(a))){S.add(a);for(let N of this.graph.edges.get(a)??[])!S.has(N)&&N!==n&&C.push(N)}}a=[...S].sort(),this.closures.set(n,a)}return a}keyFor(n){let a=this.keys.get(n.name);if(a===void 0){let S=new Map;for(let a of this.closureOf(n.name))S.set(a,this.ownHashOf(a));a=composeCacheKey({script:this.options.script,args:this.options.args,toolchain:this.toolchain,ownHash:this.ownHashOf(n.name),depHashes:S}),this.keys.set(n.name,a)}return a}tryRestore(n){try{if(buildCacheOptedOut(n))return this.log(`[gjsify build-cache] ${n.name}: opted out (gjsify.buildCache=false) — running uncached`),!1;let a=this.keyFor(n),S=readCacheEntry(this.cacheRoot,n.name,a);if(!S||S.script!==this.options.script)return this.log(`[gjsify build-cache] ${n.name}: miss ${a} — running "${this.options.script}"`),!1;let C=restoreCacheEntry(this.cacheRoot,n,S);if(C===null)return this.log(`[gjsify build-cache] ${n.name}: entry ${a} unrestorable — running "${this.options.script}"`),!1;let N=S.dirs.length>0?S.dirs.join(`, `):`no output dirs`;return this.log(`[gjsify build-cache] ${n.name}: hit ${a} — ${C===`restored`?`restored ${N}`:`${N} up to date`} (skipped "${this.options.script}")`),!0}catch(a){return this.log(`[gjsify build-cache] ${n.name}: cache error (${a.message}) — running uncached`),!1}}snapshotOutputs(n){try{return snapshotOutputDirs(n.location)}catch{return{}}}storeAfterSuccess(n,a){try{if(buildCacheOptedOut(n))return;let S=this.keyFor(n),C=modifiedOutputDirs(n.location,a);if(storeCacheEntry(this.cacheRoot,n,S,this.options.script,C)){let a=C.length>0?C.join(`, `):`no output dirs modified`;this.log(`[gjsify build-cache] ${n.name}: stored ${S} (${a})`)}}catch(a){this.log(`[gjsify build-cache] ${n.name}: store failed (${a.message}) — continuing`)}}}});function editDistance(n,a){if(n===a)return 0;if(n.length===0)return a.length;if(a.length===0)return n.length;let S=Array.from({length:a.length+1},(n,a)=>a),C=Array.from({length:a.length+1},()=>0);for(let N=1;N<=n.length;N++){C[0]=N;for(let F=1;F<=a.length;F++){let I=n[N-1]===a[F-1]?0:1;C[F]=Math.min(S[F]+1,C[F-1]+1,S[F-1]+I)}[S,C]=[C,S]}return S[a.length]}function suggestClosest(n,a){if(a.length===0)return;let S=n.toLowerCase(),C=Math.max(2,Math.floor(n.length/3)),N,F=1/0;for(let n of a){let a=editDistance(S,n.toLowerCase());a<F&&(F=a,N=n)}return N!==void 0&&F<=C?N:void 0}var rN=__esmMin(()=>{});function collectTransitiveClosure(n,a,S){let C=new Map;for(let n of a)C.set(n.name,n);let N=new Set,F=[],I=[n];for(;I.length>0;){let n=I.pop();if(N.has(n.name))continue;N.add(n.name),F.push(n);let a=n.manifest,H=[a.dependencies,S?a.devDependencies:void 0,a.optionalDependencies];for(let n of H)if(n)for(let[a,S]of Object.entries(n)){if(typeof S!=`string`||!S.startsWith(`workspace:`))continue;let n=C.get(a);n&&(N.has(n.name)||I.push(n))}}return F}async function runOne$1(n,a,S,C,N,F){if(F&&F.tryRestore(n))return;let I=F?.snapshotOutputs(n),H=C===`gjsify`?[`run`,a,...S]:[`run`,a,...S.length>0?[`--`,...S]:[]];N&&ge.error(`[${n.name}] $ ${C} ${H.join(` `)}`);let{code:W}=await spawnToCompletion(C,H,{completion:`exit`,cwd:n.location,color:!0});if(W!==0)throw Error(`${C} ${H.join(` `)} exited with code ${W}`);F&&I&&F.storeAfterSuccess(n,I)}function detectPackageManager$1(){if(isGjs())return`gjsify`;let n=process.env.npm_config_user_agent??``;return n.startsWith(`yarn/`)?`yarn`:n.startsWith(`gjsify/`)?`gjsify`:`npm`}var iN,aN=__esmMin(()=>{_e(),YM(),R_(),B_(),nN(),Tm(),rN(),iN={command:`workspace <name> <script> [args..]`,description:"Run a workspace script. Both `workspace <name> <script>` and the yarn spelling `workspace <name> run <script>` work.",builder:n=>n.positional(`name`,{description:"Workspace name (matches package.json `name` field).",type:`string`,demandOption:!0}).positional(`script`,{description:`Script name to run inside that workspace.`,type:`string`,demandOption:!0}).positional(`args`,{description:`Extra arguments forwarded to the script.`,type:`string`,array:!0}).option(`with-dependencies`,{description:"Pre-build the target workspace's transitive workspace dependencies in topological order before running the script in the target. Deps that don't declare the script are skipped (--if-present behaviour). Replaces manual `gjsify workspace A build && gjsify workspace B build && …` chains.",type:`boolean`,alias:[`d`,`t`,`topological`],default:!1}).option(`include-dev`,{description:"When --with-dependencies is set, also walk devDependencies (production deps only by default — matches `gjsify foreach -t`).",type:`boolean`,default:!1}).option(`continue-on-error`,{description:`When --with-dependencies is set, keep running remaining deps after one fails (default: stop on first failure).`,type:`boolean`,default:!1}).option(`verbose`,{description:`Echo every spawned command before running it.`,type:`boolean`,alias:`v`,default:!1}).option(`cached`,{description:`Content-hash build cache (ADR 0006): skip the script for a workspace whose inputs (src/**, package.json, tsconfig*.json, transitive workspace deps, toolchain versions) are unchanged and restore its stored outputs instead; on miss run it and store the output dirs it modified. Also applies to the deps run via --with-dependencies. Default from GJSIFY_BUILD_CACHE=1.`,type:`boolean`}),handler:async n=>{let a=findWorkspaceRoot(process.cwd())??process.cwd(),S=discoverWorkspaces(a),C=S.find(a=>a.name===n.name);if(!C){let C=suggestClosest(n.name,S.map(n=>n.name)),N=C?` — did you mean "${C}"?`:``;return ge.error(`gjsify workspace: no workspace named "${n.name}"${N} (discovered ${S.length} workspace(s) under ${a})`),process.exit(1)}let N=detectPackageManager$1(),F=n.verbose===!0,I=n[`with-dependencies`]===!0,H=n[`continue-on-error`]===!0,W=n.script,K=n.args??[];W===`run`&&K.length>0&&([W,...K]=K);let q=C.manifest.scripts??{};if(typeof q[W]!=`string`){let a=suggestClosest(W,Object.keys(q));return ge.error(`gjsify workspace: workspace "${n.name}" has no script "${W}"`+(a?` — did you mean "${a}"?`:``)),process.exit(1)}let Y;Y=I?topologicalSort(buildDependencyGraph(collectTransitiveClosure(C,S,n[`include-dev`]===!0),{includeDev:n[`include-dev`]===!0})):[C];let X=n.cached??buildCacheEnabledByEnv()?new BuildCacheRunner({root:a,workspaces:S,script:W,args:K,targets:Y.map(n=>n.name)}):void 0,te=[];for(let n of Y){if(typeof(n.manifest.scripts??{})[W]!=`string`){F&&ge.error(`[${n.name}] (no "${W}" script — skipping)`);continue}try{await runOne$1(n,W,K,N,F,X)}catch(a){let S=a instanceof Error?a:Error(String(a));if(ge.error(`[${n.name}] ${S.message}`),!H)return process.exit(1);te.push({workspace:n.name,error:S})}}return te.length>0?(ge.error(`gjsify workspace: ${te.length} workspace(s) failed: ${te.map(n=>n.workspace).join(`, `)}`),process.exit(1)):process.exit(0)}},__name$1(runOne$1,`runOne`),__name$1(detectPackageManager$1,`detectPackageManager`)});async function runCheck(n,a){let S=[],C=detectPackageManager$1();if(C===`gjsify`&&readPackageJson$2(_s(n.location,`package.json`))?.scripts?.check===void 0)return 0;let N=C===`gjsify`?[`run`,`check`]:[`run`,`check`,`--if-present`];try{let{code:F}=await spawnToCompletion(C,N,{completion:`exit`,cwd:n.location,stdio:a===null?`inherit`:`pipe`,onSpawn:n=>{let C=!process.stdout.isTTY;if(a!==null&&n.stdout&&n.stderr){let N=`[${a}] `;S.push(prefixLines(n.stdout,process.stdout,N,C)),S.push(prefixLines(n.stderr,process.stderr,N,C))}}});for(let n of S)n();return F??1}catch{for(let n of S)n();return 1}}var oN,sN=__esmMin(()=>{_e(),HM(),YM(),z_(),Os(),um(),R_(),B_(),aN(),oN={command:`check`,description:"Run `npm run check` (TypeScript type-check) across the current workspace. In a workspace root: walks every package with a `check` script (excludes @girs/*; honours --include/--exclude). In a single package: runs the local `check` script directly. Symmetric peer of `gjsify format` / `lint` / `fix`. (Legacy system-dep `gjsify check` is now `gjsify system-check` — see #254.)",builder:n=>n.option(`include`,{description:`Only run in workspaces matching these glob patterns (repeatable).`,type:`string`,array:!0}).option(`exclude`,{description:`Skip workspaces matching these glob patterns (repeatable). Always excludes @girs/*.`,type:`string`,array:!0}).option(`parallel`,{description:`Run workspace checks in parallel (default). Use --no-parallel to run them sequentially with full per-workspace output.`,type:`boolean`,alias:`p`,default:!0}).option(`jobs`,{description:`Max parallel workers (when --parallel). Default: os.cpus().length.`,type:`number`,alias:`j`}).option(`verbose`,{description:`Log the per-workspace command before spawning.`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=findWorkspaceRoot(a);if(S&&a!==S&&readPackageJson$2(_s(a,`package.json`))?.scripts?.check){n.verbose&&ge.log(`[check] cwd=${a} → npm run check`);let{code:S}=await spawnToCompletion(detectPackageManager$1(),[`run`,`check`],{cwd:a,completion:`exit`});return process.exit(S??1)}if(!S)return ge.error("gjsify check: no workspace root found from cwd. Run inside a workspace (or a package within one) with `npm run check` defined."),process.exit(1);let C=discoverWorkspaces(S),N=[`@girs/*`,...n.exclude??[]],F=filterWorkspaces(C,{include:n.include,exclude:N}).filter(n=>n.manifest.scripts?.check!==void 0);if(F.length===0)return ge.error("gjsify check: no workspaces with a `check` script found."),process.exit(1);if(n.verbose&&ge.log(`[check] root=${S} workspaces=${F.length} parallel=${n.parallel?`yes`:`no`}`),!n.parallel){let a=0,S=0;for(let C of F){n.verbose&&ge.log(`[check] → ${C.name}`);let N=await runCheck(C,null);N!==0&&(S++,a===0&&(a=N))}return a!==0&&ge.error(`gjsify check: failures in ${S} workspace(s)`),process.exit(a)}let I=n.jobs??Math.max(1,cpus().length),H=[],W=0,K=[];for(let n=0;n<I;n++)K.push((async()=>{for(;;){let n=W++;if(n>=F.length)return;let a=F[n],S=await runCheck(a,a.name);S!==0&&H.push({name:a.name,code:S})}})());if(await Promise.all(K),H.length>0){ge.error(`\ngjsify check: ${H.length} of ${F.length} workspace(s) failed:`);for(let n of H)ge.error(` ✗ ${n.name} (exit ${n.code})`);return process.exit(1)}n.verbose&&ge.log(`\ngjsify check: ${F.length} workspace(s) green.`),process.exit(0)}}});function manifestPath(){let n=bs(fileURLToPath(import.meta.url)),a=[_s(n,`..`,`..`,`showcases.json`),_s(n,`..`,`showcases.json`)];return a.find(n=>existsSync(n))??a[0]}function discoverShowcases(){let n=manifestPath();if(!existsSync(n))return[];let a;try{a=JSON.parse(readFileSync(n,`utf-8`))}catch{return[]}if(!Array.isArray(a.showcases))return[];let S=a.showcases.map(n=>({name:n.name,packageName:n.package,category:n.category,description:n.description??``,needsWebgl:!!n.needsWebgl}));return S.sort((n,a)=>n.category.localeCompare(a.category)||n.name.localeCompare(a.name)),S}function findShowcase(n){return discoverShowcases().find(a=>a.name===n)}var cN=__esmMin(()=>{gl(),Os(),rn()});function parseSpec$1(n){if(!n)throw Error(`dlx: empty package spec`);if(n.startsWith(`./`)||n.startsWith(`../`)||gs(n)||existsSync(n))return{kind:`local`,path:ms(n)};let a=n,S,C=n.lastIndexOf(`@`);if(C>0&&(a=n.slice(0,C),S=n.slice(C+1)),!lN.test(a))throw Error(`dlx: invalid package name "${a}"`);return{kind:`registry`,name:a,version:S,spec:n}}var lN,uN=__esmMin(()=>{gl(),Os(),lN=/^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,__name$1(parseSpec$1,`parseSpec`)});function resolveGjsEntry(n,a){let S=_s(n,`package.json`);if(!existsSync(S))throw Error(`dlx: no package.json found at ${n}`);let C=JSON.parse(readFileSync(S,`utf-8`)),N=C.gjsify?.bin,F=C.gjsify?.main,I=C.main,H,W=null,K=!1;if(a!==null){if(!N||!N[a]){let S=N?Object.keys(N).join(`, `):`(none)`;throw Error(`dlx: package "${C.name??n}" has no GJS bin named "${a}" — known: ${S}`)}H=N[a],W=a}else if(N&&Object.keys(N).length===1){let n=Object.keys(N)[0];H=N[n],W=n}else F?H=F:I&&(H=I,K=!0);if(N&&Object.keys(N).length>1&&a===null){let a=Object.keys(N).join(`, `);throw Error(`dlx: package "${C.name??n}" defines multiple GJS bins — pass one of: ${a}`)}if(!H)throw Error(`dlx: package "${C.name??n}" has no GJS entry — set \`gjsify.main\` (or \`gjsify.bin\`) in its package.json`);let q=ms(n,H);if(!existsSync(q))throw Error(`dlx: GJS entry not found: ${q}`);return{bundlePath:q,binName:W,fromFallback:K}}function resolveNodeEntry(n){let a=_s(n,`package.json`);if(!existsSync(a))throw Error(`no package.json found at ${n}`);let S=JSON.parse(readFileSync(a,`utf-8`)),C=S.gjsify?.example?.node;if(C){let a=ms(n,C);if(!existsSync(a))throw Error(`declared node entry not found: ${a} (gjsify.example.node)`);return a}let N=S.gjsify?.main??(S.gjsify?.bin?Object.values(S.gjsify.bin)[0]:void 0)??S.main;if(!N)throw Error(`package "${S.name??n}" has no entry to derive a node bundle from — set \`gjsify.example.node\` to its \`--app node\` bundle path.`);let F=N.replace(/\.gjs\.(js|mjs|cjs)$/,``).replace(/\.(js|mjs|cjs)$/,``),I=[`${F}.node.mjs`,`${F}.node.js`,`${F}.node.cjs`];for(let a of I){let S=ms(n,a);if(existsSync(S))return S}throw Error(`package "${S.name??n}" has no \`--app node\` bundle — looked for ${I.join(`, `)}.\n Build one (e.g. \`gjsify build src/app.ts --app node --outfile dist/app.node.mjs\`) or set \`gjsify.example.node\` to its path.`)}var dN=__esmMin(()=>{gl(),Os()});function lexCompare(n,a){return n<a?-1:+(n>a)}function createCacheKey(n){let a=[...n.packages].sort(lexCompare),S=Object.entries(n.registries??{}).sort(([n],[a])=>lexCompare(n,a)),C=JSON.stringify([a,S]);return createHash(`sha256`).update(C).digest(`hex`)}function dlxCacheRoot(){let n=process.env.XDG_CACHE_HOME,a=_s(n&&n.length>0?n:_s(homedir(),`.cache`),`gjsify`,`dlx`);return mkdirSync(a,{recursive:!0}),a}function cacheDirFor(n){let a=_s(dlxCacheRoot(),n);return mkdirSync(a,{recursive:!0}),a}function makePrepareDir(n){let a=_s(n,`${Date.now().toString(16)}-${process.pid.toString(16)}`);return mkdirSync(a,{recursive:!0}),a}function getValidCachedPkg(n,a=pN){let S=_s(n,`pkg`),C;try{C=lstatSync(S)}catch(n){if(n.code===`ENOENT`)return;throw n}if(!C.isSymbolicLink())return;let N;try{N=realpathSync(S)}catch{return}return Date.now()-C.mtime.getTime()<=a*fN?N:void 0}function symlinkSwap(n,a,S={}){let C=S.junctions??dirLinksAreJunctions(),N=_s(n,`pkg`),F=_s(n,`pkg.tmp-${Date.now().toString(16)}-${process.pid.toString(16)}`);linkDirSync(F,a);try{C&&rmSync(N,{force:!0,recursive:!1,maxRetries:10,retryDelay:100}),renameSync(F,N)}catch(n){let S=n.code;if(S===`EBUSY`||S===`EPERM`||S===`EEXIST`||S===`EACCES`){rmSync(F,{force:!0});try{return realpathSync(N)}catch{return realpathSync(a)}}throw n}return realpathSync(N)}function resolveInstalledPkgDir(n,a){return ms(n,`node_modules`,a)}var fN,pN,mN=__esmMin(()=>{xo(),gl(),um(),Os(),QM(),fN=6e4,pN=1440*7});function makeProgressReporter(n={}){if(n.enabled===!1)return gN;let a=n.stream??process.stderr,S=!!a.isTTY;return n.enabled??!0?S?makeTtyReporter(a):makePlainReporter(a):gN}function makeTtyReporter(n){let a=0,S=``;function render(C,N=!1){let F=Date.now();!N&&F-a<33&&C===S||(a=F,S=C,n.write(`\r\x1B[2K`+C))}function clearLine(){n.write(`\r\x1B[2K`),S=``}return{beginPhase(a,S){render(formatBar(a,0,S,void 0,n.columns??80),!0)},update(a){render(formatBar(a.phase,a.current,a.total,a.name,n.columns??80))},endPhase(a){let S=hN[a];clearLine(),n.write(`gjsify install: ${S} done\n`)}}}function makePlainReporter(n){let a=0,S=0;return{beginPhase(C,N){a=Date.now(),S=0,n.write(`gjsify install: ${hN[C]} ${N} package(s)\n`)},update(C){let N=Date.now();if(N-a<_N||C.current<=S)return;a=N,S=C.current;let F=C.total>0?Math.round(C.current/C.total*100):0;n.write(`gjsify install: ${hN[C.phase]} ${C.current}/${C.total} (${F}%)\n`)},endPhase(a){n.write(`gjsify install: ${hN[a]} done\n`)}}}function formatBar(n,a,S,C,N){let F=hN[n],I=S>0?Math.min(1,a/S):0,H=`${a}/${S}`,W=`gjsify install: ${F} `,K=` ${H}`+(C?` ${C}`:``),q=Math.max(8,Math.min(40,N-W.length-K.length-4)),Y=Math.round(I*q),X=`█`.repeat(Y)+`░`.repeat(q-Y),te=`${W}[${X}]${K}`;if(te.length>N){let n=te.length-N+1,a=C&&C.length>n?C.slice(0,C.length-n-1)+`…`:``;te=`${W}[${X}] ${H}${a?` `+a:``}`}return te}var hN,gN,_N,vN=__esmMin(()=>{hN={resolve:`resolving`,download:`downloading`,extract:`extracting`,link:`linking bins`},gN={update(){},beginPhase(){},endPhase(){}},_N=5e3});function parse(n){try{return new SemVer(n)}catch{return null}}function compare(n,a){let S=n instanceof SemVer?n:new SemVer(n),C=a instanceof SemVer?a:new SemVer(a);return S.compare(C)}function satisfies(n,a){let S=a instanceof xN?a:new xN(a),C=n instanceof SemVer?n:parse(String(n));return C?S.test(C):!1}function maxSatisfying(n,a){let S=a instanceof xN?a:new xN(a),C=null;for(let a of n){let n=parse(a);!n||!S.test(n)||(C===null||n.compare(C)>0)&&(C=n)}return C?C.version:null}function testComparator(n,a){if(n.semver===null)return!0;let S=a.compare(n.semver);switch(n.operator){case``:case`=`:return S===0;case`<`:return S<0;case`<=`:return S<=0;case`>`:return S>0;case`>=`:return S>=0}}function formatComparator(n){return n.semver===null?`*`:`${n.operator}${n.semver.version}`}function parseRangePart(n){let a=n.trim();if(a===``||a===`*`||a.toLowerCase()===`latest`)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=a.match(/^\s*(\S+)\s+-\s+(\S+)\s*$/);if(S)return hyphenRange(S[1],S[2]);let C=a.replace(/(<=|>=|<|>|=)\s+(?=\S)/g,`$1`).split(/\s+/),N=[];for(let n of C)N.push(...parseSimple(n));return N}function parseSimple(n){if(n===`*`||n===``||n.toLowerCase()===`latest`)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];if(n.startsWith(`^`))return caretRange(n.slice(1));if(n.startsWith(`~`))return tildeRange(n.slice(1).replace(/^>/,``));let a=n.match(/^(<=|>=|<|>|=)\s*(.+)$/);if(a){let n=a[1];return primitiveRange(n,a[2])}return partialRange(n)}function parsePartial(n){let a=n.trim().replace(/^v/,``);if(a===``||a===`*`)return{major:null,minor:null,patch:null,pre:``,build:``};let S=``,C=``,N=a,F=N.indexOf(`+`);F>=0&&(C=N.slice(F+1),N=N.slice(0,F));let I=N.indexOf(`-`);I>=0&&(S=N.slice(I+1),N=N.slice(0,I));let H=N.split(`.`),xr=a=>{if(a===void 0||a===``||a===`x`||a===`X`||a===`*`)return null;if(!/^\d+$/.test(a))throw TypeError(`Invalid partial version: ${n}`);return Number(a)};return{major:xr(H[0]),minor:xr(H[1]),patch:xr(H[2]),pre:S,build:C}}function partialToVersion(n){return`${n.major??0}.${n.minor??0}.${n.patch??0}${n.pre?`-${n.pre}`:``}${n.build?`+${n.build}`:``}`}function partialRange(n){let a=parsePartial(n);return a.major===null?[{operator:`>=`,semver:new SemVer(`0.0.0`)}]:a.minor===null?[{operator:`>=`,semver:new SemVer(`${a.major}.0.0`)},{operator:`<`,semver:new SemVer(`${a.major+1}.0.0`)}]:a.patch===null?[{operator:`>=`,semver:new SemVer(`${a.major}.${a.minor}.0`)},{operator:`<`,semver:new SemVer(`${a.major}.${a.minor+1}.0`)}]:[{operator:`=`,semver:new SemVer(partialToVersion(a))}]}function caretRange(n){let a=parsePartial(n);if(a.major===null)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=`${a.major}.${a.minor??0}.${a.patch??0}${a.pre?`-${a.pre}`:``}`,C;return C=a.major>0||a.minor===null?`${a.major+1}.0.0`:a.minor>0||a.patch===null?`0.${a.minor+1}.0`:`0.0.${a.patch+1}`,[{operator:`>=`,semver:new SemVer(S)},{operator:`<`,semver:new SemVer(C)}]}function tildeRange(n){let a=parsePartial(n);if(a.major===null)return[{operator:`>=`,semver:new SemVer(`0.0.0`)}];let S=`${a.major}.${a.minor??0}.${a.patch??0}${a.pre?`-${a.pre}`:``}`,C=a.minor===null?`${a.major+1}.0.0`:`${a.major}.${a.minor+1}.0`;return[{operator:`>=`,semver:new SemVer(S)},{operator:`<`,semver:new SemVer(C)}]}function primitiveRange(n,a){let S=parsePartial(a);return S.major===null?[{operator:`>=`,semver:new SemVer(`0.0.0`)}]:n===`=`||n===``?partialRange(a):n===`>`?S.minor===null?[{operator:`>=`,semver:new SemVer(`${S.major+1}.0.0`)}]:S.patch===null?[{operator:`>=`,semver:new SemVer(`${S.major}.${S.minor+1}.0`)}]:[{operator:`>`,semver:new SemVer(partialToVersion(S))}]:n===`<`?S.minor===null?[{operator:`<`,semver:new SemVer(`${S.major}.0.0`)}]:S.patch===null?[{operator:`<`,semver:new SemVer(`${S.major}.${S.minor}.0`)}]:[{operator:`<`,semver:new SemVer(partialToVersion(S))}]:n===`>=`?[{operator:`>=`,semver:new SemVer(partialToVersion(S))}]:S.minor===null?[{operator:`<`,semver:new SemVer(`${S.major+1}.0.0`)}]:S.patch===null?[{operator:`<`,semver:new SemVer(`${S.major}.${S.minor+1}.0`)}]:[{operator:`<=`,semver:new SemVer(partialToVersion(S))}]}function hyphenRange(n,a){let S=parsePartial(n),C=parsePartial(a),N=S.major===null?{operator:`>=`,semver:new SemVer(`0.0.0`)}:{operator:`>=`,semver:new SemVer(`${S.major}.${S.minor??0}.${S.patch??0}${S.pre?`-${S.pre}`:``}`)},F;return F=C.major===null?{operator:`>=`,semver:new SemVer(`0.0.0`)}:C.minor===null?{operator:`<`,semver:new SemVer(`${C.major+1}.0.0`)}:C.patch===null?{operator:`<`,semver:new SemVer(`${C.major}.${C.minor+1}.0`)}:{operator:`<=`,semver:new SemVer(`${C.major}.${C.minor}.${C.patch}${C.pre?`-${C.pre}`:``}`)},[N,F]}var yN,bN,SemVer,xN,SN=__esmMin(()=>{yN=/^(0|[1-9]\d*)$/,bN=/^(\d+)\.(\d+)\.(\d+)(?:-((?:[0-9A-Za-z-]+)(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$/,SemVer=class{major;minor;patch;prerelease;build;version;constructor(n){let a=String(n).trim().replace(/^v/,``),S=bN.exec(a);if(!S)throw TypeError(`Invalid Version: ${n}`);this.major=Number(S[1]),this.minor=Number(S[2]),this.patch=Number(S[3]),this.prerelease=S[4]?S[4].split(`.`).map(n=>yN.test(n)?Number(n):n):[],this.build=S[5]?S[5].split(`.`):[],this.version=`${this.major}.${this.minor}.${this.patch}`+(this.prerelease.length?`-${this.prerelease.join(`.`)}`:``)+(this.build.length?`+${this.build.join(`.`)}`:``)}compare(n){return this.major===n.major?this.minor===n.minor?this.patch===n.patch?this.comparePre(n):this.patch<n.patch?-1:1:this.minor<n.minor?-1:1:this.major<n.major?-1:1}comparePre(n){let a=this.prerelease,S=n.prerelease;if(a.length===0&&S.length===0)return 0;if(a.length===0)return 1;if(S.length===0)return-1;for(let n=0;;n++){let C=a[n],N=S[n];if(C===void 0&&N===void 0)return 0;if(N===void 0)return 1;if(C===void 0)return-1;if(C===N)continue;let F=typeof C==`number`,I=typeof N==`number`;return F&&!I?-1:!F&&I?1:C<N?-1:1}}toString(){return this.version}},xN=class Range{raw;set;constructor(n){if(n instanceof Range){this.raw=n.raw,this.set=n.set;return}this.raw=String(n).trim();let a=this.raw.split(/\s*\|\|\s*/),S=[];for(let n of a){let a=parseRangePart(n);if(a.length===0)throw TypeError(`Invalid range: ${this.raw}`);S.push(a)}if(S.length===0)throw TypeError(`Invalid range: ${this.raw}`);this.set=S}test(n){let a=n instanceof SemVer?n:parse(String(n));if(!a)return!1;for(let n of this.set)if(n.every(n=>testComparator(n,a))){if(a.prerelease.length>0&&!n.some(n=>n.semver!==null&&n.semver.prerelease.length>0&&n.semver.major===a.major&&n.semver.minor===a.minor&&n.semver.patch===a.patch))continue;return!0}return!1}format(){return this.set.map(n=>n.map(formatComparator).join(` `)).join(` || `)}toString(){return this.format()}}});function buildHeaders(n,a){let S={"user-agent":`gjsify-install/0.28.0`,"accept-encoding":a.acceptEncoding??`identity`};if(a.npmrc){let C=resolveAuthForUrl(n,a.npmrc);C&&(S.authorization=C)}if(a.headers)for(let[n,C]of Object.entries(a.headers))S[n.toLowerCase()]=C;return S}function resolveAuthForUrl(n,a){let S=pathPrefixes(new URL(n));for(let n of S){let S=a.authTokens[n];if(S)return`Bearer ${S}`;let C=a.basicAuth[n];if(C)return`Basic ${btoa(`${C.username}:${C.password}`)}`}return null}function pathPrefixes(n){let a=n.pathname.split(`/`).filter(Boolean),S=[];for(let C=a.length;C>=0;C--){let N=a.slice(0,C).join(`/`);S.push(N?`//${n.host}/${N}`:`//${n.host}`)}return S}var CN=__esmMin(()=>{}),PackageNotFoundError,IntegrityError,RegistryTimeoutError,wN=__esmMin(()=>{PackageNotFoundError=class extends Error{name;url;constructor(n,a){super(`Package not found in registry: ${n} (${a})`),this.name=n,this.url=a,this.name=`PackageNotFoundError`}},IntegrityError=class extends Error{url;integrity;constructor(n,a){super(`Tarball integrity mismatch for ${n} (expected ${a})`),this.url=n,this.integrity=a,this.name=`IntegrityError`}},RegistryTimeoutError=class extends Error{url;timeoutMs;attempts;constructor(n,a,S){let C=Math.round(a/100)/10,N=Math.round(a*S/100)/10;super(`@gjsify/npm-registry: GET ${n} timed out after ${C}s × ${S} attempt(s) (total ~${N}s). This usually means the registry CDN is slow or unreachable.`),this.url=n,this.timeoutMs=a,this.attempts=S,this.name=`RegistryTimeoutError`}}});function registryFor(n,a){if(a&&n.startsWith(`@`)){let S=n.slice(0,n.indexOf(`/`)),C=a.scopes[S];if(C)return ensureTrailingSlash$1(C)}return a?.registry?ensureTrailingSlash$1(a.registry):TN}function parseNpmrc(n){let a={registry:TN,scopes:{},authTokens:{},basicAuth:{}},S=n.split(/\r?\n/),C={};for(let n of S){let S=n.replace(/^\s+|\s+$/g,``);if(!S||S.startsWith(`#`)||S.startsWith(`;`))continue;let N=S.indexOf(`=`);if(N<0)continue;let F=S.slice(0,N).trim(),I=expandEnv(stripQuotes(S.slice(N+1).trim()));if(F===`registry`){a.registry=ensureTrailingSlash$1(I);continue}let H=F.match(/^(@[^:]+):registry$/);if(H){a.scopes[H[1]]=ensureTrailingSlash$1(I);continue}let W=F.match(/^\/\/(.+):_authToken$/);if(W){a.authTokens[normalizeAuthHost(W[1])]=I;continue}let K=F.match(/^\/\/(.+):username$/);if(K){(C[normalizeAuthHost(K[1])]??={}).user=I;continue}let q=F.match(/^\/\/(.+):_password$/);if(q){let n=base64Decode(I);(C[normalizeAuthHost(q[1])]??={}).pass=n;continue}}for(let[n,S]of Object.entries(C))S.user&&S.pass!==void 0&&(a.basicAuth[n]={username:S.user,password:S.pass});return a}function normalizeAuthHost(n){return`//${n.replace(/\/+$/,``)}`}function ensureTrailingSlash$1(n){return n.endsWith(`/`)?n:n+`/`}function stripQuotes(n){return n.startsWith(`"`)&&n.endsWith(`"`)||n.startsWith(`'`)&&n.endsWith(`'`)?n.slice(1,-1):n}function expandEnv(n){return n.replace(/\$\{([A-Z0-9_]+)\}/gi,(n,a)=>globalThis.process?.env?.[a]??``)}function base64Decode(n){return atob(n)}var TN,EN=__esmMin(()=>{TN=`https://registry.npmjs.org/`,__name$1(ensureTrailingSlash$1,`ensureTrailingSlash`)});async function fetchWithRetry(n,a,S){let C=S.fetch??globalThis.fetch;if(!C)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let N=Math.max(0,S.retries??3),F=Math.max(0,S.retryDelayMs??250),I=Math.max(0,S.timeoutMs??3e4),H=S.retryNotFound??!1,W=0,K,q=0;for(;;){if(a.signal?.aborted)throw signalAbortError(a.signal);let Y=I>0?new AbortController:null,X=Y===null?null:setTimeout(()=>Y.abort(Error(`@gjsify/npm-registry: per-request timeout ${I}ms`)),I),te=composeSignals(a.signal,Y?.signal);try{let S=await C(n,{...a,signal:te}),F=isRetryableStatus(S.status)||H&&S.status===404;if(S.ok||!F||W>=N)return S;try{await S.arrayBuffer()}catch{}K=Error(`HTTP ${S.status} ${S.statusText}`)}catch(S){let C=Y!==null&&Y.signal.aborted,F=a.signal?.aborted===!0;if(C&&!F){if(q++,W>=N)throw new RegistryTimeoutError(n,I,q);K=S}else if(F)throw signalAbortError(a.signal);else{if(!isRetryableError(S)||W>=N)throw S;K=S}}finally{X!==null&&clearTimeout(X)}let ne=Math.min(F*2**W,8e3);S.onRetry?.({attempt:W+1,error:K,delayMs:ne}),await delay$1(ne,a.signal),W++}}function composeSignals(n,a){return n?a?AbortSignal.any([n,a]):n:a}function isRetryableStatus(n){return n===408||n===425||n===429||n===500||n===502||n===503||n===504||n===521||n===522||n===524||n===525}function isRetryableError(n){if(n&&typeof n==`object`&&`name`in n&&n.name===`AbortError`)return!1;if(n instanceof TypeError)return!0;if(n&&typeof n==`object`&&`name`in n){let a=n.name;if(a===`FetchError`)return!0;if(a===`AbortError`)return!1}let a=n?.cause;if(a&&typeof a==`object`&&`code`in a){let n=a.code;if(typeof n==`string`)return n===`ECONNRESET`||n===`ECONNREFUSED`||n===`ENETUNREACH`||n===`ENOTFOUND`||n===`ETIMEDOUT`||n===`EAI_AGAIN`||n===`UND_ERR_SOCKET`||n===`UND_ERR_CONNECT_TIMEOUT`}return!1}function delay$1(n,a){return n<=0?Promise.resolve():new Promise((S,C)=>{let N=setTimeout(()=>{a?.removeEventListener?.(`abort`,onAbort),S()},n),onAbort=()=>{clearTimeout(N),C(signalAbortError(a))};if(a?.aborted){clearTimeout(N),C(signalAbortError(a));return}a?.addEventListener?.(`abort`,onAbort,{once:!0})})}function signalAbortError(n){let a=n&&`reason`in n?n.reason:void 0;if(a instanceof Error)return a;let S=Error(`Aborted`);return S.name=`AbortError`,S}var DN=__esmMin(()=>{wN(),__name$1(delay$1,`delay`)});async function verifyIntegrity(n,a){let S=a.trim().split(/\s+/);for(let a of S){let S=a.indexOf(`-`);if(S<0)continue;let C=a.slice(0,S).toLowerCase(),N=a.slice(S+1),F=globalThis.crypto?.subtle;if(!F)throw Error(`@gjsify/npm-registry: globalThis.crypto.subtle is missing`);let I=subriToWebCryptoAlgo(C);if(!I)continue;let H=await F.digest(I,dataAsArrayBuffer(n));if(bytesToBase64(new Uint8Array(H))===N)return!0}return!1}function subriToWebCryptoAlgo(n){switch(n){case`sha1`:return`SHA-1`;case`sha256`:return`SHA-256`;case`sha384`:return`SHA-384`;case`sha512`:return`SHA-512`;default:return null}}function dataAsArrayBuffer(n){if(n.byteOffset===0&&n.byteLength===n.buffer.byteLength)return n.buffer;let a=new Uint8Array(n.byteLength);return a.set(n),a.buffer}function bytesToBase64(n){let a=``;for(let S=0;S<n.length;S++)a+=String.fromCharCode(n[S]);return btoa(a)}var ON=__esmMin(()=>{});function assertPackument(n,a){if(!a||typeof a!=`object`)throw TypeError(`registry: ${n} packument is not an object`);let S=a;if(typeof S.name!=`string`)throw TypeError(`registry: ${n} packument missing string name`);if(!S.versions||typeof S.versions!=`object`)throw TypeError(`registry: ${n} packument missing versions map`)}function packumentUrl(n,a){let S=ensureTrailingSlash$1(a);if(n.startsWith(`@`)){let a=n.indexOf(`/`);if(a<0)throw TypeError(`Invalid scoped package name: ${n}`);let C=n.slice(0,a),N=n.slice(a+1);return`${S}${encodeURIComponent(C)}/${encodeURIComponent(N)}`}return`${S}${encodeURIComponent(n)}`}async function fetchPackumentConditional(n,a={}){let S=packumentUrl(n,a.registry??registryFor(n,a.npmrc)),C=buildHeaders(S,{...a,acceptEncoding:`gzip`});C.accept??=a.fullMetadata?`application/json`:`application/vnd.npm.install-v1+json; q=1.0, application/json; q=0.8, */*`,a.ifNoneMatch&&(C[`if-none-match`]=a.ifNoneMatch);let N=await fetchWithRetry(S,{headers:C,signal:a.signal},{fetch:a.fetch,retries:a.retries,retryDelayMs:a.retryDelayMs,timeoutMs:a.timeoutMs,onRetry:a.onRetry});if(N.status===304){try{await N.arrayBuffer()}catch{}return{status:`not-modified`,etag:a.ifNoneMatch}}if(!N.ok)throw N.status===404||N.status===406?new PackageNotFoundError(n,S):Error(`registry GET ${S} -> ${N.status} ${N.statusText}`);let F=N.headers.get(`etag`)??void 0,I=await decodeJsonBody(N);return assertPackument(n,I),{status:`fresh`,packument:I,etag:F}}async function decodeJsonBody(n){return n.json()}async function fetchPackument(n,a={}){let S=await fetchPackumentConditional(n,a);if(!S.packument)throw Error(`registry: ${n} returned 304 Not Modified to an unconditional request`);return S.packument}var kN=__esmMin(()=>{CN(),wN(),EN(),DN()});async function fetchTarball(n,a={}){let S=buildHeaders(n,{...a,acceptEncoding:`identity`});S.accept??=`application/octet-stream`;let C=await fetchWithRetry(n,{headers:S,signal:a.signal},{fetch:a.fetch,retries:a.retries,retryDelayMs:a.retryDelayMs,timeoutMs:a.timeoutMs,onRetry:a.onRetry,retryNotFound:a.retryNotFound??!0});if(!C.ok)throw Error(`tarball GET ${n} -> ${C.status} ${C.statusText}`);let N=new Uint8Array(await C.arrayBuffer());if(a.integrity&&!await verifyIntegrity(N,a.integrity))throw new IntegrityError(n,a.integrity);return N}var AN=__esmMin(()=>{CN(),wN(),DN(),ON()});async function whoami(n,a){let S=`${ensureTrailingSlash$1(n)}-/whoami`,C=buildHeaders(S,{npmrc:a});C.accept=`application/json`;let N=globalThis.fetch;if(!N)throw Error(`@gjsify/npm-registry: globalThis.fetch is missing`);let F=await N(S,{method:`GET`,headers:C});if(!F.ok)throw Error(`whoami GET ${S} -> ${F.status} ${F.statusText}`);let I=await F.json();if(I&&typeof I==`object`&&`username`in I){let n=I.username;if(typeof n==`string`&&n.length>0)return{username:n}}return{}}var jN=__esmMin(()=>{CN(),EN()}),MN=__esmMin(()=>{CN(),EN(),kN(),AN(),jN()});function parseTar(n){let a=[],S=null,C=null,N=null,F=0;for(;F+512<=n.length;){let I=n.subarray(F,F+512);if(allZeros(I)){let a=n.subarray(F+512,F+2*512);if(a.length===512&&allZeros(a))break;F+=512;continue}if(!validateChecksum(I))throw new TarParseError(`Bad header checksum at offset ${F} — file is not a valid tar archive`);let H=readString(I,0,100),W=parseOctal(I,100,8),K=parseOctal(I,124,12),q=parseOctal(I,136,12),Y=String.fromCharCode(I[156]||0),X=readString(I,157,100),te=readString(I,257,6),ne=readString(I,345,155),re=readString(I,265,32),ie=readString(I,297,32);F+=512;let ae=n.subarray(F,F+K);if(F+=alignToBlock(K),Y===`x`){S=parsePaxRecords(ae);continue}if(Y===`g`)continue;if(Y===`L`){C=bytesToString(ae).replace(/\0+$/,``);continue}if(Y===`K`){N=bytesToString(ae).replace(/\0+$/,``);continue}let oe=H;te===`ustar`&&ne!==``&&(oe=`${ne}/${H}`),C!==null&&(oe=C,C=null);let Z=X;if(N!==null&&(Z=N,N=null),S!==null){let C=S.get(`path`);C!==void 0&&(oe=C);let N=S.get(`linkpath`);N!==void 0&&(Z=N);let I=S.get(`size`);if(I!==void 0){let C=Number(I);if(Number.isFinite(C)){let N=F-alignToBlock(K),I=n.subarray(N,N+C);F=N+alignToBlock(C),S=null,a.push(buildEntry(oe,Z,Y,W,q,re,ie,I));continue}}S=null}a.push(buildEntry(oe,Z,Y,W,q,re,ie,ae))}return a}function buildEntry(n,a,S,C,N,F,I,H){return{name:n,linkname:a,type:typeflagToType(S,n),mode:C,mtime:N,body:H,uname:F,gname:I}}function typeflagToType(n,a){switch(n){case`0`:case`\0`:case``:return a.endsWith(`/`)?`directory`:`file`;case`1`:return`hardlink`;case`2`:return`symlink`;case`5`:return`directory`;case`x`:return`pax-header`;case`g`:return`pax-global`;case`L`:return`gnu-longname`;case`K`:return`gnu-longlink`;default:return`unknown`}}function parsePaxRecords(n){let a=new Map,S=0;for(;S<n.length;){let C=S;for(;C<n.length&&n[C]!==32;)C++;if(C>=n.length)break;let N=bytesToString(n.subarray(S,C)),F=Number(N);if(!Number.isFinite(F)||F<=0)break;let I=S+F;if(I>n.length)break;let H=bytesToString(n.subarray(C+1,I-1)),W=H.indexOf(`=`);if(W>0){let n=H.slice(0,W),S=H.slice(W+1);a.set(n,S)}S=I}return a}function readString(n,a,S){let C=a,N=a+S;for(;C<N&&n[C]!==0;)C++;return bytesToString(n.subarray(a,C))}function bytesToString(n){return new TextDecoder(`utf-8`,{fatal:!1}).decode(n)}function parseOctal(n,a,S){if(S>0&&n[a]&128){let C=n[a]&127;for(let N=1;N<S;N++)C=C*256+n[a+N];return C}let C=``;for(let N=0;N<S;N++){let S=n[a+N];S===0||S===32||(C+=String.fromCharCode(S))}return C===``?0:parseInt(C,8)}function alignToBlock(n){return Math.ceil(n/512)*512}function allZeros(n){for(let a=0;a<n.length;a++)if(n[a]!==0)return!1;return!0}function validateChecksum(n){let a=parseOctal(n,148,8),S=0,C=0;for(let a=0;a<512;a++){let N=a>=148&&a<156?32:n[a];S+=N,C+=N>127?N-256:N}return a===S||a===C}var TarParseError,NN=__esmMin(()=>{TarParseError=class extends Error{constructor(n){super(n),this.name=`TarParseError`}}});function createTarball(n){let a=[];for(let S of n){if(`directory`in S&&S.directory===!0){a.push(buildHeader(ensureTrailingSlash(S.name),0,`5`,S.mode??493,S.mtime??0));continue}let n=S,C=typeof n.body==`string`?new TextEncoder().encode(n.body):n.body,N=n.mode??defaultFileMode(C);a.push(buildHeader(n.name,C.byteLength,`0`,N,n.mtime??0)),a.push(C);let F=padTo512(C.byteLength);F>0&&a.push(new Uint8Array(F))}return a.push(new Uint8Array(512*2)),concatChunks(a)}function buildHeader(n,a,S,C,N){let{prefix:F,basename:I}=splitPathForUstar(n),H=new Uint8Array(512);writeAscii(H,I,0,100),writeOctal(H,C&4095,100,7),H[107]=0,writeOctal(H,0,108,7),H[115]=0,writeOctal(H,0,116,7),H[123]=0,writeOctal(H,a,124,11),H[135]=0,writeOctal(H,N,136,11),H[147]=0;for(let n=148;n<156;n++)H[n]=32;H[156]=S.charCodeAt(0),writeAscii(H,`ustar\0`,257,6),writeAscii(H,`00`,263,2),F&&writeAscii(H,F,345,155);let W=0;for(let n=0;n<512;n++)W+=H[n];return writeAscii(H,W.toString(8).padStart(6,`0`),148,6),H[154]=0,H[155]=32,H}function splitPathForUstar(n){if(n.length<=100)return{prefix:``,basename:n};if(n.length>255)throw Error(`createTarball: path too long (${n.length} > 255 chars): ${n}`);for(let a=Math.min(n.length-1,155);a>0;a--)if(n[a]===`/`&&n.length-a-1<=100)return{prefix:n.slice(0,a),basename:n.slice(a+1)};throw Error(`createTarball: cannot split path into ustar prefix+basename (basename slot is 100 chars): ${n}`)}function writeAscii(n,a,S,C){let N=new TextEncoder().encode(a);if(N.length>C)throw Error(`createTarball: field too long (${N.length} > ${C}): "${a}"`);n.set(N,S)}function writeOctal(n,a,S,C){writeAscii(n,a.toString(8).padStart(C,`0`),S,C)}function padTo512(n){let a=n%512;return a===0?0:512-a}function ensureTrailingSlash(n){return n.endsWith(`/`)?n:`${n}/`}function defaultFileMode(n){return n.length>=2&&n[0]===35&&n[1]===33?493:420}function concatChunks(n){let a=0;for(let S of n)a+=S.byteLength;let S=new Uint8Array(a),C=0;for(let a of n)S.set(a,C),C+=a.byteLength;return S}var PN=__esmMin(()=>{});async function extractTarball(n,a,S={}){let C=n instanceof Uint8Array?n:new Uint8Array(n),N=parseTar(S.gzip??(C.length>=2&&C[0]===31&&C[1]===139)?await gunzip(C):C);mkdirSync(a,{recursive:!0});let F=S.strip??1,I=S.preventEscape??!0,H={files:[],directories:[],symlinks:[],skipped:0};for(let n of N){let C=stripComponents(n.name,F);if(C===null||C===``){H.skipped++;continue}let N=ms(a,C);if(I&&!isInside$1(N,a))throw Error(`tar: refusing to extract ${n.name} outside ${a} (resolved=${N})`);if(S.filter&&!S.filter(n,N)){H.skipped++;continue}if(n.type===`directory`){mkdirSync(N,{recursive:!0}),H.directories.push(N);continue}if(n.type===`file`){mkdirSync(bs(N),{recursive:!0}),writeFileSync(N,n.body);let a=S.chmod?.(n,N)??n.mode&511;if(a>0)try{chmodSync(N,a)}catch{}H.files.push(N);continue}if(n.type===`symlink`){mkdirSync(bs(N),{recursive:!0});try{symlinkSync(n.linkname,N),H.symlinks.push(N)}catch{writeFileSync(N,n.linkname),H.files.push(N)}continue}H.skipped++}return H}async function gunzip(n){let a=globalThis.DecompressionStream;if(typeof a!=`function`)throw Error(`@gjsify/tar: globalThis.DecompressionStream is not available — import '@gjsify/compression-streams/register' on GJS to register it`);return drainStream(new Blob([new Uint8Array(n)]).stream().pipeThrough(new a(`gzip`)))}async function gzip(n){let a=globalThis.CompressionStream;if(typeof a!=`function`)throw Error(`@gjsify/tar: globalThis.CompressionStream is not available — import '@gjsify/compression-streams/register' on GJS to register it`);return drainStream(new Blob([new Uint8Array(n)]).stream().pipeThrough(new a(`gzip`)))}async function drainStream(n){let a=[],S=0,C=n.getReader();for(;;){let{value:n,done:N}=await C.read();if(N)break;let F=n instanceof Uint8Array?n:new Uint8Array(n);a.push(F),S+=F.length}let N=new Uint8Array(S),F=0;for(let n of a)N.set(n,F),F+=n.length;return N}function stripComponents(n,a){if(a<=0)return n;let S=n.split(`/`).filter(n=>n!==``);return S.length<=a?null:S.slice(a).join(`/`)}function isInside$1(n,a){let S=vs(a,n);return S!==``&&!S.startsWith(`..`)&&!gs(S)}var FN=__esmMin(()=>{NN(),gl(),Os(),__name$1(isInside$1,`isInside`)}),IN=__exportAll$4({BLOCK_SIZE:()=>512,TarParseError:()=>TarParseError,createTarball:()=>createTarball,extractTarball:()=>extractTarball,gunzip:()=>gunzip,gzip:()=>gzip,parseTar:()=>parseTar}),LN=__esmMin(()=>{NN(),PN(),FN()});function gjsifyCacheRoot(n,a){let S=process.env.XDG_CACHE_HOME;return _s(S&&S.length>0?S:_s(homedir(),`.cache`),`gjsify`,n,a)}function atomicWrite(n,a){try{atomicWriteStrict(n,a)}catch{}}function atomicWriteStrict(n,a){mkdirSync(_s(n,`..`),{recursive:!0});let S=`${n}.tmp.${process.pid}`;writeFileSync(S,a),renameSync(S,n)}function readCacheFile(n){if(!existsSync(n))return null;try{let a=readFileSync(n);return a.length===0?null:a}catch{return null}}var RN=__esmMin(()=>{gl(),um(),Os()});function staleMs(){let n=process.env.GJSIFY_INSTALL_LOCK_STALE_MS;if(n!==void 0){let a=Number(n);if(Number.isFinite(a)&&a>0)return a}return VN}function lockingDisabled(){let n=process.env.GJSIFY_INSTALL_LOCK;if(n===void 0)return!1;let a=n.trim();return a===`0`||a===`false`}function isPidAlive(n){if(existsSync(`/proc/self`))return existsSync(`/proc/${n}`);try{return process.kill(n,0),!0}catch(n){return n.code===`EPERM`}}function mtimeMs(n){try{return statSync(n).mtimeMs}catch{return null}}function assessLock(n){let a=_s(n,BN),S=null;try{S=JSON.parse(readFileSync(a,`utf-8`))}catch{S=null}let C=Date.now();if(S&&typeof S.pid==`number`){if(!isPidAlive(S.pid))return{stale:!0,reason:`owner pid ${S.pid} is gone`,ownerPid:S.pid};let n=typeof S.startedAt==`number`?S.startedAt:mtimeMs(a);return n!==null&&C-n>staleMs()?{stale:!0,reason:`owner pid ${S.pid} exceeded the ${staleMs()}ms staleness budget`,ownerPid:S.pid}:{stale:!1,ownerPid:S.pid}}let N=mtimeMs(n);return N===null?{stale:!1}:C-N>HN?{stale:!0,reason:`no owner recorded within the acquire grace period`}:{stale:!1}}function stealStaleLock(n){let a=`${n}.stale-${process.pid}-${++KN}`;try{renameSync(n,a)}catch{return!1}try{rmSync(a,{recursive:!0,force:!0})}catch{}return!0}function abortErr(n){let a=n&&`reason`in n?n.reason:void 0;if(a instanceof Error)return a;let S=Error(`Aborted`);return S.name=`AbortError`,S}function delay(n,a){return n<=0?Promise.resolve():new Promise((S,C)=>{let onAbort=()=>{clearTimeout(N),C(abortErr(a))},N=setTimeout(()=>{a?.removeEventListener?.(`abort`,onAbort),S()},n);if(a?.aborted){clearTimeout(N),C(abortErr(a));return}a?.addEventListener?.(`abort`,onAbort,{once:!0})})}function makeHandle(n){let a=!1;return{release(){if(a)return;a=!0;let S=GN.get(n);if(S&&(S.count--,!(S.count>0))){GN.delete(n);try{let a=JSON.parse(readFileSync(_s(n,BN),`utf-8`));if(a.nonce!==void 0&&a.nonce!==S.nonce)return}catch{}try{rmSync(n,{recursive:!0,force:!0})}catch{}}}}}async function acquireInstallLock(n,a={}){if(lockingDisabled())return{release(){}};let S;try{S=realpathSync(n)}catch{S=ms(n)}let C=_s(S,`node_modules`,zN),N=GN.get(C);if(N)return N.count++,makeHandle(C);mkdirSync(bs(C),{recursive:!0});let F=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,I=UN,H=!1;for(;;){if(a.signal?.aborted)throw abortErr(a.signal);try{return mkdirSync(C),writeFileSync(_s(C,BN),JSON.stringify({pid:process.pid,nonce:F,startedAt:Date.now()})),GN.set(C,{count:1,nonce:F}),makeHandle(C)}catch(n){if(n.code!==`EEXIST`)throw n}let n=assessLock(C);if(n.stale){stealStaleLock(C)&&ge.warn(`gjsify install: removed stale install lock (${n.reason}) — ${C}`);continue}if(!H){H=!0;let a=n.ownerPid===void 0?``:` (pid ${n.ownerPid})`;ge.warn(`gjsify install: waiting for a concurrent install${a} to release ${C} …`)}await delay(I,a.signal),I=Math.min(Math.round(I*1.6),WN)}}var zN,BN,VN,HN,UN,WN,GN,KN,qN=__esmMin(()=>{_e(),gl(),Os(),zN=`.gjsify-install-lock`,BN=`owner.json`,VN=35*6e4,HN=15e3,UN=150,WN=1e3,GN=new Map,KN=0});function cacheRoot$1(){return gjsifyCacheRoot(`tarballs`,JN)}function parseSri$1(n){if(!n)return null;let a=n.indexOf(`-`);if(a<=0||a===n.length-1)return null;let S=n.slice(0,a),C=n.slice(a+1).replace(/=+$/,``),N=Ke.from(C,`base64`).toString(`hex`);return N.length<4?null:{algorithm:S,hex:N}}function pathFor$1(n){let a=parseSri$1(n);if(!a)return null;let S=a.hex.slice(0,2);return _s(cacheRoot$1(),a.algorithm,S,`${a.hex}.tgz`)}function getCachedTarball(n){let a=pathFor$1(n);return a?readCacheFile(a):null}function putCachedTarball(n,a){let S=pathFor$1(n);S&&(existsSync(S)||atomicWrite(S,a))}function npmCacacheContentDir(){let n=process.env.GJSIFY_NPM_CACHE;if(n!==void 0){let a=n.trim();return a===``||a===`0`||a===`false`?null:_s(a.endsWith(`_cacache`)?a:_s(a,`_cacache`),`content-v2`)}let a=process.env.npm_config_cache;return _s(a&&a.length>0?a:_s(homedir(),`.npm`),`_cacache`,`content-v2`)}function npmCachePathFor(n){let a=npmCacacheContentDir();if(!a)return null;let S=parseSri$1(n);return S?_s(a,S.algorithm,S.hex.slice(0,2),S.hex.slice(2,4),S.hex.slice(4)):null}function getForeignCachedTarball(n){let a=npmCachePathFor(n);return a?readCacheFile(a):null}var JN,YN=__esmMin(()=>{tt(),gl(),um(),Os(),RN(),JN=`v1`,__name$1(cacheRoot$1,`cacheRoot`),__name$1(parseSri$1,`parseSri`),__name$1(pathFor$1,`pathFor`)});function isEnabled(){let n=process.env.GJSIFY_PACKUMENT_CACHE;if(n===void 0)return!0;let a=n.trim();return!(a===`0`||a===`false`||a===``)}function cacheRoot(){return gjsifyCacheRoot(`metadata`,XN)}function shardFor(n){let a=2166136261;for(let S=0;S<n.length;S++)a^=n.charCodeAt(S),a=Math.imul(a,16777619);return(a>>>0&255).toString(16).padStart(2,`0`)}function encodePart(n){return encodeURIComponent(n).replace(/\*/g,`%2A`)}function packumentCacheKey(n,a,S){return`${S},${encodePart(n)},${encodePart(a)}`}function pathFor(n,a,S){if(!isEnabled())return null;let C=packumentCacheKey(n,a,S);return _s(cacheRoot(),shardFor(C),`${C}.json`)}function getCachedPackument(n,a,S=`corgi`){let C=pathFor(n,a,S);if(!C)return null;let N=readCacheFile(C);if(!N)return null;try{let n=JSON.parse(N.toString(`utf-8`));return typeof n.etag!=`string`||!n.etag||!n.packument||typeof n.packument!=`object`?null:{etag:n.etag,packument:n.packument}}catch{return null}}function putCachedPackument(n,a,S,C,N=`corgi`){if(!S)return;let F=pathFor(n,a,N);F&&atomicWrite(F,JSON.stringify({etag:S,packument:C}))}var XN,ZN=__esmMin(()=>{Os(),RN(),XN=`v3`});function parseNodeMajor(n){return Number.parseInt(String(n).split(`.`,1)[0]??``,10)}function nativeBackendNodeError(n,a){if(!a)return null;let S=parseNodeMajor(n);return!Number.isFinite(S)||S>=24?null:`gjsify install (native backend) requires Node ≥ 24, but this is Node ${n}. Its prebuilt native modules are ABI-locked to Node 24 and crash on older majors. Use Node 24 (nvm/asdf locally, actions/setup-node in CI), or run with --backend npm.`}function onRealNode(){return gjsSystemVersion()===void 0?isNode():!1}function assertNativeBackendNodeVersion(){let n=nativeBackendNodeError(process.versions.node,onRealNode());if(n)throw Error(n)}var QN=__esmMin(()=>{Tm()});function parseShebang(n){let a=$N.exec(n.trim());return a?{variables:a[1]??``,prog:a[2]??``,args:a[3]??``}:null}function replaceDollarWithPercentPair(n){return n.replace(/\$\{?([^$@#?\- \t{}:]+)\}?/g,(n,a)=>`%${a}%`)}function convertToSetCommands(n){let a=``;for(let S of n.split(` `)){let n=S.indexOf(`=`);if(n<=0)continue;let C=S.slice(0,n).trim(),N=S.slice(n+1).trim();C&&N&&(a+=`@SET ${C}=${replaceDollarWithPercentPair(N)}\r\n`)}return a}function buildCmdShim(n,a){let S=n.split(`\\`).join(`/`),C=S.split(`/`).join(`\\`),N=S,F=a?.prog??``,I=a?.args??``,H=a?.variables??``,W=F?F.split(`\\`).join(`/`):``,K=W?`"${W}$exe"`:``,q=``,Y=``,X=``;F?(q=`"%dp0%\\${F}.exe"`,Y=`"$basedir/${F}"`,X=`"$basedir/${F}$exe"`,C=`"%dp0%\\${C}"`,S=`"$basedir_win/${S}"`,N=`"$basedir/${N}"`):(F=`"%dp0%\\${C}"`,W=`"$basedir/${S}"`,K=W,I=``,C=``,S=``,N=``);let te;if(q){let n=I.trim();te=eP+convertToSetCommands(H)+`\r
776
779
  IF EXIST ${q} (\r\n SET "_prog=${q.replace(/(^")|("$)/g,``)}"\r\n) ELSE (\r
777
780
  SET "_prog=${F.replace(/(^")|("$)/g,``)}"\r\n)\r
778
781
  \r
@@ -899,10 +902,10 @@ jobs:
899
902
  --- gjsify post-install checks ---`);let n=runMinimalChecks().filter(n=>!n.found&&n.severity===`required`);if(n.length>0){ge.warn(`Missing required system dependencies:
900
903
  `);for(let a of n)ge.warn(` ✗ ${a.name}`);let a=buildInstallCommand(detectPackageManager$2(),n);a&&ge.warn(`\nInstall with:\n ${a}`)}else ge.log(`System dependencies OK.`);let a=detectNativePackages(process.cwd());if(a.length>0){ge.log(`\nDetected ${a.length} @gjsify/* package(s) with native prebuilds:`);for(let n of a)ge.log(` • ${n.name}`);ge.log("\nUse `gjsify run <bundle>` to launch with LD_LIBRARY_PATH/GI_TYPELIB_PATH set.")}maybeInstallGitHooks()}function maybeInstallGitHooks(){let n=process.cwd(),a=_s(n,`scripts`,`install-git-hooks.mjs`);if(existsSync(a)&&existsSync(_s(n,`.git`)))try{let S=spawnSync(nodeBinary(),[a,`--quiet`],{cwd:n,stdio:`inherit`,env:process.env});S.status!==0&&ge.warn(`[gjsify install] scripts/install-git-hooks.mjs exited ${S.status} — git hooks may not be active.`)}catch(n){ge.warn(`[gjsify install] git hook installation skipped: ${n instanceof Error?n.message:String(n)}`)}}var bF,xF,SF,CF,wF=__esmMin(()=>{_e(),gl(),Os(),rn(),Xm(),Tm(),R_(),zM(),CM(),rP(),vP(),RN(),qN(),DM(),YM(),B_(),yF(),AM(),bF=process.platform===`win32`?`junction`:void 0,xF=18e5,SF={command:`install [packages..]`,description:`Install npm dependencies in the current project (or globally with -g), then run gjsify-aware post-checks.`,builder:n=>n.positional(`packages`,{description:`Optional package specs. With none, runs a full project install.`,type:`string`,array:!0}).option(`global`,{description:`Install into the user-global XDG location and symlink bins into ~/.local/bin.`,type:`boolean`,alias:`g`,default:!1}).option(`save-dev`,{type:`boolean`,alias:`D`}).option(`save-peer`,{type:`boolean`}).option(`save-optional`,{type:`boolean`,alias:`O`}).option(`immutable`,{description:`CI mode: install strictly from gjsify-lock.json, fail if the lockfile is missing or stale. Equivalent to yarn --immutable / npm ci --frozen-lockfile.`,type:`boolean`,default:!1}).option(`refresh-lockfile`,{description:`Re-resolve every dependency to the newest version satisfying its range and rewrite the lockfile (bumps in-range transitive deps). Without it, a resolve preserves versions already pinned in the lockfile and only resolves new/changed deps — the npm/yarn/pnpm default. Mirrors yarn install --mode=update-lockfile.`,type:`boolean`,default:!1}).option(`verbose`,{description:`Verbose install logging.`,type:`boolean`,default:!1}).option(`quiet`,{description:`Silence the progress bar.`,type:`boolean`,default:!1}).option(`progress`,{description:`Show a TTY-aware progress bar for resolve / download / extract phases. Auto-enabled when stderr is a TTY (override with --no-progress). Implicitly off under --verbose (per-package log lines replace the bar) or --quiet.`,type:`boolean`,default:!0}).option(`backend`,{description:"Install backend. `native` (default) routes through `@gjsify/{semver,npm-registry,tar}` — no Node/npm at runtime. `npm` shells out to `npm install` as an escape hatch for cases the native backend does not yet model (Yarn PnP repos, lifecycle scripts). Overrides `GJSIFY_INSTALL_BACKEND` if both are set.",type:`string`,choices:[`native`,`npm`]}).option(`timeout`,{description:`Overall install wall-clock timeout in ms (default 1800000 = 30 min). On timeout, all in-flight registry fetches are aborted and the install exits non-zero with a clear "install timed out — likely a registry slowdown" message. Per-request timeouts in @gjsify/npm-registry (default 30s) still apply within this budget. Set to 0 to disable the overall budget.`,type:`number`,default:xF}).option(`os`,{description:"Resolve/install for this OS instead of the running one (npm config key `os`, e.g. darwin, win32, linux). Affects which packages pass the os/cpu/libc compatibility check; the lockfile stays platform-independent either way.",type:`string`}).option(`cpu`,{description:"Resolve/install for this CPU architecture instead of the running one (npm config key `cpu`, e.g. x64, arm64).",type:`string`}).option(`libc`,{description:"Resolve/install for this libc family instead of probing the host (npm config key `libc`: glibc or musl). Only meaningful with --os=linux. A package declaring a libc is incompatible when the target libc is unknown.",type:`string`}).option(`force`,{description:"Install a REQUIRED dependency even when its os/cpu/libc excludes the target, instead of failing with EBADPLATFORM (npm config key `force`). Incompatible OPTIONAL dependencies stay skipped — npm ignores --force for those too, and a binary that cannot load is not worth downloading.",type:`boolean`,default:!1}),handler:async n=>{if(applyPlatformConfigFromFlags(n),n.immutable){if(n.packages&&n.packages.length>0)return ge.error(`gjsify install --immutable does not accept package arguments. Remove the package names or drop --immutable.`),process.exit(1);if(n.global)return ge.error(`gjsify install --immutable is incompatible with --global.`),process.exit(1);if(n[`refresh-lockfile`])return ge.error(`gjsify install --immutable is incompatible with --refresh-lockfile (--immutable forbids rewriting the lockfile). Drop one.`),process.exit(1)}if(n.global){if(!n.packages||n.packages.length===0)return ge.error(`gjsify install --global requires at least one <pkg> argument.`),process.exit(1);for(let a of[`save-dev`,`save-peer`,`save-optional`])n[a]&&ge.warn(`gjsify install --global ignores --${a}: global installs do not modify a project package.json.`);await installGlobalAndLink(n.packages,{verbose:n.verbose});return}if(warnOnCliVersionSkew(process.cwd()),(n.backend??process.env.GJSIFY_INSTALL_BACKEND??`native`)===`npm`){await projectInstallViaNpm(n),await runPostInstallChecks();return}let a=n.timeout>0?n.timeout:0,S=a>0?new AbortController:null,C=S===null?null:setTimeout(()=>S.abort(Error(`install-overall-timeout`)),a),N=a>0?setTimeout(()=>{let n=Math.round(a/100)/10;ge.error(`gjsify install: the ${n}s budget elapsed and the abort did not unwind within 10s — forcing exit. That means one of two things, and this timer cannot distinguish them: the install was still WORKING (a cold tree here extracts several GB, and extraction blocks the loop in multi-second synchronous stretches), or a step genuinely wedged. Re-running tells you which, and is safe: extraction is idempotent, every package already on disk is skipped, so a second run finishes the remainder in a fraction of the time. A re-run that makes NO further progress is a real wedge — file an issue.`),forceExit(1)},a+1e4):null;N?.unref?.();try{await projectInstallNative(n,S?.signal),await runPostInstallChecks()}catch(n){if(S!==null&&S.signal.aborted&&isAbortedFromOverallTimeout(n)){let n=Math.round(a/100)/10;return ge.error(`gjsify install: timed out after ${n}s — likely a registry slowdown or a wedged extract.\nRe-run, or override with --timeout <ms> (set --timeout 0 to disable the overall budget).`),process.exit(1)}throw n}finally{C!==null&&clearTimeout(C),N!==null&&clearTimeout(N)}}},CF=`@gjsify/cli`});function readDirectChildren(n){let a;try{a=readdirSync(`/proc/${n}/task`)}catch{return null}let S=[],C=!1;for(let N of a)try{let a=readFileSync(`/proc/${n}/task/${N}/children`,`utf-8`);C=!0;for(let n of a.trim().split(/\s+/)){let a=Number(n);Number.isInteger(a)&&a>0&&S.push(a)}}catch{}return C?S:null}function buildPpidMap(){let n=new Map,a=[];try{a=readdirSync(`/proc`)}catch{return n}for(let S of a){let a=Number(S);if(!(!Number.isInteger(a)||a<=0))try{let S=readFileSync(`/proc/${a}/stat`,`utf-8`),C=S.slice(S.lastIndexOf(`)`)+2).split(` `),N=Number(C[1]);if(!Number.isInteger(N)||N<=0)continue;let F=n.get(N);F?F.push(a):n.set(N,[a])}catch{}}return n}function collectDescendants(n){let a=[],S=new Set([n]),C=[n],N=null;for(;C.length>0;){let n=C.shift(),F=readDirectChildren(n);F===null&&(N??=buildPpidMap(),F=N.get(n)??[]);for(let n of F)S.has(n)||(S.add(n),a.push(n),C.push(n))}return a}function signalTree(n,a,S){for(let n=a.length-1;n>=0;n--)try{process.kill(a[n],S)}catch{}try{n.kill(S)}catch{}}function killActiveChildren(){let n=new Map;for(let a of TF){let S=a.pid?collectDescendants(a.pid):[];n.set(a,S),signalTree(a,S,`SIGTERM`)}setTimeout(()=>{for(let a of TF){let S=new Set(a.pid?collectDescendants(a.pid):[]);for(let C of n.get(a)??[])S.add(C);signalTree(a,[...S],`SIGKILL`)}},EF).unref?.()}function assertEveryIncludeMatches(n,a){if(!a||a.length===0)return;let S=a.filter(a=>filterWorkspaces(n,{include:[a]}).length===0);if(S.length===0)return;let C=[`gjsify foreach: --include matched no workspace (${S.length} of ${a.length} pattern(s)):`];for(let a of S){C.push(` ${JSON.stringify(a)}`);let S=stripSurroundingQuotes(a);if(S!==a&&filterWorkspaces(n,{include:[S]}).length>0){C.push(` → matches as ${JSON.stringify(S)}: the QUOTES are part of the value. A shell expansion`," is not re-scanned for quoting, so a pre-quoted filter spliced through `sh -c` arrives with",` the quotes attached. Pass the bare name and let word splitting do the work.`);continue}let N=n.map(n=>n.name).filter(n=>n.toLowerCase().includes(S.replace(/\*/g,``).toLowerCase())).slice(0,3);N.length>0&&C.push(` → did you mean: ${N.join(`, `)}?`)}throw C.push(` ${n.length} workspace(s) discovered. Refusing to run: a filter that selects nothing would`,` otherwise exit 0 and look exactly like a successful run over the whole set.`),ge.error(C.join(`
901
904
  `)),process.exit(1),Error(`gjsify foreach: --include matched no workspace`)}function stripSurroundingQuotes(n){return n.length>=2&&(n[0]===`'`||n[0]===`"`)&&n[n.length-1]===n[0]?n.slice(1,-1):n}async function runSequential(n,a,S,C,N,F){for(let I of n)await runOne(I,a,S,!1,C,N,F)}async function runParallel(n,a,S,C,N,F,I){let H=0,W=[];for(let K=0;K<C;K++)W.push((async()=>{for(;H<n.length;)await runOne(n[H++],a,S,!0,N,F,I)})());await Promise.all(W)}async function runTopologicalParallel(n,a,S,C,N,F,I,H){let W=new Set(n.map(n=>n.name)),K=new Map;for(let a of n){let n=new Set,S=a.manifest;for(let a of[S.dependencies,F?S.devDependencies:void 0,S.optionalDependencies])if(a)for(let[S,C]of Object.entries(a))typeof C==`string`&&C.startsWith(`workspace:`)&&W.has(S)&&n.add(S);K.set(a.name,n)}let q=new Map(n.map(n=>[n.name,n])),Y=n.length,X=new Set,te=0,ne=!process.stdout.isTTY||N,re=new Map,ie=Number(process.env.GJSIFY_FOREACH_STALL_MINUTES??`20`),ae=(Number.isFinite(ie)&&ie>0?ie:20)*6e4;return new Promise((n,F)=>{let W=null,ie=Date.now(),describeInflight=()=>[...re.entries()].map(([n,a])=>`${n} (${Math.round((Date.now()-a)/1e3)}s)`).join(`, `),failFast=n=>{W||(W=n,killActiveChildren(),setTimeout(()=>settle(),DF).unref?.())},oe=setInterval(()=>{let n=Date.now()-ie;n<3e5||re.size===0||(ge.error(`[gjsify foreach] WARNING: no workspace completed for ${Math.round(n/6e4)}min — in-flight: ${describeInflight()}`),n>=ae&&failFast(Error(`gjsify foreach: stalled — no workspace completed for ${Math.round(n/6e4)}min (override via GJSIFY_FOREACH_STALL_MINUTES); killed in-flight: ${describeInflight()}`)))},6e4);oe.unref?.();let settle=()=>{clearInterval(oe),W?F(W):n()},pump=()=>{if(!W){for(;te<C;){let n=[...K.entries()].filter(([,n])=>[...n].every(n=>X.has(n))).map(([n])=>n);if(n.length===0)break;let C=n.sort()[0];K.delete(C),te++,re.set(C,Date.now()),ne&&ge.error(`[gjsify foreach] start ${C} (${X.size}/${Y} done, ${te} in flight)`),runOne(q.get(C),a,S,!0,N,I,H).then(()=>{X.add(C)}).catch(n=>{failFast(n instanceof Error?n:Error(String(n)))}).finally(()=>{te--,re.delete(C),ie=Date.now(),W?te===0&&settle():K.size===0&&te===0?settle():pump()})}K.size>0&&te===0&&!W&&(clearInterval(oe),F(Error(`gjsify foreach --topological: stuck — workspaces ${[...K.keys()].join(`, `)} have unsatisfied deps in the selected set`)))}};pump()})}async function runOne(n,a,S,C,N,F,I){if(F){N&&ge.error(`[${n.name}] $ ${a} ${S.join(` `)}`),await spawnPrefixed(a,S,n.location,C?`[${n.name}] `:null);return}if(I&&I.tryRestore(n))return;let H=I?.snapshotOutputs(n),W=detectPackageManager(),K=W===`gjsify`?[`run`,a,...S]:[`run`,a,...S.length>0?[`--`,...S]:[]];N&&ge.error(`[${n.name}] $ ${W} ${K.join(` `)}`),await spawnPrefixed(W,K,n.location,C?`[${n.name}] `:null),I&&H&&I.storeAfterSuccess(n,H)}function detectPackageManager(){if(isGjs())return`gjsify`;let n=process.env.npm_config_user_agent??``;return n.startsWith(`yarn/`)?`yarn`:n.startsWith(`gjsify/`)?`gjsify`:`npm`}async function spawnPrefixed(n,a,S,C){let N=null,F=[];try{let I=await spawnToCompletion(n,a,{completion:`exit`,cwd:S,stdio:C?`pipe`:`inherit`,color:!0,onSpawn:n=>{N=n,TF.add(n);let a=!process.stdout.isTTY;C&&n.stdout&&n.stderr&&(F.push(prefixLines(n.stdout,process.stdout,C,a)),F.push(prefixLines(n.stderr,process.stderr,C,a)))}});for(let n of F)n();if(I.code!==0)throw Error(`${n} ${a.join(` `)} exited with code ${I.code}`)}finally{N&&TF.delete(N)}}var TF,EF,DF,OF,kF=__esmMin(()=>{_e(),YM(),gl(),um(),R_(),B_(),HM(),nN(),Tm(),TF=new Set,EF=5e3,DF=15e3,OF={command:`foreach [script] [args..]`,description:"Run a workspace script across all (or filtered) workspaces. Drop-in for `yarn workspaces foreach`: -A/--all, -p/--parallel, -t/--topological, --include, --exclude, --no-private. Pass --exec to run an arbitrary command instead of a script.",builder:n=>n.positional(`script`,{description:"Script name to run in each workspace (`run <name>`-equivalent). With --exec, the command to run instead.",type:`string`}).positional(`args`,{description:`Extra arguments forwarded to each child invocation.`,type:`string`,array:!0}).option(`all`,{description:"Include workspaces declared as `private: true`.",type:`boolean`,alias:`A`,default:!1}).option(`parallel`,{description:`Run workspaces in parallel (capped by --jobs).`,type:`boolean`,alias:`p`,default:!1}).option(`topological`,{description:`Wait for each workspace's deps to finish before starting it (production deps only).`,type:`boolean`,alias:`t`,default:!1}).option(`topological-dev`,{description:`Like --topological but also respects devDependencies (often cyclic — use sparingly).`,type:`boolean`,default:!1}).option(`include`,{description:`Glob pattern to include workspaces by name (repeatable). A pattern that matches NO discovered workspace is a hard error — a filter selecting nothing is a typo or a caller-side quoting bug, never an intent.`,type:`string`,array:!0}).option(`exclude`,{description:`Glob pattern to exclude workspaces by name (repeatable).`,type:`string`,array:!0}).option(`private`,{description:`Include private workspaces (default true). Pass --no-private to skip them.`,type:`boolean`,default:!0}).option(`verbose`,{description:`Echo every spawned command before running it.`,type:`boolean`,alias:`v`,default:!1}).option(`jobs`,{description:`Maximum concurrent workspaces in --parallel mode (default: cpu count).`,type:`number`,alias:`j`}).option(`exec`,{description:"Treat <script> [args..] as an arbitrary command (yarn `workspaces foreach exec`-equivalent) instead of a package.json script lookup. Workspace filtering by script presence is skipped. Use `-- <cmd> <args...>` to pass flags to the command without yargs intercepting them.",type:`boolean`,default:!1}).option(`cached`,{description:`Content-hash build cache (ADR 0006): skip a workspace whose inputs (src/**, package.json, tsconfig*.json, transitive workspace deps, toolchain versions) are unchanged and restore its stored outputs instead; on miss run the script and store the output dirs it modified. Script mode only. Default from GJSIFY_BUILD_CACHE=1.`,type:`boolean`}).option(`shard`,{description:`Run only a deterministic slice "<index>/<total>" (1-based) of the matched workspaces, e.g. --shard 2/4. For fanning a long run across parallel CI jobs. Partitions by sorted name (round-robin) so the shards are disjoint and their union is the full set; order-independent, so safe for tests but NOT for ordered builds.`,type:`string`}).parserConfiguration({"populate--":!0}),handler:async n=>{let a=findWorkspaceRoot(process.cwd())??process.cwd(),S=discoverWorkspaces(a),C=n.exec===!0,N=n.script,F=n.args??[];if(!C){let a=(n[`--`]??[]).filter(n=>typeof n==`string`);a.length>0&&(F=[...F,...a])}if(C){let a=(n[`--`]??[]).filter(n=>typeof n==`string`);if(a.length>0&&(N?F=[...F,...a]:(N=a[0],F=[...F,...a.slice(1)])),!N)return ge.error("gjsify foreach --exec: missing command. Pass it after `--`, e.g. `gjsify foreach --exec -- npm publish --tag latest`."),process.exit(1)}assertEveryIncludeMatches(S,n.include);let I=filterWorkspaces(S,{include:n.include,exclude:n.exclude,noPrivate:n.private===!1});if(!C){if(!N)return ge.error(`gjsify foreach: missing <script> positional. Pass --exec to run an arbitrary command instead.`),process.exit(1);let n=N;I=I.filter(a=>typeof(a.manifest.scripts??{})[n]==`string`)}if(typeof n.shard==`string`&&n.shard.length>0){let a=/^\s*(\d+)\s*\/\s*(\d+)\s*$/.exec(n.shard);if(!a)return ge.error(`gjsify foreach: invalid --shard "${n.shard}" — expected "<index>/<total>" (1-based), e.g. 2/4.`),process.exit(1);let S=Number(a[1]),C=Number(a[2]);if(C<1||S<1||S>C)return ge.error(`gjsify foreach: invalid --shard "${n.shard}" — need 1 <= index <= total and total >= 1.`),process.exit(1);if(C>1){let n=[...I].sort((n,a)=>n.name<a.name?-1:+(n.name>a.name));I=n.filter((n,a)=>a%C===S-1),ge.log(`gjsify foreach: shard ${S}/${C} → ${I.length} of ${n.length} workspace(s)`)}}if(I.length===0){ge.log(`gjsify foreach: no workspaces match (${C?`exec`:`script`}="${N}", include=${JSON.stringify(n.include??[])}, exclude=${JSON.stringify(n.exclude??[])})`);return}(n.topological||n[`topological-dev`])&&(I=topologicalSort(buildDependencyGraph(I,{includeDev:n[`topological-dev`]===!0})));let H=n.verbose===!0,W=N,K=n.cached??buildCacheEnabledByEnv();if(n.cached===!0&&C)return ge.error(`gjsify foreach: --cached only applies to script mode, not --exec.`),process.exit(1);let q=K&&!C?new BuildCacheRunner({root:a,workspaces:S,script:W,args:F,targets:I.map(n=>n.name)}):void 0;try{if(n.parallel&&!n.topological&&!n[`topological-dev`]){let a=n.jobs&&n.jobs>0?n.jobs:cpus().length;await runParallel(I,W,F,a,H,C,q)}else if(n.parallel){let a=n.jobs&&n.jobs>0?n.jobs:cpus().length;await runTopologicalParallel(I,W,F,a,H,n[`topological-dev`]===!0,C,q)}else await runSequential(I,W,F,H,C,q)}catch(n){return killActiveChildren(),ge.error(n.message),process.exit(1)}process.exit(0)}}});async function runLifecycleScript(n,a,S,C={}){let N=(a.scripts??{})[S];if(typeof N!=`string`){if(C.optional!==!1)return!1;throw Error(`gjsify lifecycle-script: no "${S}" in ${n}/package.json`)}let F=findWorkspaceRoot(n),I=[_s(n,`node_modules`,`.bin`)];F&&F!==n&&I.push(_s(F,`node_modules`,`.bin`));let H=process.env.FORCE_COLOR!==void 0||process.env.NO_COLOR!==void 0?{}:{FORCE_COLOR:`1`},W={...process.env,...H,PATH:[...I,process.env.PATH??``].filter(Boolean).join(Es),npm_lifecycle_event:S,npm_package_name:a.name??``,npm_package_version:a.version??``,...C.env},K=C.stdio===`inherit-stderr`?[`inherit`,2,2]:C.stdio??`inherit`;return await new Promise((a,C)=>{let F=spawn(N,[],{cwd:n,env:W,stdio:K,shell:!0});F.on(`close`,N=>{N===0?a():C(Error(`gjsify lifecycle-script: "${S}" in ${n} exited with code ${N}`))}),F.on(`error`,C)}),!0}var AF=__esmMin(()=>{Xm(),Os(),B_()});async function packWorkspace(n,a={}){let S=_s(n,`package.json`);if(!existsSync(S))throw Error(`gjsify pack: no package.json at ${n}`);let C=readFileSync(S,`utf-8`),N=JSON.parse(C),F=typeof N.name==`string`?N.name:``,I=typeof N.version==`string`?N.version:`0.0.0`;if(!F)throw Error(`gjsify pack: package.json at ${n} has no "name"`);let H=a.lifecycleScripts??[`prepack`];for(let S of H)await runLifecycleScript(n,N,S,{optional:!0,stdio:a.lifecycleStdio});let W=readFileSync(S,`utf-8`),K=W===C?N:JSON.parse(W),q=a.skipWorkspaceRewrite?K:rewriteWorkspaceDeps(K,n),Y=JSON.stringify(q,null,indentOf(W))+`
902
- `,X=collectFiles(n,K);assertTypeDeclarationsShipped(n,K,X);let te=[{name:`package/`,directory:!0,mode:493}],ne=[],re=0;for(let a of X){let S;S=a===`package.json`?new TextEncoder().encode(Y):new Uint8Array(readFileSync(_s(n,a)));let C=statSync(_s(n,a)).mode&511;te.push({name:`package/${a}`,body:S,mode:C,mtime:0}),ne.push({path:a,size:S.byteLength,mode:C}),re+=S.byteLength}let ie=await gzip(createTarball(te)),ae=`${F.startsWith(`@`)?F.slice(1).replace(`/`,`-`):F}-${I}.tgz`,oe=createHash(`sha1`).update(ie).digest(`hex`),Z=`sha512-${createHash(`sha512`).update(ie).digest(`base64`)}`,se=a.destination?ms(a.destination):n,ce=_s(se,ae);return a.dryRun||(mkdirSync(se,{recursive:!0}),writeFileSync(ce,ie)),{filename:ae,name:F,version:I,size:ie.byteLength,unpackedSize:re,shasum:oe,integrity:Z,entryCount:ne.length,files:ne,absolutePath:a.dryRun?null:ce}}function collectFiles(n,a){let S=forceIncluded(a),C=Array.isArray(a.files)?a.files.filter(n=>typeof n==`string`):null,N=new Set;if(C)for(let a of expandFilesPatterns(n,C))N.add(a);else{let a=loadIgnore(n);for(let S of walkAll(n))a(S)||N.add(S)}for(let a of S)existsSync(_s(n,a))&&N.add(a);return[...N].sort()}function collectTypeDeclarationRefs(n){let a=new Set,add=n=>{if(typeof n!=`string`)return;let S=n.replace(/^\.\//,``);S.includes(`*`)||a.add(S)};for(let a of[`types`,`typings`])add(n[a]);let walk=n=>{if(!(!n||typeof n!=`object`)){if(Array.isArray(n)){for(let a of n)walk(a);return}for(let[a,S]of Object.entries(n))a===`types`||a===`typings`?add(S):walk(S)}};return walk(n.exports),[...a]}function assertTypeDeclarationsShipped(n,a,S){let C=new Set(S),N=collectTypeDeclarationRefs(a).filter(a=>{let S=_s(n,a);return existsSync(S)&&statSync(S).isFile()&&!C.has(a)});if(N.length===0)return;let F=typeof a.name==`string`?a.name:`(unnamed)`,I=Array.isArray(a.files)?JSON.stringify(a.files):`(none)`;throw Error(`gjsify pack: ${F} references TypeScript declaration file(s) via "exports"/"types" that exist on disk but are excluded from the tarball by the "files" allowlist (${I}):\n`+N.map(n=>` - ${n}`).join(`
905
+ `,X=collectPackedFiles(n,K);assertTypeDeclarationsShipped(n,K,X);let te=[{name:`package/`,directory:!0,mode:493}],ne=[],re=0;for(let a of X){let S;S=a===`package.json`?new TextEncoder().encode(Y):new Uint8Array(readFileSync(_s(n,a)));let C=statSync(_s(n,a)).mode&511;te.push({name:`package/${a}`,body:S,mode:C,mtime:0}),ne.push({path:a,size:S.byteLength,mode:C}),re+=S.byteLength}let ie=await gzip(createTarball(te)),ae=`${F.startsWith(`@`)?F.slice(1).replace(`/`,`-`):F}-${I}.tgz`,oe=createHash(`sha1`).update(ie).digest(`hex`),Z=`sha512-${createHash(`sha512`).update(ie).digest(`base64`)}`,se=a.destination?ms(a.destination):n,ce=_s(se,ae);return a.dryRun||(mkdirSync(se,{recursive:!0}),writeFileSync(ce,ie)),{filename:ae,name:F,version:I,size:ie.byteLength,unpackedSize:re,shasum:oe,integrity:Z,entryCount:ne.length,files:ne,absolutePath:a.dryRun?null:ce}}function collectPackedFiles(n,a){let S=forceIncluded(a),C=Array.isArray(a.files)?a.files.filter(n=>typeof n==`string`):null,N=new Set;if(C)for(let a of expandFilesPatterns(n,C))N.add(a);else{let a=loadIgnore(n);for(let S of walkAll(n))a(S)||N.add(S)}for(let a of S)existsSync(_s(n,a))&&N.add(a);return[...N].sort()}function collectTypeDeclarationRefs(n){let a=new Set,add=n=>{if(typeof n!=`string`)return;let S=n.replace(/^\.\//,``);S.includes(`*`)||a.add(S)};for(let a of[`types`,`typings`])add(n[a]);let walk=n=>{if(!(!n||typeof n!=`object`)){if(Array.isArray(n)){for(let a of n)walk(a);return}for(let[a,S]of Object.entries(n))a===`types`||a===`typings`?add(S):walk(S)}};return walk(n.exports),[...a]}function assertTypeDeclarationsShipped(n,a,S){let C=new Set(S),N=collectTypeDeclarationRefs(a).filter(a=>{let S=_s(n,a);return existsSync(S)&&statSync(S).isFile()&&!C.has(a)});if(N.length===0)return;let F=typeof a.name==`string`?a.name:`(unnamed)`,I=Array.isArray(a.files)?JSON.stringify(a.files):`(none)`;throw Error(`gjsify pack: ${F} references TypeScript declaration file(s) via "exports"/"types" that exist on disk but are excluded from the tarball by the "files" allowlist (${I}):\n`+N.map(n=>` - ${n}`).join(`
903
906
  `)+`
904
907
  Add the missing path(s) to package.json "files" so type resolution isn't silently broken for consumers.`)}function forceIncluded(n){let a=new Set;a.add(`package.json`);for(let n of[`README`,`README.md`,`LICENSE`,`LICENSE.md`,`NOTICE`,`NOTICE.md`])a.add(n);let S=typeof n.main==`string`?n.main:null;S&&a.add(S.replace(/^\.\//,``));let C=n.bin;if(typeof C==`string`)a.add(C.replace(/^\.\//,``));else if(C&&typeof C==`object`)for(let n of Object.values(C))typeof n==`string`&&a.add(n.replace(/^\.\//,``));return[...a]}function walkAll(n,a=``){let S=[],C=a?_s(n,a):n,N;try{N=readdirSync(C,{withFileTypes:!0})}catch{return S}for(let C of N){if(MF.has(C.name)||C.name.startsWith(`.tsbuildinfo`))continue;let N=a?`${a}/${C.name}`:C.name;C.isDirectory()?S.push(...walkAll(n,N)):C.isFile()&&S.push(N)}return S}function expandFilesPatterns(n,a){let S=new Set,C=null;for(let N of a){let a=N.replace(/^\.\//,``).replace(/\/$/,``);if(!a)continue;if(!/[*?[\]]/.test(a)){let C=_s(n,a);if(!existsSync(C))continue;let N=statSync(C);if(N.isDirectory())for(let C of walkAll(n,a))S.add(C);else N.isFile()&&S.add(a);continue}C??=walkAll(n);let F=filesGlobToRegExp(a),I=filesGlobToRegExp(`${a}/**`);for(let n of C)(F.test(n)||I.test(n))&&S.add(n)}return[...S]}function filesGlobToRegExp(n){let a=`^`;for(let S=0;S<n.length;S++){let C=n[S];if(C===`*`)n[S+1]===`*`?(a+=`.*`,S++,n[S+1]===`/`&&S++):a+=`[^/]*`;else if(C===`?`)a+=`[^/]`;else if(C===`[`){let C=S+1,N=`[`;for(n[C]===`!`&&(N+=`^`,C++);C<n.length&&n[C]!==`]`;C++)N+=n[C];C<n.length?(a+=`${N}]`,S=C):a+=`\\[`}else".+^${}()|\\]".includes(C)?a+=`\\${C}`:a+=C}return RegExp(`${a}$`)}function loadIgnore(n){let a=_s(n,`.npmignore`),S=_s(n,`.gitignore`),C=[],N=existsSync(a)?a:existsSync(S)?S:null;if(N){let n=readFileSync(N,`utf-8`).split(`
905
- `);for(let a of n){let n=a.trim();!n||n.startsWith(`#`)||n.startsWith(`!`)||C.push(globToRegex(n))}}return n=>{for(let a of C)if(a.test(n))return!0;return!1}}function globToRegex(n){let a=n.replace(/^\//,``);return a=a.replace(/[.+^${}()|[\]\\]/g,`\\$&`),a=a.replace(/\*\*/g,`__DOUBLESTAR__`).replace(/\*/g,`[^/]*`).replace(/__DOUBLESTAR__/g,`.*`),a=a.replace(/\?/g,`[^/]`),RegExp(`^${a}($|/)`)}function collectWorkspaceProtocolDeps(n){let a=[];for(let S of NF){let C=n[S];if(C)for(let[n,N]of Object.entries(C))typeof N==`string`&&N.startsWith(`workspace:`)&&a.push(`${S}.${n}`)}return a}function findPackWorkspaceRoot(n){let a=findWorkspaceRoot(n);if(a)return a;let S=n;for(let n=0;n<12;n++){let n=_s(S,`package.json`);if(existsSync(n)&&readPackageJson$2(n)?.workspaces!==void 0)return S;let a=ms(S,`..`);if(a===S)break;S=a}return null}function rewriteWorkspaceDeps(n,a){let S=findPackWorkspaceRoot(a);if(!S){let S=collectWorkspaceProtocolDeps(n);if(S.length>0)throw Error(`gjsify pack: ${String(n.name)} declares workspace: ranges (${S.join(`, `)}) but ${a} is not inside a monorepo (no ancestor package.json declares "workspaces"). A workspace: range cannot be published — replace it with a real npm range, or pack from within the monorepo.`);return n}let C=new Map;for(let n of discoverWorkspaces(S))n.name&&n.version&&C.set(n.name,n.version);let N=JSON.parse(JSON.stringify(n));for(let n of NF){let a=N[n];if(a)for(let[F,I]of Object.entries(a)){if(typeof I!=`string`||!I.startsWith(`workspace:`))continue;let H=C.get(F);if(!H)throw Error(`gjsify pack: ${N.name} declares ${I} on ${F} (${n}) but no sibling workspace with that name exists in the monorepo at ${S}`);let W=I.slice(10);W===`*`||W===``?a[F]=H:W===`^`||W===`~`?a[F]=`${W}${H}`:a[F]=W}}return N}function indentOf(n){let a=n.match(/\n([ \t]+)"/);return a?a[1]:` `}var jF,MF,NF,PF=__esmMin(()=>{gl(),xo(),Os(),LN(),R_(),B_(),z_(),AF(),jF={command:`pack [path]`,description:`Produce an npm-compatible .tgz tarball for the workspace at <path> (default: cwd). Rewrites workspace:^/~/* deps to resolved versions.`,builder:n=>n.positional(`path`,{description:`Workspace path (default: cwd).`,type:`string`}).option(`pack-destination`,{description:`Directory to write the tarball into. Default: workspace cwd.`,type:`string`}).option(`json`,{description:"Emit pack metadata as JSON on stdout (mirrors `npm pack --json`).",type:`boolean`,default:!1}).option(`dry-run`,{description:`Compute everything but do not write the .tgz.`,type:`boolean`,default:!1}).option(`ignore-scripts`,{description:"Skip the `prepack` lifecycle script before packing. Mirrors `npm pack --ignore-scripts`. Use when scripts are already run by the outer workflow.",type:`boolean`,default:!1}),handler:async n=>{let a=await packWorkspace(ms(n.path??process.cwd()),{destination:n[`pack-destination`],dryRun:n[`dry-run`]===!0,lifecycleScripts:n[`ignore-scripts`]?[]:[`prepack`],lifecycleStdio:n.json?`inherit-stderr`:`inherit`});n.json?process.stdout.write(`${JSON.stringify([a],null,2)}\n`):process.stdout.write(`${a.filename}\n`)}},MF=new Set([`.git`,`.svn`,`.hg`,`.gitignore`,`.gitattributes`,`.npmrc`,`CVS`,`.DS_Store`,`node_modules`,`.npmignore`,`package-lock.json`,`gjsify-lock.json`,`yarn.lock`,`yarn-error.log`,`.yarn`,`.pnp.cjs`,`.pnp.loader.mjs`,`tsconfig.tsbuildinfo`]),NF=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`]});function escapePackageName(n){return n.replace(`/`,`%2f`)}function buildPublishHeaders(n,a){let S=buildHeaders(n,{npmrc:a.npmrc});return S[`content-type`]=`application/json`,S[`npm-command`]=`publish`,S[`npm-auth-type`]=a.otp?`legacy`:`web`,S[`user-agent`]=a.userAgent??defaultUserAgent(),a.otp&&(S[`npm-otp`]=a.otp),a.authorization&&(S.authorization=a.authorization),S}function cliVersion(){return FF===void 0&&(FF=`0.27.0`),FF}function defaultUserAgent(){let n=globalThis.process,a=n?.arch??`x64`,S=n?.platform??`linux`;return`gjsify-publish/${cliVersion()} (${S} ${a})`}var FF,IF=__esmMin(()=>{gl(),Os(),MN()});function decodeJwtPayload(n){let a=n.split(`.`);if(a.length!==3)return null;try{let n=a[1].replace(/-/g,`+`).replace(/_/g,`/`),S=typeof atob==`function`?atob(n):Buffer.from(n,`base64`).toString(`binary`);return JSON.parse(S)}catch{return null}}function hasGithubOidcEnv(){return!!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)}async function fetchGithubOidcToken(n,a){let S=process.env.ACTIONS_ID_TOKEN_REQUEST_URL,C=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!S||!C)throw new OidcUnavailableError("GitHub Actions OIDC env vars (ACTIONS_ID_TOKEN_REQUEST_{URL,TOKEN}) not set. The calling workflow needs `permissions: id-token: write`.",`no-env`);let N=`${S}${S.includes(`?`)?`&`:`?`}audience=${encodeURIComponent(n)}`;a?.(`gjsify oidc: GET ${N.replace(C,`<bearer>`)}`);let F=await fetch(N,{method:`GET`,headers:{Accept:`application/json`,Authorization:`Bearer ${C}`}});if(!F.ok){let n=await F.text().catch(()=>`<no body>`);throw new OidcUnavailableError(`Failed to fetch GitHub OIDC id_token: ${F.status} ${F.statusText} — ${n.slice(0,200)}`,`fetch-id-token`)}let I=await F.json().catch(()=>({}));if(!I.value)throw new OidcUnavailableError("GitHub OIDC response missing `value` field",`no-id-token`);return I.value}async function exchangeOidcForNpmToken(n){let{packageName:a,registry:S,idToken:C,log:N}=n,F=`${S.endsWith(`/`)?S.slice(0,-1):S}/-/npm/v1/oidc/token/exchange/package/${a.startsWith(`@`)?(()=>{let n=a.indexOf(`/`),S=a.slice(1,n),C=a.slice(n+1);return`@${encodeURIComponent(S)}%2f${encodeURIComponent(C)}`})():encodeURIComponent(a)}`;N?.(`gjsify oidc: POST ${F}`);let I=n.maxRetries??3,H=n.retryBaseMs??1e3;for(let n=0;;n++){let S;try{S=await fetch(F,{method:`POST`,headers:{Authorization:`Bearer ${C}`,"Content-Type":`application/json`,Accept:`application/json`},body:`{}`})}catch(S){if(n<I){let S=Math.min(H*2**n,8e3);N?.(`gjsify oidc: network error for ${a} (attempt ${n+1}/${I+1}), retrying in ${S}ms`),await sleep(S);continue}throw new OidcExchangeError(`npm OIDC token exchange network error for ${a} after ${n+1} attempt(s): ${S instanceof Error?S.message:String(S)}`,0,``,a,decodeJwtPayload(C)??void 0)}let W=await S.text().catch(()=>``);if(!S.ok){if(LF.has(S.status)&&n<I){let C=Math.min(H*2**n,8e3);N?.(`gjsify oidc: transient ${S.status} ${S.statusText} for ${a} (attempt ${n+1}/${I+1}), retrying in ${C}ms`),await sleep(C);continue}throw new OidcExchangeError(`npm OIDC token exchange failed for ${a}: ${S.status} ${S.statusText} — ${W.slice(0,300)}`,S.status,W,a,decodeJwtPayload(C)??void 0)}let K;try{K=JSON.parse(W)}catch{throw new OidcExchangeError(`npm OIDC token exchange returned non-JSON body for ${a}: ${W.slice(0,200)}`,S.status,W,a)}if(!K.token)throw new OidcExchangeError(`npm OIDC token exchange returned no \`token\` field for ${a}`,S.status,W,a);return K.token}}async function getNpmTrustedToken(n){let a=`npm:${new URL(n.registry).hostname}`,S=await fetchGithubOidcToken(a,n.log);return{token:await exchangeOidcForNpmToken({...n,idToken:S}),audience:a}}var LF,sleep,OidcUnavailableError,OidcExchangeError,RF=__esmMin(()=>{LF=new Set([408,425,429,500,502,503,504]),sleep=n=>new Promise(a=>setTimeout(a,n)),OidcUnavailableError=class extends Error{reason;constructor(n,a){super(n),this.reason=a,this.name=`OidcUnavailableError`}},OidcExchangeError=class extends Error{status;body;packageName;claims;constructor(n,a,S,C,N){super(n),this.status=a,this.body=S,this.packageName=C,this.claims=N,this.name=`OidcExchangeError`}}});async function diagnose404(n){let{packageName:a,version:S,registry:C,npmrc:N}=n,F={};try{F=await whoami(C,N)}catch{return{reason:`unknown`,message:formatUnknown(a,S)}}return F.username&&F.username.length>0?{reason:`live-token-404`,username:F.username,message:formatLiveToken404(a,S,F.username)}:{reason:`dead-token`,message:formatDeadToken(a,S)}}function formatDeadToken(n,a){return[`gjsify publish: ${n}@${a} — 404 Not Found`,``,`The npm token in ~/.npmrc appears to be revoked or expired (the /-/whoami probe`,`returned {} instead of {"username": "..."}). The 404 is npm's response to a PUT`,`authenticated with an invalid bearer token.`,``,`To refresh:`,` npm login`,` # or, future: gjsify login (tracked as project_gjsify_login_goal)`,``,`Then verify before publishing:`,` curl -s -H "Authorization: Bearer $(grep registry.npmjs.org ~/.npmrc | sed 's|.*=||')" \\`,` https://registry.npmjs.org/-/whoami`,` # Healthy: {"username":"<you>"}`,` # Dead: {}`].join(`
908
+ `);for(let a of n){let n=a.trim();!n||n.startsWith(`#`)||n.startsWith(`!`)||C.push(globToRegex(n))}}return n=>{for(let a of C)if(a.test(n))return!0;return!1}}function globToRegex(n){let a=n.replace(/^\//,``);return a=a.replace(/[.+^${}()|[\]\\]/g,`\\$&`),a=a.replace(/\*\*/g,`__DOUBLESTAR__`).replace(/\*/g,`[^/]*`).replace(/__DOUBLESTAR__/g,`.*`),a=a.replace(/\?/g,`[^/]`),RegExp(`^${a}($|/)`)}function collectWorkspaceProtocolDeps(n){let a=[];for(let S of NF){let C=n[S];if(C)for(let[n,N]of Object.entries(C))typeof N==`string`&&N.startsWith(`workspace:`)&&a.push(`${S}.${n}`)}return a}function findPackWorkspaceRoot(n){let a=findWorkspaceRoot(n);if(a)return a;let S=n;for(let n=0;n<12;n++){let n=_s(S,`package.json`);if(existsSync(n)&&readPackageJson$2(n)?.workspaces!==void 0)return S;let a=ms(S,`..`);if(a===S)break;S=a}return null}function rewriteWorkspaceDeps(n,a){let S=findPackWorkspaceRoot(a);if(!S){let S=collectWorkspaceProtocolDeps(n);if(S.length>0)throw Error(`gjsify pack: ${String(n.name)} declares workspace: ranges (${S.join(`, `)}) but ${a} is not inside a monorepo (no ancestor package.json declares "workspaces"). A workspace: range cannot be published — replace it with a real npm range, or pack from within the monorepo.`);return n}let C=new Map;for(let n of discoverWorkspaces(S))n.name&&n.version&&C.set(n.name,n.version);let N=JSON.parse(JSON.stringify(n));for(let n of NF){let a=N[n];if(a)for(let[F,I]of Object.entries(a)){if(typeof I!=`string`||!I.startsWith(`workspace:`))continue;let H=C.get(F);if(!H)throw Error(`gjsify pack: ${N.name} declares ${I} on ${F} (${n}) but no sibling workspace with that name exists in the monorepo at ${S}`);let W=I.slice(10);W===`*`||W===``?a[F]=H:W===`^`||W===`~`?a[F]=`${W}${H}`:a[F]=W}}return N}function indentOf(n){let a=n.match(/\n([ \t]+)"/);return a?a[1]:` `}var jF,MF,NF,PF=__esmMin(()=>{gl(),xo(),Os(),LN(),R_(),B_(),z_(),AF(),jF={command:`pack [path]`,description:`Produce an npm-compatible .tgz tarball for the workspace at <path> (default: cwd). Rewrites workspace:^/~/* deps to resolved versions.`,builder:n=>n.positional(`path`,{description:`Workspace path (default: cwd).`,type:`string`}).option(`pack-destination`,{description:`Directory to write the tarball into. Default: workspace cwd.`,type:`string`}).option(`json`,{description:"Emit pack metadata as JSON on stdout (mirrors `npm pack --json`).",type:`boolean`,default:!1}).option(`dry-run`,{description:`Compute everything but do not write the .tgz.`,type:`boolean`,default:!1}).option(`ignore-scripts`,{description:"Skip the `prepack` lifecycle script before packing. Mirrors `npm pack --ignore-scripts`. Use when scripts are already run by the outer workflow.",type:`boolean`,default:!1}),handler:async n=>{let a=await packWorkspace(ms(n.path??process.cwd()),{destination:n[`pack-destination`],dryRun:n[`dry-run`]===!0,lifecycleScripts:n[`ignore-scripts`]?[]:[`prepack`],lifecycleStdio:n.json?`inherit-stderr`:`inherit`});n.json?process.stdout.write(`${JSON.stringify([a],null,2)}\n`):process.stdout.write(`${a.filename}\n`)}},MF=new Set([`.git`,`.svn`,`.hg`,`.gitignore`,`.gitattributes`,`.npmrc`,`CVS`,`.DS_Store`,`node_modules`,`.npmignore`,`package-lock.json`,`gjsify-lock.json`,`yarn.lock`,`yarn-error.log`,`.yarn`,`.pnp.cjs`,`.pnp.loader.mjs`,`tsconfig.tsbuildinfo`]),NF=[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`]});function escapePackageName(n){return n.replace(`/`,`%2f`)}function buildPublishHeaders(n,a){let S=buildHeaders(n,{npmrc:a.npmrc});return S[`content-type`]=`application/json`,S[`npm-command`]=`publish`,S[`npm-auth-type`]=a.otp?`legacy`:`web`,S[`user-agent`]=a.userAgent??defaultUserAgent(),a.otp&&(S[`npm-otp`]=a.otp),a.authorization&&(S.authorization=a.authorization),S}function cliVersion(){return FF===void 0&&(FF=`0.28.0`),FF}function defaultUserAgent(){let n=globalThis.process,a=n?.arch??`x64`,S=n?.platform??`linux`;return`gjsify-publish/${cliVersion()} (${S} ${a})`}var FF,IF=__esmMin(()=>{gl(),Os(),MN()});function decodeJwtPayload(n){let a=n.split(`.`);if(a.length!==3)return null;try{let n=a[1].replace(/-/g,`+`).replace(/_/g,`/`),S=typeof atob==`function`?atob(n):Buffer.from(n,`base64`).toString(`binary`);return JSON.parse(S)}catch{return null}}function hasGithubOidcEnv(){return!!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)}async function fetchGithubOidcToken(n,a){let S=process.env.ACTIONS_ID_TOKEN_REQUEST_URL,C=process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN;if(!S||!C)throw new OidcUnavailableError("GitHub Actions OIDC env vars (ACTIONS_ID_TOKEN_REQUEST_{URL,TOKEN}) not set. The calling workflow needs `permissions: id-token: write`.",`no-env`);let N=`${S}${S.includes(`?`)?`&`:`?`}audience=${encodeURIComponent(n)}`;a?.(`gjsify oidc: GET ${N.replace(C,`<bearer>`)}`);let F=await fetch(N,{method:`GET`,headers:{Accept:`application/json`,Authorization:`Bearer ${C}`}});if(!F.ok){let n=await F.text().catch(()=>`<no body>`);throw new OidcUnavailableError(`Failed to fetch GitHub OIDC id_token: ${F.status} ${F.statusText} — ${n.slice(0,200)}`,`fetch-id-token`)}let I=await F.json().catch(()=>({}));if(!I.value)throw new OidcUnavailableError("GitHub OIDC response missing `value` field",`no-id-token`);return I.value}async function exchangeOidcForNpmToken(n){let{packageName:a,registry:S,idToken:C,log:N}=n,F=`${S.endsWith(`/`)?S.slice(0,-1):S}/-/npm/v1/oidc/token/exchange/package/${a.startsWith(`@`)?(()=>{let n=a.indexOf(`/`),S=a.slice(1,n),C=a.slice(n+1);return`@${encodeURIComponent(S)}%2f${encodeURIComponent(C)}`})():encodeURIComponent(a)}`;N?.(`gjsify oidc: POST ${F}`);let I=n.maxRetries??3,H=n.retryBaseMs??1e3;for(let n=0;;n++){let S;try{S=await fetch(F,{method:`POST`,headers:{Authorization:`Bearer ${C}`,"Content-Type":`application/json`,Accept:`application/json`},body:`{}`})}catch(S){if(n<I){let S=Math.min(H*2**n,8e3);N?.(`gjsify oidc: network error for ${a} (attempt ${n+1}/${I+1}), retrying in ${S}ms`),await sleep(S);continue}throw new OidcExchangeError(`npm OIDC token exchange network error for ${a} after ${n+1} attempt(s): ${S instanceof Error?S.message:String(S)}`,0,``,a,decodeJwtPayload(C)??void 0)}let W=await S.text().catch(()=>``);if(!S.ok){if(LF.has(S.status)&&n<I){let C=Math.min(H*2**n,8e3);N?.(`gjsify oidc: transient ${S.status} ${S.statusText} for ${a} (attempt ${n+1}/${I+1}), retrying in ${C}ms`),await sleep(C);continue}throw new OidcExchangeError(`npm OIDC token exchange failed for ${a}: ${S.status} ${S.statusText} — ${W.slice(0,300)}`,S.status,W,a,decodeJwtPayload(C)??void 0)}let K;try{K=JSON.parse(W)}catch{throw new OidcExchangeError(`npm OIDC token exchange returned non-JSON body for ${a}: ${W.slice(0,200)}`,S.status,W,a)}if(!K.token)throw new OidcExchangeError(`npm OIDC token exchange returned no \`token\` field for ${a}`,S.status,W,a);return K.token}}async function getNpmTrustedToken(n){let a=`npm:${new URL(n.registry).hostname}`,S=await fetchGithubOidcToken(a,n.log);return{token:await exchangeOidcForNpmToken({...n,idToken:S}),audience:a}}var LF,sleep,OidcUnavailableError,OidcExchangeError,RF=__esmMin(()=>{LF=new Set([408,425,429,500,502,503,504]),sleep=n=>new Promise(a=>setTimeout(a,n)),OidcUnavailableError=class extends Error{reason;constructor(n,a){super(n),this.reason=a,this.name=`OidcUnavailableError`}},OidcExchangeError=class extends Error{status;body;packageName;claims;constructor(n,a,S,C,N){super(n),this.status=a,this.body=S,this.packageName=C,this.claims=N,this.name=`OidcExchangeError`}}});async function diagnose404(n){let{packageName:a,version:S,registry:C,npmrc:N}=n,F={};try{F=await whoami(C,N)}catch{return{reason:`unknown`,message:formatUnknown(a,S)}}return F.username&&F.username.length>0?{reason:`live-token-404`,username:F.username,message:formatLiveToken404(a,S,F.username)}:{reason:`dead-token`,message:formatDeadToken(a,S)}}function formatDeadToken(n,a){return[`gjsify publish: ${n}@${a} — 404 Not Found`,``,`The npm token in ~/.npmrc appears to be revoked or expired (the /-/whoami probe`,`returned {} instead of {"username": "..."}). The 404 is npm's response to a PUT`,`authenticated with an invalid bearer token.`,``,`To refresh:`,` npm login`,` # or, future: gjsify login (tracked as project_gjsify_login_goal)`,``,`Then verify before publishing:`,` curl -s -H "Authorization: Bearer $(grep registry.npmjs.org ~/.npmrc | sed 's|.*=||')" \\`,` https://registry.npmjs.org/-/whoami`,` # Healthy: {"username":"<you>"}`,` # Dead: {}`].join(`
906
909
  `)}function formatLiveToken404(n,a,S){return[`gjsify publish: ${n}@${a} — 404 Not Found`,``,`Authenticated as: ${S}`,``,`Your token authenticates, so this is NOT a dead-token problem. The package`,`${n} is not (yet) on npmjs.com. Two cases:`,``,` 1. First publish of a brand-new scoped package — do the one-time bootstrap`,` (see AGENTS.md > "New @gjsify/* package: first-publish + Trusted`,` Publisher bootstrap"). The npm registry can also 404 *transiently*`,` while provisioning a brand-new package: simply re-run, or do the very`," first publish with `npm publish` (then configure the Trusted Publisher)."," 2. You lack publish access to the scope — verify with `npm access ls-packages`."].join(`
907
910
  `)}function formatUnknown(n,a){return`gjsify publish: ${n}@${a} — 404 Not Found`}function is404DiagnosticCandidate(n){let a=n.trim();return!!(a.length===0||/^not found$/i.test(a)||/"error"\s*:\s*"Not Found"/i.test(a))}var zF=__esmMin(()=>{MN()});async function loadNpmrc(n){let a=[],S=_s(n,`.npmrc`);existsSync(S)&&a.push(readFileSync(S,`utf-8`));let C=process.env.NPM_CONFIG_USERCONFIG;if(C&&existsSync(C))a.push(readFileSync(C,`utf-8`));else{let n=_s(homedir(),`.npmrc`);existsSync(n)&&a.push(readFileSync(n,`utf-8`))}return parseNpmrc(a.join(`
908
911
  `).replace(/\$\{([A-Z_][A-Z0-9_]*)\}/gi,(n,a)=>process.env[a]??``))}function hasAnyAuthToken(n){return Object.keys(n.authTokens).length>0}function hasAnyCredential(n){return hasAnyAuthToken(n)||Object.keys(n.basicAuth).length>0}var BF=__esmMin(()=>{gl(),um(),Os(),MN()});function isTtyStdin(){let n=process.stdin;return!!n.isTTY&&typeof n.setRawMode==`function`}function applyKey(n,a,S){return a===`\r`||a===`
@@ -942,27 +945,27 @@ await runStorybook({
942
945
  applicationId: ${JSON.stringify(a)},${F}
943
946
  stories: collectStoryModules([${N}]),
944
947
  });
945
- `}var ZI,QI=__esmMin(()=>{_e(),Xm(),gl(),Os(),Tm(),__name$1(readPackage$2,`readPackage`),__name$1(generateEntry$2,`generateEntry`),ZI={command:`storybook`,description:`Discover *.story.ts in this project and launch the GTK storybook browser.`,builder:n=>n.option(`stories`,{description:`Directory scanned recursively for *.story.ts (default: src, or gjsify.storybook.stories)`,type:`string`}).option(`app-id`,{description:`GApplication id (default: gjsify.storybook.applicationId or derived from the package name)`,type:`string`}).option(`title`,{description:`Window title`,type:`string`}).option(`globals`,{description:"Value for `gjsify build --globals` (default: auto; use auto,dom for canvas/DOM stories)",type:`string`}).option(`out`,{description:`Output bundle path (default: node_modules/.cache/gjsify-storybook)`,type:`string`}).option(`runtime`,{description:"Runtime to build for and launch on: gjs | node | bun | deno (default: the host runtime). node/bun/deno build the same `--app node` bundle (gi:// → @gjsify/node-gi) and require @gjsify/node-gi installed in the project.",type:`string`,choices:[`gjs`,`node`,`bun`,`deno`],defaultDescription:`host runtime (gjs on gjs, else node/bun/deno)`}).option(`watch`,{description:`Rebuild and relaunch when a story file changes`,type:`boolean`,default:!1}).option(`build-only`,{description:`Build the bundle but do not launch it`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=readPackage$2(a),C=S.gjsify?.storybook??{},N=ms(a,n.stories??C.stories??`src`),F=n.appId??C.applicationId??deriveAppId(S.name),I=n.title??C.title,H=n.globals??C.globals??`auto`,W=n.runtime??C.runtime??hostRuntime(),K=W===`gjs`?`gjs`:`node`,q=_s(a,`node_modules`,`.cache`,`gjsify-storybook`);mkdirSync(q,{recursive:!0});let Y=_s(q,`entry.ts`),X=n.out?ms(a,n.out):_s(q,`storybook.${K}.mjs`),writeEntry=()=>{let n=findStoryFiles(N).sort();return writeFileSync(Y,generateEntry$2(n,F,I)),n.length},te=writeEntry();if(te===0)return ge.error(`No *.story.ts files found under ${vs(a,N)||N}\n\n \`gjsify storybook\` renders the stories of the CURRENT project: it discovers\n \`*.story.ts\` files and launches a component browser over them. Point it at a\n different directory with --stories <dir> (or \`gjsify.storybook.stories\` in\n package.json) if yours live elsewhere.\n\n To SEE a storybook without authoring one first, run the curated Libadwaita\n component browser — it is a showcase, so it needs no project at all:\n\n gjsify showcase adwaita-storybook`),process.exit(1);ge.log(`Found ${te} story file(s) under ${vs(a,N)||`.`} (runtime: ${W})`);let{runCli:ne}=await Promise.resolve().then(()=>(sL(),oL)),buildBundle=()=>ne([`build`,Y,`--app`,K,`--globals`,H,`--outfile`,X]),launch=async()=>{if(W===`gjs`){let{runGjsBundle:n}=await Promise.resolve().then(()=>(TM(),wM));await n(X,[],{exitOnSuccess:!0})}else if(W===`node`){let{runNodeBundle:n}=await Promise.resolve().then(()=>(DM(),EM));await n(X,[],{exitOnSuccess:!0})}else{let{runRuntimeBundle:n}=await Promise.resolve().then(()=>(DM(),EM));await n(W,X,[],{exitOnSuccess:!0})}};if(!n.watch){if(await buildBundle(),n.buildOnly)return;await launch();return}let{watch:re}=await Promise.resolve().then(()=>(gl(),pl)),spawnChild=async()=>{if(W===`gjs`)return spawn(`gjs`,[`-m`,X],{stdio:`inherit`});let{computeNativeEnvForBundle:n}=await Promise.resolve().then(()=>(TM(),wM)),{resolveNodeGiForBundle:S,nodeBinary:C}=await Promise.resolve().then(()=>(DM(),EM)),{RUNTIMES:N}=await Promise.resolve().then(()=>(eh(),Zm));if(!S(X,a))throw Error(`Cannot run the storybook on ${W}: \`@gjsify/node-gi\` is not installed. Add @gjsify/node-gi as a dependency to run the storybook on ${W}.`);let{env:F}=n(X,a),I={...process.env,...F};if(W===`node`)return spawn(C(),[X],{stdio:`inherit`,env:I});let[H,K]=N[W].launch(X);return spawn(H,K,{stdio:`inherit`,env:I})},ie=null,ae=!1,oe=!1,rebuild=async()=>{if(ae){oe=!0;return}ae=!0;try{writeEntry(),ie&&=(ie.kill(),null),await buildBundle(),n.buildOnly||(ie=await spawnChild())}catch(n){ge.error(`[storybook] rebuild failed: ${n.message}`)}finally{ae=!1,oe&&(oe=!1,rebuild())}};await rebuild();let Z=null;re(N,{recursive:!0},()=>{Z&&clearTimeout(Z),Z=setTimeout(()=>void rebuild(),200)}),ge.log(`[storybook] watching ${vs(a,N)||`.`} — press Ctrl+C to stop`)}}});function readPackage$1(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return{}}}function deriveStorybookAppId(n){return n?`org.gjsify.storybook.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Storybook`}function deriveBrowserAppId$1(n){return n?`org.gjsify.browser.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Browser`}function hasDep(n,a){return!!(n.dependencies?.[a]||n.devDependencies?.[a])}function generateEntry$1(n,a,S,C){return n===`storybook`?`// Auto-generated by \`gjsify debug\` — do not edit by hand.
948
+ `}var ZI,QI=__esmMin(()=>{_e(),Xm(),gl(),Os(),Tm(),__name$1(readPackage$2,`readPackage`),__name$1(generateEntry$2,`generateEntry`),ZI={command:`storybook`,description:`Discover *.story.ts in this project and launch the GTK storybook browser.`,builder:n=>n.option(`stories`,{description:`Directory scanned recursively for *.story.ts (default: src, or gjsify.storybook.stories)`,type:`string`}).option(`app-id`,{description:`GApplication id (default: gjsify.storybook.applicationId or derived from the package name)`,type:`string`}).option(`title`,{description:`Window title`,type:`string`}).option(`globals`,{description:"Value for `gjsify build --globals` (default: auto; use auto,dom for canvas/DOM stories)",type:`string`}).option(`out`,{description:`Output bundle path (default: node_modules/.cache/gjsify-storybook)`,type:`string`}).option(`runtime`,{description:"Runtime to build for and launch on: gjs | node | bun | deno (default: the host runtime). node/bun/deno build the same `--app node` bundle (gi:// → @gjsify/node-gi) and require @gjsify/node-gi installed in the project.",type:`string`,choices:[`gjs`,`node`,`bun`,`deno`],defaultDescription:`host runtime (gjs on gjs, else node/bun/deno)`}).option(`watch`,{description:`Rebuild and relaunch when a story file changes`,type:`boolean`,default:!1}).option(`build-only`,{description:`Build the bundle but do not launch it`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=readPackage$2(a),C=S.gjsify?.storybook??{},N=ms(a,n.stories??C.stories??`src`),F=n.appId??C.applicationId??deriveAppId(S.name),I=n.title??C.title,H=n.globals??C.globals??`auto`,W=n.runtime??C.runtime??hostRuntime(),K=W===`gjs`?`gjs`:`node`,q=_s(a,`node_modules`,`.cache`,`gjsify-storybook`);mkdirSync(q,{recursive:!0});let Y=_s(q,`entry.ts`),X=n.out?ms(a,n.out):_s(q,`storybook.${K}.mjs`),writeEntry=()=>{let n=findStoryFiles(N).sort();return writeFileSync(Y,generateEntry$2(n,F,I)),n.length},te=writeEntry();if(te===0)return ge.error(`No *.story.ts files found under ${vs(a,N)||N}\n\n \`gjsify storybook\` renders the stories of the CURRENT project: it discovers\n \`*.story.ts\` files and launches a component browser over them. Point it at a\n different directory with --stories <dir> (or \`gjsify.storybook.stories\` in\n package.json) if yours live elsewhere.\n\n To SEE a storybook without authoring one first, run the curated Libadwaita\n component browser — it is a showcase, so it needs no project at all:\n\n gjsify showcase adwaita-storybook`),process.exit(1);ge.log(`Found ${te} story file(s) under ${vs(a,N)||`.`} (runtime: ${W})`);let{runCli:ne}=await Promise.resolve().then(()=>(sL(),oL)),buildBundle=()=>ne([`build`,Y,`--app`,K,`--globals`,H,`--outfile`,X]),launch=async()=>{if(W===`gjs`){let{runGjsBundle:n}=await Promise.resolve().then(()=>(TM(),wM));await n(X,[],{exitOnSuccess:!0})}else if(W===`node`){let{runNodeBundle:n}=await Promise.resolve().then(()=>(DM(),EM));await n(X,[],{exitOnSuccess:!0})}else{let{runRuntimeBundle:n}=await Promise.resolve().then(()=>(DM(),EM));await n(W,X,[],{exitOnSuccess:!0})}};if(!n.watch){if(await buildBundle(),n.buildOnly)return;await launch();return}let{watch:re}=await Promise.resolve().then(()=>(gl(),pl)),spawnChild=async()=>{if(W===`gjs`)return spawn(`gjs`,[`-m`,X],{stdio:`inherit`});let{computeNativeEnvForBundle:n}=await Promise.resolve().then(()=>(TM(),wM)),{resolveNodeGiForBundle:S,nodeBinary:C}=await Promise.resolve().then(()=>(DM(),EM)),{RUNTIMES:N}=await Promise.resolve().then(()=>(eh(),Zm));if(!S(X,a))throw Error(`Cannot run the storybook on ${W}: \`@gjsify/node-gi\` is not installed. Add @gjsify/node-gi as a dependency to run the storybook on ${W}.`);let{env:F}=n(X,a),I={...process.env,...F};if(W===`node`)return spawn(C(),[X],{stdio:`inherit`,env:I});let[H,K]=N[W].launch(X);return spawn(H,K,{stdio:`inherit`,env:I})},ie=null,ae=!1,oe=!1,rebuild=async()=>{if(ae){oe=!0;return}ae=!0;try{writeEntry(),ie&&=(ie.kill(),null),await buildBundle(),n.buildOnly||(ie=await spawnChild())}catch(n){ge.error(`[storybook] rebuild failed: ${n.message}`)}finally{ae=!1,oe&&(oe=!1,rebuild())}};await rebuild();let Z=null;re(N,{recursive:!0},()=>{Z&&clearTimeout(Z),Z=setTimeout(()=>void rebuild(),200)}),ge.log(`[storybook] watching ${vs(a,N)||`.`} — press Ctrl+C to stop`)}}});function readPackage$1(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return{}}}function deriveStorybookAppId(n){return n?`org.gjsify.storybook.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Storybook`}function deriveBrowserAppId$1(n){return n?`org.gjsify.browser.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Browser`}function hasDep(n,a){return!!(n.dependencies?.[a]||n.devDependencies?.[a])}function generateEntry$1(n,a,S,C,N){let F=JSON.stringify(a),I=N?`, { address: ${JSON.stringify(N)} }`:``;return n===`storybook`?`// Auto-generated by \`gjsify debug\` — do not edit by hand.
946
949
  import { runDevtoolsMcp, storybookProfile } from '@gjsify/devtools-mcp';
947
950
 
948
- await runDevtoolsMcp(storybookProfile(${JSON.stringify(a)}));
951
+ await runDevtoolsMcp(storybookProfile(${F}${I}));
949
952
  `:n===`browser`?`// Auto-generated by \`gjsify debug\` — do not edit by hand.
950
953
  import { runDevtoolsMcp, browserProfile } from '@gjsify/devtools-mcp';
951
954
 
952
- await runDevtoolsMcp(browserProfile(${JSON.stringify(a)}));
955
+ await runDevtoolsMcp(browserProfile(${F}${I}));
953
956
  `:n===`cdp`?`// Auto-generated by \`gjsify debug\` — do not edit by hand.
954
957
  import { runDevtoolsMcp, cdpProfile } from '@gjsify/devtools-mcp';
955
958
 
956
- await runDevtoolsMcp(cdpProfile(${JSON.stringify(a)}));
959
+ await runDevtoolsMcp(cdpProfile(${F}${I}));
957
960
  `:`// Auto-generated by \`gjsify debug\` — do not edit by hand.
958
961
  import { runDevtoolsMcp } from '@gjsify/devtools-mcp';
959
962
 
960
963
  await runDevtoolsMcp({
961
964
  name: ${JSON.stringify(S)},
962
965
  version: ${JSON.stringify(C)},
963
- busNameBase: ${JSON.stringify(a)},
966
+ busNameBase: ${F},${N?`\n address: ${JSON.stringify(N)},`:``}
964
967
  });
965
- `}var $I,eL=__esmMin(()=>{_e(),gl(),Os(),__name$1(readPackage$1,`readPackage`),__name$1(deriveBrowserAppId$1,`deriveBrowserAppId`),__name$1(generateEntry$1,`generateEntry`),$I={command:`debug`,description:`Launch an MCP bridge for a devtools-enabled gjsify app (org.gjsify.Devtools).`,builder:n=>n.option(`bus-name`,{description:`App DBus base name (default: gjsify.devtools.busNameBase, or the storybook app-id)`,type:`string`}).option(`profile`,{description:`Tool profile: generic | storybook | browser | cdp (default: auto — storybook if @gjsify/storybook is a dep, browser if @gjsify/devtools-browser is, cdp if @gjsify/devtools-cdp is, else generic)`,type:`string`}).option(`globals`,{description:"Value for `gjsify build --globals` (default: auto)",type:`string`}).option(`out`,{description:`Output bundle path (default: node_modules/.cache/gjsify-debug)`,type:`string`}).option(`build-only`,{description:`Build the bridge bundle but do not launch it (for a .mcp.json command pointing at the bundle)`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=readPackage$1(a),C=S.gjsify?.devtools??{},N=n.profile??C.profile??(hasDep(S,`@gjsify/storybook`)?`storybook`:hasDep(S,`@gjsify/devtools-browser`)?`browser`:hasDep(S,`@gjsify/devtools-cdp`)?`cdp`:`generic`),F=n.busName??C.busNameBase??(N===`storybook`?S.gjsify?.storybook?.applicationId??deriveStorybookAppId(S.name):N===`browser`||N===`cdp`?S.gjsify?.browse?.applicationId??deriveBrowserAppId$1(S.name):void 0);if(!F)return ge.error(`gjsify debug: no bus name — set package.json#gjsify.devtools.busNameBase or pass --bus-name <org.example.App>`),process.exit(1);let I=n.globals??C.globals??`auto`,H=S.name?`${S.name}-devtools`:`gjsify-devtools`,W=_s(a,`node_modules`,`.cache`,`gjsify-debug`);mkdirSync(W,{recursive:!0});let K=_s(W,`entry.ts`),q=n.out?ms(a,n.out):_s(W,`bridge.gjs.mjs`);writeFileSync(K,generateEntry$1(N,F,H,`0.8.0`)),ge.error(`[gjsify debug] profile=${N} bus=${F}`);let{runCli:Y}=await Promise.resolve().then(()=>(sL(),oL));if(await Y([`build`,K,`--app`,`gjs`,`--shebang`,`--globals`,I,`--outfile`,q]),n.buildOnly){ge.error(`[gjsify debug] built ${q}`);return}let{runGjsBundle:X}=await Promise.resolve().then(()=>(TM(),wM));await X(q,[],{exitOnSuccess:!0})}}});function readPackage(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return{}}}function deriveBrowserAppId(n){return n?`org.gjsify.browser.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Browser`}function generateEntry(n,a,S,C,N){let F=S?`\n title: ${JSON.stringify(S)},`:``,I=a?`\n homeUrl: ${JSON.stringify(a)},`:``,H=C===void 0?``:`\n inspectorPort: ${C},`,W=N?`\n screenshot: ${JSON.stringify(N)},`:``;return`// Auto-generated by \`gjsify browse\` — do not edit by hand.
968
+ `}var $I,eL=__esmMin(()=>{_e(),gl(),Os(),__name$1(readPackage$1,`readPackage`),__name$1(deriveBrowserAppId$1,`deriveBrowserAppId`),__name$1(generateEntry$1,`generateEntry`),$I={command:`debug`,description:`Launch an MCP bridge for a devtools-enabled gjsify app (org.gjsify.Devtools).`,builder:n=>n.option(`bus-name`,{description:`App DBus base name (default: gjsify.devtools.busNameBase, or the storybook app-id)`,type:`string`}).option(`address`,{description:`Peer D-Bus address of the app (unix:path=… / nonce-tcp:…) instead of the session bus — for macOS/Windows, which have no session bus. Default: GJSIFY_DEVTOOLS_ADDRESS, then the address file the app publishes, then the session bus`,type:`string`}).option(`profile`,{description:`Tool profile: generic | storybook | browser | cdp (default: auto — storybook if @gjsify/storybook is a dep, browser if @gjsify/devtools-browser is, cdp if @gjsify/devtools-cdp is, else generic)`,type:`string`}).option(`globals`,{description:"Value for `gjsify build --globals` (default: auto)",type:`string`}).option(`out`,{description:`Output bundle path (default: node_modules/.cache/gjsify-debug)`,type:`string`}).option(`build-only`,{description:`Build the bridge bundle but do not launch it (for a .mcp.json command pointing at the bundle)`,type:`boolean`,default:!1}),handler:async n=>{let a=process.cwd(),S=readPackage$1(a),C=S.gjsify?.devtools??{},N=n.profile??C.profile??(hasDep(S,`@gjsify/storybook`)?`storybook`:hasDep(S,`@gjsify/devtools-browser`)?`browser`:hasDep(S,`@gjsify/devtools-cdp`)?`cdp`:`generic`),F=n.busName??C.busNameBase??(N===`storybook`?S.gjsify?.storybook?.applicationId??deriveStorybookAppId(S.name):N===`browser`||N===`cdp`?S.gjsify?.browse?.applicationId??deriveBrowserAppId$1(S.name):void 0);if(!F)return ge.error(`gjsify debug: no bus name — set package.json#gjsify.devtools.busNameBase or pass --bus-name <org.example.App>`),process.exit(1);let I=n.globals??C.globals??`auto`,H=S.name?`${S.name}-devtools`:`gjsify-devtools`,W=_s(a,`node_modules`,`.cache`,`gjsify-debug`);mkdirSync(W,{recursive:!0});let K=_s(W,`entry.ts`),q=n.out?ms(a,n.out):_s(W,`bridge.gjs.mjs`),Y=n.address??C.address;writeFileSync(K,generateEntry$1(N,F,H,`0.8.0`,Y)),ge.error(`[gjsify debug] profile=${N} bus=${F}${Y?` address=${Y}`:``}`);let{runCli:X}=await Promise.resolve().then(()=>(sL(),oL));if(await X([`build`,K,`--app`,`gjs`,`--shebang`,`--globals`,I,`--outfile`,q]),n.buildOnly){ge.error(`[gjsify debug] built ${q}`);return}let{runGjsBundle:te}=await Promise.resolve().then(()=>(TM(),wM));await te(q,[],{exitOnSuccess:!0})}}});function readPackage(n){try{return JSON.parse(readFileSync(_s(n,`package.json`),`utf8`))}catch{return{}}}function deriveBrowserAppId(n){return n?`org.gjsify.browser.${n.replace(/^@/,``).replace(/[^a-zA-Z0-9]+/g,`.`).replace(/^\.+|\.+$/g,``)}`:`org.gjsify.Browser`}function generateEntry(n,a,S,C,N){let F=S?`\n title: ${JSON.stringify(S)},`:``,I=a?`\n homeUrl: ${JSON.stringify(a)},`:``,H=C===void 0?``:`\n inspectorPort: ${C},`,W=N?`\n screenshot: ${JSON.stringify(N)},`:``;return`// Auto-generated by \`gjsify browse\` — do not edit by hand.
966
969
  import { runBrowserDevtools } from '@gjsify/devtools-browser';
967
970
 
968
971
  await runBrowserDevtools({