@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
|
@@ -10,7 +10,7 @@ import { parseStringArray } from './furnace-config-array-utils.js';
|
|
|
10
10
|
/**
|
|
11
11
|
* Validates a `tokenHostDocuments` raw value. Each entry must be a non-empty
|
|
12
12
|
* relative path contained in the engine tree. Throws `FurnaceError` on
|
|
13
|
-
* violation
|
|
13
|
+
* violation. Does nothing for `undefined` (field is optional).
|
|
14
14
|
*/
|
|
15
15
|
export function validateTokenHostDocuments(raw) {
|
|
16
16
|
if (raw === undefined)
|
|
@@ -27,8 +27,8 @@ export function validateTokenHostDocuments(raw) {
|
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* Validates a `runtimeVariables` raw value. Each entry must start with `--`
|
|
30
|
-
* (it is a CSS custom property name). Throws `FurnaceError` on violation
|
|
31
|
-
*
|
|
30
|
+
* (it is a CSS custom property name). Throws `FurnaceError` on violation.
|
|
31
|
+
* Does nothing for `undefined` (field is optional).
|
|
32
32
|
*/
|
|
33
33
|
export function validateRuntimeVariables(raw) {
|
|
34
34
|
if (raw === undefined)
|
|
@@ -110,8 +110,8 @@ export function applyOptionalFurnaceFields(migrated, config) {
|
|
|
110
110
|
}
|
|
111
111
|
config.ftlBasePath = migrated['ftlBasePath'];
|
|
112
112
|
}
|
|
113
|
-
// Validate optional typecheckJsconfig
|
|
114
|
-
// chrome-elements `paths` entries Furnace maintains on deploy.
|
|
113
|
+
// Validate optional typecheckJsconfig. This is a consumer-owned jsconfig
|
|
114
|
+
// whose chrome-elements `paths` entries Furnace maintains on deploy.
|
|
115
115
|
if (migrated['typecheckJsconfig'] !== undefined) {
|
|
116
116
|
const jsconfigPath = migrated['typecheckJsconfig'];
|
|
117
117
|
if (!isString(jsconfigPath) || jsconfigPath.includes('..')) {
|
|
@@ -70,8 +70,8 @@ export declare function writeFurnaceConfig(root: string, config: FurnaceConfig):
|
|
|
70
70
|
* matching override stamp `doctor` fails Furnace component validation on
|
|
71
71
|
* every override.
|
|
72
72
|
*
|
|
73
|
-
* The stamp is
|
|
74
|
-
*
|
|
73
|
+
* The stamp is unconditional: `fireforge furnace validate` is the right
|
|
74
|
+
* tool for "does this override still apply", and rebase has
|
|
75
75
|
* already attested that the patch layer re-validated against the new ESR.
|
|
76
76
|
*
|
|
77
77
|
* @param root - Root directory of the project
|
|
@@ -92,11 +92,11 @@ export declare function stampFurnaceOverrideBaseVersions(root: string, version:
|
|
|
92
92
|
* declarations.
|
|
93
93
|
*
|
|
94
94
|
* `validateFurnaceConfig` treats `tokenPrefix` as optional, so callers on
|
|
95
|
-
* the no-arg call shape still get a valid config without a prefix
|
|
95
|
+
* the no-arg call shape still get a valid config without a prefix. The CLI
|
|
96
96
|
* init path always has a `binaryName` from `fireforge.json` and always sets
|
|
97
97
|
* one.
|
|
98
98
|
*
|
|
99
|
-
* @param options - Optional init context
|
|
99
|
+
* @param options - Optional init context. Pass `{ binaryName }` to derive
|
|
100
100
|
* the token prefix.
|
|
101
101
|
* @returns A valid FurnaceConfig
|
|
102
102
|
*/
|
|
@@ -61,7 +61,7 @@ function hasEntries(record) {
|
|
|
61
61
|
const CURRENT_CONFIG_VERSION = 1;
|
|
62
62
|
/**
|
|
63
63
|
* Rejects a config whose `version` field is not the single schema version that
|
|
64
|
-
* exists. A non-integer or sub-1 value is a malformed document
|
|
64
|
+
* exists. A non-integer or sub-1 value is a malformed document. A value above
|
|
65
65
|
* the current version was written by a newer FireForge and cannot be read here.
|
|
66
66
|
*/
|
|
67
67
|
function validateConfigVersion(version) {
|
|
@@ -100,10 +100,10 @@ export function validateFurnaceConfig(data) {
|
|
|
100
100
|
if (raw['tokenAllowlist'] !== undefined) {
|
|
101
101
|
parseStringArray(raw['tokenAllowlist'], 'tokenAllowlist');
|
|
102
102
|
}
|
|
103
|
-
// Validate optional runtimeVariables
|
|
103
|
+
// Validate optional runtimeVariables: CSS runtime state channels
|
|
104
104
|
// (e.g. `--cam-x`) that are exempt from `token-prefix-violation`.
|
|
105
105
|
validateRuntimeVariables(raw['runtimeVariables']);
|
|
106
|
-
// Validate optional tokenHostDocuments
|
|
106
|
+
// Validate optional tokenHostDocuments: list of chrome XHTMLs that the
|
|
107
107
|
// `missing-token-link` validator scans for the tokens CSS link.
|
|
108
108
|
validateTokenHostDocuments(raw['tokenHostDocuments']);
|
|
109
109
|
const stock = parseStockList(raw['stock']);
|
|
@@ -115,8 +115,8 @@ export function validateFurnaceConfig(data) {
|
|
|
115
115
|
validateComposesReferences(stock, overrides, custom);
|
|
116
116
|
// Warn when two custom components share a targetPath. Nothing technically
|
|
117
117
|
// prevents co-location, but per-component removal and orphan detection
|
|
118
|
-
// both reason about "files this component deployed into its directory"
|
|
119
|
-
//
|
|
118
|
+
// both reason about "files this component deployed into its directory".
|
|
119
|
+
// Shared directories make those judgements ambiguous, and can lead to
|
|
120
120
|
// `furnace remove` of one component deleting the other's deployed files.
|
|
121
121
|
const targetPathOwners = new Map();
|
|
122
122
|
for (const [name, custom_] of Object.entries(custom)) {
|
|
@@ -154,8 +154,8 @@ function validateFurnaceState(data) {
|
|
|
154
154
|
return result.state;
|
|
155
155
|
}
|
|
156
156
|
// Single source of truth: the list the union is derived from. The copy
|
|
157
|
-
// this replaced was annotated
|
|
158
|
-
// from the union but never one
|
|
157
|
+
// this replaced was annotated rather than linked, so it caught a member
|
|
158
|
+
// removed from the union but never one added to it, and listed them in a
|
|
159
159
|
// different order.
|
|
160
160
|
const PENDING_REPAIR_OPERATIONS = FURNACE_PENDING_REPAIR_OPERATIONS;
|
|
161
161
|
function parsePendingRepair(data) {
|
|
@@ -338,14 +338,14 @@ export async function writeFurnaceConfig(root, config) {
|
|
|
338
338
|
if (await pathExists(paths.furnaceConfig)) {
|
|
339
339
|
try {
|
|
340
340
|
const raw = await readJson(paths.furnaceConfig);
|
|
341
|
-
// JSON.parse
|
|
342
|
-
//
|
|
341
|
+
// JSON.parse only produces JSON data, so the object check is the
|
|
342
|
+
// only invariant left for the JsonObject contract.
|
|
343
343
|
if (isObject(raw))
|
|
344
344
|
existing = raw;
|
|
345
345
|
}
|
|
346
346
|
catch {
|
|
347
347
|
// A missing or corrupt furnace.json means there is no prior document to
|
|
348
|
-
// preserve key order from
|
|
348
|
+
// preserve key order from. The writer falls back to canonical ordering.
|
|
349
349
|
existing = undefined;
|
|
350
350
|
}
|
|
351
351
|
}
|
|
@@ -359,8 +359,8 @@ export async function writeFurnaceConfig(root, config) {
|
|
|
359
359
|
* matching override stamp `doctor` fails Furnace component validation on
|
|
360
360
|
* every override.
|
|
361
361
|
*
|
|
362
|
-
* The stamp is
|
|
363
|
-
*
|
|
362
|
+
* The stamp is unconditional: `fireforge furnace validate` is the right
|
|
363
|
+
* tool for "does this override still apply", and rebase has
|
|
364
364
|
* already attested that the patch layer re-validated against the new ESR.
|
|
365
365
|
*
|
|
366
366
|
* @param root - Root directory of the project
|
|
@@ -396,11 +396,11 @@ export async function stampFurnaceOverrideBaseVersions(root, version) {
|
|
|
396
396
|
* declarations.
|
|
397
397
|
*
|
|
398
398
|
* `validateFurnaceConfig` treats `tokenPrefix` as optional, so callers on
|
|
399
|
-
* the no-arg call shape still get a valid config without a prefix
|
|
399
|
+
* the no-arg call shape still get a valid config without a prefix. The CLI
|
|
400
400
|
* init path always has a `binaryName` from `fireforge.json` and always sets
|
|
401
401
|
* one.
|
|
402
402
|
*
|
|
403
|
-
* @param options - Optional init context
|
|
403
|
+
* @param options - Optional init context. Pass `{ binaryName }` to derive
|
|
404
404
|
* the token prefix.
|
|
405
405
|
* @returns A valid FurnaceConfig
|
|
406
406
|
*/
|
|
@@ -468,8 +468,8 @@ export async function updateFurnaceState(root, updates) {
|
|
|
468
468
|
* Engine-relative path of the directory `furnace preview` writes its
|
|
469
469
|
* generated Storybook story files into. Treated as Furnace-managed so
|
|
470
470
|
* `status` does not flag them as unmanaged and `lint` does not fail on their
|
|
471
|
-
* (intentionally bare) license headers
|
|
472
|
-
* operator commits or hand-edits.
|
|
471
|
+
* (intentionally bare) license headers. They are tool output rather than
|
|
472
|
+
* files an operator commits or hand-edits.
|
|
473
473
|
*/
|
|
474
474
|
const FURNACE_STORYBOOK_STORIES_PREFIX = 'browser/components/storybook/stories/furnace/';
|
|
475
475
|
/**
|
|
@@ -504,8 +504,8 @@ export async function collectFurnaceManagedPrefixes(root) {
|
|
|
504
504
|
}
|
|
505
505
|
// Always include the preview-generated stories prefix when furnace is
|
|
506
506
|
// initialised. The directory may not exist yet (no preview ever ran),
|
|
507
|
-
// but classifying it as furnace-managed is safe even when empty
|
|
508
|
-
//
|
|
507
|
+
// but classifying it as furnace-managed is safe even when empty. Status
|
|
508
|
+
// simply has nothing to bucket.
|
|
509
509
|
prefixes.add(FURNACE_STORYBOOK_STORIES_PREFIX);
|
|
510
510
|
return prefixes;
|
|
511
511
|
}
|
|
@@ -5,7 +5,7 @@ export declare const JAR_MN = "toolkit/content/jar.mn";
|
|
|
5
5
|
/**
|
|
6
6
|
* Upstream home of the MozLitElement widget sources.
|
|
7
7
|
*
|
|
8
|
-
* The trailing slash is
|
|
8
|
+
* The trailing slash is not included: `build-audit-transforms.ts` needs
|
|
9
9
|
* `${WIDGETS_DIR}/` and its ordered prefix table depends on that slash, so
|
|
10
10
|
* appending it at the one site that wants it keeps the others correct.
|
|
11
11
|
*/
|
|
@@ -27,15 +27,15 @@ export declare function xpcshellTestParentDir(binaryName: string): string;
|
|
|
27
27
|
/**
|
|
28
28
|
* Resolves the engine-relative directory a browser-chrome scaffold is
|
|
29
29
|
* written to: the `--test-dir` override when given, else
|
|
30
|
-
* `browser/base/content/test/<binaryName>`. The scaffolder
|
|
30
|
+
* `browser/base/content/test/<binaryName>`. The scaffolder and the
|
|
31
31
|
* dry-run / success formatters resolve through this one function, so the
|
|
32
32
|
* printed plan cannot disagree with the files that land on disk.
|
|
33
33
|
*/
|
|
34
34
|
export declare function resolveBrowserChromeTestDir(binaryName: string, override?: string): string;
|
|
35
35
|
/**
|
|
36
36
|
* Resolves the engine-relative directory an xpcshell scaffold is written
|
|
37
|
-
* to. A `--test-dir` override names the
|
|
38
|
-
* segment is appended)
|
|
37
|
+
* to. A `--test-dir` override names the final directory (no per-component
|
|
38
|
+
* segment is appended). The default is
|
|
39
39
|
* `browser/base/content/test/<binaryName>-xpcshell/<componentName>`.
|
|
40
40
|
*/
|
|
41
41
|
export declare function resolveXpcshellTestDir(binaryName: string, componentName: string, override?: string): string;
|
|
@@ -62,8 +62,8 @@ export declare function resolveFtlChromeSubPath(ftlBasePath?: string): string |
|
|
|
62
62
|
* given `ftlBasePath`. For the default toolkit tree this yields
|
|
63
63
|
* `toolkit/locales/jar.mn`.
|
|
64
64
|
*
|
|
65
|
-
* Returns `undefined` when the path does not contain a `locales/` segment
|
|
66
|
-
*
|
|
65
|
+
* Returns `undefined` when the path does not contain a `locales/` segment.
|
|
66
|
+
* Callers must treat that as "cannot locate" and degrade gracefully.
|
|
67
67
|
*/
|
|
68
68
|
export declare function resolveFtlLocaleJarMnPath(ftlBasePath?: string): string | undefined;
|
|
69
69
|
/**
|
|
@@ -7,7 +7,7 @@ export const JAR_MN = 'toolkit/content/jar.mn';
|
|
|
7
7
|
/**
|
|
8
8
|
* Upstream home of the MozLitElement widget sources.
|
|
9
9
|
*
|
|
10
|
-
* The trailing slash is
|
|
10
|
+
* The trailing slash is not included: `build-audit-transforms.ts` needs
|
|
11
11
|
* `${WIDGETS_DIR}/` and its ordered prefix table depends on that slash, so
|
|
12
12
|
* appending it at the one site that wants it keeps the others correct.
|
|
13
13
|
*/
|
|
@@ -39,7 +39,7 @@ export function xpcshellTestParentDir(binaryName) {
|
|
|
39
39
|
/**
|
|
40
40
|
* Resolves the engine-relative directory a browser-chrome scaffold is
|
|
41
41
|
* written to: the `--test-dir` override when given, else
|
|
42
|
-
* `browser/base/content/test/<binaryName>`. The scaffolder
|
|
42
|
+
* `browser/base/content/test/<binaryName>`. The scaffolder and the
|
|
43
43
|
* dry-run / success formatters resolve through this one function, so the
|
|
44
44
|
* printed plan cannot disagree with the files that land on disk.
|
|
45
45
|
*/
|
|
@@ -48,8 +48,8 @@ export function resolveBrowserChromeTestDir(binaryName, override) {
|
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Resolves the engine-relative directory an xpcshell scaffold is written
|
|
51
|
-
* to. A `--test-dir` override names the
|
|
52
|
-
* segment is appended)
|
|
51
|
+
* to. A `--test-dir` override names the final directory (no per-component
|
|
52
|
+
* segment is appended). The default is
|
|
53
53
|
* `browser/base/content/test/<binaryName>-xpcshell/<componentName>`.
|
|
54
54
|
*/
|
|
55
55
|
export function resolveXpcshellTestDir(binaryName, componentName, override) {
|
|
@@ -90,8 +90,8 @@ export function resolveFtlChromeSubPath(ftlBasePath) {
|
|
|
90
90
|
* given `ftlBasePath`. For the default toolkit tree this yields
|
|
91
91
|
* `toolkit/locales/jar.mn`.
|
|
92
92
|
*
|
|
93
|
-
* Returns `undefined` when the path does not contain a `locales/` segment
|
|
94
|
-
*
|
|
93
|
+
* Returns `undefined` when the path does not contain a `locales/` segment.
|
|
94
|
+
* Callers must treat that as "cannot locate" and degrade gracefully.
|
|
95
95
|
*/
|
|
96
96
|
export function resolveFtlLocaleJarMnPath(ftlBasePath) {
|
|
97
97
|
const path = normalizePathSlashes(ftlBasePath ?? FTL_DIR);
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
* @fireforge-include shared-anims.css
|
|
10
10
|
*
|
|
11
11
|
* naming a fragment file in `components/shared/`. `furnace deploy` expands
|
|
12
|
-
* the fragment into the *deployed* copy only
|
|
13
|
-
* DRY
|
|
12
|
+
* the fragment into the *deployed* copy only (the workspace source stays
|
|
13
|
+
* DRY), fencing the expansion between the directive line and a matching
|
|
14
14
|
* `@fireforge-end-include` marker so re-deploys can refresh it idempotently.
|
|
15
15
|
*
|
|
16
16
|
* Drift contract: the apply fast-path and `furnace validate` compare the
|
|
@@ -24,7 +24,7 @@ export { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
|
|
|
24
24
|
export declare function listFragmentIncludes(css: string): string[];
|
|
25
25
|
/**
|
|
26
26
|
* Collapses fenced fragment expansions back to their bare directives.
|
|
27
|
-
* Inverse of {@link expandCssFragments}
|
|
27
|
+
* Inverse of {@link expandCssFragments}. Used to compare a deployed file
|
|
28
28
|
* against its workspace source and to re-expand idempotently.
|
|
29
29
|
*/
|
|
30
30
|
export declare function stripExpandedFragments(css: string): string;
|
|
@@ -52,7 +52,7 @@ export declare function expandCssFragments(css: string, sharedDir: string): Prom
|
|
|
52
52
|
export declare function extractExpandedFragmentBodies(css: string): Map<string, string>;
|
|
53
53
|
/**
|
|
54
54
|
* Deploys one component file: CSS sources carrying include directives are
|
|
55
|
-
* written as their fragment-expanded form
|
|
55
|
+
* written as their fragment-expanded form. Everything else is a plain
|
|
56
56
|
* copy. Extracted here so `applyCustomComponent` stays inside the
|
|
57
57
|
* per-file line budget.
|
|
58
58
|
*
|
|
@@ -73,7 +73,7 @@ export declare function describeFragmentExpansion(src: string): Promise<string>;
|
|
|
73
73
|
* @param componentDir - Workspace directory of the component
|
|
74
74
|
* @param tagName - Component tag name for issue attribution
|
|
75
75
|
* @param sharedDir - Shared fragments directory
|
|
76
|
-
* @param engineTargetDir - Deployed directory in the engine
|
|
77
|
-
* pre-deploy validation skips the staleness check
|
|
76
|
+
* @param engineTargetDir - Deployed directory in the engine. Optional, and
|
|
77
|
+
* pre-deploy validation skips the staleness check.
|
|
78
78
|
*/
|
|
79
79
|
export declare function validateCssFragments(componentDir: string, tagName: string, sharedDir: string, engineTargetDir?: string): Promise<ValidationIssue[]>;
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* @fireforge-include shared-anims.css
|
|
11
11
|
*
|
|
12
12
|
* naming a fragment file in `components/shared/`. `furnace deploy` expands
|
|
13
|
-
* the fragment into the *deployed* copy only
|
|
14
|
-
* DRY
|
|
13
|
+
* the fragment into the *deployed* copy only (the workspace source stays
|
|
14
|
+
* DRY), fencing the expansion between the directive line and a matching
|
|
15
15
|
* `@fireforge-end-include` marker so re-deploys can refresh it idempotently.
|
|
16
16
|
*
|
|
17
17
|
* Drift contract: the apply fast-path and `furnace validate` compare the
|
|
@@ -24,7 +24,7 @@ import { join } from 'node:path';
|
|
|
24
24
|
import { FurnaceError } from '../errors/furnace.js';
|
|
25
25
|
import { copyFile, pathExists, readText, writeText } from '../utils/fs.js';
|
|
26
26
|
export { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
|
|
27
|
-
// Local copy of the directory name for message text
|
|
27
|
+
// Local copy of the directory name for message text. Importing the
|
|
28
28
|
// binding for value use keeps a single source of truth.
|
|
29
29
|
import { SHARED_FRAGMENTS_DIR } from './furnace-config.js';
|
|
30
30
|
const INCLUDE_PATTERN = /^\s*\/\*\s*@fireforge-include\s+([\w./-]+)\s*\*\/\s*$/;
|
|
@@ -41,7 +41,7 @@ export function listFragmentIncludes(css) {
|
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Collapses fenced fragment expansions back to their bare directives.
|
|
44
|
-
* Inverse of {@link expandCssFragments}
|
|
44
|
+
* Inverse of {@link expandCssFragments}. Used to compare a deployed file
|
|
45
45
|
* against its workspace source and to re-expand idempotently.
|
|
46
46
|
*/
|
|
47
47
|
export function stripExpandedFragments(css) {
|
|
@@ -54,8 +54,8 @@ export function stripExpandedFragments(css) {
|
|
|
54
54
|
if (!inc?.[1])
|
|
55
55
|
continue;
|
|
56
56
|
// A bare directive (workspace file) has no fence to strip. Only skip
|
|
57
|
-
// the expansion body when a matching end marker actually follows
|
|
58
|
-
//
|
|
57
|
+
// the expansion body when a matching end marker actually follows.
|
|
58
|
+
// Otherwise an unterminated fence would silently eat the rest of the
|
|
59
59
|
// file.
|
|
60
60
|
let endIndex = -1;
|
|
61
61
|
for (let j = i + 1; j < lines.length; j++) {
|
|
@@ -141,7 +141,7 @@ export function extractExpandedFragmentBodies(css) {
|
|
|
141
141
|
}
|
|
142
142
|
/**
|
|
143
143
|
* Deploys one component file: CSS sources carrying include directives are
|
|
144
|
-
* written as their fragment-expanded form
|
|
144
|
+
* written as their fragment-expanded form. Everything else is a plain
|
|
145
145
|
* copy. Extracted here so `applyCustomComponent` stays inside the
|
|
146
146
|
* per-file line budget.
|
|
147
147
|
*
|
|
@@ -180,8 +180,8 @@ export async function describeFragmentExpansion(src) {
|
|
|
180
180
|
* @param componentDir - Workspace directory of the component
|
|
181
181
|
* @param tagName - Component tag name for issue attribution
|
|
182
182
|
* @param sharedDir - Shared fragments directory
|
|
183
|
-
* @param engineTargetDir - Deployed directory in the engine
|
|
184
|
-
* pre-deploy validation skips the staleness check
|
|
183
|
+
* @param engineTargetDir - Deployed directory in the engine. Optional, and
|
|
184
|
+
* pre-deploy validation skips the staleness check.
|
|
185
185
|
*/
|
|
186
186
|
export async function validateCssFragments(componentDir, tagName, sharedDir, engineTargetDir) {
|
|
187
187
|
const issues = [];
|
|
@@ -194,8 +194,8 @@ export async function validateCssFragments(componentDir, tagName, sharedDir, eng
|
|
|
194
194
|
entries = await readdir(componentDir);
|
|
195
195
|
}
|
|
196
196
|
catch {
|
|
197
|
-
// An unreadable component directory contributes no fragment issues
|
|
198
|
-
// what has been collected so far rather than failing validation.
|
|
197
|
+
// An unreadable component directory contributes no fragment issues.
|
|
198
|
+
// Return what has been collected so far rather than failing validation.
|
|
199
199
|
return issues;
|
|
200
200
|
}
|
|
201
201
|
for (const fileName of entries) {
|
|
@@ -11,7 +11,7 @@ export interface DirectoryEntry {
|
|
|
11
11
|
name: string;
|
|
12
12
|
}
|
|
13
13
|
/**
|
|
14
|
-
* True for a plain-file directory entry
|
|
14
|
+
* True for a plain-file directory entry. Symlinks and directories are
|
|
15
15
|
* never copy candidates.
|
|
16
16
|
*
|
|
17
17
|
* @param entry - Directory entry to classify
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* and its dry-run mirror can share one definition without importing each other.
|
|
7
7
|
*/
|
|
8
8
|
/**
|
|
9
|
-
* True for a plain-file directory entry
|
|
9
|
+
* True for a plain-file directory entry. Symlinks and directories are
|
|
10
10
|
* never copy candidates.
|
|
11
11
|
*
|
|
12
12
|
* @param entry - Directory entry to classify
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
* automatically on every deploy.
|
|
12
12
|
*
|
|
13
13
|
* Ownership contract: only entries whose key starts with
|
|
14
|
-
* `chrome://global/content/elements/`
|
|
14
|
+
* `chrome://global/content/elements/` and whose mapped path resolves into
|
|
15
15
|
* the Furnace custom-components workspace are managed (added, updated,
|
|
16
|
-
* pruned). Everything else in the jsconfig
|
|
17
|
-
* entries pointing elsewhere
|
|
16
|
+
* pruned). Everything else in the jsconfig, including hand-written `paths`
|
|
17
|
+
* entries pointing elsewhere, is preserved verbatim. No `baseUrl` is
|
|
18
18
|
* required or written: relative `paths` resolve against the config file's
|
|
19
19
|
* directory.
|
|
20
20
|
*/
|
|
@@ -32,13 +32,13 @@ export interface JsconfigSyncResult {
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Reconciles the managed `compilerOptions.paths` entries of the configured
|
|
35
|
-
* jsconfig against the current Furnace workspace. Idempotent
|
|
36
|
-
* when something actually changes
|
|
35
|
+
* jsconfig against the current Furnace workspace. Idempotent, and writes
|
|
36
|
+
* only when something actually changes. Dry-run returns the diff without
|
|
37
37
|
* writing.
|
|
38
38
|
*
|
|
39
39
|
* The consumer owns the jsconfig file: a missing file is an error with
|
|
40
40
|
* guidance rather than a silent scaffold. JSONC comments and trailing commas
|
|
41
|
-
* are preserved
|
|
41
|
+
* are preserved. Furnace edits only `compilerOptions.paths`.
|
|
42
42
|
*
|
|
43
43
|
* @param root - Project root directory
|
|
44
44
|
* @param config - Loaded Furnace configuration (must carry `typecheckJsconfig`)
|
|
@@ -49,7 +49,7 @@ export declare function syncFurnaceJsconfigPaths(root: string, config: FurnaceCo
|
|
|
49
49
|
}): Promise<JsconfigSyncResult>;
|
|
50
50
|
/**
|
|
51
51
|
* Computes jsconfig `paths` drift for `furnace validate`: managed entries
|
|
52
|
-
* that are missing or stale relative to the current workspace. Read-only
|
|
52
|
+
* that are missing or stale relative to the current workspace. Read-only:
|
|
53
53
|
* delegates to {@link syncFurnaceJsconfigPaths} in dry-run mode.
|
|
54
54
|
*/
|
|
55
55
|
export declare function findJsconfigPathsDrift(root: string, config: FurnaceConfig): Promise<JsconfigSyncResult>;
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
* automatically on every deploy.
|
|
13
13
|
*
|
|
14
14
|
* Ownership contract: only entries whose key starts with
|
|
15
|
-
* `chrome://global/content/elements/`
|
|
15
|
+
* `chrome://global/content/elements/` and whose mapped path resolves into
|
|
16
16
|
* the Furnace custom-components workspace are managed (added, updated,
|
|
17
|
-
* pruned). Everything else in the jsconfig
|
|
18
|
-
* entries pointing elsewhere
|
|
17
|
+
* pruned). Everything else in the jsconfig, including hand-written `paths`
|
|
18
|
+
* entries pointing elsewhere, is preserved verbatim. No `baseUrl` is
|
|
19
19
|
* required or written: relative `paths` resolve against the config file's
|
|
20
20
|
* directory.
|
|
21
21
|
*/
|
|
@@ -32,18 +32,18 @@ import { getFurnacePaths } from './furnace-config.js';
|
|
|
32
32
|
const CHROME_ELEMENTS_URL_PREFIX = 'chrome://global/content/elements/';
|
|
33
33
|
/**
|
|
34
34
|
* Computes the desired managed `paths` entries: one per `.mjs` file of
|
|
35
|
-
* every custom component
|
|
35
|
+
* every custom component, registered or not, keyed by its deployed
|
|
36
36
|
* chrome URL and mapped to the workspace source relative to the jsconfig
|
|
37
37
|
* directory. `register: false` components (notably `kind: "library"`
|
|
38
|
-
* base-class modules, which
|
|
38
|
+
* base-class modules, which require register: false) are included because
|
|
39
39
|
* deploy copies their files and writes jar.mn entries under
|
|
40
|
-
* `content/global/elements/` unconditionally
|
|
41
|
-
* registration is gated on `register
|
|
40
|
+
* `content/global/elements/` unconditionally. Only the customElements.js
|
|
41
|
+
* registration is gated on `register`, so their chrome URLs are just as
|
|
42
42
|
* real as a registered component's.
|
|
43
43
|
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* has not been deployed yet.
|
|
44
|
+
* The mapping target is the workspace source, not the deployed engine
|
|
45
|
+
* copy. Those are the files developers edit, and they exist even when the
|
|
46
|
+
* engine has not been deployed yet.
|
|
47
47
|
*/
|
|
48
48
|
async function computeDesiredChromePathEntries(config, customDir, jsconfigAbsPath) {
|
|
49
49
|
const jsconfigDir = dirname(jsconfigAbsPath);
|
|
@@ -58,7 +58,7 @@ async function computeDesiredChromePathEntries(config, customDir, jsconfigAbsPat
|
|
|
58
58
|
continue;
|
|
59
59
|
// Emit a `./`-prefixed relative value. TypeScript treats a bare
|
|
60
60
|
// `paths` value (`moz-widget/moz-widget.mjs`) as non-relative and
|
|
61
|
-
// rejects it without `baseUrl` (TS5090)
|
|
61
|
+
// rejects it without `baseUrl` (TS5090). A `./`-prefixed value
|
|
62
62
|
// resolves against the jsconfig directory with no `baseUrl` (which
|
|
63
63
|
// TS6 deprecates, TS5101). `../`-prefixed paths are already relative
|
|
64
64
|
// and left untouched.
|
|
@@ -86,18 +86,19 @@ function isManagedEntry(key, value, jsconfigDir, customDir) {
|
|
|
86
86
|
return false;
|
|
87
87
|
// Containment via `relative`, not a string prefix: a hard-coded `'/'`
|
|
88
88
|
// separator never matches the backslashes `resolve` emits on Windows, which
|
|
89
|
-
// demoted every managed entry to "unmanaged" there
|
|
89
|
+
// demoted every managed entry to "unmanaged" there, so no pruning and no
|
|
90
|
+
// updates.
|
|
90
91
|
return isPathInsideRoot(customDir, resolve(jsconfigDir, value[0]));
|
|
91
92
|
}
|
|
92
93
|
/**
|
|
93
94
|
* Reconciles the managed `compilerOptions.paths` entries of the configured
|
|
94
|
-
* jsconfig against the current Furnace workspace. Idempotent
|
|
95
|
-
* when something actually changes
|
|
95
|
+
* jsconfig against the current Furnace workspace. Idempotent, and writes
|
|
96
|
+
* only when something actually changes. Dry-run returns the diff without
|
|
96
97
|
* writing.
|
|
97
98
|
*
|
|
98
99
|
* The consumer owns the jsconfig file: a missing file is an error with
|
|
99
100
|
* guidance rather than a silent scaffold. JSONC comments and trailing commas
|
|
100
|
-
* are preserved
|
|
101
|
+
* are preserved. Furnace edits only `compilerOptions.paths`.
|
|
101
102
|
*
|
|
102
103
|
* @param root - Project root directory
|
|
103
104
|
* @param config - Loaded Furnace configuration (must carry `typecheckJsconfig`)
|
|
@@ -143,8 +144,8 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
|
|
|
143
144
|
...(jsconfigObject.compilerOptions?.paths ?? {}),
|
|
144
145
|
};
|
|
145
146
|
const nextPaths = {};
|
|
146
|
-
// Preserve every unmanaged entry verbatim
|
|
147
|
-
// no longer desired
|
|
147
|
+
// Preserve every unmanaged entry verbatim. Prune managed entries that are
|
|
148
|
+
// no longer desired. Update managed entries whose target moved.
|
|
148
149
|
for (const [key, value] of Object.entries(currentPaths)) {
|
|
149
150
|
if (!isManagedEntry(key, value, jsconfigDir, furnacePaths.customDir)) {
|
|
150
151
|
nextPaths[key] = value;
|
|
@@ -157,8 +158,9 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
|
|
|
157
158
|
}
|
|
158
159
|
// Treat `./x` and bare `x` as equal so a previously-synced bare value (or
|
|
159
160
|
// a hand-written `./` prefix) is not rewritten as "stale" on every run.
|
|
160
|
-
// The existing value is kept verbatim when equivalent
|
|
161
|
-
// way
|
|
161
|
+
// The existing value is kept verbatim when equivalent, so there is no
|
|
162
|
+
// churn either way. Only a genuinely different target updates (to the
|
|
163
|
+
// `./` form).
|
|
162
164
|
if (!samePathValue(value[0], want[0] ?? '')) {
|
|
163
165
|
result.updated.push(key);
|
|
164
166
|
nextPaths[key] = want;
|
|
@@ -184,7 +186,7 @@ export async function syncFurnaceJsconfigPaths(root, config, options) {
|
|
|
184
186
|
}
|
|
185
187
|
/**
|
|
186
188
|
* Computes jsconfig `paths` drift for `furnace validate`: managed entries
|
|
187
|
-
* that are missing or stale relative to the current workspace. Read-only
|
|
189
|
+
* that are missing or stale relative to the current workspace. Read-only:
|
|
188
190
|
* delegates to {@link syncFurnaceJsconfigPaths} in dry-run mode.
|
|
189
191
|
*/
|
|
190
192
|
export async function findJsconfigPathsDrift(root, config) {
|