@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
@@ -5,8 +5,8 @@
5
5
  * command.
6
6
  *
7
7
  * Distinct from `patch-lint-checkjs.ts` (patch-hygiene): patchLint is
8
- * scoped, fireforge-controlled, and runs as part of `fireforge lint`;
9
- * this command runs whole projects with user-controlled compiler
8
+ * scoped, fireforge-controlled, and runs as part of `fireforge lint`.
9
+ * This command runs whole projects with user-controlled compiler
10
10
  * options and is intended as a CI gate. The two share the Firefox
11
11
  * globals shim and suppressed-code list (via `typecheck-shim.ts`) so
12
12
  * a file that lints clean cannot fail typecheck for a reason the
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * Loads the TypeScript compiler API via dynamic import so it is only
16
16
  * required when `typecheck.projects` is configured. TypeScript
17
- * remains a dev-dependency — if a user invokes `fireforge typecheck`
17
+ * remains a dev-dependency. If a user invokes `fireforge typecheck`
18
18
  * without installing it, the function returns a clear error pointing
19
19
  * at `npm install typescript`.
20
20
  */
@@ -27,7 +27,7 @@ import { composeShimSource, SHIM_FILENAME, SUPPRESSED_DIAGNOSTIC_CODES, UNDEFINE
27
27
  /**
28
28
  * Sentinel string surfaced as a `TypecheckIssue.message` when the
29
29
  * project's jsconfig sets `checkJs: false`. Exported so tests can
30
- * pin the contract — operators rely on it to spot opted-out projects
30
+ * pin the contract, since operators rely on it to spot opted-out projects
31
31
  * in CI logs.
32
32
  */
33
33
  export const CHECK_JS_DISABLED_NOTICE = 'Project sets "checkJs: false" — skipping (override the jsconfig to enable typecheck).';
@@ -36,20 +36,20 @@ export const CHECK_JS_DISABLED_NOTICE = 'Project sets "checkJs: false" — skipp
36
36
  *
37
37
  * Per-project flow:
38
38
  * 1. Read the jsconfig via the TS API. JSON parse / config-spec
39
- * errors are surfaced as issues, not thrown — a single broken
40
- * project must not abort the rest of the run.
39
+ * errors are surfaced as issues rather than thrown, because a single
40
+ * broken project must not abort the rest of the run.
41
41
  * 2. Compute final compiler options from the user's options. We
42
- * only force `noEmit: true` (this is a typecheck, not a build);
43
- * we honour `strict`, `target`, `lib`, `module`, `paths`,
42
+ * only force `noEmit: true` (this is a typecheck, not a build).
43
+ * We honour `strict`, `target`, `lib`, `module`, `paths`,
44
44
  * `include`, `exclude`. `allowJs` and `checkJs` default to
45
- * `true` only when the user has not set them — if the user set
45
+ * `true` only when the user has not set them. If the user set
46
46
  * `checkJs: false` we treat that as an explicit opt-out and
47
47
  * skip the project with a single notice (see {@link CHECK_JS_DISABLED_NOTICE}).
48
48
  * 3. Inject the synthetic shim (built-in + optional extraShim) as
49
49
  * a virtual root file that the custom CompilerHost serves.
50
- * 4. Build the program; collect semantic, syntactic, options, and
51
- * global diagnostics. The patchLint flow only reads semantic +
52
- * syntactic — fine for hygiene, but a CI gate needs the full
50
+ * 4. Build the program and collect semantic, syntactic, options,
51
+ * and global diagnostics. The patchLint flow only reads semantic +
52
+ * syntactic, which is fine for hygiene, but a CI gate needs the full
53
53
  * set so misconfigured `lib`/`paths` entries fail loudly.
54
54
  * 5. Drop diagnostics whose code is in `SUPPRESSED_DIAGNOSTIC_CODES`
55
55
  * and any diagnostic originating in the synthetic shim itself.
@@ -61,8 +61,8 @@ export const CHECK_JS_DISABLED_NOTICE = 'Project sets "checkJs: false" — skipp
61
61
  * and computing the exit code.
62
62
  */
63
63
  export async function runTypecheck(projectRoot, cfg) {
64
- // Dynamic import — typescript stays a dev dependency. Same pattern
65
- // as `patch-lint-checkjs.ts`; the empty-projects-array case is
64
+ // Dynamic import, so typescript stays a dev dependency. Same pattern
65
+ // as `patch-lint-checkjs.ts`. The empty-projects-array case is
66
66
  // already rejected by config-validate, so we don't gate the import
67
67
  // on `cfg.projects.length`.
68
68
  let ts;
@@ -86,7 +86,7 @@ export async function runTypecheck(projectRoot, cfg) {
86
86
  filesChecked: 0,
87
87
  }));
88
88
  }
89
- // Compose the shim PER project: the effective extraShim is the per-project
89
+ // Compose the shim per project: the effective extraShim is the per-project
90
90
  // override (a path, or `null` to opt out) when present, else the shared
91
91
  // top-level extraShim. A project that narrows `lib`/`types` can opt out of
92
92
  // a Gecko-lib shim hub that another project needs, so the composed shim is
@@ -114,7 +114,7 @@ export async function runTypecheck(projectRoot, cfg) {
114
114
  }
115
115
  catch (err) {
116
116
  // A missing or unreadable shim fails only the project(s) that use it,
117
- // not the whole run — projects with a different (or no) shim still run.
117
+ // not the whole run. Projects with a different (or no) shim still run.
118
118
  const message = toError(err).message;
119
119
  results.push({
120
120
  project: projectPath,
@@ -139,7 +139,7 @@ export async function runTypecheck(projectRoot, cfg) {
139
139
  }
140
140
  /**
141
141
  * Resolves the effective extra shim for a single project: a `projectOverrides`
142
- * entry wins (a string path overrides; `null` opts out → `undefined`), else
142
+ * entry wins (a string path overrides, `null` opts out → `undefined`), else
143
143
  * the shared top-level `extraShim` applies.
144
144
  */
145
145
  function resolveProjectExtraShim(cfg, projectPath) {
@@ -171,7 +171,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
171
171
  };
172
172
  }
173
173
  // 1) Read the JSON config. ts.readConfigFile reports JSON-shape
174
- // errors via the returned diagnostic; missing files fall back to
174
+ // errors via the returned diagnostic. Missing files fall back to
175
175
  // pathExists above, which gives a more directly actionable message.
176
176
  const readResult = ts.readConfigFile(absConfig, (path) => ts.sys.readFile(path));
177
177
  if (readResult.error) {
@@ -183,7 +183,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
183
183
  }
184
184
  // 2) Parse the config content. This is what surfaces config-spec
185
185
  // errors (unknown options, mismatched types in `compilerOptions`,
186
- // bad `include` patterns, etc.) — TS5xxx codes. We surface them
186
+ // bad `include` patterns, etc.), the TS5xxx codes. We surface them
187
187
  // alongside semantic diagnostics so the operator sees the same
188
188
  // output `tsc -p` would have produced.
189
189
  const parsed = ts.parseJsonConfigFileContent(readResult.config, ts.sys, dirname(absConfig),
@@ -196,7 +196,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
196
196
  }
197
197
  // 3) Honour explicit `checkJs: false`. The user has opted out for
198
198
  // an IDE reason (likely "checkJs floods my workflow with non-actionable
199
- // notes"); flipping it on here would surface ~hundreds of issues that
199
+ // notes"). Flipping it on here would surface ~hundreds of issues that
200
200
  // the operator already evaluated and rejected. Surface a single
201
201
  // notice so it is visible in CI logs rather than silently passing.
202
202
  const rawConfig = readResult.config;
@@ -212,10 +212,10 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
212
212
  });
213
213
  return { project: projectPath, issues, filesChecked: parsed.fileNames.length };
214
214
  }
215
- // 4) Compute final compiler options. `noEmit: true` is forced — we
215
+ // 4) Compute final compiler options. `noEmit: true` is forced, so we
216
216
  // never write artifacts. `allowJs` / `checkJs` default to true
217
217
  // *only* when unset (so a user can flip them off without us
218
- // overriding); if the user set `allowJs: false` they're saying
218
+ // overriding). If the user set `allowJs: false` they're saying
219
219
  // "don't even include JS in this typecheck", which is rare but
220
220
  // legitimate (e.g. an isolated `.d.ts`-only project).
221
221
  const options = {
@@ -225,26 +225,26 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
225
225
  checkJs: parsed.options.checkJs ?? true,
226
226
  // No incremental sidecar, ever. A user jsconfig under `engine/` that sets
227
227
  // `incremental` (or names a `tsBuildInfoFile`) would have this command
228
- // drop a `.tsbuildinfo` inside the primary engine checkout — a second
228
+ // drop a `.tsbuildinfo` inside the primary engine checkout: a second
229
229
  // writer that invalidates a concurrent `fireforge test`'s engine
230
230
  // fingerprint. This command emits nothing, so the sidecar buys nothing
231
231
  // either.
232
232
  incremental: false,
233
- // skipLibCheck is not forced; the user owns it via their jsconfig.
233
+ // skipLibCheck is not forced. The user owns it via their jsconfig.
234
234
  };
235
235
  // `exactOptionalPropertyTypes` forbids assigning `undefined` to an
236
236
  // optional `string`, so the sidecar path is dropped rather than unset.
237
237
  delete options.tsBuildInfoFile;
238
238
  // 5) The synthetic shim file. Use a project-rooted path with a
239
239
  // hidden-style prefix so it is unlikely to collide with any real
240
- // file — and never write it to disk. The CompilerHost below serves
240
+ // file, and never write it to disk. The CompilerHost below serves
241
241
  // it from `shimSource` for `fileExists`/`readFile`/`getSourceFile`.
242
242
  const projectDir = dirname(absConfig);
243
- // Forward slashes deliberately: TypeScript normalizes every `fileName` it
243
+ // Forward slashes on purpose: TypeScript normalizes every `fileName` it
244
244
  // hands a CompilerHost, on every platform. A shim path carrying Windows
245
245
  // separators never matches those callbacks, so the shim is not served (its
246
246
  // globals report as undefined identifiers) and its own diagnostics are not
247
- // filtered out below — the pass reports failures that do not exist.
247
+ // filtered out below, so the pass reports failures that do not exist.
248
248
  const shimPath = normalizePathSlashes(resolve(projectDir, `.fireforge-${SHIM_FILENAME}`));
249
249
  const rootFiles = [...parsed.fileNames, shimPath];
250
250
  const defaultHost = ts.createCompilerHost(options);
@@ -269,7 +269,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
269
269
  };
270
270
  const program = ts.createProgram(rootFiles, options, host);
271
271
  // Collect the full diagnostic set. patchLint reads only semantic +
272
- // syntactic — fine for hygiene, wrong for CI: a misconfigured
272
+ // syntactic, which is fine for hygiene but wrong for CI: a misconfigured
273
273
  // `lib: ["es2015"]` or a missing `paths` target should fail
274
274
  // typecheck loudly via getOptionsDiagnostics / getGlobalDiagnostics.
275
275
  const allDiagnostics = [
@@ -281,7 +281,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
281
281
  for (const diag of allDiagnostics) {
282
282
  if (SUPPRESSED_DIAGNOSTIC_CODES.has(diag.code))
283
283
  continue;
284
- // Drop diagnostics that originate in the synthetic shim — operators
284
+ // Drop diagnostics that originate in the synthetic shim. Operators
285
285
  // can't act on them and they would clutter CI logs.
286
286
  if (diag.file?.fileName === shimPath)
287
287
  continue;
@@ -308,7 +308,7 @@ async function runTypecheckForProject(ts, projectRoot, projectPath, shimSource,
308
308
  /**
309
309
  * Converts a TS Diagnostic to a TypecheckIssue. The `fallbackFile`
310
310
  * is used when the diagnostic carries no source file (typical for
311
- * options diagnostics) — typically the absolute jsconfig path or
311
+ * options diagnostics). It is typically the absolute jsconfig path or
312
312
  * the project-relative form for surface-level errors. `project` is
313
313
  * threaded through so the CLI can group issues by project without
314
314
  * a second pass.
@@ -328,7 +328,7 @@ function diagnosticToIssue(ts, diag, fallbackFile, project) {
328
328
  const message = typeof diag.messageText === 'string'
329
329
  ? diag.messageText
330
330
  : ts.flattenDiagnosticMessageText(diag.messageText, '\n');
331
- // Suggestion + Message categories collapse to 'warning'; only
331
+ // Suggestion + Message categories collapse to 'warning'. Only
332
332
  // Error stays an error. This matches what the CLI then displays.
333
333
  const category = diag.category === ts.DiagnosticCategory.Error ? 'error' : 'warning';
334
334
  return {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * browser-init.js — destroy expression in onUnload()/uninit().
2
+ * browser-init.js: destroy expression in onUnload()/uninit().
3
3
  */
4
4
  /**
5
5
  * AST-based implementation: finds onUnload()/uninit() method body and
@@ -16,7 +16,7 @@ export declare function addDestroyAST(content: string, expression: string, marke
16
16
  export declare function legacyAddDestroy(content: string, expression: string, marker?: string): string;
17
17
  /**
18
18
  * Adds a destroy expression to the top of onUnload() or uninit() in
19
- * browser-init.js (LIFO ordering — newest first).
19
+ * browser-init.js (LIFO ordering, newest first).
20
20
  *
21
21
  * @param engineDir - Engine source root
22
22
  * @param expression - The destroy expression (e.g., "MyComponent.destroy()")
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * browser-init.js — destroy expression in onUnload()/uninit().
3
+ * browser-init.js: destroy expression in onUnload()/uninit().
4
4
  */
5
5
  import { join } from 'node:path';
6
6
  import MagicString from 'magic-string';
@@ -36,7 +36,7 @@ export function addDestroyAST(content, expression, marker = DEFAULT_MARKER) {
36
36
  throw new BuildError('Could not find onUnload/uninit method body via AST');
37
37
  }
38
38
  // Insert at top of method body (LIFO ordering)
39
- // `noUncheckedIndexedAccess` makes this `Statement | undefined`; narrow
39
+ // `noUncheckedIndexedAccess` makes this `Statement | undefined`. Narrow
40
40
  // before casting rather than laundering the undefined through the cast.
41
41
  const firstRaw = body.body[0];
42
42
  const firstStmt = firstRaw ? asEstree(firstRaw) : undefined;
@@ -47,7 +47,7 @@ export function addDestroyAST(content, expression, marker = DEFAULT_MARKER) {
47
47
  indent = detectIndent(content, firstStmt.start);
48
48
  }
49
49
  else {
50
- // Empty method body — insert after opening {
50
+ // Empty method body: insert after opening {
51
51
  insertPos = body.start + 1;
52
52
  indent = ' ';
53
53
  }
@@ -95,7 +95,7 @@ export function legacyAddDestroy(content, expression, marker = DEFAULT_MARKER) {
95
95
  }
96
96
  /**
97
97
  * Adds a destroy expression to the top of onUnload() or uninit() in
98
- * browser-init.js (LIFO ordering — newest first).
98
+ * browser-init.js (LIFO ordering, newest first).
99
99
  *
100
100
  * @param engineDir - Engine source root
101
101
  * @param expression - The destroy expression (e.g., "MyComponent.destroy()")
@@ -108,7 +108,7 @@ export async function addDestroyToBrowserInit(engineDir, expression, marker = DE
108
108
  throw new GeneralError(`${BROWSER_INIT_JS} not found in engine`);
109
109
  }
110
110
  const content = await readText(filePath);
111
- // Idempotency check — look for the coerced (call) form because that is
111
+ // Idempotency check: look for the coerced (call) form because that is
112
112
  // what the emitter writes. Matching against the raw input would miss a
113
113
  // bare `X.destroy` invocation that coercion already persisted as
114
114
  // `X.destroy()`.
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Top-level chrome document — DOM fragment insertion.
2
+ * Top-level chrome document: DOM fragment insertion.
3
3
  *
4
4
  * Default target is `browser/base/content/browser.xhtml`. Forks that replace
5
5
  * browser.xhtml with a custom top-level chrome document pass the replacement
6
- * path in via `targetPath`; the insertion logic is shape-agnostic (looks for
6
+ * path in via `targetPath`. The insertion logic is shape-agnostic (looks for
7
7
  * `#include browser-sets.inc`, then falls back to `<html:body>`), so any
8
8
  * browser.xhtml-shaped xhtml works.
9
9
  */
@@ -15,7 +15,7 @@ export declare function addDomFragmentTokenized(content: string, includeDirectiv
15
15
  /**
16
16
  * Dry-run precheck for `addDomFragment`. Reads the resolved chrome document
17
17
  * and verifies it either already contains the `#include` directive (the
18
- * idempotent-skip case) OR offers a locatable insertion point via
18
+ * idempotent-skip case) or offers a locatable insertion point via
19
19
  * {@link addDomFragmentTokenized} / {@link legacyAddDomFragment}. Throws the
20
20
  * same `Could not find insertion point in chrome document` error the real
21
21
  * run would throw when neither condition holds.
@@ -1,10 +1,10 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * Top-level chrome document — DOM fragment insertion.
3
+ * Top-level chrome document: DOM fragment insertion.
4
4
  *
5
5
  * Default target is `browser/base/content/browser.xhtml`. Forks that replace
6
6
  * browser.xhtml with a custom top-level chrome document pass the replacement
7
- * path in via `targetPath`; the insertion logic is shape-agnostic (looks for
7
+ * path in via `targetPath`. The insertion logic is shape-agnostic (looks for
8
8
  * `#include browser-sets.inc`, then falls back to `<html:body>`), so any
9
9
  * browser.xhtml-shaped xhtml works.
10
10
  */
@@ -38,7 +38,7 @@ export function addDomFragmentTokenized(content, includeDirective) {
38
38
  /**
39
39
  * Dry-run precheck for `addDomFragment`. Reads the resolved chrome document
40
40
  * and verifies it either already contains the `#include` directive (the
41
- * idempotent-skip case) OR offers a locatable insertion point via
41
+ * idempotent-skip case) or offers a locatable insertion point via
42
42
  * {@link addDomFragmentTokenized} / {@link legacyAddDomFragment}. Throws the
43
43
  * same `Could not find insertion point in chrome document` error the real
44
44
  * run would throw when neither condition holds.
@@ -51,7 +51,7 @@ export async function probeDomFragmentInsertionPoint(engineDir, domFilePath, tar
51
51
  const targetAbsPath = join(engineDir, targetPath);
52
52
  if (!(await pathExists(targetAbsPath))) {
53
53
  // The callers in `wire.ts` run their own existence probe before
54
- // invoking this helper, but a well-behaved probe is paranoid — if
54
+ // invoking this helper, but a well-behaved probe is careful: if
55
55
  // something changed between the two checks, fail with the same
56
56
  // error the real run would surface.
57
57
  throw new GeneralError(`${targetPath} not found in engine`);
@@ -62,7 +62,7 @@ export async function probeDomFragmentInsertionPoint(engineDir, domFilePath, tar
62
62
  const includeDirective = `#include ${includePath}`;
63
63
  const content = await readText(targetAbsPath);
64
64
  if (new RegExp(`^${escapeRegex(includeDirective)}$`, 'm').test(content)) {
65
- // Already wired — the real run would idempotent-skip here, so
65
+ // Already wired. The real run would idempotent-skip here, so
66
66
  // dry-run is allowed to proceed too.
67
67
  return;
68
68
  }
@@ -93,7 +93,7 @@ export async function addDomFragment(engineDir, domFilePath, targetPath = DEFAUL
93
93
  if (!(await pathExists(targetAbsPath))) {
94
94
  throw new GeneralError(`${targetPath} not found in engine`);
95
95
  }
96
- // Compute include path relative to the target's directory — the `#include`
96
+ // Compute include path relative to the target's directory. The `#include`
97
97
  // directive is resolved by the preprocessor relative to the file that
98
98
  // contains it, so this must track the chrome doc's location, not a
99
99
  // hardcoded `browser/base/content/`.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * browser-init.js — init expression in onLoad().
2
+ * browser-init.js: init expression in onLoad().
3
3
  */
4
4
  /**
5
5
  * AST-based implementation: finds onLoad() method body, locates existing
@@ -8,7 +8,7 @@
8
8
  *
9
9
  * `marker` is prepended (uppercased) to the generated comment line so the
10
10
  * emitted block carries the patch-lint `// <MARKER>:` signature that
11
- * `lintModificationComments` looks for; otherwise the first export after
11
+ * `lintModificationComments` looks for. Otherwise the first export after
12
12
  * `wire` trips `missing-modification-comment` on wire-generated edits.
13
13
  */
14
14
  export declare function addInitAST(content: string, expression: string, after?: string, marker?: string): string;
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * browser-init.js — init expression in onLoad().
3
+ * browser-init.js: init expression in onLoad().
4
4
  */
5
5
  import { join } from 'node:path';
6
6
  import MagicString from 'magic-string';
@@ -22,8 +22,8 @@ const DEFAULT_MARKER = 'FIREFORGE:';
22
22
  * Default insertion point: after the last consecutive fireforge block, or at
23
23
  * the top of the method body when there is none.
24
24
  *
25
- * Both callers below — the `--after`-target-not-found fallthrough and the
26
- * no-`--after` default — must emit identical blocks, since `browser-init.js`
25
+ * Both callers below (the `--after`-target-not-found fallthrough and the
26
+ * no-`--after` default) must emit identical blocks, since `browser-init.js`
27
27
  * is written through both paths. One implementation enforces that invariant
28
28
  * rather than merely tidying.
29
29
  */
@@ -48,14 +48,14 @@ function resolveDefaultInsertion(content, body, fireforgeBlocks) {
48
48
  *
49
49
  * `marker` is prepended (uppercased) to the generated comment line so the
50
50
  * emitted block carries the patch-lint `// <MARKER>:` signature that
51
- * `lintModificationComments` looks for; otherwise the first export after
51
+ * `lintModificationComments` looks for. Otherwise the first export after
52
52
  * `wire` trips `missing-modification-comment` on wire-generated edits.
53
53
  */
54
54
  export function addInitAST(content, expression, after, marker = DEFAULT_MARKER) {
55
55
  const name = extractNameFromExpression(expression);
56
56
  // `validateWireName` accepts both `Foo.bar` and `Foo.bar()` shapes. The
57
57
  // template below interpolates the value verbatim, so a bare property
58
- // path compiles to `Foo.bar;` — a silent no-op, not a lifecycle
58
+ // path compiles to `Foo.bar;`, a silent no-op rather than a lifecycle
59
59
  // invocation. `coerceToCall` normalises to the function-call form so
60
60
  // the emitted block always invokes the hook the operator asked for.
61
61
  const callExpression = coerceToCall(expression);
@@ -116,7 +116,7 @@ export function addInitAST(content, expression, after, marker = DEFAULT_MARKER)
116
116
  */
117
117
  export function legacyAddInit(content, expression, after, marker = DEFAULT_MARKER) {
118
118
  const name = extractNameFromExpression(expression);
119
- // See `addInitAST` for the rationale — the AST and fallback paths must
119
+ // See `addInitAST` for the rationale: the AST and fallback paths must
120
120
  // agree on whether the emitted block is a function call, otherwise
121
121
  // operators would see different behaviour depending on which parser
122
122
  // happened to handle their browser-init.js layout.
@@ -202,7 +202,7 @@ export async function addInitToBrowserInit(engineDir, expression, after, marker
202
202
  throw new GeneralError(`${BROWSER_INIT_JS} not found in engine`);
203
203
  }
204
204
  const content = await readText(filePath);
205
- // Idempotency check — look for the coerced (call) form because that is
205
+ // Idempotency check: look for the coerced (call) form because that is
206
206
  // what the emitter writes. Matching against the raw input would miss a
207
207
  // bare `X.init` invocation that coercion already persisted as `X.init()`.
208
208
  const callExpression = coerceToCall(expression);
@@ -1,5 +1,5 @@
1
1
  /**
2
- * browser-main.js — loadSubScript registration.
2
+ * browser-main.js: loadSubScript registration.
3
3
  */
4
4
  /**
5
5
  * AST-based implementation: finds the last try/catch containing
@@ -1,6 +1,6 @@
1
1
  // SPDX-License-Identifier: EUPL-1.2
2
2
  /**
3
- * browser-main.js — loadSubScript registration.
3
+ * browser-main.js: loadSubScript registration.
4
4
  */
5
5
  import { join } from 'node:path';
6
6
  import MagicString from 'magic-string';
@@ -45,7 +45,7 @@ export function addSubscriptAST(content, name, marker = DEFAULT_MARKER) {
45
45
  indent = detectIndent(content, lastTry.start);
46
46
  }
47
47
  else {
48
- // No existing loadSubScript — insert before last standalone closing brace
48
+ // No existing loadSubScript: insert before last standalone closing brace
49
49
  // Use line-based search to avoid matching braces inside strings/comments
50
50
  const allLines = content.split('\n');
51
51
  let lastBrace = -1;
@@ -132,7 +132,7 @@ export async function addSubscriptToBrowserMain(engineDir, name, marker = DEFAUL
132
132
  throw new GeneralError(`${BROWSER_MAIN_JS} not found in engine`);
133
133
  }
134
134
  const content = await readText(filePath);
135
- // Idempotency check — include closing quote to avoid substring false positives
135
+ // Idempotency check. Include the closing quote to avoid substring false positives
136
136
  if (content.includes(`content/${name}.js"`)) {
137
137
  return false;
138
138
  }
@@ -12,7 +12,7 @@ export declare function validateWireName(value: string, label: string): void;
12
12
  * `Startup.init` or `Startup.init()` and get the same wired output.
13
13
  *
14
14
  * `validateWireName` accepts both shapes, but the generated block
15
- * interpolates the expression verbatim inside `${expression};` — so a bare
15
+ * interpolates the expression verbatim inside `${expression};`, so a bare
16
16
  * `Startup.init` emits `Startup.init;`, a plain property reference that
17
17
  * never invokes the lifecycle hook. The symptom is silent: `wire` reports
18
18
  * success and the browser-init block looks plausible, but the hook never
@@ -27,7 +27,7 @@ export declare function coerceToCall(expression: string): string;
27
27
  * Tracks multi-line block comment state across calls via the `inBlockComment`
28
28
  * parameter, allowing callers to iterate over lines while preserving context.
29
29
  *
30
- * **Regex literal heuristic:** When a `/` follows an operator or keyword-boundary
30
+ * Regex literal heuristic: when a `/` follows an operator or keyword-boundary
31
31
  * character (one of `= ( : , ! | & ? ; ~ ^ { [ \n + - * % < >`), it is treated
32
32
  * as a regex literal opener and characters are skipped until the closing `/`.
33
33
  * This heuristic can misfire on:
@@ -36,7 +36,7 @@ export declare function coerceToCall(expression: string): string;
36
36
  * - Tagged template literals or unusual formatting.
37
37
  *
38
38
  * For Firefox source files this heuristic is sufficient because the AST-based
39
- * parser (via `withParserFallback`) is tried first; this function is only
39
+ * parser (via `withParserFallback`) is tried first. This function is only
40
40
  * used in the regex-based fallback path.
41
41
  *
42
42
  * @param line - A single line of source text
@@ -66,10 +66,10 @@ export declare function tokenizeXhtml(lines: string[]): XhtmlToken[];
66
66
  * advances to the line containing the opening brace.
67
67
  *
68
68
  * By default this helper is tolerant: when no `{` is found anywhere after
69
- * the signature, it still returns `braceIndex: methodLine` — which is the
69
+ * the signature, it still returns `braceIndex: methodLine`, which is the
70
70
  * correct answer when the signature and body brace live on the same line,
71
71
  * but is ambiguous when the method is abstract or truncated. Opt into
72
- * stricter behaviour by passing `requireBrace: true`; the function will
72
+ * stricter behaviour by passing `requireBrace: true`. The function will
73
73
  * return `null` instead of guessing, letting the caller surface a clean
74
74
  * {@link ParserFallbackError} rather than inserting into a wrong offset.
75
75
  *
@@ -86,10 +86,10 @@ export declare function findMethodBraceIndex(lines: string[], pattern: RegExp, o
86
86
  * Starting from `startLine`, walks lines using {@link countBraceDepth}
87
87
  * until the brace depth returns to zero (i.e., the enclosing block closes).
88
88
  *
89
- * Default behaviour is defensive — if the block never closes, the helper
89
+ * Default behaviour is defensive: if the block never closes, the helper
90
90
  * returns `startLine + 1` so a single malformed file does not stop the
91
91
  * entire fallback path. Pass `{ strict: true }` to opt into failing loudly
92
- * with a {@link ParserFallbackError} instead; new callers should prefer
92
+ * with a {@link ParserFallbackError} instead. New callers should prefer
93
93
  * strict mode so silent mis-insertions surface as the fallback refusing
94
94
  * to touch the file.
95
95
  *
@@ -120,7 +120,7 @@ export declare function computeFileBraceBalance(content: string): {
120
120
  * Round-trip guard used after a legacy fallback mutation: if the file's
121
121
  * net brace balance drifts between `before` and `after`, something went
122
122
  * wrong and the fallback is refusing to write a corrupted file. Expects
123
- * the delta to be exactly zero — wire fallbacks only insert whole
123
+ * the delta to be exactly zero, since wire fallbacks only insert whole
124
124
  * try/catch blocks, which always contribute equal opens and closes.
125
125
  *
126
126
  * @throws {@link ParserFallbackError} when the balance delta is non-zero.
@@ -136,7 +136,7 @@ export declare function findNearestTryLine(lines: string[], fromLine: number, lo
136
136
  /**
137
137
  * Scans lines starting from `startLine` for consecutive fireforge try-catch
138
138
  * blocks (identified by init comments or typeof guards) and returns the
139
- * line index just after the last such block — i.e., where a new block should
139
+ * line index just after the last such block, i.e. where a new block should
140
140
  * be inserted.
141
141
  *
142
142
  * Non-fireforge, non-blank, non-comment lines terminate the scan.
@@ -24,7 +24,7 @@ export function validateWireName(value, label) {
24
24
  * `Startup.init` or `Startup.init()` and get the same wired output.
25
25
  *
26
26
  * `validateWireName` accepts both shapes, but the generated block
27
- * interpolates the expression verbatim inside `${expression};` — so a bare
27
+ * interpolates the expression verbatim inside `${expression};`, so a bare
28
28
  * `Startup.init` emits `Startup.init;`, a plain property reference that
29
29
  * never invokes the lifecycle hook. The symptom is silent: `wire` reports
30
30
  * success and the browser-init block looks plausible, but the hook never
@@ -41,7 +41,7 @@ export function coerceToCall(expression) {
41
41
  * Tracks multi-line block comment state across calls via the `inBlockComment`
42
42
  * parameter, allowing callers to iterate over lines while preserving context.
43
43
  *
44
- * **Regex literal heuristic:** When a `/` follows an operator or keyword-boundary
44
+ * Regex literal heuristic: when a `/` follows an operator or keyword-boundary
45
45
  * character (one of `= ( : , ! | & ? ; ~ ^ { [ \n + - * % < >`), it is treated
46
46
  * as a regex literal opener and characters are skipped until the closing `/`.
47
47
  * This heuristic can misfire on:
@@ -50,7 +50,7 @@ export function coerceToCall(expression) {
50
50
  * - Tagged template literals or unusual formatting.
51
51
  *
52
52
  * For Firefox source files this heuristic is sufficient because the AST-based
53
- * parser (via `withParserFallback`) is tried first; this function is only
53
+ * parser (via `withParserFallback`) is tried first. This function is only
54
54
  * used in the regex-based fallback path.
55
55
  *
56
56
  * @param line - A single line of source text
@@ -119,7 +119,7 @@ function isRegexLiteralStart(line, i) {
119
119
  }
120
120
  /**
121
121
  * Scans from the opening `/` of a regex literal to its closing `/`
122
- * (honouring escapes), returning the index of the closing slash — or the
122
+ * (honouring escapes), returning the index of the closing slash, or the
123
123
  * end of the line when the literal never closes.
124
124
  */
125
125
  function scanToRegexLiteralEnd(line, start) {
@@ -159,7 +159,7 @@ export function tokenizeXhtml(lines) {
159
159
  });
160
160
  }
161
161
  // ---------------------------------------------------------------------------
162
- // Legacy (line-based) helpers — shared by fallback implementations in
162
+ // Legacy (line-based) helpers, shared by fallback implementations in
163
163
  // the wire target modules. Extracted to reduce duplication and make the brace-
164
164
  // walking logic independently testable.
165
165
  // ---------------------------------------------------------------------------
@@ -168,10 +168,10 @@ export function tokenizeXhtml(lines) {
168
168
  * advances to the line containing the opening brace.
169
169
  *
170
170
  * By default this helper is tolerant: when no `{` is found anywhere after
171
- * the signature, it still returns `braceIndex: methodLine` — which is the
171
+ * the signature, it still returns `braceIndex: methodLine`, which is the
172
172
  * correct answer when the signature and body brace live on the same line,
173
173
  * but is ambiguous when the method is abstract or truncated. Opt into
174
- * stricter behaviour by passing `requireBrace: true`; the function will
174
+ * stricter behaviour by passing `requireBrace: true`. The function will
175
175
  * return `null` instead of guessing, letting the caller surface a clean
176
176
  * {@link ParserFallbackError} rather than inserting into a wrong offset.
177
177
  *
@@ -194,10 +194,10 @@ export function findMethodBraceIndex(lines, pattern, options) {
194
194
  * Starting from `startLine`, walks lines using {@link countBraceDepth}
195
195
  * until the brace depth returns to zero (i.e., the enclosing block closes).
196
196
  *
197
- * Default behaviour is defensive — if the block never closes, the helper
197
+ * Default behaviour is defensive: if the block never closes, the helper
198
198
  * returns `startLine + 1` so a single malformed file does not stop the
199
199
  * entire fallback path. Pass `{ strict: true }` to opt into failing loudly
200
- * with a {@link ParserFallbackError} instead; new callers should prefer
200
+ * with a {@link ParserFallbackError} instead. New callers should prefer
201
201
  * strict mode so silent mis-insertions surface as the fallback refusing
202
202
  * to touch the file.
203
203
  *
@@ -247,7 +247,7 @@ export function computeFileBraceBalance(content) {
247
247
  * Round-trip guard used after a legacy fallback mutation: if the file's
248
248
  * net brace balance drifts between `before` and `after`, something went
249
249
  * wrong and the fallback is refusing to write a corrupted file. Expects
250
- * the delta to be exactly zero — wire fallbacks only insert whole
250
+ * the delta to be exactly zero, since wire fallbacks only insert whole
251
251
  * try/catch blocks, which always contribute equal opens and closes.
252
252
  *
253
253
  * @throws {@link ParserFallbackError} when the balance delta is non-zero.
@@ -283,7 +283,7 @@ const FIREFORGE_BLOCK_PATTERN = /\/\/\s*.*init\s*—|typeof\s+\w+\s*!==\s*"undef
283
283
  /**
284
284
  * Scans lines starting from `startLine` for consecutive fireforge try-catch
285
285
  * blocks (identified by init comments or typeof guards) and returns the
286
- * line index just after the last such block — i.e., where a new block should
286
+ * line index just after the last such block, i.e. where a new block should
287
287
  * be inserted.
288
288
  *
289
289
  * Non-fireforge, non-blank, non-comment lines terminate the scan.