@hominis/fireforge 0.46.0 → 0.46.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +381 -498
- package/dist/bin/fireforge.d.ts +1 -1
- package/dist/bin/fireforge.js +17 -17
- package/dist/build-info.json +4 -4
- package/dist/src/cli-usage-error.d.ts +9 -9
- package/dist/src/cli-usage-error.js +12 -12
- package/dist/src/cli.d.ts +3 -2
- package/dist/src/cli.js +29 -28
- package/dist/src/commands/bootstrap-checks.js +2 -1
- package/dist/src/commands/bootstrap.js +2 -2
- package/dist/src/commands/build.js +12 -11
- package/dist/src/commands/config.js +9 -9
- package/dist/src/commands/destructive-decision.d.ts +4 -4
- package/dist/src/commands/destructive-decision.js +4 -4
- package/dist/src/commands/discard.js +5 -5
- package/dist/src/commands/doctor-check-core.d.ts +4 -4
- package/dist/src/commands/doctor-external-toolchains.js +2 -2
- package/dist/src/commands/doctor-furnace-config-sync.d.ts +2 -2
- package/dist/src/commands/doctor-furnace-config-sync.js +20 -20
- package/dist/src/commands/doctor-furnace-jar.d.ts +1 -1
- package/dist/src/commands/doctor-furnace-jar.js +1 -1
- package/dist/src/commands/doctor-furnace.js +22 -22
- package/dist/src/commands/doctor-orphaned-harness.d.ts +10 -11
- package/dist/src/commands/doctor-orphaned-harness.js +10 -11
- package/dist/src/commands/doctor-patch-manifest.d.ts +2 -1
- package/dist/src/commands/doctor-patch-manifest.js +7 -6
- package/dist/src/commands/doctor-post-rebase-audit.js +2 -2
- package/dist/src/commands/doctor-source-pin.d.ts +12 -12
- package/dist/src/commands/doctor-source-pin.js +14 -14
- package/dist/src/commands/doctor-working-tree.d.ts +3 -3
- package/dist/src/commands/doctor-working-tree.js +3 -3
- package/dist/src/commands/doctor.d.ts +2 -2
- package/dist/src/commands/doctor.js +9 -9
- package/dist/src/commands/download.js +15 -13
- package/dist/src/commands/export-all.js +8 -8
- package/dist/src/commands/export-flow.d.ts +5 -5
- package/dist/src/commands/export-flow.js +14 -14
- package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
- package/dist/src/commands/export-placement-conflicts.js +9 -9
- package/dist/src/commands/export-placement-gate.d.ts +2 -2
- package/dist/src/commands/export-placement-gate.js +5 -5
- package/dist/src/commands/export-placement-policy.d.ts +1 -1
- package/dist/src/commands/export-placement-policy.js +1 -1
- package/dist/src/commands/export-shared.d.ts +10 -10
- package/dist/src/commands/export-shared.js +13 -13
- package/dist/src/commands/export.js +4 -4
- package/dist/src/commands/furnace/apply.js +16 -16
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
- package/dist/src/commands/furnace/chrome-doc-remove.js +1 -1
- package/dist/src/commands/furnace/chrome-doc-templates.d.ts +14 -14
- package/dist/src/commands/furnace/chrome-doc-templates.js +17 -17
- package/dist/src/commands/furnace/chrome-doc-tests.d.ts +2 -2
- package/dist/src/commands/furnace/chrome-doc-tests.js +4 -4
- package/dist/src/commands/furnace/chrome-doc.d.ts +8 -8
- package/dist/src/commands/furnace/chrome-doc.js +18 -18
- package/dist/src/commands/furnace/create-browser-test.d.ts +1 -1
- package/dist/src/commands/furnace/create-browser-test.js +4 -4
- package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
- package/dist/src/commands/furnace/create-dry-run.js +4 -4
- package/dist/src/commands/furnace/create-features.d.ts +2 -2
- package/dist/src/commands/furnace/create-features.js +2 -2
- package/dist/src/commands/furnace/create-mochikit.d.ts +4 -4
- package/dist/src/commands/furnace/create-mochikit.js +7 -7
- package/dist/src/commands/furnace/create-templates.d.ts +14 -14
- package/dist/src/commands/furnace/create-templates.js +18 -18
- package/dist/src/commands/furnace/create-xpcshell.d.ts +5 -5
- package/dist/src/commands/furnace/create-xpcshell.js +8 -8
- package/dist/src/commands/furnace/create.d.ts +1 -1
- package/dist/src/commands/furnace/create.js +10 -10
- package/dist/src/commands/furnace/deploy.js +4 -4
- package/dist/src/commands/furnace/diff.js +7 -7
- package/dist/src/commands/furnace/index.js +1 -1
- package/dist/src/commands/furnace/init.js +15 -15
- package/dist/src/commands/furnace/list.js +2 -2
- package/dist/src/commands/furnace/override.d.ts +1 -1
- package/dist/src/commands/furnace/override.js +15 -15
- package/dist/src/commands/furnace/preview.js +17 -17
- package/dist/src/commands/furnace/refresh.js +6 -6
- package/dist/src/commands/furnace/remove-mutations.d.ts +3 -3
- package/dist/src/commands/furnace/remove-mutations.js +19 -18
- package/dist/src/commands/furnace/remove-state.d.ts +1 -1
- package/dist/src/commands/furnace/remove-state.js +1 -1
- package/dist/src/commands/furnace/remove.js +2 -2
- package/dist/src/commands/furnace/rename-browser-test.js +9 -8
- package/dist/src/commands/furnace/rename-xpcshell.d.ts +2 -2
- package/dist/src/commands/furnace/rename-xpcshell.js +3 -3
- package/dist/src/commands/furnace/rename.js +9 -9
- package/dist/src/commands/furnace/scan.js +3 -3
- package/dist/src/commands/furnace/status.js +7 -7
- package/dist/src/commands/furnace/sync.js +6 -6
- package/dist/src/commands/furnace/test-file-name.d.ts +2 -2
- package/dist/src/commands/furnace/test-file-name.js +2 -2
- package/dist/src/commands/furnace/validate.js +11 -12
- package/dist/src/commands/import.js +20 -20
- package/dist/src/commands/lint-per-patch.js +8 -8
- package/dist/src/commands/lint-per-run-checkjs.d.ts +12 -13
- package/dist/src/commands/lint-per-run-checkjs.js +14 -15
- package/dist/src/commands/lint-report.d.ts +3 -3
- package/dist/src/commands/lint-report.js +4 -4
- package/dist/src/commands/lint.d.ts +3 -3
- package/dist/src/commands/lint.js +35 -35
- package/dist/src/commands/manifest.d.ts +4 -4
- package/dist/src/commands/package.js +2 -2
- package/dist/src/commands/patch/compact.d.ts +2 -2
- package/dist/src/commands/patch/compact.js +8 -8
- package/dist/src/commands/patch/delete.d.ts +1 -1
- package/dist/src/commands/patch/delete.js +8 -8
- package/dist/src/commands/patch/lint-ignore.d.ts +3 -4
- package/dist/src/commands/patch/lint-ignore.js +14 -15
- package/dist/src/commands/patch/move-files-create.d.ts +2 -2
- package/dist/src/commands/patch/move-files-create.js +5 -5
- package/dist/src/commands/patch/move-files-into.d.ts +2 -2
- package/dist/src/commands/patch/move-files-into.js +3 -3
- package/dist/src/commands/patch/move-files.js +1 -1
- package/dist/src/commands/patch/patch-context.d.ts +1 -1
- package/dist/src/commands/patch/rename.d.ts +4 -4
- package/dist/src/commands/patch/rename.js +8 -8
- package/dist/src/commands/patch/reorder.js +10 -10
- package/dist/src/commands/patch/split-plan.d.ts +3 -3
- package/dist/src/commands/patch/split-plan.js +6 -5
- package/dist/src/commands/patch/split.d.ts +2 -2
- package/dist/src/commands/patch/split.js +5 -5
- package/dist/src/commands/patch/staged-dependency-validate.d.ts +1 -1
- package/dist/src/commands/patch/staged-dependency-validate.js +3 -3
- package/dist/src/commands/patch/staged-dependency.d.ts +1 -1
- package/dist/src/commands/patch/staged-dependency.js +6 -6
- package/dist/src/commands/patch/tier.d.ts +2 -2
- package/dist/src/commands/patch/tier.js +5 -5
- package/dist/src/commands/patch-rename-map.d.ts +1 -1
- package/dist/src/commands/patch-rename-map.js +1 -1
- package/dist/src/commands/pending-resolution.d.ts +5 -5
- package/dist/src/commands/pending-resolution.js +5 -5
- package/dist/src/commands/re-export-adjacent.d.ts +3 -3
- package/dist/src/commands/re-export-adjacent.js +8 -8
- package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
- package/dist/src/commands/re-export-bulk-scan.js +17 -17
- package/dist/src/commands/re-export-drift.d.ts +10 -10
- package/dist/src/commands/re-export-drift.js +29 -29
- package/dist/src/commands/re-export-files.js +14 -15
- package/dist/src/commands/re-export-lint.d.ts +26 -26
- package/dist/src/commands/re-export-lint.js +27 -27
- package/dist/src/commands/re-export-options.d.ts +1 -1
- package/dist/src/commands/re-export-options.js +1 -1
- package/dist/src/commands/re-export-register.d.ts +1 -1
- package/dist/src/commands/re-export-register.js +1 -1
- package/dist/src/commands/re-export-scan.d.ts +1 -1
- package/dist/src/commands/re-export-scan.js +7 -7
- package/dist/src/commands/re-export-single.d.ts +1 -1
- package/dist/src/commands/re-export-single.js +20 -20
- package/dist/src/commands/re-export.js +7 -6
- package/dist/src/commands/rebase/abort.js +6 -6
- package/dist/src/commands/rebase/continue.js +8 -7
- package/dist/src/commands/rebase/index.d.ts +1 -1
- package/dist/src/commands/rebase/index.js +3 -3
- package/dist/src/commands/rebase/patch-loop.js +18 -17
- package/dist/src/commands/register.js +5 -5
- package/dist/src/commands/reset.js +1 -1
- package/dist/src/commands/resolve.d.ts +2 -2
- package/dist/src/commands/resolve.js +3 -3
- package/dist/src/commands/run.js +26 -26
- package/dist/src/commands/setup-support.js +4 -4
- package/dist/src/commands/setup.js +1 -1
- package/dist/src/commands/source.js +1 -1
- package/dist/src/commands/status-check.d.ts +3 -3
- package/dist/src/commands/status-check.js +4 -4
- package/dist/src/commands/status-json.d.ts +14 -13
- package/dist/src/commands/status-json.js +9 -8
- package/dist/src/commands/status-output.d.ts +3 -3
- package/dist/src/commands/status-output.js +3 -3
- package/dist/src/commands/status-ownership.d.ts +3 -3
- package/dist/src/commands/status-ownership.js +3 -3
- package/dist/src/commands/status.js +22 -22
- package/dist/src/commands/test-build-phase.d.ts +1 -1
- package/dist/src/commands/test-build-phase.js +17 -17
- package/dist/src/commands/test-diagnose.d.ts +1 -1
- package/dist/src/commands/test-diagnose.js +20 -20
- package/dist/src/commands/test-modes.d.ts +2 -2
- package/dist/src/commands/test-modes.js +4 -4
- package/dist/src/commands/test-run.d.ts +11 -11
- package/dist/src/commands/test-run.js +15 -15
- package/dist/src/commands/test-stale-gate.d.ts +12 -12
- package/dist/src/commands/test-stale-gate.js +13 -13
- package/dist/src/commands/test-verdict.d.ts +6 -6
- package/dist/src/commands/test-verdict.js +11 -11
- package/dist/src/commands/test.d.ts +3 -3
- package/dist/src/commands/test.js +36 -36
- package/dist/src/commands/token-coverage.js +3 -3
- package/dist/src/commands/token-list.js +5 -5
- package/dist/src/commands/token.js +9 -9
- package/dist/src/commands/tree.js +19 -19
- package/dist/src/commands/typecheck.d.ts +6 -6
- package/dist/src/commands/typecheck.js +7 -7
- package/dist/src/commands/verify.d.ts +3 -3
- package/dist/src/commands/verify.js +10 -10
- package/dist/src/commands/watch.js +11 -11
- package/dist/src/commands/wire.js +13 -13
- package/dist/src/core/ast-utils.d.ts +7 -7
- package/dist/src/core/ast-utils.js +8 -8
- package/dist/src/core/branding.d.ts +5 -5
- package/dist/src/core/branding.js +3 -3
- package/dist/src/core/browser-wire.d.ts +1 -1
- package/dist/src/core/browser-wire.js +4 -4
- package/dist/src/core/build-audit-platform.d.ts +6 -6
- package/dist/src/core/build-audit-platform.js +26 -26
- package/dist/src/core/build-audit-registration.d.ts +5 -5
- package/dist/src/core/build-audit-registration.js +7 -7
- package/dist/src/core/build-audit-resolve.d.ts +5 -5
- package/dist/src/core/build-audit-resolve.js +6 -6
- package/dist/src/core/build-audit-skip.d.ts +8 -8
- package/dist/src/core/build-audit-skip.js +12 -12
- package/dist/src/core/build-audit-transforms.d.ts +2 -2
- package/dist/src/core/build-audit-transforms.js +3 -3
- package/dist/src/core/build-audit.d.ts +8 -8
- package/dist/src/core/build-audit.js +39 -37
- package/dist/src/core/build-baseline-types.d.ts +19 -18
- package/dist/src/core/build-baseline-types.js +1 -1
- package/dist/src/core/build-baseline.d.ts +8 -8
- package/dist/src/core/build-baseline.js +14 -14
- package/dist/src/core/build-jar-escalation.d.ts +8 -8
- package/dist/src/core/build-jar-escalation.js +15 -15
- package/dist/src/core/build-overwrite-guard.d.ts +4 -4
- package/dist/src/core/build-overwrite-guard.js +13 -13
- package/dist/src/core/build-prepare.d.ts +4 -4
- package/dist/src/core/build-prepare.js +16 -15
- package/dist/src/core/config-mutate.js +4 -4
- package/dist/src/core/config-state.js +2 -2
- package/dist/src/core/config-validate-build-audit.js +3 -3
- package/dist/src/core/config-validate-file-size.d.ts +1 -1
- package/dist/src/core/config-validate-file-size.js +2 -2
- package/dist/src/core/config-validate.js +8 -9
- package/dist/src/core/config.d.ts +10 -10
- package/dist/src/core/config.js +10 -10
- package/dist/src/core/coverage-extend.d.ts +16 -16
- package/dist/src/core/coverage-extend.js +16 -16
- package/dist/src/core/destructive.d.ts +14 -14
- package/dist/src/core/destructive.js +9 -9
- package/dist/src/core/diff-hunks.d.ts +2 -2
- package/dist/src/core/diff-hunks.js +7 -7
- package/dist/src/core/discard-baseline.d.ts +10 -10
- package/dist/src/core/discard-baseline.js +15 -16
- package/dist/src/core/display-state.d.ts +11 -11
- package/dist/src/core/display-state.js +12 -12
- package/dist/src/core/engine-changes.d.ts +2 -2
- package/dist/src/core/engine-changes.js +2 -2
- package/dist/src/core/engine-precondition.d.ts +4 -4
- package/dist/src/core/engine-precondition.js +2 -2
- package/dist/src/core/engine-session-lock.d.ts +18 -18
- package/dist/src/core/engine-session-lock.js +37 -37
- package/dist/src/core/export-moved-code-shape.d.ts +7 -7
- package/dist/src/core/export-moved-code-shape.js +8 -8
- package/dist/src/core/file-lock-owner.d.ts +11 -11
- package/dist/src/core/file-lock-owner.js +18 -18
- package/dist/src/core/file-lock.d.ts +12 -12
- package/dist/src/core/file-lock.js +52 -39
- package/dist/src/core/firefox-cache.d.ts +1 -1
- package/dist/src/core/firefox-cache.js +10 -10
- package/dist/src/core/firefox-download.d.ts +3 -3
- package/dist/src/core/firefox-download.js +6 -6
- package/dist/src/core/firefox-extract.d.ts +2 -2
- package/dist/src/core/firefox-extract.js +13 -13
- package/dist/src/core/firefox.d.ts +5 -5
- package/dist/src/core/firefox.js +8 -8
- package/dist/src/core/furnace-apply-dry-run.js +1 -1
- package/dist/src/core/furnace-apply-ftl.d.ts +5 -5
- package/dist/src/core/furnace-apply-ftl.js +8 -8
- package/dist/src/core/furnace-apply-helpers.d.ts +9 -9
- package/dist/src/core/furnace-apply-helpers.js +21 -21
- package/dist/src/core/furnace-apply-output.js +1 -1
- package/dist/src/core/furnace-apply-overwrite-warn.d.ts +9 -9
- package/dist/src/core/furnace-apply-overwrite-warn.js +9 -9
- package/dist/src/core/furnace-apply-undeploy-actions.d.ts +1 -1
- package/dist/src/core/furnace-apply-undeploy-actions.js +1 -1
- package/dist/src/core/furnace-apply.d.ts +3 -3
- package/dist/src/core/furnace-apply.js +22 -21
- package/dist/src/core/furnace-checksum-utils.d.ts +5 -5
- package/dist/src/core/furnace-checksum-utils.js +5 -5
- package/dist/src/core/furnace-config-custom.d.ts +1 -1
- package/dist/src/core/furnace-config-custom.js +2 -2
- package/dist/src/core/furnace-config-order.js +1 -1
- package/dist/src/core/furnace-config-tokens.d.ts +3 -3
- package/dist/src/core/furnace-config-tokens.js +3 -3
- package/dist/src/core/furnace-config-validate.js +2 -2
- package/dist/src/core/furnace-config.d.ts +4 -4
- package/dist/src/core/furnace-config.js +18 -18
- package/dist/src/core/furnace-constants.d.ts +6 -6
- package/dist/src/core/furnace-constants.js +6 -6
- package/dist/src/core/furnace-css-fragments.d.ts +6 -6
- package/dist/src/core/furnace-css-fragments.js +11 -11
- package/dist/src/core/furnace-dir-entry.d.ts +1 -1
- package/dist/src/core/furnace-dir-entry.js +1 -1
- package/dist/src/core/furnace-jsconfig.d.ts +7 -7
- package/dist/src/core/furnace-jsconfig.js +22 -20
- package/dist/src/core/furnace-operation.d.ts +21 -20
- package/dist/src/core/furnace-operation.js +36 -34
- package/dist/src/core/furnace-precondition.d.ts +10 -10
- package/dist/src/core/furnace-precondition.js +8 -8
- package/dist/src/core/furnace-refresh.js +2 -2
- package/dist/src/core/furnace-registration-ast.d.ts +2 -2
- package/dist/src/core/furnace-registration-ast.js +9 -9
- package/dist/src/core/furnace-registration-remove.d.ts +4 -4
- package/dist/src/core/furnace-registration-remove.js +6 -6
- package/dist/src/core/furnace-registration-validate.d.ts +2 -2
- package/dist/src/core/furnace-registration-validate.js +2 -2
- package/dist/src/core/furnace-registration.d.ts +5 -5
- package/dist/src/core/furnace-registration.js +7 -7
- package/dist/src/core/furnace-rollback.d.ts +1 -1
- package/dist/src/core/furnace-rollback.js +5 -5
- package/dist/src/core/furnace-stale-export.d.ts +17 -16
- package/dist/src/core/furnace-stale-export.js +16 -15
- package/dist/src/core/furnace-staleness.d.ts +2 -2
- package/dist/src/core/furnace-staleness.js +2 -2
- package/dist/src/core/furnace-state-persist.d.ts +10 -10
- package/dist/src/core/furnace-state-persist.js +10 -10
- package/dist/src/core/furnace-step-errors.d.ts +6 -6
- package/dist/src/core/furnace-step-errors.js +6 -6
- package/dist/src/core/furnace-validate-accessibility.js +14 -14
- package/dist/src/core/furnace-validate-compatibility.js +9 -9
- package/dist/src/core/furnace-validate-registration.d.ts +2 -2
- package/dist/src/core/furnace-validate-registration.js +13 -13
- package/dist/src/core/furnace-validate-structure.d.ts +1 -1
- package/dist/src/core/furnace-validate-structure.js +4 -4
- package/dist/src/core/furnace-validate.js +9 -9
- package/dist/src/core/furnace-version-drift.d.ts +5 -5
- package/dist/src/core/furnace-version-drift.js +5 -5
- package/dist/src/core/git-base.d.ts +4 -4
- package/dist/src/core/git-base.js +9 -9
- package/dist/src/core/git-diff-new-file.d.ts +4 -4
- package/dist/src/core/git-diff-new-file.js +8 -8
- package/dist/src/core/git-diff.d.ts +4 -4
- package/dist/src/core/git-diff.js +35 -34
- package/dist/src/core/git-file-ops.d.ts +6 -6
- package/dist/src/core/git-file-ops.js +7 -7
- package/dist/src/core/git-readonly-index.d.ts +12 -12
- package/dist/src/core/git-readonly-index.js +12 -12
- package/dist/src/core/git-status.d.ts +4 -4
- package/dist/src/core/git-status.js +4 -4
- package/dist/src/core/git.d.ts +3 -3
- package/dist/src/core/git.js +14 -14
- package/dist/src/core/harness-orphans.d.ts +17 -17
- package/dist/src/core/harness-orphans.js +20 -20
- package/dist/src/core/history-log.d.ts +3 -3
- package/dist/src/core/history-log.js +3 -3
- package/dist/src/core/license-headers.d.ts +19 -18
- package/dist/src/core/license-headers.js +29 -28
- package/dist/src/core/mach-build-artifacts.d.ts +21 -21
- package/dist/src/core/mach-build-artifacts.js +23 -23
- package/dist/src/core/mach-error-hints.d.ts +5 -5
- package/dist/src/core/mach-error-hints.js +13 -13
- package/dist/src/core/mach-known-noise-filter.d.ts +41 -38
- package/dist/src/core/mach-known-noise-filter.js +53 -50
- package/dist/src/core/mach-mozconfig.d.ts +6 -6
- package/dist/src/core/mach-mozconfig.js +15 -15
- package/dist/src/core/mach-python.d.ts +2 -1
- package/dist/src/core/mach-python.js +4 -3
- package/dist/src/core/mach-resource-shim.d.ts +12 -12
- package/dist/src/core/mach-resource-shim.js +20 -20
- package/dist/src/core/mach.d.ts +23 -23
- package/dist/src/core/mach.js +36 -36
- package/dist/src/core/marionette-port.d.ts +15 -13
- package/dist/src/core/marionette-port.js +34 -31
- package/dist/src/core/marionette-preflight.d.ts +6 -6
- package/dist/src/core/marionette-preflight.js +23 -23
- package/dist/src/core/markdown-table.d.ts +9 -9
- package/dist/src/core/markdown-table.js +14 -14
- package/dist/src/core/mochitest-server-port.d.ts +8 -8
- package/dist/src/core/mochitest-server-port.js +14 -14
- package/dist/src/core/module-resolution-preflight.d.ts +8 -8
- package/dist/src/core/module-resolution-preflight.js +11 -11
- package/dist/src/core/moz-manifest-helpers.d.ts +7 -7
- package/dist/src/core/moz-manifest-helpers.js +7 -7
- package/dist/src/core/moz-manifest-register.d.ts +1 -1
- package/dist/src/core/moz-manifest-register.js +2 -2
- package/dist/src/core/moz-manifest-rules.js +11 -11
- package/dist/src/core/moz-manifest-tokenizers.js +1 -1
- package/dist/src/core/ownership-table.d.ts +5 -5
- package/dist/src/core/ownership-table.js +7 -7
- package/dist/src/core/parser-fallback.d.ts +3 -3
- package/dist/src/core/parser-fallback.js +3 -3
- package/dist/src/core/patch-apply-fuzz.d.ts +5 -5
- package/dist/src/core/patch-apply-fuzz.js +9 -9
- package/dist/src/core/patch-apply.d.ts +9 -9
- package/dist/src/core/patch-apply.js +30 -30
- package/dist/src/core/patch-export-update.d.ts +4 -4
- package/dist/src/core/patch-export-update.js +3 -3
- package/dist/src/core/patch-export.d.ts +10 -10
- package/dist/src/core/patch-export.js +13 -13
- package/dist/src/core/patch-identifier-suggest.d.ts +1 -1
- package/dist/src/core/patch-identifier-suggest.js +4 -4
- package/dist/src/core/patch-lint-binary.d.ts +7 -7
- package/dist/src/core/patch-lint-cache.d.ts +2 -2
- package/dist/src/core/patch-lint-cache.js +13 -13
- package/dist/src/core/patch-lint-checkjs.d.ts +26 -26
- package/dist/src/core/patch-lint-checkjs.js +42 -41
- package/dist/src/core/patch-lint-chrome-jsdoc.d.ts +8 -9
- package/dist/src/core/patch-lint-chrome-jsdoc.js +10 -11
- package/dist/src/core/patch-lint-creators.d.ts +3 -3
- package/dist/src/core/patch-lint-creators.js +3 -3
- package/dist/src/core/patch-lint-cross.d.ts +13 -13
- package/dist/src/core/patch-lint-cross.js +21 -21
- package/dist/src/core/patch-lint-css.d.ts +1 -1
- package/dist/src/core/patch-lint-css.js +5 -5
- package/dist/src/core/patch-lint-diff-tag.d.ts +5 -5
- package/dist/src/core/patch-lint-diff-tag.js +5 -5
- package/dist/src/core/patch-lint-diff.d.ts +4 -4
- package/dist/src/core/patch-lint-diff.js +4 -4
- package/dist/src/core/patch-lint-file-size.d.ts +3 -3
- package/dist/src/core/patch-lint-file-size.js +3 -3
- package/dist/src/core/patch-lint-forward-registration.d.ts +4 -4
- package/dist/src/core/patch-lint-forward-registration.js +12 -12
- package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
- package/dist/src/core/patch-lint-jsdoc.js +11 -11
- package/dist/src/core/patch-lint-module-registration.d.ts +1 -1
- package/dist/src/core/patch-lint-module-registration.js +1 -1
- package/dist/src/core/patch-lint-mozbuild.d.ts +1 -1
- package/dist/src/core/patch-lint-mozbuild.js +10 -10
- package/dist/src/core/patch-lint-observer.d.ts +3 -3
- package/dist/src/core/patch-lint-observer.js +7 -7
- package/dist/src/core/patch-lint-ownership.d.ts +6 -6
- package/dist/src/core/patch-lint-ownership.js +6 -6
- package/dist/src/core/patch-lint-prettier.d.ts +6 -6
- package/dist/src/core/patch-lint-prettier.js +6 -6
- package/dist/src/core/patch-lint-queue-types.d.ts +1 -1
- package/dist/src/core/patch-lint-queue-types.js +1 -1
- package/dist/src/core/patch-lint-staged-registration.d.ts +2 -2
- package/dist/src/core/patch-lint-staged-registration.js +6 -6
- package/dist/src/core/patch-lint-unmanaged-companion.d.ts +23 -23
- package/dist/src/core/patch-lint-unmanaged-companion.js +26 -26
- package/dist/src/core/patch-lint.d.ts +27 -26
- package/dist/src/core/patch-lint.js +48 -46
- package/dist/src/core/patch-lock.d.ts +1 -1
- package/dist/src/core/patch-lock.js +8 -8
- package/dist/src/core/patch-manifest-consistency.d.ts +7 -7
- package/dist/src/core/patch-manifest-consistency.js +16 -17
- package/dist/src/core/patch-manifest-files-affected.d.ts +1 -1
- package/dist/src/core/patch-manifest-files-affected.js +3 -3
- package/dist/src/core/patch-manifest-io.d.ts +14 -14
- package/dist/src/core/patch-manifest-io.js +27 -27
- package/dist/src/core/patch-manifest-query.d.ts +1 -1
- package/dist/src/core/patch-manifest-query.js +4 -4
- package/dist/src/core/patch-manifest-resolve.d.ts +5 -5
- package/dist/src/core/patch-manifest-resolve.js +7 -7
- package/dist/src/core/patch-manifest-validate.js +3 -3
- package/dist/src/core/patch-manifest.d.ts +2 -2
- package/dist/src/core/patch-manifest.js +2 -2
- package/dist/src/core/patch-parse.d.ts +14 -14
- package/dist/src/core/patch-parse.js +16 -16
- package/dist/src/core/patch-registration-refs.d.ts +4 -4
- package/dist/src/core/patch-registration-refs.js +7 -7
- package/dist/src/core/patch-transform.d.ts +8 -8
- package/dist/src/core/patch-transform.js +13 -13
- package/dist/src/core/process-cpu-time.d.ts +1 -1
- package/dist/src/core/process-cpu-time.js +5 -5
- package/dist/src/core/rebase-session.d.ts +7 -7
- package/dist/src/core/rebase-session.js +8 -8
- package/dist/src/core/register-result.d.ts +1 -1
- package/dist/src/core/register-result.js +1 -1
- package/dist/src/core/register-scaffold.d.ts +2 -2
- package/dist/src/core/register-scaffold.js +3 -3
- package/dist/src/core/register-shared-css.d.ts +3 -3
- package/dist/src/core/register-shared-css.js +4 -4
- package/dist/src/core/register-xpcshell-test.d.ts +2 -2
- package/dist/src/core/register-xpcshell-test.js +2 -2
- package/dist/src/core/run-log-redact.d.ts +12 -12
- package/dist/src/core/run-log-redact.js +16 -16
- package/dist/src/core/run-log.d.ts +9 -9
- package/dist/src/core/run-log.js +14 -14
- package/dist/src/core/shared-ftl.d.ts +2 -2
- package/dist/src/core/shared-ftl.js +6 -6
- package/dist/src/core/signal-critical.d.ts +2 -2
- package/dist/src/core/signal-critical.js +2 -2
- package/dist/src/core/smoke-patterns.d.ts +5 -5
- package/dist/src/core/smoke-patterns.js +9 -9
- package/dist/src/core/state-file.d.ts +3 -3
- package/dist/src/core/status-binary.d.ts +8 -8
- package/dist/src/core/status-binary.js +12 -12
- package/dist/src/core/status-classify.d.ts +17 -17
- package/dist/src/core/status-classify.js +11 -11
- package/dist/src/core/test-changed-prefs.d.ts +12 -12
- package/dist/src/core/test-changed-prefs.js +15 -15
- package/dist/src/core/test-harness-crash.d.ts +39 -39
- package/dist/src/core/test-harness-crash.js +67 -67
- package/dist/src/core/test-harness-output.d.ts +7 -7
- package/dist/src/core/test-harness-output.js +7 -7
- package/dist/src/core/test-harness-verdict-notes.d.ts +13 -14
- package/dist/src/core/test-harness-verdict-notes.js +4 -4
- package/dist/src/core/test-path-scope.d.ts +8 -8
- package/dist/src/core/test-path-scope.js +11 -11
- package/dist/src/core/test-stale-check.d.ts +22 -21
- package/dist/src/core/test-stale-check.js +29 -28
- package/dist/src/core/test-stale-symlink.d.ts +1 -1
- package/dist/src/core/test-stale-symlink.js +1 -1
- package/dist/src/core/test-stall-triage.d.ts +9 -9
- package/dist/src/core/test-stall-triage.js +22 -22
- package/dist/src/core/token-category.d.ts +4 -4
- package/dist/src/core/token-category.js +13 -12
- package/dist/src/core/token-coverage.js +4 -5
- package/dist/src/core/token-dark-mode.d.ts +17 -9
- package/dist/src/core/token-dark-mode.js +41 -28
- package/dist/src/core/token-docs.d.ts +1 -1
- package/dist/src/core/token-inventory.d.ts +6 -6
- package/dist/src/core/token-inventory.js +7 -7
- package/dist/src/core/token-manager.d.ts +3 -3
- package/dist/src/core/token-manager.js +21 -21
- package/dist/src/core/token-scaffold.d.ts +4 -4
- package/dist/src/core/token-scaffold.js +4 -4
- package/dist/src/core/token-variant.d.ts +14 -14
- package/dist/src/core/token-variant.js +32 -32
- package/dist/src/core/toolchain-preflight.d.ts +15 -15
- package/dist/src/core/toolchain-preflight.js +22 -22
- package/dist/src/core/tree-cow.d.ts +3 -3
- package/dist/src/core/tree-cow.js +6 -6
- package/dist/src/core/tree-guard.d.ts +3 -3
- package/dist/src/core/tree-guard.js +23 -23
- package/dist/src/core/tree-store.d.ts +15 -15
- package/dist/src/core/tree-store.js +35 -33
- package/dist/src/core/typecheck-shim.d.ts +16 -15
- package/dist/src/core/typecheck-shim.js +26 -25
- package/dist/src/core/typecheck.d.ts +12 -12
- package/dist/src/core/typecheck.js +31 -31
- package/dist/src/core/wire-destroy.d.ts +2 -2
- package/dist/src/core/wire-destroy.js +5 -5
- package/dist/src/core/wire-dom-fragment.d.ts +3 -3
- package/dist/src/core/wire-dom-fragment.js +6 -6
- package/dist/src/core/wire-init.d.ts +2 -2
- package/dist/src/core/wire-init.js +7 -7
- package/dist/src/core/wire-subscript.d.ts +1 -1
- package/dist/src/core/wire-subscript.js +3 -3
- package/dist/src/core/wire-utils.d.ts +9 -9
- package/dist/src/core/wire-utils.js +11 -11
- package/dist/src/core/xpcshell-appdir.d.ts +20 -20
- package/dist/src/core/xpcshell-appdir.js +26 -26
- package/dist/src/core/xpcshell-profile-dir.d.ts +3 -3
- package/dist/src/core/xpcshell-profile-dir.js +7 -7
- package/dist/src/errors/base.d.ts +22 -21
- package/dist/src/errors/base.js +22 -21
- package/dist/src/errors/build.d.ts +6 -6
- package/dist/src/errors/build.js +6 -6
- package/dist/src/errors/codes.d.ts +10 -10
- package/dist/src/errors/codes.js +10 -10
- package/dist/src/errors/furnace.d.ts +2 -2
- package/dist/src/errors/git.d.ts +1 -1
- package/dist/src/errors/git.js +1 -1
- package/dist/src/errors/patch.d.ts +3 -3
- package/dist/src/errors/patch.js +3 -3
- package/dist/src/errors/rebase.d.ts +1 -1
- package/dist/src/errors/rebase.js +1 -1
- package/dist/src/errors/run.d.ts +1 -1
- package/dist/src/errors/run.js +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.js +4 -4
- package/dist/src/types/commands/options.d.ts +86 -85
- package/dist/src/types/commands/patches.d.ts +19 -19
- package/dist/src/types/commands/project.d.ts +3 -3
- package/dist/src/types/config.d.ts +24 -23
- package/dist/src/types/furnace.d.ts +17 -17
- package/dist/src/types/json.d.ts +3 -3
- package/dist/src/types/json.js +2 -2
- package/dist/src/types/typecheck.d.ts +3 -3
- package/dist/src/utils/assert.d.ts +1 -1
- package/dist/src/utils/assert.js +6 -6
- package/dist/src/utils/build-info.d.ts +5 -5
- package/dist/src/utils/build-info.js +6 -6
- package/dist/src/utils/child-env.d.ts +5 -5
- package/dist/src/utils/child-env.js +5 -5
- package/dist/src/utils/concurrency.d.ts +2 -2
- package/dist/src/utils/concurrency.js +2 -2
- package/dist/src/utils/elapsed.js +1 -1
- package/dist/src/utils/errors.d.ts +8 -8
- package/dist/src/utils/errors.js +8 -8
- package/dist/src/utils/fs.d.ts +1 -1
- package/dist/src/utils/fs.js +8 -8
- package/dist/src/utils/line-dispatch.d.ts +3 -3
- package/dist/src/utils/line-dispatch.js +5 -5
- package/dist/src/utils/logger.d.ts +4 -4
- package/dist/src/utils/logger.js +11 -11
- package/dist/src/utils/machine-output.js +2 -2
- package/dist/src/utils/options.d.ts +13 -13
- package/dist/src/utils/options.js +20 -20
- package/dist/src/utils/package-root.js +2 -2
- package/dist/src/utils/paths.d.ts +4 -4
- package/dist/src/utils/paths.js +4 -4
- package/dist/src/utils/process-group.d.ts +8 -8
- package/dist/src/utils/process-group.js +19 -19
- package/dist/src/utils/process.d.ts +34 -33
- package/dist/src/utils/process.js +20 -19
- package/dist/src/utils/ps-duration.d.ts +4 -4
- package/dist/src/utils/ps-duration.js +6 -6
- package/dist/src/utils/regex.d.ts +4 -4
- package/dist/src/utils/regex.js +7 -7
- package/dist/src/utils/sleep.d.ts +7 -7
- package/dist/src/utils/sleep.js +7 -7
- package/dist/src/utils/stdio-drain.d.ts +7 -7
- package/dist/src/utils/stdio-drain.js +8 -8
- package/dist/src/utils/validation.d.ts +11 -12
- package/dist/src/utils/validation.js +20 -21
- package/docs/README.md +2 -2
- package/docs/configuration.md +120 -114
- package/docs/exit-codes.md +63 -58
- package/docs/furnace.md +20 -19
- package/docs/lifecycle-invariants.md +412 -251
- package/docs/machine-output.md +33 -32
- package/docs/patch-workflow.md +48 -45
- package/docs/run-logs.md +62 -58
- package/docs/testing.md +101 -101
- package/docs/verification-trees.md +23 -22
- package/package.json +2 -2
|
@@ -47,7 +47,7 @@ function findAttachedJsDoc(comments, declStart, source) {
|
|
|
47
47
|
* quoted runs are skipped verbatim.
|
|
48
48
|
*
|
|
49
49
|
* @returns Index just past the matching close brace, or undefined when the
|
|
50
|
-
* type expression never closes (malformed doc
|
|
50
|
+
* type expression never closes (malformed doc, caller skips the tag).
|
|
51
51
|
*/
|
|
52
52
|
function skipBalancedTypeBraces(jsDoc, start) {
|
|
53
53
|
let depth = 0;
|
|
@@ -83,7 +83,7 @@ function extractParamNames(jsDoc) {
|
|
|
83
83
|
let i = m.index + m[0].length;
|
|
84
84
|
while (i < jsDoc.length && /\s/.test(jsDoc[i] ?? ''))
|
|
85
85
|
i++;
|
|
86
|
-
// Optional `{type}` expression
|
|
86
|
+
// Optional `{type}` expression, depth-aware so nested braces inside
|
|
87
87
|
// inline object types or Record<…> generics don't truncate the scan.
|
|
88
88
|
if (jsDoc[i] === '{') {
|
|
89
89
|
const afterType = skipBalancedTypeBraces(jsDoc, i);
|
|
@@ -144,8 +144,8 @@ function walkForReturn(node) {
|
|
|
144
144
|
node.type === 'ArrowFunctionExpression') {
|
|
145
145
|
return false;
|
|
146
146
|
}
|
|
147
|
-
// `entries` erases the node's static shape without asserting a new one
|
|
148
|
-
//
|
|
147
|
+
// `entries` erases the node's static shape without asserting a new one.
|
|
148
|
+
// The `any` from `Object.entries`' fallback overload widens to `unknown`.
|
|
149
149
|
const entries = Object.entries(node);
|
|
150
150
|
for (const [key, val] of entries) {
|
|
151
151
|
if (key === 'type')
|
|
@@ -232,7 +232,7 @@ function validateParamsAndReturns(fnNode, jsDoc, issues, ctx) {
|
|
|
232
232
|
* Validates a top-level function declaration: requires an attached JSDoc
|
|
233
233
|
* comment, then checks @param name matching and @returns presence. Exported
|
|
234
234
|
* so the chrome-subscript validator (`patch-lint-chrome-jsdoc.ts`) can reuse
|
|
235
|
-
* it on `parseScript`-produced declarations
|
|
235
|
+
* it on `parseScript`-produced declarations. The rule shape is identical
|
|
236
236
|
* between ES-module exports and chrome-subscript top-level declarations.
|
|
237
237
|
*
|
|
238
238
|
* @param fn - FunctionDeclaration AST node
|
|
@@ -290,7 +290,7 @@ function validateVariableDecl(varDecl, comments, source, lookupStart) {
|
|
|
290
290
|
const start = lookupStart !== undefined ? lookupStart : varDecl.start;
|
|
291
291
|
const jsDoc = findAttachedJsDoc(comments, start, source);
|
|
292
292
|
if (jsDoc)
|
|
293
|
-
return issues; // has a JSDoc block
|
|
293
|
+
return issues; // has a JSDoc block, sufficient for constants
|
|
294
294
|
for (const decl of varDecl.declarations) {
|
|
295
295
|
const name = decl.id.type === 'Identifier' ? decl.id.name : '<destructured>';
|
|
296
296
|
const line = lineAt(source, start);
|
|
@@ -340,7 +340,7 @@ function classMethodLabel(className, method, name) {
|
|
|
340
340
|
* 3. methods whose JSDoc carries `@private` or `@internal`
|
|
341
341
|
*
|
|
342
342
|
* A pure-override skip (`super.method(...args)`-only bodies bypassing the
|
|
343
|
-
* return-tag check) is deliberately not implemented
|
|
343
|
+
* return-tag check) is deliberately not implemented. The rule stays simple.
|
|
344
344
|
*/
|
|
345
345
|
export function validateClassMethods(cls, comments, source, severity) {
|
|
346
346
|
const issues = [];
|
|
@@ -374,7 +374,7 @@ export function validateClassMethods(cls, comments, source, severity) {
|
|
|
374
374
|
continue;
|
|
375
375
|
}
|
|
376
376
|
if (method.kind === 'get') {
|
|
377
|
-
// Presence already verified
|
|
377
|
+
// Presence already verified. The getter expression is the contract.
|
|
378
378
|
continue;
|
|
379
379
|
}
|
|
380
380
|
const skipReturns = method.kind === 'constructor' || method.kind === 'set';
|
|
@@ -407,7 +407,7 @@ export function validateExportJsDoc(source, options) {
|
|
|
407
407
|
ast = parseModule(source, comments);
|
|
408
408
|
}
|
|
409
409
|
catch (error) {
|
|
410
|
-
// An unparseable source is
|
|
410
|
+
// An unparseable source is not a clean file. Returning `[]` here was the
|
|
411
411
|
// same value as "fully documented", so a syntax error silently cleared
|
|
412
412
|
// every rule this module enforces. Report it instead.
|
|
413
413
|
return [
|
|
@@ -424,7 +424,7 @@ export function validateExportJsDoc(source, options) {
|
|
|
424
424
|
if (node.type !== 'ExportNamedDeclaration')
|
|
425
425
|
continue;
|
|
426
426
|
const exportNode = node;
|
|
427
|
-
// Case 1: inline export declaration
|
|
427
|
+
// Case 1: inline export declaration, JSDoc attaches to `export`
|
|
428
428
|
if (exportNode.declaration) {
|
|
429
429
|
const decl = exportNode.declaration;
|
|
430
430
|
const exportStart = exportNode.start;
|
|
@@ -442,7 +442,7 @@ export function validateExportJsDoc(source, options) {
|
|
|
442
442
|
}
|
|
443
443
|
continue;
|
|
444
444
|
}
|
|
445
|
-
// Case 2: `export { foo, Bar }
|
|
445
|
+
// Case 2: `export { foo, Bar }`, resolve back to local declarations
|
|
446
446
|
if (exportNode.specifiers.length > 0 && !exportNode.source) {
|
|
447
447
|
for (const spec of exportNode.specifiers) {
|
|
448
448
|
const local = spec.local;
|
|
@@ -10,7 +10,7 @@ export declare function moduleSourceSuffix(specifier: string): string | undefine
|
|
|
10
10
|
/**
|
|
11
11
|
* Resource-module strings in actual code (comments removed), de-duplicated.
|
|
12
12
|
* Exported for the engine-aware resolution preflight, which must recognise
|
|
13
|
-
* exactly the same specifier shapes this queue-level rule does
|
|
13
|
+
* exactly the same specifier shapes this queue-level rule does. Two
|
|
14
14
|
* extractors would drift.
|
|
15
15
|
*/
|
|
16
16
|
export declare function extractResourceModuleSpecifiers(content: string): string[];
|
|
@@ -21,7 +21,7 @@ export function moduleSourceSuffix(specifier) {
|
|
|
21
21
|
/**
|
|
22
22
|
* Resource-module strings in actual code (comments removed), de-duplicated.
|
|
23
23
|
* Exported for the engine-aware resolution preflight, which must recognise
|
|
24
|
-
* exactly the same specifier shapes this queue-level rule does
|
|
24
|
+
* exactly the same specifier shapes this queue-level rule does. Two
|
|
25
25
|
* extractors would drift.
|
|
26
26
|
*/
|
|
27
27
|
export function extractResourceModuleSpecifiers(content) {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* mozbuild enforces alphabetical ordering on `StrictOrderingOnAppendList`
|
|
5
5
|
* variables and raises `mozbuild.util.UnsortedError: … expected "X" but got
|
|
6
|
-
* "Y"
|
|
6
|
+
* "Y"`, but only at configure time, i.e. minutes into a `fireforge build`
|
|
7
7
|
* or `fireforge test --build` dispatch. This check reads the patched
|
|
8
8
|
* `moz.build` files from the engine tree (the working tree carries the
|
|
9
9
|
* applied patch state, same as every other per-patch rule) and reports the
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* mozbuild enforces alphabetical ordering on `StrictOrderingOnAppendList`
|
|
6
6
|
* variables and raises `mozbuild.util.UnsortedError: … expected "X" but got
|
|
7
|
-
* "Y"
|
|
7
|
+
* "Y"`, but only at configure time, i.e. minutes into a `fireforge build`
|
|
8
8
|
* or `fireforge test --build` dispatch. This check reads the patched
|
|
9
9
|
* `moz.build` files from the engine tree (the working tree carries the
|
|
10
10
|
* applied patch state, same as every other per-patch rule) and reports the
|
|
@@ -16,8 +16,8 @@ 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
|
|
19
|
-
* `UnsortedError` on append when out of order. `DIRS` is
|
|
20
|
-
*
|
|
19
|
+
* `UnsortedError` on append when out of order. `DIRS` is absent on purpose:
|
|
20
|
+
* directory order is meaningful and not strict-ordered. Dotted namespaces
|
|
21
21
|
* (`EXTRA_JS_MODULES.<subdir>`, `EXPORTS.<ns>`) inherit strict ordering
|
|
22
22
|
* from their parent variable.
|
|
23
23
|
*/
|
|
@@ -39,7 +39,7 @@ const LIST_OPENER = new RegExp(`^\\s*((?:${STRICT_ORDERED_MOZBUILD_LISTS.join('|
|
|
|
39
39
|
*/
|
|
40
40
|
/**
|
|
41
41
|
* True when `line` contains a `]` outside any quoted span. A bracket inside an
|
|
42
|
-
* item (`"icons[2x].png"`) is filename text, not the list's close
|
|
42
|
+
* item (`"icons[2x].png"`) is filename text, not the list's close. Reading it
|
|
43
43
|
* as one truncated the item set and left every later item unchecked.
|
|
44
44
|
*/
|
|
45
45
|
function hasUnquotedCloseBracket(line) {
|
|
@@ -90,8 +90,8 @@ function stripMozBuildComment(line) {
|
|
|
90
90
|
* - a quoted string in a trailing comment would otherwise be scraped in as a
|
|
91
91
|
* phantom list item (`"Zeta.cpp", # replaces "Beta.cpp"` yielding a
|
|
92
92
|
* `Beta.cpp` entry), so the sort check reports an unsorted list naming a
|
|
93
|
-
* file that is not in it
|
|
94
|
-
* because the item does not exist to be moved
|
|
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
95
|
* - a `]` anywhere in a comment (`# see foo[0]`) would close the list early
|
|
96
96
|
* and silently truncate the item set.
|
|
97
97
|
*
|
|
@@ -99,9 +99,9 @@ function stripMozBuildComment(line) {
|
|
|
99
99
|
* list would otherwise consume the rest of the file and skip every later
|
|
100
100
|
* list in it.
|
|
101
101
|
*
|
|
102
|
-
* Nor does an unterminated list borrow the
|
|
103
|
-
* scan stops at the next list opener rather than reading through it
|
|
104
|
-
*
|
|
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
|
+
* Otherwise an unclosed `EXTRA_COMPONENTS` swallows the following
|
|
105
105
|
* `EXTRA_JS_MODULES`, merging its items into the first list and accepting
|
|
106
106
|
* its `]` as the first list's close, reporting a sorting error against a
|
|
107
107
|
* variable that never contained those items.
|
|
@@ -149,7 +149,7 @@ function collectStrictOrderedLists(content) {
|
|
|
149
149
|
}
|
|
150
150
|
if (closed) {
|
|
151
151
|
occurrences.push({ varName, items });
|
|
152
|
-
// Resume after the list we just consumed
|
|
152
|
+
// Resume after the list we just consumed. A list that never closed
|
|
153
153
|
// leaves `i` untouched so the next line is still examined.
|
|
154
154
|
i = cursor;
|
|
155
155
|
}
|
|
@@ -16,7 +16,7 @@ import type { PatchLintIssue } from '../types/commands/index.js';
|
|
|
16
16
|
* binaryName happens to be a substring of one. `quit-application*` is
|
|
17
17
|
* handled as a prefix family in {@link isKnownFirefoxTopic}.
|
|
18
18
|
*
|
|
19
|
-
* The list is
|
|
19
|
+
* The list is conservative: it only needs to cover topics
|
|
20
20
|
* whose text could plausibly contain a fork's binaryName, plus the
|
|
21
21
|
* high-traffic lifecycle topics seen in downstream test simulations.
|
|
22
22
|
*/
|
|
@@ -26,8 +26,8 @@ export declare function isKnownFirefoxTopic(topic: string): boolean;
|
|
|
26
26
|
/**
|
|
27
27
|
* Lints observer-service call sites in `strippedContent` (comments already
|
|
28
28
|
* removed) for fork topic naming. Only topics that embed `binaryName` and
|
|
29
|
-
* do not follow the `<binary>-<noun>-<verb>` convention are flagged
|
|
30
|
-
*
|
|
29
|
+
* do not follow the `<binary>-<noun>-<verb>` convention are flagged.
|
|
30
|
+
* Allowlisted Firefox topics and constant-named topics are skipped.
|
|
31
31
|
*
|
|
32
32
|
* @param strippedContent - Source with comments stripped
|
|
33
33
|
* @param file - File path for issue attribution
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* binaryName happens to be a substring of one. `quit-application*` is
|
|
17
17
|
* handled as a prefix family in {@link isKnownFirefoxTopic}.
|
|
18
18
|
*
|
|
19
|
-
* The list is
|
|
19
|
+
* The list is conservative: it only needs to cover topics
|
|
20
20
|
* whose text could plausibly contain a fork's binaryName, plus the
|
|
21
21
|
* high-traffic lifecycle topics seen in downstream test simulations.
|
|
22
22
|
*/
|
|
@@ -49,7 +49,7 @@ export function isKnownFirefoxTopic(topic) {
|
|
|
49
49
|
* commas inside nested calls, object literals, or strings do not split.
|
|
50
50
|
*
|
|
51
51
|
* @returns The argument texts, or null when the span never closes within
|
|
52
|
-
* `maxLength` characters (malformed or truncated source
|
|
52
|
+
* `maxLength` characters (malformed or truncated source, caller skips).
|
|
53
53
|
*/
|
|
54
54
|
function extractCallArguments(content, openParen, maxLength = 2000) {
|
|
55
55
|
const args = [];
|
|
@@ -103,9 +103,9 @@ function extractCallArguments(content, openParen, maxLength = 2000) {
|
|
|
103
103
|
/**
|
|
104
104
|
* Returns the literal string value when `arg` is exactly one plain string
|
|
105
105
|
* literal (no concatenation, no `${}` interpolation), otherwise null.
|
|
106
|
-
* Constant-named topics (identifiers, member expressions)
|
|
107
|
-
*
|
|
108
|
-
*
|
|
106
|
+
* Constant-named topics (identifiers, member expressions) return null on
|
|
107
|
+
* purpose: hoisting a literal into a named constant is a supported way to
|
|
108
|
+
* mark a topic as deliberate.
|
|
109
109
|
*/
|
|
110
110
|
function asStringLiteral(arg) {
|
|
111
111
|
const trimmed = arg.trim();
|
|
@@ -126,8 +126,8 @@ function asStringLiteral(arg) {
|
|
|
126
126
|
/**
|
|
127
127
|
* Lints observer-service call sites in `strippedContent` (comments already
|
|
128
128
|
* removed) for fork topic naming. Only topics that embed `binaryName` and
|
|
129
|
-
* do not follow the `<binary>-<noun>-<verb>` convention are flagged
|
|
130
|
-
*
|
|
129
|
+
* do not follow the `<binary>-<noun>-<verb>` convention are flagged.
|
|
130
|
+
* Allowlisted Firefox topics and constant-named topics are skipped.
|
|
131
131
|
*
|
|
132
132
|
* @param strippedContent - Source with comments stripped
|
|
133
133
|
* @param file - File path for issue attribution
|
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
*
|
|
9
9
|
* The two resolvers are kept separate (one per extension predicate)
|
|
10
10
|
* because the downstream rules differ: `.sys.mjs` files go through
|
|
11
|
-
* `runCheckJs` (TypeScript checkJs) and the export-walker JSDoc rule
|
|
12
|
-
* chrome subscripts (`.js` non-`.sys.mjs`) only get the
|
|
13
|
-
* JSDoc rule. Mixing them in a single set would silently broaden
|
|
11
|
+
* `runCheckJs` (TypeScript checkJs) and the export-walker JSDoc rule,
|
|
12
|
+
* while chrome subscripts (`.js` non-`.sys.mjs`) only get the
|
|
13
|
+
* script-walker JSDoc rule. Mixing them in a single set would silently broaden
|
|
14
14
|
* `runCheckJs` to chrome subscripts, which it is not designed for.
|
|
15
15
|
*/
|
|
16
16
|
import type { PatchQueueContext } from './patch-lint-cross.js';
|
|
@@ -32,7 +32,7 @@ import type { PatchQueueContext } from './patch-lint-cross.js';
|
|
|
32
32
|
export declare function resolvePatchOwnedSysMjs(currentNewFiles: Set<string>, patchQueueCtx?: PatchQueueContext): Set<string>;
|
|
33
33
|
/**
|
|
34
34
|
* Returns the set of file paths that are patch-owned chrome subscripts
|
|
35
|
-
* (`.js` files that are not `.sys.mjs` modules
|
|
35
|
+
* (`.js` files that are not `.sys.mjs` modules, typically
|
|
36
36
|
* `browser/base/content/<binaryName>*.js` and similar). Same ownership
|
|
37
37
|
* semantics as {@link resolvePatchOwnedSysMjs}.
|
|
38
38
|
*
|
|
@@ -45,7 +45,7 @@ export declare function resolvePatchOwnedChromeScripts(currentNewFiles: Set<stri
|
|
|
45
45
|
* Test-script predicate for the `checkJsTestFiles` pass:
|
|
46
46
|
* plain `.js` files (not `.sys.mjs` modules) that live under a `/test/`
|
|
47
47
|
* path or carry a `browser_` / `test_` / `xpcshell_` basename. Duplicates
|
|
48
|
-
* `patch-lint.ts`'s `isTestFile` shape rather than importing it
|
|
48
|
+
* `patch-lint.ts`'s `isTestFile` shape rather than importing it:
|
|
49
49
|
* patch-lint.ts imports this module, so the reverse edge would create an
|
|
50
50
|
* import cycle (dpdm gate). The agreement is pinned by
|
|
51
51
|
* `patch-lint-ownership.test.ts`.
|
|
@@ -53,7 +53,7 @@ export declare function resolvePatchOwnedChromeScripts(currentNewFiles: Set<stri
|
|
|
53
53
|
export declare function isTestScriptFile(file: string): boolean;
|
|
54
54
|
/**
|
|
55
55
|
* Returns the set of patch-owned test `.js` files. Same
|
|
56
|
-
* ownership semantics as {@link resolvePatchOwnedSysMjs}
|
|
56
|
+
* ownership semantics as {@link resolvePatchOwnedSysMjs}. Consumed by the
|
|
57
57
|
* `patchLint.checkJsTestFiles` pass, which checks each as its own small
|
|
58
58
|
* script-scope program.
|
|
59
59
|
*
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
*
|
|
10
10
|
* The two resolvers are kept separate (one per extension predicate)
|
|
11
11
|
* because the downstream rules differ: `.sys.mjs` files go through
|
|
12
|
-
* `runCheckJs` (TypeScript checkJs) and the export-walker JSDoc rule
|
|
13
|
-
* chrome subscripts (`.js` non-`.sys.mjs`) only get the
|
|
14
|
-
* JSDoc rule. Mixing them in a single set would silently broaden
|
|
12
|
+
* `runCheckJs` (TypeScript checkJs) and the export-walker JSDoc rule,
|
|
13
|
+
* while chrome subscripts (`.js` non-`.sys.mjs`) only get the
|
|
14
|
+
* script-walker JSDoc rule. Mixing them in a single set would silently broaden
|
|
15
15
|
* `runCheckJs` to chrome subscripts, which it is not designed for.
|
|
16
16
|
*/
|
|
17
17
|
import { collectNewFileCreatorsByPath } from './patch-lint-cross.js';
|
|
@@ -56,7 +56,7 @@ export function resolvePatchOwnedSysMjs(currentNewFiles, patchQueueCtx) {
|
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* Returns the set of file paths that are patch-owned chrome subscripts
|
|
59
|
-
* (`.js` files that are not `.sys.mjs` modules
|
|
59
|
+
* (`.js` files that are not `.sys.mjs` modules, typically
|
|
60
60
|
* `browser/base/content/<binaryName>*.js` and similar). Same ownership
|
|
61
61
|
* semantics as {@link resolvePatchOwnedSysMjs}.
|
|
62
62
|
*
|
|
@@ -71,7 +71,7 @@ export function resolvePatchOwnedChromeScripts(currentNewFiles, patchQueueCtx) {
|
|
|
71
71
|
* Test-script predicate for the `checkJsTestFiles` pass:
|
|
72
72
|
* plain `.js` files (not `.sys.mjs` modules) that live under a `/test/`
|
|
73
73
|
* path or carry a `browser_` / `test_` / `xpcshell_` basename. Duplicates
|
|
74
|
-
* `patch-lint.ts`'s `isTestFile` shape rather than importing it
|
|
74
|
+
* `patch-lint.ts`'s `isTestFile` shape rather than importing it:
|
|
75
75
|
* patch-lint.ts imports this module, so the reverse edge would create an
|
|
76
76
|
* import cycle (dpdm gate). The agreement is pinned by
|
|
77
77
|
* `patch-lint-ownership.test.ts`.
|
|
@@ -86,7 +86,7 @@ export function isTestScriptFile(file) {
|
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
88
|
* Returns the set of patch-owned test `.js` files. Same
|
|
89
|
-
* ownership semantics as {@link resolvePatchOwnedSysMjs}
|
|
89
|
+
* ownership semantics as {@link resolvePatchOwnedSysMjs}. Consumed by the
|
|
90
90
|
* `patchLint.checkJsTestFiles` pass, which checks each as its own small
|
|
91
91
|
* script-scope program.
|
|
92
92
|
*
|
|
@@ -4,32 +4,32 @@
|
|
|
4
4
|
* Until 0.45.0 no tier of the chain ran Prettier on `.sys.mjs` at all, so
|
|
5
5
|
* module formatting drift was caught by nothing and survived to a human
|
|
6
6
|
* reviewer. Worse, the obvious manual check was misleading in the same
|
|
7
|
-
* direction: a fork's
|
|
7
|
+
* direction: a fork's root `.prettierignore` typically excludes `engine/`,
|
|
8
8
|
* so `prettier --check --config engine/.prettierrc.js <engine files>` run
|
|
9
9
|
* from the repo root reports "all files use Prettier code style" for files
|
|
10
10
|
* that fail the identical check run from inside `engine/`. A root-level
|
|
11
11
|
* spot-check falsely refuted a correct reviewer finding on exactly this.
|
|
12
12
|
*
|
|
13
|
-
* This pass therefore runs prettier with `cwd` set to the
|
|
13
|
+
* This pass therefore runs prettier with `cwd` set to the engine directory,
|
|
14
14
|
* so the engine's own `.prettierrc*` and `.prettierignore` resolve the way
|
|
15
15
|
* they do for anyone working in that tree, and the FireForge result agrees
|
|
16
16
|
* with the operator's own command.
|
|
17
17
|
*
|
|
18
18
|
* Opt-in (`patchLint.prettier`, default `'off'`): it spawns a process per
|
|
19
19
|
* lint and is a new failure surface on queues that never had one. When it
|
|
20
|
-
* is off, formatting is explicitly out of scope for the per-patch tier
|
|
21
|
-
*
|
|
20
|
+
* is off, formatting is explicitly out of scope for the per-patch tier.
|
|
21
|
+
* That is the contract, not an accident.
|
|
22
22
|
*/
|
|
23
23
|
import type { PatchLintIssue } from '../types/commands/index.js';
|
|
24
24
|
import type { PatchLintSeverityGate } from '../types/config.js';
|
|
25
25
|
/**
|
|
26
26
|
* Runs `prettier --check` over `files` from inside the engine directory.
|
|
27
27
|
*
|
|
28
|
-
* @param engineDir - Absolute engine directory
|
|
28
|
+
* @param engineDir - Absolute engine directory. Also the `cwd`, which is
|
|
29
29
|
* what makes the engine's own config and ignore file authoritative
|
|
30
30
|
* @param projectRoot - FireForge project root, for the fallback binary
|
|
31
31
|
* @param files - Engine-relative patch-owned `.sys.mjs` paths
|
|
32
|
-
* @param gate - Severity for reported issues
|
|
32
|
+
* @param gate - Severity for reported issues. `'off'` skips the pass
|
|
33
33
|
* @returns One issue per unformatted file, or a single run-level issue when
|
|
34
34
|
* prettier could not be run at all
|
|
35
35
|
*/
|
|
@@ -5,21 +5,21 @@
|
|
|
5
5
|
* Until 0.45.0 no tier of the chain ran Prettier on `.sys.mjs` at all, so
|
|
6
6
|
* module formatting drift was caught by nothing and survived to a human
|
|
7
7
|
* reviewer. Worse, the obvious manual check was misleading in the same
|
|
8
|
-
* direction: a fork's
|
|
8
|
+
* direction: a fork's root `.prettierignore` typically excludes `engine/`,
|
|
9
9
|
* so `prettier --check --config engine/.prettierrc.js <engine files>` run
|
|
10
10
|
* from the repo root reports "all files use Prettier code style" for files
|
|
11
11
|
* that fail the identical check run from inside `engine/`. A root-level
|
|
12
12
|
* spot-check falsely refuted a correct reviewer finding on exactly this.
|
|
13
13
|
*
|
|
14
|
-
* This pass therefore runs prettier with `cwd` set to the
|
|
14
|
+
* This pass therefore runs prettier with `cwd` set to the engine directory,
|
|
15
15
|
* so the engine's own `.prettierrc*` and `.prettierignore` resolve the way
|
|
16
16
|
* they do for anyone working in that tree, and the FireForge result agrees
|
|
17
17
|
* with the operator's own command.
|
|
18
18
|
*
|
|
19
19
|
* Opt-in (`patchLint.prettier`, default `'off'`): it spawns a process per
|
|
20
20
|
* lint and is a new failure surface on queues that never had one. When it
|
|
21
|
-
* is off, formatting is explicitly out of scope for the per-patch tier
|
|
22
|
-
*
|
|
21
|
+
* is off, formatting is explicitly out of scope for the per-patch tier.
|
|
22
|
+
* That is the contract, not an accident.
|
|
23
23
|
*/
|
|
24
24
|
import { join } from 'node:path';
|
|
25
25
|
import { toError } from '../utils/errors.js';
|
|
@@ -52,11 +52,11 @@ async function resolvePrettier(engineDir, projectRoot) {
|
|
|
52
52
|
/**
|
|
53
53
|
* Runs `prettier --check` over `files` from inside the engine directory.
|
|
54
54
|
*
|
|
55
|
-
* @param engineDir - Absolute engine directory
|
|
55
|
+
* @param engineDir - Absolute engine directory. Also the `cwd`, which is
|
|
56
56
|
* what makes the engine's own config and ignore file authoritative
|
|
57
57
|
* @param projectRoot - FireForge project root, for the fallback binary
|
|
58
58
|
* @param files - Engine-relative patch-owned `.sys.mjs` paths
|
|
59
|
-
* @param gate - Severity for reported issues
|
|
59
|
+
* @param gate - Severity for reported issues. `'off'` skips the pass
|
|
60
60
|
* @returns One issue per unformatted file, or a single run-level issue when
|
|
61
61
|
* prettier could not be run at all
|
|
62
62
|
*/
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* A leaf module by design: it imports nothing, so the individual rule
|
|
5
5
|
* modules can describe the slice of `PatchQueueContext` they read without
|
|
6
6
|
* importing `patch-lint-cross.ts` (which imports them back). Previously each
|
|
7
|
-
* rule re-declared its own private `{ entries }` interface
|
|
7
|
+
* rule re-declared its own private `{ entries }` interface. Sharing them here
|
|
8
8
|
* keeps the dependency edge one-way and `dpdm` clean while stating the shape
|
|
9
9
|
* once.
|
|
10
10
|
*/
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* A leaf module by design: it imports nothing, so the individual rule
|
|
6
6
|
* modules can describe the slice of `PatchQueueContext` they read without
|
|
7
7
|
* importing `patch-lint-cross.ts` (which imports them back). Previously each
|
|
8
|
-
* rule re-declared its own private `{ entries }` interface
|
|
8
|
+
* rule re-declared its own private `{ entries }` interface. Sharing them here
|
|
9
9
|
* keeps the dependency edge one-way and `dpdm` clean while stating the shape
|
|
10
10
|
* once.
|
|
11
11
|
*/
|
|
@@ -39,7 +39,7 @@ export type StagedRegistrationFailure = {
|
|
|
39
39
|
* Validates one registration-kind declaration against the patch content
|
|
40
40
|
* and the queue, mirroring {@link findMatchingStagedDependency}: the
|
|
41
41
|
* declared line must be added by this patch, `creates` must exactly match
|
|
42
|
-
* a file a
|
|
42
|
+
* a file a later-ordered patch creates (an earlier-only creator means the
|
|
43
43
|
* dependency is already satisfied and the declaration is stale), and
|
|
44
44
|
* `owner`, when set, must name one of those creating patches. Returns
|
|
45
45
|
* undefined when valid.
|
|
@@ -55,7 +55,7 @@ export declare function describeRegistrationFailure(failure: StagedRegistrationF
|
|
|
55
55
|
* the command, and a `support-files` element carries its own quotes
|
|
56
56
|
* (`"file_tiles_find.html",` is what a multi-line TOML array adds). Without
|
|
57
57
|
* escaping, the shell would eat them and the declaration would be written
|
|
58
|
-
* with a line the patch never adds
|
|
58
|
+
* with a line the patch never adds, the exact mismatch that made the
|
|
59
59
|
* forward-registration remedy leave the declaring patch red.
|
|
60
60
|
*/
|
|
61
61
|
export declare function quoteRegistrationLine(line: string): string;
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* Split out of `patch-lint-cross.ts` to keep that file inside the per-file
|
|
6
6
|
* line budget, and because the forward-registration rule needs the same
|
|
7
7
|
* apply-order predicate: two spellings of "later in the queue" would let the
|
|
8
|
-
* rule that
|
|
9
|
-
*
|
|
8
|
+
* rule that flags an undeclared registration and the rule that validates a
|
|
9
|
+
* declared one disagree about the very same pair of patches.
|
|
10
10
|
*
|
|
11
11
|
* Exports helpers consumed by `patch-lint-cross.ts` and
|
|
12
|
-
* `patch-lint-forward-registration.ts
|
|
12
|
+
* `patch-lint-forward-registration.ts`, with no registrar or rule of its own.
|
|
13
13
|
*/
|
|
14
14
|
import { basename } from 'node:path';
|
|
15
15
|
/**
|
|
@@ -29,7 +29,7 @@ export function isLaterOwner(owner, entry) {
|
|
|
29
29
|
* Validates one registration-kind declaration against the patch content
|
|
30
30
|
* and the queue, mirroring {@link findMatchingStagedDependency}: the
|
|
31
31
|
* declared line must be added by this patch, `creates` must exactly match
|
|
32
|
-
* a file a
|
|
32
|
+
* a file a later-ordered patch creates (an earlier-only creator means the
|
|
33
33
|
* dependency is already satisfied and the declaration is stale), and
|
|
34
34
|
* `owner`, when set, must name one of those creating patches. Returns
|
|
35
35
|
* undefined when valid.
|
|
@@ -60,7 +60,7 @@ export function describeRegistrationFailure(failure) {
|
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* True when the declared registration/packaging line appears (trimmed)
|
|
63
|
-
* among the lines the patch introduces in the declaring file
|
|
63
|
+
* among the lines the patch introduces in the declaring file, either as a
|
|
64
64
|
* newly-created file's content or as added lines to an existing file
|
|
65
65
|
* (where jar.mn / customElements.js / actor-registration edits land).
|
|
66
66
|
*/
|
|
@@ -82,7 +82,7 @@ function isRegistrationLinePresent(entry, registration) {
|
|
|
82
82
|
* the command, and a `support-files` element carries its own quotes
|
|
83
83
|
* (`"file_tiles_find.html",` is what a multi-line TOML array adds). Without
|
|
84
84
|
* escaping, the shell would eat them and the declaration would be written
|
|
85
|
-
* with a line the patch never adds
|
|
85
|
+
* with a line the patch never adds, the exact mismatch that made the
|
|
86
86
|
* forward-registration remedy leave the declaring patch red.
|
|
87
87
|
*/
|
|
88
88
|
export function quoteRegistrationLine(line) {
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Recognizes the one shape where the undefined-identifier hint sends the
|
|
3
|
-
* operator at the wrong remedy
|
|
3
|
+
* operator at the wrong remedy, and where taking that remedy would mask a
|
|
4
4
|
* real bug.
|
|
5
5
|
*
|
|
6
6
|
* The shape: helpers are hoisted out of duplicated test files into a new
|
|
7
7
|
* `head_settings.js` that a managed `head.js` pulls in with
|
|
8
8
|
* `loadSubScript`. Until that companion is exported it belongs to no patch,
|
|
9
|
-
* so the per-patch checkJs program
|
|
10
|
-
* roots
|
|
9
|
+
* so the per-patch checkJs program, which only ever loads patch-owned
|
|
10
|
+
* roots, cannot see any of its declarations. Every use of every hoisted
|
|
11
11
|
* helper is then reported as `Cannot find name`, and the generic hint
|
|
12
12
|
* offers three remedies of which the shim is the easiest: adding the
|
|
13
|
-
* globals to `extraShim` makes all of the warnings disappear
|
|
13
|
+
* globals to `extraShim` makes all of the warnings disappear and makes a
|
|
14
14
|
* genuinely missing helper undetectable forever after.
|
|
15
15
|
*
|
|
16
|
-
* The warnings themselves are correct
|
|
17
|
-
* of a file that is in no patch. Only the advice is wrong.
|
|
18
|
-
* already knows ownership, so when every undefined name in a file
|
|
19
|
-
* declared at the top level of an
|
|
20
|
-
* it can name that file and the adoption command instead.
|
|
16
|
+
* The warnings themselves are correct: they are the per-patch program's
|
|
17
|
+
* honest view of a file that is in no patch. Only the advice is wrong.
|
|
18
|
+
* FireForge already knows ownership, so when every undefined name in a file
|
|
19
|
+
* is declared at the top level of an unmanaged file that a managed head
|
|
20
|
+
* loads, it can name that file and the adoption command instead.
|
|
21
21
|
*
|
|
22
|
-
* Detection is
|
|
23
|
-
* be reachable from an actual `loadSubScript` call, and
|
|
22
|
+
* Detection is conservative on both halves: a companion must
|
|
23
|
+
* be reachable from an actual `loadSubScript` call, and every undefined
|
|
24
24
|
* name must resolve inside it. One unresolved name means the file may
|
|
25
25
|
* genuinely be missing a helper, and the generic hint stays.
|
|
26
26
|
*/
|
|
@@ -31,14 +31,14 @@ import type { PatchLintIssue } from '../types/commands/index.js';
|
|
|
31
31
|
* The mochitest idiom is
|
|
32
32
|
* `Services.scriptloader.loadSubScript(getRootDirectory(gTestPath) + "head_settings.js", this)`,
|
|
33
33
|
* so the useful signal is the `.js` literal inside the call, not a
|
|
34
|
-
* resolvable URL
|
|
34
|
+
* resolvable URL. The path half is computed at runtime.
|
|
35
35
|
*/
|
|
36
36
|
export declare function findLoadSubScriptTargets(source: string): string[];
|
|
37
37
|
/**
|
|
38
38
|
* Top-level declaration names in a script-scope file.
|
|
39
39
|
*
|
|
40
40
|
* Regex rather than a TS program on purpose: this runs only to decide the
|
|
41
|
-
*
|
|
41
|
+
* wording of a hint, the file is outside every program the
|
|
42
42
|
* pass built, and a missed declaration degrades to the generic hint rather
|
|
43
43
|
* than to a wrong answer. Matching is anchored at column zero so a nested
|
|
44
44
|
* declaration inside a function body is not mistaken for a global.
|
|
@@ -57,8 +57,8 @@ export interface UnmanagedCompanion {
|
|
|
57
57
|
* Resolves the unmanaged companions reachable from a set of managed head
|
|
58
58
|
* files, given a reader for repo-relative file content.
|
|
59
59
|
*
|
|
60
|
-
* A candidate qualifies only when it is
|
|
61
|
-
* can be read
|
|
60
|
+
* A candidate qualifies only when it is not in `ownedFiles` and its content
|
|
61
|
+
* can be read. An unreadable or absent target is simply not a companion,
|
|
62
62
|
* and the generic hint applies.
|
|
63
63
|
*
|
|
64
64
|
* @param heads - Repo-relative managed head files, with their sources
|
|
@@ -73,14 +73,14 @@ export declare function resolveUnmanagedCompanions(heads: ReadonlyArray<{
|
|
|
73
73
|
* The replacement hint, when every undefined name resolves in one
|
|
74
74
|
* unmanaged companion.
|
|
75
75
|
*
|
|
76
|
-
* States the ownership fact first (
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
76
|
+
* States the ownership fact first (the diagnosis), then the adoption
|
|
77
|
+
* command, and explicitly rules the shim out. The shim is what an operator
|
|
78
|
+
* reaches for by default here, and it is the one remedy that permanently
|
|
79
|
+
* hides a genuinely missing helper.
|
|
80
80
|
*/
|
|
81
81
|
export declare function formatUnmanagedCompanionHint(companion: UnmanagedCompanion): string;
|
|
82
82
|
/**
|
|
83
|
-
* Picks the companion that explains
|
|
83
|
+
* Picks the companion that explains every undefined identifier in
|
|
84
84
|
* `messages`, or undefined when none does.
|
|
85
85
|
*
|
|
86
86
|
* @param messages - Diagnostic messages reported for one file
|
|
@@ -88,11 +88,11 @@ export declare function formatUnmanagedCompanionHint(companion: UnmanagedCompani
|
|
|
88
88
|
*/
|
|
89
89
|
export declare function explainUndefinedIdentifiers(messages: readonly string[], companions: readonly UnmanagedCompanion[]): UnmanagedCompanion | undefined;
|
|
90
90
|
/**
|
|
91
|
-
* Reads the head files in the owned test set and resolves the
|
|
91
|
+
* Reads the head files in the owned test set and resolves the unmanaged
|
|
92
92
|
* companions they pull in with `loadSubScript`. Hoisting shared helpers
|
|
93
93
|
* into such a companion leaves it unowned until export, and every use of
|
|
94
94
|
* every helper then reports `Cannot find name` from an honest per-patch
|
|
95
|
-
* program
|
|
95
|
+
* program. See `patch-lint-unmanaged-companion.ts` for why the generic
|
|
96
96
|
* hint is actively harmful there.
|
|
97
97
|
*
|
|
98
98
|
* Best-effort: an unreadable head simply contributes no companions.
|
|
@@ -100,7 +100,7 @@ export declare function explainUndefinedIdentifiers(messages: readonly string[],
|
|
|
100
100
|
export declare function collectUnmanagedCompanions(repoDir: string, files: readonly string[], ownedFiles: ReadonlySet<string>): Promise<UnmanagedCompanion[]>;
|
|
101
101
|
/**
|
|
102
102
|
* Swaps the generic undefined-identifier hint for the ownership hint when
|
|
103
|
-
* one unmanaged companion explains
|
|
103
|
+
* one unmanaged companion explains every undefined name in the file. Any
|
|
104
104
|
* other issue in the list is returned untouched.
|
|
105
105
|
*/
|
|
106
106
|
export declare function retargetUnmanagedCompanionHints(issues: readonly PatchLintIssue[], companions: readonly UnmanagedCompanion[]): PatchLintIssue[];
|