@hominis/fireforge 0.46.0 → 0.46.2

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 (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +17 -9
  498. package/dist/src/core/token-dark-mode.js +41 -28
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -2,8 +2,8 @@
2
2
  /**
3
3
  * Verification-tree storage and lifecycle for `fireforge tree`.
4
4
  *
5
- * A tree is a FULL project-root CoW snapshot under
6
- * `.fireforge/trees/<name>` — `getProjectRoot()` walks up from cwd, so
5
+ * A tree is a full project-root CoW snapshot under
6
+ * `.fireforge/trees/<name>`. `getProjectRoot()` walks up from cwd, so
7
7
  * every read command (status, lint, typecheck, verify, doctor,
8
8
  * `export --dry-run`) runs inside the tree unmodified and its build /
9
9
  * engine-session locks key on the tree root automatically. Trees are
@@ -92,23 +92,23 @@ export function getTreeMarkerPath(root) {
92
92
  *
93
93
  * Only ENOENT/ENOTDIR mean `absent`: any other probe failure (EACCES on the
94
94
  * `.fireforge` directory, EIO, …) reports `corrupt`, because "we cannot read
95
- * the marker" is not evidence that there is no marker — a `pathExists`
95
+ * the marker" is not evidence that there is no marker: a `pathExists`
96
96
  * pre-check classifies a tree with an unreadable `.fireforge` as `absent`
97
97
  * and hands it the full mutating command set.
98
98
  */
99
99
  /**
100
100
  * Naming convention for state-file readers:
101
- * - `readX(): Promise<XRead>` — the TRI-STATE read: absent, corrupt, or
101
+ * - `readX(): Promise<XRead>` is the tri-state read: absent, corrupt, or
102
102
  * valid.
103
- * - `tryReadX(): Promise<X | undefined>` — collapses absent and corrupt.
103
+ * - `tryReadX(): Promise<X | undefined>` collapses absent and corrupt.
104
104
  */
105
105
  export async function readTreeMarker(root) {
106
106
  const markerPath = getTreeMarkerPath(root);
107
107
  try {
108
108
  const raw = await readJson(markerPath);
109
- // Version FIRST, and reported distinctly. Folding the schemaVersion
110
- // check into `isTreeMarker` makes a marker from a NEWER FireForge read
111
- // as "missing or mistypes a required field" — and `tree-guard.ts` is
109
+ // Version first, and reported distinctly. Folding the schemaVersion
110
+ // check into `isTreeMarker` makes a marker from a newer FireForge read
111
+ // as "missing or mistypes a required field", and `tree-guard.ts` is
112
112
  // default-deny on corrupt, so the operator is locked out of every
113
113
  // mutating command inside the tree by a message claiming the file is
114
114
  // malformed when it is merely newer.
@@ -135,7 +135,7 @@ export async function readTreeMarker(root) {
135
135
  }
136
136
  /**
137
137
  * Reads the tree marker for a project root, or undefined when it is absent
138
- * OR unreadable.
138
+ * or unreadable.
139
139
  *
140
140
  * For display and best-effort paths only (`tree list` renders an unreadable
141
141
  * marker as staleness 'unknown'). Anything that decides whether a mutation may
@@ -150,8 +150,8 @@ export async function tryReadTreeMarker(root) {
150
150
  * the one this tree's marker vouched for as rewritten-and-reconfigured. A
151
151
  * mismatch means an objdir appeared in the tree through some path other than
152
152
  * `tree create --with-objdir` (manual copy, partial restore), so nothing
153
- * proves it was relocated — running against it could consult primary paths.
154
- * No-op outside a tree; a corrupt marker is already refused by the guard.
153
+ * proves it was relocated, and running against it could consult primary paths.
154
+ * No-op outside a tree. A corrupt marker is already refused by the guard.
155
155
  */
156
156
  export async function assertObjdirMatchesTreeMarker(projectRoot, objDir) {
157
157
  const state = await readTreeMarker(projectRoot);
@@ -214,17 +214,17 @@ export function assertValidTreeName(name) {
214
214
  }
215
215
  /**
216
216
  * Refuses an objdir that is not a plain directory physically inside
217
- * `engineDir` — every `cp` mode `cloneEntry` uses preserves symlinks, so
217
+ * `engineDir`. Every `cp` mode `cloneEntry` uses preserves symlinks, so
218
218
  * a symlinked `engine/obj-*` would be cloned as a symlink pointing back
219
219
  * at the original (primary or fully external) build, and the clone's
220
220
  * mozinfo rewrite and `_virtualenvs` removal would then mutate that
221
221
  * original through the link. Checks lstat (the entry itself must be a
222
- * real directory) AND realpath containment (a real directory reached
223
- * through a symlinked parent resolves elsewhere) — the rewriter's
222
+ * real directory) and realpath containment (a real directory reached
223
+ * through a symlinked parent resolves elsewhere). The rewriter's
224
224
  * lexical `resolve()` paths cannot detect either. Also validates the
225
225
  * name as a single `obj-*` path segment. Role `'primary'` guards before
226
- * any copying starts; `'cloned'` re-checks the tree's copy before any
227
- * write goes through it (defense in depth).
226
+ * any copying starts. Role `'cloned'` re-checks the tree's copy before
227
+ * any write goes through it (defense in depth).
228
228
  */
229
229
  async function assertCloneSafeObjdir(engineDir, objDir, role) {
230
230
  const where = role === 'primary' ? 'engine/' : "the tree's engine/";
@@ -259,8 +259,8 @@ async function assertCloneSafeObjdir(engineDir, objDir, role) {
259
259
  * Materialises the tree at `treeRoot` from `primaryRoot` using `capability`
260
260
  * ('none' = plain copy, already gated on --force-copy by the caller).
261
261
  *
262
- * The engine is cloned one TOP-LEVEL entry at a time so unwanted `obj-*`
263
- * directories are never traversed or materialised — on a Firefox tree, even
262
+ * The engine is cloned one top-level entry at a time so unwanted `obj-*`
263
+ * directories are never traversed or materialised. On a Firefox tree, even
264
264
  * CoW-cloning and then deleting an objdir touches metadata for millions of
265
265
  * build outputs. With `withObjdir` exactly that objdir is included (after
266
266
  * {@link assertCloneSafeObjdir} refuses symlinked or engine-escaping objdirs
@@ -272,7 +272,7 @@ async function assertCloneSafeObjdir(engineDir, objDir, role) {
272
272
  export async function cloneTree(args) {
273
273
  const { primaryRoot, treeRoot, name, capability, createdAt, withObjdir } = args;
274
274
  if (withObjdir) {
275
- // Refuse a symlinked/escaping primary objdir BEFORE any copying: the
275
+ // Refuse a symlinked/escaping primary objdir before any copying: the
276
276
  // clone would carry the symlink and every later write would land in
277
277
  // the original build (see assertCloneSafeObjdir).
278
278
  await assertCloneSafeObjdir(join(primaryRoot, 'engine'), withObjdir.objDir, 'primary');
@@ -293,8 +293,8 @@ export async function cloneTree(args) {
293
293
  });
294
294
  });
295
295
  // A selected objdir embeds absolute topsrcdir/topobjdir paths back into
296
- // the PRIMARY tree. It is rewritten below before the marker records it as
297
- // usable; no other objdir ever enters the snapshot.
296
+ // the primary tree. It is rewritten below before the marker records it as
297
+ // usable. No other objdir ever enters the snapshot.
298
298
  if (await pathExists(engineDir)) {
299
299
  // Defensive: never inherit a mid-operation git index lock.
300
300
  await rm(join(engineDir, '.git', 'index.lock'), { force: true });
@@ -302,7 +302,7 @@ export async function cloneTree(args) {
302
302
  if (withObjdir) {
303
303
  await rewriteClonedObjdir(engineDir, withObjdir.objDir);
304
304
  // Regenerate configure output (config.status, backend.mk, Makefile,
305
- // config/autoconf.mk) against the tree's paths — the mozinfo rewrite
305
+ // config/autoconf.mk) against the tree's paths. The mozinfo rewrite
306
306
  // alone leaves those naming the primary. A failed reconfigure throws
307
307
  // before the marker below records the objdir as usable (fail-closed).
308
308
  await withObjdir.reconfigure(engineDir);
@@ -314,7 +314,7 @@ export async function cloneTree(args) {
314
314
  }
315
315
  if (withObjdir) {
316
316
  // The in-tree stale-build and static-components gates anchor on the
317
- // last-build baseline; without the copy they would read `undefined`
317
+ // last-build baseline. Without the copy they would read `undefined`
318
318
  // and degrade to first-build semantics inside a fully built tree.
319
319
  const baseline = getBuildBaselinePath(primaryRoot);
320
320
  if (await pathExists(baseline)) {
@@ -339,7 +339,7 @@ export async function cloneTree(args) {
339
339
  * Points the cloned objdir at the tree: rewrites mozinfo.json's
340
340
  * topsrcdir/topobjdir (and an in-tree mozconfig) via the same
341
341
  * safe-relocation rewriter `build --rewrite-mozinfo` uses, refusing
342
- * fail-closed when its safety rules cannot prove the rewrite correct —
342
+ * fail-closed when its safety rules cannot prove the rewrite correct:
343
343
  * a tree must never hold an objdir that still names the primary. Before
344
344
  * any write, the cloned objdir is re-checked as a real directory inside
345
345
  * the tree ({@link assertCloneSafeObjdir}) so no write ever goes through
@@ -347,7 +347,7 @@ export async function cloneTree(args) {
347
347
  * removed outright: their scripts carry primary-tree shebang paths, and
348
348
  * mach rebuilds venvs in-tree on first use. The configure-generated root
349
349
  * files (config.status, backend.mk, Makefile, config/autoconf.mk) still
350
- * name the primary after this rewrite; they are regenerated by the
350
+ * name the primary after this rewrite. They are regenerated by the
351
351
  * in-tree `mach configure` the caller supplies to {@link cloneTree},
352
352
  * which runs before the marker is written.
353
353
  */
@@ -391,7 +391,7 @@ export async function listTrees(primaryRoot) {
391
391
  }
392
392
  /**
393
393
  * Classifies a mkdir-style lock directory. Reads the lock's owner file
394
- * directly (line 1 = PID — the format `file-lock.ts` documents as stable,
394
+ * directly (line 1 = PID, the format `file-lock.ts` documents as stable,
395
395
  * whose name it shares via {@link LOCK_PID_FILE}) instead of exporting
396
396
  * file-lock internals.
397
397
  *
@@ -402,7 +402,7 @@ export async function listTrees(primaryRoot) {
402
402
  *
403
403
  * The `unknown` state is not theoretical. `withFileLock` takes the lock by
404
404
  * creating the directory and only *then* writes the owner file, treating a
405
- * write failure as non-fatal — so every acquisition passes through a window
405
+ * write failure as non-fatal, so every acquisition passes through a window
406
406
  * in which the lock is genuinely held and has no readable PID, and a
407
407
  * read-only or full filesystem leaves it that way for the lock's whole life.
408
408
  * Reporting that as `free` lets `removeTree` recursively delete a tree out
@@ -419,8 +419,9 @@ async function inspectTreeLock(lockPath) {
419
419
  }
420
420
  catch (error) {
421
421
  // A lock cleanly released between the existence probe above and this read
422
- // leaves no directory behind — that is a release, not an unreadable owner,
423
- // and demanding --force for it would be a spurious refusal.
422
+ // leaves no directory behind. That is a release rather than an
423
+ // unreadable owner, and demanding --force for it would be a spurious
424
+ // refusal.
424
425
  if (!existsSync(lockPath))
425
426
  return { kind: 'free' };
426
427
  return {
@@ -436,16 +437,17 @@ async function inspectTreeLock(lockPath) {
436
437
  }
437
438
  /**
438
439
  * Removes one tree. Refuses when a live process holds the tree's build
439
- * or engine-session lock — or when a lock directory exists whose ownership
440
- * cannot be established, which `--force` overrides — and never deletes a path
440
+ * or engine-session lock, or when a lock directory exists whose ownership
441
+ * cannot be established (which `--force` overrides). Never deletes a path
441
442
  * outside the trees directory (containment check before `rm -rf`).
442
443
  */
443
444
  export async function removeTree(primaryRoot, name, options = {}) {
444
445
  assertValidTreeName(name);
445
446
  // Both sides resolved: the containment prefix has to be in the same form as
446
447
  // the path it guards. `getTreesDir` is a `join`, so on Windows it yields a
447
- // drive-less path while `resolve` below adds the drive letter — the prefix
448
- // test then failed for EVERY tree and refused each removal as an escape.
448
+ // drive-less path while `resolve` below adds the drive letter, so the
449
+ // prefix test then failed for every tree and refused each removal as an
450
+ // escape.
449
451
  const treesDir = resolve(getTreesDir(primaryRoot));
450
452
  const treeRoot = resolve(treesDir, name);
451
453
  if (!treeRoot.startsWith(treesDir + sep) || basename(treeRoot) !== name) {
@@ -4,7 +4,7 @@
4
4
  * `fireforge typecheck` command (`typecheck.ts`).
5
5
  *
6
6
  * Centralised so both flows agree on the same Firefox-globals shim
7
- * and the same set of suppressed diagnostic codes — drift between the
7
+ * and the same set of suppressed diagnostic codes. Drift between the
8
8
  * two would mean a patch could lint clean under `fireforge lint` but
9
9
  * still fail `fireforge typecheck`, or vice versa, for reasons the
10
10
  * operator could not infer from the rule names.
@@ -13,15 +13,15 @@
13
13
  export declare const SHIM_FILENAME = "__fireforge_firefox_globals.d.ts";
14
14
  /**
15
15
  * Loose declarations for Firefox test-harness globals (mochitest
16
- * browser-chrome and xpcshell), appended AFTER the composed
16
+ * browser-chrome and xpcshell), appended after the composed
17
17
  * Firefox-globals + consumer shim when `patchLint.checkJsTestFiles`
18
18
  * extends the checkJs pass to patch-adopted test scripts.
19
- * Deliberately `any`-typed — the pragmatic posture matches the main
20
- * shim. A consumer that wants TYPED harness members (so e.g. a call to
21
- * a method the harness does not declare fails at the patch boundary)
22
- * declares them in `patchLint.checkJsTestShim`; because that shim
23
- * composes BEFORE this baseline and TypeScript resolves conflicting
24
- * `declare var` redeclarations to the FIRST declaration, the typed
19
+ * These are `any`-typed, the same pragmatic posture as the main
20
+ * shim. A consumer that wants typed harness members (so that, say, a call
21
+ * to a method the harness does not declare fails at the patch boundary)
22
+ * declares them in `patchLint.checkJsTestShim`. Because that shim
23
+ * composes before this baseline and TypeScript resolves conflicting
24
+ * `declare var` redeclarations to the first declaration, the typed
25
25
  * consumer declaration wins over the loose fallback here.
26
26
  */
27
27
  export declare const TEST_HARNESS_SHIM = "\n// \u2500\u2500 FireForge test-harness shim (loose baseline) \u2500\u2500\ndeclare var TestUtils: any;\ndeclare var BrowserTestUtils: any;\ndeclare var SpecialPowers: any;\ndeclare var EventUtils: any;\ndeclare var SimpleTest: any;\ndeclare var Assert: any;\ndeclare var gTestPath: string;\ndeclare var content: any;\ndeclare function add_task(task: (...args: any[]) => any): any;\ndeclare function add_setup(task: (...args: any[]) => any): any;\ndeclare function ok(condition: any, message?: string): void;\ndeclare function is(actual: any, expected: any, message?: string): void;\ndeclare function isnot(actual: any, expected: any, message?: string): void;\ndeclare function todo(condition: any, message?: string): void;\ndeclare function todo_is(actual: any, expected: any, message?: string): void;\ndeclare function info(message: string): void;\ndeclare function registerCleanupFunction(callback: (...args: any[]) => any): void;\ndeclare function waitForExplicitFinish(): void;\ndeclare function finish(): void;\ndeclare function do_get_profile(): any;\ndeclare function run_test(): any;\n\n";
@@ -32,7 +32,7 @@ export declare const TEST_HARNESS_SHIM = "\n// \u2500\u2500 FireForge test-harne
32
32
  * build system: the resolver can't follow `resource://`/`chrome://`
33
33
  * URLs and the global shim is intentionally narrow.
34
34
  *
35
- * Widening this set should be deliberate and per-code — silently
35
+ * Widening this set should be deliberate and per-code: silently
36
36
  * suppressing more codes hides real type errors. The same set is used
37
37
  * by both flows so a patch can't pass one and fail the other for a
38
38
  * reason the operator couldn't infer from the docs.
@@ -44,8 +44,9 @@ export declare const SUPPRESSED_DIAGNOSTIC_CODES: ReadonlySet<number>;
44
44
  * a module reference a name with no import or declaration anywhere and still
45
45
  * typecheck with 0 errors, so the failure surfaces as a runtime
46
46
  * `ReferenceError`. Both flows report these at a configurable severity
47
- * (default `'warning'`: visible without breaking gates; genuine shim gaps
48
- * are silenced by adding the global to `extraShim`, or per-run via `'off'`).
47
+ * (default `'warning'`: visible without breaking gates, while genuine shim
48
+ * gaps are silenced by adding the global to `extraShim`, or per-run via
49
+ * `'off'`).
49
50
  */
50
51
  export declare const UNDEFINED_IDENTIFIER_CODES: ReadonlySet<number>;
51
52
  /** Hint appended to reported undefined-identifier diagnostics. */
@@ -62,18 +63,18 @@ export interface ComposedShim {
62
63
  /**
63
64
  * Composes the synthetic shim source by concatenating the built-in Firefox
64
65
  * globals shim with the contents of an optional user-supplied `.d.ts` file.
65
- * The user file is appended verbatim — the augment direction is intentional
66
+ * The user file is appended verbatim. The augment direction is intentional
66
67
  * (declarations later in concat order augment earlier ones), so a project
67
68
  * that wants to refine `Services` with a more specific type can do so in the
68
- * extra shim, and members can be ADDED to the structured globals by merging
69
- * their interfaces (`interface ChromeUtilsShim { newMember(): any }` — see
69
+ * extra shim, and members can be added to the structured globals by merging
70
+ * their interfaces (`interface ChromeUtilsShim { newMember(): any }`, see
70
71
  * the module doc comment). Any triple-slash `/// <reference path="…">`
71
72
  * directives inside the extra shim are inlined (resolved against the extra
72
73
  * shim's own directory) so they are not silently dropped at the synthetic
73
74
  * shim path.
74
75
  *
75
76
  * Missing extra-shim files raise a clear error rather than failing silently
76
- * with a confusing "type not found" downstream — this is the one
77
+ * with a confusing "type not found" downstream. This is the one
77
78
  * config-driven path where a user typo in `fireforge.json` produces a
78
79
  * runtime error, so it needs to be unmistakable.
79
80
  *
@@ -5,7 +5,7 @@
5
5
  * `fireforge typecheck` command (`typecheck.ts`).
6
6
  *
7
7
  * Centralised so both flows agree on the same Firefox-globals shim
8
- * and the same set of suppressed diagnostic codes — drift between the
8
+ * and the same set of suppressed diagnostic codes. Drift between the
9
9
  * two would mean a patch could lint clean under `fireforge lint` but
10
10
  * still fail `fireforge typecheck`, or vice versa, for reasons the
11
11
  * operator could not infer from the rule names.
@@ -17,7 +17,7 @@ export const SHIM_FILENAME = '__fireforge_firefox_globals.d.ts';
17
17
  /**
18
18
  * Minimal `.d.ts` shim for Firefox privileged-scope globals.
19
19
  *
20
- * Firefox source is plain JS — no TypeScript allowed. The shim lets
20
+ * Firefox source is plain JS, with no TypeScript allowed. The shim lets
21
21
  * TS-driven type checking run without reporting "cannot find name"
22
22
  * for the most common Mozilla APIs. Types are intentionally loose
23
23
  * (`any`) because full Firefox type coverage is out of scope.
@@ -25,7 +25,7 @@ export const SHIM_FILENAME = '__fireforge_firefox_globals.d.ts';
25
25
  * Structured globals (`ChromeUtils`, `Localization`) are declared via
26
26
  * named global interfaces (`ChromeUtilsShim`, `LocalizationShim`, …)
27
27
  * rather than closed object-literal types, so a project's extra shim
28
- * (`patchLint.checkJsExtraShim` / `typecheck.extraShim`) can ADD members
28
+ * (`patchLint.checkJsExtraShim` / `typecheck.extraShim`) can add members
29
29
  * through TypeScript interface merging:
30
30
  *
31
31
  * // my-extra-shim.d.ts
@@ -34,27 +34,27 @@ export const SHIM_FILENAME = '__fireforge_firefox_globals.d.ts';
34
34
  * }
35
35
  *
36
36
  * (A second `declare var ChromeUtils` in the extra shim remains a
37
- * duplicate-identifier error by design — merge the interface instead.)
37
+ * duplicate-identifier error by design. Merge the interface instead.)
38
38
  * The member lists track upstream WebIDL additions per Firefox release
39
- * (`dom/chrome-webidl/ChromeUtils.webidl` for ChromeUtils); when a new
39
+ * (`dom/chrome-webidl/ChromeUtils.webidl` for ChromeUtils). When a new
40
40
  * release adds a commonly-patched member, add a loose signature here.
41
41
  *
42
42
  * Notable patterns that require shimming:
43
43
  * - `const lazy = {};` + `ChromeUtils.defineESModuleGetters(lazy, { ... })`
44
- * populates `lazy` at runtime; we declare it as `Record<string, any>`.
44
+ * populates `lazy` at runtime, so we declare it as `Record<string, any>`.
45
45
  * - `Services.obs`, `Services.prefs`, etc. are XPCOM service accessors.
46
46
  * - `Ci`, `Cc`, `Cr`, `Cu` are XPCOM component shortcuts.
47
47
  * - Browser chrome globals like `gBrowser`, `gURLBar` are common in
48
48
  * content scripts wired via `browser.js`.
49
49
  * - Dynamic `import("resource:-…")` / `import("chrome:-…")` under patch
50
50
  * checkJs: imports of *patch-owned* modules resolve to their real
51
- * sources (see `patch-lint-checkjs.ts`); everything else fails host
51
+ * sources (see `patch-lint-checkjs.ts`). Everything else fails host
52
52
  * resolution and lands on these URL ambient wildcards, keeping
53
53
  * upstream Firefox imports pragmatically loose, same posture as globals.
54
54
  */
55
55
  const FIREFOX_GLOBALS_SHIM = `
56
56
  declare var Services: any;
57
- // Extensible via interface merging from a project extra shim — see the
57
+ // Extensible via interface merging from a project extra shim; see the
58
58
  // module doc comment in typecheck-shim.ts.
59
59
  interface ChromeUtilsShim {
60
60
  defineESModuleGetters(target: any, modules: Record<string, string>): void;
@@ -67,7 +67,7 @@ interface ChromeUtilsShim {
67
67
  getClassName(obj: any, unwrap?: boolean): string;
68
68
  isClassInfo(obj: any): boolean;
69
69
  // Firefox 153, dom/chrome-webidl/ChromeUtils.webidl: two overloads
70
- // (URI string / nsIURI) with a PredictRemoteTypeOptions dictionary —
70
+ // (URI string / nsIURI) with a PredictRemoteTypeOptions dictionary,
71
71
  // collapsed into one loose signature per the shim's pragmatic posture.
72
72
  predictRemoteTypeForURI(uri: string | object | null, options?: object): string | null;
73
73
  }
@@ -98,7 +98,7 @@ declare class JSWindowActorParent {
98
98
  sendAsyncMessage(name: string, data?: any, transfers?: any[]): void;
99
99
  sendQuery(name: string, data?: any, transfers?: any[]): Promise<any>;
100
100
  }
101
- // Fluent localization — a stable chrome global. Members stay loose (any),
101
+ // Fluent localization, a stable chrome global. Members stay loose (any),
102
102
  // but the constructor shape is declared so "new Localization([...])" and
103
103
  // "new Localization([...], true)" typecheck without a local cast. Both
104
104
  // interfaces are extensible via interface merging from a project extra
@@ -122,7 +122,7 @@ interface LocalizationShim {
122
122
  }
123
123
  declare var Localization: LocalizationShim;
124
124
 
125
- // Shorthand ambient modules — exports from matching URL imports are loosely typed,
125
+ // Shorthand ambient modules: exports from matching URL imports are loosely typed,
126
126
  // avoiding noResolve empty-graph namespaces. (Named member access broke when we tried
127
127
  // export= Record under moduleResolution Bundler.)
128
128
  declare module 'resource:*';
@@ -131,15 +131,15 @@ declare module 'chrome:*';
131
131
  `;
132
132
  /**
133
133
  * Loose declarations for Firefox test-harness globals (mochitest
134
- * browser-chrome and xpcshell), appended AFTER the composed
134
+ * browser-chrome and xpcshell), appended after the composed
135
135
  * Firefox-globals + consumer shim when `patchLint.checkJsTestFiles`
136
136
  * extends the checkJs pass to patch-adopted test scripts.
137
- * Deliberately `any`-typed — the pragmatic posture matches the main
138
- * shim. A consumer that wants TYPED harness members (so e.g. a call to
139
- * a method the harness does not declare fails at the patch boundary)
140
- * declares them in `patchLint.checkJsTestShim`; because that shim
141
- * composes BEFORE this baseline and TypeScript resolves conflicting
142
- * `declare var` redeclarations to the FIRST declaration, the typed
137
+ * These are `any`-typed, the same pragmatic posture as the main
138
+ * shim. A consumer that wants typed harness members (so that, say, a call
139
+ * to a method the harness does not declare fails at the patch boundary)
140
+ * declares them in `patchLint.checkJsTestShim`. Because that shim
141
+ * composes before this baseline and TypeScript resolves conflicting
142
+ * `declare var` redeclarations to the first declaration, the typed
143
143
  * consumer declaration wins over the loose fallback here.
144
144
  */
145
145
  export const TEST_HARNESS_SHIM = `
@@ -174,7 +174,7 @@ declare function run_test(): any;
174
174
  * build system: the resolver can't follow `resource://`/`chrome://`
175
175
  * URLs and the global shim is intentionally narrow.
176
176
  *
177
- * Widening this set should be deliberate and per-code — silently
177
+ * Widening this set should be deliberate and per-code: silently
178
178
  * suppressing more codes hides real type errors. The same set is used
179
179
  * by both flows so a patch can't pass one and fail the other for a
180
180
  * reason the operator couldn't infer from the docs.
@@ -193,8 +193,9 @@ export const SUPPRESSED_DIAGNOSTIC_CODES = new Set([
193
193
  * a module reference a name with no import or declaration anywhere and still
194
194
  * typecheck with 0 errors, so the failure surfaces as a runtime
195
195
  * `ReferenceError`. Both flows report these at a configurable severity
196
- * (default `'warning'`: visible without breaking gates; genuine shim gaps
197
- * are silenced by adding the global to `extraShim`, or per-run via `'off'`).
196
+ * (default `'warning'`: visible without breaking gates, while genuine shim
197
+ * gaps are silenced by adding the global to `extraShim`, or per-run via
198
+ * `'off'`).
198
199
  */
199
200
  export const UNDEFINED_IDENTIFIER_CODES = new Set([
200
201
  2304, // Cannot find name '{0}'.
@@ -243,18 +244,18 @@ async function inlineTripleSlashReferences(source, baseDir, seen) {
243
244
  /**
244
245
  * Composes the synthetic shim source by concatenating the built-in Firefox
245
246
  * globals shim with the contents of an optional user-supplied `.d.ts` file.
246
- * The user file is appended verbatim — the augment direction is intentional
247
+ * The user file is appended verbatim. The augment direction is intentional
247
248
  * (declarations later in concat order augment earlier ones), so a project
248
249
  * that wants to refine `Services` with a more specific type can do so in the
249
- * extra shim, and members can be ADDED to the structured globals by merging
250
- * their interfaces (`interface ChromeUtilsShim { newMember(): any }` — see
250
+ * extra shim, and members can be added to the structured globals by merging
251
+ * their interfaces (`interface ChromeUtilsShim { newMember(): any }`, see
251
252
  * the module doc comment). Any triple-slash `/// <reference path="…">`
252
253
  * directives inside the extra shim are inlined (resolved against the extra
253
254
  * shim's own directory) so they are not silently dropped at the synthetic
254
255
  * shim path.
255
256
  *
256
257
  * Missing extra-shim files raise a clear error rather than failing silently
257
- * with a confusing "type not found" downstream — this is the one
258
+ * with a confusing "type not found" downstream. This is the one
258
259
  * config-driven path where a user typo in `fireforge.json` produces a
259
260
  * runtime error, so it needs to be unmistakable.
260
261
  *
@@ -4,8 +4,8 @@
4
4
  * command.
5
5
  *
6
6
  * Distinct from `patch-lint-checkjs.ts` (patch-hygiene): patchLint is
7
- * scoped, fireforge-controlled, and runs as part of `fireforge lint`;
8
- * this command runs whole projects with user-controlled compiler
7
+ * scoped, fireforge-controlled, and runs as part of `fireforge lint`.
8
+ * This command runs whole projects with user-controlled compiler
9
9
  * options and is intended as a CI gate. The two share the Firefox
10
10
  * globals shim and suppressed-code list (via `typecheck-shim.ts`) so
11
11
  * a file that lints clean cannot fail typecheck for a reason the
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * Loads the TypeScript compiler API via dynamic import so it is only
15
15
  * required when `typecheck.projects` is configured. TypeScript
16
- * remains a dev-dependency — if a user invokes `fireforge typecheck`
16
+ * remains a dev-dependency. If a user invokes `fireforge typecheck`
17
17
  * without installing it, the function returns a clear error pointing
18
18
  * at `npm install typescript`.
19
19
  */
@@ -22,7 +22,7 @@ import type { TypecheckProjectResult } from '../types/typecheck.js';
22
22
  /**
23
23
  * Sentinel string surfaced as a `TypecheckIssue.message` when the
24
24
  * project's jsconfig sets `checkJs: false`. Exported so tests can
25
- * pin the contract — operators rely on it to spot opted-out projects
25
+ * pin the contract, since operators rely on it to spot opted-out projects
26
26
  * in CI logs.
27
27
  */
28
28
  export declare const CHECK_JS_DISABLED_NOTICE = "Project sets \"checkJs: false\" \u2014 skipping (override the jsconfig to enable typecheck).";
@@ -31,20 +31,20 @@ export declare const CHECK_JS_DISABLED_NOTICE = "Project sets \"checkJs: false\"
31
31
  *
32
32
  * Per-project flow:
33
33
  * 1. Read the jsconfig via the TS API. JSON parse / config-spec
34
- * errors are surfaced as issues, not thrown — a single broken
35
- * project must not abort the rest of the run.
34
+ * errors are surfaced as issues rather than thrown, because a single
35
+ * broken project must not abort the rest of the run.
36
36
  * 2. Compute final compiler options from the user's options. We
37
- * only force `noEmit: true` (this is a typecheck, not a build);
38
- * we honour `strict`, `target`, `lib`, `module`, `paths`,
37
+ * only force `noEmit: true` (this is a typecheck, not a build).
38
+ * We honour `strict`, `target`, `lib`, `module`, `paths`,
39
39
  * `include`, `exclude`. `allowJs` and `checkJs` default to
40
- * `true` only when the user has not set them — if the user set
40
+ * `true` only when the user has not set them. If the user set
41
41
  * `checkJs: false` we treat that as an explicit opt-out and
42
42
  * skip the project with a single notice (see {@link CHECK_JS_DISABLED_NOTICE}).
43
43
  * 3. Inject the synthetic shim (built-in + optional extraShim) as
44
44
  * a virtual root file that the custom CompilerHost serves.
45
- * 4. Build the program; collect semantic, syntactic, options, and
46
- * global diagnostics. The patchLint flow only reads semantic +
47
- * syntactic — fine for hygiene, but a CI gate needs the full
45
+ * 4. Build the program and collect semantic, syntactic, options,
46
+ * and global diagnostics. The patchLint flow only reads semantic +
47
+ * syntactic, which is fine for hygiene, but a CI gate needs the full
48
48
  * set so misconfigured `lib`/`paths` entries fail loudly.
49
49
  * 5. Drop diagnostics whose code is in `SUPPRESSED_DIAGNOSTIC_CODES`
50
50
  * and any diagnostic originating in the synthetic shim itself.