@hominis/fireforge 0.46.0 → 0.46.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/CHANGELOG.md +381 -498
  2. package/dist/bin/fireforge.d.ts +1 -1
  3. package/dist/bin/fireforge.js +17 -17
  4. package/dist/build-info.json +4 -4
  5. package/dist/src/cli-usage-error.d.ts +9 -9
  6. package/dist/src/cli-usage-error.js +12 -12
  7. package/dist/src/cli.d.ts +3 -2
  8. package/dist/src/cli.js +29 -28
  9. package/dist/src/commands/bootstrap-checks.js +2 -1
  10. package/dist/src/commands/bootstrap.js +2 -2
  11. package/dist/src/commands/build.js +12 -11
  12. package/dist/src/commands/config.js +9 -9
  13. package/dist/src/commands/destructive-decision.d.ts +4 -4
  14. package/dist/src/commands/destructive-decision.js +4 -4
  15. package/dist/src/commands/discard.js +5 -5
  16. package/dist/src/commands/doctor-check-core.d.ts +4 -4
  17. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  18. package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
  19. package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
  20. package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
  21. package/dist/src/commands/doctor-furnace-jar.js +1 -1
  22. package/dist/src/commands/doctor-furnace.js +22 -22
  23. package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
  24. package/dist/src/commands/doctor-orphaned-harness.js +10 -11
  25. package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
  26. package/dist/src/commands/doctor-patch-manifest.js +7 -6
  27. package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
  28. package/dist/src/commands/doctor-source-pin.d.ts +12 -12
  29. package/dist/src/commands/doctor-source-pin.js +14 -14
  30. package/dist/src/commands/doctor-working-tree.d.ts +3 -3
  31. package/dist/src/commands/doctor-working-tree.js +3 -3
  32. package/dist/src/commands/doctor.d.ts +2 -2
  33. package/dist/src/commands/doctor.js +9 -9
  34. package/dist/src/commands/download.js +15 -13
  35. package/dist/src/commands/export-all.js +8 -8
  36. package/dist/src/commands/export-flow.d.ts +5 -5
  37. package/dist/src/commands/export-flow.js +14 -14
  38. package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
  39. package/dist/src/commands/export-placement-conflicts.js +9 -9
  40. package/dist/src/commands/export-placement-gate.d.ts +2 -2
  41. package/dist/src/commands/export-placement-gate.js +5 -5
  42. package/dist/src/commands/export-placement-policy.d.ts +1 -1
  43. package/dist/src/commands/export-placement-policy.js +1 -1
  44. package/dist/src/commands/export-shared.d.ts +10 -10
  45. package/dist/src/commands/export-shared.js +13 -13
  46. package/dist/src/commands/export.js +4 -4
  47. package/dist/src/commands/furnace/apply.js +16 -16
  48. package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
  49. package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
  50. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
  51. package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
  52. package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
  53. package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
  54. package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
  55. package/dist/src/commands/furnace/chrome-doc.js +18 -18
  56. package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
  57. package/dist/src/commands/furnace/create-browser-test.js +4 -4
  58. package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
  59. package/dist/src/commands/furnace/create-dry-run.js +4 -4
  60. package/dist/src/commands/furnace/create-features.d.ts +2 -2
  61. package/dist/src/commands/furnace/create-features.js +2 -2
  62. package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
  63. package/dist/src/commands/furnace/create-mochikit.js +7 -7
  64. package/dist/src/commands/furnace/create-templates.d.ts +14 -14
  65. package/dist/src/commands/furnace/create-templates.js +18 -18
  66. package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
  67. package/dist/src/commands/furnace/create-xpcshell.js +8 -8
  68. package/dist/src/commands/furnace/create.d.ts +1 -1
  69. package/dist/src/commands/furnace/create.js +10 -10
  70. package/dist/src/commands/furnace/deploy.js +4 -4
  71. package/dist/src/commands/furnace/diff.js +7 -7
  72. package/dist/src/commands/furnace/index.js +1 -1
  73. package/dist/src/commands/furnace/init.js +15 -15
  74. package/dist/src/commands/furnace/list.js +2 -2
  75. package/dist/src/commands/furnace/override.d.ts +1 -1
  76. package/dist/src/commands/furnace/override.js +15 -15
  77. package/dist/src/commands/furnace/preview.js +17 -17
  78. package/dist/src/commands/furnace/refresh.js +6 -6
  79. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
  80. package/dist/src/commands/furnace/remove-mutations.js +19 -18
  81. package/dist/src/commands/furnace/remove-state.d.ts +1 -1
  82. package/dist/src/commands/furnace/remove-state.js +1 -1
  83. package/dist/src/commands/furnace/remove.js +2 -2
  84. package/dist/src/commands/furnace/rename-browser-test.js +9 -8
  85. package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
  86. package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
  87. package/dist/src/commands/furnace/rename.js +9 -9
  88. package/dist/src/commands/furnace/scan.js +3 -3
  89. package/dist/src/commands/furnace/status.js +7 -7
  90. package/dist/src/commands/furnace/sync.js +6 -6
  91. package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
  92. package/dist/src/commands/furnace/test-file-name.js +2 -2
  93. package/dist/src/commands/furnace/validate.js +11 -12
  94. package/dist/src/commands/import.js +20 -20
  95. package/dist/src/commands/lint-per-patch.js +8 -8
  96. package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
  97. package/dist/src/commands/lint-per-run-checkjs.js +14 -15
  98. package/dist/src/commands/lint-report.d.ts +3 -3
  99. package/dist/src/commands/lint-report.js +4 -4
  100. package/dist/src/commands/lint.d.ts +3 -3
  101. package/dist/src/commands/lint.js +35 -35
  102. package/dist/src/commands/manifest.d.ts +4 -4
  103. package/dist/src/commands/package.js +2 -2
  104. package/dist/src/commands/patch/compact.d.ts +2 -2
  105. package/dist/src/commands/patch/compact.js +8 -8
  106. package/dist/src/commands/patch/delete.d.ts +1 -1
  107. package/dist/src/commands/patch/delete.js +8 -8
  108. package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
  109. package/dist/src/commands/patch/lint-ignore.js +14 -15
  110. package/dist/src/commands/patch/move-files-create.d.ts +2 -2
  111. package/dist/src/commands/patch/move-files-create.js +5 -5
  112. package/dist/src/commands/patch/move-files-into.d.ts +2 -2
  113. package/dist/src/commands/patch/move-files-into.js +3 -3
  114. package/dist/src/commands/patch/move-files.js +1 -1
  115. package/dist/src/commands/patch/patch-context.d.ts +1 -1
  116. package/dist/src/commands/patch/rename.d.ts +4 -4
  117. package/dist/src/commands/patch/rename.js +8 -8
  118. package/dist/src/commands/patch/reorder.js +10 -10
  119. package/dist/src/commands/patch/split-plan.d.ts +3 -3
  120. package/dist/src/commands/patch/split-plan.js +6 -5
  121. package/dist/src/commands/patch/split.d.ts +2 -2
  122. package/dist/src/commands/patch/split.js +5 -5
  123. package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
  124. package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
  125. package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
  126. package/dist/src/commands/patch/staged-dependency.js +6 -6
  127. package/dist/src/commands/patch/tier.d.ts +2 -2
  128. package/dist/src/commands/patch/tier.js +5 -5
  129. package/dist/src/commands/patch-rename-map.d.ts +1 -1
  130. package/dist/src/commands/patch-rename-map.js +1 -1
  131. package/dist/src/commands/pending-resolution.d.ts +5 -5
  132. package/dist/src/commands/pending-resolution.js +5 -5
  133. package/dist/src/commands/re-export-adjacent.d.ts +3 -3
  134. package/dist/src/commands/re-export-adjacent.js +8 -8
  135. package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
  136. package/dist/src/commands/re-export-bulk-scan.js +17 -17
  137. package/dist/src/commands/re-export-drift.d.ts +10 -10
  138. package/dist/src/commands/re-export-drift.js +29 -29
  139. package/dist/src/commands/re-export-files.js +14 -15
  140. package/dist/src/commands/re-export-lint.d.ts +26 -26
  141. package/dist/src/commands/re-export-lint.js +27 -27
  142. package/dist/src/commands/re-export-options.d.ts +1 -1
  143. package/dist/src/commands/re-export-options.js +1 -1
  144. package/dist/src/commands/re-export-register.d.ts +1 -1
  145. package/dist/src/commands/re-export-register.js +1 -1
  146. package/dist/src/commands/re-export-scan.d.ts +1 -1
  147. package/dist/src/commands/re-export-scan.js +7 -7
  148. package/dist/src/commands/re-export-single.d.ts +1 -1
  149. package/dist/src/commands/re-export-single.js +20 -20
  150. package/dist/src/commands/re-export.js +7 -6
  151. package/dist/src/commands/rebase/abort.js +6 -6
  152. package/dist/src/commands/rebase/continue.js +8 -7
  153. package/dist/src/commands/rebase/index.d.ts +1 -1
  154. package/dist/src/commands/rebase/index.js +3 -3
  155. package/dist/src/commands/rebase/patch-loop.js +18 -17
  156. package/dist/src/commands/register.js +5 -5
  157. package/dist/src/commands/reset.js +1 -1
  158. package/dist/src/commands/resolve.d.ts +2 -2
  159. package/dist/src/commands/resolve.js +3 -3
  160. package/dist/src/commands/run.js +26 -26
  161. package/dist/src/commands/setup-support.js +4 -4
  162. package/dist/src/commands/setup.js +1 -1
  163. package/dist/src/commands/source.js +1 -1
  164. package/dist/src/commands/status-check.d.ts +3 -3
  165. package/dist/src/commands/status-check.js +4 -4
  166. package/dist/src/commands/status-json.d.ts +14 -13
  167. package/dist/src/commands/status-json.js +9 -8
  168. package/dist/src/commands/status-output.d.ts +3 -3
  169. package/dist/src/commands/status-output.js +3 -3
  170. package/dist/src/commands/status-ownership.d.ts +3 -3
  171. package/dist/src/commands/status-ownership.js +3 -3
  172. package/dist/src/commands/status.js +22 -22
  173. package/dist/src/commands/test-build-phase.d.ts +1 -1
  174. package/dist/src/commands/test-build-phase.js +17 -17
  175. package/dist/src/commands/test-diagnose.d.ts +1 -1
  176. package/dist/src/commands/test-diagnose.js +20 -20
  177. package/dist/src/commands/test-modes.d.ts +2 -2
  178. package/dist/src/commands/test-modes.js +4 -4
  179. package/dist/src/commands/test-run.d.ts +11 -11
  180. package/dist/src/commands/test-run.js +15 -15
  181. package/dist/src/commands/test-stale-gate.d.ts +12 -12
  182. package/dist/src/commands/test-stale-gate.js +13 -13
  183. package/dist/src/commands/test-verdict.d.ts +6 -6
  184. package/dist/src/commands/test-verdict.js +11 -11
  185. package/dist/src/commands/test.d.ts +3 -3
  186. package/dist/src/commands/test.js +36 -36
  187. package/dist/src/commands/token-coverage.js +3 -3
  188. package/dist/src/commands/token-list.js +5 -5
  189. package/dist/src/commands/token.js +9 -9
  190. package/dist/src/commands/tree.js +19 -19
  191. package/dist/src/commands/typecheck.d.ts +6 -6
  192. package/dist/src/commands/typecheck.js +7 -7
  193. package/dist/src/commands/verify.d.ts +3 -3
  194. package/dist/src/commands/verify.js +10 -10
  195. package/dist/src/commands/watch.js +11 -11
  196. package/dist/src/commands/wire.js +13 -13
  197. package/dist/src/core/ast-utils.d.ts +7 -7
  198. package/dist/src/core/ast-utils.js +8 -8
  199. package/dist/src/core/branding.d.ts +5 -5
  200. package/dist/src/core/branding.js +3 -3
  201. package/dist/src/core/browser-wire.d.ts +1 -1
  202. package/dist/src/core/browser-wire.js +4 -4
  203. package/dist/src/core/build-audit-platform.d.ts +6 -6
  204. package/dist/src/core/build-audit-platform.js +26 -26
  205. package/dist/src/core/build-audit-registration.d.ts +5 -5
  206. package/dist/src/core/build-audit-registration.js +7 -7
  207. package/dist/src/core/build-audit-resolve.d.ts +5 -5
  208. package/dist/src/core/build-audit-resolve.js +6 -6
  209. package/dist/src/core/build-audit-skip.d.ts +8 -8
  210. package/dist/src/core/build-audit-skip.js +12 -12
  211. package/dist/src/core/build-audit-transforms.d.ts +2 -2
  212. package/dist/src/core/build-audit-transforms.js +3 -3
  213. package/dist/src/core/build-audit.d.ts +8 -8
  214. package/dist/src/core/build-audit.js +39 -37
  215. package/dist/src/core/build-baseline-types.d.ts +19 -18
  216. package/dist/src/core/build-baseline-types.js +1 -1
  217. package/dist/src/core/build-baseline.d.ts +8 -8
  218. package/dist/src/core/build-baseline.js +14 -14
  219. package/dist/src/core/build-jar-escalation.d.ts +8 -8
  220. package/dist/src/core/build-jar-escalation.js +15 -15
  221. package/dist/src/core/build-overwrite-guard.d.ts +4 -4
  222. package/dist/src/core/build-overwrite-guard.js +13 -13
  223. package/dist/src/core/build-prepare.d.ts +4 -4
  224. package/dist/src/core/build-prepare.js +16 -15
  225. package/dist/src/core/config-mutate.js +4 -4
  226. package/dist/src/core/config-state.js +2 -2
  227. package/dist/src/core/config-validate-build-audit.js +3 -3
  228. package/dist/src/core/config-validate-file-size.d.ts +1 -1
  229. package/dist/src/core/config-validate-file-size.js +2 -2
  230. package/dist/src/core/config-validate.js +8 -9
  231. package/dist/src/core/config.d.ts +10 -10
  232. package/dist/src/core/config.js +10 -10
  233. package/dist/src/core/coverage-extend.d.ts +16 -16
  234. package/dist/src/core/coverage-extend.js +16 -16
  235. package/dist/src/core/destructive.d.ts +14 -14
  236. package/dist/src/core/destructive.js +9 -9
  237. package/dist/src/core/diff-hunks.d.ts +2 -2
  238. package/dist/src/core/diff-hunks.js +7 -7
  239. package/dist/src/core/discard-baseline.d.ts +10 -10
  240. package/dist/src/core/discard-baseline.js +15 -16
  241. package/dist/src/core/display-state.d.ts +11 -11
  242. package/dist/src/core/display-state.js +12 -12
  243. package/dist/src/core/engine-changes.d.ts +2 -2
  244. package/dist/src/core/engine-changes.js +2 -2
  245. package/dist/src/core/engine-precondition.d.ts +4 -4
  246. package/dist/src/core/engine-precondition.js +2 -2
  247. package/dist/src/core/engine-session-lock.d.ts +18 -18
  248. package/dist/src/core/engine-session-lock.js +37 -37
  249. package/dist/src/core/export-moved-code-shape.d.ts +7 -7
  250. package/dist/src/core/export-moved-code-shape.js +8 -8
  251. package/dist/src/core/file-lock-owner.d.ts +11 -11
  252. package/dist/src/core/file-lock-owner.js +18 -18
  253. package/dist/src/core/file-lock.d.ts +12 -12
  254. package/dist/src/core/file-lock.js +52 -39
  255. package/dist/src/core/firefox-cache.d.ts +1 -1
  256. package/dist/src/core/firefox-cache.js +10 -10
  257. package/dist/src/core/firefox-download.d.ts +3 -3
  258. package/dist/src/core/firefox-download.js +6 -6
  259. package/dist/src/core/firefox-extract.d.ts +2 -2
  260. package/dist/src/core/firefox-extract.js +13 -13
  261. package/dist/src/core/firefox.d.ts +5 -5
  262. package/dist/src/core/firefox.js +8 -8
  263. package/dist/src/core/furnace-apply-dry-run.js +1 -1
  264. package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
  265. package/dist/src/core/furnace-apply-ftl.js +8 -8
  266. package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
  267. package/dist/src/core/furnace-apply-helpers.js +21 -21
  268. package/dist/src/core/furnace-apply-output.js +1 -1
  269. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
  270. package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
  271. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
  272. package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
  273. package/dist/src/core/furnace-apply.d.ts +3 -3
  274. package/dist/src/core/furnace-apply.js +22 -21
  275. package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
  276. package/dist/src/core/furnace-checksum-utils.js +5 -5
  277. package/dist/src/core/furnace-config-custom.d.ts +1 -1
  278. package/dist/src/core/furnace-config-custom.js +2 -2
  279. package/dist/src/core/furnace-config-order.js +1 -1
  280. package/dist/src/core/furnace-config-tokens.d.ts +3 -3
  281. package/dist/src/core/furnace-config-tokens.js +3 -3
  282. package/dist/src/core/furnace-config-validate.js +2 -2
  283. package/dist/src/core/furnace-config.d.ts +4 -4
  284. package/dist/src/core/furnace-config.js +18 -18
  285. package/dist/src/core/furnace-constants.d.ts +6 -6
  286. package/dist/src/core/furnace-constants.js +6 -6
  287. package/dist/src/core/furnace-css-fragments.d.ts +6 -6
  288. package/dist/src/core/furnace-css-fragments.js +11 -11
  289. package/dist/src/core/furnace-dir-entry.d.ts +1 -1
  290. package/dist/src/core/furnace-dir-entry.js +1 -1
  291. package/dist/src/core/furnace-jsconfig.d.ts +7 -7
  292. package/dist/src/core/furnace-jsconfig.js +22 -20
  293. package/dist/src/core/furnace-operation.d.ts +21 -20
  294. package/dist/src/core/furnace-operation.js +36 -34
  295. package/dist/src/core/furnace-precondition.d.ts +10 -10
  296. package/dist/src/core/furnace-precondition.js +8 -8
  297. package/dist/src/core/furnace-refresh.js +2 -2
  298. package/dist/src/core/furnace-registration-ast.d.ts +2 -2
  299. package/dist/src/core/furnace-registration-ast.js +9 -9
  300. package/dist/src/core/furnace-registration-remove.d.ts +4 -4
  301. package/dist/src/core/furnace-registration-remove.js +6 -6
  302. package/dist/src/core/furnace-registration-validate.d.ts +2 -2
  303. package/dist/src/core/furnace-registration-validate.js +2 -2
  304. package/dist/src/core/furnace-registration.d.ts +5 -5
  305. package/dist/src/core/furnace-registration.js +7 -7
  306. package/dist/src/core/furnace-rollback.d.ts +1 -1
  307. package/dist/src/core/furnace-rollback.js +5 -5
  308. package/dist/src/core/furnace-stale-export.d.ts +17 -16
  309. package/dist/src/core/furnace-stale-export.js +16 -15
  310. package/dist/src/core/furnace-staleness.d.ts +2 -2
  311. package/dist/src/core/furnace-staleness.js +2 -2
  312. package/dist/src/core/furnace-state-persist.d.ts +10 -10
  313. package/dist/src/core/furnace-state-persist.js +10 -10
  314. package/dist/src/core/furnace-step-errors.d.ts +6 -6
  315. package/dist/src/core/furnace-step-errors.js +6 -6
  316. package/dist/src/core/furnace-validate-accessibility.js +14 -14
  317. package/dist/src/core/furnace-validate-compatibility.js +9 -9
  318. package/dist/src/core/furnace-validate-registration.d.ts +2 -2
  319. package/dist/src/core/furnace-validate-registration.js +13 -13
  320. package/dist/src/core/furnace-validate-structure.d.ts +1 -1
  321. package/dist/src/core/furnace-validate-structure.js +4 -4
  322. package/dist/src/core/furnace-validate.js +9 -9
  323. package/dist/src/core/furnace-version-drift.d.ts +5 -5
  324. package/dist/src/core/furnace-version-drift.js +5 -5
  325. package/dist/src/core/git-base.d.ts +4 -4
  326. package/dist/src/core/git-base.js +9 -9
  327. package/dist/src/core/git-diff-new-file.d.ts +4 -4
  328. package/dist/src/core/git-diff-new-file.js +8 -8
  329. package/dist/src/core/git-diff.d.ts +4 -4
  330. package/dist/src/core/git-diff.js +35 -34
  331. package/dist/src/core/git-file-ops.d.ts +6 -6
  332. package/dist/src/core/git-file-ops.js +7 -7
  333. package/dist/src/core/git-readonly-index.d.ts +12 -12
  334. package/dist/src/core/git-readonly-index.js +12 -12
  335. package/dist/src/core/git-status.d.ts +4 -4
  336. package/dist/src/core/git-status.js +4 -4
  337. package/dist/src/core/git.d.ts +3 -3
  338. package/dist/src/core/git.js +14 -14
  339. package/dist/src/core/harness-orphans.d.ts +17 -17
  340. package/dist/src/core/harness-orphans.js +20 -20
  341. package/dist/src/core/history-log.d.ts +3 -3
  342. package/dist/src/core/history-log.js +3 -3
  343. package/dist/src/core/license-headers.d.ts +19 -18
  344. package/dist/src/core/license-headers.js +29 -28
  345. package/dist/src/core/mach-build-artifacts.d.ts +21 -21
  346. package/dist/src/core/mach-build-artifacts.js +23 -23
  347. package/dist/src/core/mach-error-hints.d.ts +5 -5
  348. package/dist/src/core/mach-error-hints.js +13 -13
  349. package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
  350. package/dist/src/core/mach-known-noise-filter.js +53 -50
  351. package/dist/src/core/mach-mozconfig.d.ts +6 -6
  352. package/dist/src/core/mach-mozconfig.js +15 -15
  353. package/dist/src/core/mach-python.d.ts +2 -1
  354. package/dist/src/core/mach-python.js +4 -3
  355. package/dist/src/core/mach-resource-shim.d.ts +12 -12
  356. package/dist/src/core/mach-resource-shim.js +20 -20
  357. package/dist/src/core/mach.d.ts +23 -23
  358. package/dist/src/core/mach.js +36 -36
  359. package/dist/src/core/marionette-port.d.ts +15 -13
  360. package/dist/src/core/marionette-port.js +34 -31
  361. package/dist/src/core/marionette-preflight.d.ts +6 -6
  362. package/dist/src/core/marionette-preflight.js +23 -23
  363. package/dist/src/core/markdown-table.d.ts +9 -9
  364. package/dist/src/core/markdown-table.js +14 -14
  365. package/dist/src/core/mochitest-server-port.d.ts +8 -8
  366. package/dist/src/core/mochitest-server-port.js +14 -14
  367. package/dist/src/core/module-resolution-preflight.d.ts +8 -8
  368. package/dist/src/core/module-resolution-preflight.js +11 -11
  369. package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
  370. package/dist/src/core/moz-manifest-helpers.js +7 -7
  371. package/dist/src/core/moz-manifest-register.d.ts +1 -1
  372. package/dist/src/core/moz-manifest-register.js +2 -2
  373. package/dist/src/core/moz-manifest-rules.js +11 -11
  374. package/dist/src/core/moz-manifest-tokenizers.js +1 -1
  375. package/dist/src/core/ownership-table.d.ts +5 -5
  376. package/dist/src/core/ownership-table.js +7 -7
  377. package/dist/src/core/parser-fallback.d.ts +3 -3
  378. package/dist/src/core/parser-fallback.js +3 -3
  379. package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
  380. package/dist/src/core/patch-apply-fuzz.js +9 -9
  381. package/dist/src/core/patch-apply.d.ts +9 -9
  382. package/dist/src/core/patch-apply.js +30 -30
  383. package/dist/src/core/patch-export-update.d.ts +4 -4
  384. package/dist/src/core/patch-export-update.js +3 -3
  385. package/dist/src/core/patch-export.d.ts +10 -10
  386. package/dist/src/core/patch-export.js +13 -13
  387. package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
  388. package/dist/src/core/patch-identifier-suggest.js +4 -4
  389. package/dist/src/core/patch-lint-binary.d.ts +7 -7
  390. package/dist/src/core/patch-lint-cache.d.ts +2 -2
  391. package/dist/src/core/patch-lint-cache.js +13 -13
  392. package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
  393. package/dist/src/core/patch-lint-checkjs.js +42 -41
  394. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
  395. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
  396. package/dist/src/core/patch-lint-creators.d.ts +3 -3
  397. package/dist/src/core/patch-lint-creators.js +3 -3
  398. package/dist/src/core/patch-lint-cross.d.ts +13 -13
  399. package/dist/src/core/patch-lint-cross.js +21 -21
  400. package/dist/src/core/patch-lint-css.d.ts +1 -1
  401. package/dist/src/core/patch-lint-css.js +5 -5
  402. package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
  403. package/dist/src/core/patch-lint-diff-tag.js +5 -5
  404. package/dist/src/core/patch-lint-diff.d.ts +4 -4
  405. package/dist/src/core/patch-lint-diff.js +4 -4
  406. package/dist/src/core/patch-lint-file-size.d.ts +3 -3
  407. package/dist/src/core/patch-lint-file-size.js +3 -3
  408. package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
  409. package/dist/src/core/patch-lint-forward-registration.js +12 -12
  410. package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
  411. package/dist/src/core/patch-lint-jsdoc.js +11 -11
  412. package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
  413. package/dist/src/core/patch-lint-module-registration.js +1 -1
  414. package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
  415. package/dist/src/core/patch-lint-mozbuild.js +10 -10
  416. package/dist/src/core/patch-lint-observer.d.ts +3 -3
  417. package/dist/src/core/patch-lint-observer.js +7 -7
  418. package/dist/src/core/patch-lint-ownership.d.ts +6 -6
  419. package/dist/src/core/patch-lint-ownership.js +6 -6
  420. package/dist/src/core/patch-lint-prettier.d.ts +6 -6
  421. package/dist/src/core/patch-lint-prettier.js +6 -6
  422. package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
  423. package/dist/src/core/patch-lint-queue-types.js +1 -1
  424. package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
  425. package/dist/src/core/patch-lint-staged-registration.js +6 -6
  426. package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
  427. package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
  428. package/dist/src/core/patch-lint.d.ts +27 -26
  429. package/dist/src/core/patch-lint.js +48 -46
  430. package/dist/src/core/patch-lock.d.ts +1 -1
  431. package/dist/src/core/patch-lock.js +8 -8
  432. package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
  433. package/dist/src/core/patch-manifest-consistency.js +16 -17
  434. package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
  435. package/dist/src/core/patch-manifest-files-affected.js +3 -3
  436. package/dist/src/core/patch-manifest-io.d.ts +14 -14
  437. package/dist/src/core/patch-manifest-io.js +27 -27
  438. package/dist/src/core/patch-manifest-query.d.ts +1 -1
  439. package/dist/src/core/patch-manifest-query.js +4 -4
  440. package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
  441. package/dist/src/core/patch-manifest-resolve.js +7 -7
  442. package/dist/src/core/patch-manifest-validate.js +3 -3
  443. package/dist/src/core/patch-manifest.d.ts +2 -2
  444. package/dist/src/core/patch-manifest.js +2 -2
  445. package/dist/src/core/patch-parse.d.ts +14 -14
  446. package/dist/src/core/patch-parse.js +16 -16
  447. package/dist/src/core/patch-registration-refs.d.ts +4 -4
  448. package/dist/src/core/patch-registration-refs.js +7 -7
  449. package/dist/src/core/patch-transform.d.ts +8 -8
  450. package/dist/src/core/patch-transform.js +13 -13
  451. package/dist/src/core/process-cpu-time.d.ts +1 -1
  452. package/dist/src/core/process-cpu-time.js +5 -5
  453. package/dist/src/core/rebase-session.d.ts +7 -7
  454. package/dist/src/core/rebase-session.js +8 -8
  455. package/dist/src/core/register-result.d.ts +1 -1
  456. package/dist/src/core/register-result.js +1 -1
  457. package/dist/src/core/register-scaffold.d.ts +2 -2
  458. package/dist/src/core/register-scaffold.js +3 -3
  459. package/dist/src/core/register-shared-css.d.ts +3 -3
  460. package/dist/src/core/register-shared-css.js +4 -4
  461. package/dist/src/core/register-xpcshell-test.d.ts +2 -2
  462. package/dist/src/core/register-xpcshell-test.js +2 -2
  463. package/dist/src/core/run-log-redact.d.ts +12 -12
  464. package/dist/src/core/run-log-redact.js +16 -16
  465. package/dist/src/core/run-log.d.ts +9 -9
  466. package/dist/src/core/run-log.js +14 -14
  467. package/dist/src/core/shared-ftl.d.ts +2 -2
  468. package/dist/src/core/shared-ftl.js +6 -6
  469. package/dist/src/core/signal-critical.d.ts +2 -2
  470. package/dist/src/core/signal-critical.js +2 -2
  471. package/dist/src/core/smoke-patterns.d.ts +5 -5
  472. package/dist/src/core/smoke-patterns.js +9 -9
  473. package/dist/src/core/state-file.d.ts +3 -3
  474. package/dist/src/core/status-binary.d.ts +8 -8
  475. package/dist/src/core/status-binary.js +12 -12
  476. package/dist/src/core/status-classify.d.ts +17 -17
  477. package/dist/src/core/status-classify.js +11 -11
  478. package/dist/src/core/test-changed-prefs.d.ts +12 -12
  479. package/dist/src/core/test-changed-prefs.js +15 -15
  480. package/dist/src/core/test-harness-crash.d.ts +39 -39
  481. package/dist/src/core/test-harness-crash.js +67 -67
  482. package/dist/src/core/test-harness-output.d.ts +7 -7
  483. package/dist/src/core/test-harness-output.js +7 -7
  484. package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
  485. package/dist/src/core/test-harness-verdict-notes.js +4 -4
  486. package/dist/src/core/test-path-scope.d.ts +8 -8
  487. package/dist/src/core/test-path-scope.js +11 -11
  488. package/dist/src/core/test-stale-check.d.ts +22 -21
  489. package/dist/src/core/test-stale-check.js +29 -28
  490. package/dist/src/core/test-stale-symlink.d.ts +1 -1
  491. package/dist/src/core/test-stale-symlink.js +1 -1
  492. package/dist/src/core/test-stall-triage.d.ts +9 -9
  493. package/dist/src/core/test-stall-triage.js +22 -22
  494. package/dist/src/core/token-category.d.ts +4 -4
  495. package/dist/src/core/token-category.js +13 -12
  496. package/dist/src/core/token-coverage.js +4 -5
  497. package/dist/src/core/token-dark-mode.d.ts +17 -9
  498. package/dist/src/core/token-dark-mode.js +41 -28
  499. package/dist/src/core/token-docs.d.ts +1 -1
  500. package/dist/src/core/token-inventory.d.ts +6 -6
  501. package/dist/src/core/token-inventory.js +7 -7
  502. package/dist/src/core/token-manager.d.ts +3 -3
  503. package/dist/src/core/token-manager.js +21 -21
  504. package/dist/src/core/token-scaffold.d.ts +4 -4
  505. package/dist/src/core/token-scaffold.js +4 -4
  506. package/dist/src/core/token-variant.d.ts +14 -14
  507. package/dist/src/core/token-variant.js +32 -32
  508. package/dist/src/core/toolchain-preflight.d.ts +15 -15
  509. package/dist/src/core/toolchain-preflight.js +22 -22
  510. package/dist/src/core/tree-cow.d.ts +3 -3
  511. package/dist/src/core/tree-cow.js +6 -6
  512. package/dist/src/core/tree-guard.d.ts +3 -3
  513. package/dist/src/core/tree-guard.js +23 -23
  514. package/dist/src/core/tree-store.d.ts +15 -15
  515. package/dist/src/core/tree-store.js +35 -33
  516. package/dist/src/core/typecheck-shim.d.ts +16 -15
  517. package/dist/src/core/typecheck-shim.js +26 -25
  518. package/dist/src/core/typecheck.d.ts +12 -12
  519. package/dist/src/core/typecheck.js +31 -31
  520. package/dist/src/core/wire-destroy.d.ts +2 -2
  521. package/dist/src/core/wire-destroy.js +5 -5
  522. package/dist/src/core/wire-dom-fragment.d.ts +3 -3
  523. package/dist/src/core/wire-dom-fragment.js +6 -6
  524. package/dist/src/core/wire-init.d.ts +2 -2
  525. package/dist/src/core/wire-init.js +7 -7
  526. package/dist/src/core/wire-subscript.d.ts +1 -1
  527. package/dist/src/core/wire-subscript.js +3 -3
  528. package/dist/src/core/wire-utils.d.ts +9 -9
  529. package/dist/src/core/wire-utils.js +11 -11
  530. package/dist/src/core/xpcshell-appdir.d.ts +20 -20
  531. package/dist/src/core/xpcshell-appdir.js +26 -26
  532. package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
  533. package/dist/src/core/xpcshell-profile-dir.js +7 -7
  534. package/dist/src/errors/base.d.ts +22 -21
  535. package/dist/src/errors/base.js +22 -21
  536. package/dist/src/errors/build.d.ts +6 -6
  537. package/dist/src/errors/build.js +6 -6
  538. package/dist/src/errors/codes.d.ts +10 -10
  539. package/dist/src/errors/codes.js +10 -10
  540. package/dist/src/errors/furnace.d.ts +2 -2
  541. package/dist/src/errors/git.d.ts +1 -1
  542. package/dist/src/errors/git.js +1 -1
  543. package/dist/src/errors/patch.d.ts +3 -3
  544. package/dist/src/errors/patch.js +3 -3
  545. package/dist/src/errors/rebase.d.ts +1 -1
  546. package/dist/src/errors/rebase.js +1 -1
  547. package/dist/src/errors/run.d.ts +1 -1
  548. package/dist/src/errors/run.js +1 -1
  549. package/dist/src/index.d.ts +4 -4
  550. package/dist/src/index.js +4 -4
  551. package/dist/src/types/commands/options.d.ts +86 -85
  552. package/dist/src/types/commands/patches.d.ts +19 -19
  553. package/dist/src/types/commands/project.d.ts +3 -3
  554. package/dist/src/types/config.d.ts +24 -23
  555. package/dist/src/types/furnace.d.ts +17 -17
  556. package/dist/src/types/json.d.ts +3 -3
  557. package/dist/src/types/json.js +2 -2
  558. package/dist/src/types/typecheck.d.ts +3 -3
  559. package/dist/src/utils/assert.d.ts +1 -1
  560. package/dist/src/utils/assert.js +6 -6
  561. package/dist/src/utils/build-info.d.ts +5 -5
  562. package/dist/src/utils/build-info.js +6 -6
  563. package/dist/src/utils/child-env.d.ts +5 -5
  564. package/dist/src/utils/child-env.js +5 -5
  565. package/dist/src/utils/concurrency.d.ts +2 -2
  566. package/dist/src/utils/concurrency.js +2 -2
  567. package/dist/src/utils/elapsed.js +1 -1
  568. package/dist/src/utils/errors.d.ts +8 -8
  569. package/dist/src/utils/errors.js +8 -8
  570. package/dist/src/utils/fs.d.ts +1 -1
  571. package/dist/src/utils/fs.js +8 -8
  572. package/dist/src/utils/line-dispatch.d.ts +3 -3
  573. package/dist/src/utils/line-dispatch.js +5 -5
  574. package/dist/src/utils/logger.d.ts +4 -4
  575. package/dist/src/utils/logger.js +11 -11
  576. package/dist/src/utils/machine-output.js +2 -2
  577. package/dist/src/utils/options.d.ts +13 -13
  578. package/dist/src/utils/options.js +20 -20
  579. package/dist/src/utils/package-root.js +2 -2
  580. package/dist/src/utils/paths.d.ts +4 -4
  581. package/dist/src/utils/paths.js +4 -4
  582. package/dist/src/utils/process-group.d.ts +8 -8
  583. package/dist/src/utils/process-group.js +19 -19
  584. package/dist/src/utils/process.d.ts +34 -33
  585. package/dist/src/utils/process.js +20 -19
  586. package/dist/src/utils/ps-duration.d.ts +4 -4
  587. package/dist/src/utils/ps-duration.js +6 -6
  588. package/dist/src/utils/regex.d.ts +4 -4
  589. package/dist/src/utils/regex.js +7 -7
  590. package/dist/src/utils/sleep.d.ts +7 -7
  591. package/dist/src/utils/sleep.js +7 -7
  592. package/dist/src/utils/stdio-drain.d.ts +7 -7
  593. package/dist/src/utils/stdio-drain.js +8 -8
  594. package/dist/src/utils/validation.d.ts +11 -12
  595. package/dist/src/utils/validation.js +20 -21
  596. package/docs/README.md +2 -2
  597. package/docs/configuration.md +120 -114
  598. package/docs/exit-codes.md +63 -58
  599. package/docs/furnace.md +20 -19
  600. package/docs/lifecycle-invariants.md +412 -251
  601. package/docs/machine-output.md +33 -32
  602. package/docs/patch-workflow.md +48 -45
  603. package/docs/run-logs.md +62 -58
  604. package/docs/testing.md +101 -101
  605. package/docs/verification-trees.md +23 -22
  606. package/package.json +2 -2
@@ -2,21 +2,21 @@
2
2
  * Queue-wide lint for binary patch bodies that cannot recreate their file.
3
3
  *
4
4
  * `git diff` has two ways to render a binary change. `git diff --binary`
5
- * emits a `GIT binary patch` section carrying the literal/delta payload —
6
- * that body can be replayed by `git apply`. Plain `git diff` emits only the
7
- * informational `Binary files a/x and b/x differ`, which records THAT the
8
- * bytes changed and carries none of them.
5
+ * emits a `GIT binary patch` section carrying the literal/delta payload,
6
+ * and that body can be replayed by `git apply`. Plain `git diff` emits only
7
+ * the informational `Binary files a/x and b/x differ`, which records that
8
+ * the bytes changed and carries none of them.
9
9
  *
10
10
  * The stub form is dangerous rather than merely lossy because it still
11
11
  * carries a correct `index <old>..<new>` line. Every identity-shaped check in
12
- * the codebase — worktree classification, foreign-drift detection — keys on
12
+ * the codebase (worktree classification, foreign-drift detection) keys on
13
13
  * that hash, matches it against the live file, and concludes the patch is
14
14
  * backed. So a queue can hold a patch that provably cannot rebuild its own
15
15
  * file while every gate reports green, and the loss surfaces only at the next
16
16
  * clean-room apply. This rule is the one check that reads the body itself and
17
17
  * fails closed, whichever command wrote it.
18
18
  *
19
- * Body-only by design: it needs no engine checkout, so it runs anywhere the
19
+ * Body-only: it needs no engine checkout, so it runs anywhere the
20
20
  * queue context is available and never pulls an engine dependency into the
21
21
  * cross-patch lint graph.
22
22
  */
@@ -25,7 +25,7 @@ import type { PatchQueueBodyEntry, PatchQueueView } from './patch-lint-queue-typ
25
25
  /**
26
26
  * Queue view accepted by {@link lintPatchQueueBinaryBodies}. Described
27
27
  * structurally rather than by importing `PatchQueueContext` from
28
- * `patch-lint-cross.ts`, which imports this module back — the shared leaf
28
+ * `patch-lint-cross.ts`, which imports this module back. The shared leaf
29
29
  * type keeps the dependency edge one-way and `dpdm` clean.
30
30
  */
31
31
  type BinaryBodyQueueContext = PatchQueueView<PatchQueueBodyEntry>;
@@ -53,7 +53,7 @@ export interface CachedPerPatchLint {
53
53
  }
54
54
  /**
55
55
  * Returns the cached lint payload for a patch when the stored key still
56
- * matches AND the entry was computed under the same lint-ignore waiver set.
56
+ * matches and the entry was computed under the same lint-ignore waiver set.
57
57
  * A waiver change makes a replayed verdict actively wrong, so the waiver set
58
58
  * is compared explicitly rather than trusted to the key.
59
59
  */
@@ -61,7 +61,7 @@ export declare function getCachedPerPatchLintIssues(cache: PerPatchLintCacheFile
61
61
  export interface SetCachedPerPatchLintIssuesInput {
62
62
  /** Cache file to mutate in place. */
63
63
  cache: PerPatchLintCacheFile;
64
- /** Patch the payload belongs to; also the cache entry key. */
64
+ /** Patch the payload belongs to, and also the cache entry key. */
65
65
  patchFilename: string;
66
66
  /** Fingerprint the payload is valid for. */
67
67
  key: string;
@@ -9,17 +9,17 @@ import { git } from './git-base.js';
9
9
  import { collectNewFileCreatorsByPath } from './patch-lint.js';
10
10
  // Schema 2: entries additionally carry the lintIgnore-suppressed issues and
11
11
  // the measured non-binary line count, so a warm run can report waived size
12
- // measurements identically to a cold one — a cache hit must never surface
13
- // LESS than a fresh lint.
12
+ // measurements identically to a cold one. A cache hit must never surface
13
+ // less than a fresh lint.
14
14
  // Schema 3: the key additionally content-hashes the
15
15
  // `patchLint.checkJsTestShim` file exactly as `checkJsExtraShim`'s already
16
- // was; without it, editing the test shim in place replays every cached
16
+ // was. Without it, editing the test shim in place replays every cached
17
17
  // verdict.
18
- // Schema 4: each entry RECORDS the lint-ignore waiver set that produced it,
18
+ // Schema 4: each entry records the lint-ignore waiver set that produced it,
19
19
  // and a lookup whose effective waiver set differs is refused even when the
20
20
  // key matches. The key already hashes `patch.lintIgnore`, so this is
21
21
  // belt-and-braces on purpose: a waiver change is the one mutation that makes
22
- // a replayed verdict actively WRONG (an operator writes a waiver, re-runs,
22
+ // a replayed verdict actively wrong (an operator writes a waiver, re-runs,
23
23
  // and is shown the finding they just waived), and the class must not depend
24
24
  // on every future key input staying complete. Bumping the schema also
25
25
  // discards every pre-4 entry, which is itself the cure for a cache that
@@ -96,7 +96,7 @@ function buildOwnershipFingerprint(files, ctx) {
96
96
  export async function buildPerPatchLintCacheKey(input) {
97
97
  // Hash in parallel, then insert in sorted order. The sort is load-bearing:
98
98
  // `stableHash` below serialises this record, so insertion order is part of
99
- // the cache key — assigning as results land would make the key
99
+ // the cache key, and assigning as results land would make the key
100
100
  // nondeterministic.
101
101
  const sortedFiles = [...input.existingFiles].sort((a, b) => a.localeCompare(b));
102
102
  const hashes = await Promise.all(sortedFiles.map((file) => fileHash(join(input.engineDir, file))));
@@ -110,8 +110,8 @@ export async function buildPerPatchLintCacheKey(input) {
110
110
  const shimHashOf = async (shimPath) => shimPath === undefined
111
111
  ? null
112
112
  : { path: shimPath, hash: await fileHash(resolve(input.projectRoot, shimPath)) };
113
- // Both shims feed compiled checkJs programs, so both are content-hashed —
114
- // the config block alone only carries their PATHS, and an in-place edit
113
+ // Both shims feed compiled checkJs programs, so both are content-hashed.
114
+ // The config block alone only carries their paths, and an in-place edit
115
115
  // must invalidate the programs it feeds.
116
116
  const [extraShim, testShim] = await Promise.all([
117
117
  shimHashOf(input.config.patchLint?.checkJsExtraShim),
@@ -121,9 +121,9 @@ export async function buildPerPatchLintCacheKey(input) {
121
121
  cacheSchemaVersion: LINT_CACHE_SCHEMA_VERSION,
122
122
  engineHeadSha: input.engineHeadSha ?? null,
123
123
  lintImplementationVersion: LINT_IMPLEMENTATION_VERSION,
124
- // Deliberately the PLAIN semver, not the +g<sha> build identity:
125
- // identity churns every commit at the same version and
126
- // would invalidate the cache for no correctness gain.
124
+ // The plain semver, not the +g<sha> build identity: that identity
125
+ // churns every commit at the same version and would invalidate the
126
+ // cache for no correctness gain.
127
127
  packageVersion: input.packageVersion ?? getPackageVersion(),
128
128
  patchFile: await fileHash(join(input.patchesDir, input.patch.filename)),
129
129
  patchMetadata: normalizePatchMetadata(input.patch),
@@ -177,7 +177,7 @@ export async function loadPerPatchLintCache(projectRoot) {
177
177
  }
178
178
  catch {
179
179
  // Any unreadable or malformed cache file is treated as a cold cache. The
180
- // cache is a pure optimisation, so discarding it is always safe — the
180
+ // cache is a pure optimisation, so discarding it is always safe. The
181
181
  // alternative is failing lint over a corrupt sidecar.
182
182
  return createEmptyPerPatchLintCache();
183
183
  }
@@ -199,7 +199,7 @@ function normalizeLintIgnoreSet(lintIgnore) {
199
199
  }
200
200
  /**
201
201
  * Returns the cached lint payload for a patch when the stored key still
202
- * matches AND the entry was computed under the same lint-ignore waiver set.
202
+ * matches and the entry was computed under the same lint-ignore waiver set.
203
203
  * A waiver change makes a replayed verdict actively wrong, so the waiver set
204
204
  * is compared explicitly rather than trusted to the key.
205
205
  */
@@ -3,17 +3,17 @@
3
3
  *
4
4
  * Loads the TypeScript compiler API via dynamic import so it is only
5
5
  * required when `patchLint.checkJs` is enabled in `fireforge.json`.
6
- * TypeScript remains a dev-dependency — if a user enables checkJs
6
+ * TypeScript remains a dev-dependency. If a user enables checkJs
7
7
  * without installing it, the pass emits a clear error explaining
8
8
  * how to fix it.
9
9
  *
10
10
  * Separated from `patch-lint.ts` to keep both files within the
11
11
  * project's per-file line budget. The shim itself and the suppressed
12
12
  * diagnostic code list now live in `typecheck-shim.ts` and are shared
13
- * with the whole-project `fireforge typecheck` command — keeping a
13
+ * with the whole-project `fireforge typecheck` command, keeping a
14
14
  * single source of truth for the Firefox-globals coverage.
15
15
  * `patchLint.checkJsStrict` only tightens `strict` / `noImplicitAny`
16
- * and optional allowlisted `checkJsCompilerOptions`; it does not change
16
+ * and optional allowlisted `checkJsCompilerOptions`. It does not change
17
17
  * shim composition or suppressed diagnostic codes.
18
18
  *
19
19
  * Resolution scope vs reporting scope: the TS program is built over a
@@ -26,20 +26,20 @@
26
26
  */
27
27
  import type { PatchLintIssue } from '../types/commands/index.js';
28
28
  import type { PatchLintCheckJsCompilerOptions, PatchLintConfig, PatchLintSeverityGate } from '../types/config.js';
29
- /** How a checkJs run controls reporting and resolution; see module docs. */
29
+ /** How a checkJs run controls reporting and resolution. See module docs. */
30
30
  export interface CheckJsMode {
31
31
  strict: boolean;
32
32
  compilerOptions?: PatchLintCheckJsCompilerOptions;
33
33
  /**
34
34
  * How to report undefined free identifiers (TS2304/TS2552). Default
35
- * 'warning' — see `patchLint.undefinedIdentifiers`.
35
+ * 'warning'. See `patchLint.undefinedIdentifiers`.
36
36
  */
37
37
  undefinedIdentifiers?: PatchLintSeverityGate;
38
38
  }
39
39
  /**
40
40
  * Result of {@link runCheckJsGrouped}: diagnostics attributed to the
41
41
  * patch-owned file they originate in (`byFile`, keyed by repo-relative
42
- * path), plus run-level errors that have no owning file (`global` — e.g.
42
+ * path), plus run-level errors that have no owning file (`global`, e.g.
43
43
  * TypeScript missing or an unreadable extra shim).
44
44
  */
45
45
  export interface GroupedCheckJsResult {
@@ -64,11 +64,11 @@ export interface RunCheckJsGroupedInput {
64
64
  projectRoot?: string;
65
65
  /** Strictness preset plus allowlisted compiler-option overrides. */
66
66
  mode?: CheckJsMode;
67
- /** Optional shim text appended AFTER the consumer shim. */
67
+ /** Optional shim text appended after the consumer shim. */
68
68
  builtinShimSuffix?: string;
69
69
  /**
70
- * When set, only these repo-relative files become program ROOTS;
71
- * resolution (and the host allowlist) still spans all of
70
+ * When set, only these repo-relative files become program roots.
71
+ * Resolution (and the host allowlist) still spans all of
72
72
  * `resolutionOwned`, so a subset root's cross-patch imports type-check
73
73
  * against the real owning sources while unrelated owned files are never
74
74
  * parsed. `.mjs` files are module-scoped, so a root's diagnostics are
@@ -78,22 +78,22 @@ export interface RunCheckJsGroupedInput {
78
78
  rootScope?: ReadonlySet<string>;
79
79
  }
80
80
  /**
81
- * Builds the checkJs program **once** over `resolutionOwned` and returns its
81
+ * Builds the checkJs program once over `resolutionOwned` and returns its
82
82
  * diagnostics grouped by originating file. Callers slice the result by their
83
- * own report scope — per-patch lint attributes each file to its owning patch,
83
+ * own report scope: per-patch lint attributes each file to its owning patch,
84
84
  * export/re-export keeps only the patch under export. Resolution always spans
85
85
  * every file in `resolutionOwned`, so cross-patch `resource:///`/`chrome://`
86
86
  * imports resolve to real sources.
87
87
  *
88
- * @param input - Program inputs; see {@link RunCheckJsGroupedInput}
88
+ * @param input - Program inputs. See {@link RunCheckJsGroupedInput}
89
89
  * @returns Diagnostics grouped per owning file plus run-level errors
90
90
  */
91
91
  export declare function runCheckJsGrouped(input: RunCheckJsGroupedInput): Promise<GroupedCheckJsResult>;
92
92
  /**
93
93
  * Flattens a {@link runCheckJsGrouped} run into a single issue list. When
94
94
  * `reportScope` is supplied, only diagnostics from files in that set are
95
- * returned (resolution still spans every owned file); omitting it reports
96
- * every owned file's diagnostics — the historical whole-set behaviour.
95
+ * returned (resolution still spans every owned file). Omitting it reports
96
+ * every owned file's diagnostics, the historical whole-set behaviour.
97
97
  *
98
98
  * @param repoDir - Absolute engine (repository) directory
99
99
  * @param patchOwnedFiles - Patch-owned `.sys.mjs` paths to resolve against
@@ -120,15 +120,15 @@ export declare function runCheckJs(repoDir: string, patchOwnedFiles: Set<string>
120
120
  export declare function invokePatchLintCheckJs(repoDir: string, patchOwnedFiles: Set<string>, patchLint: PatchLintConfig, projectRoot: string, reportScope?: ReadonlySet<string>): Promise<PatchLintIssue[]>;
121
121
  /**
122
122
  * Runs the checkJs pass over patch-owned test `.js` files (
123
- * `patchLint.checkJsTestFiles`). Each test file gets its OWN small
124
- * program — mochitest scripts share top-level scope only with their
125
- * directory's `head*.js` helpers, so one multi-script program would emit
126
- * false cross-file redeclaration errors — with roots = the test file plus
127
- * any same-directory patch-owned `head*.js`, checked against the built-in
128
- * Firefox shim + {@link TEST_HARNESS_SHIM} + the optional consumer
129
- * `checkJsTestShim`. Only the target file's diagnostics are reported per
130
- * program (head helpers report from their own program), and run-level
131
- * errors are de-duplicated across programs.
123
+ * `patchLint.checkJsTestFiles`). Each test file gets its own small
124
+ * program, with roots = the test file plus any same-directory patch-owned
125
+ * `head*.js`, checked against the built-in Firefox shim +
126
+ * {@link TEST_HARNESS_SHIM} + the optional consumer `checkJsTestShim`.
127
+ * Mochitest scripts share top-level scope only with their directory's
128
+ * `head*.js` helpers, so one multi-script program would emit false
129
+ * cross-file redeclaration errors. Only the target file's diagnostics are
130
+ * reported per program (head helpers report from their own program), and
131
+ * run-level errors are de-duplicated across programs.
132
132
  *
133
133
  * @param repoDir - Absolute engine (repository) directory
134
134
  * @param testFiles - Patch-owned test-script paths (repo-relative)
@@ -139,7 +139,7 @@ export declare function runCheckJsTestFilesGrouped(repoDir: string, testFiles: S
139
139
  /**
140
140
  * Grouped variant of {@link invokePatchLintCheckJs}: builds one queue-wide
141
141
  * checkJs program over `patchOwnedFiles` and returns its findings grouped by
142
- * owning file. The per-patch lint orchestrator calls this **once per run**
142
+ * owning file. The per-patch lint orchestrator calls this once per run
143
143
  * and attributes each file's findings to its owning patch, instead of
144
144
  * rebuilding the same program for every patch in the queue.
145
145
  *
@@ -148,12 +148,12 @@ export declare function runCheckJsTestFilesGrouped(repoDir: string, testFiles: S
148
148
  * @param patchLint - The resolved `patchLint` config block
149
149
  * @param projectRoot - FireForge project root for shim resolution
150
150
  * @param rootScope - Optional subset of files to use as program roots
151
- * (`--patches`); resolution still spans the whole queue
151
+ * (`--patches`). Resolution still spans the whole queue
152
152
  */
153
153
  export declare function invokePatchLintCheckJsGrouped(repoDir: string, patchOwnedFiles: Set<string>, patchLint: PatchLintConfig, projectRoot: string, rootScope?: ReadonlySet<string>): Promise<GroupedCheckJsResult>;
154
154
  /**
155
155
  * Cheap probe reproducing the only run-level ("global") checkJs findings the
156
- * build path can produce — a missing `typescript` package and an unreadable
156
+ * build path can produce: a missing `typescript` package and an unreadable
157
157
  * consumer shim (`checkJsExtraShim`, and `checkJsTestShim` when
158
158
  * `checkJsTestFiles` is on). The built program itself never contributes
159
159
  * globals (see {@link runCheckJsGrouped}), so a warm all-cache-hit run can
@@ -4,17 +4,17 @@
4
4
  *
5
5
  * Loads the TypeScript compiler API via dynamic import so it is only
6
6
  * required when `patchLint.checkJs` is enabled in `fireforge.json`.
7
- * TypeScript remains a dev-dependency — if a user enables checkJs
7
+ * TypeScript remains a dev-dependency. If a user enables checkJs
8
8
  * without installing it, the pass emits a clear error explaining
9
9
  * how to fix it.
10
10
  *
11
11
  * Separated from `patch-lint.ts` to keep both files within the
12
12
  * project's per-file line budget. The shim itself and the suppressed
13
13
  * diagnostic code list now live in `typecheck-shim.ts` and are shared
14
- * with the whole-project `fireforge typecheck` command — keeping a
14
+ * with the whole-project `fireforge typecheck` command, keeping a
15
15
  * single source of truth for the Firefox-globals coverage.
16
16
  * `patchLint.checkJsStrict` only tightens `strict` / `noImplicitAny`
17
- * and optional allowlisted `checkJsCompilerOptions`; it does not change
17
+ * and optional allowlisted `checkJsCompilerOptions`. It does not change
18
18
  * shim composition or suppressed diagnostic codes.
19
19
  *
20
20
  * Resolution scope vs reporting scope: the TS program is built over a
@@ -39,11 +39,12 @@ import { composeShimSource, SHIM_FILENAME, SUPPRESSED_DIAGNOSTIC_CODES, TEST_HAR
39
39
  * Converts a native path into the form TypeScript uses for `fileName`.
40
40
  *
41
41
  * TypeScript normalizes every path it hands a `CompilerHost` to forward
42
- * slashes on ALL platforms, while `resolve()` here yields the platform
42
+ * slashes on all platforms, while `resolve()` here yields the platform
43
43
  * separator. On Windows that mismatch made every `ownedAbsolute.has(fileName)`
44
44
  * and `relByAbsolute.get(fileName)` lookup miss, so the host served an empty
45
- * source file for each owned file and the whole pass reported zero findings —
46
- * silently, because "no diagnostics" is indistinguishable from "clean code".
45
+ * source file for each owned file and the whole pass reported zero findings.
46
+ * It did so silently, because "no diagnostics" is indistinguishable from
47
+ * "clean code".
47
48
  * Every path that crosses the TS boundary goes through here.
48
49
  */
49
50
  function toTsPath(path) {
@@ -55,8 +56,8 @@ function toTsPath(path) {
55
56
  * segment uniquely matches an owned file. URL specifiers
56
57
  * (chrome://browser/content/Foo.sys.mjs, resource:///modules/Foo.sys.mjs)
57
58
  * are matched by basename, with a `.mjs` → `.sys.mjs` fallback for deployed
58
- * widget URLs. Ambiguous or unknown basenames stay unresolved — loose
59
- * wildcard typing beats guessing the wrong module — and relative specifiers
59
+ * widget URLs. Ambiguous or unknown basenames stay unresolved (loose
60
+ * wildcard typing beats guessing the wrong module), and relative specifiers
60
61
  * are left to fail resolution (the relative-import lint rule bans them).
61
62
  */
62
63
  function createOwnedSpecifierResolver(ts, ownedAbsolute) {
@@ -105,8 +106,8 @@ function extensionForFile(ts, file) {
105
106
  }
106
107
  /**
107
108
  * Builds a resolver for a reviewed `paths` mapping (route 2 of the
108
- * cross-patch resolution work). Each pattern may contain a single `*`;
109
- * matching targets are resolved relative to `baseDir` (the engine dir, like
109
+ * cross-patch resolution work). Each pattern may contain a single `*`.
110
+ * Matching targets are resolved relative to `baseDir` (the engine dir, like
110
111
  * the rest of `patchLint` which is engine-relative). Resolved files are
111
112
  * recorded via `onResolved` so the compiler host knows to read them from
112
113
  * disk rather than returning empty content. No `baseUrl` is set, so this is
@@ -134,7 +135,7 @@ function createPathsResolver(ts, paths, baseDir, fileExists, onResolved) {
134
135
  }
135
136
  for (const target of targets) {
136
137
  // A `paths` target carries at most one `*`, and TypeScript substitutes
137
- // that one wildcard — spelled as index arithmetic (mirroring the
138
+ // that one wildcard. It is spelled as index arithmetic (mirroring the
138
139
  // prefix/suffix split on the pattern side above) rather than
139
140
  // `replace('*', …)`, whose first-occurrence-only behaviour reads as an
140
141
  // incomplete rewrite (CodeQL `js/incomplete-sanitization`).
@@ -155,14 +156,14 @@ function createPathsResolver(ts, paths, baseDir, fileExists, onResolved) {
155
156
  };
156
157
  }
157
158
  /**
158
- * Builds the checkJs program **once** over `resolutionOwned` and returns its
159
+ * Builds the checkJs program once over `resolutionOwned` and returns its
159
160
  * diagnostics grouped by originating file. Callers slice the result by their
160
- * own report scope — per-patch lint attributes each file to its owning patch,
161
+ * own report scope: per-patch lint attributes each file to its owning patch,
161
162
  * export/re-export keeps only the patch under export. Resolution always spans
162
163
  * every file in `resolutionOwned`, so cross-patch `resource:///`/`chrome://`
163
164
  * imports resolve to real sources.
164
165
  *
165
- * @param input - Program inputs; see {@link RunCheckJsGroupedInput}
166
+ * @param input - Program inputs. See {@link RunCheckJsGroupedInput}
166
167
  * @returns Diagnostics grouped per owning file plus run-level errors
167
168
  */
168
169
  export async function runCheckJsGrouped(input) {
@@ -170,7 +171,7 @@ export async function runCheckJsGrouped(input) {
170
171
  const empty = { byFile: new Map(), global: [] };
171
172
  if (resolutionOwned.size === 0)
172
173
  return empty;
173
- // Dynamic import — typescript stays as a dev dependency
174
+ // Dynamic import: typescript stays as a dev dependency
174
175
  let ts;
175
176
  try {
176
177
  ts = await import('typescript');
@@ -191,7 +192,7 @@ export async function runCheckJsGrouped(input) {
191
192
  }
192
193
  // Resolve absolute paths for root files, filtering to files that exist.
193
194
  // Under a rootScope, non-scoped owned files stay resolvable (host
194
- // allowlist + relByAbsolute) but are not program roots — they are only
195
+ // allowlist + relByAbsolute) but are not program roots. They are only
195
196
  // parsed if a scoped root's import closure reaches them.
196
197
  const rootFiles = [];
197
198
  const ownedAbsolute = new Set();
@@ -208,16 +209,16 @@ export async function runCheckJsGrouped(input) {
208
209
  if (rootFiles.length === 0)
209
210
  return empty;
210
211
  // Compose the shim. `extraShimPath` is project-relative (validated
211
- // by config-validate); resolve it against `projectRoot`. When the
212
- // caller passes neither, fall back to `repoDir` — the only way the
212
+ // by config-validate). Resolve it against `projectRoot`. When the
213
+ // caller passes neither, fall back to `repoDir`. The only way the
213
214
  // shim path is ever read in that case is when extraShimPath is
214
215
  // also undefined, so the resolution target is irrelevant.
215
216
  let shimSource;
216
217
  try {
217
218
  const composed = await composeShimSource(input.projectRoot ?? repoDir, extraShimPath);
218
219
  // The suffix (e.g. the loose test-harness baseline) goes
219
- // AFTER the consumer's extra shim: TypeScript resolves conflicting
220
- // `declare var` redeclarations to the FIRST declaration, so a typed
220
+ // after the consumer's extra shim: TypeScript resolves conflicting
221
+ // `declare var` redeclarations to the first declaration, so a typed
221
222
  // consumer declaration must precede the loose fallback to win.
222
223
  shimSource = input.builtinShimSuffix
223
224
  ? `${composed.source}\n${input.builtinShimSuffix}`
@@ -245,12 +246,12 @@ export async function runCheckJsGrouped(input) {
245
246
  const strictness = strict
246
247
  ? { strict: true, noImplicitAny: true }
247
248
  : {
248
- // Loose default — implicit `any` is allowed unless `patchLint.checkJsStrict`.
249
+ // Loose default: implicit `any` is allowed unless `patchLint.checkJsStrict`.
249
250
  strict: false,
250
251
  noImplicitAny: false,
251
252
  };
252
- // Allowlisted overrides. Booleans merge directly; a reviewed `paths`
253
- // mapping is applied to the compiler options AND wired into the host
253
+ // Allowlisted overrides. Booleans merge directly. A reviewed `paths`
254
+ // mapping is applied to the compiler options and wired into the host
254
255
  // resolver below so patch-owned modules can be typed from their real
255
256
  // sources without a hand-generated ambient stub shim.
256
257
  const overrides = {};
@@ -281,10 +282,10 @@ export async function runCheckJsGrouped(input) {
281
282
  // Module resolution is host-controlled (see resolveOwnedSpecifier
282
283
  // below): imports that match a patch-owned file resolve to the real
283
284
  // source so JSDoc type-guard predicates and @template generics
284
- // survive the module boundary; everything else deliberately fails
285
+ // survive the module boundary. Everything else is left to fail
285
286
  // resolution, falling back to the chrome:*/resource:* ambient
286
287
  // wildcards plus the suppressed "cannot find module" codes. The
287
- // host resolver is authoritative — TS never crawls the Firefox
288
+ // host resolver is authoritative: TS never crawls the Firefox
288
289
  // tree looking for upstream modules.
289
290
  ...strictness,
290
291
  ...overrides,
@@ -294,7 +295,7 @@ export async function runCheckJsGrouped(input) {
294
295
  // the shim for the shim path, and returns empty content for
295
296
  // anything else to avoid reading the full Firefox tree.
296
297
  const defaultHost = ts.createCompilerHost(options);
297
- // Files pulled in via a reviewed `paths` mapping — outside the owned set
298
+ // Files pulled in via a reviewed `paths` mapping: outside the owned set
298
299
  // but read from disk so the resolver's targets actually type-check.
299
300
  const pathsResolved = new Set();
300
301
  const resolveViaPaths = pathsMapping
@@ -348,7 +349,7 @@ export async function runCheckJsGrouped(input) {
348
349
  * Groups TS diagnostics by the patch-owned file they originate in,
349
350
  * suppressing module-resolution / unknown-name noise inherent to checking
350
351
  * Firefox JS outside Mozilla's build system. Diagnostics from `paths`-resolved
351
- * or shim files are dropped — only owned files (in `relByAbsolute`) carry
352
+ * or shim files are dropped. Only owned files (in `relByAbsolute`) carry
352
353
  * findings.
353
354
  */
354
355
  function groupOwnedDiagnostics(ts, diagnostics, relByAbsolute, undefinedIdentifiers = 'warning') {
@@ -393,8 +394,8 @@ function groupOwnedDiagnostics(ts, diagnostics, relByAbsolute, undefinedIdentifi
393
394
  /**
394
395
  * Flattens a {@link runCheckJsGrouped} run into a single issue list. When
395
396
  * `reportScope` is supplied, only diagnostics from files in that set are
396
- * returned (resolution still spans every owned file); omitting it reports
397
- * every owned file's diagnostics — the historical whole-set behaviour.
397
+ * returned (resolution still spans every owned file). Omitting it reports
398
+ * every owned file's diagnostics, the historical whole-set behaviour.
398
399
  *
399
400
  * @param repoDir - Absolute engine (repository) directory
400
401
  * @param patchOwnedFiles - Patch-owned `.sys.mjs` paths to resolve against
@@ -438,15 +439,15 @@ export async function invokePatchLintCheckJs(repoDir, patchOwnedFiles, patchLint
438
439
  }
439
440
  /**
440
441
  * Runs the checkJs pass over patch-owned test `.js` files (
441
- * `patchLint.checkJsTestFiles`). Each test file gets its OWN small
442
- * program — mochitest scripts share top-level scope only with their
443
- * directory's `head*.js` helpers, so one multi-script program would emit
444
- * false cross-file redeclaration errors — with roots = the test file plus
445
- * any same-directory patch-owned `head*.js`, checked against the built-in
446
- * Firefox shim + {@link TEST_HARNESS_SHIM} + the optional consumer
447
- * `checkJsTestShim`. Only the target file's diagnostics are reported per
448
- * program (head helpers report from their own program), and run-level
449
- * errors are de-duplicated across programs.
442
+ * `patchLint.checkJsTestFiles`). Each test file gets its own small
443
+ * program, with roots = the test file plus any same-directory patch-owned
444
+ * `head*.js`, checked against the built-in Firefox shim +
445
+ * {@link TEST_HARNESS_SHIM} + the optional consumer `checkJsTestShim`.
446
+ * Mochitest scripts share top-level scope only with their directory's
447
+ * `head*.js` helpers, so one multi-script program would emit false
448
+ * cross-file redeclaration errors. Only the target file's diagnostics are
449
+ * reported per program (head helpers report from their own program), and
450
+ * run-level errors are de-duplicated across programs.
450
451
  *
451
452
  * @param repoDir - Absolute engine (repository) directory
452
453
  * @param testFiles - Patch-owned test-script paths (repo-relative)
@@ -519,7 +520,7 @@ function modeFromPatchLintConfig(patchLint) {
519
520
  /**
520
521
  * Grouped variant of {@link invokePatchLintCheckJs}: builds one queue-wide
521
522
  * checkJs program over `patchOwnedFiles` and returns its findings grouped by
522
- * owning file. The per-patch lint orchestrator calls this **once per run**
523
+ * owning file. The per-patch lint orchestrator calls this once per run
523
524
  * and attributes each file's findings to its owning patch, instead of
524
525
  * rebuilding the same program for every patch in the queue.
525
526
  *
@@ -528,7 +529,7 @@ function modeFromPatchLintConfig(patchLint) {
528
529
  * @param patchLint - The resolved `patchLint` config block
529
530
  * @param projectRoot - FireForge project root for shim resolution
530
531
  * @param rootScope - Optional subset of files to use as program roots
531
- * (`--patches`); resolution still spans the whole queue
532
+ * (`--patches`). Resolution still spans the whole queue
532
533
  */
533
534
  export async function invokePatchLintCheckJsGrouped(repoDir, patchOwnedFiles, patchLint, projectRoot, rootScope) {
534
535
  return runCheckJsGrouped({
@@ -544,7 +545,7 @@ export async function invokePatchLintCheckJsGrouped(repoDir, patchOwnedFiles, pa
544
545
  }
545
546
  /**
546
547
  * Cheap probe reproducing the only run-level ("global") checkJs findings the
547
- * build path can produce — a missing `typescript` package and an unreadable
548
+ * build path can produce: a missing `typescript` package and an unreadable
548
549
  * consumer shim (`checkJsExtraShim`, and `checkJsTestShim` when
549
550
  * `checkJsTestFiles` is on). The built program itself never contributes
550
551
  * globals (see {@link runCheckJsGrouped}), so a warm all-cache-hit run can
@@ -4,30 +4,29 @@
4
4
  * `.js` files loaded via `Services.scriptloader.loadSubScript`).
5
5
  *
6
6
  * Why a separate module from {@link ./patch-lint-jsdoc.ts}: chrome
7
- * subscripts are NOT ES modules. They are parsed as scripts (no static
7
+ * subscripts are not ES modules. They are parsed as scripts (no static
8
8
  * `export`) and their top-level `class`/`function` declarations are
9
9
  * exposed to the loading window as globals rather than declared exports.
10
10
  * The export-walker in `patch-lint-jsdoc.ts` would never visit them.
11
11
  *
12
- * The rule shape — "every top-level class needs a JSDoc, every method
13
- * needs one when `chromeScriptJsDoc` is at `warning`/`error`, every
14
- * top-level function needs a matching @param/@returns block" — is
15
- * identical to the `.sys.mjs` rule once you remove the `export` framing,
16
- * so the per-declaration validators are reused verbatim from the export
17
- * module.
12
+ * The rule shape is identical to the `.sys.mjs` rule once you remove the
13
+ * `export` framing: every top-level class needs a JSDoc, every method
14
+ * needs one when `chromeScriptJsDoc` is at `warning`/`error`, and every
15
+ * top-level function needs a matching @param/@returns block. So the
16
+ * per-declaration validators are reused verbatim from the export module.
18
17
  */
19
18
  import type { PatchLintIssue } from '../types/commands/index.js';
20
19
  import type { PatchLintSeverityGate } from '../types/config.js';
21
20
  import type { JsDocIssue, ValidateExportJsDocOptions } from './patch-lint-jsdoc.js';
22
21
  /**
23
22
  * Validates JSDoc on top-level declarations in a chrome-subscript `.js`
24
- * source file. A parse failure returns an empty issue list — chrome
23
+ * source file. A parse failure returns an empty issue list. Chrome
25
24
  * subscripts that use module-only syntax (rare) silently disable the
26
25
  * rule rather than emitting confusing parse-error issues.
27
26
  *
28
27
  * @param source - File content
29
28
  * @param options - Optional gates (e.g. class-method JSDoc severity).
30
- * `classMethodMode` defaults to `'off'` — the orchestrator passes the
29
+ * `classMethodMode` defaults to `'off'`. The orchestrator passes the
31
30
  * `chromeScriptJsDoc` severity here so a single knob controls both
32
31
  * class-level and method-level enforcement.
33
32
  * @returns Array of JSDoc issues found
@@ -5,29 +5,28 @@
5
5
  * `.js` files loaded via `Services.scriptloader.loadSubScript`).
6
6
  *
7
7
  * Why a separate module from {@link ./patch-lint-jsdoc.ts}: chrome
8
- * subscripts are NOT ES modules. They are parsed as scripts (no static
8
+ * subscripts are not ES modules. They are parsed as scripts (no static
9
9
  * `export`) and their top-level `class`/`function` declarations are
10
10
  * exposed to the loading window as globals rather than declared exports.
11
11
  * The export-walker in `patch-lint-jsdoc.ts` would never visit them.
12
12
  *
13
- * The rule shape — "every top-level class needs a JSDoc, every method
14
- * needs one when `chromeScriptJsDoc` is at `warning`/`error`, every
15
- * top-level function needs a matching @param/@returns block" — is
16
- * identical to the `.sys.mjs` rule once you remove the `export` framing,
17
- * so the per-declaration validators are reused verbatim from the export
18
- * module.
13
+ * The rule shape is identical to the `.sys.mjs` rule once you remove the
14
+ * `export` framing: every top-level class needs a JSDoc, every method
15
+ * needs one when `chromeScriptJsDoc` is at `warning`/`error`, and every
16
+ * top-level function needs a matching @param/@returns block. So the
17
+ * per-declaration validators are reused verbatim from the export module.
19
18
  */
20
19
  import { parseScript } from './ast-utils.js';
21
20
  import { validateClassDecl, validateClassMethods, validateFunctionDecl, } from './patch-lint-jsdoc.js';
22
21
  /**
23
22
  * Validates JSDoc on top-level declarations in a chrome-subscript `.js`
24
- * source file. A parse failure returns an empty issue list — chrome
23
+ * source file. A parse failure returns an empty issue list. Chrome
25
24
  * subscripts that use module-only syntax (rare) silently disable the
26
25
  * rule rather than emitting confusing parse-error issues.
27
26
  *
28
27
  * @param source - File content
29
28
  * @param options - Optional gates (e.g. class-method JSDoc severity).
30
- * `classMethodMode` defaults to `'off'` — the orchestrator passes the
29
+ * `classMethodMode` defaults to `'off'`. The orchestrator passes the
31
30
  * `chromeScriptJsDoc` severity here so a single knob controls both
32
31
  * class-level and method-level enforcement.
33
32
  * @returns Array of JSDoc issues found
@@ -43,7 +42,7 @@ export function validateChromeScriptJsDoc(source, options) {
43
42
  // Deliberate carve-out, unlike the `.sys.mjs` walker in
44
43
  // `patch-lint-jsdoc.ts` (which reports a parse failure as an issue).
45
44
  // `parseScript` rejects `import`/`export`, so a chrome subscript that was
46
- // misclassified as a `.js` file — or that mistakenly uses module syntax —
45
+ // misclassified as a `.js` file (or that mistakenly uses module syntax)
47
46
  // would emit a pseudo-issue for every rule here. The orchestrator already
48
47
  // runs the export walker on `.sys.mjs` separately, so silently declining
49
48
  // to lint an unparseable script is the correct degradation for this file
@@ -63,7 +62,7 @@ export function validateChromeScriptJsDoc(source, options) {
63
62
  }
64
63
  }
65
64
  // Top-level `var Foo = class {...}` / `let Foo = function() {...}`
66
- // patterns are intentionally out of scope for V1 — chrome subscripts
65
+ // patterns are out of scope for V1: chrome subscripts
67
66
  // overwhelmingly use bare `class`/`function` declarations and the
68
67
  // variable-init form would require unwrapping the initializer. Add
69
68
  // it later if a real chrome subscript uses that shape.
@@ -6,8 +6,8 @@
6
6
  *
7
7
  * Memoised per context object: ownership resolution and cache-key
8
8
  * fingerprints call this 2-3× per linted patch, and each call otherwise
9
- * re-runs `detectNewFilesInDiff` over EVERY queue entry's diff. Keyed weakly
10
- * so a discarded context frees its map; a caller that mutates a context
9
+ * re-runs `detectNewFilesInDiff` over every queue entry's diff. Keyed weakly
10
+ * so a discarded context frees its map. A caller that mutates a context
11
11
  * entry in place must call {@link invalidateNewFileCreatorsCache}.
12
12
  */
13
13
  import type { PatchQueueBodyEntry, PatchQueueView } from './patch-lint-queue-types.js';
@@ -20,7 +20,7 @@ export declare function invalidateNewFileCreatorsCache(ctx: CreatorsContext): vo
20
20
  * mode` by at least one patch in the queue. Paths created by only one
21
21
  * patch are also included so callers can distinguish "no creator" from
22
22
  * "exactly one creator" without re-scanning the diffs. The returned map
23
- * is memoised and shared — treat it as read-only.
23
+ * is memoised and shared, so treat it as read-only.
24
24
  */
25
25
  export declare function collectNewFileCreatorsByPath(ctx: CreatorsContext): Map<string, string[]>;
26
26
  export {};