@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
@@ -17,7 +17,7 @@ export { removeCustomElementRegistration } from './furnace-registration-remove.j
17
17
  * `content/global/elements/` line. Falls back to 3 spaces when no
18
18
  * reference line exists.
19
19
  * - **Insertion point**: identified by existing lines matching the regex
20
- * `^\s+content\/global\/elements\/([^.]+)\.` — new entries are inserted
20
+ * `^\s+content\/global\/elements\/([^.]+)\.`. New entries are inserted
21
21
  * in alphabetical order relative to these.
22
22
  * - **Fallback**: if no `content/global/elements/` line exists (empty
23
23
  * project), looks for any `content/global/` line and inserts after it.
@@ -42,7 +42,7 @@ export declare function addJarMnEntries(engineDir: string, tagName: string, file
42
42
  * does not resolve at runtime, so the generated `--localized` component
43
43
  * silently ships broken l10n.
44
44
  *
45
- * Degrades gracefully — if the locale jar.mn (e.g. `toolkit/locales/jar.mn`)
45
+ * Degrades gracefully: if the locale jar.mn (e.g. `toolkit/locales/jar.mn`)
46
46
  * does not exist, returns 0 rather than throwing, so a custom fork without a
47
47
  * standard locales package can still apply a localized component.
48
48
  *
@@ -59,13 +59,13 @@ export declare function addJarMnEntries(engineDir: string, tagName: string, file
59
59
  export declare function addLocaleFtlJarMnEntry(engineDir: string, jarMnRelPath: string, tagName: string, chromeSubPath: string): Promise<number>;
60
60
  /**
61
61
  * Removes a locale jar.mn entry previously written by `addLocaleFtlJarMnEntry`.
62
- * Idempotent — if the entry is absent or the file is missing, nothing happens.
62
+ * Idempotent: if the entry is absent or the file is missing, nothing happens.
63
63
  */
64
64
  export declare function removeLocaleFtlJarMnEntry(engineDir: string, jarMnRelPath: string, tagName: string, chromeSubPath: string): Promise<void>;
65
65
  /**
66
66
  * Removes all jar.mn entries for a given tag name.
67
67
  *
68
- * This operation is idempotent — if no entries exist or the file is missing,
68
+ * This operation is idempotent: if no entries exist or the file is missing,
69
69
  * nothing happens.
70
70
  *
71
71
  * @param engineDir - Path to the Firefox engine source root
@@ -83,7 +83,7 @@ export interface StaleJarMnEntry {
83
83
  }
84
84
  /**
85
85
  * Scans jar.mn for widget registration lines `(widgets/<tag>/<file>)` whose
86
- * workspace source file no longer exists — a renamed component helper
86
+ * workspace source file no longer exists. A renamed component helper
87
87
  * otherwise leaves the old line pointing at a deleted file and every build
88
88
  * fails at packaging. Only tags in `managedTags` (furnace-managed custom
89
89
  * components) are inspected, so upstream lines are never touched.
@@ -46,7 +46,7 @@ import { JAR_MN } from './furnace-constants.js';
46
46
  * `content/global/elements/` line. Falls back to 3 spaces when no
47
47
  * reference line exists.
48
48
  * - **Insertion point**: identified by existing lines matching the regex
49
- * `^\s+content\/global\/elements\/([^.]+)\.` — new entries are inserted
49
+ * `^\s+content\/global\/elements\/([^.]+)\.`. New entries are inserted
50
50
  * in alphabetical order relative to these.
51
51
  * - **Fallback**: if no `content/global/elements/` line exists (empty
52
52
  * project), looks for any `content/global/` line and inserts after it.
@@ -122,7 +122,7 @@ export async function addJarMnEntries(engineDir, tagName, files) {
122
122
  * does not resolve at runtime, so the generated `--localized` component
123
123
  * silently ships broken l10n.
124
124
  *
125
- * Degrades gracefully — if the locale jar.mn (e.g. `toolkit/locales/jar.mn`)
125
+ * Degrades gracefully: if the locale jar.mn (e.g. `toolkit/locales/jar.mn`)
126
126
  * does not exist, returns 0 rather than throwing, so a custom fork without a
127
127
  * standard locales package can still apply a localized component.
128
128
  *
@@ -183,7 +183,7 @@ function detectLocaleJarMnIndent(lines, chromeSubPath) {
183
183
  }
184
184
  /**
185
185
  * Removes a locale jar.mn entry previously written by `addLocaleFtlJarMnEntry`.
186
- * Idempotent — if the entry is absent or the file is missing, nothing happens.
186
+ * Idempotent: if the entry is absent or the file is missing, nothing happens.
187
187
  */
188
188
  export async function removeLocaleFtlJarMnEntry(engineDir, jarMnRelPath, tagName, chromeSubPath) {
189
189
  const filePath = join(engineDir, jarMnRelPath);
@@ -201,7 +201,7 @@ export async function removeLocaleFtlJarMnEntry(engineDir, jarMnRelPath, tagName
201
201
  /**
202
202
  * Removes all jar.mn entries for a given tag name.
203
203
  *
204
- * This operation is idempotent — if no entries exist or the file is missing,
204
+ * This operation is idempotent: if no entries exist or the file is missing,
205
205
  * nothing happens.
206
206
  *
207
207
  * @param engineDir - Path to the Firefox engine source root
@@ -214,9 +214,9 @@ export async function removeJarMnEntries(engineDir, tagName) {
214
214
  }
215
215
  let content = await readText(filePath);
216
216
  const lines = content.split('\n');
217
- // Match by the SOURCE MAPPING segment `(widgets/<tagName>/...)` so every
217
+ // Match by the source mapping segment `(widgets/<tagName>/...)` so every
218
218
  // line the component registered is removed regardless of the target
219
- // basename — a helper `.mjs` whose name does not start with the tag (e.g.
219
+ // basename. A helper `.mjs` whose name does not start with the tag (e.g.
220
220
  // a renamed `foo-utils.mjs`) otherwise survives the remove pass and leaves
221
221
  // a stale registration that breaks packaging. The legacy target-path match
222
222
  // is kept as an OR for lines written before the source mapping existed.
@@ -232,7 +232,7 @@ export async function removeJarMnEntries(engineDir, tagName) {
232
232
  const WIDGET_SOURCE_MAPPING_PATTERN = /\(widgets\/([^/)]+)\/([^)]+)\)/;
233
233
  /**
234
234
  * Scans jar.mn for widget registration lines `(widgets/<tag>/<file>)` whose
235
- * workspace source file no longer exists — a renamed component helper
235
+ * workspace source file no longer exists. A renamed component helper
236
236
  * otherwise leaves the old line pointing at a deleted file and every build
237
237
  * fails at packaging. Only tags in `managedTags` (furnace-managed custom
238
238
  * components) are inspected, so upstream lines are never touched.
@@ -16,7 +16,7 @@ export declare function recordCreatedDir(journal: RollbackJournal, dirPath: stri
16
16
  /**
17
17
  * Recursively snapshots every file under a directory tree so a later rollback
18
18
  * can restore deleted files. Skips symlinks to avoid following them out of the
19
- * tree. The directory itself is not recorded as "created" — callers that
19
+ * tree. The directory itself is not recorded as "created", so callers that
20
20
  * intend to delete and restore the directory should record it explicitly.
21
21
  *
22
22
  * Safe to call on a missing path: it returns without recording anything.
@@ -20,7 +20,7 @@ export function recordCreatedDir(journal, dirPath) {
20
20
  /**
21
21
  * Recursively snapshots every file under a directory tree so a later rollback
22
22
  * can restore deleted files. Skips symlinks to avoid following them out of the
23
- * tree. The directory itself is not recorded as "created" — callers that
23
+ * tree. The directory itself is not recorded as "created", so callers that
24
24
  * intend to delete and restore the directory should record it explicitly.
25
25
  *
26
26
  * Safe to call on a missing path: it returns without recording anything.
@@ -49,9 +49,9 @@ export async function snapshotFile(journal, filePath) {
49
49
  // Journal keys are the paths rollback will later write back to, and the
50
50
  // restore runs from whatever cwd the process happens to be in by then. A
51
51
  // relative key would therefore restore somewhere other than where the
52
- // snapshot was taken — silently, and only on the failure path where nobody
53
- // is watching. Every caller composes an absolute path already; this keeps
54
- // it that way.
52
+ // snapshot was taken, silently, and only on the failure path where nobody
53
+ // is watching. Every caller composes an absolute path already, and this
54
+ // keeps it that way.
55
55
  assert(isAbsolute(filePath), () => `snapshot path is absolute (got "${filePath}")`);
56
56
  if (journal.files.has(filePath)) {
57
57
  return;
@@ -149,7 +149,7 @@ export async function restoreRollbackJournal(journal) {
149
149
  // Directory removal is only safe once every file is back where it belongs:
150
150
  // a created directory may hold a restored file, and removing it recursively
151
151
  // would undo the restore we just performed. The throw above is what
152
- // normally enforces this; the assertion names it so a future early-return
152
+ // normally enforces this. The assertion names it so a future early-return
153
153
  // or error-swallowing edit cannot quietly reach the rm loop with failures
154
154
  // outstanding.
155
155
  assert(errors.length === 0, 'all journal files restored before created directories are removed');
@@ -1,46 +1,46 @@
1
1
  /**
2
2
  * Stale-furnace-source gate for `fireforge patch export` / `re-export`.
3
3
  *
4
- * Exports capture the DEPLOYED engine copies of furnace-managed files, not
4
+ * Exports capture the deployed engine copies of furnace-managed files, not
5
5
  * the `components/` sources. Editing a component source and re-exporting its
6
- * owning patch WITHOUT an intervening `furnace deploy`/`apply` silently
7
- * exports the stale deployed copy — per-patch lint then flags the old line
6
+ * owning patch without an intervening `furnace deploy`/`apply` silently
7
+ * exports the stale deployed copy: per-patch lint then flags the old line
8
8
  * count and the patch body lags the source. This gate detects that sequence
9
9
  * by comparing component source directories against the checksums recorded
10
- * at the last apply (`FurnaceState.appliedChecksums`) — the same signal
11
- * `warnIfFurnaceStale` uses for run/watch — and refuses the export unless
10
+ * at the last apply (`FurnaceState.appliedChecksums`), the same signal
11
+ * `warnIfFurnaceStale` uses for run/watch, and refuses the export unless
12
12
  * the operator passes `--allow-stale-furnace`.
13
13
  *
14
14
  * Checksum-based on purpose: git checkouts and `furnace refresh` churn
15
15
  * mtimes without content changes, so an mtime comparison would misfire.
16
16
  *
17
17
  * Probe failures (broken furnace config, missing state) degrade to a verbose
18
- * log and an empty result — a broken furnace setup must never block
18
+ * log and an empty result. A broken furnace setup must never block
19
19
  * non-furnace patch work.
20
20
  */
21
21
  /** One furnace component whose source drifted from its deployed copy. */
22
22
  export interface StaleFurnaceComponent {
23
23
  /** Component name (furnace.json key). */
24
24
  name: string;
25
- /** Component flavor — resolves the source directory root. */
25
+ /** Component flavor, which resolves the source directory root. */
26
26
  type: 'custom' | 'override';
27
27
  /** Engine-relative deployed prefix (`/`-terminated) the component owns. */
28
28
  prefix: string;
29
29
  }
30
30
  /**
31
31
  * Returns the furnace components whose deployed engine copies the given
32
- * files fall under AND whose `components/` sources have changed since the
32
+ * files fall under and whose `components/` sources have changed since the
33
33
  * last apply. Empty when furnace is not configured, never applied, or the
34
34
  * probe fails.
35
35
  *
36
36
  * Files are attributed per component: the custom `targetPath` / override
37
- * `basePath` prefixes, plus — for a localized non-sharedFtl custom
38
- * component — its exact deployed `<ftlDir>/<name>.ftl` file (the shared
39
- * FTL dir as a whole stays unclaimed; sibling files there belong to other
40
- * components). `sharedFtl` bundles are NOT furnace-deployed (apply only
41
- * prunes a dangling per-widget jar.mn line), so they have no deployed copy
42
- * to go stale and get no candidate by design. The storybook stories prefix
43
- * is likewise skipped.
37
+ * `basePath` prefixes, plus, for a localized non-sharedFtl custom
38
+ * component, its exact deployed `<ftlDir>/<name>.ftl` file (the shared
39
+ * FTL dir as a whole stays unclaimed, because sibling files there belong
40
+ * to other components). `sharedFtl` bundles are not furnace-deployed (apply
41
+ * only prunes a dangling per-widget jar.mn line), so they have no deployed
42
+ * copy to go stale and get no candidate by design. The storybook stories
43
+ * prefix is likewise skipped.
44
44
  *
45
45
  * @param projectRoot - Project root directory
46
46
  * @param files - Engine-relative paths the export will capture
@@ -49,7 +49,8 @@ export declare function findStaleFurnaceComponentsForFiles(projectRoot: string,
49
49
  /**
50
50
  * Gate helper for export/re-export: refuses (or, with `allow`, warns) when
51
51
  * any exported file belongs to a furnace component whose source changed
52
- * since the last apply — the export would capture the stale deployed copy.
52
+ * since the last apply, where the export would capture the stale deployed
53
+ * copy.
53
54
  *
54
55
  * @param projectRoot - Project root directory
55
56
  * @param files - Engine-relative paths the export will capture
@@ -2,21 +2,21 @@
2
2
  /**
3
3
  * Stale-furnace-source gate for `fireforge patch export` / `re-export`.
4
4
  *
5
- * Exports capture the DEPLOYED engine copies of furnace-managed files, not
5
+ * Exports capture the deployed engine copies of furnace-managed files, not
6
6
  * the `components/` sources. Editing a component source and re-exporting its
7
- * owning patch WITHOUT an intervening `furnace deploy`/`apply` silently
8
- * exports the stale deployed copy — per-patch lint then flags the old line
7
+ * owning patch without an intervening `furnace deploy`/`apply` silently
8
+ * exports the stale deployed copy: per-patch lint then flags the old line
9
9
  * count and the patch body lags the source. This gate detects that sequence
10
10
  * by comparing component source directories against the checksums recorded
11
- * at the last apply (`FurnaceState.appliedChecksums`) — the same signal
12
- * `warnIfFurnaceStale` uses for run/watch — and refuses the export unless
11
+ * at the last apply (`FurnaceState.appliedChecksums`), the same signal
12
+ * `warnIfFurnaceStale` uses for run/watch, and refuses the export unless
13
13
  * the operator passes `--allow-stale-furnace`.
14
14
  *
15
15
  * Checksum-based on purpose: git checkouts and `furnace refresh` churn
16
16
  * mtimes without content changes, so an mtime comparison would misfire.
17
17
  *
18
18
  * Probe failures (broken furnace config, missing state) degrade to a verbose
19
- * log and an empty result — a broken furnace setup must never block
19
+ * log and an empty result. A broken furnace setup must never block
20
20
  * non-furnace patch work.
21
21
  */
22
22
  import { GeneralError } from '../errors/base.js';
@@ -28,18 +28,18 @@ import { furnaceConfigExists, getFurnacePaths, loadFurnaceConfig, loadFurnaceSta
28
28
  import { resolveFtlDir } from './furnace-constants.js';
29
29
  /**
30
30
  * Returns the furnace components whose deployed engine copies the given
31
- * files fall under AND whose `components/` sources have changed since the
31
+ * files fall under and whose `components/` sources have changed since the
32
32
  * last apply. Empty when furnace is not configured, never applied, or the
33
33
  * probe fails.
34
34
  *
35
35
  * Files are attributed per component: the custom `targetPath` / override
36
- * `basePath` prefixes, plus — for a localized non-sharedFtl custom
37
- * component — its exact deployed `<ftlDir>/<name>.ftl` file (the shared
38
- * FTL dir as a whole stays unclaimed; sibling files there belong to other
39
- * components). `sharedFtl` bundles are NOT furnace-deployed (apply only
40
- * prunes a dangling per-widget jar.mn line), so they have no deployed copy
41
- * to go stale and get no candidate by design. The storybook stories prefix
42
- * is likewise skipped.
36
+ * `basePath` prefixes, plus, for a localized non-sharedFtl custom
37
+ * component, its exact deployed `<ftlDir>/<name>.ftl` file (the shared
38
+ * FTL dir as a whole stays unclaimed, because sibling files there belong
39
+ * to other components). `sharedFtl` bundles are not furnace-deployed (apply
40
+ * only prunes a dangling per-widget jar.mn line), so they have no deployed
41
+ * copy to go stale and get no candidate by design. The storybook stories
42
+ * prefix is likewise skipped.
43
43
  *
44
44
  * @param projectRoot - Project root directory
45
45
  * @param files - Engine-relative paths the export will capture
@@ -97,7 +97,8 @@ export async function findStaleFurnaceComponentsForFiles(projectRoot, files) {
97
97
  /**
98
98
  * Gate helper for export/re-export: refuses (or, with `allow`, warns) when
99
99
  * any exported file belongs to a furnace component whose source changed
100
- * since the last apply — the export would capture the stale deployed copy.
100
+ * since the last apply, where the export would capture the stale deployed
101
+ * copy.
101
102
  *
102
103
  * @param projectRoot - Project root directory
103
104
  * @param files - Engine-relative paths the export will capture
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Furnace staleness advisory — shared between `fireforge run` and
2
+ * Furnace staleness advisory, shared between `fireforge run` and
3
3
  * `fireforge watch`. Both commands launch the built browser without
4
4
  * first running `furnace apply`, so this helper surfaces a warning when
5
5
  * component files have drifted from the last-applied checksums and the
@@ -11,7 +11,7 @@
11
11
  /**
12
12
  * Emits a warning when any tracked override or custom component has
13
13
  * changed on disk since the last apply. Safe to call from any build-time
14
- * command that does not auto-apply — a failure inside the probe is
14
+ * command that does not auto-apply. A failure inside the probe is
15
15
  * downgraded to a verbose log and the caller continues.
16
16
  */
17
17
  export declare function warnIfFurnaceStale(projectRoot: string): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Furnace staleness advisory — shared between `fireforge run` and
3
+ * Furnace staleness advisory, shared between `fireforge run` and
4
4
  * `fireforge watch`. Both commands launch the built browser without
5
5
  * first running `furnace apply`, so this helper surfaces a warning when
6
6
  * component files have drifted from the last-applied checksums and the
@@ -16,7 +16,7 @@ import { furnaceConfigExists, getFurnacePaths, loadFurnaceConfig, loadFurnaceSta
16
16
  /**
17
17
  * Emits a warning when any tracked override or custom component has
18
18
  * changed on disk since the last apply. Safe to call from any build-time
19
- * command that does not auto-apply — a failure inside the probe is
19
+ * command that does not auto-apply. A failure inside the probe is
20
20
  * downgraded to a verbose log and the caller continues.
21
21
  */
22
22
  export async function warnIfFurnaceStale(projectRoot) {
@@ -4,25 +4,25 @@
4
4
  * There are exactly two sanctioned ways checksums land in
5
5
  * furnace-state.json:
6
6
  *
7
- * 1. The BATCH path inside `applyAllComponents` (persistState: true), which
8
- * replaces `appliedChecksums` wholesale — correct only when the run
9
- * covered every component.
10
- * 2. The per-component MERGE in this module, which rewrites only the
7
+ * 1. The batch path inside `applyAllComponents` (persistState: true), which
8
+ * replaces `appliedChecksums` wholesale. That is correct only when the
9
+ * run covered every component.
10
+ * 2. The per-component merge in this module, which rewrites only the
11
11
  * `<type>/<name>/…` keys of the component that was applied.
12
12
  *
13
- * Every targeted (named) apply/deploy MUST use path 2 with
13
+ * Every targeted (named) apply/deploy must use path 2 with
14
14
  * `persistState: false`. Routing a named run through the batch path wipes
15
15
  * every other component's checksum state: the batch loops filter to the
16
16
  * named component, so the wholesale replace persists a state file containing
17
17
  * only that component. Downstream, `diffDeletedFiles` and
18
18
  * `findOrphanedEngineFiles` both key on `appliedChecksums`, so the wiped
19
- * components' stale engine files become undetectable by apply AND by
19
+ * components' stale engine files become undetectable by apply and by
20
20
  * `furnace validate`.
21
21
  */
22
22
  import { type ApplyAllComponentsResult } from './furnace-apply.js';
23
23
  import { type FurnacePaths } from './furnace-config.js';
24
24
  /**
25
- * Counts applied entries that carry at least one BLOCKING step error
25
+ * Counts applied entries that carry at least one blocking step error
26
26
  * (advisory step errors are warnings and never fail a run).
27
27
  */
28
28
  export declare function getStepFailureCount(result: ApplyAllComponentsResult): number;
@@ -33,7 +33,7 @@ export declare function getStepFailureCount(result: ApplyAllComponentsResult): n
33
33
  * Named runs are atomic: if any apply step fails, the rollback journal
34
34
  * restores the engine to its pre-run state and this helper returns `false`
35
35
  * so state is not touched. The conditions must stay in lock-step with the
36
- * rollback trigger in `applyAllComponents` — both read step errors, so a
36
+ * rollback trigger in `applyAllComponents`: both read step errors, so a
37
37
  * future refactor cannot drift them apart and accidentally persist partial
38
38
  * state.
39
39
  */
@@ -43,7 +43,7 @@ export declare function shouldPersistSingleComponentState(result: ApplyAllCompon
43
43
  *
44
44
  * Guards against future refactors that might reorder or misroute the
45
45
  * applied[] array: a named run persists state under a single component
46
- * name, so the first applied entry MUST be that component. Persisting a
46
+ * name, so the first applied entry must be that component. Persisting a
47
47
  * different component's checksums would cause the next status/apply run to
48
48
  * mis-report health for both components involved.
49
49
  *
@@ -55,7 +55,7 @@ export declare function getPersistableAppliedEntry(commandLabel: string, name: s
55
55
  };
56
56
  /**
57
57
  * Persists checksum state for a successfully applied named component by
58
- * MERGING its `<type>/<name>/…` keys into the existing state — never
58
+ * merging its `<type>/<name>/…` keys into the existing state rather than
59
59
  * replacing the whole map.
60
60
  *
61
61
  * @param projectRoot - Root directory of the project
@@ -5,19 +5,19 @@
5
5
  * There are exactly two sanctioned ways checksums land in
6
6
  * furnace-state.json:
7
7
  *
8
- * 1. The BATCH path inside `applyAllComponents` (persistState: true), which
9
- * replaces `appliedChecksums` wholesale — correct only when the run
10
- * covered every component.
11
- * 2. The per-component MERGE in this module, which rewrites only the
8
+ * 1. The batch path inside `applyAllComponents` (persistState: true), which
9
+ * replaces `appliedChecksums` wholesale. That is correct only when the
10
+ * run covered every component.
11
+ * 2. The per-component merge in this module, which rewrites only the
12
12
  * `<type>/<name>/…` keys of the component that was applied.
13
13
  *
14
- * Every targeted (named) apply/deploy MUST use path 2 with
14
+ * Every targeted (named) apply/deploy must use path 2 with
15
15
  * `persistState: false`. Routing a named run through the batch path wipes
16
16
  * every other component's checksum state: the batch loops filter to the
17
17
  * named component, so the wholesale replace persists a state file containing
18
18
  * only that component. Downstream, `diffDeletedFiles` and
19
19
  * `findOrphanedEngineFiles` both key on `appliedChecksums`, so the wiped
20
- * components' stale engine files become undetectable by apply AND by
20
+ * components' stale engine files become undetectable by apply and by
21
21
  * `furnace validate`.
22
22
  */
23
23
  import { join } from 'node:path';
@@ -26,7 +26,7 @@ import { computeComponentChecksums, prefixChecksums, } from './furnace-apply.js'
26
26
  import { updateFurnaceState } from './furnace-config.js';
27
27
  import { countEntriesWithBlockingStepErrors } from './furnace-step-errors.js';
28
28
  /**
29
- * Counts applied entries that carry at least one BLOCKING step error
29
+ * Counts applied entries that carry at least one blocking step error
30
30
  * (advisory step errors are warnings and never fail a run).
31
31
  */
32
32
  export function getStepFailureCount(result) {
@@ -39,7 +39,7 @@ export function getStepFailureCount(result) {
39
39
  * Named runs are atomic: if any apply step fails, the rollback journal
40
40
  * restores the engine to its pre-run state and this helper returns `false`
41
41
  * so state is not touched. The conditions must stay in lock-step with the
42
- * rollback trigger in `applyAllComponents` — both read step errors, so a
42
+ * rollback trigger in `applyAllComponents`: both read step errors, so a
43
43
  * future refactor cannot drift them apart and accidentally persist partial
44
44
  * state.
45
45
  */
@@ -57,7 +57,7 @@ export function shouldPersistSingleComponentState(result, isDryRun) {
57
57
  *
58
58
  * Guards against future refactors that might reorder or misroute the
59
59
  * applied[] array: a named run persists state under a single component
60
- * name, so the first applied entry MUST be that component. Persisting a
60
+ * name, so the first applied entry must be that component. Persisting a
61
61
  * different component's checksums would cause the next status/apply run to
62
62
  * mis-report health for both components involved.
63
63
  *
@@ -87,7 +87,7 @@ export function getPersistableAppliedEntry(commandLabel, name, appliedEntry) {
87
87
  }
88
88
  /**
89
89
  * Persists checksum state for a successfully applied named component by
90
- * MERGING its `<type>/<name>/…` keys into the existing state — never
90
+ * merging its `<type>/<name>/…` keys into the existing state rather than
91
91
  * replacing the whole map.
92
92
  *
93
93
  * @param projectRoot - Root directory of the project
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Shared predicates over {@link StepError} lists.
3
3
  *
4
- * Step errors come in two severities: BLOCKING (the default — the apply is
5
- * considered failed, triggers rollback and a non-zero exit) and ADVISORY
6
- * (`advisory: true` — reported as a warning, never blocks; used by the
7
- * `.ftl` helpers whose contract is graceful degradation). Every gate that
8
- * decides rollback/failure must count only blocking errors; every reporter
9
- * should still surface advisory ones. This module is a leaf (types-only
4
+ * Step errors come in two severities: blocking (the default: the apply is
5
+ * considered failed, triggers rollback and a non-zero exit) and advisory
6
+ * (`advisory: true`, which is reported as a warning, never blocks, and is
7
+ * used by the `.ftl` helpers whose contract is graceful degradation). Every
8
+ * gate that decides rollback/failure must count only blocking errors, and
9
+ * every reporter should still surface advisory ones. This module is a leaf (types-only
10
10
  * imports) so both `furnace-apply.ts` and its callers can share the
11
11
  * predicates without import cycles.
12
12
  */
@@ -2,12 +2,12 @@
2
2
  /**
3
3
  * Shared predicates over {@link StepError} lists.
4
4
  *
5
- * Step errors come in two severities: BLOCKING (the default — the apply is
6
- * considered failed, triggers rollback and a non-zero exit) and ADVISORY
7
- * (`advisory: true` — reported as a warning, never blocks; used by the
8
- * `.ftl` helpers whose contract is graceful degradation). Every gate that
9
- * decides rollback/failure must count only blocking errors; every reporter
10
- * should still surface advisory ones. This module is a leaf (types-only
5
+ * Step errors come in two severities: blocking (the default: the apply is
6
+ * considered failed, triggers rollback and a non-zero exit) and advisory
7
+ * (`advisory: true`, which is reported as a warning, never blocks, and is
8
+ * used by the `.ftl` helpers whose contract is graceful degradation). Every
9
+ * gate that decides rollback/failure must count only blocking errors, and
10
+ * every reporter should still surface advisory ones. This module is a leaf (types-only
11
11
  * imports) so both `furnace-apply.ts` and its callers can share the
12
12
  * predicates without import cycles.
13
13
  */
@@ -81,7 +81,7 @@ function hasPositiveTabindex(content) {
81
81
  * Collects `[start, end)` spans of `<label>…</label>` elements whose content
82
82
  * includes actual label text. Labels cannot nest per HTML, so the non-greedy
83
83
  * inner match is sound. A span qualifies only when the inner content minus
84
- * tags still contains non-whitespace — an empty or tag-only wrapper provides
84
+ * tags still contains non-whitespace. An empty or tag-only wrapper provides
85
85
  * no accessible name. A `${…}` Lit binding counts as label text: dynamic
86
86
  * (usually localized) text is a legitimate accessible name.
87
87
  */
@@ -132,12 +132,12 @@ function hasTemplateKeyboardHandler(content) {
132
132
  }
133
133
  /**
134
134
  * Native HTML elements that dispatch `click` on Enter and Space via the
135
- * platform. Attaching `@click` to these is NOT a keyboard-a11y bug because
136
- * the browser already handles the keyboard activation path — a duplicate
135
+ * platform. Attaching `@click` to these is not a keyboard-a11y bug, because
136
+ * the browser already handles the keyboard activation path. A duplicate
137
137
  * `@keydown`/`@keypress` handler would usually double-fire the action.
138
138
  *
139
- * `<a>` is accepted only when an `href` attribute is present; bare `<a>` is
140
- * non-interactive and is treated as synthetic.
139
+ * `<a>` is accepted only when an `href` attribute is present. A bare `<a>`
140
+ * is non-interactive and is treated as synthetic.
141
141
  */
142
142
  const NATIVE_CLICK_INTERACTIVE_TAGS = new Set([
143
143
  'button',
@@ -178,7 +178,7 @@ function isKeyboardCoveredByComposition(customConfig) {
178
178
  * *synthetic* interactive element (e.g. `<div @click>`), which lacks native
179
179
  * keyboard activation and therefore needs an explicit key handler for
180
180
  * Enter/Space. Returns false when every `@click` handler sits on a native
181
- * interactive element — those already fire `click` on keyboard activation.
181
+ * interactive element. Those already fire `click` on keyboard activation.
182
182
  */
183
183
  function hasTemplateClickOnSyntheticInteractive(content) {
184
184
  const pattern = /@click\s*=\s*\$\{/g;
@@ -219,7 +219,7 @@ function isClickOnSyntheticInteractive(content, clickIndex) {
219
219
  return true;
220
220
  const tagName = tagMatch[1].toLowerCase();
221
221
  if (tagName === 'a') {
222
- // Bare <a> (no href) is non-interactive; require a keyboard handler.
222
+ // Bare <a> (no href) is non-interactive, so require a keyboard handler.
223
223
  // Look forward from the tag open for the closing `>` and scan the
224
224
  // attribute text in between for an href attribute.
225
225
  const tagEnd = content.indexOf('>', tagOpenIndex);
@@ -236,20 +236,20 @@ const SYMBOL_ONLY_ASCII = '+-*=<>|/\\^~@#&!?%';
236
236
  * Reports whether `text` is decoration (arrows, maths, emoji, bare
237
237
  * punctuation) rather than user-facing prose that needs localizing.
238
238
  *
239
- * The letter/number/mark test comes first and is script-agnostic — a rule
239
+ * The letter/number/mark test comes first and is script-agnostic. A rule
240
240
  * keyed on `code > 0xff` would classify every code point above U+00FF as a
241
241
  * symbol, exempting all CJK, Cyrillic, Greek, Arabic, Hebrew, Devanagari and
242
- * Thai text from a **localization** validator.
242
+ * Thai text from a localization validator.
243
243
  *
244
- * Combining marks are deliberately NOT counted as text: the check is an
244
+ * Combining marks are not counted as text: the check is an
245
245
  * `every()`, so a script's base letters already disqualify the string, and
246
246
  * treating marks as text would flag emoji carrying a variation selector
247
- * (U+FE0F is category Mn — `⚙️` is U+2699 + U+FE0F).
247
+ * (U+FE0F is category Mn, and `⚙️` is U+2699 + U+FE0F).
248
248
  *
249
- * High code points that are not letters — emoji, arrows, CJK punctuation —
249
+ * High code points that are not letters (emoji, arrows, CJK punctuation)
250
250
  * stay exempt, which is the rule's intent.
251
251
  *
252
- * A handful of emoji are ALSO Unicode letters, and the letter test alone
252
+ * A handful of emoji are also Unicode letters, and the letter test alone
253
253
  * gets them wrong: U+2139 (`ℹ`, the base of the common `ℹ️`) is category Ll,
254
254
  * so `\p{L}` would classify an info badge as prose needing localization.
255
255
  * Non-ASCII code points carrying `Emoji` are therefore read as symbols
@@ -335,7 +335,7 @@ function hasFlaggedTextInLitTemplates(content) {
335
335
  return false;
336
336
  }
337
337
  function hasFlaggedTextInDomAssignment(content) {
338
- // `<expr>.textContent = "abc"` and `<expr>.innerHTML = "abc"` — these are
338
+ // `<expr>.textContent = "abc"` and `<expr>.innerHTML = "abc"`: these are
339
339
  // user-visible render paths. Template-literal RHS is excluded (usually
340
340
  // dynamic), matching the `${` guard used elsewhere in this helper.
341
341
  const assignPattern = /\.(?:textContent|innerHTML)\s*=\s*(["'])((?:\\.|(?!\1).)*)\1/g;
@@ -170,7 +170,7 @@ function hasCustomElementDefineCall(mjsContent) {
170
170
  /**
171
171
  * Detects whether the module's `customElements.define(...)` call includes a
172
172
  * literal `extends:` option (third argument). That shape is the marker for
173
- * a customized built-in element — the class extends a specific
173
+ * a customized built-in element: the class extends a specific
174
174
  * `HTMLxxxElement` rather than the autonomous `MozLitElement` path.
175
175
  *
176
176
  * Firefox's own widgets use this pattern for toolkit anchors (e.g.
@@ -193,24 +193,24 @@ function hasCustomElementExtendsOption(mjsContent) {
193
193
  *
194
194
  * Two shapes are accepted:
195
195
  *
196
- * 1. Autonomous custom element: `class X extends MozLitElement` — the
196
+ * 1. Autonomous custom element: `class X extends MozLitElement`, the
197
197
  * default FireForge pattern for fork-authored components and most
198
198
  * toolkit widgets.
199
199
  * 2. Customized built-in: `class X extends HTML<Something>Element` paired
200
200
  * with a `customElements.define(..., ..., { extends: "<tagname>" })`
201
201
  * call. Firefox's `moz-support-link`, `moz-button-group` tabbing
202
- * widgets, and a handful of other toolkit components use this form;
202
+ * widgets, and a handful of other toolkit components use this form.
203
203
  * `furnace override` of those components writes the original source
204
204
  * verbatim and the validator must not reject them.
205
205
  *
206
- * A class that extends a plain `HTMLElement` WITHOUT a `extends:` option
207
- * is still rejected — that's the legitimate `not-moz-lit-element` case
206
+ * A class that extends a plain `HTMLElement` without an `extends:` option
207
+ * is still rejected. That is the legitimate `not-moz-lit-element` case
208
208
  * the rule was originally designed to catch.
209
209
  */
210
210
  function classExtendsMozLitElement(mjsContent) {
211
211
  const hasClassDeclaration = /class\s+\w+\s+extends\s+/.test(mjsContent);
212
212
  if (!hasClassDeclaration) {
213
- // No class declaration — skip this check since the component may use a
213
+ // No class declaration, so skip this check since the component may use a
214
214
  // different pattern (e.g. function-based). Other validators will catch
215
215
  // structural issues.
216
216
  return true;
@@ -218,8 +218,8 @@ function classExtendsMozLitElement(mjsContent) {
218
218
  if (/class\s+\w+\s+extends\s+MozLitElement\b/.test(mjsContent)) {
219
219
  return true;
220
220
  }
221
- // Customized built-in: extend a specific HTMLxxxElement AND the define
222
- // call carries an `extends:` option. Both halves are required — a class
221
+ // Customized built-in: extend a specific HTMLxxxElement and the define
222
+ // call carries an `extends:` option. Both halves are required: a class
223
223
  // that extends `HTMLAnchorElement` without the matching define option is
224
224
  // almost certainly an author mistake, and a define call with `extends:`
225
225
  // without a matching class is unreachable.
@@ -243,7 +243,7 @@ function collectCssVariableReferences(cssContent) {
243
243
  return referencedVariables;
244
244
  }
245
245
  /**
246
- * Collects CSS custom property *declarations* — names appearing on the
246
+ * Collects CSS custom property *declarations*, i.e. names appearing on the
247
247
  * left-hand side of a `--name:` declaration. Used to auto-exempt
248
248
  * component-local runtime variables from the token-prefix check: if the
249
249
  * component both declares and consumes a variable in its own CSS file, it
@@ -44,10 +44,10 @@ export declare function withRegistrationValidationCache<T>(body: () => Promise<T
44
44
  *
45
45
  * Scan set is the union of (a) the configured `tokenHostDocuments` (or
46
46
  * the upstream default when unset) and (b) any `browser/base/content/*.xhtml`
47
- * document that references `tagName` — the auto-detection path catches
47
+ * document that references `tagName`. The auto-detection path catches
48
48
  * forks that mount components from a replacement chrome document without
49
49
  * having configured `tokenHostDocuments`. The warning fires only when
50
- * NONE of the documents in the final scan set link the tokens CSS.
50
+ * none of the documents in the final scan set link the tokens CSS.
51
51
  */
52
52
  export declare function validateTokenLink(componentDir: string, tagName: string, root: string, tokenPrefix?: string, tokenHostDocuments?: string[]): Promise<ValidationIssue[]>;
53
53
  /**