@hominis/fireforge 0.43.0 → 0.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +10 -1
  3. package/dist/bin/fireforge.d.ts +4 -9
  4. package/dist/bin/fireforge.js +42 -40
  5. package/dist/build-info.json +4 -4
  6. package/dist/src/cli.js +74 -8
  7. package/dist/src/commands/bootstrap.js +17 -20
  8. package/dist/src/commands/build.js +25 -32
  9. package/dist/src/commands/config.js +34 -41
  10. package/dist/src/commands/discard.js +8 -9
  11. package/dist/src/commands/doctor-check-core.d.ts +4 -18
  12. package/dist/src/commands/doctor-check-core.js +8 -35
  13. package/dist/src/commands/doctor-external-toolchains.js +2 -2
  14. package/dist/src/commands/doctor-furnace-config-sync.d.ts +18 -0
  15. package/dist/src/commands/{doctor-furnace-manifest-sync.js → doctor-furnace-config-sync.js} +27 -26
  16. package/dist/src/commands/doctor-furnace-jar.d.ts +7 -9
  17. package/dist/src/commands/doctor-furnace-jar.js +7 -9
  18. package/dist/src/commands/doctor-furnace.js +21 -24
  19. package/dist/src/commands/doctor-orphaned-harness.d.ts +16 -20
  20. package/dist/src/commands/doctor-orphaned-harness.js +18 -44
  21. package/dist/src/commands/doctor-post-rebase-audit.d.ts +2 -0
  22. package/dist/src/commands/{doctor/post-rebase-audit.js → doctor-post-rebase-audit.js} +3 -3
  23. package/dist/src/commands/doctor-working-tree.d.ts +10 -12
  24. package/dist/src/commands/doctor-working-tree.js +11 -18
  25. package/dist/src/commands/doctor.js +35 -53
  26. package/dist/src/commands/download.js +32 -48
  27. package/dist/src/commands/export-all.js +29 -33
  28. package/dist/src/commands/export-flow.js +6 -6
  29. package/dist/src/commands/export-placement-conflicts.js +10 -9
  30. package/dist/src/commands/export-placement-gate.js +5 -5
  31. package/dist/src/commands/export-shared.d.ts +30 -33
  32. package/dist/src/commands/export-shared.js +45 -43
  33. package/dist/src/commands/export.js +21 -27
  34. package/dist/src/commands/furnace/apply.js +14 -23
  35. package/dist/src/commands/furnace/chrome-doc-remove.js +14 -21
  36. package/dist/src/commands/furnace/chrome-doc-templates.d.ts +23 -23
  37. package/dist/src/commands/furnace/chrome-doc-templates.js +23 -23
  38. package/dist/src/commands/furnace/chrome-doc-tests.js +26 -29
  39. package/dist/src/commands/furnace/chrome-doc.d.ts +16 -17
  40. package/dist/src/commands/furnace/chrome-doc.js +31 -41
  41. package/dist/src/commands/furnace/create-browser-test.d.ts +4 -4
  42. package/dist/src/commands/furnace/create-browser-test.js +8 -8
  43. package/dist/src/commands/furnace/create-mochikit.d.ts +6 -7
  44. package/dist/src/commands/furnace/create-mochikit.js +8 -9
  45. package/dist/src/commands/furnace/create-readback.d.ts +12 -13
  46. package/dist/src/commands/furnace/create-readback.js +12 -13
  47. package/dist/src/commands/furnace/create-templates.d.ts +22 -28
  48. package/dist/src/commands/furnace/create-templates.js +35 -30
  49. package/dist/src/commands/furnace/create-xpcshell.js +2 -2
  50. package/dist/src/commands/furnace/create.js +33 -23
  51. package/dist/src/commands/furnace/deploy.js +16 -24
  52. package/dist/src/commands/furnace/diff.js +9 -9
  53. package/dist/src/commands/furnace/init.js +33 -36
  54. package/dist/src/commands/furnace/override.js +23 -25
  55. package/dist/src/commands/furnace/preview.js +47 -67
  56. package/dist/src/commands/furnace/refresh.js +12 -16
  57. package/dist/src/commands/furnace/remove-mutations.d.ts +3 -6
  58. package/dist/src/commands/furnace/remove-mutations.js +9 -16
  59. package/dist/src/commands/furnace/remove-state.js +1 -1
  60. package/dist/src/commands/furnace/remove.js +33 -38
  61. package/dist/src/commands/furnace/rename-xpcshell.d.ts +8 -11
  62. package/dist/src/commands/furnace/rename-xpcshell.js +8 -11
  63. package/dist/src/commands/furnace/rename.js +59 -69
  64. package/dist/src/commands/furnace/scan.js +19 -33
  65. package/dist/src/commands/furnace/status.js +12 -9
  66. package/dist/src/commands/furnace/sync.js +9 -16
  67. package/dist/src/commands/furnace/validate.js +20 -20
  68. package/dist/src/commands/import.js +42 -35
  69. package/dist/src/commands/lint-per-patch.js +15 -10
  70. package/dist/src/commands/lint-per-run-checkjs.d.ts +13 -13
  71. package/dist/src/commands/lint-per-run-checkjs.js +13 -13
  72. package/dist/src/commands/lint-report.js +6 -7
  73. package/dist/src/commands/lint.d.ts +15 -16
  74. package/dist/src/commands/lint.js +86 -102
  75. package/dist/src/commands/package.js +6 -11
  76. package/dist/src/commands/patch/compact.js +1 -1
  77. package/dist/src/commands/patch/delete.js +24 -33
  78. package/dist/src/commands/patch/index.d.ts +5 -6
  79. package/dist/src/commands/patch/index.js +10 -12
  80. package/dist/src/commands/patch/lint-ignore.js +14 -13
  81. package/dist/src/commands/patch/move-files-create.d.ts +6 -6
  82. package/dist/src/commands/patch/move-files-create.js +8 -8
  83. package/dist/src/commands/patch/move-files-into.d.ts +6 -6
  84. package/dist/src/commands/patch/move-files-into.js +8 -8
  85. package/dist/src/commands/patch/patch-context.d.ts +2 -3
  86. package/dist/src/commands/patch/patch-context.js +2 -3
  87. package/dist/src/commands/patch/rename.d.ts +10 -11
  88. package/dist/src/commands/patch/rename.js +11 -12
  89. package/dist/src/commands/patch/reorder.js +8 -9
  90. package/dist/src/commands/patch/split-plan.js +1 -1
  91. package/dist/src/commands/patch/split.d.ts +8 -10
  92. package/dist/src/commands/patch/split.js +9 -11
  93. package/dist/src/commands/patch/staged-dependency-validate.js +8 -8
  94. package/dist/src/commands/patch/staged-dependency.js +7 -3
  95. package/dist/src/commands/patch/tier.d.ts +9 -9
  96. package/dist/src/commands/patch/tier.js +18 -15
  97. package/dist/src/commands/re-export-adjacent.js +9 -8
  98. package/dist/src/commands/re-export-bulk-scan.d.ts +9 -9
  99. package/dist/src/commands/re-export-bulk-scan.js +22 -21
  100. package/dist/src/commands/re-export-drift.js +10 -10
  101. package/dist/src/commands/re-export-files.d.ts +6 -7
  102. package/dist/src/commands/re-export-files.js +34 -44
  103. package/dist/src/commands/re-export-lint.d.ts +10 -13
  104. package/dist/src/commands/re-export-lint.js +16 -14
  105. package/dist/src/commands/re-export-options.d.ts +6 -6
  106. package/dist/src/commands/re-export-options.js +6 -6
  107. package/dist/src/commands/re-export-register.d.ts +4 -10
  108. package/dist/src/commands/re-export-register.js +5 -11
  109. package/dist/src/commands/re-export-scan.js +1 -1
  110. package/dist/src/commands/re-export-single.d.ts +3 -3
  111. package/dist/src/commands/re-export-single.js +33 -25
  112. package/dist/src/commands/re-export.js +13 -21
  113. package/dist/src/commands/rebase/abort.js +3 -3
  114. package/dist/src/commands/rebase/confirm.js +2 -1
  115. package/dist/src/commands/rebase/continue.d.ts +1 -1
  116. package/dist/src/commands/rebase/continue.js +14 -9
  117. package/dist/src/commands/rebase/index.js +11 -11
  118. package/dist/src/commands/rebase/patch-loop.d.ts +7 -1
  119. package/dist/src/commands/rebase/patch-loop.js +60 -39
  120. package/dist/src/commands/rebase/summary.js +1 -1
  121. package/dist/src/commands/register.js +5 -7
  122. package/dist/src/commands/reset.js +2 -1
  123. package/dist/src/commands/resolve.d.ts +16 -13
  124. package/dist/src/commands/resolve.js +30 -33
  125. package/dist/src/commands/run.js +33 -35
  126. package/dist/src/commands/setup-support.js +15 -19
  127. package/dist/src/commands/setup.js +13 -9
  128. package/dist/src/commands/status-check.d.ts +6 -6
  129. package/dist/src/commands/status-json.d.ts +6 -6
  130. package/dist/src/commands/status-json.js +5 -0
  131. package/dist/src/commands/status-output.d.ts +5 -5
  132. package/dist/src/commands/status-output.js +6 -6
  133. package/dist/src/commands/status-ownership.d.ts +16 -14
  134. package/dist/src/commands/status-ownership.js +16 -14
  135. package/dist/src/commands/status.js +42 -34
  136. package/dist/src/commands/test-build-phase.js +26 -13
  137. package/dist/src/commands/test-diagnose.js +44 -44
  138. package/dist/src/commands/test-register.js +1 -0
  139. package/dist/src/commands/test-run.d.ts +14 -16
  140. package/dist/src/commands/test-run.js +21 -13
  141. package/dist/src/commands/test-stale-gate.d.ts +15 -16
  142. package/dist/src/commands/test-stale-gate.js +15 -16
  143. package/dist/src/commands/test-verdict.d.ts +20 -3
  144. package/dist/src/commands/test-verdict.js +30 -0
  145. package/dist/src/commands/test.js +83 -76
  146. package/dist/src/commands/token-coverage.js +3 -4
  147. package/dist/src/commands/token.js +16 -18
  148. package/dist/src/commands/tree.js +47 -31
  149. package/dist/src/commands/typecheck.d.ts +10 -12
  150. package/dist/src/commands/typecheck.js +24 -27
  151. package/dist/src/commands/verify.js +13 -15
  152. package/dist/src/commands/watch.js +21 -23
  153. package/dist/src/commands/wire.js +52 -62
  154. package/dist/src/core/ast-utils.d.ts +8 -7
  155. package/dist/src/core/ast-utils.js +8 -7
  156. package/dist/src/core/branding.d.ts +9 -14
  157. package/dist/src/core/branding.js +7 -11
  158. package/dist/src/core/browser-wire.d.ts +1 -1
  159. package/dist/src/core/browser-wire.js +14 -19
  160. package/dist/src/core/build-audit-platform.js +25 -33
  161. package/dist/src/core/build-audit-registration.js +17 -25
  162. package/dist/src/core/build-audit-resolve.d.ts +15 -17
  163. package/dist/src/core/build-audit-resolve.js +27 -33
  164. package/dist/src/core/build-audit-transforms.js +18 -19
  165. package/dist/src/core/build-audit.js +28 -42
  166. package/dist/src/core/build-baseline-types.d.ts +29 -35
  167. package/dist/src/core/build-baseline.d.ts +5 -4
  168. package/dist/src/core/build-baseline.js +14 -14
  169. package/dist/src/core/build-overwrite-guard.d.ts +7 -14
  170. package/dist/src/core/build-overwrite-guard.js +62 -19
  171. package/dist/src/core/build-prepare.d.ts +2 -2
  172. package/dist/src/core/build-prepare.js +8 -9
  173. package/dist/src/core/config-state.js +12 -4
  174. package/dist/src/core/config-validate.js +8 -5
  175. package/dist/src/core/config.d.ts +5 -8
  176. package/dist/src/core/config.js +7 -16
  177. package/dist/src/core/coverage-extend.d.ts +15 -13
  178. package/dist/src/core/coverage-extend.js +15 -13
  179. package/dist/src/core/destructive.d.ts +31 -9
  180. package/dist/src/core/destructive.js +29 -26
  181. package/dist/src/core/diff-hunks.js +10 -12
  182. package/dist/src/core/discard-baseline.d.ts +8 -8
  183. package/dist/src/core/discard-baseline.js +16 -15
  184. package/dist/src/core/display-state.d.ts +12 -14
  185. package/dist/src/core/display-state.js +12 -14
  186. package/dist/src/core/engine-changes.d.ts +2 -4
  187. package/dist/src/core/engine-changes.js +2 -4
  188. package/dist/src/core/engine-precondition.d.ts +28 -13
  189. package/dist/src/core/engine-precondition.js +25 -10
  190. package/dist/src/core/engine-session-lock.d.ts +47 -21
  191. package/dist/src/core/engine-session-lock.js +168 -33
  192. package/dist/src/core/export-moved-code-shape.d.ts +10 -10
  193. package/dist/src/core/export-moved-code-shape.js +10 -10
  194. package/dist/src/core/file-lock.d.ts +62 -5
  195. package/dist/src/core/file-lock.js +196 -59
  196. package/dist/src/core/firefox-cache.js +1 -3
  197. package/dist/src/core/firefox-extract.js +10 -14
  198. package/dist/src/core/firefox.d.ts +7 -5
  199. package/dist/src/core/firefox.js +4 -5
  200. package/dist/src/core/furnace-apply-dry-run.d.ts +2 -2
  201. package/dist/src/core/furnace-apply-dry-run.js +3 -2
  202. package/dist/src/core/furnace-apply-ftl.d.ts +7 -9
  203. package/dist/src/core/furnace-apply-ftl.js +12 -12
  204. package/dist/src/core/furnace-apply-helpers.d.ts +7 -7
  205. package/dist/src/core/furnace-apply-helpers.js +19 -16
  206. package/dist/src/core/furnace-apply-overwrite-warn.d.ts +8 -9
  207. package/dist/src/core/furnace-apply-overwrite-warn.js +8 -9
  208. package/dist/src/core/furnace-apply-undeploy-actions.d.ts +3 -4
  209. package/dist/src/core/furnace-apply-undeploy-actions.js +3 -4
  210. package/dist/src/core/furnace-apply.d.ts +5 -8
  211. package/dist/src/core/furnace-apply.js +19 -24
  212. package/dist/src/core/furnace-checksum-utils.d.ts +14 -0
  213. package/dist/src/core/furnace-checksum-utils.js +16 -0
  214. package/dist/src/core/furnace-config.d.ts +21 -30
  215. package/dist/src/core/furnace-config.js +32 -54
  216. package/dist/src/core/furnace-constants.d.ts +8 -0
  217. package/dist/src/core/furnace-constants.js +10 -2
  218. package/dist/src/core/furnace-css-fragments.d.ts +5 -5
  219. package/dist/src/core/furnace-css-fragments.js +5 -5
  220. package/dist/src/core/furnace-jsconfig.d.ts +11 -12
  221. package/dist/src/core/furnace-jsconfig.js +11 -12
  222. package/dist/src/core/furnace-marker.d.ts +7 -8
  223. package/dist/src/core/furnace-marker.js +7 -8
  224. package/dist/src/core/furnace-operation.d.ts +31 -0
  225. package/dist/src/core/furnace-operation.js +54 -17
  226. package/dist/src/core/furnace-precondition.d.ts +61 -0
  227. package/dist/src/core/furnace-precondition.js +67 -0
  228. package/dist/src/core/furnace-registration-remove.d.ts +5 -6
  229. package/dist/src/core/furnace-registration-remove.js +6 -7
  230. package/dist/src/core/furnace-registration-validate.d.ts +13 -0
  231. package/dist/src/core/furnace-registration-validate.js +20 -1
  232. package/dist/src/core/furnace-registration.d.ts +5 -6
  233. package/dist/src/core/furnace-registration.js +10 -12
  234. package/dist/src/core/furnace-rollback.js +7 -7
  235. package/dist/src/core/furnace-scanner.d.ts +1 -0
  236. package/dist/src/core/furnace-scanner.js +1 -2
  237. package/dist/src/core/furnace-stale-export.d.ts +10 -10
  238. package/dist/src/core/furnace-stale-export.js +10 -10
  239. package/dist/src/core/furnace-state-persist.d.ts +6 -8
  240. package/dist/src/core/furnace-state-persist.js +6 -8
  241. package/dist/src/core/furnace-validate-accessibility.d.ts +22 -0
  242. package/dist/src/core/furnace-validate-accessibility.js +310 -1
  243. package/dist/src/core/furnace-validate-compatibility.js +141 -1
  244. package/dist/src/core/furnace-validate-helpers.d.ts +5 -116
  245. package/dist/src/core/furnace-validate-helpers.js +0 -491
  246. package/dist/src/core/furnace-validate-registration.d.ts +7 -0
  247. package/dist/src/core/furnace-validate-registration.js +115 -41
  248. package/dist/src/core/furnace-validate.d.ts +16 -0
  249. package/dist/src/core/furnace-validate.js +188 -145
  250. package/dist/src/core/furnace-version-drift.d.ts +10 -11
  251. package/dist/src/core/furnace-version-drift.js +10 -11
  252. package/dist/src/core/git-base.d.ts +7 -9
  253. package/dist/src/core/git-base.js +7 -9
  254. package/dist/src/core/git-diff.d.ts +20 -9
  255. package/dist/src/core/git-diff.js +148 -63
  256. package/dist/src/core/git-file-ops.d.ts +19 -19
  257. package/dist/src/core/git-file-ops.js +19 -19
  258. package/dist/src/core/git-readonly-index.d.ts +53 -19
  259. package/dist/src/core/git-readonly-index.js +75 -31
  260. package/dist/src/core/git-status.d.ts +5 -6
  261. package/dist/src/core/git-status.js +5 -6
  262. package/dist/src/core/git.d.ts +9 -10
  263. package/dist/src/core/git.js +54 -70
  264. package/dist/src/core/license-headers.d.ts +17 -23
  265. package/dist/src/core/license-headers.js +17 -23
  266. package/dist/src/core/mach-build-artifacts.d.ts +9 -9
  267. package/dist/src/core/mach-build-artifacts.js +57 -19
  268. package/dist/src/core/mach-error-hints.js +42 -29
  269. package/dist/src/core/mach-known-noise-filter.d.ts +15 -16
  270. package/dist/src/core/mach-known-noise-filter.js +18 -20
  271. package/dist/src/core/mach-mozconfig.d.ts +14 -0
  272. package/dist/src/core/mach-mozconfig.js +30 -0
  273. package/dist/src/core/mach-resource-shim.d.ts +43 -58
  274. package/dist/src/core/mach-resource-shim.js +50 -67
  275. package/dist/src/core/mach.d.ts +37 -41
  276. package/dist/src/core/mach.js +50 -51
  277. package/dist/src/core/marionette-port.d.ts +36 -1
  278. package/dist/src/core/marionette-port.js +96 -31
  279. package/dist/src/core/marionette-preflight.d.ts +8 -12
  280. package/dist/src/core/marionette-preflight.js +86 -52
  281. package/dist/src/core/mochitest-server-port.d.ts +42 -0
  282. package/dist/src/core/mochitest-server-port.js +119 -0
  283. package/dist/src/core/module-resolution-preflight.d.ts +9 -11
  284. package/dist/src/core/module-resolution-preflight.js +9 -11
  285. package/dist/src/core/moz-manifest-helpers.d.ts +79 -0
  286. package/dist/src/core/moz-manifest-helpers.js +163 -0
  287. package/dist/src/core/{manifest-register.d.ts → moz-manifest-register.d.ts} +1 -1
  288. package/dist/src/core/{manifest-register.js → moz-manifest-register.js} +13 -28
  289. package/dist/src/core/{manifest-rules.d.ts → moz-manifest-rules.d.ts} +10 -1
  290. package/dist/src/core/{manifest-rules.js → moz-manifest-rules.js} +31 -24
  291. package/dist/src/core/{manifest-tokenizers.d.ts → moz-manifest-tokenizers.d.ts} +3 -5
  292. package/dist/src/core/{manifest-tokenizers.js → moz-manifest-tokenizers.js} +9 -12
  293. package/dist/src/core/ownership-table.d.ts +14 -16
  294. package/dist/src/core/ownership-table.js +14 -16
  295. package/dist/src/core/parser-fallback.d.ts +15 -1
  296. package/dist/src/core/parser-fallback.js +22 -3
  297. package/dist/src/core/patch-apply-fuzz.d.ts +10 -12
  298. package/dist/src/core/patch-apply-fuzz.js +15 -18
  299. package/dist/src/core/patch-apply.d.ts +13 -34
  300. package/dist/src/core/patch-apply.js +16 -76
  301. package/dist/src/core/patch-artifact-normalize.d.ts +13 -15
  302. package/dist/src/core/patch-artifact-normalize.js +13 -15
  303. package/dist/src/core/patch-export-metadata.d.ts +12 -2
  304. package/dist/src/core/patch-export-metadata.js +13 -4
  305. package/dist/src/core/patch-export-update.d.ts +13 -1
  306. package/dist/src/core/patch-export-update.js +25 -8
  307. package/dist/src/core/patch-export.d.ts +15 -8
  308. package/dist/src/core/patch-export.js +10 -11
  309. package/dist/src/core/patch-files.d.ts +5 -6
  310. package/dist/src/core/patch-files.js +5 -6
  311. package/dist/src/core/patch-identifier-suggest.d.ts +7 -12
  312. package/dist/src/core/patch-identifier-suggest.js +14 -19
  313. package/dist/src/core/patch-lint-binary.d.ts +51 -0
  314. package/dist/src/core/patch-lint-binary.js +39 -0
  315. package/dist/src/core/{lint-cache.d.ts → patch-lint-cache.d.ts} +5 -5
  316. package/dist/src/core/{lint-cache.js → patch-lint-cache.js} +21 -23
  317. package/dist/src/core/patch-lint-checkjs.d.ts +16 -16
  318. package/dist/src/core/patch-lint-checkjs.js +16 -16
  319. package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +6 -9
  320. package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -14
  321. package/dist/src/core/patch-lint-creators.d.ts +8 -8
  322. package/dist/src/core/patch-lint-creators.js +8 -8
  323. package/dist/src/core/patch-lint-cross.d.ts +17 -20
  324. package/dist/src/core/patch-lint-cross.js +16 -16
  325. package/dist/src/core/patch-lint-css.d.ts +3 -5
  326. package/dist/src/core/patch-lint-css.js +17 -22
  327. package/dist/src/core/patch-lint-diff-tag.d.ts +14 -16
  328. package/dist/src/core/patch-lint-diff-tag.js +14 -16
  329. package/dist/src/core/patch-lint-jsdoc.d.ts +7 -8
  330. package/dist/src/core/patch-lint-jsdoc.js +26 -19
  331. package/dist/src/core/patch-lint-mozbuild.js +20 -20
  332. package/dist/src/core/patch-lint-observer.d.ts +7 -7
  333. package/dist/src/core/patch-lint-observer.js +7 -7
  334. package/dist/src/core/patch-lint.d.ts +38 -29
  335. package/dist/src/core/patch-lint.js +89 -121
  336. package/dist/src/core/patch-lock.d.ts +1 -1
  337. package/dist/src/core/patch-lock.js +45 -9
  338. package/dist/src/core/patch-manifest-consistency.d.ts +2 -1
  339. package/dist/src/core/patch-manifest-consistency.js +25 -27
  340. package/dist/src/core/patch-manifest-io.js +14 -18
  341. package/dist/src/core/patch-manifest-resolve.d.ts +9 -12
  342. package/dist/src/core/patch-manifest-resolve.js +9 -12
  343. package/dist/src/core/patch-manifest-validate.d.ts +6 -1
  344. package/dist/src/core/patch-manifest-validate.js +25 -13
  345. package/dist/src/core/patch-parse.d.ts +24 -13
  346. package/dist/src/core/patch-parse.js +19 -14
  347. package/dist/src/core/patch-policy.d.ts +2 -2
  348. package/dist/src/core/patch-policy.js +2 -2
  349. package/dist/src/core/patch-registration-refs.d.ts +7 -8
  350. package/dist/src/core/patch-registration-refs.js +9 -9
  351. package/dist/src/core/process-cpu-time.d.ts +12 -0
  352. package/dist/src/core/process-cpu-time.js +52 -0
  353. package/dist/src/core/rebase-session.d.ts +38 -26
  354. package/dist/src/core/rebase-session.js +55 -28
  355. package/dist/src/core/register-browser-content.js +9 -74
  356. package/dist/src/core/{register-test-manifest.js → register-browser-test.js} +7 -42
  357. package/dist/src/core/register-module.js +10 -43
  358. package/dist/src/core/register-scaffold.d.ts +8 -8
  359. package/dist/src/core/register-scaffold.js +10 -10
  360. package/dist/src/core/register-shared-css.d.ts +9 -12
  361. package/dist/src/core/register-shared-css.js +17 -87
  362. package/dist/src/core/register-xpcshell-test.d.ts +6 -7
  363. package/dist/src/core/register-xpcshell-test.js +7 -8
  364. package/dist/src/core/shared-ftl.js +12 -4
  365. package/dist/src/core/state-file.d.ts +45 -0
  366. package/dist/src/core/state-file.js +34 -0
  367. package/dist/src/core/status-binary.d.ts +18 -11
  368. package/dist/src/core/status-binary.js +19 -12
  369. package/dist/src/core/status-classify.d.ts +30 -36
  370. package/dist/src/core/status-classify.js +21 -26
  371. package/dist/src/core/test-changed-prefs.d.ts +30 -0
  372. package/dist/src/core/test-changed-prefs.js +78 -0
  373. package/dist/src/core/test-harness-crash.d.ts +25 -63
  374. package/dist/src/core/test-harness-crash.js +121 -142
  375. package/dist/src/core/test-harness-signature.d.ts +18 -0
  376. package/dist/src/core/test-harness-signature.js +13 -0
  377. package/dist/src/core/test-path-scope.d.ts +12 -15
  378. package/dist/src/core/test-path-scope.js +15 -18
  379. package/dist/src/core/test-stale-check.d.ts +17 -17
  380. package/dist/src/core/test-stale-check.js +50 -43
  381. package/dist/src/core/test-stall-triage.d.ts +51 -0
  382. package/dist/src/core/test-stall-triage.js +126 -0
  383. package/dist/src/core/token-category.js +5 -7
  384. package/dist/src/core/token-coverage.js +9 -9
  385. package/dist/src/core/token-dark-mode.d.ts +9 -11
  386. package/dist/src/core/token-dark-mode.js +9 -11
  387. package/dist/src/core/token-docs.d.ts +2 -0
  388. package/dist/src/core/token-docs.js +2 -0
  389. package/dist/src/core/token-manager.d.ts +10 -2
  390. package/dist/src/core/token-manager.js +17 -8
  391. package/dist/src/core/token-scaffold.d.ts +7 -7
  392. package/dist/src/core/token-scaffold.js +7 -7
  393. package/dist/src/core/token-variant.d.ts +4 -4
  394. package/dist/src/core/token-variant.js +4 -4
  395. package/dist/src/core/toolchain-preflight.d.ts +20 -21
  396. package/dist/src/core/toolchain-preflight.js +28 -31
  397. package/dist/src/core/tree-guard.js +12 -2
  398. package/dist/src/core/tree-store.d.ts +41 -27
  399. package/dist/src/core/tree-store.js +63 -42
  400. package/dist/src/core/typecheck-shim.d.ts +23 -24
  401. package/dist/src/core/typecheck-shim.js +23 -24
  402. package/dist/src/core/typecheck.js +8 -8
  403. package/dist/src/core/wire-destroy.d.ts +3 -3
  404. package/dist/src/core/wire-destroy.js +7 -15
  405. package/dist/src/core/wire-dom-fragment.d.ts +9 -17
  406. package/dist/src/core/wire-dom-fragment.js +11 -44
  407. package/dist/src/core/wire-init.d.ts +2 -3
  408. package/dist/src/core/wire-init.js +8 -19
  409. package/dist/src/core/wire-subscript.d.ts +2 -3
  410. package/dist/src/core/wire-subscript.js +4 -13
  411. package/dist/src/core/wire-utils.d.ts +7 -8
  412. package/dist/src/core/wire-utils.js +7 -8
  413. package/dist/src/core/xpcshell-appdir.d.ts +38 -45
  414. package/dist/src/core/xpcshell-appdir.js +38 -45
  415. package/dist/src/errors/base.d.ts +37 -16
  416. package/dist/src/errors/base.js +37 -16
  417. package/dist/src/errors/build.d.ts +13 -1
  418. package/dist/src/errors/build.js +14 -2
  419. package/dist/src/errors/codes.d.ts +16 -0
  420. package/dist/src/errors/codes.js +16 -0
  421. package/dist/src/errors/furnace.d.ts +4 -4
  422. package/dist/src/errors/git.d.ts +6 -10
  423. package/dist/src/errors/git.js +6 -10
  424. package/dist/src/errors/patch.d.ts +7 -7
  425. package/dist/src/errors/patch.js +7 -7
  426. package/dist/src/errors/rebase.d.ts +4 -4
  427. package/dist/src/errors/rebase.js +4 -4
  428. package/dist/src/index.d.ts +7 -1
  429. package/dist/src/index.js +5 -0
  430. package/dist/src/types/commands/index.d.ts +2 -2
  431. package/dist/src/types/commands/options.d.ts +88 -70
  432. package/dist/src/types/commands/patches.d.ts +24 -34
  433. package/dist/src/types/commands/project.d.ts +5 -34
  434. package/dist/src/types/config.d.ts +25 -23
  435. package/dist/src/types/config.js +6 -1
  436. package/dist/src/types/furnace.d.ts +37 -13
  437. package/dist/src/types/furnace.js +19 -1
  438. package/dist/src/types/index.d.ts +3 -3
  439. package/dist/src/utils/build-info.d.ts +7 -8
  440. package/dist/src/utils/build-info.js +12 -11
  441. package/dist/src/utils/errors.d.ts +6 -8
  442. package/dist/src/utils/errors.js +6 -8
  443. package/dist/src/utils/logger.d.ts +27 -10
  444. package/dist/src/utils/logger.js +28 -16
  445. package/dist/src/utils/machine-output.d.ts +12 -0
  446. package/dist/src/utils/machine-output.js +33 -0
  447. package/dist/src/utils/options.d.ts +31 -14
  448. package/dist/src/utils/options.js +86 -30
  449. package/dist/src/utils/paths.d.ts +10 -8
  450. package/dist/src/utils/paths.js +10 -8
  451. package/dist/src/utils/platform.d.ts +0 -25
  452. package/dist/src/utils/platform.js +1 -42
  453. package/dist/src/utils/process-group.d.ts +9 -4
  454. package/dist/src/utils/process-group.js +19 -5
  455. package/dist/src/utils/process.d.ts +42 -7
  456. package/dist/src/utils/process.js +44 -17
  457. package/dist/src/utils/ps-duration.d.ts +31 -0
  458. package/dist/src/utils/ps-duration.js +70 -0
  459. package/dist/src/utils/regex.d.ts +9 -10
  460. package/dist/src/utils/regex.js +9 -10
  461. package/dist/src/utils/validation.d.ts +58 -28
  462. package/dist/src/utils/validation.js +60 -33
  463. package/package.json +2 -2
  464. package/dist/src/commands/doctor/post-rebase-audit.d.ts +0 -2
  465. package/dist/src/commands/doctor-furnace-manifest-sync.d.ts +0 -18
  466. package/dist/src/core/manifest-helpers.d.ts +0 -38
  467. package/dist/src/core/manifest-helpers.js +0 -120
  468. /package/dist/src/core/{lint-projection.d.ts → patch-lint-projection.d.ts} +0 -0
  469. /package/dist/src/core/{lint-projection.js → patch-lint-projection.js} +0 -0
  470. /package/dist/src/core/{register-test-manifest.d.ts → register-browser-test.d.ts} +0 -0
@@ -34,30 +34,29 @@ export interface ValidateExportJsDocOptions {
34
34
  * @param fn - FunctionDeclaration AST node
35
35
  * @param comments - All Acorn comments collected from the source
36
36
  * @param source - Original source text (for line-number resolution)
37
- * @param issues - Output sink for JSDoc issues
38
37
  * @param lookupStart - Optional offset to use when locating the attached
39
38
  * JSDoc (defaults to `fn.start`). Used by the export-walker so the JSDoc
40
39
  * is found relative to the `export` keyword rather than the inner decl.
41
40
  */
42
- export declare function validateFunctionDecl(fn: AcornESTreeNode<FunctionDeclaration>, comments: acorn.Comment[], source: string, issues: JsDocIssue[], lookupStart?: number): void;
41
+ export declare function validateFunctionDecl(fn: AcornESTreeNode<FunctionDeclaration>, comments: acorn.Comment[], source: string, lookupStart?: number): JsDocIssue[];
43
42
  /**
44
43
  * Validates a top-level class declaration: requires an attached JSDoc
45
44
  * comment on the class itself. Method-level checks live in
46
45
  * {@link validateClassMethods}. Exported for reuse in the chrome-subscript
47
46
  * validator.
48
47
  */
49
- export declare function validateClassDecl(cls: AcornESTreeNode<ClassDeclaration>, comments: acorn.Comment[], source: string, issues: JsDocIssue[], lookupStart?: number): void;
48
+ export declare function validateClassDecl(cls: AcornESTreeNode<ClassDeclaration>, comments: acorn.Comment[], source: string, lookupStart?: number): JsDocIssue[];
50
49
  /**
51
- * Walks an exported class body and emits class-method JSDoc issues per
52
- * the configured severity. Skip rules (in evaluation order):
50
+ * Walks an exported class body and emits class-method JSDoc issues per the
51
+ * configured severity. Skip rules (in evaluation order):
53
52
  * 1. private syntax (`#foo`) and underscore-prefixed names
54
53
  * 2. zero-parameter constructors
55
54
  * 3. methods whose JSDoc carries `@private` or `@internal`
56
55
  *
57
- * Pure-override skip (`super.method(...args)`-only bodies bypassing the
58
- * @returns check) is deferred — V1 keeps the rule simple.
56
+ * A pure-override skip (`super.method(...args)`-only bodies bypassing the
57
+ * return-tag check) is deliberately not implemented; the rule stays simple.
59
58
  */
60
- export declare function validateClassMethods(cls: AcornESTreeNode<ClassDeclaration>, comments: acorn.Comment[], source: string, issues: JsDocIssue[], severity: 'warning' | 'error'): void;
59
+ export declare function validateClassMethods(cls: AcornESTreeNode<ClassDeclaration>, comments: acorn.Comment[], source: string, severity: 'warning' | 'error'): JsDocIssue[];
61
60
  /**
62
61
  * Validates JSDoc on exported declarations in a `.sys.mjs` source file.
63
62
  *
@@ -238,12 +238,12 @@ function validateParamsAndReturns(fnNode, jsDoc, issues, ctx) {
238
238
  * @param fn - FunctionDeclaration AST node
239
239
  * @param comments - All Acorn comments collected from the source
240
240
  * @param source - Original source text (for line-number resolution)
241
- * @param issues - Output sink for JSDoc issues
242
241
  * @param lookupStart - Optional offset to use when locating the attached
243
242
  * JSDoc (defaults to `fn.start`). Used by the export-walker so the JSDoc
244
243
  * is found relative to the `export` keyword rather than the inner decl.
245
244
  */
246
- export function validateFunctionDecl(fn, comments, source, issues, lookupStart) {
245
+ export function validateFunctionDecl(fn, comments, source, lookupStart) {
246
+ const issues = [];
247
247
  const name = fn.id.name;
248
248
  const start = lookupStart !== undefined ? lookupStart : fn.start;
249
249
  const line = lineAt(source, start);
@@ -254,7 +254,7 @@ export function validateFunctionDecl(fn, comments, source, issues, lookupStart)
254
254
  check: 'missing-jsdoc',
255
255
  message: `Exported function "${name}" at line ${line} is missing a JSDoc comment.`,
256
256
  });
257
- return;
257
+ return issues;
258
258
  }
259
259
  validateParamsAndReturns(fn, jsDoc, issues, {
260
260
  label: `function "${name}"`,
@@ -262,6 +262,7 @@ export function validateFunctionDecl(fn, comments, source, issues, lookupStart)
262
262
  paramCheck: 'jsdoc-param-mismatch',
263
263
  returnsCheck: 'jsdoc-missing-returns',
264
264
  });
265
+ return issues;
265
266
  }
266
267
  /**
267
268
  * Validates a top-level class declaration: requires an attached JSDoc
@@ -269,7 +270,8 @@ export function validateFunctionDecl(fn, comments, source, issues, lookupStart)
269
270
  * {@link validateClassMethods}. Exported for reuse in the chrome-subscript
270
271
  * validator.
271
272
  */
272
- export function validateClassDecl(cls, comments, source, issues, lookupStart) {
273
+ export function validateClassDecl(cls, comments, source, lookupStart) {
274
+ const issues = [];
273
275
  const name = cls.id.name;
274
276
  const start = lookupStart !== undefined ? lookupStart : cls.start;
275
277
  const line = lineAt(source, start);
@@ -281,12 +283,14 @@ export function validateClassDecl(cls, comments, source, issues, lookupStart) {
281
283
  message: `Exported class "${name}" at line ${line} is missing a JSDoc comment.`,
282
284
  });
283
285
  }
286
+ return issues;
284
287
  }
285
- function validateVariableDecl(varDecl, comments, source, issues, lookupStart) {
288
+ function validateVariableDecl(varDecl, comments, source, lookupStart) {
289
+ const issues = [];
286
290
  const start = lookupStart !== undefined ? lookupStart : varDecl.start;
287
291
  const jsDoc = findAttachedJsDoc(comments, start, source);
288
292
  if (jsDoc)
289
- return; // has a JSDoc block — sufficient for constants
293
+ return issues; // has a JSDoc block — sufficient for constants
290
294
  for (const decl of varDecl.declarations) {
291
295
  const name = decl.id.type === 'Identifier' ? decl.id.name : '<destructured>';
292
296
  const line = lineAt(source, start);
@@ -296,6 +300,7 @@ function validateVariableDecl(varDecl, comments, source, issues, lookupStart) {
296
300
  message: `Exported constant "${name}" at line ${line} is missing a JSDoc comment.`,
297
301
  });
298
302
  }
303
+ return issues;
299
304
  }
300
305
  // ---------------------------------------------------------------------------
301
306
  // Class-method validation (opt-in via classMethodMode)
@@ -328,16 +333,17 @@ function classMethodLabel(className, method, name) {
328
333
  return `${prefix}method "${className}.${name}"`;
329
334
  }
330
335
  /**
331
- * Walks an exported class body and emits class-method JSDoc issues per
332
- * the configured severity. Skip rules (in evaluation order):
336
+ * Walks an exported class body and emits class-method JSDoc issues per the
337
+ * configured severity. Skip rules (in evaluation order):
333
338
  * 1. private syntax (`#foo`) and underscore-prefixed names
334
339
  * 2. zero-parameter constructors
335
340
  * 3. methods whose JSDoc carries `@private` or `@internal`
336
341
  *
337
- * Pure-override skip (`super.method(...args)`-only bodies bypassing the
338
- * @returns check) is deferred — V1 keeps the rule simple.
342
+ * A pure-override skip (`super.method(...args)`-only bodies bypassing the
343
+ * return-tag check) is deliberately not implemented; the rule stays simple.
339
344
  */
340
- export function validateClassMethods(cls, comments, source, issues, severity) {
345
+ export function validateClassMethods(cls, comments, source, severity) {
346
+ const issues = [];
341
347
  const className = cls.id.name;
342
348
  for (const member of cls.body.body) {
343
349
  if (member.type !== 'MethodDefinition')
@@ -381,6 +387,7 @@ export function validateClassMethods(cls, comments, source, issues, severity) {
381
387
  skipReturns,
382
388
  });
383
389
  }
390
+ return issues;
384
391
  }
385
392
  // ---------------------------------------------------------------------------
386
393
  // Public API
@@ -422,16 +429,16 @@ export function validateExportJsDoc(source, options) {
422
429
  const decl = exportNode.declaration;
423
430
  const exportStart = exportNode.start;
424
431
  if (decl.type === 'FunctionDeclaration') {
425
- validateFunctionDecl(decl, comments, source, issues, exportStart);
432
+ issues.push(...validateFunctionDecl(decl, comments, source, exportStart));
426
433
  }
427
434
  else if (decl.type === 'ClassDeclaration') {
428
- validateClassDecl(decl, comments, source, issues, exportStart);
435
+ issues.push(...validateClassDecl(decl, comments, source, exportStart));
429
436
  if (classMethodMode !== 'off') {
430
- validateClassMethods(decl, comments, source, issues, classMethodMode);
437
+ issues.push(...validateClassMethods(decl, comments, source, classMethodMode));
431
438
  }
432
439
  }
433
440
  else if (decl.type === 'VariableDeclaration') {
434
- validateVariableDecl(decl, comments, source, issues, exportStart);
441
+ issues.push(...validateVariableDecl(decl, comments, source, exportStart));
435
442
  }
436
443
  continue;
437
444
  }
@@ -446,16 +453,16 @@ export function validateExportJsDoc(source, options) {
446
453
  if (!localDecl)
447
454
  continue;
448
455
  if (localDecl.type === 'FunctionDeclaration') {
449
- validateFunctionDecl(localDecl, comments, source, issues);
456
+ issues.push(...validateFunctionDecl(localDecl, comments, source));
450
457
  }
451
458
  else if (localDecl.type === 'ClassDeclaration') {
452
- validateClassDecl(localDecl, comments, source, issues);
459
+ issues.push(...validateClassDecl(localDecl, comments, source));
453
460
  if (classMethodMode !== 'off') {
454
- validateClassMethods(localDecl, comments, source, issues, classMethodMode);
461
+ issues.push(...validateClassMethods(localDecl, comments, source, classMethodMode));
455
462
  }
456
463
  }
457
464
  else {
458
- validateVariableDecl(localDecl, comments, source, issues);
465
+ issues.push(...validateVariableDecl(localDecl, comments, source));
459
466
  }
460
467
  }
461
468
  }
@@ -12,7 +12,7 @@
12
12
  */
13
13
  import { join } from 'node:path';
14
14
  import { pathExists, readText } from '../utils/fs.js';
15
- import { mozbuildSortCompare } from './manifest-helpers.js';
15
+ import { mozbuildSortCompare } from './moz-manifest-helpers.js';
16
16
  /**
17
17
  * moz.build list variables mozbuild declares as `StrictOrderingOnAppendList`
18
18
  * (python/mozbuild/mozbuild/frontend/context.py). configure raises
@@ -81,30 +81,30 @@ function stripMozBuildComment(line) {
81
81
  return line;
82
82
  }
83
83
  /**
84
- * Extracts every strict-ordered list (with items in file order) from moz.build
85
- * content.
84
+ * Extracts every strict-ordered list (with items in file order) from
85
+ * moz.build content.
86
86
  *
87
- * Comments are stripped before both the item scan and the close-bracket test.
88
- * moz.build is Python, and before 0.41.0 neither step knew that:
87
+ * Comments are stripped before both the item scan and the close-bracket
88
+ * test, because moz.build is Python:
89
89
  *
90
- * - a quoted string in a trailing comment was scraped in as a phantom list
91
- * item (`"Zeta.cpp", # replaces "Beta.cpp"` yielded a `Beta.cpp` entry), so
92
- * the sort check reported an unsorted list naming a file that is not in it —
93
- * with a fingerprint that could never stabilise, because the item does not
94
- * exist to be moved;
95
- * - a `]` anywhere in a comment (`# see foo[0]`) closed the list early and
96
- * silently truncated the item set.
90
+ * - a quoted string in a trailing comment would otherwise be scraped in as a
91
+ * phantom list item (`"Zeta.cpp", # replaces "Beta.cpp"` yielding a
92
+ * `Beta.cpp` entry), so the sort check reports an unsorted list naming a
93
+ * file that is not in it — with a fingerprint that can never stabilise,
94
+ * because the item does not exist to be moved;
95
+ * - a `]` anywhere in a comment (`# see foo[0]`) would close the list early
96
+ * and silently truncate the item set.
97
97
  *
98
- * The scan also no longer advances the caller's loop counter: an unterminated
99
- * list used to consume the rest of the file, so every *later* list in it was
100
- * skipped entirely.
98
+ * The scan also does not advance the caller's loop counter: an unterminated
99
+ * list would otherwise consume the rest of the file and skip every later
100
+ * list in it.
101
101
  *
102
102
  * Nor does an unterminated list borrow the NEXT list's bracket. The forward
103
- * scan stops at the next list opener rather than reading through it: without
104
- * that, an unclosed `EXTRA_COMPONENTS` swallowed the following
105
- * `EXTRA_JS_MODULES` — its items merged into the first list's item set and its
106
- * `]` accepted as the first list's close — reporting a sorting error against a
107
- * variable that never contained those items, and skipping the second list.
103
+ * scan stops at the next list opener rather than reading through it —
104
+ * otherwise an unclosed `EXTRA_COMPONENTS` swallows the following
105
+ * `EXTRA_JS_MODULES`, merging its items into the first list and accepting
106
+ * its `]` as the first list's close, reporting a sorting error against a
107
+ * variable that never contained those items.
108
108
  */
109
109
  function collectStrictOrderedLists(content) {
110
110
  const lines = content.split('\n');
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * `observer-topic-naming` rule body, extracted from `patch-lint.ts`.
3
3
  *
4
- * The historical implementation captured the first string literal after
5
- * the call's opening paren on a single line. That mis-attributed string
6
- * literals in complex subject arguments and silently skipped multi-line
7
- * call sites. This version scans the balanced argument list (across
8
- * newlines, string-aware), takes the *topic* argument by position, and
9
- * allowlists well-known Firefox-owned topics so tests that simulate
10
- * upstream notifications are not pushed toward renaming real topics.
4
+ * Capturing the first string literal after the call's opening paren on a
5
+ * single line mis-attributes string literals in complex subject arguments
6
+ * and silently skips multi-line call sites. This scans the balanced argument
7
+ * list (across newlines, string-aware), takes the *topic* argument by
8
+ * position, and allowlists well-known Firefox-owned topics so tests that
9
+ * simulate upstream notifications are not pushed toward renaming real
10
+ * topics.
11
11
  */
12
12
  import type { PatchLintIssue } from '../types/commands/index.js';
13
13
  /**
@@ -2,13 +2,13 @@
2
2
  /**
3
3
  * `observer-topic-naming` rule body, extracted from `patch-lint.ts`.
4
4
  *
5
- * The historical implementation captured the first string literal after
6
- * the call's opening paren on a single line. That mis-attributed string
7
- * literals in complex subject arguments and silently skipped multi-line
8
- * call sites. This version scans the balanced argument list (across
9
- * newlines, string-aware), takes the *topic* argument by position, and
10
- * allowlists well-known Firefox-owned topics so tests that simulate
11
- * upstream notifications are not pushed toward renaming real topics.
5
+ * Capturing the first string literal after the call's opening paren on a
6
+ * single line mis-attributes string literals in complex subject arguments
7
+ * and silently skips multi-line call sites. This scans the balanced argument
8
+ * list (across newlines, string-aware), takes the *topic* argument by
9
+ * position, and allowlists well-known Firefox-owned topics so tests that
10
+ * simulate upstream notifications are not pushed toward renaming real
11
+ * topics.
12
12
  */
13
13
  /**
14
14
  * Firefox-owned observer topics a fork legitimately observes or simulates.
@@ -46,22 +46,18 @@ export declare function commentStyleForFile(file: string): CommentStyle | null;
46
46
  * Accepted shapes, in order:
47
47
  * - the project's own header for the file's comment style;
48
48
  * - under `browser/branding/`, ANY recognised license header in the
49
- * matching style: the setup-generated branding directory is copied
50
- * from Firefox's `unofficial` template and arrives with Mozilla
51
- * MPL-2.0 headers — legitimate for copyright purposes (the assets are
52
- * Mozilla's) even when the fork's own code is 0BSD / EUPL-1.2 /
53
- * GPL-2.0-or-later;
49
+ * matching style: the setup-generated branding directory is copied from
50
+ * Firefox's `unofficial` template and arrives with Mozilla MPL-2.0
51
+ * headers — legitimate for copyright purposes (the assets are Mozilla's)
52
+ * even when the fork's own code is 0BSD / EUPL-1.2 / GPL-2.0-or-later;
54
53
  * - on an MPL-2.0 project, any recognised header in the matching style;
55
54
  * - the verbatim upstream MPL-2.0 block header (`/* … *\/`, optionally
56
- * behind a leading editor-directive comment) REGARDLESS of the
57
- * project license, on any file whose comment syntax is the block form
58
- * (JS and CSS): a file copied from the Firefox tree legitimately
59
- * keeps Mozilla's header for provenance in an EUPL/GPL/0BSD project
60
- * too. 0.35.0 accepted this on JS only; field verification showed a
61
- * derived CSS file carrying the identical three-line block header
62
- * still needed a patch-level lintIgnore. Only the block form is
63
- * accepted — the `// `-style MPL header is FireForge-generated, not
64
- * upstream provenance — and `hash`-style files (FTL) stay excluded
55
+ * behind a leading editor-directive comment) REGARDLESS of the project
56
+ * license, on any file whose comment syntax is the block form (JS and
57
+ * CSS): a file copied from the Firefox tree legitimately keeps Mozilla's
58
+ * header for provenance in an EUPL/GPL/0BSD project too. Only the block
59
+ * form is accepted — the `// `-style MPL header is FireForge-generated,
60
+ * not upstream provenance — and `hash`-style files (FTL) stay excluded
65
61
  * because `/* … *\/` is not a comment there.
66
62
  *
67
63
  * @param file - Engine-relative path of the new file
@@ -178,6 +174,29 @@ export declare function lintModifiedFileHeaders(repoDir: string, affectedFiles:
178
174
  * Optional behaviour switches for {@link lintExportedPatch}.
179
175
  */
180
176
  export interface LintExportedPatchOptions {
177
+ /**
178
+ * Cross-patch context for ownership resolution. Present whenever the
179
+ * caller has a loaded patch queue; absent for the ad-hoc single-diff
180
+ * paths that have no queue to resolve against.
181
+ */
182
+ patchQueueCtx?: import('./patch-lint-cross.js').PatchQueueContext;
183
+ /**
184
+ * Per-patch `check` IDs to drop from the returned issues. Threaded from
185
+ * `PatchMetadata.lintIgnore` so a patch that is advisory-noisy by nature
186
+ * (a cohesive branding bundle, auto-generated manifest, etc.) can opt out
187
+ * of a specific rule without reaching for the blunt `--skip-lint` hammer.
188
+ * Not mutated.
189
+ */
190
+ ignoreChecks?: ReadonlySet<string>;
191
+ /**
192
+ * Explicit tier override, threaded from `PatchMetadata.tier`. When
193
+ * `"branding"` forces the branding thresholds on the
194
+ * `large-patch-lines` rule. Callers with a per-patch manifest context
195
+ * (re-export, per-patch lint) should pass this; aggregate-mode callers
196
+ * without a specific patch context omit it and fall through to
197
+ * auto-detection.
198
+ */
199
+ patchTier?: 'branding';
181
200
  /**
182
201
  * Skip the patch-size rules (`large-patch-files` / `large-patch-lines`).
183
202
  * The ad-hoc `fireforge lint <files>` path passes a cross-patch file
@@ -218,20 +237,10 @@ export interface LintExportedPatchOptions {
218
237
  * @param affectedFiles - File paths (relative to repoDir) affected by the patch
219
238
  * @param diffContent - Raw unified diff string
220
239
  * @param config - Project configuration
221
- * @param patchQueueCtx - Optional cross-patch context for ownership resolution
222
- * @param ignoreChecks - Optional set of per-patch `check` IDs to drop from the
223
- * returned issues. Threaded from `PatchMetadata.lintIgnore` so a patch that
224
- * is advisory-noisy by nature (a cohesive branding bundle, auto-generated
225
- * manifest, etc.) can opt out of a specific rule without reaching for the
226
- * blunt `--skip-lint` hammer. Not mutated by this function.
227
- * @param patchTier - Optional explicit tier override, threaded from
228
- * `PatchMetadata.tier`. When `"branding"` forces the branding
229
- * thresholds on the `large-patch-lines` rule. Callers with a
230
- * per-patch manifest context (re-export, per-patch lint) should
231
- * pass this; aggregate-mode callers without a specific patch
232
- * context skip it and fall through to auto-detection.
233
- * @param options - Optional behaviour switches; see
234
- * {@link LintExportedPatchOptions}.
240
+ * @param options - Optional context and behaviour switches; see
241
+ * {@link LintExportedPatchOptions}. Every optional input lives here
242
+ * rather than in a positional tail: four of the five call sites had to
243
+ * pass `undefined` placeholders to reach the one member they wanted.
235
244
  * @returns Array of all lint issues found
236
245
  */
237
- export declare function lintExportedPatch(repoDir: string, affectedFiles: string[], diffContent: string, config: FireForgeConfig, patchQueueCtx?: import('./patch-lint-cross.js').PatchQueueContext, ignoreChecks?: ReadonlySet<string>, patchTier?: 'branding', options?: LintExportedPatchOptions): Promise<PatchLintIssue[]>;
246
+ export declare function lintExportedPatch(repoDir: string, affectedFiles: string[], diffContent: string, config: FireForgeConfig, options?: LintExportedPatchOptions): Promise<PatchLintIssue[]>;