@gjsify/cli 0.36.0 → 0.37.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.
Files changed (116) hide show
  1. package/dist/cli.gjs.mjs +3 -3
  2. package/lib/bundler-pick.js +61 -87
  3. package/lib/cli-fail.d.ts +4 -7
  4. package/lib/cli-fail.js +29 -55
  5. package/lib/commands/affected.js +161 -286
  6. package/lib/commands/install.d.ts +63 -66
  7. package/lib/commands/install.js +372 -536
  8. package/lib/templates/install.mjs.tmpl +38 -68
  9. package/lib/types/cli-build-options.d.ts +33 -67
  10. package/lib/types/command.d.ts +9 -12
  11. package/lib/types/config-data.d.ts +125 -221
  12. package/lib/utils/auth-npmrc.d.ts +5 -10
  13. package/lib/utils/auth-npmrc.js +11 -21
  14. package/lib/utils/clear-targets.d.ts +8 -11
  15. package/lib/utils/clear-targets.js +22 -29
  16. package/lib/utils/copy-targets.d.ts +13 -19
  17. package/lib/utils/copy-targets.js +31 -44
  18. package/lib/utils/dep-aggregation.d.ts +7 -15
  19. package/lib/utils/dep-aggregation.js +9 -22
  20. package/lib/utils/detect-native-packages.d.ts +83 -116
  21. package/lib/utils/detect-native-packages.js +111 -149
  22. package/lib/utils/dir-link.d.ts +29 -48
  23. package/lib/utils/dir-link.js +33 -56
  24. package/lib/utils/discover-showcases.d.ts +6 -7
  25. package/lib/utils/discover-showcases.js +11 -15
  26. package/lib/utils/dlx-cache.d.ts +29 -38
  27. package/lib/utils/dlx-cache.js +53 -63
  28. package/lib/utils/force-exit.d.ts +0 -3
  29. package/lib/utils/force-exit.js +13 -24
  30. package/lib/utils/gi-search-path.d.ts +16 -24
  31. package/lib/utils/gi-search-path.js +54 -82
  32. package/lib/utils/gjs-bundle-guard.d.ts +5 -13
  33. package/lib/utils/gjs-bundle-guard.js +35 -57
  34. package/lib/utils/gjs-source-escape.d.ts +2 -2
  35. package/lib/utils/gjs-source-escape.js +21 -39
  36. package/lib/utils/gjsify-shim.d.ts +17 -20
  37. package/lib/utils/gjsify-shim.js +80 -120
  38. package/lib/utils/html-entry.d.ts +8 -12
  39. package/lib/utils/html-entry.js +19 -28
  40. package/lib/utils/install-backend-native.d.ts +123 -161
  41. package/lib/utils/install-backend-native.js +536 -737
  42. package/lib/utils/install-backend.d.ts +42 -57
  43. package/lib/utils/install-backend.js +16 -21
  44. package/lib/utils/install-cache-fs.d.ts +10 -15
  45. package/lib/utils/install-cache-fs.js +18 -26
  46. package/lib/utils/install-lock.d.ts +5 -6
  47. package/lib/utils/install-lock.js +46 -65
  48. package/lib/utils/install-packument-cache.d.ts +27 -33
  49. package/lib/utils/install-packument-cache.js +44 -57
  50. package/lib/utils/install-progress.d.ts +2 -9
  51. package/lib/utils/install-progress.js +14 -39
  52. package/lib/utils/install-tarball-cache.d.ts +14 -20
  53. package/lib/utils/install-tarball-cache.js +41 -59
  54. package/lib/utils/library-output.d.ts +9 -22
  55. package/lib/utils/library-output.js +19 -37
  56. package/lib/utils/load-npmrc.d.ts +5 -6
  57. package/lib/utils/load-npmrc.js +18 -27
  58. package/lib/utils/node-bundle-guard.d.ts +4 -8
  59. package/lib/utils/node-bundle-guard.js +21 -35
  60. package/lib/utils/node-script.js +33 -54
  61. package/lib/utils/node-version.d.ts +5 -14
  62. package/lib/utils/node-version.js +15 -24
  63. package/lib/utils/normalize-bundler-options.d.ts +7 -11
  64. package/lib/utils/normalize-bundler-options.js +24 -42
  65. package/lib/utils/npm-oidc.d.ts +23 -37
  66. package/lib/utils/npm-oidc.js +28 -53
  67. package/lib/utils/npm-otp-cache.d.ts +4 -4
  68. package/lib/utils/npm-otp-cache.js +20 -25
  69. package/lib/utils/npm-otp.d.ts +20 -30
  70. package/lib/utils/npm-otp.js +32 -51
  71. package/lib/utils/onboard-probe.d.ts +7 -13
  72. package/lib/utils/onboard-probe.js +16 -27
  73. package/lib/utils/parse-spec.d.ts +3 -3
  74. package/lib/utils/parse-spec.js +4 -5
  75. package/lib/utils/pkg-json-edit.d.ts +7 -12
  76. package/lib/utils/pkg-json-edit.js +13 -26
  77. package/lib/utils/pkg-json.d.ts +11 -18
  78. package/lib/utils/pkg-json.js +19 -28
  79. package/lib/utils/prefixed-output.d.ts +3 -4
  80. package/lib/utils/prefixed-output.js +13 -19
  81. package/lib/utils/prompt.d.ts +3 -4
  82. package/lib/utils/prompt.js +14 -18
  83. package/lib/utils/publish-diagnose.d.ts +11 -16
  84. package/lib/utils/publish-diagnose.js +15 -28
  85. package/lib/utils/publish-headers.d.ts +7 -11
  86. package/lib/utils/publish-headers.js +36 -65
  87. package/lib/utils/publishable-packages.d.ts +4 -6
  88. package/lib/utils/publishable-packages.js +14 -18
  89. package/lib/utils/resolve-gjs-entry.d.ts +5 -8
  90. package/lib/utils/resolve-gjs-entry.js +10 -27
  91. package/lib/utils/resolve-npm-package.d.ts +6 -11
  92. package/lib/utils/resolve-npm-package.js +29 -63
  93. package/lib/utils/resolve-plugin-by-name.d.ts +11 -19
  94. package/lib/utils/resolve-plugin-by-name.js +9 -14
  95. package/lib/utils/run-gjs.d.ts +16 -21
  96. package/lib/utils/run-gjs.js +31 -56
  97. package/lib/utils/run-lifecycle-script.d.ts +5 -9
  98. package/lib/utils/run-lifecycle-script.js +23 -42
  99. package/lib/utils/run-node.d.ts +21 -33
  100. package/lib/utils/run-node.js +43 -64
  101. package/lib/utils/runtimes.d.ts +25 -35
  102. package/lib/utils/runtimes.js +34 -46
  103. package/lib/utils/spawn.d.ts +32 -48
  104. package/lib/utils/spawn.js +51 -84
  105. package/lib/utils/stdin.d.ts +2 -2
  106. package/lib/utils/stdin.js +10 -25
  107. package/lib/utils/suggest.d.ts +6 -7
  108. package/lib/utils/suggest.js +8 -10
  109. package/lib/utils/system-gi.d.ts +18 -27
  110. package/lib/utils/system-gi.js +60 -114
  111. package/lib/utils/trust-registry.d.ts +4 -8
  112. package/lib/utils/trust-registry.js +7 -15
  113. package/lib/utils/win32-command.d.ts +8 -14
  114. package/lib/utils/win32-command.js +29 -43
  115. package/lib/utils/workspace-root.js +7 -12
  116. package/package.json +18 -18
package/dist/cli.gjs.mjs CHANGED
@@ -36,7 +36,7 @@ function tokenizeArgString(n){if(Array.isArray(n))return n.map(n=>typeof n==`str
36
36
  * SPDX-License-Identifier: ISC
37
37
  */
38
38
  function combineAliases(n){let a=[],S=Object.create(null),C=!0;for(Object.keys(n).forEach(function(S){a.push([].concat(n[S],S))});C;){C=!1;for(let n=0;n<a.length;n++)for(let S=n+1;S<a.length;S++)if(a[n].filter(function(n){return a[S].indexOf(n)!==-1}).length){a[n]=a[n].concat(a[S]),a.splice(S,1),C=!0;break}}return a.forEach(function(n){n=n.filter(function(n,a,S){return S.indexOf(n)===a});let a=n.pop();a!==void 0&&typeof a==`string`&&(S[a]=n)}),S}function increment$1(n){return n===void 0?1:n+1}function sanitizeKey(n){return n===`__proto__`?`___proto___`:n}function stripQuotes$1(n){return typeof n==`string`&&(n[0]===`'`||n[0]===`"`)&&n[n.length-1]===n[0]?n.substring(1,n.length-1):n}var Sc,YargsParser,Cc=__esmMin(()=>{yc(),xc(),vc(),YargsParser=class{constructor(n){Sc=n}parse(n,a){let S=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},a),C=tokenizeArgString(n),N=typeof n==`string`,F=combineAliases(Object.assign(Object.create(null),S.alias)),I=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":`no-`,"parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},S.configuration),H=Object.assign(Object.create(null),S.default),W=S.configObjects||[],K=S.envPrefix,q=I[`populate--`],Y=q?`--`:`_`,X=Object.create(null),te=Object.create(null),ne=S.__||Sc.format,re={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},ie=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,ae=RegExp(`^--`+I[`negation-prefix`]+`(.+)`);[].concat(S.array||[]).filter(Boolean).forEach(function(n){let a=typeof n==`object`?n.key:n,S=Object.keys(n).map(function(n){return{boolean:`bools`,string:`strings`,number:`numbers`}[n]}).filter(Boolean).pop();S&&(re[S][a]=!0),re.arrays[a]=!0,re.keys.push(a)}),[].concat(S.boolean||[]).filter(Boolean).forEach(function(n){re.bools[n]=!0,re.keys.push(n)}),[].concat(S.string||[]).filter(Boolean).forEach(function(n){re.strings[n]=!0,re.keys.push(n)}),[].concat(S.number||[]).filter(Boolean).forEach(function(n){re.numbers[n]=!0,re.keys.push(n)}),[].concat(S.count||[]).filter(Boolean).forEach(function(n){re.counts[n]=!0,re.keys.push(n)}),[].concat(S.normalize||[]).filter(Boolean).forEach(function(n){re.normalize[n]=!0,re.keys.push(n)}),typeof S.narg==`object`&&Object.entries(S.narg).forEach(([n,a])=>{typeof a==`number`&&(re.nargs[n]=a,re.keys.push(n))}),typeof S.coerce==`object`&&Object.entries(S.coerce).forEach(([n,a])=>{typeof a==`function`&&(re.coercions[n]=a,re.keys.push(n))}),S.config!==void 0&&(Array.isArray(S.config)||typeof S.config==`string`?[].concat(S.config).filter(Boolean).forEach(function(n){re.configs[n]=!0}):typeof S.config==`object`&&Object.entries(S.config).forEach(([n,a])=>{(typeof a==`boolean`||typeof a==`function`)&&(re.configs[n]=a)})),extendAliases(S.key,F,S.default,re.arrays),Object.keys(H).forEach(function(n){(re.aliases[n]||[]).forEach(function(a){H[a]=H[n]})});let oe=null;checkConfiguration();let Z=[],se=Object.assign(Object.create(null),{_:[]}),ce={};for(let n=0;n<C.length;n++){let a=C[n],S=a.replace(/^-{3,}/,`---`),N,F,H,W,K,q;if(a!==`--`&&/^-/.test(a)&&isUnknownOptionAsArg(a))pushPositional(a);else if(S.match(/^---+(=|$)/)){pushPositional(a);continue}else if(a.match(/^--.+=/)||!I[`short-option-groups`]&&a.match(/^-.+=/))W=a.match(/^--?([^=]+)=([\s\S]*)$/),W!==null&&Array.isArray(W)&&W.length>=3&&(checkAllAliases(W[1],re.arrays)?n=eatArray(n,W[1],C,W[2]):checkAllAliases(W[1],re.nargs)===!1?setArg(W[1],W[2],!0):n=eatNargs(n,W[1],C,W[2]));else if(a.match(ae)&&I[`boolean-negation`])W=a.match(ae),W!==null&&Array.isArray(W)&&W.length>=2&&(F=W[1],setArg(F,checkAllAliases(F,re.arrays)?[!1]:!1));else if(a.match(/^--.+/)||!I[`short-option-groups`]&&a.match(/^-[^-]+/))W=a.match(/^--?(.+)/),W!==null&&Array.isArray(W)&&W.length>=2&&(F=W[1],checkAllAliases(F,re.arrays)?n=eatArray(n,F,C):checkAllAliases(F,re.nargs)===!1?(K=C[n+1],K!==void 0&&(!K.match(/^-/)||K.match(ie))&&!checkAllAliases(F,re.bools)&&!checkAllAliases(F,re.counts)||/^(true|false)$/.test(K)?(setArg(F,K),n++):setArg(F,defaultValue(F))):n=eatNargs(n,F,C));else if(a.match(/^-.\..+=/))W=a.match(/^-([^=]+)=([\s\S]*)$/),W!==null&&Array.isArray(W)&&W.length>=3&&setArg(W[1],W[2]);else if(a.match(/^-.\..+/)&&!a.match(ie))K=C[n+1],W=a.match(/^-(.\..+)/),W!==null&&Array.isArray(W)&&W.length>=2&&(F=W[1],K!==void 0&&!K.match(/^-/)&&!checkAllAliases(F,re.bools)&&!checkAllAliases(F,re.counts)?(setArg(F,K),n++):setArg(F,defaultValue(F)));else if(a.match(/^-[^-]+/)&&!a.match(ie)){H=a.slice(1,-1).split(``),N=!1;for(let S=0;S<H.length;S++){if(K=a.slice(S+2),H[S+1]&&H[S+1]===`=`){q=a.slice(S+3),F=H[S],checkAllAliases(F,re.arrays)?n=eatArray(n,F,C,q):checkAllAliases(F,re.nargs)===!1?setArg(F,q):n=eatNargs(n,F,C,q),N=!0;break}if(K===`-`){setArg(H[S],K);continue}if(/[A-Za-z]/.test(H[S])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(K)&&checkAllAliases(K,re.bools)===!1){setArg(H[S],K),N=!0;break}if(H[S+1]&&H[S+1].match(/\W/)){setArg(H[S],K),N=!0;break}else setArg(H[S],defaultValue(H[S]))}F=a.slice(-1)[0],!N&&F!==`-`&&(checkAllAliases(F,re.arrays)?n=eatArray(n,F,C):checkAllAliases(F,re.nargs)===!1?(K=C[n+1],K!==void 0&&(!/^(-|--)[^-]/.test(K)||K.match(ie))&&!checkAllAliases(F,re.bools)&&!checkAllAliases(F,re.counts)||/^(true|false)$/.test(K)?(setArg(F,K),n++):setArg(F,defaultValue(F))):n=eatNargs(n,F,C))}else if(a.match(/^-[0-9]$/)&&a.match(ie)&&checkAllAliases(a.slice(1),re.bools))F=a.slice(1),setArg(F,defaultValue(F));else if(a===`--`){Z=C.slice(n+1);break}else if(I[`halt-at-non-option`]){Z=C.slice(n);break}else pushPositional(a)}applyEnvVars(se,!0),applyEnvVars(se,!1),setConfig(se),setConfigObjects(),applyDefaultsAndAliases(se,re.aliases,H,!0),applyCoercions(se),I[`set-placeholder-key`]&&setPlaceholderKeys(se),Object.keys(re.counts).forEach(function(n){hasKey(se,n.split(`.`))||setArg(n,0)}),q&&Z.length&&(se[Y]=[]),Z.forEach(function(n){se[Y].push(n)}),I[`camel-case-expansion`]&&I[`strip-dashed`]&&Object.keys(se).filter(n=>n!==`--`&&n.includes(`-`)).forEach(n=>{delete se[n]}),I[`strip-aliased`]&&[].concat(...Object.keys(F).map(n=>F[n])).forEach(n=>{I[`camel-case-expansion`]&&n.includes(`-`)&&delete se[n.split(`.`).map(n=>camelCase(n)).join(`.`)],delete se[n]});function pushPositional(n){let a=maybeCoerceNumber(`_`,n);(typeof a==`string`||typeof a==`number`)&&se._.push(a)}function eatNargs(n,a,S,C){let N,F=checkAllAliases(a,re.nargs);if(F=typeof F!=`number`||isNaN(F)?1:F,F===0)return isUndefined(C)||(oe=Error(ne(`Argument unexpected for: %s`,a))),setArg(a,defaultValue(a)),n;let H=+!isUndefined(C);if(I[`nargs-eats-options`])S.length-(n+1)+H<F&&(oe=Error(ne(`Not enough arguments following: %s`,a))),H=F;else{for(N=n+1;N<S.length&&(!S[N].match(/^-[^0-9]/)||S[N].match(ie)||isUnknownOptionAsArg(S[N]));N++)H++;H<F&&(oe=Error(ne(`Not enough arguments following: %s`,a)))}let W=Math.min(H,F);for(!isUndefined(C)&&W>0&&(setArg(a,C),W--),N=n+1;N<W+n+1;N++)setArg(a,S[N]);return n+W}function eatArray(n,a,S,C){let F=[],W=C||S[n+1],K=checkAllAliases(a,re.nargs);if(checkAllAliases(a,re.bools)&&!/^(true|false)$/.test(W))F.push(!0);else if(isUndefined(W)||isUndefined(C)&&/^-/.test(W)&&!ie.test(W)&&!isUnknownOptionAsArg(W)){if(H[a]!==void 0){let n=H[a];F=Array.isArray(n)?n:[n]}}else{isUndefined(C)||F.push(processValue(a,C,!0));for(let C=n+1;C<S.length&&!(!I[`greedy-arrays`]&&F.length>0||K&&typeof K==`number`&&F.length>=K||(W=S[C],/^-/.test(W)&&!ie.test(W)&&!isUnknownOptionAsArg(W)));C++)n=C,F.push(processValue(a,W,N))}return typeof K==`number`&&(K&&F.length<K||isNaN(K)&&F.length===0)&&(oe=Error(ne(`Not enough arguments following: %s`,a))),setArg(a,F),n}function setArg(n,a,S=N){/-/.test(n)&&I[`camel-case-expansion`]&&addNewAlias(n,n.split(`.`).map(function(n){return camelCase(n)}).join(`.`));let C=processValue(n,a,S),F=n.split(`.`);setKey(se,F,C),re.aliases[n]&&re.aliases[n].forEach(function(n){let a=n.split(`.`);setKey(se,a,C)}),F.length>1&&I[`dot-notation`]&&(re.aliases[F[0]]||[]).forEach(function(a){let S=a.split(`.`),N=[].concat(F);N.shift(),S=S.concat(N),(re.aliases[n]||[]).includes(S.join(`.`))||setKey(se,S,C)}),checkAllAliases(n,re.normalize)&&!checkAllAliases(n,re.arrays)&&[n].concat(re.aliases[n]||[]).forEach(function(n){Object.defineProperty(ce,n,{enumerable:!0,get(){return a},set(n){a=typeof n==`string`?Sc.normalize(n):n}})})}function addNewAlias(n,a){re.aliases[n]&&re.aliases[n].length||(re.aliases[n]=[a],X[a]=!0),re.aliases[a]&&re.aliases[a].length||addNewAlias(a,n)}function processValue(n,a,S){S&&(a=stripQuotes$1(a)),(checkAllAliases(n,re.bools)||checkAllAliases(n,re.counts))&&typeof a==`string`&&(a=a===`true`);let C=Array.isArray(a)?a.map(function(a){return maybeCoerceNumber(n,a)}):maybeCoerceNumber(n,a);return checkAllAliases(n,re.counts)&&(isUndefined(C)||typeof C==`boolean`)&&(C=increment$1()),checkAllAliases(n,re.normalize)&&checkAllAliases(n,re.arrays)&&(C=Array.isArray(a)?a.map(n=>Sc.normalize(n)):Sc.normalize(a)),C}function maybeCoerceNumber(n,a){return!I[`parse-positional-numbers`]&&n===`_`||!checkAllAliases(n,re.strings)&&!checkAllAliases(n,re.bools)&&!Array.isArray(a)&&(looksLikeNumber(a)&&I[`parse-numbers`]&&Number.isSafeInteger(Math.floor(parseFloat(`${a}`)))||!isUndefined(a)&&checkAllAliases(n,re.numbers))&&(a=Number(a)),a}function setConfig(n){let a=Object.create(null);applyDefaultsAndAliases(a,re.aliases,H),Object.keys(re.configs).forEach(function(S){let C=n[S]||a[S];if(C)try{let n=null,a=Sc.resolve(Sc.cwd(),C),N=re.configs[S];if(typeof N==`function`){try{n=N(a)}catch(a){n=a}if(n instanceof Error){oe=n;return}}else n=Sc.require(a);setConfigObject(n)}catch(a){a.name===`PermissionDenied`?oe=a:n[S]&&(oe=Error(ne(`Invalid JSON config file: %s`,C)))}})}function setConfigObject(n,a){Object.keys(n).forEach(function(S){let C=n[S],N=a?a+`.`+S:S;typeof C==`object`&&C&&!Array.isArray(C)&&I[`dot-notation`]?setConfigObject(C,N):(!hasKey(se,N.split(`.`))||checkAllAliases(N,re.arrays)&&I[`combine-arrays`])&&setArg(N,C)})}function setConfigObjects(){W!==void 0&&W.forEach(function(n){setConfigObject(n)})}function applyEnvVars(n,a){if(K===void 0)return;let S=typeof K==`string`?K:``,C=Sc.env();Object.keys(C).forEach(function(N){if(S===``||N.lastIndexOf(S,0)===0){let F=N.split(`__`).map(function(n,a){return a===0&&(n=n.substring(S.length)),camelCase(n)});(a&&re.configs[F.join(`.`)]||!a)&&!hasKey(n,F)&&setArg(F.join(`.`),C[N])}})}function applyCoercions(n){let a,S=new Set;Object.keys(n).forEach(function(C){if(!S.has(C)&&(a=checkAllAliases(C,re.coercions),typeof a==`function`))try{let N=maybeCoerceNumber(C,a(n[C]));[].concat(re.aliases[C]||[],C).forEach(a=>{S.add(a),n[a]=N})}catch(n){oe=n}})}function setPlaceholderKeys(n){return re.keys.forEach(a=>{~a.indexOf(`.`)||n[a]===void 0&&(n[a]=void 0)}),n}function applyDefaultsAndAliases(n,a,S,C=!1){Object.keys(S).forEach(function(N){hasKey(n,N.split(`.`))||(setKey(n,N.split(`.`),S[N]),C&&(te[N]=!0),(a[N]||[]).forEach(function(a){hasKey(n,a.split(`.`))||setKey(n,a.split(`.`),S[N])}))})}function hasKey(n,a){let S=n;I[`dot-notation`]||(a=[a.join(`.`)]),a.slice(0,-1).forEach(function(n){S=S[n]||{}});let C=a[a.length-1];return typeof S==`object`?C in S:!1}function setKey(n,a,S){let C=n;I[`dot-notation`]||(a=[a.join(`.`)]),a.slice(0,-1).forEach(function(n){n=sanitizeKey(n),typeof C==`object`&&C[n]===void 0&&(C[n]={}),typeof C[n]!=`object`||Array.isArray(C[n])?(Array.isArray(C[n])?C[n].push({}):C[n]=[C[n],{}],C=C[n][C[n].length-1]):C=C[n]});let N=sanitizeKey(a[a.length-1]),F=checkAllAliases(a.join(`.`),re.arrays),H=Array.isArray(S),W=I[`duplicate-arguments-array`];!W&&checkAllAliases(N,re.nargs)&&(W=!0,(!isUndefined(C[N])&&re.nargs[N]===1||Array.isArray(C[N])&&C[N].length===re.nargs[N])&&(C[N]=void 0)),S===increment$1()?C[N]=increment$1(C[N]):Array.isArray(C[N])?W&&F&&H?C[N]=I[`flatten-duplicate-arrays`]?C[N].concat(S):(Array.isArray(C[N][0])?C[N]:[C[N]]).concat([S]):!W&&!!F==!!H?C[N]=S:C[N]=C[N].concat([S]):C[N]===void 0&&F?C[N]=H?S:[S]:W&&!(C[N]===void 0||checkAllAliases(N,re.counts)||checkAllAliases(N,re.bools))?C[N]=[C[N],S]:C[N]=S}function extendAliases(...n){n.forEach(function(n){Object.keys(n||{}).forEach(function(n){re.aliases[n]||(re.aliases[n]=[].concat(F[n]||[]),re.aliases[n].concat(n).forEach(function(a){if(/-/.test(a)&&I[`camel-case-expansion`]){let S=camelCase(a);S!==n&&re.aliases[n].indexOf(S)===-1&&(re.aliases[n].push(S),X[S]=!0)}}),re.aliases[n].concat(n).forEach(function(a){if(a.length>1&&/[A-Z]/.test(a)&&I[`camel-case-expansion`]){let S=decamelize(a,`-`);S!==n&&re.aliases[n].indexOf(S)===-1&&(re.aliases[n].push(S),X[S]=!0)}}),re.aliases[n].forEach(function(a){re.aliases[a]=[n].concat(re.aliases[n].filter(function(n){return a!==n}))}))})})}function checkAllAliases(n,a){let S=[].concat(re.aliases[n]||[],n),C=Object.keys(a),N=S.find(n=>C.includes(n));return N?a[N]:!1}function hasAnyFlag(n){let a=Object.keys(re);return[].concat(a.map(n=>re[n])).some(function(a){return Array.isArray(a)?a.includes(n):a[n]})}function hasFlagsMatching(n,...a){return[].concat(...a).some(function(a){let S=n.match(a);return S&&hasAnyFlag(S[1])})}function hasAllShortFlags(n){if(n.match(ie)||!n.match(/^-[^-]+/))return!1;let a=!0,S,C=n.slice(1).split(``);for(let N=0;N<C.length;N++){if(S=n.slice(N+2),!hasAnyFlag(C[N])){a=!1;break}if(C[N+1]&&C[N+1]===`=`||S===`-`||/[A-Za-z]/.test(C[N])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(S)||C[N+1]&&C[N+1].match(/\W/))break}return a}function isUnknownOptionAsArg(n){return I[`unknown-options-as-args`]&&isUnknownOption(n)}function isUnknownOption(n){return n=n.replace(/^-{3,}/,`--`),n.match(ie)||hasAllShortFlags(n)?!1:!hasFlagsMatching(n,/^-+([^=]+?)=[\s\S]*$/,ae,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function defaultValue(n){return!checkAllAliases(n,re.bools)&&!checkAllAliases(n,re.counts)&&`${n}`in H?H[n]:defaultForType(guessType(n))}function defaultForType(n){return{[bc.BOOLEAN]:!0,[bc.STRING]:``,[bc.NUMBER]:void 0,[bc.ARRAY]:[]}[n]}function guessType(n){let a=bc.BOOLEAN;return checkAllAliases(n,re.strings)?a=bc.STRING:checkAllAliases(n,re.numbers)?a=bc.NUMBER:checkAllAliases(n,re.bools)?a=bc.BOOLEAN:checkAllAliases(n,re.arrays)&&(a=bc.ARRAY),a}function isUndefined(n){return n===void 0}function checkConfiguration(){Object.keys(re.counts).find(n=>checkAllAliases(n,re.arrays)?(oe=Error(ne(`Invalid configuration: %s, opts.count excludes opts.array.`,n)),!0):checkAllAliases(n,re.nargs)?(oe=Error(ne(`Invalid configuration: %s, opts.count excludes opts.narg.`,n)),!0):!1)}return{aliases:Object.assign({},re.aliases),argv:Object.assign(ce,se),configuration:I,defaulted:Object.assign({},te),error:oe,newAliases:Object.assign({},X)}}},__name$1(increment$1,`increment`),__name$1(stripQuotes$1,`stripQuotes`)}),wc,Tc,Ec=__esmMin(()=>{wc=Object.defineProperty,Tc=__name$1((n,a)=>{let S={};for(var C in n)wc(S,C,{get:n[C],enumerable:!0});return a||wc(S,Symbol.toStringTag,{value:`Module`}),S},`__exportAll`)});function normalizePath(n){return n instanceof URL||n instanceof nn?fileURLToPath(n):typeof n==`string`?n:n.toString()}function randomName(){return[...[,,,,,,]].map(()=>`0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`[Math.floor(Math.random()*62)]).join(``)}var Dc=__esmMin(()=>{an()});function changed(n,a,S,C){switch(C){case Er.FileMonitorEvent.CHANGES_DONE_HINT:this.emit(`change`,`change`,a.get_basename());break;case Er.FileMonitorEvent.DELETED:case Er.FileMonitorEvent.CREATED:case Er.FileMonitorEvent.RENAMED:case Er.FileMonitorEvent.MOVED_IN:case Er.FileMonitorEvent.MOVED_OUT:this.emit(`change`,`rename`,a.get_basename());break}}function gioEventToNodeType(n){switch(n){case Er.FileMonitorEvent.CHANGES_DONE_HINT:return`change`;case Er.FileMonitorEvent.DELETED:case Er.FileMonitorEvent.CREATED:case Er.FileMonitorEvent.RENAMED:case Er.FileMonitorEvent.MOVED_IN:case Er.FileMonitorEvent.MOVED_OUT:return`rename`;default:return null}}async function*watchAsync(n,a){let S=a?.signal;if(S?.aborted)return;let C=normalizePath(n),N=Er.File.new_for_path(C),F=Er.Cancellable.new(),I;try{I=N.monitor(Er.FileMonitorFlags.NONE,F)}catch{return}let H=[],W=[],K=!1;function enqueue(n){K||(W.length>0?W.shift().resolve({value:n,done:!1}):H.push(n))}function terminate(){if(!K)for(K=!0,F.is_cancelled()||F.cancel();W.length>0;)W.shift().resolve({value:void 0,done:!0})}let q=I.connect(`changed`,(n,a,S,C)=>{let N=gioEventToNodeType(C);N!==null&&enqueue({eventType:N,filename:a?.get_basename()??null})}),abortHandler=()=>terminate();S?.addEventListener(`abort`,abortHandler);try{for(;!K;){if(H.length>0){yield H.shift();continue}let n=await new Promise(n=>{W.push({resolve:n})});if(n.done)break;yield n.value}}finally{S?.removeEventListener(`abort`,abortHandler),I.disconnect(q),F.is_cancelled()||F.cancel()}}var Oc,FSWatcher,kc=__esmMin(()=>{Dc(),st(),Dr(),Lt(),Oc=new WeakMap,FSWatcher=class extends Et{constructor(n,a,S){super(),(!a||typeof a!=`object`)&&(a={persistent:!0});let C=a.persistent!==!1,N=Er.Cancellable.new(),F=normalizePath(n),I=Er.File.new_for_path(F).monitor(Er.FileMonitorFlags.NONE,N);I.connect(`changed`,changed.bind(this));let H=null;C&&(H=ot.timeout_add(ot.PRIORITY_LOW,2147483647,()=>ot.SOURCE_CONTINUE)),Oc.set(this,{persistent:C,cancellable:N,sourceId:H,watcher:I}),S&&this.on(`change`,S)}close(){let n=Oc.get(this);n.cancellable.is_cancelled()||(n.cancellable.cancel(),n.sourceId!==null&&(ot.source_remove(n.sourceId),n.sourceId=null))}ref(){let n=Oc.get(this);return!n.persistent&&!n.cancellable.is_cancelled()&&(n.persistent=!0,n.sourceId=ot.timeout_add(ot.PRIORITY_LOW,2147483647,()=>ot.SOURCE_CONTINUE)),this}unref(){let n=Oc.get(this);return n.persistent&&(n.persistent=!1,n.sourceId!==null&&(ot.source_remove(n.sourceId),n.sourceId=null)),this}}}),Ac=__exportAll$4({lchmod:()=>void 0,lchmodAsync:()=>lchmodAsync,lchmodSync:()=>void 0,lchown:()=>lchown,lchownAsync:()=>lchownAsync,lchownSync:()=>lchownSync,lutimes:()=>lutimes,lutimesAsync:()=>lutimesAsync,lutimesSync:()=>lutimesSync,utimes:()=>utimes,utimesAsync:()=>utimesAsync,utimesSync:()=>utimesSync});function toGLibDateTime(n){let a=n instanceof Date?n.getTime():typeof n==`bigint`?Number(n):typeof n==`string`?Date.parse(n):n*1e3;return ot.DateTime.new_from_unix_utc(Math.floor(a/1e3))}function setTimestamps(n,a,S,C){let N=Er.File.new_for_path(n),F=new Er.FileInfo;F.set_modification_date_time(toGLibDateTime(S)),F.set_access_date_time(toGLibDateTime(a)),N.set_attributes_from_info(F,C,null)}function utimesSync(n,a,S){setTimestamps(normalizePath(n),a,S,Er.FileQueryInfoFlags.NONE)}function utimes(n,a,S,C){Promise.resolve().then(()=>utimesSync(n,a,S)).then(()=>C(null),C)}async function utimesAsync(n,a,S){utimesSync(n,a,S)}function lutimesSync(n,a,S){setTimestamps(normalizePath(n),a,S,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS)}function lutimes(n,a,S,C){Promise.resolve().then(()=>lutimesSync(n,a,S)).then(()=>C(null),C)}async function lutimesAsync(n,a,S){lutimesSync(n,a,S)}function lchownSync(n,a,S){let C=normalizePath(n),N=Er.File.new_for_path(C),F=new Er.FileInfo;a!==-1&&F.set_attribute_uint32(`unix::uid`,a),S!==-1&&F.set_attribute_uint32(`unix::gid`,S),N.set_attributes_from_info(F,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}function lchown(n,a,S,C){Promise.resolve().then(()=>lchownSync(n,a,S)).then(()=>C(null),C)}async function lchownAsync(n,a,S){lchownSync(n,a,S)}function lchmodUnsupported(){let n=Error(`The lchmod() method is not implemented`);return n.code=`ERR_METHOD_NOT_IMPLEMENTED`,n}async function lchmodAsync(n,a){throw lchmodUnsupported()}var jc=__esmMin(()=>{Dc(),st(),Dr()});function isStdFd(n){return n===0||n===1||n===2}function stdinInput(){return Mc||=ea.InputStream.new(0,!1),Mc}function stdOutput(n){return Nc[n]||(Nc[n]=ea.OutputStream.new(n,!1)),Nc[n]}function readStdFdAll(n){try{let a=n===0?stdinInput():ea.InputStream.new(n,!1),S=[],C=0;for(;;){let n=a.read_bytes(64*1024,null).get_data();if(!n||n.length===0)break;S.push(n),C+=n.length}return concat(S,C)}catch(a){if(n!==0)throw a;let[S,C]=Er.File.new_for_path(`/dev/stdin`).load_contents(null);if(!S)throw a;return C}}function readStdFdSync(n,a,S,C){let N=(n===0?stdinInput():ea.InputStream.new(n,!1)).read_bytes(C,null).get_data();return N&&N.length>0?(new Uint8Array(a.buffer,a.byteOffset+S).set(N),N.length):0}function writeStdFdSync(n,a){return stdOutput(n).write_bytes(ot.Bytes.new(a),null)}function concat(n,a){if(n.length===1)return n[0];let S=new Uint8Array(a),C=0;for(let a of n)S.set(a,C),C+=a.length;return S}var Mc,Nc,Pc=__esmMin(()=>{st(),Dr(),ta(),Mc=null,Nc={}});function getEncodingFromOptions(n={encoding:null,flag:`r`},a=`utf8`){return n===null?a:typeof n==`string`?n:typeof n==`object`&&typeof n.encoding==`string`?n.encoding:a}function encodeUint8Array(n,a){return n===`buffer`?qe.from(a):new TextDecoder(n).decode(a)}function decode(n,a){if(a){let S=new TextDecoder(a),C=new TextEncoder;return S.decode(C.encode(n))}else return n}var Fc=__esmMin(()=>{nt()});function createReadStream(n,a){return new ReadStream$1(n,a)}var ReadStream$1,Ic=__esmMin(()=>{Dc(),xl(),bl(),st(),Dr(),nt(),ii(),ReadStream$1=class extends Qr{static{__name$1(this,`ReadStream`)}bytesRead=0;path;pending=!0;fd=null;_ownFd=null;_autoCloseFd=!0;_positional=!1;_gioFile;_inputStream=null;_cancellable=new Er.Cancellable;_start;_end;_pos;_reading=!1;_readAgain=!1;_lastSize=64*1024;close(n){this._cancellable.cancel(),this._release(),this.destroy(),n&&n(null)}constructor(n,a){let S=normalizePath(n);super({highWaterMark:a?.highWaterMark??64*1024,encoding:a?.encoding,objectMode:!1}),this.path=S,this._gioFile=Er.File.new_for_path(S),this._start=a?.start??0,this._end=a?.end??1/0,this._pos=this._start,this._positional=a?.start!==void 0,typeof a?.fd==`number`&&(this._ownFd=a.fd,this.fd=a.fd,this._autoCloseFd=a.autoClose!==!1),this.once(`end`,()=>this._release())}_construct(n){if(this._ownFd!==null){this.pending=!1,n(),this.emit(`open`,this._ownFd),this.emit(`ready`);return}this._gioFile.read_async(ot.PRIORITY_DEFAULT,this._cancellable,(a,S)=>{if(this.destroyed){n();return}try{this._inputStream=this._gioFile.read_finish(S),this.pending=!1,this.emit(`open`,0),this.emit(`ready`),this._start>0&&this._inputStream.can_seek()&&this._inputStream.seek(this._start,ot.SeekType.SET,null),n()}catch(a){this._cancellable.is_cancelled()||n(a)}})}_read(n){if(this._lastSize=n,this._reading){this._readAgain=!0;return}this._doRead(n)}_doRead(n){if(this._ownFd!==null){if(this._reading||this.destroyed)return;this._reading=!0,ot.timeout_add(ot.PRIORITY_DEFAULT,0,()=>(this._reading=!1,this.destroyed||this._readThroughFd(n),ot.SOURCE_REMOVE));return}let a=n;if(this._end!==1/0){let S=this._end-this._pos+1;if(S<=0){this.push(null);return}a=Math.min(n,S)}let S=this._inputStream;!S||this.destroyed||(this._reading=!0,S.read_bytes_async(a,ot.PRIORITY_DEFAULT,this._cancellable,(n,a)=>{this._reading=!1;try{let n=S.read_bytes_finish(a).get_data();if(!n||n.length===0){this._readAgain=!1,this.push(null);return}this.bytesRead+=n.length,this._pos+=n.length,this.push(qe.from(n)),this._readAgain&&!this._reading&&(this._readAgain=!1,this._doRead(this._lastSize))}catch(n){this._readAgain=!1,this._cancellable.is_cancelled()||this.destroy(n)}}))}_readThroughFd(n){try{let a=n;if(this._end!==1/0){let S=this._end-this._pos+1;if(S<=0){this._readAgain=!1,this.push(null);return}a=Math.min(n,S)}let S=yl.getInstance(this._ownFd,`read`),C=qe.alloc(a),N=S._readSync(C,0,a,this._positional?this._pos:null);if(N===0){this._readAgain=!1,this.push(null);return}this.bytesRead+=N,this._pos+=N,this.push(C.subarray(0,N))}catch(n){this._readAgain=!1,this.destroy(n)}}_release(){this._inputStream&&=(this._inputStream.close_async(ot.PRIORITY_DEFAULT,null,()=>{}),null),this._releaseFd()}_releaseFd(){if(this._ownFd===null||!this._autoCloseFd)return;let n=this._ownFd;this._ownFd=null,this.fd=null;try{closeSync(n)}catch{}}_destroy(n,a){this._cancellable.cancel(),this._release(),a(n)}}});function openFlagValues(){return isWin32()?zc:isDarwin()?Rc:Lc}function stringFlagBits(n,a){switch(n){case`r`:return a.O_RDONLY;case`rs`:case`sr`:return a.O_RDONLY|a.O_SYNC;case`r+`:return a.O_RDWR;case`rs+`:case`sr+`:return a.O_RDWR|a.O_SYNC;case`w`:return a.O_TRUNC|a.O_CREAT|a.O_WRONLY;case`wx`:case`xw`:return a.O_TRUNC|a.O_CREAT|a.O_WRONLY|a.O_EXCL;case`w+`:return a.O_TRUNC|a.O_CREAT|a.O_RDWR;case`wx+`:case`xw+`:return a.O_TRUNC|a.O_CREAT|a.O_RDWR|a.O_EXCL;case`a`:return a.O_APPEND|a.O_CREAT|a.O_WRONLY;case`ax`:case`xa`:return a.O_APPEND|a.O_CREAT|a.O_WRONLY|a.O_EXCL;case`as`:case`sa`:return a.O_APPEND|a.O_CREAT|a.O_WRONLY|a.O_SYNC;case`a+`:return a.O_APPEND|a.O_CREAT|a.O_RDWR;case`ax+`:case`xa+`:return a.O_APPEND|a.O_CREAT|a.O_RDWR|a.O_EXCL;case`as+`:case`sa+`:return a.O_APPEND|a.O_CREAT|a.O_RDWR|a.O_SYNC;default:return}}function parseOpenFlags(n){let a=openFlagValues(),S;if(n==null)S=a.O_RDONLY;else if(typeof n==`number`)S=n;else{let C=stringFlagBits(n,a);if(C===void 0){let a=TypeError(`Unknown file open flag: ${n}`);throw a.code=`ERR_INVALID_ARG_VALUE`,a}S=C}let C=S&(a.O_RDONLY|a.O_WRONLY|a.O_RDWR);return{posix:S,readable:C===a.O_RDONLY||C===a.O_RDWR,writable:C===a.O_WRONLY||C===a.O_RDWR,append:(S&a.O_APPEND)!==0,creat:(S&a.O_CREAT)!==0,excl:(S&a.O_CREAT)!==0&&(S&a.O_EXCL)!==0,trunc:(S&a.O_TRUNC)!==0,nofollow:a.O_NOFOLLOW!==0&&(S&a.O_NOFOLLOW)!==0,directory:a.O_DIRECTORY!==0&&(S&a.O_DIRECTORY)!==0}}function normalizeMode(n,a){let S=n??a,C=S;if(typeof S==`string`){if(!/^[0-7]+$/.test(S))throw invalidMode(S);C=parseInt(S,8)}if(typeof C!=`number`)throw modeNotANumber(C);if(!Number.isInteger(C))throw modeOutOfRange(`an integer`,C);if(C<0||C>4294967295)throw modeOutOfRange(`>= 0 && <= 4294967295`,C);return C}function invalidMode(n){let a=TypeError(`The argument 'mode' must be a 32-bit unsigned integer or an octal string. Received '${n}'`);return a.code=`ERR_INVALID_ARG_VALUE`,a}function modeNotANumber(n){let a=n==null?String(n):`type ${typeof n} (${describeValue(n)})`,S=TypeError(`The "mode" argument must be of type number. Received ${a}`);return S.code=`ERR_INVALID_ARG_TYPE`,S}function describeValue(n){try{return typeof n==`object`?Object.prototype.toString.call(n):String(n)}catch{return`<unprintable>`}}function modeOutOfRange(n,a){let S=RangeError(`The value of "mode" is out of range. It must be ${n}. Received ${a}`);return S.code=`ERR_OUT_OF_RANGE`,S}var Lc,Rc,zc,Bc=__esmMin(()=>{Me(),Lc={O_RDONLY:0,O_WRONLY:1,O_RDWR:2,O_CREAT:64,O_EXCL:128,O_NOCTTY:256,O_TRUNC:512,O_APPEND:1024,O_NONBLOCK:2048,O_DSYNC:4096,O_SYNC:1052672,O_DIRECTORY:65536,O_NOFOLLOW:131072},Rc={O_RDONLY:0,O_WRONLY:1,O_RDWR:2,O_CREAT:512,O_EXCL:2048,O_NOCTTY:131072,O_TRUNC:1024,O_APPEND:8,O_NONBLOCK:4,O_DSYNC:4194304,O_SYNC:128,O_DIRECTORY:1048576,O_NOFOLLOW:256},zc={O_RDONLY:0,O_WRONLY:1,O_RDWR:2,O_CREAT:256,O_EXCL:1024,O_NOCTTY:0,O_TRUNC:512,O_APPEND:8,O_NONBLOCK:0,O_DSYNC:0,O_SYNC:0,O_DIRECTORY:0,O_NOFOLLOW:0}});function createNodeError(n,a,S,C){return typeof n?.code==`string`?n:createNodeError$1(n,a,{path:S.toString(),dest:C?.toString()})}var Vc=__esmMin(()=>{Me()}),Dirent,Hc=__esmMin(()=>{Dr(),ks(),Dirent=class{name;parentPath;_isFile=!1;_isDirectory=!1;_isBlockDevice=!1;_isCharacterDevice=!1;_isSymbolicLink=!1;_isFIFO=!1;_isSocket=!1;_file;constructor(n,a,S,C){switch(a||=Ss(n),this.name=a,this.parentPath=xs(n),this._file=Er.File.new_for_path(n),S??this._file.query_file_type(Er.FileQueryInfoFlags.NONE,null)){case Er.FileType.DIRECTORY:this._isDirectory=!0;break;case Er.FileType.MOUNTABLE:break;case Er.FileType.REGULAR:this._isFile=!0;break;case Er.FileType.SYMBOLIC_LINK:case Er.FileType.SHORTCUT:this._isSymbolicLink=!0;break;case Er.FileType.SPECIAL:this._classifySpecialFile(n,C);break}}_classifySpecialFile(n,a){try{let S=a?.has_attribute(`unix::mode`)===!0?a:Er.File.new_for_path(n).query_info(`unix::mode`,Er.FileQueryInfoFlags.NONE,null),C=S.has_attribute(`unix::mode`)?S.get_attribute_uint32(`unix::mode`):0;if(C===0)return;switch(C&61440){case 24576:this._isBlockDevice=!0;break;case 8192:this._isCharacterDevice=!0;break;case 49152:this._isSocket=!0;break;case 4096:this._isFIFO=!0;break}}catch{}}isFile(){return this._isFile}isDirectory(){return this._isDirectory}isBlockDevice(){return this._isBlockDevice}isCharacterDevice(){return this._isCharacterDevice}isSymbolicLink(){return this._isSymbolicLink}isFIFO(){return this._isFIFO}isSocket(){return this._isSocket}}});function fsError(n,a,S,C){let N=`${n}: ${describe(n)}, ${a}`;S&&(N+=` '${S}'`),C&&(N+=` -> '${C}'`);let F=Error(N);return F.code=n,F.errno=Uc[n]??-1,F.syscall=a,S&&(F.path=S),C&&(F.dest=C),F}function describe(n){switch(n){case`ENOENT`:return`no such file or directory`;case`EEXIST`:return`file already exists`;case`EACCES`:return`permission denied`;case`EISDIR`:return`illegal operation on a directory`;case`ENOTDIR`:return`not a directory`;case`EBADF`:return`bad file descriptor`;case`EPERM`:return`operation not permitted`;case`EINVAL`:return`invalid argument`;case`ELOOP`:return`too many symbolic links encountered`;case`ENAMETOOLONG`:return`name too long`;case`EMFILE`:return`too many open files`;case`ENFILE`:return`file table overflow`;case`EROFS`:return`read-only file system`;case`ESPIPE`:return`invalid seek`;case`ENXIO`:return`no such device or address`;default:return`i/o error`}}function hasProcFd(){return Wc===null&&(Wc=ot.file_test(`/proc/self/fd`,ot.FileTest.IS_DIR)),Wc}function fdPath(n){return hasProcFd()?`/proc/self/fd/${n}`:null}function openFd(n,a,S){let C=ot.open(n,a.posix,S);if(C<0)throw classifyOpenFailure(n,a);return C}function closeFd(n){ot.close(n)}function classifyOpenFailure(n,a){let S=nameTooLong(n,`open`);if(S)return S;let C=Er.File.new_for_path(n),N=null,F=!1;try{let n=C.query_info(`standard::type,standard::symlink-target,unix::mode,access::can-read,access::can-write`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null);answered(n)?N=n:F=!0}catch{N=null}if(F)return refusalNotAboutThePath(n,a,C,null);if(N){if(a.excl)return fsError(`EEXIST`,`open`,n);if(N.get_file_type()===Er.FileType.SYMBOLIC_LINK&&!a.nofollow){let S=walkSymlinkChain(C);if(S===`loop`)return fsError(`ELOOP`,`open`,n);if(S===`too-long`)return fsError(`ENAMETOOLONG`,`open`,n);if(S===`dangling`&&!a.creat)return fsError(`ENOENT`,`open`,n)}return N.get_file_type()===Er.FileType.DIRECTORY&&a.writable?fsError(`EISDIR`,`open`,n):a.directory&&N.get_file_type()!==Er.FileType.DIRECTORY?fsError(`ENOTDIR`,`open`,n):refusalNotAboutThePath(n,a,C,N)}if(ancestorIsNotADirectory(C))return fsError(`ENOTDIR`,`open`,n);if(!a.creat)return fsError(`ENOENT`,`open`,n);let I=C.get_parent();if(!I)return fsError(`ENOENT`,`open`,n);try{I.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null)}catch{return fsError(`ENOENT`,`open`,n)}return refusalNotAboutThePath(n,a,C,null)}function ancestorIsNotADirectory(n){for(let a=n.get_parent();a;a=a.get_parent()){let n;try{n=a.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null)}catch{continue}return answered(n)?n.get_file_type()!==Er.FileType.DIRECTORY:!1}return!1}function answered(n){return n!==null&&n.has_attribute(`standard::type`)}function nameTooLong(n,a){let S=new TextEncoder;if(S.encode(n).length>4096)return fsError(`ENAMETOOLONG`,a,n);for(let C of n.split(`/`))if(S.encode(C).length>255)return fsError(`ENAMETOOLONG`,a,n);return null}function walkSymlinkChain(n){let a=new TextEncoder,S=n;for(let n=0;n<40;n++){let n;try{n=S.query_info(`standard::type,standard::symlink-target`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch{return`dangling`}if(!answered(n)||n.get_file_type()!==Er.FileType.SYMBOLIC_LINK)return`resolved`;let C=n.get_symlink_target();if(!C)return`dangling`;if(a.encode(C).length>4096)return`too-long`;let N=S.get_parent();S=C.startsWith(`/`)?Er.File.new_for_path(C):N?.resolve_relative_path(C)??Er.File.new_for_path(C)}return`loop`}function refusalNotAboutThePath(n,a,S,C){let N=ot.open(`/dev/null`,0,0);if(N<0)return fsError(`EMFILE`,`open`,n);ot.close(N);let F=C!==null&&(C.get_attribute_uint32(`unix::mode`)&146)==0;if((a.writable||a.creat)&&!F)try{if(S.query_filesystem_info(`filesystem::readonly`,null).get_attribute_boolean(`filesystem::readonly`))return fsError(`EROFS`,`open`,n)}catch{}return C&&nothingOnTheOtherEnd(a,C)?fsError(`ENXIO`,`open`,n):fsError(`EACCES`,`open`,n)}function nothingOnTheOtherEnd(n,a){if(!a.has_attribute(`unix::mode`))return!1;let S=a.get_attribute_uint32(`unix::mode`)&61440;if(!(S===8192||S===24576||S===4096))return!1;let permits=n=>a.has_attribute(n)&&a.get_attribute_boolean(n);return!(n.readable&&!permits(`access::can-read`)||n.writable&&!permits(`access::can-write`))}function classifyMkdirFailure(n){let a=nameTooLong(n,`mkdir`);if(a)return a;let S=Er.File.new_for_path(n);try{return answered(S.query_info(`standard::type`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null))?fsError(`EEXIST`,`mkdir`,n):fsError(`EACCES`,`mkdir`,n)}catch{}let C=S.get_parent();if(!C)return fsError(`ENOENT`,`mkdir`,n);try{let a=C.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null);if(answered(a)&&a.get_file_type()!==Er.FileType.DIRECTORY)return fsError(`ENOTDIR`,`mkdir`,n)}catch{return fsError(`ENOENT`,`mkdir`,n)}return fsError(`EACCES`,`mkdir`,n)}function seekHandle(n){let a=Gc.get(n);return a||(a=ot.IOChannel.unix_new(n),a.set_encoding(null),a.set_buffered(!1),a.set_close_on_unref(!1),Gc.set(n,a)),a}function input(n){let a=Kc.get(n);return a||(a=ea.InputStream.new(n,!1),Kc.set(n,a)),a}function output(n){let a=qc.get(n);return a||(a=ea.OutputStream.new(n,!1),qc.set(n,a)),a}function isSeekableFd(n,a){let S=Jc.get(n);return S===void 0&&(S=probeSeekable(n,a),Jc.set(n,S)),S}function probeSeekable(n,a){try{let S=Er.File.new_for_path(fdPath(n)??a).query_info(`unix::mode`,Er.FileQueryInfoFlags.NONE,null);if(S.has_attribute(`unix::mode`)){let n=S.get_attribute_uint32(`unix::mode`)&61440;if(n===4096||n===49152)return!1}}catch{}try{return seekHandle(n).seek_position(0,ot.SeekType.CUR),!0}catch{return!1}}function seekFd(n,a){seekHandle(n).seek_position(a,ot.SeekType.SET)}function tellFd(n){if(!hasProcFd())return null;try{let[a,S]=ot.file_get_contents(`/proc/self/fdinfo/${n}`);if(!a)return null;let C=/^pos:\s*(\d+)/m.exec(new TextDecoder().decode(S));return C?Number(C[1]):null}catch{return null}}function readFd(n,a){return a<=0?new Uint8Array:input(n).read_bytes(a,null).get_data()??new Uint8Array}function writeFd(n,a){if(a.length===0)return 0;let[,S]=output(n).write_all(a,null);return S}function fsyncFd(n){output(n).flush(null),ot.fsync(n)}function releaseFd(n){let a=qc.get(n);if(a)try{a.flush(null)}catch{}Gc.delete(n),Kc.delete(n),qc.delete(n),Jc.delete(n)}function sizeOfFd(n,a){let S=fdPath(n)??a,C=Er.File.new_for_path(S).query_info(`standard::size`,Er.FileQueryInfoFlags.NONE,null);return Number(C.get_size())}function truncateFd(n,a,S){let C=Er.File.new_for_path(fdPath(n)??S),N;try{let n=C.append_to(Er.FileCreateFlags.NONE,null);try{n.truncate(a,null)}finally{n.close(null)}return}catch(n){N=n}try{let n=C.open_readwrite(null);try{n.get_output_stream().truncate(a,null)}finally{n.close(null)}return}catch{}throw createNodeError(N,`ftruncate`,S)}var Uc,Wc,Gc,Kc,qc,Jc,Yc=__esmMin(()=>{Vc(),st(),Dr(),ta(),Uc={EPERM:-1,ENOENT:-2,EIO:-5,ENXIO:-6,EBADF:-9,EACCES:-13,EEXIST:-17,ENOTDIR:-20,EISDIR:-21,EINVAL:-22,ENFILE:-23,EMFILE:-24,ETXTBSY:-26,ENOSPC:-28,ESPIPE:-29,EROFS:-30,ENAMETOOLONG:-36,ENOTEMPTY:-39,ELOOP:-40},Wc=null,Gc=new Map,Kc=new Map,qc=new Map,Jc=new Map});function populateFromInfo(n){let a=n.get_attribute_uint64(`time::access`),S=n.get_attribute_uint32(`time::access-usec`)||0,C=n.get_attribute_uint64(`time::modified`),N=n.get_attribute_uint32(`time::modified-usec`)||0,F=n.get_attribute_uint64(`time::changed`),I=n.get_attribute_uint32(`time::changed-usec`)||0,H=n.get_attribute_uint64(`time::created`),W=n.get_attribute_uint32(`time::created-usec`)||0,K=a*1e3+S/1e3,q=C*1e3+N/1e3,Y=F?F*1e3+I/1e3:q,X=H?H*1e3+W/1e3:Y;return{dev:n.get_attribute_uint32(`unix::device`)||0,ino:Number(n.get_attribute_uint64(`unix::inode`)||0),mode:n.get_attribute_uint32(`unix::mode`)||0,nlink:n.get_attribute_uint32(`unix::nlink`)||0,uid:n.get_attribute_uint32(`unix::uid`)||0,gid:n.get_attribute_uint32(`unix::gid`)||0,rdev:n.get_attribute_uint32(`unix::rdev`)||0,size:Number(n.get_size()||0),blksize:n.get_attribute_uint32(`unix::block-size`)||4096,blocks:Number(n.get_attribute_uint64(`unix::blocks`)||0),atimeMs:K,mtimeMs:q,ctimeMs:Y,birthtimeMs:X,atime:new Date(K),mtime:new Date(q),ctime:new Date(Y),birthtime:new Date(X)}}function statsFrom(n,a,S,C){if(!answered(n))throw fsError(`EACCES`,S,a);return C?new BigIntStats(n,a):new Stats(n,a)}var Xc,Stats,BigIntStats,Zc=__esmMin(()=>{Hc(),Yc(),Dr(),ks(),Xc=`standard::*,time::*,unix::*`,Stats=class extends Dirent{dev;ino;mode;nlink;uid;gid;rdev;size;blksize;blocks;atimeMs;mtimeMs;ctimeMs;birthtimeMs;atime;mtime;ctime;birthtime;_info;constructor(n,a,S){let C,N;n instanceof Er.FileInfo?(C=n,N=a.toString(),S||=Ss(N)):(N=n.toString(),typeof a==`string`&&(S=a),S||=Ss(N),C=Er.File.new_for_path(N).query_info(Xc,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)),super(N,S,C.get_file_type(),C),this._info=C;let F=populateFromInfo(C);this.dev=F.dev,this.ino=F.ino,this.mode=F.mode,this.nlink=F.nlink,this.uid=F.uid,this.gid=F.gid,this.rdev=F.rdev,this.size=F.size,this.blksize=F.blksize,this.blocks=F.blocks,this.atimeMs=F.atimeMs,this.mtimeMs=F.mtimeMs,this.ctimeMs=F.ctimeMs,this.birthtimeMs=F.birthtimeMs,this.atime=F.atime,this.mtime=F.mtime,this.ctime=F.ctime,this.birthtime=F.birthtime}},BigIntStats=class extends Dirent{dev;ino;mode;nlink;uid;gid;rdev;size;blksize;blocks;atimeMs;mtimeMs;ctimeMs;birthtimeMs;atimeNs;mtimeNs;ctimeNs;birthtimeNs;atime;mtime;ctime;birthtime;_info;constructor(n,a,S){let C,N;n instanceof Er.FileInfo?(C=n,N=a.toString(),S||=Ss(N)):(N=n.toString(),typeof a==`string`&&(S=a),S||=Ss(N),C=Er.File.new_for_path(N).query_info(Xc,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)),super(N,S,C.get_file_type(),C),this._info=C;let F=populateFromInfo(C);this.dev=BigInt(F.dev),this.ino=BigInt(F.ino),this.mode=BigInt(F.mode),this.nlink=BigInt(F.nlink),this.uid=BigInt(F.uid),this.gid=BigInt(F.gid),this.rdev=BigInt(F.rdev),this.size=BigInt(F.size),this.blksize=BigInt(F.blksize),this.blocks=BigInt(F.blocks),this.atimeMs=BigInt(Math.trunc(F.atimeMs)),this.mtimeMs=BigInt(Math.trunc(F.mtimeMs)),this.ctimeMs=BigInt(Math.trunc(F.ctimeMs)),this.birthtimeMs=BigInt(Math.trunc(F.birthtimeMs)),this.atimeNs=this.atimeMs*1000000n,this.mtimeNs=this.mtimeMs*1000000n,this.ctimeNs=this.ctimeMs*1000000n,this.birthtimeNs=this.birthtimeMs*1000000n,this.atime=F.atime,this.mtime=F.mtime,this.ctime=F.ctime,this.birthtime=F.birthtime}}});function statSync(n,a){let S=normalizePath(n);try{return statsFrom(Er.File.new_for_path(S).query_info(Xc,Er.FileQueryInfoFlags.NONE,null),S,`stat`,a?.bigint)}catch(n){if(a?.throwIfNoEntry===!1&&isNotFoundError(n))return;throw createNodeError(n,`stat`,S)}}function lstatSync(n,a){let S=normalizePath(n);try{return statsFrom(Er.File.new_for_path(S).query_info(Xc,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null),S,`lstat`,a?.bigint)}catch(n){if(a?.throwIfNoEntry===!1&&isNotFoundError(n))return;throw createNodeError(n,`lstat`,S)}}function readdirSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S).enumerate_children(`standard::name,standard::type`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null),N=[];try{let n=C.next_file(null);for(;n!==null;)N.push({name:n.get_name(),type:n.get_file_type()}),n=C.next_file(null)}finally{try{C.close(null)}catch{}}let F=[];for(let n of N){let C=vs(S,n.name);if(a?.withFileTypes?F.push(new Dirent(C,n.name,n.type)):F.push(n.name),a?.recursive&&n.type===Er.FileType.DIRECTORY){let S=readdirSync(C,a);for(let a of S)typeof a==`string`?F.push(vs(n.name,a)):F.push(a)}}return F}function realpathSync(n){let a=normalizePath(n);return resolveEveryComponent(Er.File.new_for_path(a),{left:40},a)}function resolveEveryComponent(n,a,S){let C=n.get_parent();return expandSymlinks(C===null?n:Er.File.new_for_path(resolveEveryComponent(C,a,S)).get_child(n.get_basename()),a,S)}function expandSymlinks(n,a,S){let C=n;for(;;){let n=C.query_info(`standard::is-symlink,standard::symlink-target`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null);if(!n.get_is_symlink())return C.get_path();if(--a.left<0)throw Error(`ELOOP: too many levels of symbolic links, realpath '${S}'`);let N=n.get_symlink_target(),F=C.get_parent(),I=ot.path_is_absolute(N)?Er.File.new_for_path(N):(F??C).resolve_relative_path(N);C=Er.File.new_for_path(resolveEveryComponent(I,a,S))}}function symlinkSync(n,a,S){let C=normalizePath(a),N=normalizePath(n);Er.File.new_for_path(C).make_symbolic_link(N,null)}function readFileSync(n,a={encoding:null,flag:`r`}){if(n instanceof yl&&(n=n.fd),typeof n==`number`&&isStdFd(n))return encodeUint8Array(getEncodingFromOptions(a,`buffer`),readStdFdAll(n));if(typeof n==`number`)return encodeUint8Array(getEncodingFromOptions(a,`buffer`),yl.getInstance(n,`read`)._readToEndSync());let S=normalizePath(n),C=Er.File.new_for_path(S);try{let[n,N]=C.load_contents(null);if(!n)throw createNodeError(Error(`failed to read file`),`read`,S);return encodeUint8Array(getEncodingFromOptions(a,`buffer`),N)}catch(n){throw n.code&&typeof n.code==`string`?n:createNodeError(n,`read`,S)}}function mkdirSync(n,a){let S=!1,C;a!=null&&(typeof a==`object`?(a.recursive&&(S=a.recursive),a.mode!==void 0&&(C=a.mode)):C=a),n=normalizePath(n);let N=normalizeMode(C,511);if(S)return mkdirSyncRecursive(n,N);mkdirWithMode(n,N)}function mkdirWithMode(n,a){if(ot.mkdir(n,a)!==0)throw classifyMkdirFailure(n)}function mkdirSyncRecursive(n,a){if(ot.mkdir(n,a)===0)return n;let S=classifyMkdirFailure(n);if(S.code===`EEXIST`){if(ot.file_test(n,ot.FileTest.IS_DIR))return;throw S}if(S.code!==`ENOENT`)throw S;let C=vs(n,`..`),N=Er.File.new_for_path(C).get_path();if(N===n)throw S;let F=mkdirSyncRecursive(N,a);return mkdirWithMode(n,a),F??n}function rmdirSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S);try{if(C.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null).get_file_type()!==Er.FileType.DIRECTORY)throw createNodeError(Object.assign(Error(),{code:4}),`rmdir`,S);if(C.enumerate_children(`standard::name`,Er.FileQueryInfoFlags.NONE,null).next_file(null)!==null)throw createNodeError(Object.assign(Error(),{code:5}),`rmdir`,S);C.delete(null)}catch(n){throw n.code&&typeof n.code==`string`?n:createNodeError(n,`rmdir`,S)}}function unlinkSync(n){let a=normalizePath(n),S=Er.File.new_for_path(a);try{S.delete(null)}catch(n){throw createNodeError(n,`unlink`,a)}}function writeWholeFile(n,a,S,C){let N=getEncodingFromOptions(S,`utf8`),F=typeof S==`object`&&S?S:{},I=typeof a==`string`?qe.from(a,N||`utf8`):a;if(typeof n==`number`||n instanceof yl){if(typeof n==`number`&&isStdFd(n)){writeStdFdSync(n,I);return}yl.getInstance(n,`write`)._writeSync(I,null);return}let H=new yl({path:normalizePath(n),flags:F.flag??C,mode:F.mode??438});try{H._writeSync(I,null)}finally{H._closeSync()}}function writeFileSync(n,a,S){writeWholeFile(n,a,S??null,`w`)}function renameSync(n,a){let S=normalizePath(n),C=normalizePath(a),N=Er.File.new_for_path(S),F=Er.File.new_for_path(C);try{N.move(F,Er.FileCopyFlags.OVERWRITE,null,null)}catch(n){throw createNodeError(n,`rename`,S,C)}}function copyFileSync(n,a,S){let C=normalizePath(n),N=normalizePath(a),F=Er.File.new_for_path(C),I=Er.File.new_for_path(N),H=Er.FileCopyFlags.NONE;S&&!(S&1)?H=Er.FileCopyFlags.OVERWRITE:S||(H=Er.FileCopyFlags.OVERWRITE);try{F.copy(I,H,null,null)}catch(n){throw createNodeError(n,`copyfile`,C,N)}}function accessSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S);try{let n=C.query_info(`access::*`,Er.FileQueryInfoFlags.NONE,null);if(a!==void 0&&a!==0){let C={code:14,message:`permission denied, access '${S}'`};if(a&4&&!n.get_attribute_boolean(`access::can-read`)||a&2&&!n.get_attribute_boolean(`access::can-write`)||a&1&&!n.get_attribute_boolean(`access::can-execute`))throw createNodeError(C,`access`,S)}}catch(n){throw n.code&&typeof n.code==`string`?n:createNodeError(n,`access`,S)}}function appendFileSync(n,a,S){writeWholeFile(n,a,S??null,`a`)}function readlinkSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S);try{let n=C.query_info(`standard::symlink-target`,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null).get_symlink_target();if(!n)throw Object.assign(Error(`EINVAL: invalid argument, readlink '${S}'`),{code:`EINVAL`,errno:-22,syscall:`readlink`,path:S});return(typeof a==`string`?a:a?.encoding)===`buffer`?qe.from(n):n}catch(n){throw typeof n.code==`string`?n:createNodeError(n,`readlink`,S)}}function linkSync(n,a){let S=normalizePath(n),C=normalizePath(a);if(Er.File.new_for_path(S).query_file_type(Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)===Er.FileType.UNKNOWN)throw Object.assign(Error(`ENOENT: no such file or directory, link '${S}' -> '${C}'`),{code:`ENOENT`,errno:-2,syscall:`link`,path:S,dest:C});if(Er.File.new_for_path(C).query_file_type(Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)!==Er.FileType.UNKNOWN)throw Object.assign(Error(`EEXIST: file already exists, link '${S}' -> '${C}'`),{code:`EEXIST`,errno:-17,syscall:`link`,path:S,dest:C});let N=``;try{let[,,n,a]=ot.spawn_sync(null,[`ln`,`--`,S,C],null,ot.SpawnFlags.SEARCH_PATH,null);if(N=n?new TextDecoder().decode(n).trim():``,!ot.spawn_check_wait_status(a))throw Error(`ln exited non-zero (${a})`);return}catch(n){throw N===``&&n instanceof Error&&(N=n.message),Object.assign(Error(`EPERM: operation not permitted, link '${S}' -> '${C}'`+(N?` (${N})`:``)),{code:`EPERM`,errno:-1,syscall:`link`,path:S,dest:C})}}function truncateSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S);try{let n=C.open_readwrite(null);try{n.get_output_stream().truncate(Math.max(0,a??0),null)}finally{n.close(null)}}catch(n){throw createNodeError(n,`truncate`,S)}}function chmodSync(n,a){let S=normalizePath(n),C=normalizeMode(a);try{Er.File.new_for_path(S).set_attribute_uint32(`unix::mode`,C,Er.FileQueryInfoFlags.NONE,null)}catch(n){throw createNodeError(n,`chmod`,S)}}function chownSync(n,a,S){let C=normalizePath(n);try{let n=Er.File.new_for_path(C),N=new Er.FileInfo;a!==-1&&N.set_attribute_uint32(`unix::uid`,a),S!==-1&&N.set_attribute_uint32(`unix::gid`,S),n.set_attributes_from_info(N,Er.FileQueryInfoFlags.NONE,null)}catch(n){throw createNodeError(n,`chown`,C)}}function watch(n,a,S){return new FSWatcher(normalizePath(n),a,S)}function openSync(n,a,S){return new yl({path:n,flags:a,mode:S})}function mkdtempSync(n,a){let S=getEncodingFromOptions(a);return decode(mkdtempAt(n),S)}function mkdtempAt(n){for(let a=0;a<64;a++){let a=n+randomName();if(ot.mkdir(a,448)===0)return a;let S=classifyMkdirFailure(a);if(S.code!==`EEXIST`)throw S.syscall=`mkdtemp`,S}throw fsError(`EEXIST`,`mkdtemp`,n+`XXXXXX`)}function rmSync(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S),N=a?.recursive||!1,F=a?.force||!1,I;try{I=C.query_file_type(Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(a){if(F&&isNotFoundError(a))return;throw createNodeError(a,`rm`,n)}if(I===Er.FileType.SYMBOLIC_LINK){try{C.delete(null)}catch(a){if(F&&isNotFoundError(a))return;throw createNodeError(a,`rm`,n)}return}if(I===Er.FileType.DIRECTORY){let C=readdirSync(n);if(!N&&C.length)throw createNodeError(Object.assign(Error(),{code:5}),`rm`,n);for(let n of C)rmSync(vs(S,n),a)}try{C.delete(null)}catch(a){if(F&&isNotFoundError(a))return;throw createNodeError(a,`rm`,n)}}var Qc=__esmMin(()=>{Fc(),Dc(),kc(),Pc(),Bc(),Hc(),Vc(),Yc(),Zc(),bl(),st(),Dr(),ks(),nt(),sa(),realpathSync.native=realpathSync});function makeEEXIST(n){let a=Error(`ERR_FS_CP_EEXIST: file already exists, copyfile '${n}'`);return a.code=`ERR_FS_CP_EEXIST`,a.syscall=`copyfile`,a.path=n,a}function makeEISDIR(n){let a=Error(`ERR_FS_EISDIR: illegal operation on a directory, copyfile '${n}'`);return a.code=`ERR_FS_EISDIR`,a.syscall=`copyfile`,a.path=n,a}function makeENOTDIR(n,a){let S=Error(`ENOTDIR: not a directory, copyfile '${n}' -> '${a}'`);return S.code=`ENOTDIR`,S.syscall=`copyfile`,S.path=n,S.dest=a,S}function makeSYMLINKLOOP(n,a){let S=Error(`ELOOP: too many levels of symbolic links, copyfile '${n}' -> '${a}'`);return S.code=`ELOOP`,S.syscall=`copyfile`,S.path=n,S.dest=a,S}function queryCopyFlags(n){let a=n.force??!0,S=Er.FileCopyFlags.NONE;return a&&(S|=Er.FileCopyFlags.OVERWRITE),n.preserveTimestamps&&(S|=Er.FileCopyFlags.TARGET_DEFAULT_MODIFIED_TIME),n.dereference||(S|=Er.FileCopyFlags.NOFOLLOW_SYMLINKS),S}function copyOneSyncFile(n,a,S,C,N){let F=N.force??!0;try{if(a.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null).get_file_type()===Er.FileType.DIRECTORY)throw makeENOTDIR(S,C);if(!F){if(N.errorOnExist)throw makeEEXIST(C);return}}catch(n){if(typeof n.code==`string`)throw n}let I=queryCopyFlags(N);try{n.copy(a,I,null,null)}catch(n){throw createNodeError(n,`copyfile`,S,C)}}function cpOneDirSync(n,a,S,C,N){let F=S.endsWith(`/`)?``:`/`;if(C.startsWith(S+F)&&C!==S)throw makeSYMLINKLOOP(S,C);if(a.query_exists(null))try{if(a.query_info(`standard::type`,Er.FileQueryInfoFlags.NONE,null).get_file_type()!==Er.FileType.DIRECTORY)throw makeENOTDIR(C,S)}catch(n){if(typeof n.code==`string`)throw n}else try{a.make_directory_with_parents(null)}catch(n){throw createNodeError(n,`mkdir`,C)}let I;try{I=n.enumerate_children(`standard::name,standard::type,standard::is-symlink`,N.dereference?Er.FileQueryInfoFlags.NONE:Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(n){throw createNodeError(n,`scandir`,S)}let H=I.next_file(null);for(;H!==null;){let n=H.get_name(),a=vs(S,n),F=vs(C,n),W=N.filter;if(W&&!W(a,F)){H=I.next_file(null);continue}cpSyncInternal(a,F,N),H=I.next_file(null)}}function cpSyncInternal(n,a,S){let C=Er.File.new_for_path(n),N=Er.File.new_for_path(a),F;try{F=C.query_info(`standard::type,standard::is-symlink`,S.dereference?Er.FileQueryInfoFlags.NONE:Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(a){throw createNodeError(a,`stat`,n)}if(F.get_file_type()===Er.FileType.DIRECTORY){if(!S.recursive)throw makeEISDIR(n);cpOneDirSync(C,N,n,a,S)}else copyOneSyncFile(C,N,n,a,S)}function cpSync(n,a,S){let C=normalizePath(n),N=normalizePath(a),F=S??{},I=Er.File.new_for_path(C),H=F.filter;if(!(H&&!H(C,N))){try{if(I.query_info(`standard::type`,F.dereference?Er.FileQueryInfoFlags.NONE:Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null).get_file_type()===Er.FileType.DIRECTORY&&!F.recursive)throw makeEISDIR(C)}catch(n){throw typeof n.code==`string`?n:createNodeError(n,`stat`,C)}cpSyncInternal(C,N,F)}}function cp(n,a,S,C){let N,F;typeof S==`function`?(F=S,N={}):(F=C,N=S);let I=N.filter;if(I){Promise.resolve(I(normalizePath(n),normalizePath(a))).then(S=>{if(!S){F(null);return}try{cpPromises(n,a,N).then(()=>F(null)).catch(F)}catch(n){F(n)}}).catch(F);return}Promise.resolve().then(()=>{try{cpSync(n,a,N),F(null)}catch(n){F(n)}})}async function cpPromisesDir(n,a,S){let C=n.endsWith(`/`)?``:`/`;if(a.startsWith(n+C)&&a!==n)throw makeSYMLINKLOOP(n,a);let N=Er.File.new_for_path(a);if(!N.query_exists(null))try{N.make_directory_with_parents(null)}catch(n){throw createNodeError(n,`mkdir`,a)}let F=Er.File.new_for_path(n),I;try{I=F.enumerate_children(`standard::name,standard::type`,S.dereference?Er.FileQueryInfoFlags.NONE:Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(a){throw createNodeError(a,`scandir`,n)}let H=I.next_file(null);for(;H!==null;){let C=H.get_name(),N=vs(n,C),F=vs(a,C),W=S.filter;if(W&&!await Promise.resolve(W(N,F))){H=I.next_file(null);continue}await cpPromises(N,F,S),H=I.next_file(null)}}async function cpPromises(n,a,S={}){let C=normalizePath(n),N=normalizePath(a),F=Er.File.new_for_path(C),I;try{I=F.query_info(`standard::type`,S.dereference?Er.FileQueryInfoFlags.NONE:Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(n){throw createNodeError(n,`stat`,C)}if(I.get_file_type()===Er.FileType.DIRECTORY){if(!S.recursive)throw makeEISDIR(C);await cpPromisesDir(C,N,S)}else copyOneSyncFile(F,Er.File.new_for_path(N),C,N,S)}var $c=__esmMin(()=>{Dc(),Vc(),Dr(),ks()});function _openDir(n){let a=Er.File.new_for_path(n),S;try{S=a.enumerate_children(el,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(a){throw createNodeError(a,`opendir`,n)}return new Dir(n,S)}function opendirSync(n){return _openDir(normalizePath(n))}function opendir(n,a,S){let C;if(C=typeof a==`function`?a:S,typeof C!=`function`)throw TypeError(`The "callback" argument must be of type function`);Promise.resolve().then(()=>{try{let a=opendirSync(n);C(null,a)}catch(n){C(n,null)}})}async function opendirAsync(n,a){return new Promise((a,S)=>{let C=normalizePath(n),N=Er.File.new_for_path(C);N.enumerate_children_async(el,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,ot.PRIORITY_DEFAULT,null,(n,F)=>{try{let n=N.enumerate_children_finish(F);a(new Dir(C,n))}catch(n){S(createNodeError(n,`opendir`,C))}})})}var el,Dir,tl=__esmMin(()=>{Dc(),Hc(),Vc(),st(),Dr(),el=`standard::name,standard::type,standard::is-symlink,standard::size,standard::symlink-target,unix::uid,unix::gid,unix::mode,time::modified,time::access,time::created`,Dir=class{path;_enumerator;_closed=!1;constructor(n,a){this.path=n,this._enumerator=a}_assertOpen(){if(this._closed){let n=Error(`Directory handle was closed`);throw n.code=`ERR_DIR_CLOSED`,n}}readSync(){this._assertOpen();try{let n=this._enumerator.next_file(null);if(n===null)return null;let a=n.get_name(),S=n.get_file_type();return new Dirent(this.path.endsWith(`/`)?this.path+a:this.path+`/`+a,a,S)}catch(n){throw createNodeError(n,`readdir`,this.path)}}read(n){if(n!==void 0){if(typeof n!=`function`)throw TypeError(`The "callback" argument must be of type function`);try{this._assertOpen();let a=this.readSync();Promise.resolve().then(()=>n(null,a))}catch(a){Promise.resolve().then(()=>n(a,null))}return}return new Promise((n,a)=>{try{this._assertOpen(),n(this.readSync())}catch(n){a(n)}})}closeSync(){this._assertOpen(),this._closed=!0;try{this._enumerator.close(null)}catch{}this._enumerator=null}close(n){if(n!==void 0){if(typeof n!=`function`)throw TypeError(`The "callback" argument must be of type function`);try{this.closeSync(),Promise.resolve().then(()=>n(null))}catch(a){Promise.resolve().then(()=>n(a))}return}return new Promise((n,a)=>{try{this.closeSync(),n()}catch(n){a(n)}})}async*[Symbol.asyncIterator](){try{for(;;){let n=await this.read();if(n===null)break;yield n}}finally{this._closed||await this.close()}}}});function segmentToRegexSrc(n){let a=/^([!*+?@])\((.+)\)$/.exec(n);if(a){let[,n,S]=a,C=S.split(`|`).map(n=>segmentToRegexSrc(n)),N=`(?:`+C.join(`|`)+`)`;switch(n){case`!`:return`(?!(?:`+C.join(`|`)+`))[^/]*`;case`*`:return N+`*`;case`+`:return N+`+`;case`?`:return N+`?`;case`@`:return N}}let S=``,C=0;for(;C<n.length;){let a=n[C];if(a===`*`){S+=`[^/]*`,C++;continue}if(a===`?`){S+=`[^/]`,C++;continue}if(a===`[`){let a=n.indexOf(`]`,C+1);if(a===-1){S+=`\\[`,C++;continue}S+=n.slice(C,a+1),C=a+1;continue}if(a===`{`){let a=n.indexOf(`}`,C+1);if(a===-1){S+=`\\{`,C++;continue}let N=n.slice(C+1,a).split(`,`).map(n=>segmentToRegexSrc(n.trim()));S+=`(?:`+N.join(`|`)+`)`,C=a+1;continue}`.+^$|()[]{}`.includes(a)?S+=`\\`+a:S+=a,C++}return S}function globToRegex$2(n){n=n.replace(/\/+/g,`/`).replace(/^\.\//,``);let a=n.split(`/`),S=[];for(let n=0;n<a.length;n++){let C=a[n],N=n===a.length-1;C===`**`?N?S.length>0&&S[S.length-1]===`/`?(S.pop(),S.push(`(?:/.+)?`)):S.push(`(?:.+)?`):S.push(`(?:[^/]+/)*`):(S.push(segmentToRegexSrc(C)),N||S.push(`/`))}return RegExp(`^(?:`+S.join(``)+`)$`)}function buildExcludePredicate(n){if(!n)return null;if(typeof n==`function`)return n;let a=(Array.isArray(n)?n:[n]).map(n=>globToRegex$2(n));return n=>a.some(a=>a.test(n))}function matchAll(n,a,S){let C=globToRegex$2(n),N=buildExcludePredicate(S),F;try{F=readdirSync(a,{recursive:!0})}catch{return[]}let I=[`.`,...F],H=[];for(let n of I){let a=n.replace(/\\/g,`/`);C.test(a)&&(N&&N(a)||H.push(n))}return H}function globSync(n,a){let S=Array.isArray(n)?n:[n],C=a?.cwd?normalizePath(a.cwd):globalThis.process?.cwd?.()??`/`,N=a?.exclude,F=new Set,I=[];for(let n of S)for(let a of matchAll(n,C,N))F.has(a)||(F.add(a),I.push(a));return I}function glob(n,a,S){let C,N;typeof a==`function`?(N=a,C={}):(N=S,C=a||{}),Promise.resolve().then(()=>{try{let a=globSync(n,C);N(null,a)}catch(n){N(n,[])}})}async function*globAsync(n,a){let S=globSync(n,a);for(let n of S)yield n}var nl=__esmMin(()=>{Dc(),Qc(),__name$1(globToRegex$2,`globToRegex`)});function buildStatFs(n){let a=Number(n.get_attribute_uint64(`filesystem::size`)??0),S=Number(n.get_attribute_uint64(`filesystem::free`)??0),C=Math.floor(a/il),N=Math.floor(S/il);return{type:0,bsize:il,blocks:C,bfree:N,bavail:N,files:0,ffree:0}}function buildBigIntStatFs(n){let a=BigInt(n.get_attribute_uint64(`filesystem::size`)??0),S=BigInt(n.get_attribute_uint64(`filesystem::free`)??0),C=BigInt(il),N=a/C,F=S/C;return{type:0n,bsize:C,blocks:N,bfree:F,bavail:F,files:0n,ffree:0n}}function statfsSync(n,a){let S=Er.File.new_for_path(normalizePath(n)).query_filesystem_info(rl,null);return a?.bigint===!0?buildBigIntStatFs(S):buildStatFs(S)}function queryFsInfoAsync(n,a){return new Promise((S,C)=>{let N=Er.File.new_for_path(normalizePath(n));N.query_filesystem_info_async(rl,ot.PRIORITY_DEFAULT,null,(n,F)=>{try{let n=N.query_filesystem_info_finish(F);S(a?buildBigIntStatFs(n):buildStatFs(n))}catch(n){C(n)}})})}function statfs(n,a,S){let C=typeof a==`function`?a:S;queryFsInfoAsync(n,(typeof a==`function`?{}:a)?.bigint===!0).then(n=>C(null,n),n=>C(n,null))}async function statfsAsync(n,a){return queryFsInfoAsync(n,a?.bigint===!0)}var rl,il,al=__esmMin(()=>{Dc(),st(),Dr(),rl=[`filesystem::size`,`filesystem::free`].join(`,`),il=4096}),ol=__exportAll$4({access:()=>access$1,appendFile:()=>appendFile$1,chmod:()=>chmod$1,chown:()=>chown$1,copyFile:()=>copyFile$1,cp:()=>cpPromises,default:()=>cl,fchmod:()=>fchmodAsync,fchown:()=>fchownAsync,fdatasync:()=>fdatasyncAsync,fstat:()=>fstatAsync,fsync:()=>fsyncAsync,ftruncate:()=>ftruncateAsync,futimes:()=>futimesAsync,glob:()=>globAsync,lchmod:()=>lchmodAsync,lchown:()=>lchownAsync,link:()=>link$1,lstat:()=>lstat$1,lutimes:()=>lutimesAsync,mkdir:()=>mkdir$1,mkdtemp:()=>mkdtemp,open:()=>open$2,openAsBlob:()=>openAsBlob,opendir:()=>opendirAsync,promises_exports:()=>sl,readFile:()=>readFile$1,readdir:()=>readdir$1,readlink:()=>readlink$1,readv:()=>readvAsync,realpath:()=>realpath$1,rename:()=>rename$1,rm:()=>rm$1,rmdir:()=>rmdir$1,stat:()=>stat$1,statfs:()=>statfsAsync,symlink:()=>symlink$1,truncate:()=>truncate$1,unlink:()=>unlink$1,utimes:()=>utimesAsync,watch:()=>watchAsync,write:()=>write$1,writeFile:()=>writeFile$1,writev:()=>writevAsync});async function mkdir$1(n,a){return mkdirSync(normalizePath(n),a)}async function readFile$1(n,a={encoding:null,flag:`r`}){if(n instanceof yl||typeof n==`number`){let S=yl.getInstance(n,`read`);return encodeUint8Array(getEncodingFromOptions(a,`buffer`),S._readToEndSync())}let S=normalizePath(n),C=Er.File.new_for_path(S),N,F;try{[N,F]=await new Promise((n,a)=>{C.load_contents_async(null,(S,N)=>{try{n(C.load_contents_finish(N))}catch(n){a(n)}})})}catch(n){throw createNodeError(n,`open`,S)}if(!N)throw createNodeError(Error(`failed to read file`),`open`,S);return encodeUint8Array(getEncodingFromOptions(a,`buffer`),F)}async function mkdtemp(n,a){let S=getEncodingFromOptions(a);return decode(mkdtempAt(n),S)}async function writeFile$1(n,a,S){writeFileSync(n,typeof a==`string`||a instanceof Uint8Array?a:String(a),S??null)}async function rmdir$1(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S);if((await new Promise((n,a)=>{C.query_info_async(`standard::type`,Er.FileQueryInfoFlags.NONE,ot.PRIORITY_DEFAULT,null,(N,F)=>{try{n(C.query_info_finish(F))}catch(n){a(createNodeError(n,`rmdir`,S))}})})).get_file_type()!==Er.FileType.DIRECTORY)throw createNodeError(Object.assign(Error(),{code:4}),`rmdir`,S);if((await new Promise((n,a)=>{C.enumerate_children_async(`standard::name`,Er.FileQueryInfoFlags.NONE,ot.PRIORITY_DEFAULT,null,(N,F)=>{try{n(C.enumerate_children_finish(F))}catch(n){a(createNodeError(n,`rmdir`,S))}})})).next_file(null)!==null)throw createNodeError(Object.assign(Error(),{code:5}),`rmdir`,S);await new Promise((n,a)=>{C.delete_async(ot.PRIORITY_DEFAULT,null,(N,F)=>{try{C.delete_finish(F),n()}catch(n){a(createNodeError(n,`rmdir`,S))}})})}async function unlink$1(n){let a=normalizePath(n),S=Er.File.new_for_path(a);await new Promise((n,C)=>{S.delete_async(ot.PRIORITY_DEFAULT,null,(N,F)=>{try{S.delete_finish(F),n()}catch(n){C(createNodeError(n,`unlink`,a))}})})}async function open$2(n,a,S){return new yl({path:n,flags:a,mode:S})}async function write$1(n,a,S,C,N){return typeof a==`string`?_writeStr(n,a,S,C):_writeBuf(n,a,S,C,N)}async function _writeBuf(n,a,S,C,N){return{bytesWritten:(await yl.getInstance(n,`write`).write(a,S,C,N)).bytesWritten,buffer:a}}async function _writeStr(n,a,S,C){return{bytesWritten:(await yl.getInstance(n,`write`).write(a,S,C)).bytesWritten,buffer:a}}function queryInfoAsync(n,a,S,C){let N=normalizePath(n);return new Promise((n,F)=>{let I=Er.File.new_for_path(N);I.query_info_async(Xc,a,ot.PRIORITY_DEFAULT,null,(a,H)=>{try{n(statsFrom(I.query_info_finish(H),N,S,C?.bigint))}catch(n){F(createNodeError(n,S,N))}})})}async function stat$1(n,a){return queryInfoAsync(n,Er.FileQueryInfoFlags.NONE,`stat`,a)}async function lstat$1(n,a){return queryInfoAsync(n,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,`lstat`,a)}async function readdir$1(n,a){try{return readdirSync(n,a)}catch(a){throw createNodeError(a,`scandir`,n)}}async function realpath$1(n){return realpathSync(n)}async function symlink$1(n,a,S){let C=normalizePath(a),N=normalizePath(n);return new Promise((n,a)=>{let S=Er.File.new_for_path(C);S.make_symbolic_link_async(N,ot.PRIORITY_DEFAULT,null,(F,I)=>{try{S.make_symbolic_link_finish(I),n()}catch(n){a(createNodeError(n,`symlink`,N,C))}})})}async function rm$1(n,a){let S=normalizePath(n),C=Er.File.new_for_path(S),N=a?.recursive||!1,F=a?.force||!1,I;try{I=C.query_file_type(Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,null)}catch(a){if(F)return;throw createNodeError(a,`rm`,n)}if(I===Er.FileType.SYMBOLIC_LINK){await new Promise((a,S)=>{C.delete_async(ot.PRIORITY_DEFAULT,null,(N,I)=>{try{C.delete_finish(I),a()}catch(C){if(F){a();return}S(createNodeError(C,`rm`,n))}})});return}if(I===Er.FileType.DIRECTORY){let C=await readdir$1(n,{withFileTypes:!0});if(!N&&C.length)throw createNodeError(Object.assign(Error(),{code:5}),`rm`,n);for(let n of C)typeof n!=`string`&&await rm$1(vs(S,n.name),a)}await new Promise((a,S)=>{C.delete_async(ot.PRIORITY_DEFAULT,null,(N,I)=>{try{C.delete_finish(I),a()}catch(C){if(F){a();return}S(createNodeError(C,`rm`,n))}})})}async function rename$1(n,a){renameSync(n,a)}async function copyFile$1(n,a,S){copyFileSync(n,a,S)}async function access$1(n,a){accessSync(n,a)}async function appendFile$1(n,a,S){appendFileSync(n,a,S)}async function readlink$1(n,a){return readlinkSync(n,a)}async function truncate$1(n,a){truncateSync(n,a)}async function chmod$1(n,a){chmodSync(n,a)}async function chown$1(n,a,S){chownSync(n,a,S)}async function link$1(n,a){linkSync(n,a)}var sl,cl,ll=__esmMin(()=>{Ec(),Fc(),Dc(),kc(),jc(),xl(),Vc(),Zc(),bl(),Qc(),$c(),tl(),nl(),al(),st(),Dr(),ks(),sl=Tc({access:()=>access$1,appendFile:()=>appendFile$1,chmod:()=>chmod$1,chown:()=>chown$1,copyFile:()=>copyFile$1,cp:()=>cpPromises,default:()=>cl,fchmod:()=>fchmodAsync,fchown:()=>fchownAsync,fdatasync:()=>fdatasyncAsync,fstat:()=>fstatAsync,fsync:()=>fsyncAsync,ftruncate:()=>ftruncateAsync,futimes:()=>futimesAsync,glob:()=>globAsync,lchmod:()=>lchmodAsync,lchown:()=>lchownAsync,link:()=>link$1,lstat:()=>lstat$1,lutimes:()=>lutimesAsync,mkdir:()=>mkdir$1,mkdtemp:()=>mkdtemp,open:()=>open$2,openAsBlob:()=>openAsBlob,opendir:()=>opendirAsync,readFile:()=>readFile$1,readdir:()=>readdir$1,readlink:()=>readlink$1,readv:()=>readvAsync,realpath:()=>realpath$1,rename:()=>rename$1,rm:()=>rm$1,rmdir:()=>rmdir$1,stat:()=>stat$1,statfs:()=>statfsAsync,symlink:()=>symlink$1,truncate:()=>truncate$1,unlink:()=>unlink$1,utimes:()=>utimesAsync,watch:()=>watchAsync,write:()=>write$1,writeFile:()=>writeFile$1,writev:()=>writevAsync}),__name$1(mkdir$1,`mkdir`),__name$1(readFile$1,`readFile`),__name$1(writeFile$1,`writeFile`),__name$1(rmdir$1,`rmdir`),__name$1(unlink$1,`unlink`),__name$1(open$2,`open`),__name$1(write$1,`write`),__name$1(stat$1,`stat`),__name$1(lstat$1,`lstat`),__name$1(readdir$1,`readdir`),__name$1(realpath$1,`realpath`),__name$1(symlink$1,`symlink`),__name$1(rm$1,`rm`),__name$1(rename$1,`rename`),__name$1(copyFile$1,`copyFile`),__name$1(access$1,`access`),__name$1(appendFile$1,`appendFile`),__name$1(readlink$1,`readlink`),__name$1(truncate$1,`truncate`),__name$1(chmod$1,`chmod`),__name$1(chown$1,`chown`),__name$1(link$1,`link`),cl={readFile:readFile$1,mkdir:mkdir$1,mkdtemp,realpath:realpath$1,readdir:readdir$1,writeFile:writeFile$1,rmdir:rmdir$1,unlink:unlink$1,open:open$2,write:write$1,rm:rm$1,lstat:lstat$1,symlink:symlink$1,stat:stat$1,rename:rename$1,copyFile:copyFile$1,access:access$1,appendFile:appendFile$1,readlink:readlink$1,truncate:truncate$1,chmod:chmod$1,chown:chown$1,link:link$1,cp:cpPromises,opendir:opendirAsync,glob:globAsync,watch:watchAsync,statfs:statfsAsync,utimes:utimesAsync,lutimes:lutimesAsync,lchown:lchownAsync,lchmod:lchmodAsync,fstat:fstatAsync,ftruncate:ftruncateAsync,fdatasync:fdatasyncAsync,fsync:fsyncAsync,fchmod:fchmodAsync,fchown:fchownAsync,futimes:futimesAsync,readv:readvAsync,writev:writevAsync,openAsBlob}});function withHandle(n,a,S){try{return yl.getInstance(n,a)}catch(n){return Promise.resolve().then(()=>S(n)),null}}function parseOptsCb(n,a){return typeof n==`function`?{options:{},callback:n}:{options:n??{},callback:a}}function statImpl(n,a,S,C,N){let F=normalizePath(n),I=Er.File.new_for_path(F);I.query_info_async(Xc,a,ot.PRIORITY_DEFAULT,null,(n,a)=>{try{N(null,statsFrom(I.query_info_finish(a),F,S,C?.bigint))}catch(n){N(createNodeError(n,S,F))}})}function stat(n,a,S){let{options:C,callback:N}=parseOptsCb(a,S);statImpl(n,Er.FileQueryInfoFlags.NONE,`stat`,C,N)}function lstat(n,a,S){let{options:C,callback:N}=parseOptsCb(a,S);statImpl(n,Er.FileQueryInfoFlags.NOFOLLOW_SYMLINKS,`lstat`,C,N)}function readdir(n,a,S){let{options:C,callback:N}=parseOptsCb(a,S);Promise.resolve().then(()=>{try{N(null,readdirSync(n,C))}catch(a){N(createNodeError(a,`readdir`,n))}})}function realpath(n,a,S){let{callback:C}=parseOptsCb(a,S);Promise.resolve().then(()=>{try{C(null,realpathSync(n))}catch(n){C(n)}})}function symlink(n,a,S,C){let N=typeof S==`function`?S:C;if(typeof N!=`function`)throw TypeError(`Callback must be a function. Received `+typeof N);let F=normalizePath(a),I=normalizePath(n),H=Er.File.new_for_path(F);H.make_symbolic_link_async(I,ot.PRIORITY_DEFAULT,null,(n,a)=>{try{H.make_symbolic_link_finish(a),N(null)}catch(n){N(createNodeError(n,`symlink`,I,F))}})}function open$1(n,...a){let S,C,N;switch(a.length){case 1:N=a[0];break;case 2:S=a[0],N=a[1];break;case 3:S=a[0],C=a[1],N=a[2];break;default:break}open$2(n,S,C).then(n=>{N(null,n.fd)}).catch(n=>{N(n,-1)})}function write(n,a,...S){let C=withHandle(n,`write`,n=>{let C=S[S.length-1];typeof C==`function`&&(typeof a==`string`?C(n,0,``):C(n,0,qe.from([])))});if(!C)return;if(typeof a==`string`){let n=S.pop(),N=S[0],F=S[1];C.write(a,N,F).then(a=>{n(null,a.bytesWritten,a.buffer)}).catch(a=>{n(a,0,``)});return}let N=S[S.length-1],F=S[0],I=S[1],H=S[2];C.write(a,F,I,H).then(n=>{N(null,n.bytesWritten,n.buffer)}).catch(n=>{N(n,0,qe.from([]))})}function read$1(n,...a){let S=a[a.length-1],C=withHandle(n,`read`,n=>{typeof S==`function`&&S(n,0,qe.from([]))});if(!C)return;let N,F,I,H;if(!(a.length<=1))if(typeof a[0]==`object`&&!ArrayBuffer.isView(a[0])){let n=a[0];N=n.buffer,F=n.offset,I=n.length,H=n.position}else N=a[0],F=a[1],I=a[2],H=a[3];C.read(N,F,I,H).then(n=>{S(null,n.bytesRead,n.buffer)}).catch(n=>{S(n,0,qe.from([]))})}function close$1(n,a){let done=n=>{typeof a==`function`&&a(n)},S=withHandle(n,`close`,done);S&&S.close().then(()=>done(null)).catch(n=>done(n))}function rm(n,...a){let S={},C=a[a.length-1];a.length>=2&&(S=a[0]),rm$1(n,S).then(()=>{C(null)}).catch(n=>{C(n)})}function rename(n,a,S){Promise.resolve().then(()=>{try{renameSync(n,a),S(null)}catch(n){S(n)}})}function copyFile(n,a,S,C){let N=typeof S==`function`?0:S,F=typeof S==`function`?S:C;Promise.resolve().then(()=>{try{copyFileSync(n,a,N),F(null)}catch(n){F(n)}})}function access(n,a,S){let C=typeof a==`function`?void 0:a,N=typeof a==`function`?a:S;Promise.resolve().then(()=>{try{accessSync(n,C),N(null)}catch(n){N(n)}})}function appendFile(n,a,S,C){let N=typeof S==`function`?S:C,F=typeof S==`function`?void 0:S;Promise.resolve().then(()=>{try{appendFileSync(n,a,F),N(null)}catch(n){N(n)}})}function readlink(n,a,S){let C=typeof a==`function`?a:S,N=typeof a==`function`?void 0:a;Promise.resolve().then(()=>{try{C(null,readlinkSync(n,N))}catch(n){C(n,``)}})}function truncate(n,a,S){let C=typeof a==`function`?0:a,N=typeof a==`function`?a:S;Promise.resolve().then(()=>{try{truncateSync(n,C),N(null)}catch(n){N(n)}})}function chmod(n,a,S){Promise.resolve().then(()=>{try{chmodSync(n,a),S(null)}catch(n){S(n)}})}function chown(n,a,S,C){Promise.resolve().then(()=>{try{chownSync(n,a,S),C(null)}catch(n){C(n)}})}function mkdir(n,a,S){let C=typeof a==`function`?a:S,N=typeof a==`function`?void 0:a;Promise.resolve().then(()=>{try{mkdirSync(n,N),C(null)}catch(n){C(n)}})}function rmdir(n,a,S){let C=typeof a==`function`?a:S,N=typeof a==`function`?void 0:a;Promise.resolve().then(()=>{try{rmdirSync(n,N),C(null)}catch(n){C(n)}})}function readFile(n,a,S){let C=typeof a==`function`?a:S,N=typeof a==`function`?void 0:a;Promise.resolve().then(()=>{try{let a=typeof N==`string`?{encoding:N,flag:`r`}:{encoding:N?.encoding??null,flag:N?.flag??`r`};C(null,readFileSync(n,a))}catch(n){C(n,null)}})}function writeFile(n,a,S,C){let N=typeof S==`function`?S:C,F=typeof S==`function`?void 0:S;Promise.resolve().then(()=>{try{writeFileSync(n,a,F),N(null)}catch(n){N(n)}})}function link(n,a,S){Promise.resolve().then(()=>{try{linkSync(n,a),S(null)}catch(n){S(n)}})}function unlink(n,a){let S=normalizePath(n);Promise.resolve().then(()=>{ot.unlink(S),a(null)})}var ul=__esmMin(()=>{Dc(),Vc(),Zc(),bl(),Qc(),ll(),st(),Dr(),nt(),__name$1(open$1,`open`),__name$1(read$1,`read`),__name$1(close$1,`close`)});function toPathIfFileURL(n){return normalizePath(n)}function createWriteStream(n,a){return new WriteStream$1(n,a)}var dl,fl,WriteStream$1,pl=__esmMin(()=>{Dc(),Bc(),ul(),ii(),dl=Symbol(`kIsPerformingIO`),fl=Symbol(`kIoDone`),WriteStream$1=class extends $r{static{__name$1(this,`WriteStream`)}close(n,a=null){let done=a=>{typeof n==`function`&&n(a)};if(this.fd===null||!this._autoClose)this.fd=null,done(a);else{let n=this._fdFromHandle;close$1(this.fd,S=>{let C=n&&S?.code===`EBADF`?null:S;done(C||a)}),this.fd=null}}bytesWritten=0;path;pending;fd=null;flags=`w`;mode=438;pos=void 0;_autoClose=!0;_fdFromHandle=!1;[dl]=!1;constructor(n,a={}){super(a),this.path=toPathIfFileURL(n),a.flags!==void 0&&(this.flags=a.flags),a.mode!==void 0&&(this.mode=normalizeMode(a.mode,438)),a.start!==void 0&&(this.pos=a.start),a.encoding&&this.setDefaultEncoding(a.encoding),typeof a.fd==`number`?(this.fd=a.fd,this._autoClose=a.autoClose??!0,this._fdFromHandle=a.fdFromHandle===!0):a.autoClose!==void 0&&(this._autoClose=a.autoClose),this.pending=this.fd===null}_construct(n){if(this.fd!==null){n(),this.emit(`open`,this.fd),this.emit(`ready`);return}open$1(this.path.toString(),this.flags,this.mode,(a,S)=>{if(a){n(a);return}this.fd=S,this.pending=!1,n(),this.emit(`open`,this.fd),this.emit(`ready`)})}_write(n,a,S){this[dl]=!0,write(this.fd,n,0,n.length,this.pos??null,(n,a)=>{if(this[dl]=!1,this.destroyed)return S(n),this.emit(fl,n);if(n)return S(n);this.bytesWritten+=a,S()}),this.pos!==void 0&&(this.pos+=n.length)}_destroy(n,a){this[dl]?this.once(fl,S=>this.close(a,n||S)):this.close(a,n)}}});function createInterface$1(n,a,S,C){return typeof n==`object`&&n&&!(`read`in n&&typeof n.read==`function`)?new Interface$1(n):new Interface$1({input:n,output:a,completer:S,terminal:C})}function*emitKeys(n){for(;;){let a=yield,S=a,C=!1,N={sequence:``,name:void 0,ctrl:!1,meta:!1,shift:!1};if(a===`\x1B`&&(C=!0,S+=a=yield,a===`\x1B`&&(S+=a=yield)),C&&(a===`O`||a===`[`)){let n=a,C=0;if(a===`O`)S+=a=yield,a>=`0`&&a<=`9`&&(C=a.charCodeAt(0)-1,S+=a=yield),n+=a;else if(a===`[`){S+=a=yield,a===`[`&&(n+=a,S+=a=yield);let N=S.length-1;a>=`0`&&a<=`9`&&(S+=a=yield,a>=`0`&&a<=`9`&&(S+=a=yield,a>=`0`&&a<=`9`&&(S+=a=yield))),a===`;`&&(S+=a=yield,a>=`0`&&a<=`9`&&(S+=yield));let F=S.slice(N),I;(I=/^(?:(\d\d?)(?:;(\d))?([~^$])|(\d{3}~))$/.exec(F))?I[4]?n+=I[4]:(n+=I[1]+I[3],C=(parseInt(I[2]??`1`,10)||1)-1):(I=/^((\d;)?(\d))?([A-Za-z])$/.exec(F))?(n+=I[4],C=(parseInt(I[3]??`1`,10)||1)-1):n+=F}switch(N.ctrl=!!(C&4),N.meta=!!(C&10),N.shift=!!(C&1),N.code=n,n){case`[P`:case`OP`:case`[11~`:case`[[A`:N.name=`f1`;break;case`[Q`:case`OQ`:case`[12~`:case`[[B`:N.name=`f2`;break;case`[R`:case`OR`:case`[13~`:case`[[C`:N.name=`f3`;break;case`[S`:case`OS`:case`[14~`:case`[[D`:N.name=`f4`;break;case`[15~`:case`[[E`:N.name=`f5`;break;case`[17~`:N.name=`f6`;break;case`[18~`:N.name=`f7`;break;case`[19~`:N.name=`f8`;break;case`[20~`:N.name=`f9`;break;case`[21~`:N.name=`f10`;break;case`[23~`:N.name=`f11`;break;case`[24~`:N.name=`f12`;break;case`[200~`:N.name=`paste-start`;break;case`[201~`:N.name=`paste-end`;break;case`[A`:case`OA`:N.name=`up`;break;case`[B`:case`OB`:N.name=`down`;break;case`[C`:case`OC`:N.name=`right`;break;case`[D`:case`OD`:N.name=`left`;break;case`[E`:case`OE`:N.name=`clear`;break;case`[F`:case`OF`:N.name=`end`;break;case`[H`:case`OH`:N.name=`home`;break;case`[1~`:N.name=`home`;break;case`[2~`:N.name=`insert`;break;case`[3~`:N.name=`delete`;break;case`[4~`:N.name=`end`;break;case`[5~`:case`[[5~`:N.name=`pageup`;break;case`[6~`:case`[[6~`:N.name=`pagedown`;break;case`[7~`:N.name=`home`;break;case`[8~`:N.name=`end`;break;case`[a`:N.name=`up`,N.shift=!0;break;case`[b`:N.name=`down`,N.shift=!0;break;case`[c`:N.name=`right`,N.shift=!0;break;case`[d`:N.name=`left`,N.shift=!0;break;case`[2$`:N.name=`insert`,N.shift=!0;break;case`[3$`:N.name=`delete`,N.shift=!0;break;case`[5$`:N.name=`pageup`,N.shift=!0;break;case`[6$`:N.name=`pagedown`,N.shift=!0;break;case`[7$`:N.name=`home`,N.shift=!0;break;case`[8$`:N.name=`end`,N.shift=!0;break;case`Oa`:N.name=`up`,N.ctrl=!0;break;case`Ob`:N.name=`down`,N.ctrl=!0;break;case`Oc`:N.name=`right`,N.ctrl=!0;break;case`Od`:N.name=`left`,N.ctrl=!0;break;case`[2^`:N.name=`insert`,N.ctrl=!0;break;case`[3^`:N.name=`delete`,N.ctrl=!0;break;case`[5^`:N.name=`pageup`,N.ctrl=!0;break;case`[6^`:N.name=`pagedown`,N.ctrl=!0;break;case`[7^`:N.name=`home`,N.ctrl=!0;break;case`[8^`:N.name=`end`,N.ctrl=!0;break;case`[Z`:N.name=`tab`,N.shift=!0;break;default:N.name=`undefined`;break}}else a===`\r`?(N.name=`return`,N.meta=C):a===`
39
- `?(N.name=`enter`,N.meta=C):a===` `?(N.name=`tab`,N.meta=C):a===`\b`||a===``?(N.name=`backspace`,N.meta=C):a===`\x1B`?(N.name=`escape`,N.meta=C):a===` `?(N.name=`space`,N.meta=C):!C&&a<=``?(N.name=String.fromCharCode(a.charCodeAt(0)+97-1),N.ctrl=!0):/^[0-9A-Za-z]$/.test(a)?(N.name=a.toLowerCase(),N.shift=/^[A-Z]$/.test(a),N.meta=C):C&&(N.name=a.length?void 0:`escape`,N.meta=!0);N.sequence=S,S.length!==0&&(N.name!==void 0||C)?n.emit(`keypress`,C?void 0:S,N):S.length===1&&n.emit(`keypress`,S,N)}}function emitKeypressEvents(n,a={}){let S=n;if(S[gl])return;S[gl]=new Rt(`utf8`),S[_l]=emitKeys(n),S[_l].next();let C=a.escapeCodeTimeout??500,N,triggerEscape=()=>S[_l].next(``);function onData(a){if(n.listenerCount(`keypress`)>0){let F=S[gl].write(typeof a==`string`?Buffer.from(a):a);if(F){clearTimeout(N);for(let a of F)try{S[_l].next(a),a===`\x1B`&&(N=setTimeout(triggerEscape,C))}catch{S[_l]=emitKeys(n),S[_l].next()}}}else n.removeListener(`data`,onData),delete S[gl],delete S[_l]}n.on(`data`,onData)}var ml,Interface$1,hl,gl,_l,vl=__esmMin(()=>{Lt(),zt(),ml=/\r\n|\r|\n/,Interface$1=class extends Et{static{__name$1(this,`Interface`)}terminal;line=``;cursor=0;escapeCodeTimeout;_input;_output;get input(){return this._input}get output(){return this._output}_prompt;_closed=!1;_paused=!1;history;_historySize;_crlfDelay;_lineBuffer=``;_questionCallback=null;_boundOnData=null;_boundOnEnd=null;_boundOnError=null;_boundOnKeypress=null;constructor(n,a){super();let S;if(S=n&&typeof n==`object`&&!(`read`in n&&typeof n.read==`function`)?n:{input:n,output:a},this._input=S.input||null,this._output=S.output||null,this._prompt=S.prompt||`> `,this.terminal=S.terminal??this._output!==null,this._historySize=S.historySize??30,this.history=[],this._crlfDelay=S.crlfDelay??100,this.escapeCodeTimeout=S.escapeCodeTimeout,this._input&&(this._boundOnData=n=>this._onData(n),this._boundOnEnd=()=>this._onEnd(),this._boundOnError=n=>this.emit(`error`,n),this._input.on(`data`,this._boundOnData),this._input.on(`end`,this._boundOnEnd),this._input.on(`error`,this._boundOnError),`setEncoding`in this._input&&typeof this._input.setEncoding==`function`&&this._input.setEncoding(`utf8`),this.terminal)){emitKeypressEvents(this._input,this);let n=this._input;typeof n.setRawMode==`function`&&(n.isRaw||n.setRawMode(!0)),typeof this._input.resume==`function`&&this._input.resume(),this._boundOnKeypress=(n,a)=>{a&&(a.name===`backspace`||a.name===`delete`?this.cursor>0&&(this.line=this.line.slice(0,this.cursor-1)+this.line.slice(this.cursor),this.cursor--):n&&n.length===1&&!a.ctrl&&!a.meta&&a.name!==`return`&&a.name!==`enter`&&a.name!==`escape`&&(this.line=this.line.slice(0,this.cursor)+n+this.line.slice(this.cursor),this.cursor++))},this._input.on(`keypress`,this._boundOnKeypress)}}_onData(n){if(this._closed||this._paused)return;let a=typeof n==`string`?n:n.toString(`utf8`);this._lineBuffer+=a;let S;for(;(S=ml.exec(this._lineBuffer))!==null;){let n=this._lineBuffer.substring(0,S.index);this._lineBuffer=this._lineBuffer.substring(S.index+S[0].length),this._onLine(n)}}_onLine(n){if(n.length>0&&this._historySize>0&&(this.history.length===0||this.history[0]!==n)&&(this.history.unshift(n),this.history.length>this._historySize&&this.history.pop()),this._questionCallback){let a=this._questionCallback;this._questionCallback=null,a(n)}this.emit(`line`,n)}_onEnd(){this._lineBuffer.length>0&&(this._onLine(this._lineBuffer),this._lineBuffer=``),this.close()}setPrompt(n){this._prompt=n}getPrompt(){return this._prompt}prompt(n){if(this._closed)throw Error(`readline was closed`);this._output?.write(this._prompt)}question(n,a,S){if(this._closed)throw Error(`readline was closed`);let C=typeof a==`function`?a:S;this._questionCallback=C,this._output?.write(n)}clearLine(n,a){return this.line=``,this.cursor=0,a&&a(),!0}write(n,a){if(!this._closed){if(a){this._input&&this._input.emit(`keypress`,n??``,a);return}if(n!=null){let a=typeof n==`string`?n:n.toString(`utf8`);a&&(this.line=this.line.slice(0,this.cursor)+a+this.line.slice(this.cursor),this.cursor+=a.length),this._output?.write(n)}}}close(){if(!this._closed){if(this._closed=!0,this._input){this._boundOnData&&this._input.removeListener(`data`,this._boundOnData),this._boundOnEnd&&this._input.removeListener(`end`,this._boundOnEnd),this._boundOnError&&this._input.removeListener(`error`,this._boundOnError),this._boundOnKeypress&&this._input.removeListener(`keypress`,this._boundOnKeypress),this._boundOnData=null,this._boundOnEnd=null,this._boundOnError=null,this._boundOnKeypress=null;let n=this._input;this.terminal&&n.isRaw&&typeof n.setRawMode==`function`&&n.setRawMode(!1),typeof this._input.pause==`function`&&this._input.pause()}this.emit(`close`)}}pause(){return this._closed?this:(this._paused=!0,this._input&&`pause`in this._input&&typeof this._input.pause==`function`&&this._input.pause(),this.emit(`pause`),this)}resume(){return this._closed?this:(this._paused=!1,this._input&&`resume`in this._input&&typeof this._input.resume==`function`&&this._input.resume(),this.emit(`resume`),this)}getCursorPos(){let n=this._output?.columns??80,a=this._prompt.length+this.cursor;return{rows:Math.floor(a/n),cols:a%n}}[Symbol.asyncIterator](){let n=[],a=null,S=!1,onLine=S=>{if(a){let n=a;a=null,n({value:S,done:!1})}else n.push(S)},onClose=()=>{if(S=!0,a){let n=a;a=null,n({value:void 0,done:!0})}};return this.on(`line`,onLine),this.on(`close`,onClose),{next:()=>n.length>0?Promise.resolve({value:n.shift(),done:!1}):S?Promise.resolve({value:void 0,done:!0}):new Promise(n=>{a=n}),return:()=>(S=!0,this.removeListener(`line`,onLine),this.removeListener(`close`,onClose),Promise.resolve({value:void 0,done:!0})),[Symbol.asyncIterator](){return this}}}},hl=Symbol.dispose??Symbol.for(`Symbol.dispose`),Interface$1.prototype[hl]=function(){this.close()},__name$1(createInterface$1,`createInterface`),gl=Symbol(`keypress-decoder`),_l=Symbol(`escape-decoder`)}),yl,bl=__esmMin(()=>{Fc(),Dc(),Ic(),Bc(),pl(),Yc(),Zc(),Qc(),st(),Dr(),nt(),vl(),yl=class FileHandle{options;_gFile;_pathStr;_spec;_pos=0;_closed=!1;static instances={};constructor(n){this.options=n,this.options.flags??=`r`;let a=normalizePath(n.path);this._spec=parseOpenFlags(this.options.flags),this.options.mode??=438;let S=normalizeMode(this.options.mode,438);return this.fd=openFd(a,this._spec,S),this._pathStr=a,this._gFile=Er.File.new_for_path(a),FileHandle.instances[this.fd]=this,FileHandle.getInstance(this.fd)}_readCore(n,a,S,C){if(this._assertOpen(`read`),!this._spec.readable)throw fsError(`EBADF`,`read`,this._pathStr);if(S>n.byteLength-a){let C=RangeError(`The value of "length" is out of range. It must be <= ${n.byteLength-a}. Received ${S}`);throw C.code=`ERR_OUT_OF_RANGE`,C}let N=C!=null&&C>=0,F=isSeekableFd(this.fd,this._pathStr);if(N&&!F)throw fsError(`ESPIPE`,`read`,this._pathStr);let I=N?C:this._pos;F&&seekFd(this.fd,I);let H=readFd(this.fd,S);return H.length>0&&new Uint8Array(n.buffer,n.byteOffset+a,H.length).set(H),!N&&F&&(this._pos=I+H.length),H.length}_writeCore(n,a){if(this._assertOpen(`write`),!this._spec.writable)throw fsError(`EBADF`,`write`,this._pathStr);if(this._spec.append){let a=writeFd(this.fd,n);return this._pos=tellFd(this.fd)??sizeOfFd(this.fd,this._pathStr),a}let S=a!=null&&a>=0,C=isSeekableFd(this.fd,this._pathStr);if(S&&!C)throw fsError(`ESPIPE`,`write`,this._pathStr);let N=S?a:this._pos;C&&seekFd(this.fd,N);let F=writeFd(this.fd,n);return!S&&C&&(this._pos=N+F),F}_assertOpen(n){if(this._closed)throw fsError(`EBADF`,n,this._pathStr)}_truncateCore(n){if(this._assertOpen(`ftruncate`),!this._spec.writable)throw fsError(`EINVAL`,`ftruncate`,this._pathStr);truncateFd(this.fd,Math.max(0,n),this._pathStr)}_readToEnd(){let n=[],a=0;for(;;){let S=new Uint8Array(64*1024),C=this._readCore(S,0,S.length,null);if(C===0)break;n.push(S.subarray(0,C)),a+=C}let S=new Uint8Array(a),C=0;for(let a of n)S.set(a,C),C+=a.length;return S}_fdTarget(){return fdPath(this.fd)??this._pathStr}fd;static getInstance(n,a=`read`){let S=n instanceof FileHandle?n.fd:n,C=FileHandle.instances[S];if(!C)throw fsError(`EBADF`,a);return C}async appendFile(n,a){await this.writeFile(n,a)}async chown(n,a){this._assertOpen(`fchown`),chownSync(normalizePath(this.options.path),n,a)}async chmod(n){this._assertOpen(`fchmod`),chmodSync(this._fdTarget(),n)}createReadStream(n){return new ReadStream$1(this.options.path,{...n,fd:this.fd})}createWriteStream(n){return new WriteStream$1(this.options.path,{...n,fd:this.fd,fdFromHandle:!0})}async datasync(){this._assertOpen(`fdatasync`),fsyncFd(this.fd)}async sync(){this._assertOpen(`fsync`),fsyncFd(this.fd)}async read(...n){let a,S,C,N;if(typeof n[0]==`object`&&!(n[0]instanceof Uint8Array)&&!(n[0]instanceof qe)){let F=n[0];a=F.buffer,S=F.offset,C=F.length,N=F.position}else a=n[0],S=n[1],C=n[2],N=n[3];let F=a,I=S??0,H=C??(F?F.byteLength-I:65536);return{bytesRead:this._readCore(a,I,H,N??null),buffer:a}}readableWebStream(){let n=globalThis.ReadableStream;if(typeof n!=`function`)throw Error(`readableWebStream() requires a global ReadableStream. Import "node:stream/web" or "@gjsify/streams" before calling this method.`);return new n}async readFile(n){return encodeUint8Array(getEncodingFromOptions(n,`buffer`),this._readToEnd())}readLines(n){return createInterface$1({input:this.createReadStream(n),crlfDelay:1/0})}async stat(n){this._assertOpen(`fstat`);let a=Er.File.new_for_path(this._fdTarget());return statsFrom(await new Promise((n,S)=>{a.query_info_async(Xc,Er.FileQueryInfoFlags.NONE,ot.PRIORITY_DEFAULT,null,(C,N)=>{try{n(a.query_info_finish(N))}catch(n){S(n)}})}),this._pathStr,`fstat`,n?.bigint)}async truncate(n=0){this._truncateCore(n)}async utimes(n,a){this._assertOpen(`futimes`);let{utimesSync:S}=await Promise.resolve().then(()=>(jc(),Ac));S(normalizePath(this.options.path),n,a)}async writeFile(n,a){let S=getEncodingFromOptions(a),C;C=typeof n==`string`?qe.from(n,S||`utf8`):n,this._writeCore(C,null)}async write(n,...a){let S=null,C=null,N=null,F=null;typeof n==`string`?(S=a[0],C=a[1]):(N=a[0],F=a[1],S=a[2]),C=getEncodingFromOptions(C,typeof n==`string`?`utf8`:null);let I;I=typeof n==`string`?new TextEncoder().encode(n):n;let H=N??0,W=F??I.byteLength-H,K=I.subarray(H,H+W);return{bytesWritten:this._writeCore(K,S??null),buffer:n}}async writev(n,a){let S=0;for(let C of n){let n=qe.from(C.buffer,C.byteOffset,C.byteLength),N=await this.write(n,0,n.byteLength,a==null?null:a+S);S+=N.bytesWritten}return{bytesWritten:S,buffers:n}}async readv(n,a){let S=0;for(let C of n){let n=await this.read({buffer:qe.from(C.buffer,C.byteOffset,C.byteLength),position:a==null?null:a+S});if(S+=n.bytesRead,n.bytesRead<C.byteLength)break}return{bytesRead:S,buffers:n}}_flushSync(){fsyncFd(this.fd)}_closeSync(){this._teardown()}_readSync(n,a,S,C){return this._readCore(n,a,S,C)}_writeSync(n,a){return this._writeCore(n,a)}_readToEndSync(){return this._readToEnd()}_truncateSync(n){this._truncateCore(n)}_fdStatTarget(){return this._fdTarget()}_teardown(){if(this._closed)return;this._closed=!0,releaseFd(this.fd),closeFd(this.fd);let n=FileHandle;delete n.instances[this.fd]}async close(){this._teardown()}async[Symbol.asyncDispose](){await this.close()}pull(...n){throw Error('FileHandle.pull() is not implemented in @gjsify/fs yet — requires `node:stream/iter` (Node 25.9+) which @gjsify/stream has not ported. Track gjsify Open TODO "Node 25 stream/iter integration".')}writer(n){throw Error('FileHandle.writer() is not implemented in @gjsify/fs yet — requires `node:stream/iter` (Node 25.9+) which @gjsify/stream has not ported. Track gjsify Open TODO "Node 25 stream/iter integration".')}}});function getFH(n,a){return yl.getInstance(n,a)}function fstatSync(n,a){return statSync(getFH(n,`fstat`)._fdStatTarget(),a)}function fstat(n,a,S){let C=typeof a==`function`?a:S;fstatAsync(n,typeof a==`function`?{}:a).then(n=>C(null,n),n=>C(n,void 0))}async function fstatAsync(n,a){return a?.bigint,fstatSync(n,a)}function ftruncateSync(n,a=0){getFH(n,`ftruncate`)._truncateSync(a)}function ftruncate(n,a,S){let C=typeof a==`function`?a:S;ftruncateAsync(n,typeof a==`function`?0:a).then(()=>C(null),C)}async function ftruncateAsync(n,a=0){ftruncateSync(n,a)}function fdatasyncSync(n){getFH(n,`fdatasync`)._flushSync()}function fdatasync(n,a){Promise.resolve().then(()=>fdatasyncSync(n)).then(()=>a(null),a)}async function fdatasyncAsync(n){fdatasyncSync(n)}function fsyncSync(n){getFH(n,`fsync`)._flushSync()}function fsync(n,a){Promise.resolve().then(()=>fsyncSync(n)).then(()=>a(null),a)}async function fsyncAsync(n){fsyncSync(n)}function fchmodSync(n,a){chmodSync(getFH(n,`fchmod`)._fdStatTarget(),a)}function fchmod(n,a,S){Promise.resolve().then(()=>fchmodSync(n,a)).then(()=>S(null),S)}async function fchmodAsync(n,a){fchmodSync(n,a)}function fchownSync(n,a,S){chownSync(normalizePath(getFH(n,`fchown`).options.path),a,S)}function fchown(n,a,S,C){Promise.resolve().then(()=>fchownSync(n,a,S)).then(()=>C(null),C)}async function fchownAsync(n,a,S){fchownSync(n,a,S)}function futimesSync(n,a,S){utimesSync(normalizePath(getFH(n,`futimes`).options.path),a,S)}function futimes(n,a,S,C){Promise.resolve().then(()=>futimesSync(n,a,S)).then(()=>C(null),C)}async function futimesAsync(n,a,S){futimesSync(n,a,S)}function closeSync(n){isStdFd(n)||getFH(n,`close`)._closeSync()}function readSync(n,a,S,C,N){let F=0;return typeof S==`object`&&S?(F=S.offset??0,C=S.length??a.byteLength-F,N=S.position??null):(F=S??0,C??=a.byteLength-F),isStdFd(n)?readStdFdSync(n,a,F,C):getFH(n,`read`)._readSync(a,F,C,N??null)}function writeSync(n,a,S,C,N){let F;if(typeof a==`string`)F=new TextEncoder().encode(a),typeof S==`number`&&(N=S);else{let n=typeof S==`number`?S:0,N=typeof C==`number`?C:a.byteLength-n;F=new Uint8Array(a.buffer,a.byteOffset+n,N)}return isStdFd(n)?writeStdFdSync(n,F):getFH(n,`write`)._writeSync(F,N??null)}function readvSync(n,a,S){let C=0;for(let N of a){let a=readSync(n,N,0,N.byteLength,S==null?null:S+C);if(C+=a,a<N.byteLength)break}return C}function readv(n,a,S,C){let N=typeof S==`function`?S:C;readvAsync(n,a,typeof S==`function`?null:S).then(n=>N(null,n.bytesRead,n.buffers),n=>N(n,0,a))}async function readvAsync(n,a,S){return{bytesRead:readvSync(n,a,S),buffers:a}}function writevSync(n,a,S){let C=0;for(let N of a){let a=writeSync(n,N,0,N.byteLength,S==null?null:S+C);C+=a}return C}function writev(n,a,S,C){let N=typeof S==`function`?S:C;writevAsync(n,a,typeof S==`function`?null:S).then(n=>N(null,n.bytesWritten,n.buffers),n=>N(n,0,a))}async function writevAsync(n,a,S){return{bytesWritten:writevSync(n,a,S),buffers:a}}function exists(n,a){try{statSync(normalizePath(n)),a(!0)}catch{a(!1)}}async function openAsBlob(n,a){let S=readFileSync(normalizePath(n));return new Blob([S],{type:a?.type??``})}var xl=__esmMin(()=>{Dc(),jc(),Pc(),bl(),Qc()});function zeroedStat(){return{dev:0,ino:0,mode:0,nlink:0,uid:0,gid:0,rdev:0,size:0,blksize:0,blocks:0,atimeMs:0,mtimeMs:0,ctimeMs:0,birthtimeMs:0,atime:new Date(0),mtime:new Date(0),ctime:new Date(0),birthtime:new Date(0),isFile:()=>!1,isDirectory:()=>!1,isBlockDevice:()=>!1,isCharacterDevice:()=>!1,isSymbolicLink:()=>!1,isFIFO:()=>!1,isSocket:()=>!1}}function watchFile(n,a,S){typeof a==`function`&&(S=a,a={});let C=a.interval??5007,N=n.toString(),F=Sl.get(N);return F||(F=new StatWatcher(N,C),F.start(),Sl.set(N,F)),S&&F.addChangeListener(S),F}function unwatchFile(n,a){let S=n.toString(),C=Sl.get(S);C&&(a?C.removeChangeListener(a):C.removeAllChangeListeners(),C.changeListenerCount===0&&(C.stop(),Sl.delete(S)))}var StatWatcher,Sl,Cl=__esmMin(()=>{Qc(),Lt(),StatWatcher=class extends Et{_path;_interval;_timerId=null;_prev;_changeCount=0;constructor(n,a){super(),this._path=n,this._interval=a,this._prev=zeroedStat()}start(){try{this._prev=statSync(this._path)}catch{}this._timerId=setInterval(()=>{let n;try{n=statSync(this._path)}catch{n=zeroedStat()}let a=this._prev;(n.mtimeMs!==a.mtimeMs||n.size!==a.size||n.ino!==a.ino)&&(this._prev=n,this.emit(`change`,n,a))},this._interval)}stop(){this._timerId!==null&&(clearInterval(this._timerId),this._timerId=null),this.emit(`stop`)}addChangeListener(n){this._changeCount++,this.on(`change`,n)}removeChangeListener(n){this._changeCount--,this.removeListener(`change`,n)}removeAllChangeListeners(){this._changeCount=0,this.removeAllListeners(`change`)}get changeListenerCount(){return this._changeCount}},Sl=new Map}),wl=__exportAll$4({BigIntStats:()=>BigIntStats,Dir:()=>Dir,Dirent:()=>Dirent,FSWatcher:()=>FSWatcher,ReadStream:()=>ReadStream$1,StatWatcher:()=>StatWatcher,Stats:()=>Stats,WriteStream:()=>WriteStream$1,access:()=>access,accessSync:()=>accessSync,appendFile:()=>appendFile,appendFileSync:()=>appendFileSync,chmod:()=>chmod,chmodSync:()=>chmodSync,chown:()=>chown,chownSync:()=>chownSync,close:()=>close$1,closeSync:()=>closeSync,constants:()=>Tl,copyFile:()=>copyFile,copyFileSync:()=>copyFileSync,cp:()=>cp,cpSync:()=>cpSync,createReadStream:()=>createReadStream,createWriteStream:()=>createWriteStream,default:()=>El,exists:()=>exists,existsSync:()=>existsSync,fchmod:()=>fchmod,fchmodSync:()=>fchmodSync,fchown:()=>fchown,fchownSync:()=>fchownSync,fdatasync:()=>fdatasync,fdatasyncSync:()=>fdatasyncSync,fstat:()=>fstat,fstatSync:()=>fstatSync,fsync:()=>fsync,fsyncSync:()=>fsyncSync,ftruncate:()=>ftruncate,ftruncateSync:()=>ftruncateSync,futimes:()=>futimes,futimesSync:()=>futimesSync,glob:()=>glob,globSync:()=>globSync,lchmod:()=>void 0,lchmodSync:()=>void 0,lchown:()=>lchown,lchownSync:()=>lchownSync,link:()=>link,linkSync:()=>linkSync,lstat:()=>lstat,lstatSync:()=>lstatSync,lutimes:()=>lutimes,lutimesSync:()=>lutimesSync,mkdir:()=>mkdir,mkdirSync:()=>mkdirSync,mkdtempSync:()=>mkdtempSync,open:()=>open$1,openAsBlob:()=>openAsBlob,openSync:()=>openSync,opendir:()=>opendir,opendirSync:()=>opendirSync,promises:()=>sl,read:()=>read$1,readFile:()=>readFile,readFileSync:()=>readFileSync,readSync:()=>readSync,readdir:()=>readdir,readdirSync:()=>readdirSync,readlink:()=>readlink,readlinkSync:()=>readlinkSync,readv:()=>readv,readvSync:()=>readvSync,realpath:()=>realpath,realpathSync:()=>realpathSync,rename:()=>rename,renameSync:()=>renameSync,rm:()=>rm,rmSync:()=>rmSync,rmdir:()=>rmdir,rmdirSync:()=>rmdirSync,stat:()=>stat,statSync:()=>statSync,statfs:()=>statfs,statfsSync:()=>statfsSync,symlink:()=>symlink,symlinkSync:()=>symlinkSync,truncate:()=>truncate,truncateSync:()=>truncateSync,unlink:()=>unlink,unlinkSync:()=>unlinkSync,unwatchFile:()=>unwatchFile,utimes:()=>utimes,utimesSync:()=>utimesSync,watch:()=>watch,watchFile:()=>watchFile,write:()=>write,writeFile:()=>writeFile,writeFileSync:()=>writeFileSync,writeSync:()=>writeSync,writev:()=>writev,writevSync:()=>writevSync});function openFlagDescriptors(){let n={};for(let a of Object.keys(openFlagValues()))n[a]={enumerable:!0,configurable:!0,get:()=>openFlagValues()[a]};return n}var Tl,El,Dl=__esmMin(()=>{kc(),jc(),xl(),Ic(),Bc(),pl(),Hc(),Zc(),Qc(),$c(),tl(),nl(),al(),ll(),ul(),Cl(),Tl=Object.defineProperties({F_OK:0,R_OK:4,W_OK:2,X_OK:1,COPYFILE_EXCL:1,COPYFILE_FICLONE:2,COPYFILE_FICLONE_FORCE:4,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,S_IXOTH:1},openFlagDescriptors()),El={FSWatcher,StatWatcher,Stats,BigIntStats,Dirent,Dir,constants:Tl,existsSync,readdirSync,readFileSync,writeFileSync,mkdirSync,rmdirSync,unlinkSync,mkdtempSync,rmSync,statSync,openSync,realpathSync,symlinkSync,lstatSync,renameSync,copyFileSync,accessSync,appendFileSync,readlinkSync,linkSync,truncateSync,chmodSync,chownSync,cpSync,opendirSync,globSync,glob,watch,watchFile,unwatchFile,statfsSync,statfs,utimesSync,utimes,lutimesSync,lutimes,lchownSync,lchown,lchmodSync:void 0,lchmod:void 0,fstatSync,fstat,ftruncateSync,ftruncate,fdatasyncSync,fdatasync,fsyncSync,fsync,fchmodSync,fchmod,fchownSync,fchown,futimesSync,futimes,closeSync,readSync,writeSync,readvSync,readv,writevSync,writev,exists,openAsBlob,createReadStream,ReadStream:ReadStream$1,createWriteStream,WriteStream:WriteStream$1,promises:sl,open:open$1,close:close$1,read:read$1,write,rm,realpath,readdir,symlink,lstat,stat,rename,copyFile,cp,access,appendFile,readlink,truncate,chmod,chown,mkdir,rmdir,readFile,writeFile,unlink,link,opendir}}),Ol,kl,Al,jl,Ml,Nl,Pl=__esmMin(()=>{
39
+ `?(N.name=`enter`,N.meta=C):a===` `?(N.name=`tab`,N.meta=C):a===`\b`||a===``?(N.name=`backspace`,N.meta=C):a===`\x1B`?(N.name=`escape`,N.meta=C):a===` `?(N.name=`space`,N.meta=C):!C&&a<=``?(N.name=String.fromCharCode(a.charCodeAt(0)+97-1),N.ctrl=!0):/^[0-9A-Za-z]$/.test(a)?(N.name=a.toLowerCase(),N.shift=/^[A-Z]$/.test(a),N.meta=C):C&&(N.name=a.length?void 0:`escape`,N.meta=!0);N.sequence=S,S.length!==0&&(N.name!==void 0||C)?n.emit(`keypress`,C?void 0:S,N):S.length===1&&n.emit(`keypress`,S,N)}}function emitKeypressEvents(n,a={}){let S=n;if(S[gl])return;S[gl]=new Rt(`utf8`),S[_l]=emitKeys(n),S[_l].next();let C=a.escapeCodeTimeout??500,N,triggerEscape=()=>S[_l].next(``);function onData(a){if(n.listenerCount(`keypress`)>0){let F=S[gl].write(typeof a==`string`?Buffer.from(a):a);if(F){clearTimeout(N);for(let a of F)try{S[_l].next(a),a===`\x1B`&&(N=setTimeout(triggerEscape,C))}catch{S[_l]=emitKeys(n),S[_l].next()}}}else n.removeListener(`data`,onData),delete S[gl],delete S[_l]}n.on(`data`,onData)}var ml,Interface$1,hl,gl,_l,vl=__esmMin(()=>{Lt(),zt(),ml=/\r\n|\r|\n/,Interface$1=class extends Et{static{__name$1(this,`Interface`)}terminal;line=``;cursor=0;escapeCodeTimeout;_input;_output;get input(){return this._input}get output(){return this._output}_prompt;_closed=!1;_paused=!1;history;_historySize;_crlfDelay;_lineBuffer=``;_questionCallback=null;_boundOnData=null;_boundOnEnd=null;_boundOnError=null;_boundOnKeypress=null;constructor(n,a){super();let S;if(S=n&&typeof n==`object`&&!(`read`in n&&typeof n.read==`function`)?n:{input:n,output:a},this._input=S.input||null,this._output=S.output||null,this._prompt=S.prompt||`> `,this.terminal=S.terminal??this._output!==null,this._historySize=S.historySize??30,this.history=[],this._crlfDelay=S.crlfDelay??100,this.escapeCodeTimeout=S.escapeCodeTimeout,this._input&&(this._boundOnData=n=>this._onData(n),this._boundOnEnd=()=>this._onEnd(),this._boundOnError=n=>this.emit(`error`,n),this._input.on(`data`,this._boundOnData),this._input.on(`end`,this._boundOnEnd),this._input.on(`error`,this._boundOnError),`setEncoding`in this._input&&typeof this._input.setEncoding==`function`&&this._input.setEncoding(`utf8`),this.terminal)){emitKeypressEvents(this._input,this);let n=this._input;typeof n.setRawMode==`function`&&(n.isRaw||n.setRawMode(!0)),typeof this._input.resume==`function`&&this._input.resume(),this._boundOnKeypress=(n,a)=>{a&&(a.name===`backspace`||a.name===`delete`?this.cursor>0&&(this.line=this.line.slice(0,this.cursor-1)+this.line.slice(this.cursor),this.cursor--):n&&n.length===1&&!a.ctrl&&!a.meta&&a.name!==`return`&&a.name!==`enter`&&a.name!==`escape`&&(this.line=this.line.slice(0,this.cursor)+n+this.line.slice(this.cursor),this.cursor++))},this._input.on(`keypress`,this._boundOnKeypress)}}_onData(n){if(this._closed||this._paused)return;let a=typeof n==`string`?n:n.toString(`utf8`);this._lineBuffer+=a;let S;for(;(S=ml.exec(this._lineBuffer))!==null;){let n=this._lineBuffer.substring(0,S.index);this._lineBuffer=this._lineBuffer.substring(S.index+S[0].length),this._onLine(n)}}_onLine(n){if(n.length>0&&this._historySize>0&&(this.history.length===0||this.history[0]!==n)&&(this.history.unshift(n),this.history.length>this._historySize&&this.history.pop()),this._questionCallback){let a=this._questionCallback;this._questionCallback=null,a(n)}this.emit(`line`,n)}_onEnd(){this._lineBuffer.length>0&&(this._onLine(this._lineBuffer),this._lineBuffer=``),this.close()}setPrompt(n){this._prompt=n}getPrompt(){return this._prompt}prompt(n){if(this._closed)throw Error(`readline was closed`);this._output?.write(this._prompt)}question(n,a,S){if(this._closed)throw Error(`readline was closed`);let C=typeof a==`function`?a:S;this._questionCallback=C,this._output?.write(n)}clearLine(n,a){return this.line=``,this.cursor=0,a&&a(),!0}write(n,a){if(!this._closed){if(a){this._input&&this._input.emit(`keypress`,n??``,a);return}if(n!=null){let a=typeof n==`string`?n:n.toString(`utf8`);a&&(this.line=this.line.slice(0,this.cursor)+a+this.line.slice(this.cursor),this.cursor+=a.length),this._output?.write(n)}}}close(){if(!this._closed){if(this._closed=!0,this._input){this._boundOnData&&this._input.removeListener(`data`,this._boundOnData),this._boundOnEnd&&this._input.removeListener(`end`,this._boundOnEnd),this._boundOnError&&this._input.removeListener(`error`,this._boundOnError),this._boundOnKeypress&&this._input.removeListener(`keypress`,this._boundOnKeypress),this._boundOnData=null,this._boundOnEnd=null,this._boundOnError=null,this._boundOnKeypress=null;let n=this._input;this.terminal&&n.isRaw&&typeof n.setRawMode==`function`&&n.setRawMode(!1),typeof this._input.pause==`function`&&this._input.pause()}this.emit(`close`)}}pause(){return this._closed?this:(this._paused=!0,this._input&&`pause`in this._input&&typeof this._input.pause==`function`&&this._input.pause(),this.emit(`pause`),this)}resume(){return this._closed?this:(this._paused=!1,this._input&&`resume`in this._input&&typeof this._input.resume==`function`&&this._input.resume(),this.emit(`resume`),this)}getCursorPos(){let n=this._output?.columns??80,a=this._prompt.length+this.cursor;return{rows:Math.floor(a/n),cols:a%n}}[Symbol.asyncIterator](){let n=[],a=null,S=!1,onLine=S=>{if(a){let n=a;a=null,n({value:S,done:!1})}else n.push(S)},onClose=()=>{if(S=!0,a){let n=a;a=null,n({value:void 0,done:!0})}};return this.on(`line`,onLine),this.on(`close`,onClose),{next:()=>n.length>0?Promise.resolve({value:n.shift(),done:!1}):S?Promise.resolve({value:void 0,done:!0}):new Promise(n=>{a=n}),return:()=>(S=!0,this.removeListener(`line`,onLine),this.removeListener(`close`,onClose),Promise.resolve({value:void 0,done:!0})),[Symbol.asyncIterator](){return this}}}},hl=Symbol.dispose??Symbol.for(`Symbol.dispose`),Interface$1.prototype[hl]=function(){this.close()},__name$1(createInterface$1,`createInterface`),gl=Symbol(`keypress-decoder`),_l=Symbol(`escape-decoder`)}),yl,bl=__esmMin(()=>{Fc(),Dc(),Ic(),Bc(),pl(),Yc(),Zc(),Qc(),st(),Dr(),nt(),vl(),yl=class FileHandle{options;_gFile;_pathStr;_spec;_pos=0;_closed=!1;static instances={};constructor(n){this.options=n,this.options.flags??=`r`;let a=normalizePath(n.path);this._spec=parseOpenFlags(this.options.flags),this.options.mode??=438;let S=normalizeMode(this.options.mode,438);return this.fd=openFd(a,this._spec,S),this._pathStr=a,this._gFile=Er.File.new_for_path(a),FileHandle.instances[this.fd]=this,FileHandle.getInstance(this.fd)}_readCore(n,a,S,C){if(this._assertOpen(`read`),!this._spec.readable)throw fsError(`EBADF`,`read`,this._pathStr);if(S>n.byteLength-a){let C=RangeError(`The value of "length" is out of range. It must be <= ${n.byteLength-a}. Received ${S}`);throw C.code=`ERR_OUT_OF_RANGE`,C}let N=C!=null&&C>=0,F=isSeekableFd(this.fd,this._pathStr);if(N&&!F)throw fsError(`ESPIPE`,`read`,this._pathStr);let I=N?C:this._pos;F&&seekFd(this.fd,I);let H=readFd(this.fd,S);return H.length>0&&new Uint8Array(n.buffer,n.byteOffset+a,H.length).set(H),!N&&F&&(this._pos=I+H.length),H.length}_writeCore(n,a){if(this._assertOpen(`write`),!this._spec.writable)throw fsError(`EBADF`,`write`,this._pathStr);if(this._spec.append){let a=writeFd(this.fd,n);return this._pos=tellFd(this.fd)??sizeOfFd(this.fd,this._pathStr),a}let S=a!=null&&a>=0,C=isSeekableFd(this.fd,this._pathStr);if(S&&!C)throw fsError(`ESPIPE`,`write`,this._pathStr);let N=S?a:this._pos;C&&seekFd(this.fd,N);let F=writeFd(this.fd,n);return!S&&C&&(this._pos=N+F),F}_assertOpen(n){if(this._closed)throw fsError(`EBADF`,n,this._pathStr)}_truncateCore(n){if(this._assertOpen(`ftruncate`),!this._spec.writable)throw fsError(`EINVAL`,`ftruncate`,this._pathStr);truncateFd(this.fd,Math.max(0,n),this._pathStr)}_readToEnd(){let n=[],a=0;for(;;){let S=new Uint8Array(64*1024),C=this._readCore(S,0,S.length,null);if(C===0)break;n.push(S.subarray(0,C)),a+=C}let S=new Uint8Array(a),C=0;for(let a of n)S.set(a,C),C+=a.length;return S}_fdTarget(){return fdPath(this.fd)??this._pathStr}fd;static getInstance(n,a=`read`){let S=n instanceof FileHandle?n.fd:n,C=FileHandle.instances[S];if(!C)throw fsError(`EBADF`,a);return C}async appendFile(n,a){await this.writeFile(n,a)}async chown(n,a){this._assertOpen(`fchown`),chownSync(normalizePath(this.options.path),n,a)}async chmod(n){this._assertOpen(`fchmod`),chmodSync(this._fdTarget(),n)}createReadStream(n){return new ReadStream$1(this.options.path,{...n,fd:this.fd})}createWriteStream(n){return new WriteStream$1(this.options.path,{...n,fd:this.fd,fdFromHandle:!0})}async datasync(){this._assertOpen(`fdatasync`),fsyncFd(this.fd)}async sync(){this._assertOpen(`fsync`),fsyncFd(this.fd)}async read(...n){let a,S,C,N;if(typeof n[0]==`object`&&!(n[0]instanceof Uint8Array)&&!(n[0]instanceof qe)){let F=n[0];a=F.buffer,S=F.offset,C=F.length,N=F.position}else a=n[0],S=n[1],C=n[2],N=n[3];let F=a,I=S??0,H=C??(F?F.byteLength-I:65536);return{bytesRead:this._readCore(a,I,H,N??null),buffer:a}}readableWebStream(){let n=globalThis.ReadableStream;if(typeof n!=`function`)throw Error(`readableWebStream() requires a global ReadableStream. Import "node:stream/web" or "@gjsify/web-streams/register" before calling this method.`);return new n}async readFile(n){return encodeUint8Array(getEncodingFromOptions(n,`buffer`),this._readToEnd())}readLines(n){return createInterface$1({input:this.createReadStream(n),crlfDelay:1/0})}async stat(n){this._assertOpen(`fstat`);let a=Er.File.new_for_path(this._fdTarget());return statsFrom(await new Promise((n,S)=>{a.query_info_async(Xc,Er.FileQueryInfoFlags.NONE,ot.PRIORITY_DEFAULT,null,(C,N)=>{try{n(a.query_info_finish(N))}catch(n){S(n)}})}),this._pathStr,`fstat`,n?.bigint)}async truncate(n=0){this._truncateCore(n)}async utimes(n,a){this._assertOpen(`futimes`);let{utimesSync:S}=await Promise.resolve().then(()=>(jc(),Ac));S(normalizePath(this.options.path),n,a)}async writeFile(n,a){let S=getEncodingFromOptions(a),C;C=typeof n==`string`?qe.from(n,S||`utf8`):n,this._writeCore(C,null)}async write(n,...a){let S=null,C=null,N=null,F=null;typeof n==`string`?(S=a[0],C=a[1]):(N=a[0],F=a[1],S=a[2]),C=getEncodingFromOptions(C,typeof n==`string`?`utf8`:null);let I;I=typeof n==`string`?new TextEncoder().encode(n):n;let H=N??0,W=F??I.byteLength-H,K=I.subarray(H,H+W);return{bytesWritten:this._writeCore(K,S??null),buffer:n}}async writev(n,a){let S=0;for(let C of n){let n=qe.from(C.buffer,C.byteOffset,C.byteLength),N=await this.write(n,0,n.byteLength,a==null?null:a+S);S+=N.bytesWritten}return{bytesWritten:S,buffers:n}}async readv(n,a){let S=0;for(let C of n){let n=await this.read({buffer:qe.from(C.buffer,C.byteOffset,C.byteLength),position:a==null?null:a+S});if(S+=n.bytesRead,n.bytesRead<C.byteLength)break}return{bytesRead:S,buffers:n}}_flushSync(){fsyncFd(this.fd)}_closeSync(){this._teardown()}_readSync(n,a,S,C){return this._readCore(n,a,S,C)}_writeSync(n,a){return this._writeCore(n,a)}_readToEndSync(){return this._readToEnd()}_truncateSync(n){this._truncateCore(n)}_fdStatTarget(){return this._fdTarget()}_teardown(){if(this._closed)return;this._closed=!0,releaseFd(this.fd),closeFd(this.fd);let n=FileHandle;delete n.instances[this.fd]}async close(){this._teardown()}async[Symbol.asyncDispose](){await this.close()}pull(...n){throw Error('FileHandle.pull() is not implemented in @gjsify/fs yet — requires `node:stream/iter` (Node 25.9+) which @gjsify/stream has not ported. Track gjsify Open TODO "Node 25 stream/iter integration".')}writer(n){throw Error('FileHandle.writer() is not implemented in @gjsify/fs yet — requires `node:stream/iter` (Node 25.9+) which @gjsify/stream has not ported. Track gjsify Open TODO "Node 25 stream/iter integration".')}}});function getFH(n,a){return yl.getInstance(n,a)}function fstatSync(n,a){return statSync(getFH(n,`fstat`)._fdStatTarget(),a)}function fstat(n,a,S){let C=typeof a==`function`?a:S;fstatAsync(n,typeof a==`function`?{}:a).then(n=>C(null,n),n=>C(n,void 0))}async function fstatAsync(n,a){return a?.bigint,fstatSync(n,a)}function ftruncateSync(n,a=0){getFH(n,`ftruncate`)._truncateSync(a)}function ftruncate(n,a,S){let C=typeof a==`function`?a:S;ftruncateAsync(n,typeof a==`function`?0:a).then(()=>C(null),C)}async function ftruncateAsync(n,a=0){ftruncateSync(n,a)}function fdatasyncSync(n){getFH(n,`fdatasync`)._flushSync()}function fdatasync(n,a){Promise.resolve().then(()=>fdatasyncSync(n)).then(()=>a(null),a)}async function fdatasyncAsync(n){fdatasyncSync(n)}function fsyncSync(n){getFH(n,`fsync`)._flushSync()}function fsync(n,a){Promise.resolve().then(()=>fsyncSync(n)).then(()=>a(null),a)}async function fsyncAsync(n){fsyncSync(n)}function fchmodSync(n,a){chmodSync(getFH(n,`fchmod`)._fdStatTarget(),a)}function fchmod(n,a,S){Promise.resolve().then(()=>fchmodSync(n,a)).then(()=>S(null),S)}async function fchmodAsync(n,a){fchmodSync(n,a)}function fchownSync(n,a,S){chownSync(normalizePath(getFH(n,`fchown`).options.path),a,S)}function fchown(n,a,S,C){Promise.resolve().then(()=>fchownSync(n,a,S)).then(()=>C(null),C)}async function fchownAsync(n,a,S){fchownSync(n,a,S)}function futimesSync(n,a,S){utimesSync(normalizePath(getFH(n,`futimes`).options.path),a,S)}function futimes(n,a,S,C){Promise.resolve().then(()=>futimesSync(n,a,S)).then(()=>C(null),C)}async function futimesAsync(n,a,S){futimesSync(n,a,S)}function closeSync(n){isStdFd(n)||getFH(n,`close`)._closeSync()}function readSync(n,a,S,C,N){let F=0;return typeof S==`object`&&S?(F=S.offset??0,C=S.length??a.byteLength-F,N=S.position??null):(F=S??0,C??=a.byteLength-F),isStdFd(n)?readStdFdSync(n,a,F,C):getFH(n,`read`)._readSync(a,F,C,N??null)}function writeSync(n,a,S,C,N){let F;if(typeof a==`string`)F=new TextEncoder().encode(a),typeof S==`number`&&(N=S);else{let n=typeof S==`number`?S:0,N=typeof C==`number`?C:a.byteLength-n;F=new Uint8Array(a.buffer,a.byteOffset+n,N)}return isStdFd(n)?writeStdFdSync(n,F):getFH(n,`write`)._writeSync(F,N??null)}function readvSync(n,a,S){let C=0;for(let N of a){let a=readSync(n,N,0,N.byteLength,S==null?null:S+C);if(C+=a,a<N.byteLength)break}return C}function readv(n,a,S,C){let N=typeof S==`function`?S:C;readvAsync(n,a,typeof S==`function`?null:S).then(n=>N(null,n.bytesRead,n.buffers),n=>N(n,0,a))}async function readvAsync(n,a,S){return{bytesRead:readvSync(n,a,S),buffers:a}}function writevSync(n,a,S){let C=0;for(let N of a){let a=writeSync(n,N,0,N.byteLength,S==null?null:S+C);C+=a}return C}function writev(n,a,S,C){let N=typeof S==`function`?S:C;writevAsync(n,a,typeof S==`function`?null:S).then(n=>N(null,n.bytesWritten,n.buffers),n=>N(n,0,a))}async function writevAsync(n,a,S){return{bytesWritten:writevSync(n,a,S),buffers:a}}function exists(n,a){try{statSync(normalizePath(n)),a(!0)}catch{a(!1)}}async function openAsBlob(n,a){let S=readFileSync(normalizePath(n));return new Blob([S],{type:a?.type??``})}var xl=__esmMin(()=>{Dc(),jc(),Pc(),bl(),Qc()});function zeroedStat(){return{dev:0,ino:0,mode:0,nlink:0,uid:0,gid:0,rdev:0,size:0,blksize:0,blocks:0,atimeMs:0,mtimeMs:0,ctimeMs:0,birthtimeMs:0,atime:new Date(0),mtime:new Date(0),ctime:new Date(0),birthtime:new Date(0),isFile:()=>!1,isDirectory:()=>!1,isBlockDevice:()=>!1,isCharacterDevice:()=>!1,isSymbolicLink:()=>!1,isFIFO:()=>!1,isSocket:()=>!1}}function watchFile(n,a,S){typeof a==`function`&&(S=a,a={});let C=a.interval??5007,N=n.toString(),F=Sl.get(N);return F||(F=new StatWatcher(N,C),F.start(),Sl.set(N,F)),S&&F.addChangeListener(S),F}function unwatchFile(n,a){let S=n.toString(),C=Sl.get(S);C&&(a?C.removeChangeListener(a):C.removeAllChangeListeners(),C.changeListenerCount===0&&(C.stop(),Sl.delete(S)))}var StatWatcher,Sl,Cl=__esmMin(()=>{Qc(),Lt(),StatWatcher=class extends Et{_path;_interval;_timerId=null;_prev;_changeCount=0;constructor(n,a){super(),this._path=n,this._interval=a,this._prev=zeroedStat()}start(){try{this._prev=statSync(this._path)}catch{}this._timerId=setInterval(()=>{let n;try{n=statSync(this._path)}catch{n=zeroedStat()}let a=this._prev;(n.mtimeMs!==a.mtimeMs||n.size!==a.size||n.ino!==a.ino)&&(this._prev=n,this.emit(`change`,n,a))},this._interval)}stop(){this._timerId!==null&&(clearInterval(this._timerId),this._timerId=null),this.emit(`stop`)}addChangeListener(n){this._changeCount++,this.on(`change`,n)}removeChangeListener(n){this._changeCount--,this.removeListener(`change`,n)}removeAllChangeListeners(){this._changeCount=0,this.removeAllListeners(`change`)}get changeListenerCount(){return this._changeCount}},Sl=new Map}),wl=__exportAll$4({BigIntStats:()=>BigIntStats,Dir:()=>Dir,Dirent:()=>Dirent,FSWatcher:()=>FSWatcher,ReadStream:()=>ReadStream$1,StatWatcher:()=>StatWatcher,Stats:()=>Stats,WriteStream:()=>WriteStream$1,access:()=>access,accessSync:()=>accessSync,appendFile:()=>appendFile,appendFileSync:()=>appendFileSync,chmod:()=>chmod,chmodSync:()=>chmodSync,chown:()=>chown,chownSync:()=>chownSync,close:()=>close$1,closeSync:()=>closeSync,constants:()=>Tl,copyFile:()=>copyFile,copyFileSync:()=>copyFileSync,cp:()=>cp,cpSync:()=>cpSync,createReadStream:()=>createReadStream,createWriteStream:()=>createWriteStream,default:()=>El,exists:()=>exists,existsSync:()=>existsSync,fchmod:()=>fchmod,fchmodSync:()=>fchmodSync,fchown:()=>fchown,fchownSync:()=>fchownSync,fdatasync:()=>fdatasync,fdatasyncSync:()=>fdatasyncSync,fstat:()=>fstat,fstatSync:()=>fstatSync,fsync:()=>fsync,fsyncSync:()=>fsyncSync,ftruncate:()=>ftruncate,ftruncateSync:()=>ftruncateSync,futimes:()=>futimes,futimesSync:()=>futimesSync,glob:()=>glob,globSync:()=>globSync,lchmod:()=>void 0,lchmodSync:()=>void 0,lchown:()=>lchown,lchownSync:()=>lchownSync,link:()=>link,linkSync:()=>linkSync,lstat:()=>lstat,lstatSync:()=>lstatSync,lutimes:()=>lutimes,lutimesSync:()=>lutimesSync,mkdir:()=>mkdir,mkdirSync:()=>mkdirSync,mkdtempSync:()=>mkdtempSync,open:()=>open$1,openAsBlob:()=>openAsBlob,openSync:()=>openSync,opendir:()=>opendir,opendirSync:()=>opendirSync,promises:()=>sl,read:()=>read$1,readFile:()=>readFile,readFileSync:()=>readFileSync,readSync:()=>readSync,readdir:()=>readdir,readdirSync:()=>readdirSync,readlink:()=>readlink,readlinkSync:()=>readlinkSync,readv:()=>readv,readvSync:()=>readvSync,realpath:()=>realpath,realpathSync:()=>realpathSync,rename:()=>rename,renameSync:()=>renameSync,rm:()=>rm,rmSync:()=>rmSync,rmdir:()=>rmdir,rmdirSync:()=>rmdirSync,stat:()=>stat,statSync:()=>statSync,statfs:()=>statfs,statfsSync:()=>statfsSync,symlink:()=>symlink,symlinkSync:()=>symlinkSync,truncate:()=>truncate,truncateSync:()=>truncateSync,unlink:()=>unlink,unlinkSync:()=>unlinkSync,unwatchFile:()=>unwatchFile,utimes:()=>utimes,utimesSync:()=>utimesSync,watch:()=>watch,watchFile:()=>watchFile,write:()=>write,writeFile:()=>writeFile,writeFileSync:()=>writeFileSync,writeSync:()=>writeSync,writev:()=>writev,writevSync:()=>writevSync});function openFlagDescriptors(){let n={};for(let a of Object.keys(openFlagValues()))n[a]={enumerable:!0,configurable:!0,get:()=>openFlagValues()[a]};return n}var Tl,El,Dl=__esmMin(()=>{kc(),jc(),xl(),Ic(),Bc(),pl(),Hc(),Zc(),Qc(),$c(),tl(),nl(),al(),ll(),ul(),Cl(),Tl=Object.defineProperties({F_OK:0,R_OK:4,W_OK:2,X_OK:1,COPYFILE_EXCL:1,COPYFILE_FICLONE:2,COPYFILE_FICLONE_FORCE:4,S_IFMT:61440,S_IFREG:32768,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960,S_IFSOCK:49152,S_IRWXU:448,S_IRUSR:256,S_IWUSR:128,S_IXUSR:64,S_IRWXG:56,S_IRGRP:32,S_IWGRP:16,S_IXGRP:8,S_IRWXO:7,S_IROTH:4,S_IWOTH:2,S_IXOTH:1},openFlagDescriptors()),El={FSWatcher,StatWatcher,Stats,BigIntStats,Dirent,Dir,constants:Tl,existsSync,readdirSync,readFileSync,writeFileSync,mkdirSync,rmdirSync,unlinkSync,mkdtempSync,rmSync,statSync,openSync,realpathSync,symlinkSync,lstatSync,renameSync,copyFileSync,accessSync,appendFileSync,readlinkSync,linkSync,truncateSync,chmodSync,chownSync,cpSync,opendirSync,globSync,glob,watch,watchFile,unwatchFile,statfsSync,statfs,utimesSync,utimes,lutimesSync,lutimes,lchownSync,lchown,lchmodSync:void 0,lchmod:void 0,fstatSync,fstat,ftruncateSync,ftruncate,fdatasyncSync,fdatasync,fsyncSync,fsync,fchmodSync,fchmod,fchownSync,fchown,futimesSync,futimes,closeSync,readSync,writeSync,readvSync,readv,writevSync,writev,exists,openAsBlob,createReadStream,ReadStream:ReadStream$1,createWriteStream,WriteStream:WriteStream$1,promises:sl,open:open$1,close:close$1,read:read$1,write,rm,realpath,readdir,symlink,lstat,stat,rename,copyFile,cp,access,appendFile,readlink,truncate,chmod,chown,mkdir,rmdir,readFile,writeFile,unlink,link,opendir}}),Ol,kl,Al,jl,Ml,Nl,Pl=__esmMin(()=>{
40
40
  /**
41
41
  * @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
42
42
  *
@@ -851,7 +851,7 @@ if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
851
851
  # are installed in the same directory
852
852
  $exe=".exe"
853
853
  }
854
- `});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(xN,`^$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(xN,`^$1`),a&&(S=S.replace(xN,`^$1`)),S}function buildCmdExeInvocation(n,a,S=`cmd.exe`){let C=bN.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`)??vN).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 yN.test(C)?{cmd:C,args:[...a]}:buildCmdExeInvocation(C,a,lookupEnv(S.env,`COMSPEC`)??`cmd.exe`)}var vN,yN,bN,xN,SN=__esmMin(()=>{vN=`.COM;.EXE;.BAT;.CMD`,yN=/\.(?:com|exe)$/i,bN=/node_modules[\\/]\.bin[\\/][^\\/]+\.cmd$/i,xN=/([()\][%!^"`<>&|;, *?])/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:vs})??{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),N=S.shell?{cmd:n,args:[...a],windowsVerbatimArguments:!1}:forWin32(n,a,C);if(mustBlock(S)){let n=spawnSync(N.cmd,N.args,{stdio:[`inherit`,`pipe`,`pipe`],cwd:S.cwd,env:C,shell:S.shell,maxBuffer:S.maxBuffer??CN,windowsVerbatimArguments:N.windowsVerbatimArguments});if(n.error)return Promise.reject(mapSpawnError(n.error,S));let a=S.stdio===`inherit-stderr`?process.stderr:process.stdout;return n.stdout&&n.stdout.length>0&&a.write(n.stdout),n.stderr&&n.stderr.length>0&&process.stderr.write(n.stderr),Promise.resolve({code:n.status,signal:n.signal??null})}return new Promise((n,a)=>{let F=N,I={cwd:S.cwd,stdio:S.stdio===`pipe`?[`ignore`,`pipe`,`pipe`]:S.stdio===`inherit-stderr`?[`inherit`,2,2]:`inherit`};S.shell&&(I.shell=!0),C&&(I.env=C),F.windowsVerbatimArguments&&(I.windowsVerbatimArguments=!0);let H=spawn(F.cmd,F.args,I);S.onSpawn?.(H),H.on(`close`,(a,S)=>{n({code:a,signal:S})}),H.on(`error`,n=>{a(mapSpawnError(n,S))})})}function describeExit(n){return n.signal===null?`code ${n.code}`:`signal ${n.signal}`}var CN,wN=__esmMin(()=>{lh(),Dl(),ks(),Rm(),SN(),CN=64*1024*1024});function makeProgressReporter(n={}){if(n.enabled===!1)return EN;let a=n.stream??process.stderr,S=!!a.isTTY;return n.enabled??!0?S?makeTtyReporter(a):makePlainReporter(a):EN}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=TN[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: ${TN[C]} ${N} package(s)\n`)},update(C){let N=Date.now();if(N-a<DN||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: ${TN[C.phase]} ${C.current}/${C.total} (${F}%)\n`)},endPhase(a){n.write(`gjsify install: ${TN[a]} done\n`)}}}function formatBar(n,a,S,C,N){let F=TN[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 TN,EN,DN,ON=__esmMin(()=>{TN={resolve:`resolving`,download:`downloading`,extract:`extracting`,link:`linking bins`},EN={update(){},beginPhase(){},endPhase(){}},DN=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 jN?a:new jN(a),C=n instanceof SemVer?n:parse(String(n));return C?S.test(C):!1}function maxSatisfying(n,a){let S=a instanceof jN?a:new jN(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 kN,AN,SemVer,jN,MN=__esmMin(()=>{kN=/^(0|[1-9]\d*)$/,AN=/^(\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=AN.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=>kN.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}},jN=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.36.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 NN=__esmMin(()=>{}),PackageNotFoundError,IntegrityError,RegistryTimeoutError,PN=__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):FN}function parseNpmrc(n){let a={registry:FN,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 FN,IN=__esmMin(()=>{FN=`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 LN=__esmMin(()=>{PN(),__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 RN=__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 zN=__esmMin(()=>{NN(),PN(),IN(),LN()});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 BN=__esmMin(()=>{NN(),PN(),LN(),RN()});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 VN=__esmMin(()=>{NN(),IN()}),HN=__esmMin(()=>{NN(),IN(),zN(),BN(),VN()});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,UN=__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 WN=__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=hs(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(xs(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(xs(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=ys(a,n);return S!==``&&!S.startsWith(`..`)&&!_s(S)}var GN=__esmMin(()=>{UN(),Dl(),ks(),__name$1(isInside$1,`isInside`)}),KN=__exportAll$4({BLOCK_SIZE:()=>512,TarParseError:()=>TarParseError,createTarball:()=>createTarball,extractTarball:()=>extractTarball,gunzip:()=>gunzip,gzip:()=>gzip,parseTar:()=>parseTar}),qN=__esmMin(()=>{UN(),WN(),GN()});function gjsifyCacheRoot(n,a){let S=process.env.XDG_CACHE_HOME;return vs(S&&S.length>0?S:vs(homedir(),`.cache`),`gjsify`,n,a)}function atomicWrite(n,a){try{atomicWriteStrict(n,a)}catch{}}function atomicWriteStrict(n,a){mkdirSync(vs(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 JN=__esmMin(()=>{Dl(),Cm(),ks()});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 ZN}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=vs(n,XN),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>QN?{stale:!0,reason:`no owner recorded within the acquire grace period`}:{stale:!1}}function stealStaleLock(n){let a=`${n}.stale-${process.pid}-${++nP}`;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=tP.get(n);if(S&&(S.count--,!(S.count>0))){tP.delete(n);try{let a=JSON.parse(readFileSync(vs(n,XN),`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=hs(n)}let C=vs(S,`node_modules`,YN),N=tP.get(C);if(N)return N.count++,makeHandle(C);mkdirSync(xs(C),{recursive:!0});let F=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,I=$N,H=!1;for(;;){if(a.signal?.aborted)throw abortErr(a.signal);try{return mkdirSync(C),writeFileSync(vs(C,XN),JSON.stringify({pid:process.pid,nonce:F,startedAt:Date.now()})),tP.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)&&he.warn(`gjsify install: removed stale install lock (${n.reason}) — ${C}`);continue}if(!H){H=!0;let a=n.ownerPid===void 0?``:` (pid ${n.ownerPid})`;he.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),eP)}}var YN,XN,ZN,QN,$N,eP,tP,nP,rP=__esmMin(()=>{ge(),Dl(),ks(),YN=`.gjsify-install-lock`,XN=`owner.json`,ZN=35*6e4,QN=15e3,$N=150,eP=1e3,tP=new Map,nP=0});function cacheRoot$1(){return gjsifyCacheRoot(`tarballs`,iP)}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=qe.from(C,`base64`).toString(`hex`);return N.length<4?null:{algorithm:S,hex:N}}function pathFor$2(n){let a=parseSri$1(n);if(!a)return null;let S=a.hex.slice(0,2);return vs(cacheRoot$1(),a.algorithm,S,`${a.hex}.tgz`)}function getCachedTarball(n){let a=pathFor$2(n);return a?readCacheFile(a):null}function putCachedTarball(n,a){let S=pathFor$2(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:vs(a.endsWith(`_cacache`)?a:vs(a,`_cacache`),`content-v2`)}let a=process.env.npm_config_cache;return vs(a&&a.length>0?a:vs(homedir(),`.npm`),`_cacache`,`content-v2`)}function npmCachePathFor(n){let a=npmCacacheContentDir();if(!a)return null;let S=parseSri$1(n);return S?vs(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 iP,aP=__esmMin(()=>{nt(),Dl(),Cm(),ks(),JN(),iP=`v1`,__name$1(cacheRoot$1,`cacheRoot`),__name$1(parseSri$1,`parseSri`),__name$1(pathFor$2,`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`,oP)}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$1(n,a,S){if(!isEnabled())return null;let C=packumentCacheKey(n,a,S);return vs(cacheRoot(),shardFor(C),`${C}.json`)}function getCachedPackument(n,a,S=`corgi`){let C=pathFor$1(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$1(n,a,N);F&&atomicWrite(F,JSON.stringify({etag:S,packument:C}))}var oP,sP=__esmMin(()=>{ks(),JN(),oP=`v3`,__name$1(pathFor$1,`pathFor`)});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 cP=__esmMin(()=>{Rm()});function checkList(n,a){let S=typeof a==`string`?[a]:a;if(S.length===1&&S[0]===`any`)return!0;let C=0,N=!1;for(let a of S){let S=a.charAt(0)===`!`,F=S?a.slice(1):a;if(S){if(C++,n===F)return!1}else N||=n===F}return N||C===S.length}function checkPlatform(n,a){let S=n.os?checkList(a.os,n.os):!0,C=n.cpu?checkList(a.cpu,n.cpu):!0,N=n.libc?checkList(a.libc,n.libc):!0;return n.libc&&!a.libc&&(N=!1),{ok:S&&C&&N,current:{os:a.os,cpu:a.cpu,libc:a.libc},required:{os:n.os,cpu:n.cpu,libc:n.libc}}}function declaresPlatform(n){return!!(n.os||n.cpu||n.libc)}function badPlatformError(n,a){let S=Error(`Unsupported platform for ${n}: wanted ${JSON.stringify(a.required)} (current: ${JSON.stringify(a.current)})`);return S.code=`EBADPLATFORM`,S.pkgid=n,S.current=a.current,S.required=a.required,S}function isMuslSharedObject(n){return n.includes(`libc.musl-`)||n.includes(`ld-musl-`)}function libcFromLddFile(n){let a=n.readTextFile(lP);if(a!==null)return a.includes(`musl`)?`musl`:a.includes(`GNU C Library`)?`glibc`:null}function libcFromReportData(n){return n.glibcVersionRuntime?`glibc`:Array.isArray(n.sharedObjects)&&n.sharedObjects.some(n=>isMuslSharedObject(String(n)))?`musl`:null}function libcFromLoaderScan(n,a=uP){let S=!1;for(let C of a){let a=n.listDir(C);if(a)for(let n of a){if(n.startsWith(`ld-linux`))return`glibc`;n.startsWith(`ld-musl-`)&&(S=!0)}}return S?`musl`:null}function detectLibc(n,a){if(n!==`linux`)return;let S=libcFromLddFile(a);if(S!==void 0)return S??void 0;let C=a.diagnosticReport();return C===null?libcFromLoaderScan(a)??void 0:libcFromReportData(C)??void 0}function defaultLibcProbeHost(){return{readTextFile(n){try{return readFileSync(n,`utf-8`)}catch{return null}},listDir(n){try{return readdirSync(n)}catch{return null}},diagnosticReport(){let n=process.report;if(!n||typeof n.getReport!=`function`)return null;let a=n.excludeNetwork;n.excludeNetwork=!0;try{let a=n.getReport();return{glibcVersionRuntime:a.header?.glibcVersionRuntime,sharedObjects:a.sharedObjects}}finally{n.excludeNetwork=a}}}}function hostLibc(n,a=defaultLibcProbeHost()){return fP||=(dP=detectLibc(n,a),!0),dP}function readPlatformOverrides(n){let pick=a=>{let S=n[a];if(typeof S!=`string`)return;let C=S.trim();return C===``?void 0:C},a={},S=pick(`npm_config_os`),C=pick(`npm_config_cpu`),N=pick(`npm_config_libc`);return S!==void 0&&(a.os=S),C!==void 0&&(a.cpu=C),N!==void 0&&(a.libc=N),a}function readPlatformForce(n){let a=n.npm_config_force;if(typeof a!=`string`)return!1;let S=a.trim().toLowerCase();return S===`true`||S===`1`}function resolveHostPlatform(n={}){let a=readPlatformOverrides(n.env??process.env),S=a.os??n.platform??process.platform;return{os:S,cpu:a.cpu??n.arch??process.arch,libc:a.libc??(S===`linux`?hostLibc(S,n.probe??defaultLibcProbeHost()):void 0)}}function describePlatformTarget(n){return`${n.os}-${n.cpu}${n.libc?`-${n.libc}`:``}`}var lP,uP,dP,fP,pP=__esmMin(()=>{Dl(),lP=`/usr/bin/ldd`,uP=[`/lib`,`/lib64`,`/usr/lib`],fP=!1}),mP=__exportAll$4({applyPlatformFilter:()=>applyPlatformFilter,computeOptionalFlags:()=>computeOptionalFlags,installPackagesNative:()=>installPackagesNative,parseSpec:()=>parseSpec$1,pickVersion:()=>pickVersion,requiredDepEntries:()=>requiredDepEntries,warnMissingNativeBuilds:()=>warnMissingNativeBuilds,writeBinEntry:()=>writeBinEntry});async function installPackagesNative(n){if(assertNativeBackendNodeVersion(),n.specs.length===0)throw Error(`installPackagesNative: empty specs list`);mkdirSync(n.prefix,{recursive:!0});let a=await loadNpmrc$1(n),S=makeLogger(n.verbose??!1),C=await acquireInstallLock(n.prefix,{signal:n.signal});try{return await installPackagesNativeLocked(n,a,S)}finally{C.release()}}async function installPackagesNativeLocked(n,a,S){let C=n.progress,N=vs(n.prefix,gP),F=readLockfile(N),I=resolveHostPlatform(),H=readPlatformForce(process.env);S(`install: platform target %s%s`,describePlatformTarget(I),H?` (--force: checks bypassed)`:``);let W,K=!1,q=new Set;if(n.frozen){if(!F)throw Error(`install: --immutable requires ${gP} at ${n.prefix} — none found. Run \`gjsify install\` (without --immutable) to generate one and commit it.`);let a=describeLockfileDrift(F,n.specs);if(a)throw Error(`install: --immutable but ${N} is stale.\n${a}\nRe-run \`gjsify install\` (without --immutable) to refresh the lockfile.`);S(`install: --immutable, using lockfile (%d package(s))`,Object.keys(F.packages).length),W=lockfileToNodes(F)}else if(!n.refreshLockfile&&F&&F.lockfileVersion===_P&&lockfileMatchesRequest(F,n.specs))S(`install: using lockfile (%d package(s))`,Object.keys(F.packages).length),W=lockfileToNodes(F);else{let N=!n.refreshLockfile&&F?buildPreferredVersions(F):void 0;S(`install: resolving %d top-level spec(s) → %s%s`,n.specs.length,n.prefix,N?` (preserving ${N.size} locked name(s))`:``);let I=await resolveDeps(n.specs,a,S,n.overrides,n.skipDeps,n.signal,C,N,n.workspaceNames,n.specOrigins,n.optionalSpecs);W=I.nodes,q=I.skippedEdges,K=!0}if(computeOptionalFlags(W,requiredTopLevelNames(n.specs,n.optionalSpecs),S),assertRequiredEdgesResolved(W,q),K&&n.lockfile&&(writeLockfile(N,n.specs,W),S(`install: wrote %s (%d entries)`,gP,W.length)),n.workspaceNames&&n.workspaceNames.size>0){let a=W.length;W=W.filter(a=>!n.workspaceNames.has(a.name));let C=a-W.length;C>0&&S(`install: %d workspace-provided package(s) symlinked, not fetched`,C)}let Y=applyPlatformFilter(W,I,H,S);return S(`install: downloading %d tarball(s)`,Y.length),await downloadAndExtractAll(Y,n.prefix,a,S,n.signal,C),await linkBins(Y,n.prefix,S),warnMissingNativeBuilds(Y,n.prefix,S),S(`install: done`),topLevelResolutions(n.specs,W)}function errMsg(n){return n instanceof Error?n.message:String(n)}function applyPlatformFilter(n,a,S,C){let N=[],F=0;for(let I of n){let n=I.platform;if(!n||!declaresPlatform(n)){N.push(I);continue}let H=checkPlatform(n,a);if(H.ok){N.push(I);continue}let W=`${I.name}@${I.version}`;if(!I.optional){if(S){C(`platform-forced: %s (required, incompatible, installed anyway via --force)`,W),N.push(I);continue}throw badPlatformError(W,H)}I.inert=!0,F++,C(`platform-skip: %s (%s) current=%s required=%s`,W,I.installPath,JSON.stringify(H.current),JSON.stringify(H.required))}return F>0&&C(`install: %d optional package(s) inert — not installable on %s`,F,describePlatformTarget(a)),N}function warnMissingNativeBuilds(n,a,S){let C=process.platform,N=process.arch,F=[`preinstall`,`install`,`postinstall`];for(let I of n){let n=vs(a,I.installPath),H;try{H=JSON.parse(readFileSync(vs(n,`package.json`),`utf8`))?.scripts}catch{continue}if(!H||typeof H!=`object`)continue;let W=F.find(n=>typeof H[n]==`string`);if(W===void 0)continue;let K=!1;try{let a=vs(n,`prebuilds`);for(let n of readdirSync(a))if(n.startsWith(`${C}-`)&&readdirSync(vs(a,n)).length>0){K=!0;break}}catch{}if(!K)try{K=readdirSync(vs(n,`build`,`Release`)).some(n=>n.endsWith(`.node`)||n.endsWith(`.so`))}catch{}K||S("install: WARNING — %s declares a native `%s` build script but ships no %s-%s prebuild, and gjsify install does not run build scripts (node-free). It will not load until built: run `node-gyp rebuild` in %s, or use a version that ships a %s-%s prebuild.",I.name,W,C,N,I.installPath,C,N)}}function topLevelResolutions(n,a){let S=new Map;for(let n of a)n.installPath===`node_modules/${n.name}`&&S.set(n.name,n);let C=[];for(let a of n){let n=parseSpecName(a),N=S.get(n);N&&C.push({name:N.name,version:N.version})}return C}function parseSpecName(n){if(n.startsWith(`@`)){let a=n.indexOf(`/`);if(a===-1)return n;let S=n.indexOf(`@`,a+1);return S===-1?n:n.slice(0,S)}let a=n.indexOf(`@`);return a===-1?n:n.slice(0,a)}async function resolveDeps(n,a,S,C,N,F,I,H,W,K,q){I?.beginPhase(`resolve`,n.length);let applyOverride=(n,a)=>{if(!C)return a;let N=C[n];return typeof N!=`string`||N.length===0||N===a?a:(S(`install: override %s %s → %s`,n,a,N),N)},Y=new Map,fetchPkg=n=>{let C=Y.get(n);if(C)return C;let N=fetchPackumentWithDiskCache(n,a,S,F,`full`);return Y.set(n,N),N},X=new Map,te=new Map,ne=new Set,re=new Map,ie=n.map(parseSpec$1).map(n=>{let a=applyOverride(n.name,n.range),S=re.get(n.name);S||(S=new Map,re.set(n.name,S));let C=S.get(a);C||(C=new Set,S.set(a,C));for(let a of K?.get(`${n.name}@${n.range}`)??[])C.add(a);return{from:null,name:n.name,range:a,required:!q?.has(n.name)}});for(;ie.length>0;){let n=ie.splice(0,ie.length),a=[],C=new Set;for(let S of n)Y.has(S.name)||C.has(S.name)||(C.add(S.name),a.push(S.name));await prefetchPackuments(a,fetchPkg,F);for(let a=0;a<n.length;a++){let C=n[a];if(W?.has(C.name))continue;let F=findVisible(C.from,C.name,X);if(F&&satisfiesRange(F.version,C.range))continue;let K=null;try{let F=await fetchPkg(C.name),W=preferredVersionFor(H?.get(C.name),C.range);if(K=pickVersion(F,C.range,W),!K)throw Error(`No version of ${C.name} satisfies ${C.range}`);let q=F.versions[K];if(!q)throw Error(`Packument for ${C.name} promised ${K} but no entry exists`);let Y=decidePlacement(C.from,C.name,K,te),ne={name:C.name,version:K,tarballUrl:q.dist.tarball,integrity:q.dist.integrity,installPath:Y,dependencies:q.dependencies??{},optionalDependencies:q.optionalDependencies??{},bin:q.bin,platform:platformDeclarationOf(q),optional:!C.required};if(X.set(Y,ne),Y===`node_modules/${C.name}`&&te.set(C.name,ne),S(`resolve: %s@%s ← %s (at %s)`,C.name,K,C.range,Y),I?.update({phase:`resolve`,current:X.size,total:X.size+(n.length-a-1)+ie.length,name:`${C.name}@${K}`}),!N){for(let[n,a]of requiredDepEntries(ne))ie.push({from:Y,name:n,range:applyOverride(n,a),required:!ne.optional});for(let[n,a]of Object.entries(ne.optionalDependencies))ie.push({from:Y,name:n,range:applyOverride(n,a),required:!1})}}catch(n){if(!C.required){ne.add(edgeKey(C.from,C.name)),S(`resolve: optional dep %s@%s skipped (%s)`,C.name,C.range,errMsg(n));continue}throw n}}}return I?.endPhase(`resolve`),emitTopLevelConflictWarnings(re,te),{nodes:Array.from(X.values()),skippedEdges:ne}}function platformDeclarationOf(n){let a={os:n.os,cpu:n.cpu,libc:n.libc};return declaresPlatform(a)?a:void 0}function edgeKey(n,a){return`${n??``}\n${a}`}function parseEdgeKey(n){let a=n.indexOf(`
854
+ `});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(xN,`^$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(xN,`^$1`),a&&(S=S.replace(xN,`^$1`)),S}function buildCmdExeInvocation(n,a,S=`cmd.exe`){let C=bN.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`)??vN).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 yN.test(C)?{cmd:C,args:[...a]}:buildCmdExeInvocation(C,a,lookupEnv(S.env,`COMSPEC`)??`cmd.exe`)}var vN,yN,bN,xN,SN=__esmMin(()=>{vN=`.COM;.EXE;.BAT;.CMD`,yN=/\.(?:com|exe)$/i,bN=/node_modules[\\/]\.bin[\\/][^\\/]+\.cmd$/i,xN=/([()\][%!^"`<>&|;, *?])/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:vs})??{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),N=S.shell?{cmd:n,args:[...a],windowsVerbatimArguments:!1}:forWin32(n,a,C);if(mustBlock(S)){let n=spawnSync(N.cmd,N.args,{stdio:[`inherit`,`pipe`,`pipe`],cwd:S.cwd,env:C,shell:S.shell,maxBuffer:S.maxBuffer??CN,windowsVerbatimArguments:N.windowsVerbatimArguments});if(n.error)return Promise.reject(mapSpawnError(n.error,S));let a=S.stdio===`inherit-stderr`?process.stderr:process.stdout;return n.stdout&&n.stdout.length>0&&a.write(n.stdout),n.stderr&&n.stderr.length>0&&process.stderr.write(n.stderr),Promise.resolve({code:n.status,signal:n.signal??null})}return new Promise((n,a)=>{let F=N,I={cwd:S.cwd,stdio:S.stdio===`pipe`?[`ignore`,`pipe`,`pipe`]:S.stdio===`inherit-stderr`?[`inherit`,2,2]:`inherit`};S.shell&&(I.shell=!0),C&&(I.env=C),F.windowsVerbatimArguments&&(I.windowsVerbatimArguments=!0);let H=spawn(F.cmd,F.args,I);S.onSpawn?.(H),H.on(`close`,(a,S)=>{n({code:a,signal:S})}),H.on(`error`,n=>{a(mapSpawnError(n,S))})})}function describeExit(n){return n.signal===null?`code ${n.code}`:`signal ${n.signal}`}var CN,wN=__esmMin(()=>{lh(),Dl(),ks(),Rm(),SN(),CN=64*1024*1024});function makeProgressReporter(n={}){if(n.enabled===!1)return EN;let a=n.stream??process.stderr,S=!!a.isTTY;return n.enabled??!0?S?makeTtyReporter(a):makePlainReporter(a):EN}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=TN[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: ${TN[C]} ${N} package(s)\n`)},update(C){let N=Date.now();if(N-a<DN||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: ${TN[C.phase]} ${C.current}/${C.total} (${F}%)\n`)},endPhase(a){n.write(`gjsify install: ${TN[a]} done\n`)}}}function formatBar(n,a,S,C,N){let F=TN[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 TN,EN,DN,ON=__esmMin(()=>{TN={resolve:`resolving`,download:`downloading`,extract:`extracting`,link:`linking bins`},EN={update(){},beginPhase(){},endPhase(){}},DN=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 jN?a:new jN(a),C=n instanceof SemVer?n:parse(String(n));return C?S.test(C):!1}function maxSatisfying(n,a){let S=a instanceof jN?a:new jN(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 kN,AN,SemVer,jN,MN=__esmMin(()=>{kN=/^(0|[1-9]\d*)$/,AN=/^(\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=AN.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=>kN.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}},jN=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.37.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 NN=__esmMin(()=>{}),PackageNotFoundError,IntegrityError,RegistryTimeoutError,PN=__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):FN}function parseNpmrc(n){let a={registry:FN,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 FN,IN=__esmMin(()=>{FN=`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 LN=__esmMin(()=>{PN(),__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 RN=__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 zN=__esmMin(()=>{NN(),PN(),IN(),LN()});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 BN=__esmMin(()=>{NN(),PN(),LN(),RN()});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 VN=__esmMin(()=>{NN(),IN()}),HN=__esmMin(()=>{NN(),IN(),zN(),BN(),VN()});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,UN=__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 WN=__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=hs(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(xs(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(xs(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=ys(a,n);return S!==``&&!S.startsWith(`..`)&&!_s(S)}var GN=__esmMin(()=>{UN(),Dl(),ks(),__name$1(isInside$1,`isInside`)}),KN=__exportAll$4({BLOCK_SIZE:()=>512,TarParseError:()=>TarParseError,createTarball:()=>createTarball,extractTarball:()=>extractTarball,gunzip:()=>gunzip,gzip:()=>gzip,parseTar:()=>parseTar}),qN=__esmMin(()=>{UN(),WN(),GN()});function gjsifyCacheRoot(n,a){let S=process.env.XDG_CACHE_HOME;return vs(S&&S.length>0?S:vs(homedir(),`.cache`),`gjsify`,n,a)}function atomicWrite(n,a){try{atomicWriteStrict(n,a)}catch{}}function atomicWriteStrict(n,a){mkdirSync(vs(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 JN=__esmMin(()=>{Dl(),Cm(),ks()});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 ZN}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=vs(n,XN),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>QN?{stale:!0,reason:`no owner recorded within the acquire grace period`}:{stale:!1}}function stealStaleLock(n){let a=`${n}.stale-${process.pid}-${++nP}`;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=tP.get(n);if(S&&(S.count--,!(S.count>0))){tP.delete(n);try{let a=JSON.parse(readFileSync(vs(n,XN),`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=hs(n)}let C=vs(S,`node_modules`,YN),N=tP.get(C);if(N)return N.count++,makeHandle(C);mkdirSync(xs(C),{recursive:!0});let F=`${process.pid}-${Date.now()}-${Math.random().toString(36).slice(2)}`,I=$N,H=!1;for(;;){if(a.signal?.aborted)throw abortErr(a.signal);try{return mkdirSync(C),writeFileSync(vs(C,XN),JSON.stringify({pid:process.pid,nonce:F,startedAt:Date.now()})),tP.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)&&he.warn(`gjsify install: removed stale install lock (${n.reason}) — ${C}`);continue}if(!H){H=!0;let a=n.ownerPid===void 0?``:` (pid ${n.ownerPid})`;he.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),eP)}}var YN,XN,ZN,QN,$N,eP,tP,nP,rP=__esmMin(()=>{ge(),Dl(),ks(),YN=`.gjsify-install-lock`,XN=`owner.json`,ZN=35*6e4,QN=15e3,$N=150,eP=1e3,tP=new Map,nP=0});function cacheRoot$1(){return gjsifyCacheRoot(`tarballs`,iP)}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=qe.from(C,`base64`).toString(`hex`);return N.length<4?null:{algorithm:S,hex:N}}function pathFor$2(n){let a=parseSri$1(n);if(!a)return null;let S=a.hex.slice(0,2);return vs(cacheRoot$1(),a.algorithm,S,`${a.hex}.tgz`)}function getCachedTarball(n){let a=pathFor$2(n);return a?readCacheFile(a):null}function putCachedTarball(n,a){let S=pathFor$2(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:vs(a.endsWith(`_cacache`)?a:vs(a,`_cacache`),`content-v2`)}let a=process.env.npm_config_cache;return vs(a&&a.length>0?a:vs(homedir(),`.npm`),`_cacache`,`content-v2`)}function npmCachePathFor(n){let a=npmCacacheContentDir();if(!a)return null;let S=parseSri$1(n);return S?vs(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 iP,aP=__esmMin(()=>{nt(),Dl(),Cm(),ks(),JN(),iP=`v1`,__name$1(cacheRoot$1,`cacheRoot`),__name$1(parseSri$1,`parseSri`),__name$1(pathFor$2,`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`,oP)}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$1(n,a,S){if(!isEnabled())return null;let C=packumentCacheKey(n,a,S);return vs(cacheRoot(),shardFor(C),`${C}.json`)}function getCachedPackument(n,a,S=`corgi`){let C=pathFor$1(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$1(n,a,N);F&&atomicWrite(F,JSON.stringify({etag:S,packument:C}))}var oP,sP=__esmMin(()=>{ks(),JN(),oP=`v3`,__name$1(pathFor$1,`pathFor`)});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 cP=__esmMin(()=>{Rm()});function checkList(n,a){let S=typeof a==`string`?[a]:a;if(S.length===1&&S[0]===`any`)return!0;let C=0,N=!1;for(let a of S){let S=a.charAt(0)===`!`,F=S?a.slice(1):a;if(S){if(C++,n===F)return!1}else N||=n===F}return N||C===S.length}function checkPlatform(n,a){let S=n.os?checkList(a.os,n.os):!0,C=n.cpu?checkList(a.cpu,n.cpu):!0,N=n.libc?checkList(a.libc,n.libc):!0;return n.libc&&!a.libc&&(N=!1),{ok:S&&C&&N,current:{os:a.os,cpu:a.cpu,libc:a.libc},required:{os:n.os,cpu:n.cpu,libc:n.libc}}}function declaresPlatform(n){return!!(n.os||n.cpu||n.libc)}function badPlatformError(n,a){let S=Error(`Unsupported platform for ${n}: wanted ${JSON.stringify(a.required)} (current: ${JSON.stringify(a.current)})`);return S.code=`EBADPLATFORM`,S.pkgid=n,S.current=a.current,S.required=a.required,S}function isMuslSharedObject(n){return n.includes(`libc.musl-`)||n.includes(`ld-musl-`)}function libcFromLddFile(n){let a=n.readTextFile(lP);if(a!==null)return a.includes(`musl`)?`musl`:a.includes(`GNU C Library`)?`glibc`:null}function libcFromReportData(n){return n.glibcVersionRuntime?`glibc`:Array.isArray(n.sharedObjects)&&n.sharedObjects.some(n=>isMuslSharedObject(String(n)))?`musl`:null}function libcFromLoaderScan(n,a=uP){let S=!1;for(let C of a){let a=n.listDir(C);if(a)for(let n of a){if(n.startsWith(`ld-linux`))return`glibc`;n.startsWith(`ld-musl-`)&&(S=!0)}}return S?`musl`:null}function detectLibc(n,a){if(n!==`linux`)return;let S=libcFromLddFile(a);if(S!==void 0)return S??void 0;let C=a.diagnosticReport();return C===null?libcFromLoaderScan(a)??void 0:libcFromReportData(C)??void 0}function defaultLibcProbeHost(){return{readTextFile(n){try{return readFileSync(n,`utf-8`)}catch{return null}},listDir(n){try{return readdirSync(n)}catch{return null}},diagnosticReport(){let n=process.report;if(!n||typeof n.getReport!=`function`)return null;let a=n.excludeNetwork;n.excludeNetwork=!0;try{let a=n.getReport();return{glibcVersionRuntime:a.header?.glibcVersionRuntime,sharedObjects:a.sharedObjects}}finally{n.excludeNetwork=a}}}}function hostLibc(n,a=defaultLibcProbeHost()){return fP||=(dP=detectLibc(n,a),!0),dP}function readPlatformOverrides(n){let pick=a=>{let S=n[a];if(typeof S!=`string`)return;let C=S.trim();return C===``?void 0:C},a={},S=pick(`npm_config_os`),C=pick(`npm_config_cpu`),N=pick(`npm_config_libc`);return S!==void 0&&(a.os=S),C!==void 0&&(a.cpu=C),N!==void 0&&(a.libc=N),a}function readPlatformForce(n){let a=n.npm_config_force;if(typeof a!=`string`)return!1;let S=a.trim().toLowerCase();return S===`true`||S===`1`}function resolveHostPlatform(n={}){let a=readPlatformOverrides(n.env??process.env),S=a.os??n.platform??process.platform;return{os:S,cpu:a.cpu??n.arch??process.arch,libc:a.libc??(S===`linux`?hostLibc(S,n.probe??defaultLibcProbeHost()):void 0)}}function describePlatformTarget(n){return`${n.os}-${n.cpu}${n.libc?`-${n.libc}`:``}`}var lP,uP,dP,fP,pP=__esmMin(()=>{Dl(),lP=`/usr/bin/ldd`,uP=[`/lib`,`/lib64`,`/usr/lib`],fP=!1}),mP=__exportAll$4({applyPlatformFilter:()=>applyPlatformFilter,computeOptionalFlags:()=>computeOptionalFlags,installPackagesNative:()=>installPackagesNative,parseSpec:()=>parseSpec$1,pickVersion:()=>pickVersion,requiredDepEntries:()=>requiredDepEntries,warnMissingNativeBuilds:()=>warnMissingNativeBuilds,writeBinEntry:()=>writeBinEntry});async function installPackagesNative(n){if(assertNativeBackendNodeVersion(),n.specs.length===0)throw Error(`installPackagesNative: empty specs list`);mkdirSync(n.prefix,{recursive:!0});let a=await loadNpmrc$1(n),S=makeLogger(n.verbose??!1),C=await acquireInstallLock(n.prefix,{signal:n.signal});try{return await installPackagesNativeLocked(n,a,S)}finally{C.release()}}async function installPackagesNativeLocked(n,a,S){let C=n.progress,N=vs(n.prefix,gP),F=readLockfile(N),I=resolveHostPlatform(),H=readPlatformForce(process.env);S(`install: platform target %s%s`,describePlatformTarget(I),H?` (--force: checks bypassed)`:``);let W,K=!1,q=new Set;if(n.frozen){if(!F)throw Error(`install: --immutable requires ${gP} at ${n.prefix} — none found. Run \`gjsify install\` (without --immutable) to generate one and commit it.`);let a=describeLockfileDrift(F,n.specs);if(a)throw Error(`install: --immutable but ${N} is stale.\n${a}\nRe-run \`gjsify install\` (without --immutable) to refresh the lockfile.`);S(`install: --immutable, using lockfile (%d package(s))`,Object.keys(F.packages).length),W=lockfileToNodes(F)}else if(!n.refreshLockfile&&F&&F.lockfileVersion===_P&&lockfileMatchesRequest(F,n.specs))S(`install: using lockfile (%d package(s))`,Object.keys(F.packages).length),W=lockfileToNodes(F);else{let N=!n.refreshLockfile&&F?buildPreferredVersions(F):void 0;S(`install: resolving %d top-level spec(s) → %s%s`,n.specs.length,n.prefix,N?` (preserving ${N.size} locked name(s))`:``);let I=await resolveDeps(n.specs,a,S,n.overrides,n.skipDeps,n.signal,C,N,n.workspaceNames,n.specOrigins,n.optionalSpecs);W=I.nodes,q=I.skippedEdges,K=!0}if(computeOptionalFlags(W,requiredTopLevelNames(n.specs,n.optionalSpecs),S),assertRequiredEdgesResolved(W,q),K&&n.lockfile&&(writeLockfile(N,n.specs,W),S(`install: wrote %s (%d entries)`,gP,W.length)),n.workspaceNames&&n.workspaceNames.size>0){let a=W.length;W=W.filter(a=>!n.workspaceNames.has(a.name));let C=a-W.length;C>0&&S(`install: %d workspace-provided package(s) symlinked, not fetched`,C)}let Y=applyPlatformFilter(W,I,H,S);return S(`install: downloading %d tarball(s)`,Y.length),await downloadAndExtractAll(Y,n.prefix,a,S,n.signal,C),await linkBins(Y,n.prefix,S),warnMissingNativeBuilds(Y,n.prefix,S),S(`install: done`),topLevelResolutions(n.specs,W)}function errMsg(n){return n instanceof Error?n.message:String(n)}function applyPlatformFilter(n,a,S,C){let N=[],F=0;for(let I of n){let n=I.platform;if(!n||!declaresPlatform(n)){N.push(I);continue}let H=checkPlatform(n,a);if(H.ok){N.push(I);continue}let W=`${I.name}@${I.version}`;if(!I.optional){if(S){C(`platform-forced: %s (required, incompatible, installed anyway via --force)`,W),N.push(I);continue}throw badPlatformError(W,H)}I.inert=!0,F++,C(`platform-skip: %s (%s) current=%s required=%s`,W,I.installPath,JSON.stringify(H.current),JSON.stringify(H.required))}return F>0&&C(`install: %d optional package(s) inert — not installable on %s`,F,describePlatformTarget(a)),N}function warnMissingNativeBuilds(n,a,S){let C=process.platform,N=process.arch,F=[`preinstall`,`install`,`postinstall`];for(let I of n){let n=vs(a,I.installPath),H;try{H=JSON.parse(readFileSync(vs(n,`package.json`),`utf8`))?.scripts}catch{continue}if(!H||typeof H!=`object`)continue;let W=F.find(n=>typeof H[n]==`string`);if(W===void 0)continue;let K=!1;try{let a=vs(n,`prebuilds`);for(let n of readdirSync(a))if(n.startsWith(`${C}-`)&&readdirSync(vs(a,n)).length>0){K=!0;break}}catch{}if(!K)try{K=readdirSync(vs(n,`build`,`Release`)).some(n=>n.endsWith(`.node`)||n.endsWith(`.so`))}catch{}K||S("install: WARNING — %s declares a native `%s` build script but ships no %s-%s prebuild, and gjsify install does not run build scripts (node-free). It will not load until built: run `node-gyp rebuild` in %s, or use a version that ships a %s-%s prebuild.",I.name,W,C,N,I.installPath,C,N)}}function topLevelResolutions(n,a){let S=new Map;for(let n of a)n.installPath===`node_modules/${n.name}`&&S.set(n.name,n);let C=[];for(let a of n){let n=parseSpecName(a),N=S.get(n);N&&C.push({name:N.name,version:N.version})}return C}function parseSpecName(n){if(n.startsWith(`@`)){let a=n.indexOf(`/`);if(a===-1)return n;let S=n.indexOf(`@`,a+1);return S===-1?n:n.slice(0,S)}let a=n.indexOf(`@`);return a===-1?n:n.slice(0,a)}async function resolveDeps(n,a,S,C,N,F,I,H,W,K,q){I?.beginPhase(`resolve`,n.length);let applyOverride=(n,a)=>{if(!C)return a;let N=C[n];return typeof N!=`string`||N.length===0||N===a?a:(S(`install: override %s %s → %s`,n,a,N),N)},Y=new Map,fetchPkg=n=>{let C=Y.get(n);if(C)return C;let N=fetchPackumentWithDiskCache(n,a,S,F,`full`);return Y.set(n,N),N},X=new Map,te=new Map,ne=new Set,re=new Map,ie=n.map(parseSpec$1).map(n=>{let a=applyOverride(n.name,n.range),S=re.get(n.name);S||(S=new Map,re.set(n.name,S));let C=S.get(a);C||(C=new Set,S.set(a,C));for(let a of K?.get(`${n.name}@${n.range}`)??[])C.add(a);return{from:null,name:n.name,range:a,required:!q?.has(n.name)}});for(;ie.length>0;){let n=ie.splice(0,ie.length),a=[],C=new Set;for(let S of n)Y.has(S.name)||C.has(S.name)||(C.add(S.name),a.push(S.name));await prefetchPackuments(a,fetchPkg,F);for(let a=0;a<n.length;a++){let C=n[a];if(W?.has(C.name))continue;let F=findVisible(C.from,C.name,X);if(F&&satisfiesRange(F.version,C.range))continue;let K=null;try{let F=await fetchPkg(C.name),W=preferredVersionFor(H?.get(C.name),C.range);if(K=pickVersion(F,C.range,W),!K)throw Error(`No version of ${C.name} satisfies ${C.range}`);let q=F.versions[K];if(!q)throw Error(`Packument for ${C.name} promised ${K} but no entry exists`);let Y=decidePlacement(C.from,C.name,K,te),ne={name:C.name,version:K,tarballUrl:q.dist.tarball,integrity:q.dist.integrity,installPath:Y,dependencies:q.dependencies??{},optionalDependencies:q.optionalDependencies??{},bin:q.bin,platform:platformDeclarationOf(q),optional:!C.required};if(X.set(Y,ne),Y===`node_modules/${C.name}`&&te.set(C.name,ne),S(`resolve: %s@%s ← %s (at %s)`,C.name,K,C.range,Y),I?.update({phase:`resolve`,current:X.size,total:X.size+(n.length-a-1)+ie.length,name:`${C.name}@${K}`}),!N){for(let[n,a]of requiredDepEntries(ne))ie.push({from:Y,name:n,range:applyOverride(n,a),required:!ne.optional});for(let[n,a]of Object.entries(ne.optionalDependencies))ie.push({from:Y,name:n,range:applyOverride(n,a),required:!1})}}catch(n){if(!C.required){ne.add(edgeKey(C.from,C.name)),S(`resolve: optional dep %s@%s skipped (%s)`,C.name,C.range,errMsg(n));continue}throw n}}}return I?.endPhase(`resolve`),emitTopLevelConflictWarnings(re,te),{nodes:Array.from(X.values()),skippedEdges:ne}}function platformDeclarationOf(n){let a={os:n.os,cpu:n.cpu,libc:n.libc};return declaresPlatform(a)?a:void 0}function edgeKey(n,a){return`${n??``}\n${a}`}function parseEdgeKey(n){let a=n.indexOf(`
855
855
  `),S=n.slice(0,a);return{from:S===``?null:S,name:n.slice(a+1)}}function requiredTopLevelNames(n,a){let S=new Set;for(let C of n){let n=parseSpecName(C);a?.has(n)||S.add(n)}return S}function requiredDepEntries(n){let a=[];for(let[S,C]of Object.entries(n.dependencies))S in n.optionalDependencies||a.push([S,C]);return a}function computeOptionalFlags(n,a,S){let C=new Map;for(let a of n)C.set(a.installPath,a);let N=new Set,F=[],enter=n=>{N.has(n.installPath)||(N.add(n.installPath),F.push(n.installPath))};for(let n of a){let a=C.get(`node_modules/${n}`);a&&enter(a)}for(;F.length>0;){let n=F.pop();if(n===void 0)break;let a=C.get(n);if(a)for(let[S]of requiredDepEntries(a)){let a=findVisible(n,S,C);a&&enter(a)}}let I=0;for(let a of n){let n=!N.has(a.installPath);(a.optional??!1)!==n&&I++,a.optional=n}S(`install: optionality fixpoint — %d of %d node(s) reachable only via optional edges%s`,n.length-N.size,n.length,I>0?`; corrected ${I} incoming flag(s)`:``)}function assertRequiredEdgesResolved(n,a){if(a.size===0)return;let S=new Map;for(let a of n)S.set(a.installPath,a);for(let n of a){let{from:a,name:C}=parseEdgeKey(n);if(a===null)continue;let N=S.get(a);if(N&&!N.optional&&!(C in N.optionalDependencies))throw Error(`install: required dependency ${C} of ${N.name}@${N.version} (${N.installPath}) could not be resolved.\nThe failure was tolerated during the walk because ${N.name} looked optional at that point, but the final dependency graph makes it required — so ${C} is required too and the tree would be incomplete.\nRe-run with --verbose and look for the "resolve: optional dep ${C}@… skipped (…)" line for the underlying cause.`)}}function emitTopLevelConflictWarnings(n,a){for(let[S,C]of n){if(C.size<2)continue;let n=a.get(S);if(!n)continue;let describe=(n,a)=>a.size>0?`${n} (requested by ${[...a].join(`, `)})`:n,N=[],F=[];for(let[a,S]of C){let C;try{C=satisfies(n.version,new jN(a))}catch{continue}(C?N:F).push(describe(a,S))}F.length!==0&&he.warn(`[gjsify] warning: version conflict for ${S}: installed ${n.version} at ${n.installPath} — does NOT satisfy ${F.join(`, `)}`+(N.length>0?`; satisfies ${N.join(`, `)}`:``)+`. One hoisted copy serves all requesters until the per-workspace dedup pass lands (Phase D.8).`)}}async function fetchPackumentWithDiskCache(n,a,S,C,N=`corgi`){let F=registryFor(n,a),I=N===`full`,H=getCachedPackument(F,n,N),onRetry=({attempt:a,error:C,delayMs:F})=>{S(`packument %s (%s): retry %d after %dms (%s)`,n,N,a,F,errMsg(C))},W=await fetchPackumentConditional(n,{npmrc:a,signal:C,ifNoneMatch:H?.etag,fullMetadata:I,onRetry});return W.status===`not-modified`&&H?(S(`packument-cache-hit: %s (%s, 304, etag %s)`,n,N,H.etag),H.packument):W.status===`fresh`&&W.packument?(W.etag&&putCachedPackument(F,n,W.etag,W.packument,N),W.packument):fetchPackument(n,{npmrc:a,signal:C,fullMetadata:I,onRetry})}async function prefetchPackuments(n,a,S){if(n.length===0)return;let C=0,N=Math.max(1,Math.min(hP,n.length)),worker=async()=>{for(;C<n.length;){if(S?.aborted)return;let N=n[C++];try{await a(N)}catch{}}};await Promise.all(Array.from({length:N},()=>worker()))}function findVisible(n,a,S){let C=[];if(n!==null){C.push(`${n}/node_modules/${a}`);let S=n;for(;;){let n=S.lastIndexOf(`/node_modules/`);if(n<0||(S=S.slice(0,n),C.push(`${S}/node_modules/${a}`),S===``))break}}C.push(`node_modules/${a}`);for(let n of C){let a=S.get(n);if(a)return a}return null}function decidePlacement(n,a,S,C){let N=C.get(a);return!N||N.version===S||n===null?`node_modules/${a}`:`${n}/node_modules/${a}`}function satisfiesRange(n,a){try{return satisfies(n,new jN(a))}catch{return!1}}function readLockfile(n){if(!existsSync(n))return null;try{let a=JSON.parse(readFileSync(n,`utf-8`));return!vP.has(a.lockfileVersion)||!a.packages||typeof a.packages!=`object`?null:a}catch{return null}}function writeLockfile(n,a,S){let C={},N=[...S].sort((n,a)=>n.installPath<a.installPath?-1:+(n.installPath>a.installPath));for(let n of N)C[n.installPath]={version:n.version,resolved:n.tarballUrl,integrity:n.integrity,dependencies:Object.keys(n.dependencies).length>0?n.dependencies:void 0,optionalDependencies:Object.keys(n.optionalDependencies).length>0?n.optionalDependencies:void 0,bin:n.bin,os:n.platform?.os,cpu:n.platform?.cpu,libc:n.platform?.libc,optional:n.optional?!0:void 0};let F={lockfileVersion:_P,requested:[...a],packages:C};atomicWriteStrict(n,JSON.stringify(F,null,2)+`
856
856
  `)}function buildPreferredVersions(n){let a=new Map;for(let[S,C]of Object.entries(n.packages)){let n=nameFromInstallPath(S),N=a.get(n);N||(N=new Set,a.set(n,N)),N.add(C.version)}return a}function preferredVersionFor(n,a){if(!n||n.size===0)return;let S;for(let C of n)satisfiesRange(C,a)&&(S===void 0||new SemVer(C).compare(new SemVer(S))>0)&&(S=C);return S}function lockfileToNodes(n){return Object.entries(n.packages).map(([n,a])=>{let S={os:a.os,cpu:a.cpu,libc:a.libc};return{name:nameFromInstallPath(n),version:a.version,tarballUrl:a.resolved,integrity:a.integrity,installPath:n,dependencies:a.dependencies??{},optionalDependencies:a.optionalDependencies??{},bin:a.bin,platform:declaresPlatform(S)?S:void 0,optional:a.optional===!0}})}function nameFromInstallPath(n){let a=n.lastIndexOf(`/node_modules/`);return a<0?n.replace(/^node_modules\//,``):n.slice(a+14)}function lockfileMatchesRequest(n,a){if(n.requested.length!==a.length)return!1;let S=[...n.requested].sort(),C=[...a].sort();return S.every((n,a)=>n===C[a])}function describeLockfileDrift(n,a){let S=new Set(n.requested),C=new Set(a),N=[],F=[];for(let n of C)S.has(n)||N.push(n);for(let n of S)C.has(n)||F.push(n);if(N.length===0&&F.length===0)return null;let I=[];return N.length>0&&I.push(` + ${N.sort().join(`
857
857
  + `)}`),F.length>0&&I.push(` - ${F.sort().join(`
@@ -932,7 +932,7 @@ jobs:
932
932
  `,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(vs(n,a)));let C=statSync(vs(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?hs(a.destination):n,ce=vs(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(vs(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=vs(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(`
933
933
  `)+`
934
934
  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?vs(n,a):n,N;try{N=readdirSync(C,{withFileTypes:!0})}catch{return S}for(let C of N){if(vI.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=vs(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=vs(n,`.npmignore`),S=vs(n,`.gitignore`),C=[],N=existsSync(a)?a:existsSync(S)?S:null;if(N){let n=readFileSync(N,`utf-8`).split(`
935
- `);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 yI){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=vs(S,`package.json`);if(existsSync(n)&&readPackageJson$2(n)?.workspaces!==void 0)return S;let a=hs(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 yI){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 _I,vI,yI,bI=__esmMin(()=>{Dl(),So(),ks(),qN(),Q_(),ev(),$_(),gI(),_I={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(hs(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`)}},vI=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`]),yI=[`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 xI===void 0&&(xI=`0.36.0`),xI}function defaultUserAgent(){let n=globalThis.process,a=n?.arch??`x64`,S=n?.platform??`linux`;return`gjsify-publish/${cliVersion()} (${S} ${a})`}var xI,SI=__esmMin(()=>{Dl(),ks(),HN()});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(CI.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 CI,sleep,OidcUnavailableError,OidcExchangeError,wI=__esmMin(()=>{CI=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(`
935
+ `);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 yI){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=vs(S,`package.json`);if(existsSync(n)&&readPackageJson$2(n)?.workspaces!==void 0)return S;let a=hs(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 yI){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 _I,vI,yI,bI=__esmMin(()=>{Dl(),So(),ks(),qN(),Q_(),ev(),$_(),gI(),_I={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(hs(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`)}},vI=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`]),yI=[`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 xI===void 0&&(xI=`0.37.0`),xI}function defaultUserAgent(){let n=globalThis.process,a=n?.arch??`x64`,S=n?.platform??`linux`;return`gjsify-publish/${cliVersion()} (${S} ${a})`}var xI,SI=__esmMin(()=>{Dl(),ks(),HN()});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(CI.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 CI,sleep,OidcUnavailableError,OidcExchangeError,wI=__esmMin(()=>{CI=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(`
936
936
  `)}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(`
937
937
  `)}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 TI=__esmMin(()=>{HN()});function isTtyStdin(){let n=process.stdin;return!!n.isTTY&&typeof n.setRawMode==`function`}function applyKey(n,a,S){return a===`\r`||a===`
938
938
  `?{buf:n,echo:`