@hominis/fireforge 0.49.2 → 0.51.0
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 +87 -1
- package/README.md +1 -1
- package/dist/bin/fireforge.js +6 -0
- package/dist/build-info.json +4 -4
- package/dist/src/commands/build-prelock.d.ts +20 -0
- package/dist/src/commands/build-prelock.js +50 -0
- package/dist/src/commands/build.d.ts +3 -1
- package/dist/src/commands/build.js +13 -6
- package/dist/src/commands/check-report.d.ts +41 -0
- package/dist/src/commands/check-report.js +91 -0
- package/dist/src/commands/check-run.d.ts +33 -0
- package/dist/src/commands/check-run.js +112 -0
- package/dist/src/commands/check-steps.d.ts +75 -0
- package/dist/src/commands/check-steps.js +200 -0
- package/dist/src/commands/check.d.ts +32 -0
- package/dist/src/commands/check.js +160 -0
- package/dist/src/commands/config.js +5 -6
- package/dist/src/commands/declarations-report.d.ts +43 -0
- package/dist/src/commands/declarations-report.js +76 -0
- package/dist/src/commands/doctor-engine-eslint.js +6 -1
- package/dist/src/commands/doctor-source-pin.js +4 -1
- package/dist/src/commands/export-adopt-check.d.ts +38 -0
- package/dist/src/commands/export-adopt-check.js +98 -0
- package/dist/src/commands/export-flow.js +29 -14
- package/dist/src/commands/export-placement-gate.d.ts +6 -2
- package/dist/src/commands/export-placement-gate.js +8 -0
- package/dist/src/commands/export-shared.d.ts +2 -1
- package/dist/src/commands/export-staged-registration.d.ts +46 -0
- package/dist/src/commands/export-staged-registration.js +91 -0
- package/dist/src/commands/forward-import-remedy.d.ts +32 -0
- package/dist/src/commands/forward-import-remedy.js +63 -0
- package/dist/src/commands/furnace/apply.js +3 -3
- package/dist/src/commands/furnace/chrome-doc-remove.d.ts +2 -1
- package/dist/src/commands/furnace/chrome-doc-remove.js +2 -2
- package/dist/src/commands/furnace/chrome-doc.d.ts +2 -1
- package/dist/src/commands/furnace/chrome-doc.js +2 -2
- package/dist/src/commands/furnace/create.js +2 -2
- package/dist/src/commands/furnace/deploy-named.d.ts +48 -0
- package/dist/src/commands/furnace/deploy-named.js +107 -0
- package/dist/src/commands/furnace/deploy.d.ts +3 -2
- package/dist/src/commands/furnace/deploy.js +50 -86
- package/dist/src/commands/furnace/diff.js +26 -3
- package/dist/src/commands/furnace/index.js +66 -41
- package/dist/src/commands/furnace/init.js +13 -6
- package/dist/src/commands/furnace/override.js +4 -2
- package/dist/src/commands/furnace/preview.js +4 -3
- package/dist/src/commands/furnace/refresh.js +2 -2
- package/dist/src/commands/furnace/remove.js +4 -3
- package/dist/src/commands/furnace/rename-dry-run.d.ts +29 -0
- package/dist/src/commands/furnace/rename-dry-run.js +127 -0
- package/dist/src/commands/furnace/rename-helpers.d.ts +7 -0
- package/dist/src/commands/furnace/rename-helpers.js +15 -1
- package/dist/src/commands/furnace/rename-registrations.d.ts +41 -0
- package/dist/src/commands/furnace/rename-registrations.js +98 -0
- package/dist/src/commands/furnace/rename.d.ts +2 -1
- package/dist/src/commands/furnace/rename.js +28 -66
- package/dist/src/commands/furnace/scan.d.ts +9 -4
- package/dist/src/commands/furnace/scan.js +11 -9
- package/dist/src/commands/furnace/sync.js +3 -2
- package/dist/src/commands/furnace/validate-report.d.ts +45 -0
- package/dist/src/commands/furnace/validate-report.js +91 -0
- package/dist/src/commands/furnace/validate.d.ts +1 -1
- package/dist/src/commands/furnace/validate.js +151 -113
- package/dist/src/commands/furnace/validation-output.js +14 -3
- package/dist/src/commands/lint-per-patch.js +36 -61
- package/dist/src/commands/lint-per-run-checkjs.js +2 -2
- package/dist/src/commands/lint-report.d.ts +8 -4
- package/dist/src/commands/lint-report.js +20 -5
- package/dist/src/commands/lint.js +15 -34
- package/dist/src/commands/manifest.js +4 -0
- package/dist/src/commands/park.d.ts +22 -0
- package/dist/src/commands/park.js +232 -0
- package/dist/src/commands/patch/delete-gap-notice.js +3 -1
- package/dist/src/commands/patch/delete.d.ts +1 -1
- package/dist/src/commands/patch/delete.js +24 -104
- package/dist/src/commands/patch/index.d.ts +3 -3
- package/dist/src/commands/patch/index.js +10 -4
- package/dist/src/commands/patch/lint-ignore-from.d.ts +44 -0
- package/dist/src/commands/patch/lint-ignore-from.js +142 -0
- package/dist/src/commands/patch/lint-ignore.d.ts +5 -1
- package/dist/src/commands/patch/lint-ignore.js +78 -31
- package/dist/src/commands/patch/move-files-create.js +34 -18
- package/dist/src/commands/patch/move-files-into.js +15 -7
- package/dist/src/commands/patch/move-files.js +6 -2
- package/dist/src/commands/patch/removal-created-files.d.ts +48 -0
- package/dist/src/commands/patch/removal-created-files.js +83 -0
- package/dist/src/commands/patch/removal-dependents.d.ts +63 -0
- package/dist/src/commands/patch/removal-dependents.js +133 -0
- package/dist/src/commands/patch/rename.js +20 -1
- package/dist/src/commands/patch/reserve.d.ts +33 -0
- package/dist/src/commands/patch/reserve.js +152 -0
- package/dist/src/commands/patch/retire.d.ts +34 -0
- package/dist/src/commands/patch/retire.js +133 -0
- package/dist/src/commands/patch/split-plan.d.ts +17 -8
- package/dist/src/commands/patch/split-plan.js +60 -28
- package/dist/src/commands/patch/split-staged.d.ts +108 -0
- package/dist/src/commands/patch/split-staged.js +202 -0
- package/dist/src/commands/patch/split.d.ts +5 -0
- package/dist/src/commands/patch/split.js +62 -17
- package/dist/src/commands/patch/stage.d.ts +34 -0
- package/dist/src/commands/patch/stage.js +153 -0
- package/dist/src/commands/patch/staged-dependency-batch.d.ts +48 -0
- package/dist/src/commands/patch/staged-dependency-batch.js +176 -0
- package/dist/src/commands/patch/staged-dependency-entries.d.ts +36 -0
- package/dist/src/commands/patch/staged-dependency-entries.js +52 -0
- package/dist/src/commands/patch/staged-dependency-from.d.ts +14 -0
- package/dist/src/commands/patch/staged-dependency-from.js +108 -0
- package/dist/src/commands/patch/staged-dependency-remove.d.ts +31 -0
- package/dist/src/commands/patch/staged-dependency-remove.js +80 -0
- package/dist/src/commands/patch/staged-dependency.js +54 -139
- package/dist/src/commands/re-export-adjacent-registrations.d.ts +20 -0
- package/dist/src/commands/re-export-adjacent-registrations.js +75 -0
- package/dist/src/commands/re-export-adjacent.d.ts +50 -2
- package/dist/src/commands/re-export-adjacent.js +160 -40
- package/dist/src/commands/re-export-bulk-scan.d.ts +2 -1
- package/dist/src/commands/re-export-bulk-scan.js +22 -7
- package/dist/src/commands/re-export-drift.d.ts +36 -8
- package/dist/src/commands/re-export-drift.js +73 -49
- package/dist/src/commands/re-export-files.js +11 -8
- package/dist/src/commands/re-export-hunks.d.ts +35 -0
- package/dist/src/commands/re-export-hunks.js +220 -0
- package/dist/src/commands/re-export-lint.d.ts +2 -1
- package/dist/src/commands/re-export-lint.js +23 -10
- package/dist/src/commands/re-export-options.js +74 -6
- package/dist/src/commands/re-export-preflight.d.ts +23 -0
- package/dist/src/commands/re-export-preflight.js +160 -0
- package/dist/src/commands/re-export-purity-scope.d.ts +18 -0
- package/dist/src/commands/re-export-purity-scope.js +131 -0
- package/dist/src/commands/re-export-register.js +56 -17
- package/dist/src/commands/re-export-removed.d.ts +13 -2
- package/dist/src/commands/re-export-removed.js +57 -12
- package/dist/src/commands/re-export-scan-owner.d.ts +44 -0
- package/dist/src/commands/re-export-scan-owner.js +116 -0
- package/dist/src/commands/re-export-scan.d.ts +19 -9
- package/dist/src/commands/re-export-scan.js +60 -24
- package/dist/src/commands/re-export-single.js +122 -46
- package/dist/src/commands/re-export-stale-registrations.d.ts +18 -0
- package/dist/src/commands/re-export-stale-registrations.js +62 -0
- package/dist/src/commands/re-export-summary.d.ts +28 -0
- package/dist/src/commands/re-export-summary.js +36 -0
- package/dist/src/commands/re-export.js +71 -57
- package/dist/src/commands/rebase/index.js +17 -17
- package/dist/src/commands/run.js +16 -2
- package/dist/src/commands/status-check.d.ts +55 -16
- package/dist/src/commands/status-check.js +92 -37
- package/dist/src/commands/status-json.d.ts +22 -9
- package/dist/src/commands/status-json.js +47 -32
- package/dist/src/commands/status-output.js +3 -1
- package/dist/src/commands/status-scope.d.ts +37 -0
- package/dist/src/commands/status-scope.js +54 -0
- package/dist/src/commands/status.js +66 -23
- package/dist/src/commands/test-browser-preflight.js +19 -3
- package/dist/src/commands/test-build-furnace.d.ts +22 -0
- package/dist/src/commands/test-build-furnace.js +54 -0
- package/dist/src/commands/test-build-phase.js +64 -41
- package/dist/src/commands/test-checkjs.js +10 -2
- package/dist/src/commands/test-diagnose.js +7 -0
- package/dist/src/commands/test-dispatch.d.ts +39 -0
- package/dist/src/commands/test-dispatch.js +211 -0
- package/dist/src/commands/test-furnace-reach.d.ts +37 -0
- package/dist/src/commands/test-furnace-reach.js +132 -0
- package/dist/src/commands/test-modes.d.ts +16 -1
- package/dist/src/commands/test-modes.js +24 -1
- package/dist/src/commands/test-multi-verdict.d.ts +61 -0
- package/dist/src/commands/test-multi-verdict.js +111 -0
- package/dist/src/commands/test-orchestrate.d.ts +52 -0
- package/dist/src/commands/test-orchestrate.js +240 -0
- package/dist/src/commands/test-perf-scope.d.ts +50 -0
- package/dist/src/commands/test-perf-scope.js +138 -0
- package/dist/src/commands/test-prelock.d.ts +51 -0
- package/dist/src/commands/test-prelock.js +273 -0
- package/dist/src/commands/test-register.js +69 -10
- package/dist/src/commands/test-results.d.ts +62 -0
- package/dist/src/commands/test-results.js +62 -0
- package/dist/src/commands/test-run.d.ts +13 -55
- package/dist/src/commands/test-run.js +74 -99
- package/dist/src/commands/test-shards.d.ts +110 -0
- package/dist/src/commands/test-shards.js +255 -0
- package/dist/src/commands/test-stale-gate.d.ts +5 -1
- package/dist/src/commands/test-stale-gate.js +60 -28
- package/dist/src/commands/test-verdict.d.ts +11 -1
- package/dist/src/commands/test-verdict.js +28 -1
- package/dist/src/commands/test.d.ts +6 -1
- package/dist/src/commands/test.js +120 -124
- package/dist/src/commands/token-lint.d.ts +14 -0
- package/dist/src/commands/token-lint.js +151 -0
- package/dist/src/commands/token.js +10 -0
- package/dist/src/commands/verify-scope.d.ts +28 -0
- package/dist/src/commands/verify-scope.js +67 -0
- package/dist/src/commands/verify.d.ts +10 -2
- package/dist/src/commands/verify.js +67 -36
- package/dist/src/core/build-baseline-types.d.ts +46 -0
- package/dist/src/core/build-baseline-validate.js +19 -0
- package/dist/src/core/build-baseline.d.ts +5 -1
- package/dist/src/core/build-baseline.js +3 -1
- package/dist/src/core/build-overwrite-guard.d.ts +50 -0
- package/dist/src/core/build-overwrite-guard.js +84 -4
- package/dist/src/core/build-prepare.d.ts +13 -0
- package/dist/src/core/build-prepare.js +42 -10
- package/dist/src/core/build-run-record.d.ts +74 -0
- package/dist/src/core/build-run-record.js +136 -0
- package/dist/src/core/checkjs-support-heads.d.ts +41 -0
- package/dist/src/core/checkjs-support-heads.js +104 -0
- package/dist/src/core/config-paths.d.ts +2 -2
- package/dist/src/core/config-paths.js +10 -0
- package/dist/src/core/config-validate-check.d.ts +8 -0
- package/dist/src/core/config-validate-check.js +219 -0
- package/dist/src/core/config-validate-file-size.d.ts +9 -6
- package/dist/src/core/config-validate-file-size.js +91 -2
- package/dist/src/core/config-validate-history.d.ts +11 -0
- package/dist/src/core/config-validate-history.js +38 -0
- package/dist/src/core/config-validate-patch-policy.js +100 -0
- package/dist/src/core/config-validate-test-toolchains.js +21 -0
- package/dist/src/core/config-validate-token-scales.d.ts +9 -0
- package/dist/src/core/config-validate-token-scales.js +92 -0
- package/dist/src/core/config-validate.js +20 -5
- package/dist/src/core/config.d.ts +5 -0
- package/dist/src/core/config.js +16 -0
- package/dist/src/core/coverage-dispatch.d.ts +24 -0
- package/dist/src/core/coverage-dispatch.js +44 -0
- package/dist/src/core/coverage-extend.d.ts +70 -45
- package/dist/src/core/coverage-extend.js +199 -144
- package/dist/src/core/coverage-records.d.ts +108 -0
- package/dist/src/core/coverage-records.js +384 -0
- package/dist/src/core/destructive.d.ts +7 -4
- package/dist/src/core/destructive.js +10 -10
- package/dist/src/core/engine-session-lock.d.ts +16 -1
- package/dist/src/core/engine-session-lock.js +38 -10
- package/dist/src/core/export-moved-code-shape.d.ts +49 -11
- package/dist/src/core/export-moved-code-shape.js +135 -44
- package/dist/src/core/file-lock-queue.d.ts +67 -0
- package/dist/src/core/file-lock-queue.js +221 -0
- package/dist/src/core/file-lock-shared.d.ts +57 -0
- package/dist/src/core/file-lock-shared.js +117 -0
- package/dist/src/core/file-lock.d.ts +13 -25
- package/dist/src/core/file-lock.js +163 -140
- package/dist/src/core/furnace-apply-output.d.ts +10 -0
- package/dist/src/core/furnace-apply-output.js +31 -1
- package/dist/src/core/furnace-apply.js +22 -12
- package/dist/src/core/furnace-composed-source.d.ts +76 -0
- package/dist/src/core/furnace-composed-source.js +167 -0
- package/dist/src/core/furnace-config-validate-exceptions.d.ts +16 -0
- package/dist/src/core/furnace-config-validate-exceptions.js +102 -0
- package/dist/src/core/furnace-config-validate.js +14 -0
- package/dist/src/core/furnace-css-fragments.d.ts +10 -0
- package/dist/src/core/furnace-css-fragments.js +26 -0
- package/dist/src/core/furnace-operation.d.ts +3 -3
- package/dist/src/core/furnace-registration-jar-inplace.d.ts +12 -0
- package/dist/src/core/furnace-registration-jar-inplace.js +80 -0
- package/dist/src/core/furnace-registration-remove.d.ts +22 -1
- package/dist/src/core/furnace-registration-remove.js +53 -17
- package/dist/src/core/furnace-registration-rename.d.ts +26 -0
- package/dist/src/core/furnace-registration-rename.js +77 -0
- package/dist/src/core/furnace-registration.d.ts +14 -4
- package/dist/src/core/furnace-registration.js +44 -10
- package/dist/src/core/furnace-staleness.d.ts +7 -0
- package/dist/src/core/furnace-staleness.js +34 -24
- package/dist/src/core/furnace-validate-accessibility.d.ts +8 -4
- package/dist/src/core/furnace-validate-accessibility.js +71 -28
- package/dist/src/core/furnace-validate-exceptions.d.ts +48 -0
- package/dist/src/core/furnace-validate-exceptions.js +80 -0
- package/dist/src/core/furnace-validate-icon-button.d.ts +7 -0
- package/dist/src/core/furnace-validate-icon-button.js +78 -0
- package/dist/src/core/furnace-validate.js +1 -1
- package/dist/src/core/harness-port-fallback.d.ts +60 -0
- package/dist/src/core/harness-port-fallback.js +96 -0
- package/dist/src/core/history-log-file.d.ts +61 -0
- package/dist/src/core/history-log-file.js +164 -0
- package/dist/src/core/history-log.d.ts +2 -1
- package/dist/src/core/history-log.js +2 -1
- package/dist/src/core/json-preserving-edit.d.ts +22 -0
- package/dist/src/core/json-preserving-edit.js +199 -0
- package/dist/src/core/line-prefixer.d.ts +18 -0
- package/dist/src/core/line-prefixer.js +34 -0
- package/dist/src/core/mach.d.ts +7 -0
- package/dist/src/core/mach.js +32 -10
- package/dist/src/core/module-resolution-preflight.d.ts +19 -3
- package/dist/src/core/module-resolution-preflight.js +24 -6
- package/dist/src/core/negative-control-compiled.d.ts +27 -0
- package/dist/src/core/negative-control-compiled.js +73 -0
- package/dist/src/core/negative-control-diff.d.ts +51 -0
- package/dist/src/core/negative-control-diff.js +179 -0
- package/dist/src/core/negative-control.d.ts +150 -0
- package/dist/src/core/negative-control.js +399 -0
- package/dist/src/core/objdir-install-manifests.d.ts +73 -0
- package/dist/src/core/objdir-install-manifests.js +226 -0
- package/dist/src/core/park-store.d.ts +63 -0
- package/dist/src/core/park-store.js +216 -0
- package/dist/src/core/patch-export-update.d.ts +6 -0
- package/dist/src/core/patch-export-update.js +13 -3
- package/dist/src/core/patch-export.d.ts +3 -2
- package/dist/src/core/patch-export.js +22 -16
- package/dist/src/core/patch-files.js +26 -8
- package/dist/src/core/patch-lint-checkjs-any-import.d.ts +39 -0
- package/dist/src/core/patch-lint-checkjs-any-import.js +63 -0
- package/dist/src/core/patch-lint-checkjs-diagnostics.d.ts +17 -0
- package/dist/src/core/patch-lint-checkjs-diagnostics.js +32 -0
- package/dist/src/core/patch-lint-checkjs.d.ts +10 -1
- package/dist/src/core/patch-lint-checkjs.js +20 -13
- package/dist/src/core/patch-lint-code-lines.d.ts +59 -0
- package/dist/src/core/patch-lint-code-lines.js +105 -0
- package/dist/src/core/patch-lint-cross.d.ts +3 -1
- package/dist/src/core/patch-lint-cross.js +17 -4
- package/dist/src/core/patch-lint-css.d.ts +8 -2
- package/dist/src/core/patch-lint-css.js +24 -14
- package/dist/src/core/patch-lint-file-size.d.ts +12 -5
- package/dist/src/core/patch-lint-file-size.js +22 -11
- package/dist/src/core/patch-lint-forward-registration-extended.d.ts +23 -0
- package/dist/src/core/patch-lint-forward-registration-extended.js +36 -11
- package/dist/src/core/patch-lint-forward-registration.js +10 -0
- package/dist/src/core/patch-lint-ignore.d.ts +196 -0
- package/dist/src/core/patch-lint-ignore.js +429 -0
- package/dist/src/core/patch-lint-ownership.d.ts +10 -0
- package/dist/src/core/patch-lint-ownership.js +26 -0
- package/dist/src/core/patch-lint-size-thresholds.d.ts +52 -0
- package/dist/src/core/patch-lint-size-thresholds.js +110 -0
- package/dist/src/core/patch-lint-size.d.ts +117 -0
- package/dist/src/core/patch-lint-size.js +331 -0
- package/dist/src/core/patch-lint-staged-registration.d.ts +18 -1
- package/dist/src/core/patch-lint-staged-registration.js +20 -0
- package/dist/src/core/patch-lint-token-scale.d.ts +57 -0
- package/dist/src/core/patch-lint-token-scale.js +286 -0
- package/dist/src/core/patch-lint.d.ts +11 -83
- package/dist/src/core/patch-lint.js +66 -288
- package/dist/src/core/patch-lock.js +7 -6
- package/dist/src/core/patch-manifest-consistency.js +7 -6
- package/dist/src/core/patch-manifest-io.d.ts +6 -3
- package/dist/src/core/patch-manifest-io.js +27 -9
- package/dist/src/core/patch-manifest-key-order.d.ts +24 -0
- package/dist/src/core/patch-manifest-key-order.js +61 -0
- package/dist/src/core/patch-manifest-stage.d.ts +46 -0
- package/dist/src/core/patch-manifest-stage.js +96 -0
- package/dist/src/core/patch-manifest-validate.js +61 -3
- package/dist/src/core/patch-order-legal.d.ts +26 -0
- package/dist/src/core/patch-order-legal.js +88 -0
- package/dist/src/core/patch-policy-content.d.ts +40 -0
- package/dist/src/core/patch-policy-content.js +216 -0
- package/dist/src/core/patch-policy.d.ts +22 -5
- package/dist/src/core/patch-policy.js +26 -12
- package/dist/src/core/patch-retired.d.ts +57 -0
- package/dist/src/core/patch-retired.js +92 -0
- package/dist/src/core/patch-subset.d.ts +16 -0
- package/dist/src/core/patch-subset.js +66 -0
- package/dist/src/core/preflight-wait.d.ts +20 -0
- package/dist/src/core/preflight-wait.js +38 -0
- package/dist/src/core/rebase-from-version.d.ts +46 -0
- package/dist/src/core/rebase-from-version.js +71 -0
- package/dist/src/core/run-log.d.ts +26 -0
- package/dist/src/core/run-log.js +106 -4
- package/dist/src/core/run-profile.d.ts +7 -0
- package/dist/src/core/run-profile.js +7 -1
- package/dist/src/core/smoke-patterns.d.ts +5 -0
- package/dist/src/core/smoke-patterns.js +13 -0
- package/dist/src/core/test-harness-crash.d.ts +19 -1
- package/dist/src/core/test-harness-crash.js +8 -9
- package/dist/src/core/test-harness-signature.d.ts +33 -0
- package/dist/src/core/test-harness-signature.js +23 -1
- package/dist/src/core/test-raw-log.d.ts +66 -0
- package/dist/src/core/test-raw-log.js +122 -0
- package/dist/src/core/test-run-completeness.d.ts +90 -0
- package/dist/src/core/test-run-completeness.js +184 -0
- package/dist/src/core/test-stale-check.d.ts +27 -1
- package/dist/src/core/test-stale-check.js +39 -49
- package/dist/src/core/test-stale-exempt.d.ts +40 -0
- package/dist/src/core/test-stale-exempt.js +70 -0
- package/dist/src/core/test-xpcshell-retry.d.ts +2 -0
- package/dist/src/core/test-xpcshell-retry.js +2 -1
- package/dist/src/core/token-lint.d.ts +53 -0
- package/dist/src/core/token-lint.js +131 -0
- package/dist/src/core/token-sibling-sheets.d.ts +46 -0
- package/dist/src/core/token-sibling-sheets.js +119 -0
- package/dist/src/core/tree-guard.js +5 -0
- package/dist/src/core/typecheck-shim.d.ts +6 -2
- package/dist/src/core/typecheck-shim.js +205 -4
- package/dist/src/core/typecheck.js +3 -1
- package/dist/src/index.d.ts +14 -3
- package/dist/src/index.js +6 -1
- package/dist/src/types/commands/index.d.ts +2 -2
- package/dist/src/types/commands/options.d.ts +212 -24
- package/dist/src/types/commands/patches.d.ts +118 -1
- package/dist/src/types/config.d.ts +264 -0
- package/dist/src/types/config.js +9 -0
- package/dist/src/types/furnace.d.ts +63 -1
- package/dist/src/types/furnace.js +7 -0
- package/dist/src/types/index.d.ts +1 -1
- package/dist/src/utils/options.d.ts +36 -7
- package/dist/src/utils/options.js +94 -8
- package/dist/src/utils/path-glob.d.ts +15 -0
- package/dist/src/utils/path-glob.js +47 -0
- package/dist/src/utils/regex.d.ts +15 -3
- package/dist/src/utils/regex.js +37 -16
- package/docs/configuration.md +369 -11
- package/docs/exit-codes.md +18 -1
- package/docs/furnace.md +139 -3
- package/docs/lifecycle-invariants.md +65 -30
- package/docs/machine-output.md +120 -12
- package/docs/patch-workflow.md +458 -22
- package/docs/run-logs.md +20 -1
- package/docs/testing.md +346 -21
- package/package.json +3 -3
|
@@ -54,6 +54,37 @@ export interface TestConfig {
|
|
|
54
54
|
* verdict line. `--reap-orphans` is the per-invocation equivalent.
|
|
55
55
|
*/
|
|
56
56
|
reapOrphans?: 'report' | 'reap';
|
|
57
|
+
/**
|
|
58
|
+
* `fixed` (the default) refuses a browser run while the mochitest server
|
|
59
|
+
* or Marionette port is held. `auto` lets a run proceed when the holder is
|
|
60
|
+
* not this checkout's own and the engine's mochitest harness can fall back
|
|
61
|
+
* to a free port itself, so sibling checkouts can run browser suites at
|
|
62
|
+
* once. `--auto-ports` is the per-invocation equivalent.
|
|
63
|
+
*/
|
|
64
|
+
mochitestPorts?: 'fixed' | 'auto';
|
|
65
|
+
/**
|
|
66
|
+
* `exclusive` (the default): every `fireforge test` holds the engine
|
|
67
|
+
* session lock alone. `shared`: a build-less run with auto ports holds it
|
|
68
|
+
* shared, so peers' build-less runs on the same objdir overlap while
|
|
69
|
+
* builds and re-exports still wait. `--shared-lock` is the per-invocation
|
|
70
|
+
* equivalent.
|
|
71
|
+
*/
|
|
72
|
+
lockMode?: 'exclusive' | 'shared';
|
|
73
|
+
/**
|
|
74
|
+
* Which components `test --build` deploys before building: `all` (the
|
|
75
|
+
* default) every component with undeployed edits, `reached` only those a
|
|
76
|
+
* requested test reaches, `none` nothing. `--furnace-apply` is the
|
|
77
|
+
* per-invocation equivalent.
|
|
78
|
+
*/
|
|
79
|
+
furnaceApply?: 'all' | 'reached' | 'none';
|
|
80
|
+
}
|
|
81
|
+
/** Patch history log settings stored in fireforge.json. */
|
|
82
|
+
export interface HistoryConfig {
|
|
83
|
+
/**
|
|
84
|
+
* Project-relative path of the append-only patch history log. Defaults to
|
|
85
|
+
* `.fireforge/history.jsonl`, outside the tracked patch queue.
|
|
86
|
+
*/
|
|
87
|
+
path?: string;
|
|
57
88
|
}
|
|
58
89
|
/** A single external executable required by a project-specific toolchain. */
|
|
59
90
|
export interface ExternalToolRequirement {
|
|
@@ -104,6 +135,35 @@ export interface PatchPolicyReservedRange {
|
|
|
104
135
|
/** Exact patch exceptions allowed in this reserved range. */
|
|
105
136
|
allowed: PatchPolicyReservedAllowedPatch[];
|
|
106
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* One `patchPolicy.upstreamAllowlist` entry in object form. The string form
|
|
140
|
+
* is shorthand for `{ path }`.
|
|
141
|
+
*/
|
|
142
|
+
export interface PatchPolicyUpstreamAllowEntry {
|
|
143
|
+
/** Engine-relative path glob (`*` within a segment, `**` across segments). */
|
|
144
|
+
path: string;
|
|
145
|
+
/**
|
|
146
|
+
* Registration-only mode: a patch may only add lines to a matching file
|
|
147
|
+
* (no removals, no deletion), and every non-blank added line must carry
|
|
148
|
+
* `marker` (or `patchPolicy.addOnlyMarker`), case-insensitively.
|
|
149
|
+
*/
|
|
150
|
+
addOnly?: boolean;
|
|
151
|
+
/** Marker an added line must contain. Overrides `patchPolicy.addOnlyMarker`. */
|
|
152
|
+
marker?: string;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Limits the files a class of patch may touch, e.g. a `-tests` patch to test
|
|
156
|
+
* directories and test manifests. A rule applies to a patch when every
|
|
157
|
+
* selector it sets matches. At least one selector is required.
|
|
158
|
+
*/
|
|
159
|
+
export interface PatchPolicyScopeRule {
|
|
160
|
+
/** Applies to patches in this category. */
|
|
161
|
+
category?: string;
|
|
162
|
+
/** Applies to patches whose filename matches this regular expression. */
|
|
163
|
+
filenamePattern?: string;
|
|
164
|
+
/** Engine-relative path globs every file the patch touches must match. */
|
|
165
|
+
files: string[];
|
|
166
|
+
}
|
|
107
167
|
/**
|
|
108
168
|
* Optional project-specific patch queue policy. When absent, FireForge keeps
|
|
109
169
|
* its historical broad category + numeric ordering behaviour.
|
|
@@ -121,6 +181,21 @@ export interface PatchPolicyConfig {
|
|
|
121
181
|
ranges: PatchPolicyRange[];
|
|
122
182
|
/** Reserved exception ranges. */
|
|
123
183
|
reservedRanges?: PatchPolicyReservedRange[];
|
|
184
|
+
/**
|
|
185
|
+
* Globs naming the upstream files a non-reserved patch may modify. A file
|
|
186
|
+
* counts as upstream when no patch in the queue creates it. Unset: no
|
|
187
|
+
* restriction.
|
|
188
|
+
*/
|
|
189
|
+
upstreamAllowlist?: Array<string | PatchPolicyUpstreamAllowEntry>;
|
|
190
|
+
/** Default marker for `addOnly` allowlist entries that set none. */
|
|
191
|
+
addOnlyMarker?: string;
|
|
192
|
+
/** File-scope rules per patch class (category and/or filename pattern). */
|
|
193
|
+
scopeRules?: PatchPolicyScopeRule[];
|
|
194
|
+
/**
|
|
195
|
+
* Require every reserved allowlist entry's `adr` and `documentation` path
|
|
196
|
+
* to exist under the project root. Default false.
|
|
197
|
+
*/
|
|
198
|
+
verifyDocumentPaths?: boolean;
|
|
124
199
|
}
|
|
125
200
|
/**
|
|
126
201
|
* Main fireforge.json configuration schema.
|
|
@@ -142,6 +217,8 @@ export interface FireForgeConfig {
|
|
|
142
217
|
buildAudit?: BuildAuditConfig;
|
|
143
218
|
/** Test command defaults */
|
|
144
219
|
test?: TestConfig;
|
|
220
|
+
/** Patch history log settings */
|
|
221
|
+
history?: HistoryConfig;
|
|
145
222
|
/** Optional project-specific external toolchains checked by doctor. */
|
|
146
223
|
externalToolchains?: ExternalToolchainConfig[];
|
|
147
224
|
/** Project license SPDX identifier */
|
|
@@ -154,6 +231,8 @@ export interface FireForgeConfig {
|
|
|
154
231
|
patchPolicy?: PatchPolicyConfig;
|
|
155
232
|
/** Typecheck command configuration (CI-grade, whole-project) */
|
|
156
233
|
typecheck?: TypecheckConfig;
|
|
234
|
+
/** `fireforge check`: the composed static gate's policy and project steps */
|
|
235
|
+
check?: CheckConfig;
|
|
157
236
|
/**
|
|
158
237
|
* Project marker prefix appended to lines FireForge writes into
|
|
159
238
|
* upstream Firefox source files (e.g. the `customElements.js` tag list).
|
|
@@ -162,6 +241,67 @@ export interface FireForgeConfig {
|
|
|
162
241
|
*/
|
|
163
242
|
markerComment?: string;
|
|
164
243
|
}
|
|
244
|
+
/** The built-in steps of `fireforge check`, in table order. */
|
|
245
|
+
export declare const CHECK_BUILTIN_STEPS: readonly ["status", "verify", "lint", "typecheck", "furnace-validate", "token-coverage"];
|
|
246
|
+
/** One built-in `fireforge check` step name. */
|
|
247
|
+
export type CheckBuiltinStep = (typeof CHECK_BUILTIN_STEPS)[number];
|
|
248
|
+
/**
|
|
249
|
+
* A project command `fireforge check` runs beside its built-in steps
|
|
250
|
+
* (`check.extraSteps[]`): an audit FireForge does not ship.
|
|
251
|
+
*/
|
|
252
|
+
export interface CheckExtraStep {
|
|
253
|
+
/** Unique step name shown in the table (lowercase, digits and dashes). */
|
|
254
|
+
name: string;
|
|
255
|
+
/** Shell command line, run with `/bin/sh -c` (`cmd.exe /c` on Windows). */
|
|
256
|
+
command: string;
|
|
257
|
+
/** Project-relative working directory. Defaults to the project root. */
|
|
258
|
+
cwd?: string;
|
|
259
|
+
/** Seconds before the step is killed and fails. Unbounded when unset. */
|
|
260
|
+
timeout?: number;
|
|
261
|
+
/**
|
|
262
|
+
* Steps (built-in or extra) that must finish before this one starts,
|
|
263
|
+
* whatever their outcome: an ordering, not a success dependency.
|
|
264
|
+
*/
|
|
265
|
+
after?: string[];
|
|
266
|
+
}
|
|
267
|
+
/** Configuration for `fireforge check`. Every field is optional. */
|
|
268
|
+
export interface CheckConfig {
|
|
269
|
+
/** Built-in steps this project never runs. */
|
|
270
|
+
skip?: CheckBuiltinStep[];
|
|
271
|
+
/**
|
|
272
|
+
* The status step's `--check` policy: `--fail-on`, `--allow` and
|
|
273
|
+
* `--fail-on-unknown`. Unset runs the default `status --check` policy.
|
|
274
|
+
*/
|
|
275
|
+
status?: {
|
|
276
|
+
failOn?: string[];
|
|
277
|
+
allow?: string[];
|
|
278
|
+
failOnUnknown?: boolean;
|
|
279
|
+
};
|
|
280
|
+
/** `--max-warnings` for the lint and furnace-validate steps. */
|
|
281
|
+
maxWarnings?: {
|
|
282
|
+
lint?: number;
|
|
283
|
+
furnace?: number;
|
|
284
|
+
};
|
|
285
|
+
/** Project commands run as further steps. */
|
|
286
|
+
extraSteps?: CheckExtraStep[];
|
|
287
|
+
/** Seconds before a built-in step is killed and fails. Unbounded when unset. */
|
|
288
|
+
timeout?: number;
|
|
289
|
+
/** Per-step `timeout` overrides for built-in steps, in seconds. */
|
|
290
|
+
timeouts?: Partial<Record<CheckBuiltinStep, number>>;
|
|
291
|
+
/**
|
|
292
|
+
* Fail the verdict when a built-in step is skipped because it has nothing
|
|
293
|
+
* to run (no `typecheck` block, no furnace.json). A step named in `skip`
|
|
294
|
+
* is a decision, not a gap, and never fails it.
|
|
295
|
+
*/
|
|
296
|
+
failOnSkipped?: boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Project-relative path the lint step writes its `lint --per-patch
|
|
299
|
+
* --report` JSON to. Extra steps receive it as
|
|
300
|
+
* `FIREFORGE_CHECK_LINT_REPORT`, so an audit can read the run's lint
|
|
301
|
+
* report instead of linting the queue a second time.
|
|
302
|
+
*/
|
|
303
|
+
lintReport?: string;
|
|
304
|
+
}
|
|
165
305
|
/**
|
|
166
306
|
* Configuration for the `fireforge typecheck` command. Distinct from
|
|
167
307
|
* `patchLint.checkJs`: patch-lint runs every time `fireforge lint` runs
|
|
@@ -205,6 +345,15 @@ export interface TypecheckConfig {
|
|
|
205
345
|
* blocking. `'off'` suppresses them.
|
|
206
346
|
*/
|
|
207
347
|
undefinedIdentifiers?: PatchLintSeverityGate;
|
|
348
|
+
/**
|
|
349
|
+
* Types Lit in the shim: `LitElement` and the template helpers of
|
|
350
|
+
* `chrome://global/content/vendor/lit.all.mjs`, and `MozLitElement` of
|
|
351
|
+
* `chrome://global/content/lit-utils.mjs`, with closed member lists, so a
|
|
352
|
+
* misspelt member of a widget host is an error. Default off: reactive
|
|
353
|
+
* properties declared only through `static properties` or
|
|
354
|
+
* `static queries` then need a JSDoc or constructor declaration.
|
|
355
|
+
*/
|
|
356
|
+
litTypes?: boolean;
|
|
208
357
|
}
|
|
209
358
|
/**
|
|
210
359
|
* Wire command configuration.
|
|
@@ -297,6 +446,37 @@ export interface PatchLintFileSizeThresholds {
|
|
|
297
446
|
/** Test files. Defaults: notice 1200, warning 1400, error 1600. */
|
|
298
447
|
test?: PatchLintFileSizeTier;
|
|
299
448
|
}
|
|
449
|
+
/** What `file-too-large` counts: every line, or only lines that carry code. */
|
|
450
|
+
export type PatchLintFileSizeMetric = 'raw' | 'code';
|
|
451
|
+
/**
|
|
452
|
+
* What `large-patch-lines` counts: every non-binary line of the unified
|
|
453
|
+
* diff, or only the added lines that carry code.
|
|
454
|
+
*/
|
|
455
|
+
export type PatchLintPatchSizeMetric = 'diff' | 'addedCode';
|
|
456
|
+
/**
|
|
457
|
+
* Overrides for one patch-size tier. `lines` drives `large-patch-lines`,
|
|
458
|
+
* `files` drives `large-patch-files`. Each is a `notice`/`warning`/`error`
|
|
459
|
+
* triple shaped like {@link PatchLintFileSizeTier}, merged over the
|
|
460
|
+
* defaults and validated `notice <= warning <= error`.
|
|
461
|
+
*/
|
|
462
|
+
export interface PatchLintPatchSizeTier {
|
|
463
|
+
lines?: PatchLintFileSizeTier;
|
|
464
|
+
files?: PatchLintFileSizeTier;
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Overrides for the patch-size thresholds, per tier.
|
|
468
|
+
*
|
|
469
|
+
* Module constants until 0.50.0. The defaults are the old constants: lines
|
|
470
|
+
* general 800/1500/3000, test 1500/3000/6000, branding 8000/18000/30000;
|
|
471
|
+
* files warn above 5 (general, test) or 60 (branding). The files triple has
|
|
472
|
+
* no notice or error band by default: an unset `files.notice` follows the
|
|
473
|
+
* effective `files.warning`, and an unset `files.error` never fires.
|
|
474
|
+
*/
|
|
475
|
+
export interface PatchLintPatchSizeThresholds {
|
|
476
|
+
general?: PatchLintPatchSizeTier;
|
|
477
|
+
test?: PatchLintPatchSizeTier;
|
|
478
|
+
branding?: PatchLintPatchSizeTier;
|
|
479
|
+
}
|
|
300
480
|
/**
|
|
301
481
|
* Configuration for patch lint rules.
|
|
302
482
|
*/
|
|
@@ -348,6 +528,34 @@ export interface PatchLintConfig {
|
|
|
348
528
|
* Unset fields keep the built-in defaults.
|
|
349
529
|
*/
|
|
350
530
|
fileSizeThresholds?: PatchLintFileSizeThresholds;
|
|
531
|
+
/**
|
|
532
|
+
* What `file-too-large` counts. `'raw'` (the default) counts every line
|
|
533
|
+
* the way `wc -l` does. `'code'` counts the lines left non-blank once
|
|
534
|
+
* comments are blanked, so JSDoc and blank lines stop counting.
|
|
535
|
+
*/
|
|
536
|
+
fileSizeMetric?: PatchLintFileSizeMetric;
|
|
537
|
+
/**
|
|
538
|
+
* Per-tier overrides for `large-patch-lines` and `large-patch-files`.
|
|
539
|
+
* Unset fields keep the built-in defaults.
|
|
540
|
+
*/
|
|
541
|
+
patchSizeThresholds?: PatchLintPatchSizeThresholds;
|
|
542
|
+
/**
|
|
543
|
+
* What `large-patch-lines` counts. `'diff'` (the default) counts every
|
|
544
|
+
* non-binary line of the unified diff. `'addedCode'` counts added lines
|
|
545
|
+
* that are neither blank nor comment, judged on each file's post-image,
|
|
546
|
+
* skips lines inside Furnace `@fireforge-include` spans, and counts test
|
|
547
|
+
* files against the test tier and everything else against the general
|
|
548
|
+
* tier inside a mixed patch.
|
|
549
|
+
*/
|
|
550
|
+
patchSizeMetric?: PatchLintPatchSizeMetric;
|
|
551
|
+
/**
|
|
552
|
+
* Globs naming registration files (`jar.mn`, `moz.build`, manifests)
|
|
553
|
+
* that count toward neither `large-patch-lines` nor `large-patch-files`.
|
|
554
|
+
* A glob without a `/` matches the basename, one with a `/` matches the
|
|
555
|
+
* engine-relative path. `*` stays within a path segment, `**` crosses
|
|
556
|
+
* segments. Default: none.
|
|
557
|
+
*/
|
|
558
|
+
patchSizeRegistrationFiles?: string[];
|
|
351
559
|
/**
|
|
352
560
|
* Run the project's Prettier over patch-owned `.sys.mjs` modules, from
|
|
353
561
|
* inside `engine/` so the engine's own `.prettierrc*`/`.prettierignore`
|
|
@@ -387,6 +595,62 @@ export interface PatchLintConfig {
|
|
|
387
595
|
* and fail the other. Default: 'warning'.
|
|
388
596
|
*/
|
|
389
597
|
undefinedIdentifiers?: PatchLintSeverityGate;
|
|
598
|
+
/**
|
|
599
|
+
* Token scales enforced over CSS files a patch creates (`token-scale`).
|
|
600
|
+
* Each scale names properties whose values must resolve to its tokens.
|
|
601
|
+
* Default unset: no scale is enforced.
|
|
602
|
+
*/
|
|
603
|
+
tokenScales?: PatchLintTokenScale[];
|
|
604
|
+
}
|
|
605
|
+
/**
|
|
606
|
+
* One `patchLint.tokenScales[]` entry: a property family (spacing, type,
|
|
607
|
+
* radius, opacity, z-index, …) whose declared values must be tokens on one
|
|
608
|
+
* scale.
|
|
609
|
+
*/
|
|
610
|
+
export interface PatchLintTokenScale {
|
|
611
|
+
/** CSS properties governed (exact names, or a `*`-suffixed prefix such as `padding*`). */
|
|
612
|
+
properties: string[];
|
|
613
|
+
/**
|
|
614
|
+
* Custom-property prefix of the scale's tokens, e.g. `--mybrowser-space-`,
|
|
615
|
+
* or a list of them for a scale whose steps are spelled more than one way
|
|
616
|
+
* (`["--mybrowser-space-", "--mybrowser-gap-"]`).
|
|
617
|
+
*/
|
|
618
|
+
prefix: string | string[];
|
|
619
|
+
/**
|
|
620
|
+
* Literal value atoms accepted without a token (`0`, `auto`, `1px`).
|
|
621
|
+
* `*` is a wildcard, so `*%` accepts any percentage. CSS-wide keywords
|
|
622
|
+
* (`inherit`, `initial`, `unset`, `revert`, `revert-layer`) are always
|
|
623
|
+
* accepted.
|
|
624
|
+
*/
|
|
625
|
+
allowLiterals?: string[];
|
|
626
|
+
/**
|
|
627
|
+
* Further custom properties accepted besides `prefix` (exact names, or a
|
|
628
|
+
* `*`-suffixed prefix such as `--moz-*`), for reviewed upstream or recipe
|
|
629
|
+
* tokens.
|
|
630
|
+
*/
|
|
631
|
+
allow?: string[];
|
|
632
|
+
/**
|
|
633
|
+
* Literal atoms accepted only inside a math function (`calc()`, `min()`,
|
|
634
|
+
* `max()`, `clamp()`), with the `allowLiterals` wildcard syntax: a
|
|
635
|
+
* unitless multiplier (`calc(var(--x-space-2) * 2)`) without also
|
|
636
|
+
* accepting a bare `2`.
|
|
637
|
+
*/
|
|
638
|
+
allowInCalc?: string[];
|
|
639
|
+
/**
|
|
640
|
+
* Largest total, in px, a declaration may subtract from this scale's
|
|
641
|
+
* tokens inside a math function (`calc(var(--x-space-4) - 1px)`), for a
|
|
642
|
+
* border or hairline inset. Summed over the declaration.
|
|
643
|
+
*/
|
|
644
|
+
offsetCap?: number;
|
|
645
|
+
/** Engine-relative globs (`**`, `*`, `?`) of files this scale does not govern. */
|
|
646
|
+
exclude?: string[];
|
|
647
|
+
/**
|
|
648
|
+
* The fewest patch-created CSS files (outside `exclude`) that must carry a
|
|
649
|
+
* declaration of this scale's properties. A queue under it fails
|
|
650
|
+
* `token-scale-vacuous`, so a scale that matches nothing, or a scan set
|
|
651
|
+
* a move emptied, cannot pass by judging nothing.
|
|
652
|
+
*/
|
|
653
|
+
minFiles?: number;
|
|
390
654
|
}
|
|
391
655
|
/**
|
|
392
656
|
* Build modes for mach.
|
package/dist/src/types/config.js
CHANGED
|
@@ -103,6 +103,30 @@ export interface CustomComponentConfig {
|
|
|
103
103
|
*/
|
|
104
104
|
sharedFtl?: string;
|
|
105
105
|
}
|
|
106
|
+
/** A reviewed `furnace validate` finding (`furnace.json#validationExceptions[]`). */
|
|
107
|
+
export interface FurnaceValidationException {
|
|
108
|
+
/** Component tag name the finding is reported on. */
|
|
109
|
+
component: string;
|
|
110
|
+
/** The finding's check name, as `furnace validate` prints it in brackets. */
|
|
111
|
+
check: string;
|
|
112
|
+
/**
|
|
113
|
+
* Narrows the exception to the findings on this element tag (a finding's
|
|
114
|
+
* `tags`): a `panel-item` menu row can be accepted without muting the
|
|
115
|
+
* check for every other element of the component.
|
|
116
|
+
*/
|
|
117
|
+
tag?: string;
|
|
118
|
+
/** Why the finding is accepted. Required: the entry is the review record. */
|
|
119
|
+
reason: string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* `furnace validate` checks that run only when `furnace.json#optInChecks`
|
|
123
|
+
* names them. `icon-button-label`: an icon-only `<moz-button>` (an
|
|
124
|
+
* `iconsrc` or an `icon` type, no `label` and no text content) carries
|
|
125
|
+
* neither `data-l10n-id` nor `aria-label`.
|
|
126
|
+
*/
|
|
127
|
+
export declare const FURNACE_OPT_IN_CHECKS: readonly ["icon-button-label"];
|
|
128
|
+
/** One opt-in check name. */
|
|
129
|
+
export type FurnaceOptInCheck = (typeof FURNACE_OPT_IN_CHECKS)[number];
|
|
106
130
|
/**
|
|
107
131
|
* The furnace.json schema.
|
|
108
132
|
*/
|
|
@@ -142,6 +166,12 @@ export interface FurnaceConfig {
|
|
|
142
166
|
* `['browser/base/content/browser.xhtml']`, the upstream Firefox path.
|
|
143
167
|
*/
|
|
144
168
|
tokenHostDocuments?: string[];
|
|
169
|
+
/**
|
|
170
|
+
* Stylesheets that load beside others in a document no queue link shows,
|
|
171
|
+
* for `token lint`: `{ "<glob>": ["<path or glob>", …] }`. A sheet the key
|
|
172
|
+
* matches may reference the tokens its partners declare.
|
|
173
|
+
*/
|
|
174
|
+
tokenSiblingSheets?: Record<string, string[]>;
|
|
145
175
|
/**
|
|
146
176
|
* Override the default Fluent (.ftl) base path within the engine.
|
|
147
177
|
* Defaults to `toolkit/locales/en-US/toolkit/global` when not set.
|
|
@@ -161,6 +191,23 @@ export interface FurnaceConfig {
|
|
|
161
191
|
* Unset disables jsconfig maintenance.
|
|
162
192
|
*/
|
|
163
193
|
typecheckJsconfig?: string;
|
|
194
|
+
/**
|
|
195
|
+
* Reviewed `furnace validate` findings. Each entry suppresses every
|
|
196
|
+
* finding of `check` on `component`, and `furnace validate` reports an
|
|
197
|
+
* entry that no longer matches anything as a stale-exception warning.
|
|
198
|
+
*/
|
|
199
|
+
validationExceptions?: FurnaceValidationException[];
|
|
200
|
+
/**
|
|
201
|
+
* The fewest components a full `furnace validate` must judge. A run under
|
|
202
|
+
* it fails with `component-floor`, so a moved or emptied components tree
|
|
203
|
+
* cannot pass by validating nothing.
|
|
204
|
+
*/
|
|
205
|
+
minComponents?: number;
|
|
206
|
+
/**
|
|
207
|
+
* Opt-in `furnace validate` checks (see {@link FURNACE_OPT_IN_CHECKS}).
|
|
208
|
+
* Unset runs only the default checks.
|
|
209
|
+
*/
|
|
210
|
+
optInChecks?: FurnaceOptInCheck[];
|
|
164
211
|
/** Stock components tracked for preview */
|
|
165
212
|
stock: string[];
|
|
166
213
|
/** Override components */
|
|
@@ -234,6 +281,15 @@ export interface StepError {
|
|
|
234
281
|
*/
|
|
235
282
|
advisory?: boolean;
|
|
236
283
|
}
|
|
284
|
+
/**
|
|
285
|
+
* Why `applyAllComponents` skipped a component, so a summary can say more
|
|
286
|
+
* than "skipped". `already-current`: the source is unchanged since the last
|
|
287
|
+
* recorded apply and the engine copy still matches it (fragment expansions
|
|
288
|
+
* included), so there was nothing to write. The apply state is shared by
|
|
289
|
+
* every session on the checkout, so the recorded apply may be another
|
|
290
|
+
* session's, e.g. a peer's `test --build`.
|
|
291
|
+
*/
|
|
292
|
+
export type ApplySkipKind = 'already-current';
|
|
237
293
|
/**
|
|
238
294
|
* Result of applying all components to the engine source tree.
|
|
239
295
|
*/
|
|
@@ -246,10 +302,14 @@ export interface ApplyResult {
|
|
|
246
302
|
/** Non-fatal registration step errors */
|
|
247
303
|
stepErrors?: StepError[];
|
|
248
304
|
}>;
|
|
249
|
-
/**
|
|
305
|
+
/**
|
|
306
|
+
* Components that were skipped (e.g., no changes). `kind` names the
|
|
307
|
+
* reason for summaries; `reason` is the stable free-text form.
|
|
308
|
+
*/
|
|
250
309
|
skipped: Array<{
|
|
251
310
|
name: string;
|
|
252
311
|
reason: string;
|
|
312
|
+
kind?: ApplySkipKind;
|
|
253
313
|
}>;
|
|
254
314
|
/** Components that failed to apply */
|
|
255
315
|
errors: Array<{
|
|
@@ -317,6 +377,8 @@ export interface ValidationIssue {
|
|
|
317
377
|
check: string;
|
|
318
378
|
/** Human-readable description of the issue */
|
|
319
379
|
message: string;
|
|
380
|
+
/** Element tags the finding is about, when it is about particular elements. */
|
|
381
|
+
tags?: string[];
|
|
320
382
|
}
|
|
321
383
|
/** Resolved test-harness selection for a `furnace create` run. */
|
|
322
384
|
export type ResolvedTestStyle = 'mochikit' | 'browser-chrome' | 'xpcshell' | 'none';
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `furnace validate` checks that run only when `furnace.json#optInChecks`
|
|
3
|
+
* names them. `icon-button-label`: an icon-only `<moz-button>` (an
|
|
4
|
+
* `iconsrc` or an `icon` type, no `label` and no text content) carries
|
|
5
|
+
* neither `data-l10n-id` nor `aria-label`.
|
|
6
|
+
*/
|
|
7
|
+
export const FURNACE_OPT_IN_CHECKS = ['icon-button-label'];
|
|
1
8
|
/**
|
|
2
9
|
* Operations that can leave a pending-repair marker when they fail to roll
|
|
3
10
|
* back cleanly. The marker is consumed by `fireforge doctor`, which either
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Re-exports all type definitions.
|
|
3
3
|
*/
|
|
4
|
-
export type { BuildConfig, FireForgeConfig, FirefoxConfig, FirefoxProduct, ProjectLicense, ProjectPaths, WireConfig, } from './config.js';
|
|
4
|
+
export type { BuildConfig, FireForgeConfig, FirefoxConfig, FirefoxProduct, PatchLintFileSizeThresholds, PatchLintFileSizeTier, PatchLintPatchSizeMetric, ProjectLicense, ProjectPaths, WireConfig, } from './config.js';
|
|
5
5
|
export type { ApplyResult, ComponentType, CustomComponentConfig, DryRunAction, FurnaceConfig, FurnaceState, OverrideComponentConfig, OverrideType, StepError, ValidationIssue, } from './furnace.js';
|
|
@@ -13,7 +13,9 @@ import type { Command } from 'commander';
|
|
|
13
13
|
* @param obj - Object to filter
|
|
14
14
|
* @returns The same object with every `undefined`-valued key removed
|
|
15
15
|
*/
|
|
16
|
-
export declare function pickDefined<T extends object>(obj: T):
|
|
16
|
+
export declare function pickDefined<T extends object>(obj: T): DefinedProps<T>;
|
|
17
|
+
/** `T` with every property optional and `undefined` removed: what {@link pickDefined} returns. */
|
|
18
|
+
export type DefinedProps<T> = {
|
|
17
19
|
[K in keyof T]+?: Exclude<T[K], undefined>;
|
|
18
20
|
};
|
|
19
21
|
/**
|
|
@@ -47,13 +49,14 @@ export declare function commanderArgParser<T>(parse: (raw: string) => T): (raw:
|
|
|
47
49
|
export declare function stringListOption(): [(value: string, previous: string[]) => string[], string[]];
|
|
48
50
|
/** Environment variable naming a standing wait budget for the whole session. */
|
|
49
51
|
export declare const WAIT_LOCK_ENV_VAR = "FIREFORGE_WAIT_LOCK";
|
|
52
|
+
export declare const MAX_WAIT_LOCK_SECONDS = 86400;
|
|
50
53
|
/**
|
|
51
54
|
* Resolves the parsed `--wait-lock [seconds]` option value into a wait budget
|
|
52
55
|
* in seconds for `withEngineSessionLock`:
|
|
53
56
|
* - absent (`undefined`) → {@link WAIT_LOCK_ENV_VAR} if set, else `undefined`
|
|
54
57
|
* (the ~1 s fail-fast),
|
|
55
58
|
* - bare flag (`true`) → {@link DEFAULT_WAIT_LOCK_SECONDS},
|
|
56
|
-
* - explicit value → integer validated into 1..
|
|
59
|
+
* - explicit value → integer validated into 1..86400.
|
|
57
60
|
*
|
|
58
61
|
* The flag always wins over the environment: the environment expresses a
|
|
59
62
|
* default for a session, and an invocation that names a budget has said
|
|
@@ -74,11 +77,11 @@ export declare function resolveWaitLockSeconds(value: string | number | boolean
|
|
|
74
77
|
* `--wait-lock` flag was threaded to. A furnace mutation takes the engine
|
|
75
78
|
* session lock and then `.fireforge/furnace.lock`. Only the first had a
|
|
76
79
|
* budget, so a contended deploy died on the file lock's fixed 30 s while
|
|
77
|
-
* its operator believed a much larger budget was in force.
|
|
78
|
-
*
|
|
79
|
-
* the
|
|
80
|
-
*
|
|
81
|
-
*
|
|
80
|
+
* its operator believed a much larger budget was in force. Every furnace
|
|
81
|
+
* leaf that takes the furnace lock threads its own `--wait-lock` into it;
|
|
82
|
+
* this is the fallback when the flag is absent, and the only budget for
|
|
83
|
+
* callers that do not thread one (doctor's furnace repair, the
|
|
84
|
+
* pre-build apply).
|
|
82
85
|
*
|
|
83
86
|
* Env-only: a flag belongs to one invocation and is passed
|
|
84
87
|
* explicitly where it applies, while the environment is exactly the place a
|
|
@@ -109,6 +112,32 @@ export declare function addAcceptedWaitLockOption(command: Command): Command;
|
|
|
109
112
|
* one everywhere else.
|
|
110
113
|
*/
|
|
111
114
|
export declare function ensureWaitLockOptionEverywhere(command: Command): void;
|
|
115
|
+
/**
|
|
116
|
+
* True for a token that reads as a path rather than a number: it has a
|
|
117
|
+
* path separator or a file extension, or is `.`/`..`. A bare word such as
|
|
118
|
+
* `nonsense` is not path-shaped, so `--wait-lock nonsense` stays the usage
|
|
119
|
+
* error it always was.
|
|
120
|
+
*/
|
|
121
|
+
export declare function isPathShapedArgument(token: string): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Rewrites a command's option tokens so a path-shaped argument after a
|
|
124
|
+
* numeric optional-value flag is an operand, and the flag takes its
|
|
125
|
+
* default.
|
|
126
|
+
*
|
|
127
|
+
* Commander binds the next non-dash token to an optional value, so
|
|
128
|
+
* `fireforge test --build --wait-lock browser_x.js` failed with
|
|
129
|
+
* "--wait-lock must be an integer in 1..86400 (got "browser_x.js")": the
|
|
130
|
+
* help says the value is optional, and the obvious spelling refused. The
|
|
131
|
+
* released flag moves to the end of the option section (before any `--`),
|
|
132
|
+
* where nothing follows it, so commander reads it bare. Operands keep their
|
|
133
|
+
* relative order. The value of a required-value option (`--mach-arg
|
|
134
|
+
* --wait-lock`) is never mistaken for a flag.
|
|
135
|
+
*
|
|
136
|
+
* @param argv - The tokens commander passes to `parseOptions`
|
|
137
|
+
* @param requiredValueFlags - This command's flags that always take a value
|
|
138
|
+
* @returns The rewritten tokens
|
|
139
|
+
*/
|
|
140
|
+
export declare function releasePathShapedValues(argv: readonly string[], requiredValueFlags: ReadonlySet<string>): string[];
|
|
112
141
|
/**
|
|
113
142
|
* Registers the shared `--wait-lock [seconds]` flag on a lock-taking
|
|
114
143
|
* command (the engine session lock for engine-mutating commands, the patch
|