@hominis/fireforge 0.43.1 → 0.44.1
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.
- package/CHANGELOG.md +153 -0
- package/README.md +3 -3
- package/dist/bin/fireforge.d.ts +4 -9
- package/dist/bin/fireforge.js +42 -40
- package/dist/build-info.json +4 -4
- package/dist/src/cli.js +74 -8
- package/dist/src/commands/bootstrap.js +17 -20
- package/dist/src/commands/build.js +25 -32
- package/dist/src/commands/config.js +34 -41
- package/dist/src/commands/discard.js +8 -9
- package/dist/src/commands/doctor-check-core.d.ts +13 -18
- package/dist/src/commands/doctor-check-core.js +8 -35
- package/dist/src/commands/doctor-external-toolchains.js +2 -2
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +18 -0
- package/dist/src/commands/{doctor-furnace-manifest-sync.js → doctor-furnace-config-sync.js} +27 -26
- package/dist/src/commands/doctor-furnace-jar.d.ts +7 -9
- package/dist/src/commands/doctor-furnace-jar.js +7 -9
- package/dist/src/commands/doctor-furnace.js +21 -24
- package/dist/src/commands/doctor-orphaned-harness.d.ts +16 -20
- package/dist/src/commands/doctor-orphaned-harness.js +18 -44
- package/dist/src/commands/doctor-patch-manifest.d.ts +8 -0
- package/dist/src/commands/doctor-patch-manifest.js +155 -0
- package/dist/src/commands/doctor-post-rebase-audit.d.ts +2 -0
- package/dist/src/commands/{doctor/post-rebase-audit.js → doctor-post-rebase-audit.js} +3 -3
- package/dist/src/commands/doctor-working-tree.d.ts +10 -12
- package/dist/src/commands/doctor-working-tree.js +11 -18
- package/dist/src/commands/doctor.d.ts +1 -1
- package/dist/src/commands/doctor.js +64 -96
- package/dist/src/commands/download.js +32 -48
- package/dist/src/commands/export-all.js +29 -33
- package/dist/src/commands/export-flow.js +6 -6
- package/dist/src/commands/export-placement-conflicts.js +10 -9
- package/dist/src/commands/export-placement-gate.js +5 -5
- package/dist/src/commands/export-shared.d.ts +30 -33
- package/dist/src/commands/export-shared.js +45 -43
- package/dist/src/commands/export.js +21 -27
- package/dist/src/commands/furnace/apply.js +14 -23
- package/dist/src/commands/furnace/chrome-doc-remove.js +14 -21
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +23 -23
- package/dist/src/commands/furnace/chrome-doc-templates.js +23 -23
- package/dist/src/commands/furnace/chrome-doc-tests.js +26 -29
- package/dist/src/commands/furnace/chrome-doc.d.ts +16 -17
- package/dist/src/commands/furnace/chrome-doc.js +31 -41
- package/dist/src/commands/furnace/create-browser-test.d.ts +4 -4
- package/dist/src/commands/furnace/create-browser-test.js +8 -8
- package/dist/src/commands/furnace/create-mochikit.d.ts +6 -7
- package/dist/src/commands/furnace/create-mochikit.js +8 -9
- package/dist/src/commands/furnace/create-readback.d.ts +12 -13
- package/dist/src/commands/furnace/create-readback.js +12 -13
- package/dist/src/commands/furnace/create-templates.d.ts +22 -28
- package/dist/src/commands/furnace/create-templates.js +35 -30
- package/dist/src/commands/furnace/create-xpcshell.js +2 -2
- package/dist/src/commands/furnace/create.js +33 -23
- package/dist/src/commands/furnace/deploy.js +16 -24
- package/dist/src/commands/furnace/diff.js +15 -10
- package/dist/src/commands/furnace/init.js +33 -36
- package/dist/src/commands/furnace/override.js +23 -25
- package/dist/src/commands/furnace/preview.js +47 -67
- package/dist/src/commands/furnace/refresh.js +12 -16
- package/dist/src/commands/furnace/remove-mutations.d.ts +3 -6
- package/dist/src/commands/furnace/remove-mutations.js +14 -17
- package/dist/src/commands/furnace/remove-state.js +1 -1
- package/dist/src/commands/furnace/remove.js +33 -38
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +8 -11
- package/dist/src/commands/furnace/rename-xpcshell.js +8 -11
- package/dist/src/commands/furnace/rename.js +59 -69
- package/dist/src/commands/furnace/scan.js +19 -33
- package/dist/src/commands/furnace/status.js +12 -9
- package/dist/src/commands/furnace/sync.js +9 -16
- package/dist/src/commands/furnace/validate.js +20 -20
- package/dist/src/commands/import.js +48 -37
- package/dist/src/commands/lint-per-patch.js +15 -10
- package/dist/src/commands/lint-per-run-checkjs.d.ts +13 -13
- package/dist/src/commands/lint-per-run-checkjs.js +13 -13
- package/dist/src/commands/lint-report.js +6 -7
- package/dist/src/commands/lint.d.ts +15 -16
- package/dist/src/commands/lint.js +86 -102
- package/dist/src/commands/package.js +6 -11
- package/dist/src/commands/patch/compact.js +1 -1
- package/dist/src/commands/patch/delete.js +24 -33
- package/dist/src/commands/patch/index.d.ts +5 -6
- package/dist/src/commands/patch/index.js +10 -12
- package/dist/src/commands/patch/lint-ignore.js +14 -13
- package/dist/src/commands/patch/move-files-create.d.ts +6 -6
- package/dist/src/commands/patch/move-files-create.js +8 -8
- package/dist/src/commands/patch/move-files-into.d.ts +6 -6
- package/dist/src/commands/patch/move-files-into.js +8 -8
- package/dist/src/commands/patch/patch-context.d.ts +2 -3
- package/dist/src/commands/patch/patch-context.js +2 -3
- package/dist/src/commands/patch/rename.d.ts +10 -11
- package/dist/src/commands/patch/rename.js +11 -12
- package/dist/src/commands/patch/reorder.js +8 -9
- package/dist/src/commands/patch/split-plan.js +1 -1
- package/dist/src/commands/patch/split.d.ts +8 -10
- package/dist/src/commands/patch/split.js +9 -11
- package/dist/src/commands/patch/staged-dependency-validate.js +8 -8
- package/dist/src/commands/patch/staged-dependency.js +7 -3
- package/dist/src/commands/patch/tier.d.ts +9 -9
- package/dist/src/commands/patch/tier.js +18 -15
- package/dist/src/commands/re-export-adjacent.js +9 -8
- package/dist/src/commands/re-export-bulk-scan.d.ts +9 -9
- package/dist/src/commands/re-export-bulk-scan.js +22 -21
- package/dist/src/commands/re-export-drift.js +10 -10
- package/dist/src/commands/re-export-files.d.ts +6 -7
- package/dist/src/commands/re-export-files.js +34 -44
- package/dist/src/commands/re-export-lint.d.ts +10 -13
- package/dist/src/commands/re-export-lint.js +16 -14
- package/dist/src/commands/re-export-options.d.ts +6 -6
- package/dist/src/commands/re-export-options.js +6 -6
- package/dist/src/commands/re-export-register.d.ts +4 -10
- package/dist/src/commands/re-export-register.js +5 -11
- package/dist/src/commands/re-export-scan.js +1 -1
- package/dist/src/commands/re-export-single.d.ts +3 -3
- package/dist/src/commands/re-export-single.js +33 -25
- package/dist/src/commands/re-export.js +13 -21
- package/dist/src/commands/rebase/abort.js +3 -3
- package/dist/src/commands/rebase/confirm.js +2 -1
- package/dist/src/commands/rebase/continue.d.ts +1 -1
- package/dist/src/commands/rebase/continue.js +14 -9
- package/dist/src/commands/rebase/index.js +11 -11
- package/dist/src/commands/rebase/patch-loop.d.ts +7 -1
- package/dist/src/commands/rebase/patch-loop.js +60 -39
- package/dist/src/commands/rebase/summary.js +1 -1
- package/dist/src/commands/register.js +5 -7
- package/dist/src/commands/reset.js +2 -1
- package/dist/src/commands/resolve.d.ts +16 -13
- package/dist/src/commands/resolve.js +30 -33
- package/dist/src/commands/run.js +33 -35
- package/dist/src/commands/setup-support.js +15 -19
- package/dist/src/commands/setup.js +13 -9
- package/dist/src/commands/status-check.d.ts +6 -6
- package/dist/src/commands/status-json.d.ts +6 -6
- package/dist/src/commands/status-json.js +5 -0
- package/dist/src/commands/status-output.d.ts +5 -5
- package/dist/src/commands/status-output.js +6 -6
- package/dist/src/commands/status-ownership.d.ts +16 -14
- package/dist/src/commands/status-ownership.js +16 -14
- package/dist/src/commands/status.js +42 -34
- package/dist/src/commands/test-build-phase.js +26 -13
- package/dist/src/commands/test-diagnose.js +44 -44
- package/dist/src/commands/test-register.js +1 -0
- package/dist/src/commands/test-run.d.ts +14 -16
- package/dist/src/commands/test-run.js +21 -13
- package/dist/src/commands/test-stale-gate.d.ts +15 -16
- package/dist/src/commands/test-stale-gate.js +15 -16
- package/dist/src/commands/test-verdict.d.ts +20 -3
- package/dist/src/commands/test-verdict.js +30 -0
- package/dist/src/commands/test.js +83 -76
- package/dist/src/commands/token-coverage.js +3 -4
- package/dist/src/commands/token.js +16 -18
- package/dist/src/commands/tree.js +47 -31
- package/dist/src/commands/typecheck.d.ts +10 -12
- package/dist/src/commands/typecheck.js +24 -27
- package/dist/src/commands/verify.js +13 -15
- package/dist/src/commands/watch.js +21 -23
- package/dist/src/commands/wire.js +52 -62
- package/dist/src/core/ast-utils.d.ts +8 -7
- package/dist/src/core/ast-utils.js +8 -7
- package/dist/src/core/branding.d.ts +9 -14
- package/dist/src/core/branding.js +7 -11
- package/dist/src/core/browser-wire.d.ts +1 -1
- package/dist/src/core/browser-wire.js +14 -19
- package/dist/src/core/build-audit-platform.js +25 -33
- package/dist/src/core/build-audit-registration.js +17 -25
- package/dist/src/core/build-audit-resolve.d.ts +15 -17
- package/dist/src/core/build-audit-resolve.js +39 -36
- package/dist/src/core/build-audit-transforms.js +18 -19
- package/dist/src/core/build-audit.js +28 -42
- package/dist/src/core/build-baseline-types.d.ts +29 -35
- package/dist/src/core/build-baseline.d.ts +5 -4
- package/dist/src/core/build-baseline.js +14 -14
- package/dist/src/core/build-overwrite-guard.d.ts +7 -14
- package/dist/src/core/build-overwrite-guard.js +17 -27
- package/dist/src/core/build-prepare.d.ts +2 -2
- package/dist/src/core/build-prepare.js +8 -9
- package/dist/src/core/config-mutate.js +20 -19
- package/dist/src/core/config-state.js +12 -4
- package/dist/src/core/config-validate.js +8 -5
- package/dist/src/core/config.d.ts +5 -8
- package/dist/src/core/config.js +7 -16
- package/dist/src/core/coverage-extend.d.ts +15 -13
- package/dist/src/core/coverage-extend.js +15 -13
- package/dist/src/core/destructive.d.ts +31 -9
- package/dist/src/core/destructive.js +29 -26
- package/dist/src/core/diff-hunks.js +10 -12
- package/dist/src/core/discard-baseline.d.ts +8 -8
- package/dist/src/core/discard-baseline.js +16 -15
- package/dist/src/core/display-state.d.ts +12 -14
- package/dist/src/core/display-state.js +12 -14
- package/dist/src/core/engine-changes.d.ts +2 -4
- package/dist/src/core/engine-changes.js +2 -4
- package/dist/src/core/engine-precondition.d.ts +28 -13
- package/dist/src/core/engine-precondition.js +25 -10
- package/dist/src/core/engine-session-lock.d.ts +47 -21
- package/dist/src/core/engine-session-lock.js +168 -33
- package/dist/src/core/export-moved-code-shape.d.ts +10 -10
- package/dist/src/core/export-moved-code-shape.js +10 -10
- package/dist/src/core/file-lock.d.ts +62 -5
- package/dist/src/core/file-lock.js +196 -59
- package/dist/src/core/firefox-cache.js +1 -3
- package/dist/src/core/firefox-extract.js +10 -14
- package/dist/src/core/firefox.d.ts +7 -5
- package/dist/src/core/firefox.js +4 -5
- package/dist/src/core/furnace-apply-dry-run.d.ts +2 -2
- package/dist/src/core/furnace-apply-dry-run.js +3 -2
- package/dist/src/core/furnace-apply-ftl.d.ts +7 -9
- package/dist/src/core/furnace-apply-ftl.js +16 -13
- package/dist/src/core/furnace-apply-helpers.d.ts +7 -7
- package/dist/src/core/furnace-apply-helpers.js +30 -21
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +8 -9
- package/dist/src/core/furnace-apply-overwrite-warn.js +8 -9
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +3 -4
- package/dist/src/core/furnace-apply-undeploy-actions.js +3 -4
- package/dist/src/core/furnace-apply.d.ts +5 -8
- package/dist/src/core/furnace-apply.js +19 -24
- package/dist/src/core/furnace-checksum-utils.d.ts +14 -0
- package/dist/src/core/furnace-checksum-utils.js +16 -0
- package/dist/src/core/furnace-config.d.ts +21 -30
- package/dist/src/core/furnace-config.js +32 -54
- package/dist/src/core/furnace-constants.d.ts +8 -0
- package/dist/src/core/furnace-constants.js +10 -2
- package/dist/src/core/furnace-css-fragments.d.ts +5 -5
- package/dist/src/core/furnace-css-fragments.js +5 -5
- package/dist/src/core/furnace-jsconfig.d.ts +11 -12
- package/dist/src/core/furnace-jsconfig.js +11 -12
- package/dist/src/core/furnace-marker.d.ts +7 -8
- package/dist/src/core/furnace-marker.js +7 -8
- package/dist/src/core/furnace-operation.d.ts +31 -0
- package/dist/src/core/furnace-operation.js +54 -17
- package/dist/src/core/furnace-precondition.d.ts +61 -0
- package/dist/src/core/furnace-precondition.js +67 -0
- package/dist/src/core/furnace-registration-remove.d.ts +5 -6
- package/dist/src/core/furnace-registration-remove.js +6 -7
- package/dist/src/core/furnace-registration-validate.d.ts +13 -0
- package/dist/src/core/furnace-registration-validate.js +20 -1
- package/dist/src/core/furnace-registration.d.ts +5 -6
- package/dist/src/core/furnace-registration.js +10 -12
- package/dist/src/core/furnace-rollback.js +7 -7
- package/dist/src/core/furnace-scanner.d.ts +1 -0
- package/dist/src/core/furnace-scanner.js +1 -2
- package/dist/src/core/furnace-stale-export.d.ts +10 -10
- package/dist/src/core/furnace-stale-export.js +10 -10
- package/dist/src/core/furnace-state-persist.d.ts +6 -8
- package/dist/src/core/furnace-state-persist.js +6 -8
- package/dist/src/core/furnace-validate-accessibility.d.ts +22 -0
- package/dist/src/core/furnace-validate-accessibility.js +310 -1
- package/dist/src/core/furnace-validate-compatibility.js +141 -1
- package/dist/src/core/furnace-validate-helpers.d.ts +5 -116
- package/dist/src/core/furnace-validate-helpers.js +0 -491
- package/dist/src/core/furnace-validate-registration.d.ts +7 -0
- package/dist/src/core/furnace-validate-registration.js +115 -41
- package/dist/src/core/furnace-validate.d.ts +16 -0
- package/dist/src/core/furnace-validate.js +188 -145
- package/dist/src/core/furnace-version-drift.d.ts +10 -11
- package/dist/src/core/furnace-version-drift.js +10 -11
- package/dist/src/core/git-base.d.ts +21 -9
- package/dist/src/core/git-base.js +24 -9
- package/dist/src/core/git-diff.d.ts +20 -9
- package/dist/src/core/git-diff.js +148 -63
- package/dist/src/core/git-file-ops.d.ts +19 -19
- package/dist/src/core/git-file-ops.js +19 -19
- package/dist/src/core/git-readonly-index.d.ts +53 -19
- package/dist/src/core/git-readonly-index.js +75 -31
- package/dist/src/core/git-status.d.ts +5 -6
- package/dist/src/core/git-status.js +5 -6
- package/dist/src/core/git.d.ts +9 -10
- package/dist/src/core/git.js +57 -71
- package/dist/src/core/license-headers.d.ts +17 -23
- package/dist/src/core/license-headers.js +17 -23
- package/dist/src/core/mach-build-artifacts.d.ts +9 -9
- package/dist/src/core/mach-build-artifacts.js +57 -19
- package/dist/src/core/mach-error-hints.js +42 -29
- package/dist/src/core/mach-known-noise-filter.d.ts +15 -16
- package/dist/src/core/mach-known-noise-filter.js +18 -20
- package/dist/src/core/mach-mozconfig.d.ts +14 -0
- package/dist/src/core/mach-mozconfig.js +30 -0
- package/dist/src/core/mach-resource-shim.d.ts +43 -58
- package/dist/src/core/mach-resource-shim.js +50 -67
- package/dist/src/core/mach.d.ts +37 -41
- package/dist/src/core/mach.js +50 -51
- package/dist/src/core/marionette-port.d.ts +36 -1
- package/dist/src/core/marionette-port.js +96 -31
- package/dist/src/core/marionette-preflight.d.ts +8 -12
- package/dist/src/core/marionette-preflight.js +86 -52
- package/dist/src/core/mochitest-server-port.d.ts +42 -0
- package/dist/src/core/mochitest-server-port.js +119 -0
- package/dist/src/core/module-resolution-preflight.d.ts +9 -11
- package/dist/src/core/module-resolution-preflight.js +9 -11
- package/dist/src/core/moz-manifest-helpers.d.ts +79 -0
- package/dist/src/core/moz-manifest-helpers.js +163 -0
- package/dist/src/core/{manifest-register.d.ts → moz-manifest-register.d.ts} +1 -1
- package/dist/src/core/{manifest-register.js → moz-manifest-register.js} +13 -28
- package/dist/src/core/{manifest-rules.d.ts → moz-manifest-rules.d.ts} +10 -1
- package/dist/src/core/{manifest-rules.js → moz-manifest-rules.js} +31 -24
- package/dist/src/core/{manifest-tokenizers.d.ts → moz-manifest-tokenizers.d.ts} +3 -5
- package/dist/src/core/{manifest-tokenizers.js → moz-manifest-tokenizers.js} +9 -12
- package/dist/src/core/ownership-table.d.ts +14 -16
- package/dist/src/core/ownership-table.js +14 -16
- package/dist/src/core/parser-fallback.d.ts +15 -1
- package/dist/src/core/parser-fallback.js +22 -3
- package/dist/src/core/patch-apply-fuzz.d.ts +10 -12
- package/dist/src/core/patch-apply-fuzz.js +15 -18
- package/dist/src/core/patch-apply.d.ts +13 -34
- package/dist/src/core/patch-apply.js +16 -76
- package/dist/src/core/patch-artifact-normalize.d.ts +13 -15
- package/dist/src/core/patch-artifact-normalize.js +13 -15
- package/dist/src/core/patch-export-metadata.d.ts +12 -2
- package/dist/src/core/patch-export-metadata.js +13 -4
- package/dist/src/core/patch-export-update.d.ts +13 -1
- package/dist/src/core/patch-export-update.js +25 -8
- package/dist/src/core/patch-export.d.ts +15 -8
- package/dist/src/core/patch-export.js +10 -11
- package/dist/src/core/patch-files.d.ts +5 -6
- package/dist/src/core/patch-files.js +5 -6
- package/dist/src/core/patch-identifier-suggest.d.ts +7 -12
- package/dist/src/core/patch-identifier-suggest.js +14 -19
- package/dist/src/core/patch-lint-binary.d.ts +51 -0
- package/dist/src/core/patch-lint-binary.js +39 -0
- package/dist/src/core/{lint-cache.d.ts → patch-lint-cache.d.ts} +5 -5
- package/dist/src/core/{lint-cache.js → patch-lint-cache.js} +21 -23
- package/dist/src/core/patch-lint-checkjs.d.ts +16 -16
- package/dist/src/core/patch-lint-checkjs.js +41 -20
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +6 -9
- package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -14
- package/dist/src/core/patch-lint-creators.d.ts +8 -8
- package/dist/src/core/patch-lint-creators.js +8 -8
- package/dist/src/core/patch-lint-cross.d.ts +17 -20
- package/dist/src/core/patch-lint-cross.js +16 -16
- package/dist/src/core/patch-lint-css.d.ts +3 -5
- package/dist/src/core/patch-lint-css.js +17 -22
- package/dist/src/core/patch-lint-diff-tag.d.ts +14 -16
- package/dist/src/core/patch-lint-diff-tag.js +14 -16
- package/dist/src/core/patch-lint-jsdoc.d.ts +7 -8
- package/dist/src/core/patch-lint-jsdoc.js +26 -19
- package/dist/src/core/patch-lint-mozbuild.js +20 -20
- package/dist/src/core/patch-lint-observer.d.ts +7 -7
- package/dist/src/core/patch-lint-observer.js +7 -7
- package/dist/src/core/patch-lint.d.ts +38 -29
- package/dist/src/core/patch-lint.js +89 -121
- package/dist/src/core/patch-lock.d.ts +1 -1
- package/dist/src/core/patch-lock.js +45 -9
- package/dist/src/core/patch-manifest-consistency.d.ts +57 -6
- package/dist/src/core/patch-manifest-consistency.js +111 -40
- package/dist/src/core/patch-manifest-files-affected.d.ts +43 -0
- package/dist/src/core/patch-manifest-files-affected.js +77 -0
- package/dist/src/core/patch-manifest-io.js +14 -18
- package/dist/src/core/patch-manifest-resolve.d.ts +9 -12
- package/dist/src/core/patch-manifest-resolve.js +9 -12
- package/dist/src/core/patch-manifest-validate.d.ts +6 -1
- package/dist/src/core/patch-manifest-validate.js +25 -13
- package/dist/src/core/patch-manifest.d.ts +2 -1
- package/dist/src/core/patch-manifest.js +2 -1
- package/dist/src/core/patch-parse.d.ts +24 -13
- package/dist/src/core/patch-parse.js +19 -14
- package/dist/src/core/patch-policy.d.ts +2 -2
- package/dist/src/core/patch-policy.js +2 -2
- package/dist/src/core/patch-registration-refs.d.ts +7 -8
- package/dist/src/core/patch-registration-refs.js +9 -9
- package/dist/src/core/process-cpu-time.d.ts +12 -0
- package/dist/src/core/process-cpu-time.js +52 -0
- package/dist/src/core/rebase-session.d.ts +38 -26
- package/dist/src/core/rebase-session.js +55 -28
- package/dist/src/core/register-browser-content.js +9 -74
- package/dist/src/core/{register-test-manifest.js → register-browser-test.js} +7 -42
- package/dist/src/core/register-module.js +10 -43
- package/dist/src/core/register-scaffold.d.ts +8 -8
- package/dist/src/core/register-scaffold.js +10 -10
- package/dist/src/core/register-shared-css.d.ts +9 -12
- package/dist/src/core/register-shared-css.js +17 -87
- package/dist/src/core/register-xpcshell-test.d.ts +6 -7
- package/dist/src/core/register-xpcshell-test.js +7 -8
- package/dist/src/core/shared-ftl.js +12 -4
- package/dist/src/core/state-file.d.ts +45 -0
- package/dist/src/core/state-file.js +34 -0
- package/dist/src/core/status-binary.d.ts +18 -11
- package/dist/src/core/status-binary.js +19 -12
- package/dist/src/core/status-classify.d.ts +30 -36
- package/dist/src/core/status-classify.js +21 -26
- package/dist/src/core/test-changed-prefs.d.ts +30 -0
- package/dist/src/core/test-changed-prefs.js +78 -0
- package/dist/src/core/test-harness-crash.d.ts +25 -63
- package/dist/src/core/test-harness-crash.js +121 -142
- package/dist/src/core/test-harness-signature.d.ts +18 -0
- package/dist/src/core/test-harness-signature.js +13 -0
- package/dist/src/core/test-path-scope.d.ts +12 -15
- package/dist/src/core/test-path-scope.js +15 -18
- package/dist/src/core/test-stale-check.d.ts +17 -17
- package/dist/src/core/test-stale-check.js +50 -43
- package/dist/src/core/test-stall-triage.d.ts +51 -0
- package/dist/src/core/test-stall-triage.js +126 -0
- package/dist/src/core/token-category.js +66 -14
- package/dist/src/core/token-coverage.js +9 -9
- package/dist/src/core/token-dark-mode.d.ts +9 -11
- package/dist/src/core/token-dark-mode.js +29 -13
- package/dist/src/core/token-docs.d.ts +2 -0
- package/dist/src/core/token-docs.js +3 -1
- package/dist/src/core/token-manager.d.ts +10 -2
- package/dist/src/core/token-manager.js +17 -8
- package/dist/src/core/token-scaffold.d.ts +7 -7
- package/dist/src/core/token-scaffold.js +7 -7
- package/dist/src/core/token-variant.d.ts +4 -4
- package/dist/src/core/token-variant.js +28 -6
- package/dist/src/core/toolchain-preflight.d.ts +20 -21
- package/dist/src/core/toolchain-preflight.js +28 -31
- package/dist/src/core/tree-guard.js +12 -2
- package/dist/src/core/tree-store.d.ts +41 -27
- package/dist/src/core/tree-store.js +68 -43
- package/dist/src/core/typecheck-shim.d.ts +23 -24
- package/dist/src/core/typecheck-shim.js +23 -24
- package/dist/src/core/typecheck.js +15 -9
- package/dist/src/core/wire-destroy.d.ts +3 -3
- package/dist/src/core/wire-destroy.js +7 -15
- package/dist/src/core/wire-dom-fragment.d.ts +9 -17
- package/dist/src/core/wire-dom-fragment.js +11 -44
- package/dist/src/core/wire-init.d.ts +2 -3
- package/dist/src/core/wire-init.js +8 -19
- package/dist/src/core/wire-subscript.d.ts +2 -3
- package/dist/src/core/wire-subscript.js +4 -13
- package/dist/src/core/wire-utils.d.ts +7 -8
- package/dist/src/core/wire-utils.js +7 -8
- package/dist/src/core/xpcshell-appdir.d.ts +38 -45
- package/dist/src/core/xpcshell-appdir.js +38 -45
- package/dist/src/errors/base.d.ts +37 -16
- package/dist/src/errors/base.js +37 -16
- package/dist/src/errors/build.d.ts +13 -1
- package/dist/src/errors/build.js +14 -2
- package/dist/src/errors/codes.d.ts +16 -0
- package/dist/src/errors/codes.js +16 -0
- package/dist/src/errors/furnace.d.ts +4 -4
- package/dist/src/errors/git.d.ts +6 -10
- package/dist/src/errors/git.js +6 -10
- package/dist/src/errors/patch.d.ts +7 -7
- package/dist/src/errors/patch.js +7 -7
- package/dist/src/errors/rebase.d.ts +4 -4
- package/dist/src/errors/rebase.js +4 -4
- package/dist/src/index.d.ts +7 -1
- package/dist/src/index.js +5 -0
- package/dist/src/types/commands/index.d.ts +2 -2
- package/dist/src/types/commands/options.d.ts +111 -70
- package/dist/src/types/commands/patches.d.ts +24 -34
- package/dist/src/types/commands/project.d.ts +5 -34
- package/dist/src/types/config.d.ts +25 -23
- package/dist/src/types/config.js +6 -1
- package/dist/src/types/furnace.d.ts +37 -13
- package/dist/src/types/furnace.js +19 -1
- package/dist/src/types/index.d.ts +3 -3
- package/dist/src/utils/build-info.d.ts +7 -8
- package/dist/src/utils/build-info.js +12 -11
- package/dist/src/utils/errors.d.ts +6 -8
- package/dist/src/utils/errors.js +6 -8
- package/dist/src/utils/logger.d.ts +27 -10
- package/dist/src/utils/logger.js +28 -16
- package/dist/src/utils/machine-output.d.ts +12 -0
- package/dist/src/utils/machine-output.js +33 -0
- package/dist/src/utils/options.d.ts +31 -14
- package/dist/src/utils/options.js +86 -30
- package/dist/src/utils/paths.d.ts +10 -8
- package/dist/src/utils/paths.js +10 -8
- package/dist/src/utils/platform.d.ts +0 -25
- package/dist/src/utils/platform.js +1 -42
- package/dist/src/utils/process-group.d.ts +9 -4
- package/dist/src/utils/process-group.js +19 -5
- package/dist/src/utils/process.d.ts +42 -7
- package/dist/src/utils/process.js +44 -17
- package/dist/src/utils/ps-duration.d.ts +31 -0
- package/dist/src/utils/ps-duration.js +70 -0
- package/dist/src/utils/regex.d.ts +9 -10
- package/dist/src/utils/regex.js +9 -10
- package/dist/src/utils/validation.d.ts +58 -28
- package/dist/src/utils/validation.js +60 -33
- package/package.json +3 -3
- package/dist/src/commands/doctor/post-rebase-audit.d.ts +0 -2
- package/dist/src/commands/doctor-furnace-manifest-sync.d.ts +0 -18
- package/dist/src/core/manifest-helpers.d.ts +0 -38
- package/dist/src/core/manifest-helpers.js +0 -120
- /package/dist/src/core/{lint-projection.d.ts → patch-lint-projection.d.ts} +0 -0
- /package/dist/src/core/{lint-projection.js → patch-lint-projection.js} +0 -0
- /package/dist/src/core/{register-test-manifest.d.ts → register-browser-test.d.ts} +0 -0
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Diff-scoping for `fireforge lint`.
|
|
3
3
|
*
|
|
4
4
|
* Pre-existing patch-state errors and errors introduced by the current task
|
|
5
|
-
* print identically
|
|
6
|
-
*
|
|
5
|
+
* print identically, so triaging "is the diff I just produced clean?"
|
|
6
|
+
* otherwise means mentally subtracting the pre-existing noise. This module
|
|
7
7
|
* classifies each lint issue as either `introduced` (the file was touched
|
|
8
8
|
* since the user-supplied git revision) or `cumulative` (pre-existing
|
|
9
9
|
* drift), without changing what the underlying rules emit.
|
|
@@ -32,21 +32,19 @@ export declare const AGGREGATE_PATCH_FILE = "(patch)";
|
|
|
32
32
|
*
|
|
33
33
|
* Issues with no file (`issue.file === ''`) — e.g. cross-patch rules that
|
|
34
34
|
* describe queue-wide state — are always `cumulative` under `--since`
|
|
35
|
-
* because they describe drift accumulated across many commits, not a
|
|
36
|
-
*
|
|
35
|
+
* because they describe drift accumulated across many commits, not a single
|
|
36
|
+
* current-task edit.
|
|
37
|
+
*
|
|
38
|
+
* Aggregate patch-size rules emit `issue.file === AGGREGATE_PATCH_FILE`, a
|
|
39
|
+
* synthetic placeholder that can never appear in a real `diffFiles` set.
|
|
40
|
+
* Without special-casing, `large-patch-files` / `large-patch-lines` are
|
|
41
|
+
* always tagged `[cumulative]` under `--only-introduced` even when the diff
|
|
42
|
+
* IS the aggregate the rules measured, which reads as "this pre-existed" to
|
|
43
|
+
* an operator asking "what did this diff introduce?". The aggregate tag is
|
|
44
|
+
* therefore promoted to `introduced` whenever the diff set has any content:
|
|
45
|
+
* a non-empty `diffFiles` means the operator asked about a specific diff
|
|
46
|
+
* scope, and the aggregate finding describes exactly that scope.
|
|
37
47
|
*
|
|
38
|
-
* Aggregate patch-size rules emit `issue.file === AGGREGATE_PATCH_FILE`,
|
|
39
|
-
* which is a synthetic placeholder that will never appear in a real
|
|
40
|
-
* `diffFiles` set. Without special-casing, `large-patch-files` /
|
|
41
|
-
* `large-patch-lines` were always tagged `[cumulative]` under
|
|
42
|
-
* `--only-introduced` even when the diff WAS the aggregate the rules
|
|
43
|
-
* measured — the eval (Finding #4) reported a stack of 20+ imported
|
|
44
|
-
* patches whose aggregate-size warnings printed as `[cumulative]` under
|
|
45
|
-
* `lint --since HEAD --only-introduced`, which reads as "this pre-existed"
|
|
46
|
-
* to an operator asking "what did this diff introduce?" We promote the
|
|
47
|
-
* aggregate tag to `introduced` whenever the diff set has any content —
|
|
48
|
-
* non-empty `diffFiles` means the operator asked about a specific diff
|
|
49
|
-
* scope and the aggregate-rule finding describes exactly that scope.
|
|
50
48
|
* @param issues Issues returned by the lint orchestrator.
|
|
51
49
|
* @param diffFiles File paths touched since the user's revision.
|
|
52
50
|
*/
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Diff-scoping for `fireforge lint`.
|
|
4
4
|
*
|
|
5
5
|
* Pre-existing patch-state errors and errors introduced by the current task
|
|
6
|
-
* print identically
|
|
7
|
-
*
|
|
6
|
+
* print identically, so triaging "is the diff I just produced clean?"
|
|
7
|
+
* otherwise means mentally subtracting the pre-existing noise. This module
|
|
8
8
|
* classifies each lint issue as either `introduced` (the file was touched
|
|
9
9
|
* since the user-supplied git revision) or `cumulative` (pre-existing
|
|
10
10
|
* drift), without changing what the underlying rules emit.
|
|
@@ -72,21 +72,19 @@ export const AGGREGATE_PATCH_FILE = '(patch)';
|
|
|
72
72
|
*
|
|
73
73
|
* Issues with no file (`issue.file === ''`) — e.g. cross-patch rules that
|
|
74
74
|
* describe queue-wide state — are always `cumulative` under `--since`
|
|
75
|
-
* because they describe drift accumulated across many commits, not a
|
|
76
|
-
*
|
|
75
|
+
* because they describe drift accumulated across many commits, not a single
|
|
76
|
+
* current-task edit.
|
|
77
|
+
*
|
|
78
|
+
* Aggregate patch-size rules emit `issue.file === AGGREGATE_PATCH_FILE`, a
|
|
79
|
+
* synthetic placeholder that can never appear in a real `diffFiles` set.
|
|
80
|
+
* Without special-casing, `large-patch-files` / `large-patch-lines` are
|
|
81
|
+
* always tagged `[cumulative]` under `--only-introduced` even when the diff
|
|
82
|
+
* IS the aggregate the rules measured, which reads as "this pre-existed" to
|
|
83
|
+
* an operator asking "what did this diff introduce?". The aggregate tag is
|
|
84
|
+
* therefore promoted to `introduced` whenever the diff set has any content:
|
|
85
|
+
* a non-empty `diffFiles` means the operator asked about a specific diff
|
|
86
|
+
* scope, and the aggregate finding describes exactly that scope.
|
|
77
87
|
*
|
|
78
|
-
* Aggregate patch-size rules emit `issue.file === AGGREGATE_PATCH_FILE`,
|
|
79
|
-
* which is a synthetic placeholder that will never appear in a real
|
|
80
|
-
* `diffFiles` set. Without special-casing, `large-patch-files` /
|
|
81
|
-
* `large-patch-lines` were always tagged `[cumulative]` under
|
|
82
|
-
* `--only-introduced` even when the diff WAS the aggregate the rules
|
|
83
|
-
* measured — the eval (Finding #4) reported a stack of 20+ imported
|
|
84
|
-
* patches whose aggregate-size warnings printed as `[cumulative]` under
|
|
85
|
-
* `lint --since HEAD --only-introduced`, which reads as "this pre-existed"
|
|
86
|
-
* to an operator asking "what did this diff introduce?" We promote the
|
|
87
|
-
* aggregate tag to `introduced` whenever the diff set has any content —
|
|
88
|
-
* non-empty `diffFiles` means the operator asked about a specific diff
|
|
89
|
-
* scope and the aggregate-rule finding describes exactly that scope.
|
|
90
88
|
* @param issues Issues returned by the lint orchestrator.
|
|
91
89
|
* @param diffFiles File paths touched since the user's revision.
|
|
92
90
|
*/
|
|
@@ -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,
|
|
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,
|
|
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
|
-
*
|
|
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
|
-
*
|
|
58
|
-
*
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
-
*
|
|
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
|
-
*
|
|
338
|
-
*
|
|
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,
|
|
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,
|
|
432
|
+
issues.push(...validateFunctionDecl(decl, comments, source, exportStart));
|
|
426
433
|
}
|
|
427
434
|
else if (decl.type === 'ClassDeclaration') {
|
|
428
|
-
validateClassDecl(decl, comments, source,
|
|
435
|
+
issues.push(...validateClassDecl(decl, comments, source, exportStart));
|
|
429
436
|
if (classMethodMode !== 'off') {
|
|
430
|
-
validateClassMethods(decl, comments, source,
|
|
437
|
+
issues.push(...validateClassMethods(decl, comments, source, classMethodMode));
|
|
431
438
|
}
|
|
432
439
|
}
|
|
433
440
|
else if (decl.type === 'VariableDeclaration') {
|
|
434
|
-
validateVariableDecl(decl, comments, source,
|
|
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
|
|
456
|
+
issues.push(...validateFunctionDecl(localDecl, comments, source));
|
|
450
457
|
}
|
|
451
458
|
else if (localDecl.type === 'ClassDeclaration') {
|
|
452
|
-
validateClassDecl(localDecl, comments, source
|
|
459
|
+
issues.push(...validateClassDecl(localDecl, comments, source));
|
|
453
460
|
if (classMethodMode !== 'off') {
|
|
454
|
-
validateClassMethods(localDecl, comments, source,
|
|
461
|
+
issues.push(...validateClassMethods(localDecl, comments, source, classMethodMode));
|
|
455
462
|
}
|
|
456
463
|
}
|
|
457
464
|
else {
|
|
458
|
-
validateVariableDecl(localDecl, comments, source
|
|
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
|
|
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
|
|
88
|
-
* moz.build is Python
|
|
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
|
|
91
|
-
* item (`"Zeta.cpp", # replaces "Beta.cpp"`
|
|
92
|
-
* the sort check
|
|
93
|
-
* with a fingerprint that
|
|
94
|
-
* exist to be moved;
|
|
95
|
-
* - a `]` anywhere in a comment (`# see foo[0]`)
|
|
96
|
-
* silently
|
|
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
|
|
99
|
-
* list
|
|
100
|
-
*
|
|
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
|
|
104
|
-
*
|
|
105
|
-
* `EXTRA_JS_MODULES
|
|
106
|
-
* `]`
|
|
107
|
-
* variable that never contained those items
|
|
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
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
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
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
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
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
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
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
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,
|
|
246
|
+
export declare function lintExportedPatch(repoDir: string, affectedFiles: string[], diffContent: string, config: FireForgeConfig, options?: LintExportedPatchOptions): Promise<PatchLintIssue[]>;
|