@hominis/fireforge 0.45.0 → 0.46.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +409 -446
- package/dist/bin/fireforge.d.ts +1 -1
- package/dist/bin/fireforge.js +21 -15
- package/dist/build-info.json +4 -4
- package/dist/src/cli-usage-error.d.ts +46 -0
- package/dist/src/cli-usage-error.js +81 -0
- package/dist/src/cli.d.ts +7 -2
- package/dist/src/cli.js +47 -47
- package/dist/src/commands/bootstrap-checks.js +2 -1
- package/dist/src/commands/bootstrap.js +3 -4
- package/dist/src/commands/build.js +27 -17
- package/dist/src/commands/config.js +9 -9
- package/dist/src/commands/destructive-decision.d.ts +19 -0
- package/dist/src/commands/destructive-decision.js +31 -0
- package/dist/src/commands/discard.js +5 -5
- package/dist/src/commands/doctor-check-core.d.ts +4 -10
- package/dist/src/commands/doctor-check-core.js +0 -8
- 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 -17
- package/dist/src/commands/doctor-orphaned-harness.js +14 -23
- 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 +3 -3
- 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 +3 -1
- package/dist/src/commands/doctor.js +15 -16
- package/dist/src/commands/download.js +50 -37
- package/dist/src/commands/export-all.js +29 -12
- package/dist/src/commands/export-flow.d.ts +5 -5
- package/dist/src/commands/export-flow.js +29 -59
- package/dist/src/commands/export-placement-conflicts.d.ts +3 -3
- package/dist/src/commands/export-placement-conflicts.js +12 -12
- package/dist/src/commands/export-placement-gate.d.ts +2 -2
- package/dist/src/commands/export-placement-gate.js +7 -13
- package/dist/src/commands/export-placement-policy.d.ts +1 -1
- package/dist/src/commands/export-placement-policy.js +4 -6
- package/dist/src/commands/export-shared.d.ts +51 -32
- package/dist/src/commands/export-shared.js +17 -32
- package/dist/src/commands/export.js +14 -5
- package/dist/src/commands/furnace/apply.js +16 -16
- package/dist/src/commands/furnace/authoring-config.d.ts +13 -0
- package/dist/src/commands/furnace/authoring-config.js +19 -0
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +1 -1
- package/dist/src/commands/furnace/chrome-doc-remove.js +2 -2
- 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 +7 -12
- package/dist/src/commands/furnace/create-dry-run.d.ts +4 -4
- package/dist/src/commands/furnace/create-dry-run.js +6 -9
- 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 +31 -15
- package/dist/src/commands/furnace/create-templates.js +20 -19
- 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 +35 -29
- package/dist/src/commands/furnace/deploy.js +15 -6
- 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 +17 -16
- 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 +43 -34
- package/dist/src/commands/furnace/preview.js +17 -17
- package/dist/src/commands/furnace/refresh.js +15 -7
- package/dist/src/commands/furnace/remove-mutations.d.ts +9 -10
- package/dist/src/commands/furnace/remove-mutations.js +19 -19
- 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 +4 -8
- package/dist/src/commands/furnace/rename-browser-test.js +10 -15
- 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 +36 -36
- package/dist/src/commands/furnace/scan.js +3 -3
- package/dist/src/commands/furnace/status.js +19 -16
- package/dist/src/commands/furnace/sync.js +6 -6
- package/dist/src/commands/furnace/test-file-name.d.ts +28 -0
- package/dist/src/commands/furnace/test-file-name.js +39 -0
- package/dist/src/commands/furnace/validate.js +11 -12
- package/dist/src/commands/furnace/validation-output.d.ts +21 -9
- package/dist/src/commands/furnace/validation-output.js +3 -8
- package/dist/src/commands/import.js +22 -29
- package/dist/src/commands/lint-per-patch.d.ts +2 -2
- package/dist/src/commands/lint-per-patch.js +27 -12
- package/dist/src/commands/lint-per-run-checkjs.d.ts +14 -15
- 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 +5 -4
- package/dist/src/commands/lint.js +36 -36
- package/dist/src/commands/manifest.d.ts +4 -4
- package/dist/src/commands/manifest.js +1 -1
- package/dist/src/commands/package.js +4 -6
- package/dist/src/commands/patch/compact.d.ts +2 -2
- package/dist/src/commands/patch/compact.js +19 -20
- package/dist/src/commands/patch/delete.d.ts +1 -1
- package/dist/src/commands/patch/delete.js +23 -33
- package/dist/src/commands/patch/entry-projection.d.ts +13 -0
- package/dist/src/commands/patch/entry-projection.js +24 -0
- package/dist/src/commands/patch/lint-ignore.d.ts +3 -12
- package/dist/src/commands/patch/lint-ignore.js +33 -44
- package/dist/src/commands/patch/move-files-create.d.ts +2 -2
- package/dist/src/commands/patch/move-files-create.js +29 -15
- package/dist/src/commands/patch/move-files-into.d.ts +2 -2
- package/dist/src/commands/patch/move-files-into.js +41 -37
- package/dist/src/commands/patch/move-files.js +5 -14
- 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 +35 -49
- package/dist/src/commands/patch/reorder.js +35 -48
- package/dist/src/commands/patch/split-plan.d.ts +7 -8
- package/dist/src/commands/patch/split-plan.js +10 -13
- package/dist/src/commands/patch/split.d.ts +2 -2
- package/dist/src/commands/patch/split.js +50 -48
- 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 +22 -28
- package/dist/src/commands/patch/tier.d.ts +2 -2
- package/dist/src/commands/patch/tier.js +20 -30
- package/dist/src/commands/patch-rename-map.d.ts +19 -0
- package/dist/src/commands/patch-rename-map.js +36 -0
- package/dist/src/commands/pending-resolution.d.ts +15 -0
- package/dist/src/commands/pending-resolution.js +25 -0
- package/dist/src/commands/re-export-adjacent.d.ts +25 -3
- package/dist/src/commands/re-export-adjacent.js +40 -24
- package/dist/src/commands/re-export-bulk-scan.d.ts +3 -3
- package/dist/src/commands/re-export-bulk-scan.js +23 -27
- package/dist/src/commands/re-export-drift.d.ts +10 -10
- package/dist/src/commands/re-export-drift.js +33 -33
- package/dist/src/commands/re-export-files.d.ts +2 -3
- package/dist/src/commands/re-export-files.js +52 -44
- package/dist/src/commands/re-export-lint.d.ts +29 -30
- package/dist/src/commands/re-export-lint.js +36 -29
- 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 +12 -9
- package/dist/src/commands/re-export-single.d.ts +23 -4
- package/dist/src/commands/re-export-single.js +39 -31
- package/dist/src/commands/re-export.js +35 -17
- package/dist/src/commands/rebase/abort.js +9 -14
- package/dist/src/commands/rebase/continue.js +20 -19
- package/dist/src/commands/rebase/index.d.ts +1 -1
- package/dist/src/commands/rebase/index.js +5 -5
- package/dist/src/commands/rebase/patch-loop.d.ts +2 -2
- package/dist/src/commands/rebase/patch-loop.js +20 -24
- 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 +21 -13
- package/dist/src/commands/run.d.ts +0 -13
- package/dist/src/commands/run.js +38 -51
- package/dist/src/commands/setup-support.d.ts +16 -4
- package/dist/src/commands/setup-support.js +20 -20
- package/dist/src/commands/setup.js +4 -10
- package/dist/src/commands/source.js +9 -2
- package/dist/src/commands/status-check.d.ts +3 -3
- package/dist/src/commands/status-check.js +6 -6
- 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 +5 -5
- 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 +25 -26
- package/dist/src/commands/test-build-phase.d.ts +3 -3
- package/dist/src/commands/test-build-phase.js +48 -24
- 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 +4 -4
- package/dist/src/commands/test-modes.js +4 -5
- package/dist/src/commands/test-register.js +5 -3
- package/dist/src/commands/test-run.d.ts +11 -11
- package/dist/src/commands/test-run.js +40 -33
- package/dist/src/commands/test-stale-gate.d.ts +12 -12
- package/dist/src/commands/test-stale-gate.js +17 -17
- package/dist/src/commands/test-verdict.d.ts +19 -5
- package/dist/src/commands/test-verdict.js +26 -11
- package/dist/src/commands/test.d.ts +3 -3
- package/dist/src/commands/test.js +73 -36
- package/dist/src/commands/token-coverage.js +3 -3
- package/dist/src/commands/token-list.d.ts +26 -0
- package/dist/src/commands/token-list.js +153 -0
- package/dist/src/commands/token.js +26 -10
- package/dist/src/commands/tree.js +26 -21
- package/dist/src/commands/typecheck.d.ts +6 -6
- package/dist/src/commands/typecheck.js +16 -16
- 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 +17 -16
- 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 -12
- package/dist/src/core/branding.js +6 -5
- package/dist/src/core/browser-wire.d.ts +1 -1
- package/dist/src/core/browser-wire.js +10 -7
- package/dist/src/core/build-audit-platform.d.ts +32 -3
- package/dist/src/core/build-audit-platform.js +153 -13
- package/dist/src/core/build-audit-registration.d.ts +5 -5
- package/dist/src/core/build-audit-registration.js +10 -9
- 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 +57 -0
- package/dist/src/core/build-audit-skip.js +112 -0
- 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 +21 -8
- package/dist/src/core/build-audit.js +142 -40
- 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 +48 -31
- package/dist/src/core/build-baseline.js +20 -43
- package/dist/src/core/build-jar-escalation.d.ts +8 -8
- package/dist/src/core/build-jar-escalation.js +18 -17
- package/dist/src/core/build-overwrite-guard.d.ts +4 -4
- package/dist/src/core/build-overwrite-guard.js +14 -14
- package/dist/src/core/build-prepare.d.ts +4 -12
- package/dist/src/core/build-prepare.js +22 -26
- package/dist/src/core/config-mutate.js +4 -4
- package/dist/src/core/config-paths.d.ts +2 -6
- package/dist/src/core/config-paths.js +4 -2
- package/dist/src/core/config-state.d.ts +0 -6
- package/dist/src/core/config-state.js +3 -21
- package/dist/src/core/config-validate-build-audit.d.ts +8 -0
- package/dist/src/core/config-validate-build-audit.js +80 -0
- package/dist/src/core/config-validate-file-size.d.ts +1 -1
- package/dist/src/core/config-validate-file-size.js +3 -3
- package/dist/src/core/config-validate-patch-policy.d.ts +2 -2
- package/dist/src/core/config-validate-patch-policy.js +3 -3
- package/dist/src/core/config-validate-test-toolchains.d.ts +2 -2
- package/dist/src/core/config-validate-test-toolchains.js +4 -5
- package/dist/src/core/config-validate.js +22 -12
- package/dist/src/core/config.d.ts +12 -12
- package/dist/src/core/config.js +21 -25
- package/dist/src/core/coverage-extend.d.ts +16 -16
- package/dist/src/core/coverage-extend.js +20 -20
- 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 +22 -23
- 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 +5 -13
- package/dist/src/core/engine-precondition.js +5 -10
- package/dist/src/core/engine-session-lock.d.ts +18 -18
- package/dist/src/core/engine-session-lock.js +50 -54
- package/dist/src/core/export-moved-code-shape.d.ts +7 -7
- package/dist/src/core/export-moved-code-shape.js +10 -10
- package/dist/src/core/file-lock-owner.d.ts +103 -0
- package/dist/src/core/file-lock-owner.js +259 -0
- package/dist/src/core/file-lock.d.ts +14 -19
- package/dist/src/core/file-lock.js +90 -128
- package/dist/src/core/firefox-cache.d.ts +13 -1
- package/dist/src/core/firefox-cache.js +61 -36
- package/dist/src/core/firefox-download.d.ts +15 -0
- package/dist/src/core/firefox-download.js +38 -22
- package/dist/src/core/firefox-extract.d.ts +8 -7
- package/dist/src/core/firefox-extract.js +45 -27
- package/dist/src/core/firefox.d.ts +34 -36
- package/dist/src/core/firefox.js +13 -44
- package/dist/src/core/furnace-apply-dry-run.d.ts +1 -6
- package/dist/src/core/furnace-apply-dry-run.js +2 -8
- 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 -20
- package/dist/src/core/furnace-apply-helpers.js +28 -39
- 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 +13 -11
- 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 +4 -4
- package/dist/src/core/furnace-apply.js +50 -29
- 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 +5 -5
- package/dist/src/core/furnace-config.js +40 -53
- package/dist/src/core/furnace-constants.d.ts +6 -6
- package/dist/src/core/furnace-constants.js +9 -8
- 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 +20 -0
- package/dist/src/core/furnace-dir-entry.js +21 -0
- 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 +22 -19
- package/dist/src/core/furnace-operation.js +38 -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.d.ts +18 -6
- package/dist/src/core/furnace-refresh.js +5 -8
- package/dist/src/core/furnace-registration-ast.d.ts +2 -3
- package/dist/src/core/furnace-registration-ast.js +9 -12
- 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 +7 -6
- package/dist/src/core/furnace-registration.js +29 -36
- package/dist/src/core/furnace-rollback.d.ts +1 -1
- package/dist/src/core/furnace-rollback.js +5 -5
- package/dist/src/core/furnace-scanner.js +3 -6
- 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 +12 -12
- 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 +18 -20
- 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 +6 -4
- package/dist/src/core/git-base.js +29 -7
- package/dist/src/core/git-diff-new-file.d.ts +40 -0
- package/dist/src/core/git-diff-new-file.js +119 -0
- package/dist/src/core/git-diff.d.ts +13 -13
- package/dist/src/core/git-diff.js +121 -189
- package/dist/src/core/git-file-ops.d.ts +6 -13
- package/dist/src/core/git-file-ops.js +11 -35
- package/dist/src/core/git-readonly-index.d.ts +12 -14
- package/dist/src/core/git-readonly-index.js +12 -16
- package/dist/src/core/git-status.d.ts +9 -2
- package/dist/src/core/git-status.js +23 -11
- package/dist/src/core/git.d.ts +3 -9
- package/dist/src/core/git.js +28 -57
- package/dist/src/core/harness-orphans.d.ts +17 -17
- package/dist/src/core/harness-orphans.js +28 -27
- package/dist/src/core/history-log.d.ts +19 -0
- package/dist/src/core/history-log.js +29 -0
- 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 -10
- package/dist/src/core/mach-error-hints.js +14 -14
- package/dist/src/core/mach-known-noise-filter.d.ts +42 -38
- package/dist/src/core/mach-known-noise-filter.js +57 -56
- package/dist/src/core/mach-mozconfig.d.ts +6 -6
- package/dist/src/core/mach-mozconfig.js +17 -16
- package/dist/src/core/mach-python.d.ts +3 -0
- package/dist/src/core/mach-python.js +13 -7
- package/dist/src/core/mach-resource-shim.d.ts +24 -12
- package/dist/src/core/mach-resource-shim.js +124 -21
- package/dist/src/core/mach.d.ts +59 -73
- package/dist/src/core/mach.js +47 -115
- package/dist/src/core/marionette-port.d.ts +15 -30
- package/dist/src/core/marionette-port.js +46 -89
- package/dist/src/core/marionette-preflight.d.ts +6 -6
- package/dist/src/core/marionette-preflight.js +32 -50
- 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 +17 -17
- 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 +46 -42
- 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 +13 -13
- package/dist/src/core/patch-apply.d.ts +13 -14
- package/dist/src/core/patch-apply.js +36 -42
- package/dist/src/core/patch-export-coverage.d.ts +0 -9
- package/dist/src/core/patch-export-coverage.js +1 -30
- package/dist/src/core/patch-export-update.d.ts +21 -4
- package/dist/src/core/patch-export-update.js +7 -6
- package/dist/src/core/patch-export.d.ts +20 -30
- package/dist/src/core/patch-export.js +55 -77
- package/dist/src/core/patch-files.d.ts +0 -4
- package/dist/src/core/patch-files.js +0 -11
- 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 +12 -18
- package/dist/src/core/patch-lint-cache.d.ts +18 -2
- package/dist/src/core/patch-lint-cache.js +16 -19
- package/dist/src/core/patch-lint-checkjs.d.ts +55 -38
- package/dist/src/core/patch-lint-checkjs.js +78 -64
- 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 +5 -9
- package/dist/src/core/patch-lint-creators.js +3 -3
- package/dist/src/core/patch-lint-cross.d.ts +27 -19
- package/dist/src/core/patch-lint-cross.js +67 -110
- package/dist/src/core/patch-lint-css.d.ts +1 -1
- package/dist/src/core/patch-lint-css.js +15 -11
- 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 +6 -6
- package/dist/src/core/patch-lint-forward-registration.d.ts +58 -0
- package/dist/src/core/patch-lint-forward-registration.js +210 -0
- package/dist/src/core/patch-lint-jsdoc.d.ts +2 -2
- package/dist/src/core/patch-lint-jsdoc.js +46 -46
- package/dist/src/core/patch-lint-module-registration.d.ts +3 -9
- 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 +7 -7
- package/dist/src/core/patch-lint-queue-types.d.ts +60 -0
- package/dist/src/core/patch-lint-queue-types.js +12 -0
- package/dist/src/core/patch-lint-staged-registration.d.ts +61 -0
- package/dist/src/core/patch-lint-staged-registration.js +90 -0
- 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 +41 -35
- package/dist/src/core/patch-lint.js +52 -49
- package/dist/src/core/patch-lock.d.ts +1 -1
- package/dist/src/core/patch-lock.js +11 -11
- 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 +35 -34
- 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 +32 -21
- package/dist/src/core/patch-parse.js +40 -15
- package/dist/src/core/patch-policy.js +15 -27
- 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-source-metadata.d.ts +1 -3
- package/dist/src/core/patch-source-metadata.js +0 -4
- package/dist/src/core/patch-transform.d.ts +8 -16
- package/dist/src/core/patch-transform.js +13 -23
- package/dist/src/core/process-cpu-time.d.ts +1 -1
- package/dist/src/core/process-cpu-time.js +6 -6
- package/dist/src/core/rebase-session.d.ts +9 -15
- package/dist/src/core/rebase-session.js +13 -25
- package/dist/src/core/register-browser-content.js +3 -2
- package/dist/src/core/register-browser-test.js +2 -1
- package/dist/src/core/register-module.js +2 -1
- 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 +8 -7
- package/dist/src/core/register-shared-css.d.ts +3 -3
- package/dist/src/core/register-shared-css.js +6 -5
- 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 +38 -0
- package/dist/src/core/run-log-redact.js +69 -0
- package/dist/src/core/run-log.d.ts +21 -10
- package/dist/src/core/run-log.js +76 -27
- 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 +4 -6
- package/dist/src/core/smoke-patterns.d.ts +5 -6
- package/dist/src/core/smoke-patterns.js +15 -20
- package/dist/src/core/state-file.d.ts +15 -4
- package/dist/src/core/state-file.js +14 -1
- 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 +13 -12
- package/dist/src/core/test-changed-prefs.d.ts +12 -12
- package/dist/src/core/test-changed-prefs.js +40 -25
- package/dist/src/core/test-harness-crash.d.ts +39 -39
- package/dist/src/core/test-harness-crash.js +69 -69
- 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 -23
- package/dist/src/core/test-stale-check.js +31 -30
- 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/test-xpcshell-retry.d.ts +26 -7
- package/dist/src/core/test-xpcshell-retry.js +14 -11
- package/dist/src/core/token-category.d.ts +35 -2
- package/dist/src/core/token-category.js +67 -58
- package/dist/src/core/token-coverage.js +4 -5
- package/dist/src/core/token-dark-mode.d.ts +9 -9
- package/dist/src/core/token-dark-mode.js +13 -25
- package/dist/src/core/token-docs.d.ts +1 -1
- package/dist/src/core/token-inventory.d.ts +56 -0
- package/dist/src/core/token-inventory.js +109 -0
- package/dist/src/core/token-manager.d.ts +4 -4
- package/dist/src/core/token-manager.js +22 -22
- 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 +52 -53
- package/dist/src/core/toolchain-preflight.d.ts +15 -15
- package/dist/src/core/toolchain-preflight.js +23 -23
- package/dist/src/core/tree-cow.d.ts +3 -5
- package/dist/src/core/tree-cow.js +8 -8
- 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 +39 -38
- 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 +33 -33
- 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 +12 -23
- 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 +16 -28
- package/dist/src/core/xpcshell-appdir.d.ts +20 -20
- package/dist/src/core/xpcshell-appdir.js +28 -30
- 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 +69 -16
- package/dist/src/errors/base.js +95 -26
- package/dist/src/errors/build.d.ts +6 -6
- package/dist/src/errors/build.js +26 -34
- package/dist/src/errors/codes.d.ts +10 -10
- package/dist/src/errors/codes.js +10 -10
- package/dist/src/errors/config.d.ts +0 -14
- package/dist/src/errors/config.js +13 -34
- package/dist/src/errors/download.d.ts +13 -0
- package/dist/src/errors/download.js +53 -24
- package/dist/src/errors/furnace.d.ts +2 -2
- package/dist/src/errors/furnace.js +8 -9
- package/dist/src/errors/git.d.ts +9 -9
- package/dist/src/errors/git.js +21 -31
- package/dist/src/errors/patch.d.ts +3 -3
- package/dist/src/errors/patch.js +11 -13
- package/dist/src/errors/rebase.d.ts +1 -1
- package/dist/src/errors/rebase.js +8 -8
- 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 +155 -200
- 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 +52 -19
- package/dist/src/types/furnace.d.ts +17 -17
- package/dist/src/types/index.d.ts +0 -1
- 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 +4 -16
- package/dist/src/utils/assert.js +7 -24
- package/dist/src/utils/build-info.d.ts +6 -6
- package/dist/src/utils/build-info.js +6 -6
- package/dist/src/utils/child-env.d.ts +7 -6
- 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 +10 -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 +15 -20
- package/dist/src/utils/hash.d.ts +12 -0
- package/dist/src/utils/hash.js +16 -0
- package/dist/src/utils/line-dispatch.d.ts +15 -0
- package/dist/src/utils/line-dispatch.js +48 -0
- 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 +14 -20
- package/dist/src/utils/options.js +26 -27
- package/dist/src/utils/package-root.js +5 -14
- package/dist/src/utils/paths.d.ts +4 -4
- package/dist/src/utils/paths.js +4 -4
- package/dist/src/utils/platform.d.ts +0 -4
- package/dist/src/utils/process-group.d.ts +10 -9
- package/dist/src/utils/process-group.js +37 -36
- package/dist/src/utils/process.d.ts +70 -55
- package/dist/src/utils/process.js +129 -179
- package/dist/src/utils/ps-duration.d.ts +4 -4
- package/dist/src/utils/ps-duration.js +9 -9
- package/dist/src/utils/regex.d.ts +4 -4
- package/dist/src/utils/regex.js +7 -7
- package/dist/src/utils/sleep.d.ts +26 -0
- package/dist/src/utils/sleep.js +31 -0
- 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 +12 -49
- package/dist/src/utils/validation.js +26 -36
- package/docs/README.md +2 -2
- package/docs/configuration.md +163 -69
- package/docs/exit-codes.md +66 -49
- package/docs/furnace.md +20 -19
- package/docs/lifecycle-invariants.md +414 -247
- package/docs/machine-output.md +58 -34
- package/docs/patch-workflow.md +48 -44
- package/docs/run-logs.md +72 -28
- package/docs/testing.md +105 -98
- package/docs/verification-trees.md +23 -22
- package/package.json +7 -6
- package/dist/src/commands/rebase.d.ts +0 -4
- package/dist/src/commands/rebase.js +0 -5
- package/dist/src/core/patch-artifact-normalize.d.ts +0 -21
- package/dist/src/core/patch-artifact-normalize.js +0 -24
- package/dist/src/core/patch-lint-reexports.d.ts +0 -7
- package/dist/src/core/patch-lint-reexports.js +0 -8
- package/dist/src/core/wire-targets.d.ts +0 -7
- package/dist/src/core/wire-targets.js +0 -8
|
@@ -38,7 +38,7 @@ function validateBuildMozinfo(data) {
|
|
|
38
38
|
* Reads the objdir name the engine's mozconfig declares, or undefined when
|
|
39
39
|
* there is no mozconfig, it cannot be read, or it declares nothing.
|
|
40
40
|
*
|
|
41
|
-
* Fail-open
|
|
41
|
+
* Fail-open: this only ever narrows an ambiguity that would
|
|
42
42
|
* otherwise refuse, so an unreadable mozconfig costs nothing beyond the
|
|
43
43
|
* refusal the caller was already going to raise.
|
|
44
44
|
*/
|
|
@@ -57,8 +57,8 @@ async function readDeclaredObjDirName(engineDir) {
|
|
|
57
57
|
/**
|
|
58
58
|
* Checks if build artifacts exist in the engine directory.
|
|
59
59
|
* Looks for obj-* directories with a dist subdirectory. Detection is
|
|
60
|
-
*
|
|
61
|
-
* objdir in place is the user's own arrangement
|
|
60
|
+
* symlink-agnostic on purpose: building/running against a symlinked
|
|
61
|
+
* objdir in place is the user's own arrangement. The clone path, where a
|
|
62
62
|
* symlink would route writes into the original build, refuses separately
|
|
63
63
|
* (`assertCloneSafeObjdir` in tree-store.ts).
|
|
64
64
|
* @param engineDir - Path to the engine directory
|
|
@@ -86,7 +86,7 @@ export async function hasBuildArtifacts(engineDir) {
|
|
|
86
86
|
let declaredObjDir;
|
|
87
87
|
if (validObjDirs.length > 1) {
|
|
88
88
|
// An ambiguous glob is a question the mozconfig may already answer.
|
|
89
|
-
// Refusing when the active configuration
|
|
89
|
+
// Refusing when the active configuration names the objdir sends the
|
|
90
90
|
// operator to rename a directory to satisfy a scan, when the thing
|
|
91
91
|
// that decides the build has said which one it is. The refusal is
|
|
92
92
|
// kept for the genuinely ambiguous case: a declaration that does not
|
|
@@ -148,7 +148,7 @@ export async function hasBuildArtifacts(engineDir) {
|
|
|
148
148
|
/**
|
|
149
149
|
* Checks whether the built browser's launchable binary exists under
|
|
150
150
|
* `<engineDir>/<objDir>/dist/...`. `hasBuildArtifacts` only confirms that
|
|
151
|
-
* an obj tree with a `dist/` subdir exists
|
|
151
|
+
* an obj tree with a `dist/` subdir exists. A partial or in-progress build
|
|
152
152
|
* can satisfy that check without ever writing the executable, which is the
|
|
153
153
|
* failure mode that makes `fireforge run` throw `mach run` after having
|
|
154
154
|
* reported the build as usable. Separating the probes lets `run` fail fast
|
|
@@ -158,19 +158,19 @@ export async function hasBuildArtifacts(engineDir) {
|
|
|
158
158
|
*
|
|
159
159
|
* Platform layout:
|
|
160
160
|
* - macOS: `<objDir>/dist/*.app/Contents/MacOS/<binaryName>` (the `.app`
|
|
161
|
-
* display casing can differ from `binaryName
|
|
161
|
+
* display casing can differ from `binaryName`, e.g. `MyBrowser.app` for
|
|
162
162
|
* binary `mybrowser`, so we enumerate the `*.app` bundles rather than
|
|
163
163
|
* compute the name.
|
|
164
164
|
* - Linux: `<objDir>/dist/bin/<binaryName>`.
|
|
165
165
|
* - Windows: `<objDir>/dist/bin/<binaryName>.exe`.
|
|
166
166
|
*
|
|
167
167
|
* Returns `runnable: false` with no `expectedPath` when the `objDir`
|
|
168
|
-
* itself cannot be scanned
|
|
168
|
+
* itself cannot be scanned. Same degraded contract as `hasBuildArtifacts`.
|
|
169
169
|
*
|
|
170
170
|
* @param engineDir Path to the engine directory
|
|
171
171
|
* @param binaryName Lowercase binary name from `fireforge.json`
|
|
172
172
|
* @param objDir The single matching `obj-*` directory name (caller
|
|
173
|
-
* resolves it
|
|
173
|
+
* resolves it, typically from `hasBuildArtifacts().objDir`)
|
|
174
174
|
* @returns Structured check result
|
|
175
175
|
*/
|
|
176
176
|
export async function hasRunnableBundle(engineDir, binaryName, objDir) {
|
|
@@ -241,26 +241,26 @@ export function buildArtifactMismatchMessage(engineDir, buildCheck, commandName)
|
|
|
241
241
|
* Safe-relocation rewriter for mozinfo.json under the active obj-* tree.
|
|
242
242
|
*
|
|
243
243
|
* Firefox build artefacts bake the topsrcdir into many generated files
|
|
244
|
-
* (Makefiles, config.status, backend.mk, .deps dependency files
|
|
244
|
+
* (Makefiles, config.status, backend.mk, .deps dependency files, anything
|
|
245
245
|
* produced by `mach configure`). A fresh `mach configure` rebuilds those
|
|
246
246
|
* from the top, so the rewriter only needs to patch the one file `mach`
|
|
247
247
|
* reads to learn where its checkout actually lives. Once mozinfo.json
|
|
248
248
|
* agrees with the on-disk layout, `mach configure` regenerates the rest.
|
|
249
249
|
*
|
|
250
|
-
* Safety rules
|
|
250
|
+
* Safety rules. The rewrite is refused when any of them are violated:
|
|
251
251
|
* - `topsrcdir` and `topobjdir` must both be present and non-empty.
|
|
252
|
-
* - `topobjdir` must resolve to `<topsrcdir>/<objDir
|
|
252
|
+
* - `topobjdir` must resolve to `<topsrcdir>/<objDir>`. A non-in-tree
|
|
253
253
|
* objdir means the previous workspace was configured differently,
|
|
254
254
|
* so a blind prefix-rewrite could point mach at the wrong tree.
|
|
255
|
-
* - The computed new `topobjdir` must be `<engineDir>/<objDir
|
|
255
|
+
* - The computed new `topobjdir` must be `<engineDir>/<objDir>`. If it
|
|
256
256
|
* is not, the objDir name itself changed and we cannot prove safety.
|
|
257
257
|
*
|
|
258
258
|
* When any rule trips, the caller should fall back to the clean-rebuild
|
|
259
|
-
* instruction
|
|
259
|
+
* instruction, which is always a correct (if expensive) recovery path.
|
|
260
260
|
*
|
|
261
261
|
* @param engineDir Absolute path to the current engine checkout.
|
|
262
262
|
* @param objDir Name of the obj-* directory to rewrite against.
|
|
263
|
-
* @returns Result object
|
|
263
|
+
* @returns Result object. Callers inspect `rewritten` and surface `reason`.
|
|
264
264
|
*/
|
|
265
265
|
export async function attemptMozinfoRewrite(engineDir, objDir) {
|
|
266
266
|
const mozinfoPath = join(engineDir, objDir, 'mozinfo.json');
|
|
@@ -323,10 +323,10 @@ export async function attemptMozinfoRewrite(engineDir, objDir) {
|
|
|
323
323
|
newMozconfig = resolve(newSrc, rel);
|
|
324
324
|
patched['mozconfig'] = newMozconfig;
|
|
325
325
|
}
|
|
326
|
-
// A mozconfig living outside the old topsrcdir is left as-is
|
|
326
|
+
// A mozconfig living outside the old topsrcdir is left as-is. It
|
|
327
327
|
// probably points at a shared configuration file the user kept in
|
|
328
328
|
// place across the relocation. A relocated checkout that also moved
|
|
329
|
-
// its mozconfig will still fail configure
|
|
329
|
+
// its mozconfig will still fail configure. The operator can re-point
|
|
330
330
|
// with `MOZCONFIG=…` or run a full clean rebuild.
|
|
331
331
|
}
|
|
332
332
|
await writeJson(mozinfoPath, patched);
|
|
@@ -340,7 +340,7 @@ export async function attemptMozinfoRewrite(engineDir, objDir) {
|
|
|
340
340
|
/**
|
|
341
341
|
* Shared build-artifact preflight: rejects ambiguous multi-objdir checkouts,
|
|
342
342
|
* artifacts whose metadata points at another tree, and (when
|
|
343
|
-
* `requireExisting`) missing or incomplete builds
|
|
343
|
+
* `requireExisting`) missing or incomplete builds, each with the actionable
|
|
344
344
|
* message for that case.
|
|
345
345
|
*
|
|
346
346
|
* Takes an already-probed {@link BuildArtifactCheck} rather than probing
|
|
@@ -369,13 +369,13 @@ export function assertBuildArtifacts(engineDir, buildCheck, options) {
|
|
|
369
369
|
* the four configure-generated root files (`config.status`, `backend.mk`,
|
|
370
370
|
* `Makefile`, `config/autoconf.mk`) still names `forbiddenDir` (the
|
|
371
371
|
* primary engine a relocated clone must never consult). Exit code 0 alone
|
|
372
|
-
* proves neither
|
|
372
|
+
* proves neither: a stray MOZCONFIG/MOZ_OBJDIR can steer configure at a
|
|
373
373
|
* different objdir entirely. Nested Makefiles are products of the verified
|
|
374
|
-
* `config.status` and are not scanned
|
|
375
|
-
* configure cannot regenerate and are explicitly out of scope
|
|
374
|
+
* `config.status` and are not scanned. `.deps` files are build products a
|
|
375
|
+
* configure cannot regenerate and are explicitly out of scope, and any
|
|
376
376
|
* primary-path strings they retain are read-only staleness corrected by
|
|
377
377
|
* the first in-tree rebuild. Pure checker: returns a human-readable
|
|
378
|
-
* violation, or `undefined` when clean
|
|
378
|
+
* violation, or `undefined` when clean. Callers own the error type and
|
|
379
379
|
* remediation copy. Unreadable metadata is itself a violation (fail
|
|
380
380
|
* closed).
|
|
381
381
|
*/
|
|
@@ -406,9 +406,9 @@ export async function findObjdirRelocationViolation(args) {
|
|
|
406
406
|
// The canonical no-primary-paths assertion (mirrored by the opt-in
|
|
407
407
|
// real-mach proof in scripts/run-full-firefox-integration.mjs): substring
|
|
408
408
|
// search on the resolved primary engine dir is collision-safe against the
|
|
409
|
-
// tree's own paths
|
|
409
|
+
// tree's own paths: `<primary>/.fireforge/trees/<name>/engine` never
|
|
410
410
|
// contains the substring `<primary>/engine`. Scans exactly the
|
|
411
|
-
// configure-generated root files
|
|
411
|
+
// configure-generated root files. `config.status` is mandatory (checked
|
|
412
412
|
// above), the rest are optional-if-absent because not every configure
|
|
413
413
|
// backend writes them.
|
|
414
414
|
const forbidden = resolve(forbiddenDir);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Pattern-based translator for cryptic mozbuild / mach errors.
|
|
3
3
|
*
|
|
4
|
-
* Each entry maps a stderr regex to an actionable hint. The goal is
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Each entry maps a stderr regex to an actionable hint. The goal is narrow:
|
|
5
|
+
* convert the handful of errors whose message is non-obvious into a one-line
|
|
6
|
+
* "here's what to change", rather than parse every mach failure. New
|
|
7
7
|
* entries should only be added when a concrete diagnosis of the cryptic
|
|
8
|
-
* output has been established
|
|
8
|
+
* output has been established. Low-confidence hints would train operators
|
|
9
9
|
* to ignore the translator.
|
|
10
10
|
*/
|
|
11
11
|
/** A single translator entry. */
|
|
@@ -15,14 +15,9 @@ export interface MachErrorHint {
|
|
|
15
15
|
/** Actionable, one-line hint to surface alongside the raw mach output. */
|
|
16
16
|
hint: string;
|
|
17
17
|
}
|
|
18
|
-
/**
|
|
19
|
-
* Registered hint patterns. Order-sensitive: the first match wins per
|
|
20
|
-
* pattern, but multiple distinct patterns may fire for the same stderr.
|
|
21
|
-
*/
|
|
22
|
-
export declare const MACH_ERROR_HINTS: MachErrorHint[];
|
|
23
18
|
/**
|
|
24
19
|
* Scans captured stderr for known mach errors and returns matching hints.
|
|
25
|
-
* Pure function
|
|
20
|
+
* Pure function. Safe to call on any string and never throws.
|
|
26
21
|
* @param stderr Captured mach stderr.
|
|
27
22
|
* @returns Ordered, de-duplicated list of hint strings. Empty when nothing matches.
|
|
28
23
|
*/
|
|
@@ -2,30 +2,30 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Pattern-based translator for cryptic mozbuild / mach errors.
|
|
4
4
|
*
|
|
5
|
-
* Each entry maps a stderr regex to an actionable hint. The goal is
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Each entry maps a stderr regex to an actionable hint. The goal is narrow:
|
|
6
|
+
* convert the handful of errors whose message is non-obvious into a one-line
|
|
7
|
+
* "here's what to change", rather than parse every mach failure. New
|
|
8
8
|
* entries should only be added when a concrete diagnosis of the cryptic
|
|
9
|
-
* output has been established
|
|
9
|
+
* output has been established. Low-confidence hints would train operators
|
|
10
10
|
* to ignore the translator.
|
|
11
11
|
*/
|
|
12
12
|
/**
|
|
13
13
|
* Registered hint patterns. Order-sensitive: the first match wins per
|
|
14
14
|
* pattern, but multiple distinct patterns may fire for the same stderr.
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
const MACH_ERROR_HINTS = [
|
|
17
17
|
{
|
|
18
18
|
pattern: /mozbuild\.preprocessor\.Preprocessor\.Error[\s\S]*?no preprocessor directives found/,
|
|
19
19
|
hint: 'A file registered under JS_PREFERENCE_PP_FILES contains no preprocessor directives. ' +
|
|
20
20
|
'Use JS_PREFERENCE_FILES instead, or add at least one #filter / #expand directive to the file.',
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
// mozbuild raises `UnsortedError` while
|
|
23
|
+
// mozbuild raises `UnsortedError` while reading a moz.build whose
|
|
24
24
|
// StrictOrderingOnAppendList entries are out of order, so `mach
|
|
25
25
|
// configure` dies before anything compiles. The ordering rule is the
|
|
26
26
|
// part operators get wrong: mozbuild sorts by `.lower()`
|
|
27
27
|
// (`StrictOrderingOnAppendList.ensure_sorted`), so an uppercase letter
|
|
28
|
-
// does
|
|
28
|
+
// does not sort ahead of a lowercase one, and an entry that looks
|
|
29
29
|
// correctly placed by byte order can be rejected. mozbuild's own
|
|
30
30
|
// message names both entries ("We expected X but got Y") and survives
|
|
31
31
|
// to the operator through `extractMachConfigureError`, so the hint
|
|
@@ -41,7 +41,7 @@ export const MACH_ERROR_HINTS = [
|
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
// `mach package` inside `packager.py` dereferences a `None` sink when
|
|
44
|
-
// the packaging input set cannot resolve an entry it expected
|
|
44
|
+
// the packaging input set cannot resolve an entry it expected, most
|
|
45
45
|
// commonly running `fireforge package` before a full `fireforge build`
|
|
46
46
|
// has finished, so `obj-*/dist/` is missing pieces the packager assumes
|
|
47
47
|
// exist. The broader "build failed" path has already surfaced the raw
|
|
@@ -75,10 +75,10 @@ export const MACH_ERROR_HINTS = [
|
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
// Firefox declares per-release toolchain minimums in-tree
|
|
78
|
-
// (`build/moz.configure/bindgen.configure` for cbindgen
|
|
78
|
+
// (`build/moz.configure/bindgen.configure` for cbindgen, and mozboot's
|
|
79
79
|
// MINIMUM_RUST_VERSION for rustc/cargo), and a source hop can move them.
|
|
80
|
-
// The failure lands ~8s into `mach configure`
|
|
81
|
-
// version 0.29.1 is too old. At least version 0.29.4 is required."
|
|
80
|
+
// The failure lands ~8s into `mach configure` (e.g. "ERROR: cbindgen
|
|
81
|
+
// version 0.29.1 is too old. At least version 0.29.4 is required."),
|
|
82
82
|
// and mach's own remediation text names "./mach bootstrap", the wrong
|
|
83
83
|
// entry point for a FireForge-managed repo. Pattern matches configure's
|
|
84
84
|
// cbindgen die() shape.
|
|
@@ -90,7 +90,7 @@ export const MACH_ERROR_HINTS = [
|
|
|
90
90
|
},
|
|
91
91
|
{
|
|
92
92
|
// Same family, rust.configure's die() shapes: "Rust compiler {v} is
|
|
93
|
-
// too old." / "Cargo package manager {v} is too old."
|
|
93
|
+
// too old." / "Cargo package manager {v} is too old." The minimum
|
|
94
94
|
// is only named further down that message, so the pattern keys on
|
|
95
95
|
// the first line.
|
|
96
96
|
pattern: /\b(?:Rust compiler|Cargo package manager) [\d.]+(?:[\w.-]*)? is too old/i,
|
|
@@ -103,7 +103,7 @@ export const MACH_ERROR_HINTS = [
|
|
|
103
103
|
// When `mach build` fails mid-compile, mach's own shutdown pipeline
|
|
104
104
|
// still runs its trailing "Config object not found by mach. / Configure
|
|
105
105
|
// complete! / Be sure to run |mach build|..." summary on the way out.
|
|
106
|
-
// Those three lines are plain upstream mach output, printed
|
|
106
|
+
// Those three lines are plain upstream mach output, printed after the
|
|
107
107
|
// non-zero exit code is established, and they read deceptively like a
|
|
108
108
|
// success banner. Nudge the operator that they are cosmetic
|
|
109
109
|
// post-failure output, not a mixed success/failure signal.
|
|
@@ -115,7 +115,7 @@ export const MACH_ERROR_HINTS = [
|
|
|
115
115
|
];
|
|
116
116
|
/**
|
|
117
117
|
* Scans captured stderr for known mach errors and returns matching hints.
|
|
118
|
-
* Pure function
|
|
118
|
+
* Pure function. Safe to call on any string and never throws.
|
|
119
119
|
* @param stderr Captured mach stderr.
|
|
120
120
|
* @returns Ordered, de-duplicated list of hint strings. Empty when nothing matches.
|
|
121
121
|
*/
|
|
@@ -4,72 +4,75 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Headless test runs against recent engines can end with an
|
|
6
6
|
* `AttributeError: 'SystemResourceMonitor' object has no attribute
|
|
7
|
-
* 'stop_time'` traceback at harness teardown
|
|
8
|
-
* exactly where a reader looks for the failure summary. Real failure
|
|
9
|
-
* already beat this traceback in
|
|
10
|
-
*
|
|
7
|
+
* 'stop_time'` traceback at harness teardown. That is upstream noise, and
|
|
8
|
+
* it sits exactly where a reader looks for the failure summary. Real failure
|
|
9
|
+
* lines already beat this traceback in classification. This filter closes
|
|
10
|
+
* the presentation gap by collapsing the echoed traceback to one labeled
|
|
11
|
+
* line.
|
|
11
12
|
*
|
|
12
|
-
* Scope is
|
|
13
|
-
* - Only the terminal
|
|
14
|
-
* stay raw
|
|
15
|
-
* traceback for its green-summary override and secondary-noise
|
|
13
|
+
* Scope is narrow on purpose:
|
|
14
|
+
* - Only the terminal echo is filtered. The captured stdout/stderr strings
|
|
15
|
+
* stay raw, because the classifier (`test-harness-crash.ts`) depends on
|
|
16
|
+
* the raw traceback for its green-summary override and secondary-noise
|
|
16
17
|
* detection.
|
|
17
18
|
* - Only the exact documented incident is collapsed, and every condition
|
|
18
19
|
* must hold: an `AttributeError` on `SystemResourceMonitor` naming one
|
|
19
|
-
* of the two known attributes (`stop_time`, `poll_interval`),
|
|
20
|
-
* `mozsystemmonitor/resourcemonitor.py` stack frame,
|
|
20
|
+
* of the two known attributes (`stop_time`, `poll_interval`), and a
|
|
21
|
+
* `mozsystemmonitor/resourcemonitor.py` stack frame, and a
|
|
21
22
|
* previously-seen SUITE_END shutdown marker (shared across the run's
|
|
22
|
-
* stdout/stderr filter instances
|
|
23
|
-
* while the traceback lands on stderr). A novel attribute, a novel
|
|
23
|
+
* stdout/stderr filter instances, where the marker usually lands on
|
|
24
|
+
* stdout while the traceback lands on stderr). A novel attribute, a novel
|
|
24
25
|
* exception type in resourcemonitor.py, or a pre-shutdown occurrence is
|
|
25
26
|
* echoed verbatim, always.
|
|
26
|
-
* - The hold buffer is bounded
|
|
27
|
+
* - The hold buffer is bounded. On overflow the block is flushed verbatim
|
|
27
28
|
* and the filter returns to pass-through, so output is never lost.
|
|
28
29
|
*
|
|
29
|
-
* The
|
|
30
|
-
*
|
|
30
|
+
* The collapse is test-only on purpose, not an oversight. Two reasons,
|
|
31
|
+
* since from outside they read like one:
|
|
31
32
|
* 1. Recognition requires a previously-seen SUITE_END shutdown marker, and
|
|
32
33
|
* `mach build` never prints one. Wiring the option into the build
|
|
33
34
|
* dispatch would therefore be a silent no-op.
|
|
34
35
|
* 2. Relaxing that gate for builds would be wrong on its own terms. The
|
|
35
36
|
* marker is what separates teardown noise from a traceback raised while
|
|
36
|
-
* work was still happening
|
|
37
|
+
* work was still happening. A build has no equivalent boundary, so
|
|
37
38
|
* FireForge cannot tell the known-cosmetic case from a real build-time
|
|
38
39
|
* failure and must not withhold the block.
|
|
39
|
-
* The build path instead
|
|
40
|
-
* verbatim traceback
|
|
40
|
+
* The build path instead recognizes the signature and says so beside the
|
|
41
|
+
* verbatim traceback. See {@link KNOWN_TEARDOWN_NOISE_BUILD_NOTE} and
|
|
41
42
|
* `runProtectedMachBuild`.
|
|
42
43
|
*/
|
|
43
44
|
/**
|
|
44
|
-
*
|
|
45
|
-
* teardown
|
|
45
|
+
* Whole-block recognition. Every signal must hold (see module doc). True
|
|
46
|
+
* when captured output carries the documented mozsystemmonitor teardown
|
|
47
|
+
* traceback.
|
|
46
48
|
*
|
|
47
|
-
* The echo filter
|
|
49
|
+
* The echo filter below only affects what a human sees. The classifier
|
|
48
50
|
* reads the raw capture, and it needs the same recognition to tell "the
|
|
49
51
|
* suite finished clean and then upstream fell over at shutdown" from "the
|
|
50
|
-
* suite did not finish".
|
|
51
|
-
*
|
|
52
|
-
* `resourcemonitor.py` is
|
|
52
|
+
* suite did not finish". This is the same two-signal test the echo filter
|
|
53
|
+
* applies: a novel attribute or a traceback from anywhere but
|
|
54
|
+
* `resourcemonitor.py` is not this incident and must keep failing the run.
|
|
53
55
|
*
|
|
54
56
|
* The shutdown-marker precondition the echo filter adds is intentionally
|
|
55
|
-
* omitted:
|
|
56
|
-
* the teardown crash prevented the shutdown marker from
|
|
57
|
+
* omitted: at the classification layer the case that matters is exactly
|
|
58
|
+
* the one where the teardown crash prevented the shutdown marker from
|
|
59
|
+
* printing.
|
|
57
60
|
*
|
|
58
|
-
* Pure
|
|
61
|
+
* Pure. Exported for the classifier and for direct unit testing.
|
|
59
62
|
*
|
|
60
63
|
* @param output - Raw captured stdout/stderr
|
|
61
64
|
* @returns True when the recognized teardown traceback is present
|
|
62
65
|
*/
|
|
63
66
|
export declare function hasKnownTeardownNoise(output: string): boolean;
|
|
64
67
|
/**
|
|
65
|
-
* True when a
|
|
68
|
+
* True when a single line is the documented teardown family's
|
|
66
69
|
* `AttributeError`.
|
|
67
70
|
*
|
|
68
|
-
* The line-level half of {@link hasKnownTeardownNoise}: the traceback
|
|
71
|
+
* The line-level half of {@link hasKnownTeardownNoise}: the traceback frame
|
|
69
72
|
* lives on a neighbouring line, so a per-line test cannot apply the
|
|
70
73
|
* two-signal rule by itself. Callers pair this with
|
|
71
|
-
* `hasKnownTeardownNoise(wholeOutput)` to recover the full recognition
|
|
72
|
-
* "this capture carries the incident, and
|
|
74
|
+
* `hasKnownTeardownNoise(wholeOutput)` to recover the full recognition
|
|
75
|
+
* ("this capture carries the incident, and this line is its header"), which
|
|
73
76
|
* keeps the closed attribute allowlist (`stop_time`/`poll_interval`) doing
|
|
74
77
|
* the same work it does everywhere else. A novel attribute is not this
|
|
75
78
|
* incident and must stay a candidate failure.
|
|
@@ -79,20 +82,21 @@ export declare function hasKnownTeardownNoise(output: string): boolean;
|
|
|
79
82
|
*/
|
|
80
83
|
export declare function isKnownTeardownNoiseLine(line: string): boolean;
|
|
81
84
|
/**
|
|
82
|
-
* Shared across the stdout and stderr filter instances of
|
|
85
|
+
* Shared across the stdout and stderr filter instances of one mach run:
|
|
83
86
|
* SUITE_END typically arrives on stdout while the teardown traceback lands
|
|
84
87
|
* on stderr, so the shutdown-seen flag must be visible to both. The two
|
|
85
88
|
* pipes are independent, so a traceback can theoretically beat the marker
|
|
86
|
-
* through
|
|
89
|
+
* through. The block then prints verbatim, which is the correct failure
|
|
90
|
+
* direction.
|
|
87
91
|
*/
|
|
88
92
|
export interface TeardownNoiseContext {
|
|
89
93
|
shutdownSeen: boolean;
|
|
90
94
|
}
|
|
91
|
-
/** Fresh per-run context
|
|
95
|
+
/** Fresh per-run context. Hand the same instance to both stream filters. */
|
|
92
96
|
export declare function createTeardownNoiseContext(): TeardownNoiseContext;
|
|
93
97
|
/**
|
|
94
|
-
* Build-phase note for the
|
|
95
|
-
* not
|
|
98
|
+
* Build-phase note for the same recognized signature. The build path does
|
|
99
|
+
* not collapse the traceback (see the module doc's "test-only" note). It
|
|
96
100
|
* prints verbatim and this line is added beside it, so one signature reads
|
|
97
101
|
* the same in both phases without a build losing output it may need.
|
|
98
102
|
*/
|
|
@@ -101,7 +105,7 @@ export declare const KNOWN_TEARDOWN_NOISE_BUILD_NOTE: string;
|
|
|
101
105
|
export declare const KNOWN_TEARDOWN_NOISE_ANNOTATION: string;
|
|
102
106
|
/** Chunk-safe, line-buffered echo filter. See module doc. */
|
|
103
107
|
export interface KnownTeardownNoiseFilter {
|
|
104
|
-
/** Feed a raw chunk
|
|
108
|
+
/** Feed a raw chunk. Returns the text to echo now (possibly empty). */
|
|
105
109
|
transform(chunk: string): string;
|
|
106
110
|
/** Flush any buffered residue verbatim (call after the stream closes). */
|
|
107
111
|
flush(): string;
|
|
@@ -109,7 +113,7 @@ export interface KnownTeardownNoiseFilter {
|
|
|
109
113
|
/**
|
|
110
114
|
* Creates a stateful filter for one output stream. Complete lines outside a
|
|
111
115
|
* traceback pass straight through (only the trailing partial line is held
|
|
112
|
-
* back)
|
|
116
|
+
* back). A `Traceback (most recent call last)` header switches to hold mode
|
|
113
117
|
* until the block ends, then either the one-line annotation (recognized
|
|
114
118
|
* signature after a seen shutdown marker) or the verbatim block (anything
|
|
115
119
|
* else) is emitted. Pass the run's shared {@link TeardownNoiseContext} so
|