@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
|
@@ -32,21 +32,21 @@ export interface PatchResult {
|
|
|
32
32
|
/** Whether the patch was auto-resolved (new file vs existing file conflict) */
|
|
33
33
|
autoResolved?: boolean;
|
|
34
34
|
/**
|
|
35
|
-
* Pre-existing
|
|
36
|
-
* new file, removed), keyed by engine-relative path. Kept for the
|
|
37
|
-
* duration
|
|
35
|
+
* Pre-existing bytes of files the auto-resolve overwrote (or, for a
|
|
36
|
+
* binary new file, removed), keyed by engine-relative path. Kept for the
|
|
37
|
+
* whole run's duration, not just the retry: if a later patch fails and
|
|
38
38
|
* `rollbackPatches` reverse-applies this one, reversing a new-file patch
|
|
39
|
-
*
|
|
40
|
-
* there before the auto-resolve.
|
|
39
|
+
* deletes the file, and these snapshots are the only way to restore what
|
|
40
|
+
* was there before the auto-resolve.
|
|
41
41
|
*
|
|
42
42
|
* Raw bytes rather than decoded text, because the same snapshot has to
|
|
43
43
|
* restore a binary target byte-for-byte.
|
|
44
44
|
*
|
|
45
|
-
* Typed `Uint8Array
|
|
46
|
-
* emitted `.d.ts` naming a Node global made a consumer without
|
|
45
|
+
* Typed `Uint8Array` rather than `Buffer`: this interface is published,
|
|
46
|
+
* and the emitted `.d.ts` naming a Node global made a consumer without
|
|
47
47
|
* `@types/node` fail to compile against the package (`TS2591` in the
|
|
48
|
-
* pack smoke test). Every `Buffer` assigns to it
|
|
49
|
-
* `Uint8Array
|
|
48
|
+
* pack smoke test). Every `Buffer` assigns to it, since `Buffer` extends
|
|
49
|
+
* `Uint8Array`, and `fs.writeFile` accepts it, so nothing at the call
|
|
50
50
|
* sites changes.
|
|
51
51
|
*/
|
|
52
52
|
autoResolvedOriginals?: Map<string, Uint8Array>;
|
|
@@ -81,15 +81,15 @@ export interface PatchMetadata {
|
|
|
81
81
|
/**
|
|
82
82
|
* Optional per-patch list of lint check IDs to suppress when this patch is
|
|
83
83
|
* the target of `export`, `export-all`, or `re-export`. Exists for the
|
|
84
|
-
* class of patch that is advisory-noisy by nature
|
|
85
|
-
* bundle, a localised-resource pack, an auto-generated manifest
|
|
84
|
+
* class of patch that is advisory-noisy by nature (a cohesive branding
|
|
85
|
+
* bundle, a localised-resource pack, an auto-generated manifest) where
|
|
86
86
|
* the generic `large-patch-lines` / `large-patch-files` thresholds do not
|
|
87
87
|
* apply but `--skip-lint`, which silences every error rather than the one
|
|
88
88
|
* that does not apply, is too coarse.
|
|
89
89
|
*
|
|
90
90
|
* Values are free-form check IDs (e.g. `"large-patch-lines"`). Checks not
|
|
91
91
|
* listed here still run normally. An entry for an unknown check ID is a
|
|
92
|
-
* no-op
|
|
92
|
+
* no-op: the metadata documents the intent to suppress even if the check
|
|
93
93
|
* is later renamed or removed.
|
|
94
94
|
*/
|
|
95
95
|
lintIgnore?: string[];
|
|
@@ -99,14 +99,14 @@ export interface PatchMetadata {
|
|
|
99
99
|
* cross-cutting registration files alongside `browser/branding/<name>/`
|
|
100
100
|
* (notably `browser/moz.configure`, which registers the new branding
|
|
101
101
|
* flavor with the top-level configure). The narrow auto-detect allowlist
|
|
102
|
-
* in `isBrandingOnlyPatch` covers the canonical shape
|
|
102
|
+
* in `isBrandingOnlyPatch` covers the canonical shape. A fork whose
|
|
103
103
|
* branding patch also touches an unlisted sibling falls through to the
|
|
104
104
|
* general tier and trips the hard limit on what is legitimately one
|
|
105
105
|
* branding diff.
|
|
106
106
|
*
|
|
107
107
|
* Declaring `tier: "branding"` forces the branding thresholds (notice
|
|
108
108
|
* 8000 / warning 18000 / error 30000 lines, ≤60 files) regardless of
|
|
109
|
-
* `filesAffected`. It is
|
|
109
|
+
* `filesAffected`. It is a weaker claim than test: an all-tests patch
|
|
110
110
|
* stays in the test tier even with this set, because those thresholds are
|
|
111
111
|
* already more permissive.
|
|
112
112
|
*
|
|
@@ -130,11 +130,11 @@ export interface PatchStagedDependencies {
|
|
|
130
130
|
forwardImports?: PatchStagedForwardImport[];
|
|
131
131
|
/**
|
|
132
132
|
* Registration-shaped forward dependencies: packaging or registration
|
|
133
|
-
*
|
|
133
|
+
* lines (a jar.mn entry, a customElements registration, an actor
|
|
134
134
|
* registration) this patch adds that reference a file a later patch
|
|
135
135
|
* creates. Unlike `forwardImports`, these are validated by matching the
|
|
136
|
-
* declared line against the patch's added content
|
|
137
|
-
* import specifier
|
|
136
|
+
* declared line against the patch's added content rather than by finding
|
|
137
|
+
* an import specifier, since packaging lines have no import to match.
|
|
138
138
|
*/
|
|
139
139
|
registrations?: PatchStagedRegistration[];
|
|
140
140
|
}
|
|
@@ -227,8 +227,8 @@ export interface PatchLintIssue {
|
|
|
227
227
|
* Diff-scoping tag populated by `lint --since <rev>`. Absent when the
|
|
228
228
|
* caller did not request diff-scoping.
|
|
229
229
|
*
|
|
230
|
-
* - `introduced
|
|
231
|
-
* - `cumulative
|
|
230
|
+
* - `introduced`: the issue's file was touched in the diff since `<rev>`.
|
|
231
|
+
* - `cumulative`: the issue is pre-existing patch-state drift not
|
|
232
232
|
* introduced by the current task.
|
|
233
233
|
*/
|
|
234
234
|
tag?: 'introduced' | 'cumulative';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Result of a doctor check.
|
|
6
6
|
*
|
|
7
|
-
* `severity` is the single source of truth
|
|
7
|
+
* `severity` is the single source of truth. Consumers that want a boolean
|
|
8
8
|
* derive it as `severity !== 'error'`.
|
|
9
9
|
*/
|
|
10
10
|
export interface DoctorCheck {
|
|
@@ -23,7 +23,7 @@ export interface DoctorCheck {
|
|
|
23
23
|
export interface TokenCoverageFileEntry {
|
|
24
24
|
/** File path (relative to engine root) */
|
|
25
25
|
file: string;
|
|
26
|
-
/** var(--{prefix}*) usages
|
|
26
|
+
/** var(--{prefix}*) usages, fully tokenized */
|
|
27
27
|
tokenUsages: number;
|
|
28
28
|
/** var(--*) usages referencing allowlisted tokens */
|
|
29
29
|
allowlisted: number;
|
|
@@ -38,7 +38,7 @@ export interface TokenCoverageFileEntry {
|
|
|
38
38
|
export interface TokenCoverageReport {
|
|
39
39
|
/** Total CSS files scanned */
|
|
40
40
|
filesScanned: number;
|
|
41
|
-
/** var(--{prefix}*) usages
|
|
41
|
+
/** var(--{prefix}*) usages, fully tokenized */
|
|
42
42
|
tokenUsages: number;
|
|
43
43
|
/** var(--*) usages referencing allowlisted tokens */
|
|
44
44
|
allowlistedUsages: number;
|
|
@@ -12,6 +12,13 @@ export interface FirefoxConfig {
|
|
|
12
12
|
product: FirefoxProduct;
|
|
13
13
|
/** Optional pinned SHA-256 for the resolved source archive */
|
|
14
14
|
sha256?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Accept a freshly downloaded archive when Mozilla's published SHA256SUMS
|
|
17
|
+
* cannot be fetched or does not list it, instead of failing closed. The
|
|
18
|
+
* download is then trusted on TLS alone (with a warning). Ignored when
|
|
19
|
+
* `sha256` is pinned. Default false.
|
|
20
|
+
*/
|
|
21
|
+
allowUnverifiedDownload?: boolean;
|
|
15
22
|
/**
|
|
16
23
|
* Optional release-candidate build directory (e.g. "build2"). When set,
|
|
17
24
|
* the source archive resolves under
|
|
@@ -49,7 +56,7 @@ export interface ExternalToolRequirement {
|
|
|
49
56
|
path?: string;
|
|
50
57
|
/** Resolve the tool with `xcrun -find <name>` instead of PATH. */
|
|
51
58
|
xcrun?: boolean;
|
|
52
|
-
/** Missing tool is an error by default
|
|
59
|
+
/** Missing tool is an error by default. Set false for advisory probes. */
|
|
53
60
|
required?: boolean;
|
|
54
61
|
}
|
|
55
62
|
/** Named group of project-specific external asset/build tools. */
|
|
@@ -124,6 +131,8 @@ export interface FireForgeConfig {
|
|
|
124
131
|
firefox: FirefoxConfig;
|
|
125
132
|
/** Build settings */
|
|
126
133
|
build?: BuildConfig;
|
|
134
|
+
/** Post-build packaging audit configuration */
|
|
135
|
+
buildAudit?: BuildAuditConfig;
|
|
127
136
|
/** Test command defaults */
|
|
128
137
|
test?: TestConfig;
|
|
129
138
|
/** Optional project-specific external toolchains checked by doctor. */
|
|
@@ -149,14 +158,14 @@ export interface FireForgeConfig {
|
|
|
149
158
|
/**
|
|
150
159
|
* Configuration for the `fireforge typecheck` command. Distinct from
|
|
151
160
|
* `patchLint.checkJs`: patch-lint runs every time `fireforge lint` runs
|
|
152
|
-
* and is scoped to patch-owned `.sys.mjs
|
|
161
|
+
* and is scoped to patch-owned `.sys.mjs`. Typecheck runs whole projects
|
|
153
162
|
* the operator points at via `projects` and is intended as a CI gate.
|
|
154
163
|
*/
|
|
155
164
|
export interface TypecheckConfig {
|
|
156
165
|
/**
|
|
157
166
|
* Project-relative paths to jsconfig.json (or tsconfig.json) files
|
|
158
167
|
* the typecheck command should run. Must be non-empty when the
|
|
159
|
-
* `typecheck` block is present
|
|
168
|
+
* `typecheck` block is present. An empty array would silently turn
|
|
160
169
|
* the command into a no-op.
|
|
161
170
|
*/
|
|
162
171
|
projects: string[];
|
|
@@ -165,14 +174,15 @@ export interface TypecheckConfig {
|
|
|
165
174
|
* contents are concatenated to the built-in `FIREFOX_GLOBALS_SHIM`.
|
|
166
175
|
* Lets projects declare component patterns like `MozLitElement` /
|
|
167
176
|
* `MozXULElement` once instead of per-file. Concat order is
|
|
168
|
-
* built-in shim first, extraShim second
|
|
177
|
+
* built-in shim first, extraShim second: augment, don't redeclare.
|
|
169
178
|
*/
|
|
170
179
|
extraShim?: string;
|
|
171
180
|
/**
|
|
172
181
|
* Per-project override of {@link extraShim}, keyed by the project's path
|
|
173
182
|
* exactly as it appears in {@link projects}. A string value points the
|
|
174
|
-
* project at a different `.d.ts
|
|
175
|
-
* extra shim entirely (it absorbs only the built-in Firefox globals
|
|
183
|
+
* project at a different `.d.ts`. `null` opts the project out of the
|
|
184
|
+
* shared extra shim entirely (it absorbs only the built-in Firefox globals
|
|
185
|
+
* shim).
|
|
176
186
|
*
|
|
177
187
|
* Needed because the shared shim is injected into every project: a shim hub
|
|
178
188
|
* that references Gecko declaration libs (`lib.gecko.dom.d.ts`, …) is wanted
|
|
@@ -185,19 +195,44 @@ export interface TypecheckConfig {
|
|
|
185
195
|
* How to report undefined free identifiers (TS2304/TS2552). Default
|
|
186
196
|
* `'warning'`: visible without failing the gate, since shim gaps produce
|
|
187
197
|
* the same diagnostic as a genuine missing import. `'error'` makes them
|
|
188
|
-
* blocking
|
|
198
|
+
* blocking. `'off'` suppresses them.
|
|
189
199
|
*/
|
|
190
200
|
undefinedIdentifiers?: PatchLintSeverityGate;
|
|
191
201
|
}
|
|
192
202
|
/**
|
|
193
203
|
* Wire command configuration.
|
|
194
204
|
*/
|
|
205
|
+
/**
|
|
206
|
+
* One intentionally unpackaged source, declared so the post-build audit
|
|
207
|
+
* stops reporting it as a missing registration.
|
|
208
|
+
*
|
|
209
|
+
* `reason` is required and must be non-empty. A carve-out whose rationale
|
|
210
|
+
* nobody wrote down is indistinguishable from a mistake by the time someone
|
|
211
|
+
* reads it, and this is the one audit class FireForge cannot derive from the
|
|
212
|
+
* tree: the file's own header may say "never loaded", but nothing in
|
|
213
|
+
* `moz.build` or `jar.mn` records that.
|
|
214
|
+
*/
|
|
215
|
+
export interface BuildAuditUnpackagedDeclaration {
|
|
216
|
+
/** Engine-relative path, exact or with a `*` inside one path segment. */
|
|
217
|
+
path: string;
|
|
218
|
+
/** Why this file is never packaged. Required, non-empty. */
|
|
219
|
+
reason: string;
|
|
220
|
+
}
|
|
221
|
+
/** Post-build packaging audit configuration. */
|
|
222
|
+
export interface BuildAuditConfig {
|
|
223
|
+
/**
|
|
224
|
+
* Sources the audit must treat as intentionally unpackaged. Admitted
|
|
225
|
+
* paths are listed in the audit output rather than silenced, and one that
|
|
226
|
+
* does resolve to a packaged artifact is reported as a stale carve-out.
|
|
227
|
+
*/
|
|
228
|
+
unpackaged?: BuildAuditUnpackagedDeclaration[];
|
|
229
|
+
}
|
|
195
230
|
export interface WireConfig {
|
|
196
231
|
/** Subscript directory relative to engine/. Default: "browser/base/content" */
|
|
197
232
|
subscriptDir?: string;
|
|
198
233
|
}
|
|
199
234
|
/**
|
|
200
|
-
* Severity gate for opt-in patch-lint rules. `'off'` disables the rule
|
|
235
|
+
* Severity gate for opt-in patch-lint rules. `'off'` disables the rule.
|
|
201
236
|
* `'warning'` and `'error'` emit issues at the matching severity.
|
|
202
237
|
*/
|
|
203
238
|
export type PatchLintSeverityGate = 'off' | 'warning' | 'error';
|
|
@@ -208,7 +243,7 @@ export type PatchLintSeverityGate = 'off' | 'warning' | 'error';
|
|
|
208
243
|
*
|
|
209
244
|
* Boolean flags tighten the strict preset. The optional `paths` mapping
|
|
210
245
|
* (each pattern may carry a single `*`) lets patch-owned modules be typed
|
|
211
|
-
* from their real sources
|
|
246
|
+
* from their real sources (e.g. `"resource:///modules/foo/*": ["./*"]`),
|
|
212
247
|
* resolved host-side against the engine directory, so no `baseUrl` is set
|
|
213
248
|
* (TS5090-safe) and no hand-generated ambient stub shim is needed. Other
|
|
214
249
|
* options (`rootDir`, etc.) stay disallowed: they would fight the
|
|
@@ -229,10 +264,10 @@ export interface PatchLintCheckJsCompilerOptions {
|
|
|
229
264
|
/**
|
|
230
265
|
* Line-count thresholds for one `file-too-large` tier.
|
|
231
266
|
*
|
|
232
|
-
* Every field is optional
|
|
267
|
+
* Every field is optional. An omitted field keeps the built-in default.
|
|
233
268
|
* The three must stay ordered `notice <= warning <= error`, which the
|
|
234
|
-
* config validator enforces
|
|
235
|
-
* band rather than failing anything.
|
|
269
|
+
* config validator enforces, because an out-of-order triple silently
|
|
270
|
+
* disables a band rather than failing anything.
|
|
236
271
|
*/
|
|
237
272
|
export interface PatchLintFileSizeTier {
|
|
238
273
|
notice?: number;
|
|
@@ -269,7 +304,7 @@ export interface PatchLintConfig {
|
|
|
269
304
|
*/
|
|
270
305
|
checkJsStrict?: boolean;
|
|
271
306
|
/**
|
|
272
|
-
* Boolean overrides merged after the strict preset
|
|
307
|
+
* Boolean overrides merged after the strict preset. Only valid when
|
|
273
308
|
* `checkJsStrict` is true. Requires `checkJs: true`.
|
|
274
309
|
*/
|
|
275
310
|
checkJsCompilerOptions?: PatchLintCheckJsCompilerOptions;
|
|
@@ -323,16 +358,16 @@ export interface PatchLintConfig {
|
|
|
323
358
|
* `Services.scriptloader.loadSubScript`, e.g.
|
|
324
359
|
* `browser/base/content/<binaryName>*.js`). Distinct from
|
|
325
360
|
* `jsdocClassMethods` because chrome subscripts are parsed as scripts,
|
|
326
|
-
* not ES modules
|
|
361
|
+
* not ES modules. Using one flag for both would silently disable the
|
|
327
362
|
* rule when a chrome subscript was fed to the module parser. Default:
|
|
328
363
|
* 'off'.
|
|
329
364
|
*/
|
|
330
365
|
chromeScriptJsDoc?: PatchLintSeverityGate;
|
|
331
366
|
/**
|
|
332
367
|
* How the checkJs pass reports undefined free identifiers
|
|
333
|
-
* (TS2304/TS2552). Same semantics as `typecheck.undefinedIdentifiers
|
|
334
|
-
*
|
|
335
|
-
*
|
|
368
|
+
* (TS2304/TS2552). Same semantics as `typecheck.undefinedIdentifiers`.
|
|
369
|
+
* The two flows share the suppression policy so a patch cannot pass one
|
|
370
|
+
* and fail the other. Default: 'warning'.
|
|
336
371
|
*/
|
|
337
372
|
undefinedIdentifiers?: PatchLintSeverityGate;
|
|
338
373
|
}
|
|
@@ -352,8 +387,6 @@ export interface FireForgeState {
|
|
|
352
387
|
brand?: string;
|
|
353
388
|
/** Build mode: dev, debug, release */
|
|
354
389
|
buildMode?: BuildMode;
|
|
355
|
-
/** Last successful build timestamp (ISO string) */
|
|
356
|
-
lastBuild?: string;
|
|
357
390
|
/** Firefox version that was downloaded */
|
|
358
391
|
downloadedVersion?: string;
|
|
359
392
|
/** Initial commit hash of the engine (baseline) */
|
|
@@ -47,7 +47,7 @@ export interface CustomComponentConfig {
|
|
|
47
47
|
/** Whether to register in customElements.js */
|
|
48
48
|
register: boolean;
|
|
49
49
|
/**
|
|
50
|
-
* What the component
|
|
50
|
+
* What the component is. `'element'` (the default when unset) is a custom
|
|
51
51
|
* element with its own tag. `'library'` is a base class + helpers module
|
|
52
52
|
* that defines no element of its own (e.g. a shared MozLitElement
|
|
53
53
|
* subclass other components extend): `furnace validate` skips the
|
|
@@ -55,7 +55,7 @@ export interface CustomComponentConfig {
|
|
|
55
55
|
* and the `missing-css` structural advisory for it, while headers, module
|
|
56
56
|
* shape, `relative-import`, and (when a `.css` exists) the CSS
|
|
57
57
|
* compatibility rules still apply. A library exports no element, so
|
|
58
|
-
* `kind: "library"` requires `register: false
|
|
58
|
+
* `kind: "library"` requires `register: false`. The combination with
|
|
59
59
|
* `register: true` is rejected at config parse time.
|
|
60
60
|
*/
|
|
61
61
|
kind?: 'element' | 'library';
|
|
@@ -85,18 +85,18 @@ export interface CustomComponentConfig {
|
|
|
85
85
|
* participates in, in the same form used by `insertFTLIfNeeded` (for
|
|
86
86
|
* example `browser/mybrowser-dock.ftl`). When set:
|
|
87
87
|
*
|
|
88
|
-
* - `furnace create --localized` does
|
|
89
|
-
* `.ftl` stub
|
|
88
|
+
* - `furnace create --localized` does not scaffold a per-component
|
|
89
|
+
* `.ftl` stub. The component shares the feature bundle.
|
|
90
90
|
* - The generated `.mjs` calls `insertFTLIfNeeded("<sharedFtl>")` at
|
|
91
91
|
* the shared path instead of the per-component one.
|
|
92
92
|
* - `furnace validate`'s `missing-ftl` structural rule is skipped for
|
|
93
93
|
* the component (there is no `<tag>.ftl` to require).
|
|
94
|
-
* - `furnace apply` does
|
|
95
|
-
* tree nor register a new entry in the locale `jar.mn
|
|
94
|
+
* - `furnace apply` does not copy a per-component `.ftl` into the FTL
|
|
95
|
+
* tree nor register a new entry in the locale `jar.mn`. The shared
|
|
96
96
|
* file is owned by whoever authored the feature bundle.
|
|
97
97
|
*
|
|
98
98
|
* Requires `localized: true`. Mutually exclusive with the per-component
|
|
99
|
-
* `.ftl` scaffold. Does
|
|
99
|
+
* `.ftl` scaffold. Does not auto-migrate previous per-component FTL
|
|
100
100
|
* state: flipping an existing component onto `sharedFtl` leaves the
|
|
101
101
|
* prior per-component entry in the engine tree and the locale `jar.mn`
|
|
102
102
|
* until explicitly cleaned up.
|
|
@@ -120,12 +120,12 @@ export interface FurnaceConfig {
|
|
|
120
120
|
* variables the fork does not own. `token coverage` counts matches as
|
|
121
121
|
* `allowlisted` rather than `unknown` so a copied upstream baseline does
|
|
122
122
|
* not drag fork-owned coverage percentages down. Defaults to `['--moz-']`
|
|
123
|
-
* when unset
|
|
123
|
+
* when unset. Pass an explicit empty array to count every prefix.
|
|
124
124
|
*/
|
|
125
125
|
platformPrefixes?: string[];
|
|
126
126
|
/**
|
|
127
|
-
* Custom properties used as runtime state channels
|
|
128
|
-
* component itself (e.g. per-frame camera/tile positions) rather than
|
|
127
|
+
* Custom properties used as runtime state channels, written and read by
|
|
128
|
+
* the component itself (e.g. per-frame camera/tile positions) rather than
|
|
129
129
|
* consumed as design tokens. Listed names are exempt from the
|
|
130
130
|
* `token-prefix-violation` check even when they do not match `tokenPrefix`
|
|
131
131
|
* and are not in `tokenAllowlist`. Use this for cross-component runtime
|
|
@@ -139,7 +139,7 @@ export interface FurnaceConfig {
|
|
|
139
139
|
* the tokens CSS file is `<link>`ed. Forks with multiple chrome host
|
|
140
140
|
* documents (e.g. `mybrowser.xhtml` beside the stock `browser.xhtml`) should
|
|
141
141
|
* list every document that may own the link. When omitted, defaults to
|
|
142
|
-
* `['browser/base/content/browser.xhtml']
|
|
142
|
+
* `['browser/base/content/browser.xhtml']`, the upstream Firefox path.
|
|
143
143
|
*/
|
|
144
144
|
tokenHostDocuments?: string[];
|
|
145
145
|
/**
|
|
@@ -157,7 +157,7 @@ export interface FurnaceConfig {
|
|
|
157
157
|
* `compilerOptions.paths` entries for deployed component modules
|
|
158
158
|
* (`chrome://global/content/elements/<file>.mjs`) Furnace keeps in sync
|
|
159
159
|
* on deploy. Only entries under that chrome prefix that map into
|
|
160
|
-
* `components/custom/` are managed
|
|
160
|
+
* `components/custom/` are managed. Everything else is preserved.
|
|
161
161
|
* Unset disables jsconfig maintenance.
|
|
162
162
|
*/
|
|
163
163
|
typecheckJsconfig?: string;
|
|
@@ -189,11 +189,11 @@ export type FurnacePendingRepairOperation = (typeof FURNACE_PENDING_REPAIR_OPERA
|
|
|
189
189
|
* out-of-band from what the state file records.
|
|
190
190
|
*/
|
|
191
191
|
export interface FurnacePendingRepair {
|
|
192
|
-
/** The operation that failed to clean up
|
|
192
|
+
/** The operation that failed to clean up. Doctor uses it to route the fix. */
|
|
193
193
|
operation: FurnacePendingRepairOperation;
|
|
194
194
|
/** ISO timestamp of when the repair marker was written. */
|
|
195
195
|
timestamp: string;
|
|
196
|
-
/** Human-readable summary of the failure
|
|
196
|
+
/** Human-readable summary of the failure. Doctor shows it. */
|
|
197
197
|
reason: string;
|
|
198
198
|
}
|
|
199
199
|
/**
|
|
@@ -259,13 +259,13 @@ export interface ApplyResult {
|
|
|
259
259
|
/**
|
|
260
260
|
* Set to true when the rollback journal was restored after a partial failure.
|
|
261
261
|
* When true, entries in `applied` reflect what was attempted, not what
|
|
262
|
-
* persisted
|
|
262
|
+
* persisted. The engine has been restored to its pre-apply state.
|
|
263
263
|
*/
|
|
264
264
|
rolledBack?: boolean;
|
|
265
265
|
/**
|
|
266
266
|
* Operator-facing warnings, printed by `logApplyResult`. Populated when
|
|
267
267
|
* apply overwrote a deployed, patch-owned file whose engine bytes
|
|
268
|
-
* differed from the component source
|
|
268
|
+
* differed from the component source, which is the case where a
|
|
269
269
|
* shipped engine-only fix is silently reverted by the copy.
|
|
270
270
|
*/
|
|
271
271
|
warnings?: string[];
|
|
@@ -331,7 +331,7 @@ export type ResolvedTestStyle = 'mochikit' | 'browser-chrome' | 'xpcshell' | 'no
|
|
|
331
331
|
* caller is never asked to invent a value it does not have.
|
|
332
332
|
*/
|
|
333
333
|
export interface ComponentApplyContext {
|
|
334
|
-
/** Project root
|
|
334
|
+
/** Project root, what registration consistency resolves against. */
|
|
335
335
|
root: string;
|
|
336
336
|
/** Firefox source directory the component deploys into. */
|
|
337
337
|
engineDir: string;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-exports all type definitions.
|
|
3
3
|
*/
|
|
4
|
-
export type {} from './commands/index.js';
|
|
5
4
|
export type { BuildConfig, FireForgeConfig, FirefoxConfig, FirefoxProduct, ProjectLicense, ProjectPaths, WireConfig, } from './config.js';
|
|
6
5
|
export type { ApplyResult, ComponentType, CustomComponentConfig, DryRunAction, FurnaceConfig, FurnaceState, OverrideComponentConfig, OverrideType, StepError, ValidationIssue, } from './furnace.js';
|
package/dist/src/types/json.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Domain types for raw JSON documents (fireforge.json, furnace.json).
|
|
3
3
|
*
|
|
4
|
-
* FireForge
|
|
5
|
-
*
|
|
4
|
+
* FireForge reads and writes some documents in their raw, unvalidated
|
|
5
|
+
* form. For example, `fireforge config --force` round-trips keys that
|
|
6
6
|
* the validated `FireForgeConfig` schema would strip. These types give that
|
|
7
7
|
* pipeline a concrete value contract: every value is JSON data, never a
|
|
8
8
|
* function, class instance, symbol, or other non-serializable runtime value.
|
|
@@ -14,7 +14,7 @@ export type JsonValue = string | number | boolean | null | JsonValue[] | JsonObj
|
|
|
14
14
|
/**
|
|
15
15
|
* A JSON object node. `undefined` is admitted as a property value (not a
|
|
16
16
|
* `JsonValue`) so in-memory documents can be built field-by-field from
|
|
17
|
-
* optional inputs
|
|
17
|
+
* optional inputs. `JSON.stringify` drops such properties on write, exactly
|
|
18
18
|
* like an absent key.
|
|
19
19
|
*/
|
|
20
20
|
export interface JsonObject {
|
package/dist/src/types/json.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Domain types for raw JSON documents (fireforge.json, furnace.json).
|
|
4
4
|
*
|
|
5
|
-
* FireForge
|
|
6
|
-
*
|
|
5
|
+
* FireForge reads and writes some documents in their raw, unvalidated
|
|
6
|
+
* form. For example, `fireforge config --force` round-trips keys that
|
|
7
7
|
* the validated `FireForgeConfig` schema would strip. These types give that
|
|
8
8
|
* pipeline a concrete value contract: every value is JSON data, never a
|
|
9
9
|
* function, class instance, symbol, or other non-serializable runtime value.
|
|
@@ -23,9 +23,9 @@ export interface TypecheckIssue {
|
|
|
23
23
|
/** Raw TypeScript diagnostic code (e.g. 2322 for a type mismatch). */
|
|
24
24
|
code: number;
|
|
25
25
|
/**
|
|
26
|
-
* Severity bucket
|
|
27
|
-
*
|
|
28
|
-
* has only two visible levels.
|
|
26
|
+
* Severity bucket. TS also reports `Suggestion` and `Message`
|
|
27
|
+
* categories, but `runTypecheck` collapses both into `'warning'` so
|
|
28
|
+
* the CLI has only two visible levels.
|
|
29
29
|
*/
|
|
30
30
|
category: 'error' | 'warning';
|
|
31
31
|
/** Human-readable message text (already flattened from chains). */
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
* A failure description, or a thunk producing one.
|
|
3
3
|
*
|
|
4
4
|
* The thunk form exists so a hot call site pays nothing on the passing
|
|
5
|
-
* path
|
|
5
|
+
* path: `assert(ok, () => \`bad state: ${JSON.stringify(x)}\`)` builds
|
|
6
6
|
* the string only when the assertion actually fails, where a plain
|
|
7
7
|
* template literal would build it on every call.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
type AssertionMessage = string | (() => string);
|
|
10
10
|
/**
|
|
11
11
|
* Asserts that an internal invariant holds.
|
|
12
12
|
*
|
|
@@ -18,23 +18,10 @@ export type AssertionMessage = string | (() => string);
|
|
|
18
18
|
* @throws {@link InternalInvariantError} when `condition` is falsy.
|
|
19
19
|
*/
|
|
20
20
|
export declare function assert(condition: unknown, message: AssertionMessage): asserts condition;
|
|
21
|
-
/**
|
|
22
|
-
* Asserts that a value is neither `null` nor `undefined`, narrowing it in
|
|
23
|
-
* place for the statements that follow.
|
|
24
|
-
*
|
|
25
|
-
* Use this in statement position, where the value is already bound to a
|
|
26
|
-
* name. Use {@link expectDefined} in expression position, where it is not.
|
|
27
|
-
*
|
|
28
|
-
* @param value - The value that should be present
|
|
29
|
-
* @param message - What was supposed to be present, and why
|
|
30
|
-
* @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
|
|
31
|
-
*/
|
|
32
|
-
export declare function assertDefined<T>(value: T, message: AssertionMessage): asserts value is NonNullable<T>;
|
|
33
21
|
/**
|
|
34
22
|
* Returns a value that must be present, throwing if it is not.
|
|
35
23
|
*
|
|
36
|
-
*
|
|
37
|
-
* and returns in one step, so an indexed read can be asserted inline
|
|
24
|
+
* Checks and returns in one step, so an indexed read can be asserted inline
|
|
38
25
|
* (`push({ content: expectDefined(lines[k], …) })`) without first binding
|
|
39
26
|
* it to a local.
|
|
40
27
|
*
|
|
@@ -44,3 +31,4 @@ export declare function assertDefined<T>(value: T, message: AssertionMessage): a
|
|
|
44
31
|
* @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
|
|
45
32
|
*/
|
|
46
33
|
export declare function expectDefined<T>(value: T, message: AssertionMessage): NonNullable<T>;
|
|
34
|
+
export {};
|
package/dist/src/utils/assert.js
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Runtime assertions for FireForge's own internal invariants.
|
|
4
4
|
*
|
|
5
|
-
* These check state that FireForge itself established
|
|
5
|
+
* These check state that FireForge itself established: a journal was
|
|
6
6
|
* registered before the first mutation, a lock is held before a write,
|
|
7
|
-
* manifest ordering is contiguous after a renumber. They are
|
|
8
|
-
* validation
|
|
7
|
+
* manifest ordering is contiguous after a renumber. They are not input
|
|
8
|
+
* validation. Anything derived from user input, the filesystem, or a
|
|
9
9
|
* subprocess belongs in a typed error from `src/errors/` with a
|
|
10
10
|
* `userMessage` that tells the operator what to do. An assertion failure
|
|
11
|
-
* says the opposite
|
|
12
|
-
*
|
|
11
|
+
* says the opposite: nothing the operator could have done would have
|
|
12
|
+
* prevented it.
|
|
13
13
|
*
|
|
14
14
|
* Every check routes through a helper here rather than being open-coded
|
|
15
|
-
* as `if (!condition) throw`.
|
|
15
|
+
* as `if (!condition) throw`. An inline throw adds a
|
|
16
16
|
* permanently-uncovered branch to every function it appears in, and the
|
|
17
17
|
* per-module coverage floors in `scripts/check-coverage-thresholds.mjs`
|
|
18
18
|
* would pay for it in ~40 places. Routed through a call, the branch lives
|
|
@@ -46,27 +46,10 @@ export function assert(condition, message) {
|
|
|
46
46
|
throw new InternalInvariantError(resolveMessage(message));
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
-
/**
|
|
50
|
-
* Asserts that a value is neither `null` nor `undefined`, narrowing it in
|
|
51
|
-
* place for the statements that follow.
|
|
52
|
-
*
|
|
53
|
-
* Use this in statement position, where the value is already bound to a
|
|
54
|
-
* name. Use {@link expectDefined} in expression position, where it is not.
|
|
55
|
-
*
|
|
56
|
-
* @param value - The value that should be present
|
|
57
|
-
* @param message - What was supposed to be present, and why
|
|
58
|
-
* @throws {@link InternalInvariantError} when `value` is `null` or `undefined`.
|
|
59
|
-
*/
|
|
60
|
-
export function assertDefined(value, message) {
|
|
61
|
-
if (value === null || value === undefined) {
|
|
62
|
-
throw new InternalInvariantError(resolveMessage(message));
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
49
|
/**
|
|
66
50
|
* Returns a value that must be present, throwing if it is not.
|
|
67
51
|
*
|
|
68
|
-
*
|
|
69
|
-
* and returns in one step, so an indexed read can be asserted inline
|
|
52
|
+
* Checks and returns in one step, so an indexed read can be asserted inline
|
|
70
53
|
* (`push({ content: expectDefined(lines[k], …) })`) without first binding
|
|
71
54
|
* it to a local.
|
|
72
55
|
*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/** Source identity of the running build. */
|
|
2
|
-
|
|
2
|
+
interface BuildIdentity {
|
|
3
3
|
shortCommit: string;
|
|
4
4
|
dirty: boolean;
|
|
5
5
|
/**
|
|
6
|
-
* Content hash of the uncommitted diff, present only for a
|
|
6
|
+
* Content hash of the uncommitted diff, present only for a dirty installed
|
|
7
7
|
* build. Two packs from the same HEAD with different uncommitted content
|
|
8
8
|
* share `shortCommit` and the `.dirty` marker, so without this they report
|
|
9
9
|
* byte-identical `--version` strings and a report against
|
|
@@ -13,15 +13,15 @@ export interface BuildIdentity {
|
|
|
13
13
|
*/
|
|
14
14
|
dirtyHash?: string;
|
|
15
15
|
}
|
|
16
|
-
/** @internal Reads the stamped dist/build-info.json
|
|
16
|
+
/** @internal Reads the stamped dist/build-info.json. Null when absent/invalid. */
|
|
17
17
|
export declare function readBuildInfoFile(packageRoot: string): BuildIdentity | null;
|
|
18
18
|
type GitRunner = (args: string[]) => string;
|
|
19
|
-
/** @internal Live git identity of the checkout
|
|
19
|
+
/** @internal Live git identity of the checkout. Null when git is unusable. */
|
|
20
20
|
export declare function readGitBuildIdentity(runGit?: GitRunner): BuildIdentity | null;
|
|
21
21
|
/**
|
|
22
|
-
* @internal Formats `<version>+g<sha>[.dirty[.<hash>]]
|
|
22
|
+
* @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`. Plain version on
|
|
23
23
|
* null identity. The trailing content hash appears only for a dirty
|
|
24
|
-
*
|
|
24
|
+
* installed build, where `dist/build-info.json` already carries it. Every
|
|
25
25
|
* segment stays valid semver build metadata (dot-separated alphanumerics).
|
|
26
26
|
*/
|
|
27
27
|
export declare function formatVersionWithIdentity(version: string, identity: BuildIdentity | null): string;
|
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
* fingerprinting tarballs by sha256 to know which build a claim was verified
|
|
7
7
|
* against. `--version` reports `<semver>+g<short-sha>[.dirty[.<content-hash>]]`:
|
|
8
8
|
*
|
|
9
|
-
* - In a git checkout (dev runs via tsx), identity comes from live git
|
|
9
|
+
* - In a git checkout (dev runs via tsx), identity comes from live git, so a
|
|
10
10
|
* stale `dist/build-info.json` from an old build must never win.
|
|
11
11
|
* - In an installed package, it comes from `dist/build-info.json`, stamped
|
|
12
12
|
* by scripts/generate-build-info.mjs at build/pack time.
|
|
13
13
|
* - When neither yields an identity, `--version` degrades to the plain
|
|
14
14
|
* semver. Reading identity must never throw.
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* Not wired into the per-patch lint cache key: identity would
|
|
17
17
|
* churn the cache on every commit at the same semver for no correctness gain
|
|
18
18
|
* (`getPackageVersion` stays the cache input).
|
|
19
19
|
*/
|
|
@@ -22,7 +22,7 @@ import { existsSync, readFileSync } from 'node:fs';
|
|
|
22
22
|
import { join } from 'node:path';
|
|
23
23
|
import { getPackageRoot, getPackageVersion } from './package-root.js';
|
|
24
24
|
import { isObject } from './validation.js';
|
|
25
|
-
/** @internal Reads the stamped dist/build-info.json
|
|
25
|
+
/** @internal Reads the stamped dist/build-info.json. Null when absent/invalid. */
|
|
26
26
|
export function readBuildInfoFile(packageRoot) {
|
|
27
27
|
try {
|
|
28
28
|
const raw = readFileSync(join(packageRoot, 'dist', 'build-info.json'), 'utf-8');
|
|
@@ -49,7 +49,7 @@ const defaultGitRunner = (args) => execFileSync('git', args, {
|
|
|
49
49
|
encoding: 'utf-8',
|
|
50
50
|
stdio: ['ignore', 'pipe', 'ignore'],
|
|
51
51
|
});
|
|
52
|
-
/** @internal Live git identity of the checkout
|
|
52
|
+
/** @internal Live git identity of the checkout. Null when git is unusable. */
|
|
53
53
|
export function readGitBuildIdentity(runGit = defaultGitRunner) {
|
|
54
54
|
try {
|
|
55
55
|
const commit = runGit(['rev-parse', 'HEAD']).trim();
|
|
@@ -80,9 +80,9 @@ function getBuildIdentity() {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
|
-
* @internal Formats `<version>+g<sha>[.dirty[.<hash>]]
|
|
83
|
+
* @internal Formats `<version>+g<sha>[.dirty[.<hash>]]`. Plain version on
|
|
84
84
|
* null identity. The trailing content hash appears only for a dirty
|
|
85
|
-
*
|
|
85
|
+
* installed build, where `dist/build-info.json` already carries it. Every
|
|
86
86
|
* segment stays valid semver build metadata (dot-separated alphanumerics).
|
|
87
87
|
*/
|
|
88
88
|
export function formatVersionWithIdentity(version, identity) {
|