@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
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Memoised per context object: ownership resolution and cache-key
|
|
9
9
|
* fingerprints call this 2-3× per linted patch, and each call otherwise
|
|
10
|
-
* re-runs `detectNewFilesInDiff` over
|
|
11
|
-
* so a discarded context frees its map
|
|
10
|
+
* re-runs `detectNewFilesInDiff` over every queue entry's diff. Keyed weakly
|
|
11
|
+
* so a discarded context frees its map. A caller that mutates a context
|
|
12
12
|
* entry in place must call {@link invalidateNewFileCreatorsCache}.
|
|
13
13
|
*/
|
|
14
14
|
import { detectNewFilesInDiff } from './patch-lint-diff.js';
|
|
@@ -22,7 +22,7 @@ export function invalidateNewFileCreatorsCache(ctx) {
|
|
|
22
22
|
* mode` by at least one patch in the queue. Paths created by only one
|
|
23
23
|
* patch are also included so callers can distinguish "no creator" from
|
|
24
24
|
* "exactly one creator" without re-scanning the diffs. The returned map
|
|
25
|
-
* is memoised and shared
|
|
25
|
+
* is memoised and shared, so treat it as read-only.
|
|
26
26
|
*/
|
|
27
27
|
export function collectNewFileCreatorsByPath(ctx) {
|
|
28
28
|
const memoised = newFileCreatorsMemo.get(ctx);
|
|
@@ -35,13 +35,13 @@ export interface PatchQueueEntry {
|
|
|
35
35
|
*/
|
|
36
36
|
newFiles: Map<string, string>;
|
|
37
37
|
/**
|
|
38
|
-
* Every path this patch
|
|
38
|
+
* Every path this patch creates, whatever the body kind: text, a
|
|
39
39
|
* reconstructable `GIT binary patch`, or a payload-less
|
|
40
40
|
* `Binary files … differ` stub. `newFiles` is text-only by design (a
|
|
41
41
|
* binary authors no imports, so the import rules gain nothing from it and
|
|
42
42
|
* `extractNewFileContent` correctly refuses to decode one), but "does a
|
|
43
43
|
* later patch create this path" is a question about existence after apply,
|
|
44
|
-
* not about content
|
|
44
|
+
* not about content, and answering it from `newFiles` made every binary
|
|
45
45
|
* creation invisible to the staged-registration rules.
|
|
46
46
|
*/
|
|
47
47
|
createdFiles: Set<string>;
|
|
@@ -51,7 +51,7 @@ export interface PatchQueueEntry {
|
|
|
51
51
|
* patch *modifies* (i.e. paths that show up in the diff without a
|
|
52
52
|
* `new file mode` marker). The forward-import rule and `patch delete`
|
|
53
53
|
* dependency scan use this to detect imports added into pre-existing
|
|
54
|
-
* files
|
|
54
|
+
* files, a failure mode the newFiles map cannot represent because it
|
|
55
55
|
* only tracks creations.
|
|
56
56
|
*/
|
|
57
57
|
modifiedFileAdditions: Map<string, string>;
|
|
@@ -60,7 +60,7 @@ export interface PatchQueueEntry {
|
|
|
60
60
|
* Queue-wide context passed to cross-patch lint rules.
|
|
61
61
|
*
|
|
62
62
|
* "Projected" means rules receive a potentially hypothetical view of the
|
|
63
|
-
* queue
|
|
63
|
+
* queue: the caller may have already applied a planned delete, reorder, or
|
|
64
64
|
* re-export to the entries before calling the rule. This lets
|
|
65
65
|
* `patch reorder`, `patch delete`, `export --order`, and `re-export --files`
|
|
66
66
|
* run the same cross-patch checks they would hit on a real run, without
|
|
@@ -84,7 +84,7 @@ export interface PatchQueueContext {
|
|
|
84
84
|
* Reads manifest metadata best-effort: if the manifest is missing or a patch
|
|
85
85
|
* file has no metadata entry, the context still populates the entry from the
|
|
86
86
|
* filename prefix so cross-patch rules can operate on a drift state. (A
|
|
87
|
-
* separate consistency check
|
|
87
|
+
* separate consistency check, see `patches verify`, is responsible for
|
|
88
88
|
* reporting the drift as its own error.)
|
|
89
89
|
*
|
|
90
90
|
* @param patchesDir - Path to the patches directory
|
|
@@ -111,13 +111,13 @@ export declare function isForwardImportableFile(path: string): boolean;
|
|
|
111
111
|
*
|
|
112
112
|
* Intentionally conservative. Catches:
|
|
113
113
|
* - `import ... from "specifier"` (ES module static imports)
|
|
114
|
-
* - `import "specifier"` (side-effect imports
|
|
114
|
+
* - `import "specifier"` (side-effect imports, where the `from`
|
|
115
115
|
* clause is optional in the regex)
|
|
116
116
|
* - `import("specifier")` (dynamic imports)
|
|
117
117
|
* - ChromeUtils.importESModule("specifier")
|
|
118
118
|
* - ChromeUtils.defineESModuleGetters(obj, { Name: "specifier", ... })
|
|
119
119
|
*
|
|
120
|
-
* Returns the raw specifier strings
|
|
120
|
+
* Returns the raw specifier strings. Callers should take the leaf basename
|
|
121
121
|
* to match against the newFileIndex, because we do not resolve `resource://`
|
|
122
122
|
* URLs to engine file paths.
|
|
123
123
|
*
|
|
@@ -162,19 +162,19 @@ export declare function findForwardImportIgnoreLines(source: string): Set<number
|
|
|
162
162
|
* Cross-patch lint rule: a patch imports a module that a later patch is
|
|
163
163
|
* responsible for creating.
|
|
164
164
|
*
|
|
165
|
-
*
|
|
165
|
+
* Conservative by design: `resource://` URLs are not resolved to engine
|
|
166
166
|
* file paths. Instead a cross-queue index of newly-created files is built,
|
|
167
167
|
* keyed by basename, and imports whose leaf matches an entry owned by a
|
|
168
168
|
* later-ordered patch are flagged. False positives from unrelated basename
|
|
169
|
-
* collisions (two directories both creating `Helper.sys.mjs`) are possible
|
|
170
|
-
*
|
|
169
|
+
* collisions (two directories both creating `Helper.sys.mjs`) are possible.
|
|
170
|
+
* The README documents the limitation and the inline ignore marker above is
|
|
171
171
|
* the escape hatch.
|
|
172
172
|
*
|
|
173
173
|
* Rules out:
|
|
174
174
|
* - Imports whose leaf matches a newly-created file in the *same* or an
|
|
175
175
|
* *earlier* patch (legitimate use).
|
|
176
176
|
* - Imports whose leaf is not in the new-file index at all (pre-existing
|
|
177
|
-
* engine file
|
|
177
|
+
* engine file, not our concern).
|
|
178
178
|
* - Imports on a line suppressed by the ignore marker.
|
|
179
179
|
*/
|
|
180
180
|
/** One discovered forward-import edge: a site importing a later-created file. */
|
|
@@ -204,8 +204,8 @@ export declare function collectForwardImportEdges(ctx: PatchQueueContext): Forwa
|
|
|
204
204
|
* Cross-patch lint rule: flag imports of a module a later-ordered patch is
|
|
205
205
|
* responsible for creating, unless the patch declares an exact staged
|
|
206
206
|
* forward-import for it. Also warns on staged-dependency declarations that
|
|
207
|
-
* never matched (stale). Matching is conservative
|
|
208
|
-
* resolving `resource://`/`chrome://` URLs
|
|
207
|
+
* never matched (stale). Matching is conservative: by basename, not by
|
|
208
|
+
* resolving `resource://`/`chrome://` URLs, with an inline ignore marker as
|
|
209
209
|
* an escape hatch for unrelated basename collisions.
|
|
210
210
|
*/
|
|
211
211
|
export declare function lintPatchQueueForwardImports(ctx: PatchQueueContext): PatchLintIssue[];
|
|
@@ -32,7 +32,7 @@ import { extractNewFileContent } from './patch-transform.js';
|
|
|
32
32
|
* Reads manifest metadata best-effort: if the manifest is missing or a patch
|
|
33
33
|
* file has no metadata entry, the context still populates the entry from the
|
|
34
34
|
* filename prefix so cross-patch rules can operate on a drift state. (A
|
|
35
|
-
* separate consistency check
|
|
35
|
+
* separate consistency check, see `patches verify`, is responsible for
|
|
36
36
|
* reporting the drift as its own error.)
|
|
37
37
|
*
|
|
38
38
|
* @param patchesDir - Path to the patches directory
|
|
@@ -63,7 +63,7 @@ export async function buildPatchQueueContext(patchesDir, config) {
|
|
|
63
63
|
// Added-line content for every file the patch modifies but does not
|
|
64
64
|
// create. Fed to the forward-import rule so imports introduced into
|
|
65
65
|
// pre-existing files are checked too, not only imports in brand-new
|
|
66
|
-
// files.
|
|
66
|
+
// files. Paths in newFilePaths are skipped on purpose: they are
|
|
67
67
|
// already covered by the newFiles map, which carries full content
|
|
68
68
|
// rather than only the added lines.
|
|
69
69
|
const addedLinesByFile = extractAddedLinesPerFile(diff);
|
|
@@ -91,7 +91,7 @@ export async function buildPatchQueueContext(patchesDir, config) {
|
|
|
91
91
|
}
|
|
92
92
|
// The creators map (split out of `lintPatchQueueDuplicateCreations` so
|
|
93
93
|
// `status --ownership` can consume the structured data) lives in
|
|
94
|
-
// `patch-lint-creators.ts` with its per-context memoisation
|
|
94
|
+
// `patch-lint-creators.ts` with its per-context memoisation. It is
|
|
95
95
|
// re-exported here so callers keep importing from `patch-lint.ts`.
|
|
96
96
|
export { collectNewFileCreatorsByPath, invalidateNewFileCreatorsCache, } from './patch-lint-creators.js';
|
|
97
97
|
/**
|
|
@@ -168,7 +168,7 @@ function collectGetterSpecifiers(stripped, results, offsetToLine) {
|
|
|
168
168
|
const openParen = stripped.indexOf('(', match.index);
|
|
169
169
|
if (openParen === -1)
|
|
170
170
|
continue;
|
|
171
|
-
// Walk to the first top-level `{` inside the call
|
|
171
|
+
// Walk to the first top-level `{` inside the call, the start of
|
|
172
172
|
// the getter-map object literal. Bail if we reach the closing `)`
|
|
173
173
|
// first (no object literal argument given).
|
|
174
174
|
let depthParen = 1;
|
|
@@ -230,7 +230,7 @@ export function extractImportSpecifiersWithLines(source) {
|
|
|
230
230
|
// length, preserving character offsets. That lets us match against
|
|
231
231
|
// the stripped source (so we do not match `import` tokens inside
|
|
232
232
|
// block comments or string literals) while still reporting line
|
|
233
|
-
// numbers based on the
|
|
233
|
+
// numbers based on the original source, which is what the
|
|
234
234
|
// ignore-marker scan walks.
|
|
235
235
|
const stripped = stripJsComments(source);
|
|
236
236
|
const results = [];
|
|
@@ -247,7 +247,7 @@ export function extractImportSpecifiersWithLines(source) {
|
|
|
247
247
|
if (match[1])
|
|
248
248
|
results.push({ specifier: match[1], line: offsetToLine(match.index) });
|
|
249
249
|
}
|
|
250
|
-
// ChromeUtils.importESModule("resource://...")
|
|
250
|
+
// ChromeUtils.importESModule("resource://...") is a Firefox single-module import
|
|
251
251
|
const chromeUtilsPattern = /ChromeUtils\.importESModule\s*\(\s*["']([^"']+)["']/g;
|
|
252
252
|
while ((match = chromeUtilsPattern.exec(stripped)) !== null) {
|
|
253
253
|
if (match[1])
|
|
@@ -257,14 +257,14 @@ export function extractImportSpecifiersWithLines(source) {
|
|
|
257
257
|
return results;
|
|
258
258
|
}
|
|
259
259
|
/**
|
|
260
|
-
* Bare `Name: "url"` property lines added inside a
|
|
261
|
-
* `defineESModuleGetters` (or `XPCOMUtils` lazy-getter) map. Applied
|
|
260
|
+
* Bare `Name: "url"` property lines added inside a pre-existing
|
|
261
|
+
* `defineESModuleGetters` (or `XPCOMUtils` lazy-getter) map. Applied only to
|
|
262
262
|
* `modifiedFileAdditions`: a patch that inserts one property into an
|
|
263
263
|
* existing getter object never carries the `defineESModuleGetters(` opener
|
|
264
264
|
* in its added lines, so the balanced-brace walk in
|
|
265
265
|
* {@link extractImportSpecifiersWithLines} cannot see it. The
|
|
266
266
|
* URL-scheme restriction keeps ordinary object literals
|
|
267
|
-
* (`label: "Foo.sys.mjs"`) out
|
|
267
|
+
* (`label: "Foo.sys.mjs"`) out. The leaf-extension filter downstream does
|
|
268
268
|
* the rest.
|
|
269
269
|
*/
|
|
270
270
|
const BARE_GETTER_PROPERTY_LINE = /^\s*(?:["'])?[A-Za-z_$][\w$]*(?:["'])?\s*:\s*["']((?:resource|chrome|moz-src):\/\/[^"']+)["']\s*,?\s*$/;
|
|
@@ -353,7 +353,7 @@ function buildCreatorIndex(ctx, pathsOf) {
|
|
|
353
353
|
/**
|
|
354
354
|
* Basename → later-creators index for the forward-IMPORT scan.
|
|
355
355
|
*
|
|
356
|
-
* Keyed on `newFiles
|
|
356
|
+
* Keyed on `newFiles`: this index answers "which patch creates
|
|
357
357
|
* the module this specifier resolves to", and a binary is not a module.
|
|
358
358
|
*/
|
|
359
359
|
function buildNewFileIndex(ctx) {
|
|
@@ -364,11 +364,11 @@ function buildNewFileIndex(ctx) {
|
|
|
364
364
|
*
|
|
365
365
|
* Keyed on `createdFiles`, which includes binary creations. A registration
|
|
366
366
|
* (`support-files`, a jar.mn line, an actor entry) points at a file that
|
|
367
|
-
* must
|
|
367
|
+
* must exist after apply. Whether its body was text or a `GIT binary patch`
|
|
368
368
|
* has nothing to do with it. Resolving this from `newFiles` made a declared
|
|
369
369
|
* dependency on a binary fixture report `creates-unresolved`, so the
|
|
370
370
|
* declaration read as stale on every lint run and removing it changed
|
|
371
|
-
* nothing either
|
|
371
|
+
* nothing either. The failure was symmetric and therefore invisible.
|
|
372
372
|
*/
|
|
373
373
|
function buildCreatedFileIndex(ctx) {
|
|
374
374
|
return buildCreatorIndex(ctx, (entry) => entry.createdFiles);
|
|
@@ -378,7 +378,7 @@ function buildCreatedFileIndex(ctx) {
|
|
|
378
378
|
* later-ordered patch). Shared by {@link lintPatchQueueForwardImports} (which
|
|
379
379
|
* resolves/reports each) and {@link collectForwardImportEdges} (which returns
|
|
380
380
|
* them structurally). We scan a created file's full body and a modified
|
|
381
|
-
* file's added lines only
|
|
381
|
+
* file's added lines only, so it flags imports *this patch introduces*, not
|
|
382
382
|
* pre-existing HEAD imports that happen to collide with a later-created file.
|
|
383
383
|
*/
|
|
384
384
|
function eachForwardImportSite(ctx, newFileIndex, visit) {
|
|
@@ -389,7 +389,7 @@ function eachForwardImportSite(ctx, newFileIndex, visit) {
|
|
|
389
389
|
if (includeBareGetterLines) {
|
|
390
390
|
// Dedupe by (specifier, line): a patch that adds the whole getter
|
|
391
391
|
// call carries both the opener (found by the balanced walk) and the
|
|
392
|
-
// property line (found here)
|
|
392
|
+
// property line (found here), so report each site once.
|
|
393
393
|
const seen = new Set(sites.map((site) => `${site.specifier}|${site.line}`));
|
|
394
394
|
for (const extra of extractBareGetterSpecifiers(content)) {
|
|
395
395
|
if (!seen.has(`${extra.specifier}|${extra.line}`))
|
|
@@ -448,8 +448,8 @@ export function collectForwardImportEdges(ctx) {
|
|
|
448
448
|
* Cross-patch lint rule: flag imports of a module a later-ordered patch is
|
|
449
449
|
* responsible for creating, unless the patch declares an exact staged
|
|
450
450
|
* forward-import for it. Also warns on staged-dependency declarations that
|
|
451
|
-
* never matched (stale). Matching is conservative
|
|
452
|
-
* resolving `resource://`/`chrome://` URLs
|
|
451
|
+
* never matched (stale). Matching is conservative: by basename, not by
|
|
452
|
+
* resolving `resource://`/`chrome://` URLs, with an inline ignore marker as
|
|
453
453
|
* an escape hatch for unrelated basename collisions.
|
|
454
454
|
*/
|
|
455
455
|
export function lintPatchQueueForwardImports(ctx) {
|
|
@@ -470,11 +470,11 @@ export function lintPatchQueueForwardImports(ctx) {
|
|
|
470
470
|
.map((o) => `${o.filename}:${o.fullPath}`)
|
|
471
471
|
.sort((a, b) => a.localeCompare(b))
|
|
472
472
|
.join(',');
|
|
473
|
-
// Lowest ordinal that lands
|
|
473
|
+
// Lowest ordinal that lands after every later-ordered creator. It
|
|
474
474
|
// turns the operator's "guess and re-run" loop into a single shot
|
|
475
475
|
// when the only fix is reordering. When patchPolicy is available and
|
|
476
476
|
// that ordinal falls outside the importing patch's category range,
|
|
477
|
-
// `patch reorder` would refuse it
|
|
477
|
+
// `patch reorder` would refuse it, so suppress the hint and point at
|
|
478
478
|
// the staged-dependency remedy instead.
|
|
479
479
|
const suggestedOrder = Math.max(...laterOwners.map((o) => o.order)) + 1;
|
|
480
480
|
const category = entry.metadata?.category ?? /^\d+-([a-z]+)-/.exec(entry.filename)?.[1];
|
|
@@ -526,11 +526,11 @@ export function lintPatchQueueForwardImports(ctx) {
|
|
|
526
526
|
}
|
|
527
527
|
// Registration-kind declarations: a jar.mn packaging line,
|
|
528
528
|
// customElements registration, or actor registration referencing a
|
|
529
|
-
// later-created file. There is no import specifier to match
|
|
529
|
+
// later-created file. There is no import specifier to match. The
|
|
530
530
|
// declaration is "used" when the declared line (whitespace-trimmed)
|
|
531
|
-
// appears among the lines this patch adds to the declaring file
|
|
531
|
+
// appears among the lines this patch adds to the declaring file and its
|
|
532
532
|
// `creates` resolves to a file a later-ordered patch actually creates
|
|
533
|
-
// (with `owner`, when set, naming that patch)
|
|
533
|
+
// (with `owner`, when set, naming that patch), mirroring
|
|
534
534
|
// findMatchingStagedDependency for the import kind.
|
|
535
535
|
for (const registration of entry.metadata?.stagedDependencies?.registrations ?? []) {
|
|
536
536
|
const failure = findStagedRegistrationFailure(entry, registration, createdFileIndex);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* custom-property references.
|
|
4
4
|
*
|
|
5
5
|
* Split out of `patch-lint.ts` so each rule family stays within the
|
|
6
|
-
* per-file line budget
|
|
6
|
+
* per-file line budget. `patch-lint.ts` re-exports `lintPatchedCss` so
|
|
7
7
|
* existing callers keep importing from the single module.
|
|
8
8
|
*/
|
|
9
9
|
import type { PatchLintIssue } from '../types/commands/index.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* custom-property references.
|
|
5
5
|
*
|
|
6
6
|
* Split out of `patch-lint.ts` so each rule family stays within the
|
|
7
|
-
* per-file line budget
|
|
7
|
+
* per-file line budget. `patch-lint.ts` re-exports `lintPatchedCss` so
|
|
8
8
|
* existing callers keep importing from the single module.
|
|
9
9
|
*/
|
|
10
10
|
import { join } from 'node:path';
|
|
@@ -15,7 +15,7 @@ import { hasRawCssColors } from '../utils/regex.js';
|
|
|
15
15
|
import { loadFurnaceConfig } from './furnace-config.js';
|
|
16
16
|
import { extractAddedLineNumbersPerFile, extractAddedLinesPerFile } from './patch-lint-diff.js';
|
|
17
17
|
/**
|
|
18
|
-
* Loads the furnace token-prefix lint inputs gracefully
|
|
18
|
+
* Loads the furnace token-prefix lint inputs gracefully. Returns
|
|
19
19
|
* undefined (skipping the token-prefix check) when furnace.json cannot
|
|
20
20
|
* be loaded or no tokenPrefix is configured.
|
|
21
21
|
*/
|
|
@@ -38,7 +38,7 @@ async function loadCssTokenContext(repoDir) {
|
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* Masks CSS block comments with spaces, preserving newlines so line
|
|
41
|
-
* numbers stay stable. An unclosed trailing `/*` is masked to EOF
|
|
41
|
+
* numbers stay stable. An unclosed trailing `/*` is masked to EOF,
|
|
42
42
|
* matching how a CSS parser treats it.
|
|
43
43
|
*/
|
|
44
44
|
function maskCssComments(source) {
|
|
@@ -60,7 +60,7 @@ const RAW_COLOR_IGNORE_MARKER = 'fireforge-ignore: raw-color-value';
|
|
|
60
60
|
* comment spanning the context/added boundary suppresses its hex, then
|
|
61
61
|
* only the patch's added line numbers are scanned. Returns undefined
|
|
62
62
|
* when any added line number falls outside the on-disk file (patch not
|
|
63
|
-
* applied / drifted)
|
|
63
|
+
* applied / drifted). The caller then falls back to the legacy
|
|
64
64
|
* joined-added-lines scan rather than misattributing lines.
|
|
65
65
|
*/
|
|
66
66
|
function buildAddedLinesScanSource(rawCss, addedNumbers) {
|
|
@@ -77,7 +77,7 @@ function checkRawColorValues(input) {
|
|
|
77
77
|
const { file, rawCss, addedLinesByFile, addedLineNumbersByFile, config, issues } = input;
|
|
78
78
|
// Check only introduced raw color values when diff context is available.
|
|
79
79
|
// Skip files on the raw-color allowlist (exact path or basename match) and
|
|
80
|
-
// auto-exempt files under `browser/branding
|
|
80
|
+
// auto-exempt files under `browser/branding/`: those are the fork's
|
|
81
81
|
// visual identity assets (app-about dialogs, installer pages, branded CSS
|
|
82
82
|
// copied from Firefox's `unofficial` template) and belong to the
|
|
83
83
|
// design-decision layer the design-token system does not govern. Without
|
|
@@ -12,7 +12,7 @@ import type { PatchLintIssue } from '../types/commands/index.js';
|
|
|
12
12
|
/**
|
|
13
13
|
* Collects engine-relative paths that changed between `rev` and `HEAD`,
|
|
14
14
|
* plus any workdir modifications and untracked files. An empty set means
|
|
15
|
-
* "no diff we can prove"
|
|
15
|
+
* "no diff we can prove". Downstream treats every issue as `cumulative`
|
|
16
16
|
* in that case (operator ran `lint --since HEAD` with no pending work).
|
|
17
17
|
* @param engineDir Path to the engine git repository.
|
|
18
18
|
* @param rev Git revision to diff against (e.g. `HEAD`, a branch, a SHA).
|
|
@@ -28,10 +28,10 @@ export declare const AGGREGATE_PATCH_FILE = "(patch)";
|
|
|
28
28
|
/**
|
|
29
29
|
* Annotates a list of lint issues with `introduced` / `cumulative` tags
|
|
30
30
|
* based on whether the issue's file is part of the supplied diff set.
|
|
31
|
-
* Mutates each issue in place
|
|
31
|
+
* Mutates each issue in place and returns the list for chaining.
|
|
32
32
|
*
|
|
33
|
-
* Issues with no file (`issue.file === ''`)
|
|
34
|
-
* describe queue-wide state
|
|
33
|
+
* Issues with no file (`issue.file === ''`), for example cross-patch rules
|
|
34
|
+
* that describe queue-wide state, are always `cumulative` under `--since`
|
|
35
35
|
* because they describe drift accumulated across many commits, not a single
|
|
36
36
|
* current-task edit.
|
|
37
37
|
*
|
|
@@ -39,7 +39,7 @@ export declare const AGGREGATE_PATCH_FILE = "(patch)";
|
|
|
39
39
|
* synthetic placeholder that can never appear in a real `diffFiles` set.
|
|
40
40
|
* Without special-casing, `large-patch-files` / `large-patch-lines` are
|
|
41
41
|
* always tagged `[cumulative]` under `--only-introduced` even when the diff
|
|
42
|
-
*
|
|
42
|
+
* is the aggregate the rules measured, which reads as "this pre-existed" to
|
|
43
43
|
* an operator asking "what did this diff introduce?". The aggregate tag is
|
|
44
44
|
* therefore promoted to `introduced` whenever the diff set has any content:
|
|
45
45
|
* a non-empty `diffFiles` means the operator asked about a specific diff
|
|
@@ -17,7 +17,7 @@ import { getUntrackedFiles } from './git-status.js';
|
|
|
17
17
|
/**
|
|
18
18
|
* Collects engine-relative paths that changed between `rev` and `HEAD`,
|
|
19
19
|
* plus any workdir modifications and untracked files. An empty set means
|
|
20
|
-
* "no diff we can prove"
|
|
20
|
+
* "no diff we can prove". Downstream treats every issue as `cumulative`
|
|
21
21
|
* in that case (operator ran `lint --since HEAD` with no pending work).
|
|
22
22
|
* @param engineDir Path to the engine git repository.
|
|
23
23
|
* @param rev Git revision to diff against (e.g. `HEAD`, a branch, a SHA).
|
|
@@ -68,10 +68,10 @@ export const AGGREGATE_PATCH_FILE = '(patch)';
|
|
|
68
68
|
/**
|
|
69
69
|
* Annotates a list of lint issues with `introduced` / `cumulative` tags
|
|
70
70
|
* based on whether the issue's file is part of the supplied diff set.
|
|
71
|
-
* Mutates each issue in place
|
|
71
|
+
* Mutates each issue in place and returns the list for chaining.
|
|
72
72
|
*
|
|
73
|
-
* Issues with no file (`issue.file === ''`)
|
|
74
|
-
* describe queue-wide state
|
|
73
|
+
* Issues with no file (`issue.file === ''`), for example cross-patch rules
|
|
74
|
+
* that describe queue-wide state, are always `cumulative` under `--since`
|
|
75
75
|
* because they describe drift accumulated across many commits, not a single
|
|
76
76
|
* current-task edit.
|
|
77
77
|
*
|
|
@@ -79,7 +79,7 @@ export const AGGREGATE_PATCH_FILE = '(patch)';
|
|
|
79
79
|
* synthetic placeholder that can never appear in a real `diffFiles` set.
|
|
80
80
|
* Without special-casing, `large-patch-files` / `large-patch-lines` are
|
|
81
81
|
* always tagged `[cumulative]` under `--only-introduced` even when the diff
|
|
82
|
-
*
|
|
82
|
+
* is the aggregate the rules measured, which reads as "this pre-existed" to
|
|
83
83
|
* an operator asking "what did this diff introduce?". The aggregate tag is
|
|
84
84
|
* therefore promoted to `introduced` whenever the diff set has any content:
|
|
85
85
|
* a non-empty `diffFiles` means the operator asked about a specific diff
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Factored out of `patch-lint.ts` so the per-patch lint body and
|
|
6
6
|
* cross-patch lint body (in `patch-lint-cross.ts`) can both depend on
|
|
7
7
|
* the same diff walkers without inducing a circular import. Callers
|
|
8
|
-
* should keep importing these through `patch-lint.ts
|
|
8
|
+
* should keep importing these through `patch-lint.ts`. This file is
|
|
9
9
|
* an implementation detail. The actual line-walking lives in
|
|
10
10
|
* `parseDiffSections` (patch-parse.ts), the codebase's single diff walker.
|
|
11
11
|
*/
|
|
@@ -22,8 +22,8 @@ export declare function extractAddedLinesPerFile(diffContent: string): Map<strin
|
|
|
22
22
|
* Extracts 1-based post-patch line numbers of added lines per file from a
|
|
23
23
|
* unified diff. Walking each hunk with a new-file line counter (`+` and
|
|
24
24
|
* context lines advance it, `-` lines do not) lets rules that need
|
|
25
|
-
* full-file context
|
|
26
|
-
* boundary
|
|
25
|
+
* full-file context (e.g. comment masking across the context/added
|
|
26
|
+
* boundary) map the patch's additions onto the applied file.
|
|
27
27
|
*/
|
|
28
28
|
export declare function extractAddedLineNumbersPerFile(diffContent: string): Map<string, number[]>;
|
|
29
29
|
/**
|
|
@@ -34,7 +34,7 @@ export declare function extractAddedLineNumbersPerFile(diffContent: string): Map
|
|
|
34
34
|
* `buildPatchQueueContext`.
|
|
35
35
|
*
|
|
36
36
|
* Matches buildPatchQueueContext's algorithm exactly: skip paths that are
|
|
37
|
-
* created by the diff
|
|
37
|
+
* created by the diff, since those are already covered by the `newFiles` map,
|
|
38
38
|
* which carries full content rather than only the added lines.
|
|
39
39
|
*
|
|
40
40
|
* @param diff - Unified diff content
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Factored out of `patch-lint.ts` so the per-patch lint body and
|
|
7
7
|
* cross-patch lint body (in `patch-lint-cross.ts`) can both depend on
|
|
8
8
|
* the same diff walkers without inducing a circular import. Callers
|
|
9
|
-
* should keep importing these through `patch-lint.ts
|
|
9
|
+
* should keep importing these through `patch-lint.ts`. This file is
|
|
10
10
|
* an implementation detail. The actual line-walking lives in
|
|
11
11
|
* `parseDiffSections` (patch-parse.ts), the codebase's single diff walker.
|
|
12
12
|
*/
|
|
@@ -49,8 +49,8 @@ export function extractAddedLinesPerFile(diffContent) {
|
|
|
49
49
|
* Extracts 1-based post-patch line numbers of added lines per file from a
|
|
50
50
|
* unified diff. Walking each hunk with a new-file line counter (`+` and
|
|
51
51
|
* context lines advance it, `-` lines do not) lets rules that need
|
|
52
|
-
* full-file context
|
|
53
|
-
* boundary
|
|
52
|
+
* full-file context (e.g. comment masking across the context/added
|
|
53
|
+
* boundary) map the patch's additions onto the applied file.
|
|
54
54
|
*/
|
|
55
55
|
export function extractAddedLineNumbersPerFile(diffContent) {
|
|
56
56
|
const result = new Map();
|
|
@@ -84,7 +84,7 @@ export function extractAddedLineNumbersPerFile(diffContent) {
|
|
|
84
84
|
* `buildPatchQueueContext`.
|
|
85
85
|
*
|
|
86
86
|
* Matches buildPatchQueueContext's algorithm exactly: skip paths that are
|
|
87
|
-
* created by the diff
|
|
87
|
+
* created by the diff, since those are already covered by the `newFiles` map,
|
|
88
88
|
* which carries full content rather than only the added lines.
|
|
89
89
|
*
|
|
90
90
|
* @param diff - Unified diff content
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The `file-too-large` thresholds and their rendered message.
|
|
3
3
|
*
|
|
4
|
-
* Its own module for two reasons: the config validator needs the
|
|
4
|
+
* Its own module for two reasons: the config validator needs the defaults
|
|
5
5
|
* to validate an override triple against the merged result, and importing
|
|
6
6
|
* `patch-lint.ts` from `config-validate.ts` for a constant would draw an
|
|
7
7
|
* import edge (and a cycle) between the rule bodies and config parsing.
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* On the vocabulary: the bands were `notice` / `warning` / `error` with the
|
|
10
10
|
* middle one described as a "soft limit". That description is false under
|
|
11
11
|
* the posture FireForge itself recommends for a release gate,
|
|
12
|
-
* `--max-warnings 0`, where a warning is a hard failure
|
|
12
|
+
* `--max-warnings 0`, where a warning is a hard failure, so a file at 751
|
|
13
13
|
* lines failed a gate with a message calling 750 soft. The message below
|
|
14
|
-
* says what the band
|
|
14
|
+
* says what the band is (a warning) and what a zero-warning gate does with
|
|
15
15
|
* it, and the thresholds are now tunable, so a project whose file-size
|
|
16
16
|
* policy differs has a dial instead of an argument.
|
|
17
17
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* The `file-too-large` thresholds and their rendered message.
|
|
4
4
|
*
|
|
5
|
-
* Its own module for two reasons: the config validator needs the
|
|
5
|
+
* Its own module for two reasons: the config validator needs the defaults
|
|
6
6
|
* to validate an override triple against the merged result, and importing
|
|
7
7
|
* `patch-lint.ts` from `config-validate.ts` for a constant would draw an
|
|
8
8
|
* import edge (and a cycle) between the rule bodies and config parsing.
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* On the vocabulary: the bands were `notice` / `warning` / `error` with the
|
|
11
11
|
* middle one described as a "soft limit". That description is false under
|
|
12
12
|
* the posture FireForge itself recommends for a release gate,
|
|
13
|
-
* `--max-warnings 0`, where a warning is a hard failure
|
|
13
|
+
* `--max-warnings 0`, where a warning is a hard failure, so a file at 751
|
|
14
14
|
* lines failed a gate with a message calling 750 soft. The message below
|
|
15
|
-
* says what the band
|
|
15
|
+
* says what the band is (a warning) and what a zero-warning gate does with
|
|
16
16
|
* it, and the thresholds are now tunable, so a project whose file-size
|
|
17
17
|
* policy differs has a dial instead of an argument.
|
|
18
18
|
*/
|
|
@@ -5,7 +5,7 @@ import type { PatchQueueForwardRegistrationEntry, PatchQueueView } from './patch
|
|
|
5
5
|
*
|
|
6
6
|
* The entry alone is not enough for the discharge command the rule prints:
|
|
7
7
|
* `--line` is compared, whitespace-trimmed, against the lines the patch
|
|
8
|
-
*
|
|
8
|
+
* adds, and a synthesised `support-files = ["<entry>"]` only ever matches a
|
|
9
9
|
* manifest whose array is single-line and single-entry. Carrying the source
|
|
10
10
|
* line keeps the remedy and the validation talking about the same text.
|
|
11
11
|
*/
|
|
@@ -26,8 +26,8 @@ export interface SupportFileEntry {
|
|
|
26
26
|
* with the manifest line it is written on.
|
|
27
27
|
*
|
|
28
28
|
* Handles the TOML array on one line and spread over several, and the
|
|
29
|
-
* whitespace-separated `.ini` spelling. Anything else
|
|
30
|
-
* shape this does not recognise
|
|
29
|
+
* whitespace-separated `.ini` spelling. Anything else (a computed value, a
|
|
30
|
+
* shape this does not recognise) yields nothing, because a rule that
|
|
31
31
|
* guesses at a manifest it cannot parse refuses correct queues.
|
|
32
32
|
*
|
|
33
33
|
* Quoted tokens are matched per physical line rather than over the whole
|
|
@@ -40,7 +40,7 @@ export declare function extractSupportFileEntries(content: string): SupportFileE
|
|
|
40
40
|
* Resolves one `support-files` entry, relative to its manifest's directory,
|
|
41
41
|
* into a matcher over engine-relative paths.
|
|
42
42
|
*
|
|
43
|
-
* Only a `*` inside a single path segment is expanded
|
|
43
|
+
* Only a `*` inside a single path segment is expanded, the shape the
|
|
44
44
|
* downstream report uses (`fixtures/*.sqlite`). `**`, `!` exclusions and
|
|
45
45
|
* absolute `/`-rooted entries return undefined: they either cross directory
|
|
46
46
|
* boundaries or subtract, and a matcher that guessed at them would attribute
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// SPDX-License-Identifier: EUPL-1.2
|
|
2
2
|
/**
|
|
3
3
|
* Cross-patch lint rule: a test manifest that registers a file a
|
|
4
|
-
*
|
|
4
|
+
* later-ordered patch creates, without declaring the staged dependency.
|
|
5
5
|
*
|
|
6
|
-
* The import kind has had this arm since forward-import shipped
|
|
6
|
+
* The import kind has had this arm since forward-import shipped. The
|
|
7
7
|
* registration kind never did. `--kind registration` metadata was only ever
|
|
8
|
-
* checked for
|
|
8
|
+
* checked for staleness once declared, so a patch whose `xpcshell.toml`
|
|
9
9
|
* carried `support-files = ["fixtures/*.sqlite"]` for a fixture the next
|
|
10
|
-
* patch creates passed lint in both arms
|
|
11
|
-
* removing the declaration produced identical silence,
|
|
12
|
-
*
|
|
10
|
+
* patch creates passed lint in both arms. Declaring the dependency and
|
|
11
|
+
* removing the declaration produced identical silence, so the gap was
|
|
12
|
+
* invisible rather than merely absent.
|
|
13
13
|
*
|
|
14
|
-
* Scope is
|
|
14
|
+
* Scope is narrow on purpose: test-manifest `support-files` only. A
|
|
15
15
|
* jar.mn packaging line or an actor/customElements registration names its
|
|
16
16
|
* target through indirection the linter cannot resolve without the build
|
|
17
17
|
* system, and a rule that guesses there would refuse correct queues on a
|
|
@@ -24,7 +24,7 @@ import { escapeRegex } from '../utils/regex.js';
|
|
|
24
24
|
import { isLaterOwner, quoteRegistrationLine } from './patch-lint-staged-registration.js';
|
|
25
25
|
/**
|
|
26
26
|
* Manifest basenames whose `support-files` key registers auxiliary files
|
|
27
|
-
* for a test suite. Closed and documented on purpose
|
|
27
|
+
* for a test suite. Closed and documented on purpose: a pattern like
|
|
28
28
|
* "anything .toml" would sweep in Cargo and taskcluster manifests, whose
|
|
29
29
|
* `support-files`-shaped keys mean something else entirely.
|
|
30
30
|
*/
|
|
@@ -51,8 +51,8 @@ const SUPPORT_FILES_PATTERN = /^\s*support-files\s*=\s*(.*)$/;
|
|
|
51
51
|
* with the manifest line it is written on.
|
|
52
52
|
*
|
|
53
53
|
* Handles the TOML array on one line and spread over several, and the
|
|
54
|
-
* whitespace-separated `.ini` spelling. Anything else
|
|
55
|
-
* shape this does not recognise
|
|
54
|
+
* whitespace-separated `.ini` spelling. Anything else (a computed value, a
|
|
55
|
+
* shape this does not recognise) yields nothing, because a rule that
|
|
56
56
|
* guesses at a manifest it cannot parse refuses correct queues.
|
|
57
57
|
*
|
|
58
58
|
* Quoted tokens are matched per physical line rather than over the whole
|
|
@@ -115,7 +115,7 @@ export function extractSupportFileEntries(content) {
|
|
|
115
115
|
* Resolves one `support-files` entry, relative to its manifest's directory,
|
|
116
116
|
* into a matcher over engine-relative paths.
|
|
117
117
|
*
|
|
118
|
-
* Only a `*` inside a single path segment is expanded
|
|
118
|
+
* Only a `*` inside a single path segment is expanded, the shape the
|
|
119
119
|
* downstream report uses (`fixtures/*.sqlite`). `**`, `!` exclusions and
|
|
120
120
|
* absolute `/`-rooted entries return undefined: they either cross directory
|
|
121
121
|
* boundaries or subtract, and a matcher that guessed at them would attribute
|
|
@@ -152,7 +152,7 @@ function isDeclared(entry, manifestPath, createdPath) {
|
|
|
152
152
|
export function lintPatchQueueForwardRegistrations(ctx) {
|
|
153
153
|
const issues = [];
|
|
154
154
|
for (const entry of ctx.entries) {
|
|
155
|
-
// Both arms: a manifest this patch
|
|
155
|
+
// Both arms: a manifest this patch creates and one it modifies can each
|
|
156
156
|
// introduce a registration line.
|
|
157
157
|
const manifests = [
|
|
158
158
|
...entry.newFiles,
|
|
@@ -28,7 +28,7 @@ export interface ValidateExportJsDocOptions {
|
|
|
28
28
|
* Validates a top-level function declaration: requires an attached JSDoc
|
|
29
29
|
* comment, then checks @param name matching and @returns presence. Exported
|
|
30
30
|
* so the chrome-subscript validator (`patch-lint-chrome-jsdoc.ts`) can reuse
|
|
31
|
-
* it on `parseScript`-produced declarations
|
|
31
|
+
* it on `parseScript`-produced declarations. The rule shape is identical
|
|
32
32
|
* between ES-module exports and chrome-subscript top-level declarations.
|
|
33
33
|
*
|
|
34
34
|
* @param fn - FunctionDeclaration AST node
|
|
@@ -54,7 +54,7 @@ export declare function validateClassDecl(cls: AcornESTreeNode<ClassDeclaration>
|
|
|
54
54
|
* 3. methods whose JSDoc carries `@private` or `@internal`
|
|
55
55
|
*
|
|
56
56
|
* A pure-override skip (`super.method(...args)`-only bodies bypassing the
|
|
57
|
-
* return-tag check) is deliberately not implemented
|
|
57
|
+
* return-tag check) is deliberately not implemented. The rule stays simple.
|
|
58
58
|
*/
|
|
59
59
|
export declare function validateClassMethods(cls: AcornESTreeNode<ClassDeclaration>, comments: acorn.Comment[], source: string, severity: 'warning' | 'error'): JsDocIssue[];
|
|
60
60
|
/**
|